pax_global_header00006660000000000000000000000064141601000060014476gustar00rootroot0000000000000052 comment=2bc3e35daf3aa10f8a87fda1812187bec25e6359 pgmodeler-0.9.4/000077500000000000000000000000001416010000600134665ustar00rootroot00000000000000pgmodeler-0.9.4/.github/000077500000000000000000000000001416010000600150265ustar00rootroot00000000000000pgmodeler-0.9.4/.github/FUNDING.yml000066400000000000000000000000631416010000600166420ustar00rootroot00000000000000--- custom: ["https://pgmodeler.io/#donationForm"] pgmodeler-0.9.4/.github/ISSUE_TEMPLATE/000077500000000000000000000000001416010000600172115ustar00rootroot00000000000000pgmodeler-0.9.4/.github/ISSUE_TEMPLATE/Bug_report.md000066400000000000000000000017671416010000600216560ustar00rootroot00000000000000--- name: Report a bug about: Instructions on how to report pgModeler bugs. Before report any bug please check if someone already has submited issues similiar to yours. Duplicated issues will be ignored. --- **Bug description** _A clear and concise description of what the bug is._ **How to reproduce** _Please, if the bug can be reproduceable describe the steps in full details. If possible provide a sample model and/or a SQL dump for test purposes._ **Expected behavior** _A clear and concise description of what you expected to happen._ **Screenshots** _If applicable, add screenshots to help explain your problem._ **Info about your desktop** - OS: - Version: - Window manager: - pgModeler version: - Qt version: **Stacktrace / Debug info** _If pgModeler crashed after the bug raised attach the stacktrace below_ ``` Put the stacktrace here! ``` **Additional info** _Add any other information that you may find useful to help in the problem solving._ pgmodeler-0.9.4/.github/ISSUE_TEMPLATE/Custom.md000066400000000000000000000002051416010000600210020ustar00rootroot00000000000000--- name: General discussion about: For any discussion not related to bugs or feature requests please use this one. --- pgmodeler-0.9.4/.github/ISSUE_TEMPLATE/Feature_request.md000066400000000000000000000006341416010000600227010ustar00rootroot00000000000000--- name: Feature request / improvement about: Give your suggestions for improvements to this project. --- **Feature description** _A clear and concise description of what the problem is._ **Sample image** _If the feature requested is a visual improvement, please, attach some images to make it clear._ **Additional info** _Add any other context or screenshots about the feature request here._ pgmodeler-0.9.4/.github/workflows/000077500000000000000000000000001416010000600170635ustar00rootroot00000000000000pgmodeler-0.9.4/.github/workflows/linuxbuild.yml000066400000000000000000000013711416010000600217670ustar00rootroot00000000000000name: Linux build on: push: branches: [ master, develop, 0.9.*, '*fix*', '*change*', '*support*' ] tags: 0.9.* pull_request: branches: [ master, develop, 0.9.* ] jobs: build: runs-on: ubuntu-latest strategy: matrix: qt: ['5.15.0', '5.14.2', '5.13.2', '5.12.9', '5.11.3', '5.10.1', '5.9.9'] steps: - uses: actions/checkout@v2 - name: Installing Qt framework uses: jurplel/install-qt-action@v2 with: version: ${{ matrix.qt }} - name: Running qmake run: cd $GITHUB_WORKSPACE; qmake pgmodeler.pro -r PREFIX=$GITHUB_WORKSPACE/build CONFIG+=debug - name: Building pgModeler run: make -j6 - name: Deploying pgModeler run: make install pgmodeler-0.9.4/.github/workflows/macosbuild.yml000066400000000000000000000015211416010000600217270ustar00rootroot00000000000000name: macOs build on: push: branches: [ master, develop, 0.9.*, '*fix*', '*change*', '*support*' ] tags: 0.9.* pull_request: branches: [ master, develop, 0.9.* ] jobs: build: runs-on: macos-latest strategy: matrix: qt: ['5.15.0', '5.14.2', '5.13.2', '5.12.9', '5.11.3', '5.10.1', '5.9.9'] steps: - uses: actions/checkout@v2 - name: Installing Qt framework uses: jurplel/install-qt-action@v2 with: version: ${{ matrix.qt }} - name: Running qmake run: cd $GITHUB_WORKSPACE; qmake pgmodeler.pro -r PREFIX=/Applications/pgModeler.app/Contents PGSQL_INC=`pg_config --includedir` PGSQL_LIB=`pg_config --libdir`/libpq.dylib CONFIG+=debug - name: Building pgModeler run: make -j6 - name: Deploying pgModeler run: make install pgmodeler-0.9.4/.github/workflows/windowsbuild.yml000066400000000000000000000024351416010000600223240ustar00rootroot00000000000000name: Windows build on: push: branches: [ master, develop, 0.9.*, '*fix*', '*change*', '*support*' ] tags: 0.9.* pull_request: branches: [ master, develop, 0.9.* ] jobs: build: runs-on: windows-latest strategy: matrix: qt: ['5.15.0'] defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v2 - uses: msys2/setup-msys2@v2 with: msystem: MINGW64 update: true install: base-devel mingw-w64-x86_64-make mingw-w64-x86_64-gcc mingw-w64-x86_64-postgresql mingw-w64-x86_64-qt5 # Workaround: Instead of using $GITHUB_WORKSPACE in PREFIX we actually use the path converted to unix-like # since we're running the building inside msys2 - name: Running qmake run: | cd $GITHUB_WORKSPACE; qmake pgmodeler.pro -r PREFIX=D:/a/pgmodeler/pgmodeler/build \ XML_INC=$(cygpath -m /mingw64/include/libxml2) \ XML_LIB=$(cygpath -m /mingw64/bin/libxml2-2.dll) \ PGSQL_INC=$(cygpath -m /mingw64/include) \ PGSQL_LIB=$(cygpath -m /mingw64/bin/libpq.dll) \ CONFIG+=debug - name: Building pgModeler run: mingw32-make -j6 - name: Deploying pgModeler run: mingw32-make install pgmodeler-0.9.4/.gitignore000066400000000000000000000007201416010000600154550ustar00rootroot00000000000000.qmake.stash *.[oa] *.dll *.exe *.so.* *.so *.pro.user *.directory *.run *.Debug *.Release *.old moc_*.cpp moc_*.h qrc_resources.cpp ui_*.h windeploy.log Makefile build/* dist/* installer/template/packages/io.pgmodeler/data installer/template/packages/io.pgmodeler/meta/package.xml installer/template/config/config.xml moc/* obj/* plugins plugins/* release/* apps/pgmodeler/build/* apps/pgmodeler-cli/build/* apps/pgmodeler-ch/build/* apps/pgmodeler-sce/build/*pgmodeler-0.9.4/CHANGELOG.md000066400000000000000000010030421416010000600152770ustar00rootroot00000000000000Changelog --------- v0.9.4 ------ Release date: December 17, 2021
* [New] Added a fix step in CLI to reconstruct enum types XML code in new format. * [Change] Changed the way XML code for enum types is generated and loaded. * [Change] Minor improvement in reverse engineering to import enum types in the new format. * [Change] Minor adjust in the demo version warning message. * [Change] Minor adjustment in permission id generation. Now the object's signature is used instead of name. * [Change] Minor refactor in the reconstruction of XML related to enum types in CLI. * [Fix] Minor fix in deployment script to support new libicui versions. * [Fix] Minor fix in order to set read/write permissions when copying configuration files with read-only permissions. * [Fix] Minor fix in CLI to avoid the usage of '-platform offscreen' when calling the application. * [Fix] Fixed a bug in file selectors on ModelExportForm that was not allowing to select output folders on Windows and macOs. v0.9.4-beta1 ------ Release date: November 08, 2021
* [New] Added extra PostGiS data types to PgSQLType. * [New] Created the method PgSqlType::isPostGiSType() which returns true if the current type is a PostGiS one. * [New] Created the method PgSqlType::reset() that clears some attributes of the type. * [New] Added the built-in type pg_lsn in order to make databases using timescaledb extension to be imported correctly. * [Change] Minor adjustment in windowsdeploy.sh to create zip packages. * [Change] Minor adjustment in demo version warning messages. * [Change] Adjusted the catalog query filters in ModelDatabaseDiffForm to retrieve system and extension objects according to the checkboxes "Import system objects" and "Import extension objects". * [Change] Adjusted the reverse engineering in such a way that the table children will follow the SQL disabled state of their parent tables. * [Change] Allowing importing pg_lsn attributes in usertype.sch. * [Change] Allowing the use of commas in enum type labels. * [Change] Improved the output of model fix operation in CLI. * [Change] The constants DataSeparator, UnescValueStart, UnescValueEnd, WildcardChar, FilterSeparator, FilterWildcard, FilterRegExp were moved from CoreUtilsNs to UtilsNs in order to be used in the parsers module. * [Change] In SchemaParser the meta char $ds (dollar sign) was renamed to $ms (money sign). Also, a new meta char $ds (data separator) was added and translates to the special data separator character UtilsNs::DataSeparator. * [Change] Minor adjustments in table.sch and foreigntable.sch schema files. * [Change] Improved DatabaseModel::getUserDefTypesReferences in order to get all references to postgis data types. * [Change] Improved ModelValidationHelper in order to set postgis extension a default comment when automatically creating it. * [Change] PgSQLTypeWidget now can be configured in such a way to disallow the configuration of type qualifiers like length, precision, interval, and some other. This is useful when configuring data types for objects that don't require such attributes in the data type like parameter, aggregates, transforms, casts, operators. * [Change] Changed the behavior of Parameter::getCodeDefinition when generating SQL code. Now, any type qualifier (except dimension descriptor []) will be discarded. * [Fix] Fixed the catalog query that lists policies. * [Fix] Added a minor workaround in DatabaseImportHelper::getType in order to treat the "any" pseudo-type correctly. * [Fix] Minor fix in DatabaseImportForm in order to disable option buttons when no connection is selected. * [Fix] Fixed a segfault when importing domains with long expressions. * [Fix] Fixed the broken SQL generation for tables with columns/constraints disabled. * [Fix] Fix the name of the checkbox related to updates checking to avoid breaking the building when enabling NO_UPDATE_CHECK via qmake. * [Fix] Fixed the shortcuts of Copy/Paste actions in DataManipulationForm. v0.9.4-beta ------ Release date: September 20, 2021
* [New] Added the shortcut Alt+C to trigger the cancel action in DatabaseImportForm ModelDatabaseDiffForm and ModelExportForm. * [New] Added support for the generation of GRANT/REVOKE commands to control roles memberships via the diff process. * [New] Added a fix step to reconfigure roles membership considering the deprecation of Role:RefRole attribute. * [New] Added support for included columns on indexes. * [New] Added the ability to reference view columns on indexes. * [New] Added support to use view's SimpleColumn in ColumnPickerWidget as well as Index. * [New] Added .dtd extension to SchemaEditorForm::showFileDialog. * [New] Created the widget ColumnPickerWidget by isolating the code that handles constraint columns in ConstraintWidget for reusing in other portions of the tool. * [New] Added the method Constraint::addColumns(). * [New] Two buttons were added aside the date input fields in partial diff tab (ModelDatabaseDiffForm) in order to allow the quick assignment of the first and last modification dates. * [New] Added support for toggling update notifications for alpha/beta versions. * [New] Added support for save and restore the tree state in DatabaseExplorerWidget. * [Change] Minor improvement in ModelsExportHelper by adding more breaking points related to export canceled. * [Change] Minor improvement in ObjectRenameWidget in such a way to fill the new name field with the object's name in the first show when a single object is selected for renaming. * [Change] Dropped the support for MemberOf (Role::RefRoles) in order to make the diff between two roles more precise. * [Change] In RoleWidget the tab "Member Of" now works only as a convenience feature that adds the role being edited to the ones listed in that tab. * [Change] Restored the file pgmodeler.appdata.xml. * [Change] Refactored BaseObject::isCodeDiffersFrom (and its variants in children classes) to use QStringList instead of vector as parameters. * [Change] Allowing swap cluster level object ids in SwapObjectsIdsWidget when the objects are of the same kind. * [Change] Minor refactoring in RoleWidget, Role and DatabaseModel to use Role::RefRole, Role::MemberRole and Rele::AdminRole constants as loop indexes. * [Change] Minor adjustment in demo features. * [Change] Minor refactoring in Role::setRoleAttribute. * [Change] Minor improvement in ModelExportHelper::exportToDbms to send the SQL command via a signal when creating roles and the database. * [Change] Improvements in pgmodeler-se in such a way to control syntax highlighting settings per open editor. * [Change] Avoided the use of a working dir in .desktop file when installing mime types system-wide. * [Change] Improved the way layers rectangles are updated after undoing/redoing operations in OperationListWidget. * [Change] Isolated SimpleColumn struct on its own file for reusing in other modules. * [Change] Moved the constants ProtRowBgColor, ProtRowFgColor, RelAddedRowBgColor, RelAddedRowFgColor from BaseObjectWidget to GuiUtilsNs. * [Change] Changed the default match type in foreign key constraint to MATCH SIMPLE. * [Change] Minor adjustment in the ModelWidget::updateSceneLayers to force the update of all schemas. * [Change] Avoided a lambda function call when checking updates to prevent segfaults. * [Change] Exceptions raised in BugReportForm when the "lastmodel" file isn't found are now ignored. * [Change] Minor change in ModelValidationHelper to use table's signature instead of name during the name validation process. * [Change] Avoided calling the functions xmlInitParser() and xmlCleanupParser() more than once per app execution in XmlParser class to avoid unexpected behavior. * [Change] Minor adjustment in viewport drawing mode in order to redraw objects by bounding rect changes. * [Change] Minor improvements in the changelog widget in order to display the first modification date. * [Change] Refactored Connection::requestCancel in order to avoid using PQrequestCancel which is deprecated. * [Fix] Fixed a glitch when drawing StyledTextboxView instaces. * [Fix] Fix the diff between columns using PostGiS datatypes. * [Fix] The attributes Qt::AA_UseHighDpiPixmaps and Qt::AA_EnableHighDpiScaling are now correctly set before the instantiation of Application based classes. * [Fix] Fixed a crash in diff process caused by the ModelExportHelper instance when canceling the export to DBMS when an exception was raised. * [Fix] Fixed a crash in SwapObjectsIdsWidget when the user tried to swap objects using arrow keys. * [Fix] Fixed the tab names in RoleWidget. * [Fix] Minor fix in DatabaseExplorerWidget to display view's children source code. * [Fix] Fixed the building of IndexWidget on Qt 5.14 and below. * [Fix] Fixed the problem on ModelDatabaseDiffForm that was not accepting pressing Return/Esc to respectively run the diff and close the dialog due to a conflict with the event loop instance in ModelDatabaseDiffForm::exec(). * [Fix] Minor fix in the configuration of ObjectGroupId element in DatabaseImportForm::updateObjectsTree in order to avoid crashes when no root element is specified. * [Fix] Fixed the generation of aggregate functions when they use functions that contain parameters in which data type have spaces (double precision, character varying). * [Fix] Fixed a segfault that can happen when changing the number of parameters of a function already associated with an aggregate. * [Fix] Additional fix for layers not being correctly loaded from dbm file. v0.9.4-alpha1 ------ Release date: July 19, 2021
* [New] The bulk editing form now can be confirmed by the Ctrl+Return shortcut. * [New] The CLI now is capable of fixing models created before 0.9.4-alpha1 that have columns, functions, and other objects that reference extension types with simple names instead of schema-qualified names. * [New] Added an option to GeneralConfigWidget to toggle the displaying of schema names of columns data types on design view. This option affects only the rendering of objects, the code generation will keep displaying user-defined type names in a schema-qualified way. * [New] Created the DeletableItemDelegate which draws a delete button aside combobox items. * [New] Added the ability to drop databases from the database listing in SQLToolWidget. * [New] Added support to strikeout attribute in SyntaxHighlighter. * [New] Created an auxiliary tool called pgModeler Schema Editor in order to help to edit *.sch files as well as validate their syntax. * [New] GeneralConfigWidget now restores the sch-highlight.conf to default. * [New] Added the environment variable name for schema editor app in GlobalAttributes. * [New] Added a specific icon for CLI on Windows. * [New] Added the methods SchemaParser::getCurrentColumn and SchemaParser::getCurrentLine. * [New] Added signal s_hideRequested to FindReplaceWidget to notify connected slots that the close button on that widget was clicked. * [New] Added an attribute capture-nearby to the word-separators tag that is read by SchemaParser to indicate if word separators must be capture altogether in the same word if they appear contiguously. * [New] Added options to create only missing config files or recreate all config file in CLI. * [New] Added support for saving SQL definition in split files. * [New] Added support for split SQL generation in CLI. * [New] Added the ability to cancel the SQL file export process in GUI. * [New] Created the methods UtilsNs::saveFile and UtilsNs::loadFile in order to replace repetitive save/load code by them. * [New] Created the function PgSqlVersions::parseString that checks the forced PostgreSQL version is valid, returning a fallback version when needed or raising an error if the version is malformed or is unsupported. * [New] Added new metacharacter to SchemaParser: $hs for #, $ps for %, $at for @, $ds for $. * [New] Added the option --force to the mime type handling operation on CLI. * [Change] Changed the behavior of column click on DataManipulationForm. Now, the sorting is triggered by holding control and clicking the desired column. Clicking a column without holding control will select all the items in that column. * [Change] Changed the behavior of extension types registration, now they will be forcibly registered with complete name (schema.name) in order to follow the same rule of user-defined data types so the reverse engineering can work properly for both types handled by extensions and those not. * [Change] Improved the type searching on PgSqlTypeWidget in such a way to display a popup with the data types matching the text typed by the user. * [Change] Improved TableObjectView to be rendered with/without schema names appended to user-defined data type names. * [Change] Minor adjustment on icon size of QTreeWidget instances. * [Change] Improved the NewObjectOverlayWidget in such a way to allow only one action to be executed at a time. * [Change] Several clean-ups in the source code root. Removed unused files. * [Change] The subproject libpgmodeler was renamed to libcore and now moved to libs/ * [Change] The subproject libpgmodeler_ui was renamed to libgui and now moved to libs/ * [Change] The subproject libobjrenderer was renamed to libcanvas and now moved to libs/ * [Change] The main executable subproject was renamed to pgmodeler and now moved to apps/ * [Change] The main-cli executable subproject was renamed to pgmodeler-cli and moved to apps/ * [Change] The crashhandler subproject was renamed to pgmodeler-ch and moved to apps/ * [Change] Created a subfolder called "assets" to store all deployed files that aren't libraries or executables: conf, lang, schemas, samples, etc. * [Change] Refactored all .pro/.pri files in order to reference pgModeler libraries from variables $$LIB[LIBNAME] instead of relative paths. * [Change] Renamed all icons that were in Portuguese to English. * [Change] In SnippetsConfigWidget replaced the SQL highlight by Schema micro-language highlighting. * [Change] Renamed BlockInfo class to TextBlockInfo and moved to a dedicated source file. * [Change] Changed the workflows to build any *fix, *change, *support branches. * [Change] Minor improvement on QMainWindow to resize general toolbar buttons. * [Change] Widgets that were emitting the signal s_visibilityChanged(bool) only on hide event no emit s_hideRequested instead. The s_visibilityChanged(bool) is now reserved to widgets that need to notify visibility changes passing the current state to slots (hidden/displayed) in for of a bool parameter. * [Change] Minor hint text typos fixes. * [Change] Improved the syntax error messages in SchemaParser. * [Change] Minor adjustment in the minimum width of the general toolbar when resizing the buttons. * [Change] BaseForm::setMainWidget(QWidget *) version will use the same icon as the widget being inserted. * [Change] Adjusting the general toolbar width according to the screen DPI. * [Change] Renamed the namespace PgModelerUiNs to GuiUtilsNs. * [Change] Renamed the namespace PgModelerNs to CoreUtilsNs * [Change] Source files and ui files in libgui were reorganized by contexts (widgets, tools, settings, utils, dbobjects) * [Change] Applied an automatic indentation to all schema files. * [Change] pgModeler will now create missing config files in the startup. * [Change] Replaced duplicated code that saves files and raises exception by UtilsNs::saveFile * [Change] The class Schema now has its own id interval (4000 - 4999) in order to make the split code generation be done properly. * [Change] Minor adjustment in AppearanceConfigWidget to enable scrollbars in the viewport so users on small screens can see the entire model. * [Fix] Fixed the crash handler and bug report form in such a way to load the last modified model opened before their execution. * [Fix] Fixed the column positions in ObjectDepsRefsWidget. * [Fix] Fixed a crash when the database import process fails to create an inheritance relationship somehow. * [Fix] Fixed a bug in the database import process that not correctly setting up the data type name of columns when the types were handled by extensions. Types handled by extension don't need to have the schema name prepended. * [Fix] Minor fix in database import process in such a way to properly update the table rendering to hide schema names from title box. * [Fix] Fixed a malformed SQL code when configuring timestamptz in PgSqlType. * [Fix] Fixed the reference to libutils in deploy scripts. * [Fix] Fixed doxygen references for libraries and executables. * [Fix] Fixed the path to globalattributes.cpp in deploy scripts. * [Fix] Added missing file windows_ico.qrc. * [Fix] Fixed a bug in SyntaxHighlighter that was wrongly highlighting the entire document when a multiline group had a line break as the final expression. * [Fix] Fixed the syntax highligting files (xml, sql). * [Fix] Minor fix in CLI in order to associate .sch files to the scheditor. * [Fix] Fixed a bug that was causing all layers to be active even if there was some inactive (invisible) when adding a new layer. * [Fix] Fixed the method PgModelerCliApp::handleWindowsMimeDatabase to properly insert sch file association in Windows registry. * [Fix] Fixed the "iCCP: CRC error" in PNGS at libs/libgui/res/icons * [Fix] Minor fix in SyntaxHighlighter in order to return unformatted word when the group can't be forcibly defined in all exception cases when the word doesn't match any group. * [Fix] Fixed the description of the option --output in CLI. * [Fix] Fixed a bug in CLI that could lead to segfault when using diff option and a database model as input. * [Fix] Fix broken build on Qt 5.11.x. * [Fix] Minor fix in PgSQLTypeWidget to capture the text changing signal on data type combo so the type format input can be properly updated when the user types the desire data type. v0.9.4-alpha ------ Release date: May 12, 2021
* [New] Added compatibility code that allows loading models created in versions before 0.9.4-alpha without losing layers and active layers information. * [New] Added an option to the metadata handling operation that serves to indicate if duplicated objects (textboxes, tags, generic sql) must be merged or not. * [New] Added support for configuration parameters and transform types on functions and procedures. * [New] Added the compatibility method QtCompat::horizontalAdvance(QFont, QString). * [New] Added the ability to rename the default layer. * [New] DatabaseModel now stores in XML code all the new settings related to layers (rect and name colors, rect and names display status). * [New] Added several methods in ObjectsScene to handle layer colors that helps to save and restore colors from database model files. * [New] Add support for custom layer colors in LayerConfigWidget. * [New] Added the class LayerItem to create custom items for displaying layout rects in canvas. * [New] Added an option to toggle layers rectangles and names from LayerConfigWidget. * [New] Added support for setup, in general settings, the custom color for grid lines, canvas area and page delimiter lines. * [New] Added support for multiple layers on the model. * [New] Added support for PARALLEL attribute to functions. * [Change] Minor improvement on "Forced filtering" option on ObjectsFilterWidget in order to use a list widget instead of single actions for each object type. * [Change] Adjusted the default Qt version to 5.15.2 in the deployment scripts. * [Change] Minor adjustments on Messagebox resizing during first display. * [Change] Minor improvement on Messagebox in order to display the stack trace toggle button in a more intuitive way. * [Change] Changed the behaviour of the method ObjectsScene::removeLayers, now it'll allow the resetting or not the layers of the objects. * [Change] Minor adjustment on QTableWidget vertical header size on DataManipulationForm, ObjectsTableWidget and SqlExecultionWidget. * [Change] Minor size adjustment policy in the comboboxes in DataManipulationForm, ModelNavigationWidget and ModelValidationWidget. * [Change] Minor improvement in DatabaseImportHelper::setBaseFunctionAttribs in such a way to discover the name of the functions transform types from their oids. * [Change] Isolated the duplicated code in DatabaseModel::createFunction and DatabaseModel::createProcedure in the method DatabaseModel::setBasicFunctionAttributes. * [Change] Adjusted the minimum size of the main window to 640x480 so it can fit in smaller screens. * [Change] Minor refactoring on SchemaView::configureObject to avoid unecessary calculations when the layers are not visible. * [Change] Added forced updates of schema rectangles after setting layers to children objects. * [Change] Change on the search path for PluginsDir to use getPathFromEnv(). * [Change] LayersConfigWidget will now emit a signal when toggling layer rects/names so the overview widget on mainwindow is properly updated. * [Change] DatabaseModel will now create a default layer in the constructor. * [Change] The database model will add the default layer to the loaded model if there isn't a single layer identified. * [Change] DatabaseModel when loading older database model files will generate random layer colors. * [Change] The scene now will update layer rects when catching the signal s_objectDimensionChanged from tables and textboxes. * [Change] Adjust the ObjectsScene to resize layer rects when one or more layers are removed. * [Change] Improved the window title of DataManipulationForm in sucha a way to display the currently browsed table. * [Change] Improved the selection of layers to be associated to object in context menu (Quick > Set layers). Now a floating widget is use to select multiple layers for the object selection in the canvas area. * [Change] Updated the sample models to use "layers" attributes on graphical objects. * [Change] Changed the value separator for attributes layers and active-layers on from semi-colon to comma. * [Change] pgModeler CLI will now rename "layer" attributes to "layers" in order to reflect the multiple layers support for older models. * [Change] Minor copyright updates. * [Change] The option "Truncate before alter columns" in the diff process was removed since its use is discouraged and dangerous in some situations. * [Fix] Minor fix in the table's catalog query in order to avoid setting up a partitioning strategy when the table is not a partitioned one. * [Fix] Minor fix in database import in such a way to update scene layers info before adding it to the main window. * [Fix] Fixed the layers configuration of example.dbm. * [Fix] Minor fix in function.sch in order to generate transform types only for PostgreSQL >= 9.5. * [Fix] Fixed DatabaseModel::getUserDefTypesReferences in such a way to detect that procedures and functions are referencing a user-defined type from their list of transform types. * [Fix] Fixed ObjectsTableWidget in such a way to control whether the ResizeColsButton can be displayed or not via ObjectsTableWidget::setButtonConfiguration. * [Fix] Minor fix to avoid black canvas when using settings from 0.9.3 or below on 0.9.4-alpha. * [Fix] Minor fix in BaseObjectView in such way to avoid the adjustment of its position to the scene grid when the object is not selected. This can avoid undesired adjustment when moving a schema box and having only a portion of its children selected. * [Fix] Minor fix in ObjectsScene in such a way to update layer rects when the grid alignment option is toggled. * [Fix] Fixed the buttons shortcuts on LayerConfigWidget. * [Fix] Minor fix on SchemaView to compute the last position any time the object is reconfigured. * [Fix] Minor fix in BaseObjectWidget to avoid mark the object as modified in finishConfiguration() before adding it to the parent. * [Fix] Fixed the key combination to trigger the magnifier tool. * [Fix] Fixed LayerItem in order to build in Qt 5.9. * [Fix] Minor fixes in ModelWidget, MainWindow to update scene layer settings correctly. * [Fix] Fixed the CLI in such a way to update scene layer settings so the exporting processes can generate graphical files correctly. * [Fix] Minor fix in LayersConfigWidget in such a way to mark the correct active layers when setting up the model to operate on. * [Fix] Fixed a bug in the layers removal process that was causing objects to be placed in a incorrect layer index after the removal. * [Fix] Fixed the "Fix" menu in main tool bar. * [Fix] Fixed a bug in ModelWidget that was causing overlay to be displayed when a textbox object was selected. * [Fix] Fixed wrong text in collationwidget.ui. * [Fix] Fixed a bug during the loading of changelog entries. * [Fix] Fixed the display of warnings during export in ModelExportForm. * [Fix] Fixed the display of warning messages during export in ModelDatabaseDiffForm. * [Fix] Fixed a malformed SQL code for triggers. * [Fix] Fixed typos in README.md. * [Fix] Fixed the broken build on Qt 5.9.x. * [Fix] Fixed a bug that was preventing special PKs to be properly configured. * [Fix] Fixed the SQL generation of functions based on internal language. v0.9.3 ------ Release date: December 30, 2020
* [New] Added support for deterministic and provider attributes in collations. * [New] Added missing check constraints in the data dictionary. * [New] Added support for selecting all relationships of a table at once via right-click on a table > select relationships. * [New] Added extra search fields in ObjectFinderWidget. Now it's possible to search relationships by the involved tables (source and destination table), constraints by their columns (source and referenced columns), and relationships by the foreign keys related to them. * [Change] The warning message about the unchecked option related to drop missing objects now pops up only when there are partial diff filters configured. * [Change] Improved the extended fade in/out options for tables/views/foreign tables. * [Change] The partial diff filters generated from changelog will ignore table children objects in order to avoid the wrong generation of diff code. * [Change] Minor refactoring in DatabaseModel::addChangelogEntry in order to use new attributes to define changelog operations. * [Fix] Fixed a crash when trying to select children objects of a schema that has no rectangle defined. * [Fix] Fixed a crash during the importing of domain objects. * [Fix] Fixed a crash during the importing of objects into the current model in very specific cases when the model had some tables/views referencing columns added by relationship. * [Fix] Fixed the full diff switching when there are no filtered objects in ModelDatabaseDiffForm. * [Fix] Fixed a bug in DatabaseModel::addChangelogEntry that was causing the registration of empty signature for some objects. * [Fix] Fixed a bug in CLI that was not accepting the use of --list-conns parameter * [Fix] Fixed the data dictionary generation in such a way to include nextval(sequence) calls in the "default value" column. * [Fix] Fixed a bug when configuring spatial data types during reverse engineering/diff. * [Fix] Fixed a bug in Catalog::parseDefaultValues that was causing ARRAY[] values to be wrongly split. * [Fix] Fixed a bug that was causing infinite validation of imported sequences. v0.9.3-beta1 ------ Release date: October 5, 2020
* [New] Added the version descriptor for PostgreSQL 13. * [New] Added support for procedures in design, import and diff processes. * [New] Added support for transforms in design, import and diff processes. * [New] Added an entry in NewObjectOverlayWidget for procedures. * [New] Added a custom version of addParameter to Procedure in order to validate the usage of out parameters. * [New] Added a tool button for transform objects in NewObjectOverlayWidget * [New] Added a unit test to verify schema files syntax (sql, xml, alter). * [New] Added the method Cast::setName to override the default behavior of BaseObject::setName. * [New] Added the class PgModelerUnitTest that must be inherited so the child test class can have access to schema files path. * [New] Added support for modifying attributes toggler colors from appearance settings. * [New] Tag objects now include attribute toggler colors. * [Change] Changed the behavior of the generation of SQL code for database object, now it'll respect the SQL disabled status of the object. * [Change] The ModelExportHelper will abort the export process if the SQL code of the database object is disabled. * [Change] The database model is now flagged as modified everytime the objects are swapped. * [Change] Improved the ObjectSelectorWidget in order to save/restore the geometry of internal ModelObjectsWidget instances. * [Change] Ajusted the Qt version check in QFontMetricsCompat and QPlainTextEditCompat in order to avoid deprecation warnings. * [Change] pgModeler will alert about a possible data/work loss if the user is trying to save a model in which there're other instances loaded other tabs. * [Change] Refactored FunctionWidget in such way to make it a subclass of BaseFunctionWidget. * [Change] Removing unused method DatabaseModel::removeObject(unsigned,ObjectType). * [Change] Moved the DTD defintion of parameter tag to a dedicated file to be shared betwen function.dtd and procedure.dtd. * [Change] Making the class Function be a direct child of BaseFunction. * [Change] Moved the common code between functions and procedures to a base class called BaseFunction. * [Change] Replaced the attributes PhysicalTable::DataSeparator and DatabaseExplorerWidget::ElemSeparator usages by PgModelerNs::DataSeparator. * [Change] Minor improvement on data dictionary in order to add the current year in the footer. * [Change] ModelExportHelper now is capable of indetifying a transform and procedure objects being exported. * [Change] Minor fields sizes adjustment in pgsqltypewidget.ui * [Change] Improved the schema files syntax tests to include all folder under / schemas. * [Change] Refactored the schema files in order to remove code duplication related to ddl-end token. * [Change] Minor improvement in ConfigurationForm by adding a splitter between config items (left) and settings page (right). * [Change] Minor improvements on objects rendering in order to consider screen dpi when configuring objects border sizes. * [Change] Minor refactoring in the parameter/signature generation in class Function. * [Change] Making the NewObjectOverlay less transparent in order to enhance reading. * [Fix] Fixed a bug in constraint.sch that was avoiding the correct importing of exclude of constraints. * [Fix] Fixed source file name for PgModelerCliApp. * [Fix] Minor fix in the SyntaxHighlighter in order to highlight correctly multline blocks (specially comments). * [Fix] Fixed a bug in DatabaseImportHelper that was causing failure when importing some objects' permissions. * [Fix] Minor fixes on the CLI menu. * [Fix] Fixed a bug on MainWindow that was wrongly showing the main menu bar in certain cases at startup. * [Fix] Minor fix in BaseFunction::createSignature in order to remove OUT keywords from signature. * [Fix] Fixed a bug when importing triggers in which functions arguments contain json/jsonb values. Now values are properly formatted. * [Fix] Fixed a bug in XmlParser::convertCharsToXMLEntities that was not converting json/jsonb default values correctly breaking the entire XML code of the database model. * [Fix] Fixed a bug in Parameter class that was causing default values to be ignored. * [Fix] Fixed a bug in SchemaParser related to exceptions being raised wrongly in expressions evaluation. * [Fix] Fixed the objects style template config files. * [Fix] Removed some deprecation warnings when building on Qt 5.15.1. * [Fix] Fixed a bug in ModelFixForm that was passing arguments to CLI in wrong format. * [Fix] Minor fix in some project files to remove unnused include paths. * [Fix] Fixed a bug in CLI that was ignoring input-db parameter when doing diff. * [Fix] Minor fix in the graphical objects rendering in 4k screens when QT_AUTO_SCREEN_SCALE_FACTOR is set to. Now they are rendered in acceptable proportions. * [Fix] Minor fix in ModelsDiffHelper in order to avoid generating ALTER...ADD COSTRAINT related to constraints (check and unique) in which parent table is also being created. v0.9.3-beta ------ Release date: July 10, 2020
* [New] Added GitHub actions scripts in order to test the building on each platform. On Linux and macOs the build will occur on all Qt versions from 5.15 to 5.9, on Windows the build happens only on Qt 5.15 (due to the usage of msys2 that uses the most recent version of the framework). * [New] Added default constructors in the form "Class(const &)" for Connection, Parameter and TypeAttribute in order to avoid deprecated-copy warnings on GCC9. * [New] The CLI now validates the mixing of options of different operation modes. * [New] Added support for partial diffs between a model and database or between two databases. * [New] Created an internal changelog on DatabaseModel to register object's modification over time being useful for partial diff operations. * [New] Added the widget called ChangelogWidget to control the model's internal changelog settings in the design view. * [New] Added support for save/load changelog from model file. * [New] The CLI now supports partial diffs too. * [New] Create the method ModelsDiffHelper::getRelationshipFilters. * [New] Added a warning message prior to the partial diff without using "Do not drop missing objects" option. * [New] Created a method ObjectsFilterWidget::setModelFilteringMode that disables some options when the filtering widget is being used to filter database model objects. * [New] Added cast and user mapping to the list of filterable objects. * [New] Added a hint text in ObjectsFilterWidget to inform about exact match searching. * [New] Added the methods Catalog::clearObjectFilter and Catalog::clearObjectFilters. * [New] Added support for DatabaseImportHelper to create a sequence assigned to a column via default value if automatic dependencies resolution is enabled. * [New] Created the namespace QtCompat that will reunite all the specific code that isn't compatible between different Qt versions. The goal of this namespace is to store in a central point all the code that uses QT_VERSION_CHECK to perform different operations depending on the current Qt version. * [New] Added the method SchemaParser::getExpressionResult in order to perform comparisons between QVariant values correctly due to the QVariant operators deprecation in Qt 5.15. * [New] Added the signal ObjectsFilterWidget::s_filtersRemoved that is emitted whenever all filters are removed. * [Change] Modified the script wingetdate.bat in order to return the build number based on the current local date correctly and renamed it to getbuildnum.bat. * [Change] Updated to 5.15 the Qt version used by default in linuxdeploy.sh and macdeploy.sh. * [Change] Replacing verbose QString() calls by "" for string initialization purposes. * [Change] Improved the sequences assignments to columns in DatabaseImportHelper::assignSequencesToColumns. * [Change] Improved the method ModelsDiffHelper::setFilteredObjects in order to treat tables/view/foreign tables properly by appending their children objects to the creation order list of filtered objects. * [Change] Adjusted the Catalog::setObjectFilters in order to configure exact match filters when any wildcard filter provided has no *. * [Change] Adjusted the partial diff process between a model and a database in which there's one or more many-to-many relationships filtered. * [Change] Minor adjustment on objects grids in SwapObjectsIdsWidget, DatabaseImportForm and ModelDatabaseDiffForm by changing the columns order. * [Change] Improved the method ModelsDiffHelper::setFilteredObjects in order to detect the proper creation order of the provided objects. * [Change] Minor change in ObjectsFilterWidget by making the action "Only matching" checked by default. * [Change] Minor improvement on CLI to accept the value "all" for the paramenter --force-children in order to force all table children at once. * [Change] BaseObject::configureSearchAttributes now configures the signature attribute as a formatted string. * [Change] Minor improvement on ObjectFinderWidget::updateObjectTable in order to optionally create checkable items in the first column. * [Change] Attributes related to object filters were moved from Catalog to PgModelerNs in order to be shared between Catalog and DatabaseModel classes. * [Change] Minor improvement in Connection::getConnectionId in order to return an optional HTML formatted string. * [Change] Isolated the method DatabaseImportForm::listFilteredObjects in a static one in order to reuse it on ModelDatabaseDiffForm. * [Change] Improved the objects filtering in such way to allow filter by name or signature. * [Change] Improved the UI of ObjectsFilterWidget by moving all options to a popup menu. * [Change] Several changes in all catalog queries in order to support signature matching. * [Change] Minor adjustemnt in Catalog::getFilterableObjectNames. * [Change] Adjusted the appimages building process. * [Change] Changing the default font size of graphical objects to 10pt in order to try to solve the intermittend issue of disappearing texts. * [Change] Updated the French translation. * [Fix] Fixed a regression in ObjectFinderWidget that was not opening objects form with double-click on an item on the results grid. * [Fix] Fixed a bug when drawing relationships in FK to PK connection mode. Now when one of the tables is collapsed the center points of both are used as connection points to the relationship. * [Fix] Fixed a crash in ModelDatabaseDiffForm while enabling/disabling the partial diff tab. * [Fix] Fixed the diff process for inheritance relationships created for two existing tables. * [Fix] Fixed a crash in LayersWidget when renaming a layer. * [Fix] Minor fix in DatabaseImportHelper::assignSequencesToColumns. * [Fix] Fixed a wrong comparison in Catalog::getObjectsOIDs. * [Fix] Minor fix in ConstraintWidget that was trying to validate FK relationships for generated tables of many-to-many relationships. * [Fix] Fixed a bug in Catalog::getObjectsOIDs that was executing a catalog query for a certain object when it was not being filtered. * [Fix] Minor fix in ModelDatabaseDiffForm tabs enabling/disabling steps. * [Fix] Fixed the QProcess usage in ModelFixForm due to QProcess::start() deprecation in Qt 5.15. * [Fix] Fixed a crash when trying to move several objects to a layer from the object finder widget and in the selected set one or more objects aren't graphical ones. v0.9.3-alpha1 ------ Release date: May 20, 2020
* [New] Added support for creating initial configuration files from CLI. * [New] The CLI is now capable of using the objects filtering in reverse engineering. * [New] Added a warning message when trying to import a big database. * [New] Added support for object filtering in reverse engineering dialog. * [New] Adding support for AppImage building for Linux. * [New] Added support for importing PostgreSQL 12 generated columns. * [New] Adding support for PostgreSQL 12 generated columns. * [New] The ModelNavigationWidget now will display a save icon if the current model is pending a save operation. * [New] pgModeler now guesses if a FK relationship consists in a one-to-one based upon the foreign keys and unique keys settings. * [New] Improved the rendering of FK relationships. Now it recognizes the minimum cardinality by using the right crow's foot descriptor o|< or ||< in the destination entity. * [New] Added support for the conversion of 1-1 and 1-n relationships, allowing the user to perform modifications over objects generated by those relationships. * [New] Added "virtual" keyword in classes that inherit others so the destruction order can be followed correctly. * [New] Adding support for copy model validation widget output as text as well preview it as texts. * [New] Added support for show/hide all layers in LayersWidget. * [New] Added the paramenter application_name to Connection in order to indentify connections created by pgModeler when querying pg_stat_activity. * [New] Added support for save/restore Z value attribute in MetadataHandlingForm. * [New] Created an improved and reusable file selector widget. * [Change] Improvements done in DatabaseImportHelper in order to speed up the listing of types as well the importing user-defined types on demand. * [Change] Refactored the way default value fields states are setup by user's actions. * [Change] Adjusted the default size of DatabaseImportForm. * [Change] Avoiding retrieve all types (system and user defined) at once before the reverse engineering in DatabaseImportHelper (Experimental). * [Change] Minor improvement on DatabaseImportHelper in order to display the correct message while assingning sequences to columns. * [Change] Improved the catalog queries in order to retrive parent oids and type when using the list queries. * [Change] Minor updates on windeploy.sh and macdeploy.sh * [Change] Minor improvement on DatabaseImportHelper in order to speed up the objects creation. * [Change] Improved the execution time for the catalog query of data types. * [Change] Improved the catalog query for sequences. * [Change] Avoiding the diff process to generate default value changes for generated columns. * [Change] Minor improvement on DatabaseModel::validateRelationships. * [Change] Improved the ModelWidget::convertRelationship1N() in order to avoid segfaults in certain cases. * [Change] Minor adjustment in PhysicalTable::restoreRelObjectsIndexes in order to diminish memory usage. * [Change] Minor improvement on update icon. * [Change] Minor improvement in LayersWidget in order to allow manual resizing using the mouse. * [Change] Improved the following classess in order to use the new file selector widget: ModelExportForm, ModelFixForm, MetadataHandlingForm, ModelDatabaseDiffForm, GeneralConfigWidget, PluginsConfigWidget, CsvLoadWidget, CrashHandlerForm and BugReportForm. * [Fix] Minor fix in OperationList in order to update FK relationships related to FKs that contains the column being handled by the list. * [Fix] Fixed a bug when retrieving the refs to some objects in DatabaseModel. * [Fix] Minor fix in CLI menu and error messages. * [Fix] Fixed the role importing process. Now referenced roles are auto resolved. * [Fix] Fixed the dependency checking for user defined types in DatabaseModel. * [Fix] Fixed a bug when loading extension that has no schema specified. * [Fix] Minor fix in DatabaseImportHelper::createFunction in order to solve eventual duplicated parameter names when importing some functions. * [Fix] Fixed a bug that was causing global name patterns for relationships to never be used even if they were properly configured. * [Fix] Minor fix in ModelObjectsWidget and ModelWidget to provide the correct information about objects' selection in SceneInfoWidget. * [Fix] Fixed a bug in RelationshipWidget that was causing the cursor never to be restored to its original icon when an exception occurred during relationship editing. * [Fix] Fixed a crash in some situations when closing models. v0.9.3-alpha ------ Release date: March 26, 2020
* [New] Added support for multiselection in ModelObjectsWidget. * [New] Added an optional parameter in PgModelerNs::generateUniqueName to avoid comparing the input object. * [New] Added support for objects' bulk renaming. * [New] Added support for multiselection in ObjectFinderWidget. * [New] Added support for middle button click on source code panel in order to paste the selected code in the current open SQL execution widget. * [New] Using the CRTP (Curiosly Recurring Template Pattern) approach to create a template type based on BaseType in such way that the static member from that template but used on all derived classes of TemplateType can be unique for each derived class. * [New] Added a "Stacking" action in popup menu that is used to control the z value of graphical objects. * [New] Adding support for move objects on the Z stack up and down. * [New] Added support for CLI to write system wide mime database on Linux and Windows. * [New] Added a method GlobalAttributes::setSearchPath so the application can setup the path in which the internal folders (schemas, lang, etc) can be found. * [New] Added the ability to remove owners from objects from Quick Actions > Change owner. * [New] Added an fix step that removes IN keyword from functions signatures. * [Change] Refactored the method DatabaseModel::getObjectDependecies by splliting it into small portions that handles specific object types dependecies. * [Change] The DatabaseModel::getObjectReferences was splitted in other get[object]References() in order to facilitate maintainance. * [Change] Minor adjustments in order to make the objects listing a bit faster for large databases. * [Change] Minor improvement on ObjectRenameWidget in order to apply renaming in reverse id order of the object so objects invalidations (due to relationships revalidations) diminishes. * [Change] In DatabaseModel the invalidated special objects are now stored in a list which is destroyed only when the model is destroyed too. This will avoid segfaults in some cases when the objects in that list are still being referenced in the operation list (Experimental). * [Change] Minor adjustment in ModelObjectsWidget and ObjectFinderWidget in order to emit the signal ModelWidget::s_sceneInteracted so the left menu at MainWindow can be updated accordingly. * [Change] Minor change in PgModelerNs::generateUniqueName in order to remove quotes from names before perform the comparison. * [Change] Refactored ObjectRenameWidget in order to support multiple objects renaming. * [Change] Refectored all the classes derivated from BaseType moving them to dedicated sources files in order to make them reuse TemplateType class isolating the related keywords, improving maintainance. * [Change] Removed the class LanguageType since it was replaced by namespace DefaultLanguages namespace. * [Change] Isolated the default language names into a namespace called DefaultLanguages and removed any reference to LanguageType in the code. * [Change] Improved the DataManipulationForm in such way that the user can sort results by clicking the column names in the result grid. This will cause a new query to be performed by using the clicked column as sorting criteria. * [Change] The current model's popup menu is now used as the "More" actions menu at MainWindow > general toolbar. * [Change] Refactored the ModelWidget::configurePopupMenu separating some portions in new methods to make maintainance more easy. * [Change] Moved the 'Fix model' and 'Objects metadata' actions to the general toolbar (left) at main window under the menu "Fix". * [Change] The class HintTextWidget was removed and replaced by simple html QToolTips. * [Change] Small change in the icon related to new tab opening in SQLToolWidget. * [Change] Minor adjustment or rows resizing policy on datamanipulationform.ui. * [Change] Minor adjustment on updatenotifierwidget.ui to allow link opening. * [Change] Refined the installer wizard pages. * [Change] Improved the installer script to work better on Windows. * [Change] Improving the installer on Linux and Windows to select the installation for all users or current user. * [Change] Improved the linuxdeploy.sh in order to remove the need to use the startup scripts by the binaries in the installer. * [Change] Fixed the installscript.qs in order to correctly update the mime database on Linux. * [Change] Minor improvements on the usability of swap objects ids form. * [Change] Separated the code that handles mime db on linux and windows, using a #ifdef switch to call the correct method depending on the platform. * [Change] Adjusting the linker options to make the executables search for libraries in PRIVATELIBDIR without forcing the usage of LD_LIBRARY_PATH. * [Change] The class Application was moved to libutils and has a basic implementation of just initialize the search path on GlobalAttributes. * [Change] Rename the classes Application and PgModelerCli to respectively PgModelerApp and PgModelerCliApp and they now inherits the new Application class in order to take advantage of the GlobalAttributes::setSearchPath. * [Change] The crash handler application is now executed under a Application instance not a QApplication anymore in order to use GlobalAttributes::setSearchPath. * [Change] Changed the namespace GlobalAttributes to a singleton in order try to solve problems with fallback paths. * [Change] Updated deployment scripts to use Qt 5.14.x * [Change] Changing the exposed main window from QMainWindow to MainWindow in PgModelerPlugin interface. * [Change] Moved the method SchemaParser::convertCharsToXMLEntities to XmlParser. * [Change] Minor buttons position adjustments on WelcomeWidget. * [Change] Minor refactoring on OperationListWidget in order to show a more compact text when displaying operations done over objects. * [Change] Removed the workaround code that disables the ALTER SET OWNER when the role associated to it is disabled and the object itself not. The best approach is to dissociate the role from the object so the ALTER instruction is not generated. * [Fix] Fixed a shortcut duplication in DatabaseExplorerWidget * [Fix] Fixed the shortcut for partitioning relationships in new object overlay * [Fix] Fixed a minor bug in MainWindow that was causing the bottom widgets bar to be displayed even when object finder widget and model validation widget weren't visible. * [Fix] Fixed a bug that was causing copy options to stay hidden for copy relationships in the relationship form. * [Fix] Fixed the importing of extensions on PostgreSQL 9.4 and below. * [Fix] Fixed the name uniqueness generation when the name is truncated when exceeding 63 bytes. * [Fix] Fixed a bug that was preventing the recent menus cleaning to be persisted in the conf file. * [Fix] Fix a bug in the validation of collation objects. * [Fix] Fixed a crash in ObjectRenameWidget when renaming several objects in which there was the need to revalidate relationships; * [Fix] Fixed the method PgSqlType::getTypes in order to avoid returning the first (null) type. * [Fix] Fix the importing/diff of columns based on PostGiS data types. * [Fix] Fix a crash in UpdateNotifierWidget when compiling pgModeler using Qt 5.14.x. * [Fix] Minor fix in PgSQLTypeWidget to avoid show an error message box when the user types an invalid data type name. * [Fix] Additional fix on XmlParser::convertCharsToXMLEntities in order to replace special char to xml entities correctly. * [Fix] Minor fix in the update notifier widget display position. * [Fix] Minor fix in diff regarding to the comparison on column/domain default values. Now the values are compared in insensitive case. * [Fix] Fixed the Windows installer in order to create the start menu item correctly (system wide). * [Fix] Minor fix on CLI in order to allocate export/import/diff helpers and config widgets only when they are required (when one of the options related are used). * [Fix] Fixed a bug that was allowing the applying changes of the forms on relationship added objects by hitting ENTER causing crashes. * [Fix] Fixed the bug that was causing model restoration to be displayed when the application was started from a double click on a model file. * [Fix] Fixed a bug in the metadata handling that was not restoring the collapse mode of tables. * [Fix] Fixed a crash on UpdateNotifierWidget after upgrading to 5.14. A wrong deletion was being performed where deleteLater() needed to be used instead * [Fix] Removing lots of Qt 5.14 deprecation warnings in the code. * [Fix] Fix a bug that was causing wrong replacements during the reverse engineering of functions. * [Fix] Fixed the method XmlParser::convertCharsToXMLEntities in order to avoid chars replacements within Release date: December 26, 2019
* [New] Add support for data dictionaries generation in HTML format in ModelExportForm. * [New] Added options to control data dictionary generation in CLI. * [New] Plugins now can optionally be associated to a menu action or not. Generally, an plugin not associated to a menu action is automatilly executed during the startup (see PgModelerPlugin::initPlugin). * [New] Added a missing model fix step on CLI that removes the IN keyword from functions signatures. * [Change] Making BaseRelationship::getReferenceForeignKey() public. * [Change] Isolated duplicated code in MainWindow::isToolButtonsChecked that checks if any tool button of the bottom or right widget bars is checked. * [Change] Removing the plugins from core code. * [Change] Modified pgmodeler.pro to include plugins folder when present in the source root (either in debug or release mode). * [Change] Ignoring plugins folder in the core code. * [Change] Minor improvement on ModelWidget::rearrangeSchemasInGrid in order to consider the amount of tables to determine the minimum grid size used to rearrange table. * [Change] Minor text adjustments in CLI. * [Change] Added an additional checking during relationship creation in order to avoid the creation of 1-* or n-n relationships involving partition tables. * [Change] Removing the restriction to create 1-1, 1-n and n-n relationships in which the involved tables are partitioned ones. * [Change] Disabling the SQL statment ALTER...OWNER TO in the object's SQL when the owner role has its SQL disabled but the object itself not. This will avoid reference errors when validating/exporting code. * [Fix] Fixed the "Save" action enabled state according to the current model's modified state. * [Fix] Fixed a crash when the user tried to edit connections in ModelDatabaseDiffForm and right after select a connection in the "Compare to" field. * [Fix] Fixed the generation of escaped comments for columns. v0.9.2-beta2 ------ Release date: November 1st, 2019
* [New] Added support for foreign tables. * [New] Added the method DatabaseModel::getObject(QString,vector) to return the first ocurrency in the lists related to the provided types. * [New] Added support for select all foreign tables in ModelWidget. * [New] Created the method BaseTable::isBaseTable to help determining if an object type is of Table, View or ForeignTable. * [New] Added extra support for foreign tables on DatabaseExplorerWidget and DataManipulationForm. * [New] Added the method DatabaseImportHelper::createColumns in order to isolate the code to create table/foreign table columns during reverse engineering. * [New] Added support for foreign table importing as well its children objects (columns, constraints, triggers). * [New] Added server and options fields on TableWidget for foreign table. * [New] TableWidget now fully supporting the edition of foreign tables. * [New] Added the ability to TableView to render ForeignTable objects. * [New] Added support for swap objects ids using arrow keys by changing creation order between two close objects on the grid. * [New] Added support for save diff settings in form of presets. * [New] Added an option to BaseObject to force the comment escaping making multilined comments be presented as single lines but without changing their semantics. * [New] Adding support for parse escaped text delimiters and value separators in CSVLoadWidget. * [Change] Avoiding the usage of "Generate ALTER commands" option when the table is a partition or partitioned. * [Change] Avoid unchecking PK checkboxes on TableWidget when adding a new column. * [Change] Validating the dialogs geometry regarding to screens geometry in order to avoid their appearance in an invalid position (out of range). * [Change] Limiting the size of the exceptions stack in 50 elements. * [Change] Improved the GenericSQL::isObjectReferenced in order to check if, when a referenced object is a column, the provided object is the same as the parent of that referenced object. * [Change] Restricting the usage of "Default partition" option for partitioning relationships when the partition table is a foreign table. * [Change] Making ModelObjectsWidget update the foreign table subtree. * [Change] Making ReferenceWidget to use foreign tables from referenced table selector. * [Change] Improved the Relationship class to accept foreign tables. * [Change] Improved the DatabaseModel::getObjectDependecies and DatabaseModel::getObjectReferences to include ForeignTable. * [Change] Updated View class to accept reference foreign table columns. * [Change] Moved the original implementation of DatabaseModel::createTable to a template method createPhysicalTable in order to reuse it to create tables and foreign tables. * [Change] ForeignObject is not a BaseObject child anymore due to multi inheritance problem that it can generate in ForeignTable class. * [Change] Minor ajustment in Relationship class to accept PhysicalTable in its constructor so relationships can be used by ForeignTable class as well. * [Change] Isolated the code common to Table and ForeignTable classes in a parent class named PhysicalTable. * [Change] Disabling mime type update on installers. * [Change] Minor adjustment on SQLExecutionWidget::generateBuffer to escape line breaks and separators when generating CSV buffer. * [Change] Removing unused code from NumberedTextEditor. * [Change] Changed the way temp source file is handled by the tool in order to solve a sharing violation problem on Windows. * [Change] Minor adjustment on HtmlItemDelegate to avoid creating local variables in paint() everytime the method is called. * [Fix] Fixed an bug in SQL generation of columns that was wrongly removing a comma from decimal data types. * [Fix] Fixed some catalog queries in order to support PostgreSQL 12. * [Fix] Fixed ObjectsScene to remove foreign tables during destruction. * [Fix] Fixed the View::getObjectCount in order to return 0 when the provided object type is invalid. * [Fix] Fixed the ObjectFinderWidget in order to fade out correctly the listed/not listed elements. * [Fix] Fixed the quick actions menu at ModelWidget in order to include the "Edit data" action for foreing tables. * [Fix] Fixed the DatabaseImportHelper::assignSequencesToColumns in order to correctly assign sequences to foreign table columns. * [Fix] Fixed a crash in ModelValidationHelper that was caused by wrong checking when validating generic sql objects. * [Fix] Fixed the source code display for tables and foreign tables on DatabaseExplorerWidget. * [Fix] Fixed the CodeCompletionWidget to display foreign table children. * [Fix] Fixed the loading of generic SQL objects when a referenced object was a column. * [Fix] Additional fixes to correctly reference foreign tables and tables in the portions were both classes are acceptable/desirable. * [Fix] Fixed the diff process in order recognize partition foreign tables attach/detach. * [Fix] Fixed the generation of XML code of partitioning relationships. * [Fix] Fixed the Relationship::getAlterRelationshipDefinition to include foreign tables. * [Fix] Fixed the preset.sch since it was not registering the "Reuse sequences" options correctly. * [Fix] Improved the DataManipulationForm in order to restore the columns visibility when retrieving again the data of the current table. * [Fix] Fixed the drop action in DatabaseExplorerWidget for user mappings. * [Fix] Fixed the ModelWidget::rearrangeTablesInGrid to adjust position of foreign tables. * [Fix] Fixed the generation of SQL code of partition tables in order to avoid the inclusion of partitioned tables columns on the code. * [Fix] Fixed a crash on DatabaseImportHelper when destroying detached inherited columns. * [Fix] Fixed the object duplication operation in model widget to accept duplicate foreign table children objects. * [Fix] Fixed the creation of relationships involving foreign tables. * [Fix] Fixed the permission object in order to support foreign tables. * [Fix] Fixed the model export helper to support foreign tables. * [Fix] Fixed ModelWidget to show missing popup actions for foreign tables. * [Fix] Fixed the NewObjectOverlayWidget to display tool buttons related to foreign table children. * [Fix] Fixed the SchemaView::fetchChildren to include foreign tables in the returned list. * [Fix] Fixed the ModelValidationHelper to validate foreign tables and table-view relationships. * [Fix] Fixed ColumnWidget and ConstraintWidget to accept foreign tables usage. * [Fix] Fixed a regression when importing permissions related to functions. * [Fix] Fixed the OperationList to handle foreign tables. * [Fix] Fixed create methods in DatabaseModel related to table children object in order to accept foreign tables. * [Fix] Fixed the SwapIdsWidget postion/size saving and restoration. * [Fix] Minor tooltip fix in GeneralConfigWidget. * [Fix] Minor fix in default conf files removing unused tag attribute. * [Fix] Additional fix to the extension import to correctly indetify it as a data type handler. * [Fix] Fixed a bug on Role's SQL generation due to a missing attribute. * [Fix] Additional fix in GeneralConfigWidget to save correctly the settings of dockwidgets. * [Fix] Minor fix in DatabaseModel to write ddl end token in the appended/prepended custom code. * [Fix] Fixed a false-positive result when doing the diff between two fuctions that contains the same signature. * [Fix] Fixed the diff generation for Role objects when setting up an blank password. * [Fix] Fixed the "Prepend at the beggining of the model" option behavior on CustomSQLWidget. * [Fix] Fixed the catalog query for extension in order to indetify correctly if this object handles a data type. * [Fix] Fixed the Variadic option enabling on ParameterWidget. * [Fix] Fixed the saving of validator widget settings. There was a conflict between pgsql-ver attributes present on the validator settings and the default attribute added by the schema parser. The solution was to use a different attribute (version) in the validator. * [Fix] Fixed the "Clear items" action in popup menu at DataManipulationForm. * [Fix] Fixed the importing of tables and views in such way to automatically create correctly the domains referenced by their columns. * [Fix] Fixed a bug on ModelDatabaseDiffForm that was causing the form to be reseted on the middle of a diff process when the user minimize the diff dialog causing unexpected behavior (or even crashes sometimes). * [Fix] Minor fix in AboutWidget. * [Fix] Minor fix in ModelDatabaseDiffForm to avoid using uniform items height in output widget. v0.9.2-beta1 ------ Release date: September 2, 2019
* [New] Added a routine to write a backup file during the saving of model files in order to avoid data loss in some rare cases. * [New] Added a new action on DataManipulationForm to clear the selected items by pressing Ctrl+R. * [New] Enabling/disabling the save model action according to the model's modified status. * [New] The main window instance is now exposed to plugins to make the extra features development more flexible. * [New] Avoiding selecting table items in BaseTableView::mousePressEvent which doens't contain an underlying (source) object. * [New] Adding support for duplicate several table objects at once. * [New] Added support for table children multiselection by using Ctrl+Shift+Click on them. * [New] Added support for load the generated diff code in the SQL tool and automatically browsing the destination server for manual diff applying. * [New] Added a button to create a new data manipulation form from within another data manipulation form. * [New] Added a confirmation message before closing a database explorer widget. * [Change] Minor adjustments in PgModelerUiNs::createOutputListItem and PgModelerUiNs::createOutputTreeItem to better display formatted messages. * [Change] Minor improvement on CSV text copying to exclude from the buffer the hidden columns. * [Change] Adjusted the font weight on WelcomeWidget (only for Linux). * [Change] Minor adjustment on tool buttons font size on DataManipulationForm. * [Change] Improved the UI of the DataManipulationForm by rearranging the tool buttons to the left of the dialog. * [Change] Improved the clipboard text pasting on DataManipulationForm in order to parse the text as CSV when Ctrl+Shift+V is pressed. * [Change] The filter input on SQLExecutionWidget is now automatically focused when toggling the filter widget. * [Change] Changed the default behavior of result set filtering to Qt::MatchContains on SQLExecutionWidget. * [Change] Avoiding showing the "Swap ids" action in popup menu when we have only columns/constraints selected * [Change] Minor adjustment on SceneInfoWidget to avoid display dimensions of selected columns/constraints on the canvas. * [Change] Renamed the method BaseGraphicObject::getReceiverObject to getOverlyingObject (to make sense with its counter part BaseObjctView::getUnderlyingObject) * [Change] Avoiding clear the whole scene selection when the table is already selected and the user requested popup menu. * [Change] Renamed BaseObjectView::getSourceObject to getUnderlyingObject. * [Change] Improved the object protection action in ModelWidget in order to accept the multi item selection on tables. * [Change] Changed the way the PSVI attribute is handled in xmlparser to retrieve big line numbers on a xml document. * [Change] Improved the diff code preview allowing the user to close the dialog without going back to previous tab and click 'Cancel'. * [Change] Minor adjustment on buttons shortcuts/tooltips on DataManipulationForm. * [Change] Changed the way the model saving timers are controlled to avoid infinity savings on the model (when the auto saving option is disabled) making the application unusable. * [Change] Making the mime update operation return exit code 0 even if there was errors (still displayed in the console). This will avoid the installer to abort installation when the dbm mime update fails. * [Change] Avoiding applying fillfactor to gin indexes. * [Change] Moved the method DatabaseImportHelper::parseIndexExpressions to Catalog class. * [Fix] Fixed a broken diff code generation for policies. * [Fix] Fixed the object duplication action when only a single table object is selected. * [Fix] Fixed a bug in ModelWidget::removeObjects that was causing the removal of relationship added columns * [Fix] Fixed the ModelWidget::configurePopupMenu to consider the table's multi item selection. * [Fix] Fixed a false-positive diff result when dealing with timestamptz. * [Fix] Fixed the progress calculation of dbm files loading. * [Fix] Fixed a bug that was causing the generation of broken view code. * [Fix] Fixed the display of index expressions on DatabaseExplorerWidget. * [Fix] Minor fix on SQLExecutionWidget to avoid results grid to overlap command execution history widget in certain cases. v0.9.2-beta ------ Release date: May 31, 2019
* [New] Added support for user mapping. * [New] Added support for foreign server. * [New] Added support for foreign data wrapper. * [New] Added support for reduced verbosity on diff, export and import processes in order to improve performance. * [New] Adding missing tootip on ObjectFinderWidget. * [New] Generic SQL objects now support dynamic references to objects which can be used in the definition code. * [New] Added support for compare foreign servers on diff process. * [New] Created a generic getAlterDefinition on ForeignObject. * [New] Added ForeignServer toolbutton in NewObjectOverlayWidget. * [New] Added support for the reverse engineering user mapping objects. * [New] Added support for the reverse engineering foreign server objects. * [New] Added code snippets for foreign data wrapper and foreign server. * [New] Added support for diff user mapping. * [New] Added support for diff foreign data wrappers. * [New] Added support for set permissions to foreign data wrapper. * [New] Added the WRAPPER, SERVER and MAPPING key words to sql-highlight.conf. * [New] Added the method PgSqlType::isExactTo in order to do a full comparison (all attributes) between two data types. * [New] Added the ability to view references to store referenced tables. This feature will cause relationships to be created between the view and the referenced tables. This is useful when we're using reverse engineering feature in which, in previous versions, couldn't determine the tables that were linked to a view. Now, with this feature a relationship is created between the view and all involved tables. * [New] Added missing data type macaddr8. * [New] Enabling quick clear button on several input fields. * [New] Added support for result set filtering in the SQL execution widget. * [New] Adding a column labeled "Comment" in TableWidget and ViewWidget to hold comments of children objects. * [Change] Changed the shortcut of run SQL action in SQLExecutionWidget to F5. * [Change] Changed the shortcut of tree update action in DatabaseExplorerWidget to F6. * [Change] Change "New object" action in popup menu in order categorize object types when clicking the database object diminishing the amount of items displayed on the screen. * [Change] Improved the object search mechanism in such way that various attributes of the object can be matched. New searchable attribute may be added in the future. * [Change] Added missing code documentation. * [Change] Minor adjustment on ForeignDataWrapper::getAlterDefinition. * [Change] Minor improvement on ModelDatabaseDiffForm to show the connection id of the databases being imported in the output tree. * [Change] Formatting server objects' attributes on DatabaseExplorerWidget. * [Change] Minor adjustments on the icons of the buttons in ObjectsTableWidget. * [Change] Improved the method DatabaseModel::getObjectReferences to detected foreign data wrappers as functions' references. * [Change] Minor code refactoring on Table and View classes. * [Change] Renamed the method Exception::getErrorType to Exception::getErrorCode. * [Change] Improved the ModelValidationWidget in such way that is possible to operate over objects on the output list through their respective context menu (the same as in the ModelWidget). * [Change] Now its possible to trigger the swap ids dialog for two selected objects, causing their ids to be swapped more quickly. * [Change] Minor refactor on schema files. * [Change] Minor attributes refactoring on several classes. * [Change] Minor change in the PgSqlType constructor by turning some parameters optional in order to facilitate the creation of array only types. * [Change] Minor update on disclaimer text at start of the source files. * [Change] Allowing copied object to be pasted multiple times. This feature works only with copy/paste operation without remove the pasted objects from the clipboard, for cut/paste the behaviour is unchanged. * [Change] Increased the maximum limit of SQL history. * [Change] Updated the windeploy.sh and the installer scripts. * [Change] Adjusted the installer scripts. * [Change] Changed the windows deploy script to use Qt Installer Framework. * [Change] Adjusted the deploy script to use Qt 5.12. * [Change] Fixed the windows deploy script to use newer version of the compiler in 64 bits environment. * [Change] Minor improvements in SQLToolWidget and SQLExecutionWidget to avoid segmentation faults when trying to close a execution tab while the command is still running. * [Change] Adjusted the resize parameters in DataManipulationForm to avoid wrong dialog resizings mainly on Windows. * [Fix] Fixed a bug in DataManipulationForm that was deleting new rows wrongly. * [Fix] Fixed a bug that was causing domain constraints not to be extracted correctly during reverse engineering. * [Fix] Fixed a bug that was causing a fk relationship not to be deleted if the fk tied to it was changed by the user. * [Fix] Fixed a bug on CLI that was not fixing broken models correctly when they had no role declaration. * [Fix] Fixed a bug that was causing tables not to be moved on the canvas using mouse. * [Fix] Fixed a crash related to destruction of special objects on DatabaseModel::destroyObjects. * [Fix] Fixed a bug that could crash the application when no language was specified to a funcion and the SQL/XML code was being generated. * [Fix] Minor fix a bug on index importing. * [Fix] Minor fix on View::isReferencingTable. * [Fix] Fixed a crash when a query executed in SQLExecutionWidget was a DDL one or was not returning results. * [Fix] Fixed a bug in CLI that was failing to fix model in certain cases. * [Fix] Minor fix on buttons tooltips. * [Fix] Fixed a bug that was causing syntax error if the last column of a table had the SQL code disabled. * [Fix] Fixed a bug on diff process due to a missing attribute on the generation of diff code for inheritance relationships. * [Fix] Fixed a bug when rendering several self relationships attached to the same table. * [Fix] Fixed the CLI in order to restore the layers information when fixing a broken model. * [Fix] Fixed a bug in object finder that was causing objects from a hidden layer to be displayed causing inconsistency on the layer state. v0.9.2-alpha1 ------ Release date: December 17, 2018
* [New] Added support for scene layers. * [New] Added support for view's columns importing in DatabaseImportHelper. * [New] Added the ability to load view columns from database model file in DatabaseModel::createView. * [New] Added a tab "Columns" in ReferenceWidget where the user will be able to insert columns to be used as view columns. * [New] Added support for pagination of tables and views columns pagination. * [New] Added a pagination toggler action on context menu at ModelWidget. * [New] Added a fix step on CLI to remove the deprecated attribute hide-ext-attribs from tables and views xml code. * [New] Added a configuration option to control attributes per pages in tables and views. * [New] Added support for save collapsing states and current attributes pages to the database model file. * [New] Added constants to reference child objects of TableObjectView. * [New] Added the class TextPolygonItem which can be used to draw a text over a background polygon. * [New] Added support for OLD/NEW tables aliases on triggers. * [New] Added a hint text on RelationshipWidget to document the correct usage of default partitions. * [New] Added support for partition attaching/detaching detection in diff process. * [New] Added auxiliary methods in Table class in order to add/remove and retrieve partition tables. * [New] Added support for importing partitioned/partition tables on DatabaseImportHelper. * [New] Added a missing validation in Relationship to avoid creating other types of relationships involving partitioned or partition tables. * [New] Added support for specify partition bounding expression on partitioning relationships. * [New] Added support for resize grid cells to fit contents on ObjectsTableWidget. * [New] Added a tab "Partition keys" that will handle partitioning configuration on TableWidget. * [New] Added a method in ObjectsTableWidget to hide some horizontal header sections. * [New] Added some validations when creating partitioning relationships. * [New] Added support for hide columns on data manipulation dialog. * [New] Added a transient attribute to objects DatabaseModel, Table and View in order to give a hint on the maximum count of objects held. This attribute is used to preallocate the vectors which store the children objects in order to avoid excessive memory allocation/deallocation due to vector resizing. * [New] Added a column labeled "Alias" on all objects tables in TableWidget so the aliases of children can be displayed. * [New] Added support for adding tabs via shortcut or corner button in the SQL Execution panel. * [Change] Minor adjustments on MainWindow to make the overview widget to update its contents whenever the active layers change on the current model. * [Change] Minor adjusment in ObjectsScene::addItem to make the item (in)visible according to the visibility of its related layer. * [Change] Minor fix in AttributesTogglerItem in order to consider the parent's opacity during painting. * [Change] Minor fixes in OperationList in order to force views to be updated correctly when operating over a table which is referenced by those objects. * [Change] Minor adjustments on SchemaView and BaseTableView (and its children classes) to update the geometry when they switch from invisble to visible state. * [Change] Changed views in such way so they can use the struct SimpleColumn to represent their deduced columns. * [Change] Improved the update of views when referenced columns and tables change their structure. * [Change] Improved database model loading times by avoiding the rendering of tables while the children objects (indexes, trigger, rules, etc) are being added. * [Change] Removed the several operators ~ overloading that statically cast enums to their underlying type and created a template function called enum_cast in C++14 syntax. * [Change] The zoom in/out level is now sensible on how much the user rolls the mouse wheel. * [Change] Move the default implementation of configureObjectShadow and configureObjectSelection from BaseObjectView to BaseTableView. * [Change] Disabling configureObjectSelection and configureObjectShadow on TableObjectView and RelationshipView. * [Change] Minor adjustment on protected icon position on TableTitleView and TextboxView. * [Change] Minor performance adjustments in ModelWidget. * [Change] Minor improvement in TextboxView to use only a TextPolygonItem to hold text and the object's rectangle instead of a box and a text items. * [Change] Replaced the sql_info_txt and sql_info_box items by a single instance of TextPolygonItem to denote SQL disabled status. * [Change] Replace the tag_body and tag_name elements on BaseTableView by the tag_item which is a instance of TextPolygonItem. * [Change] Improved the TableObjectView to avoid adding extra scene items. * [Change] Improved the TableTitleView to avoid adding children items. A custom paint() method now draws them. * [Change] Removing unused fr_FR UI translations. * [Change] Minor update on known issues sections at README.md. * [Change] Renamed the namespace ParsersAttributes to Attributes and its attributes has been refactored. * [Change] Refactored all static const attributes of the classes present in pgsqltypes.h. * [Change] Renamed PgModelerNS to PgModelerNs. * [Change] Renamed PgModelerUiNs to PgModelerUiNs. * [Change] Renamed XMLParser to XmlParser. * [Change] Removing uneeded temporary QString instance created from Exception::getErroMessage call before throwing exceptions. * [Change] Refactored static const attributes of BaseObject. * [Change] Refactored the items in the enum ObjectType by removing the prefix 'OBJ'. * [Change] The enums ErrorType and ObjectType were transformed into scoped enums. Also the ErrorType enum was renamed to ErrorCode. * [Change] Code refactoring done in order to make it more close to C++14 in order to take advantage of new features introduced by that standard. * [Change] Removed unused labels and fixed warning frame on ModelWidget. * [Change] Minor improvements on table's attributes displaying on DatabaseExplorerWidget. * [Change] Improved the diff process in such way to avoid generating unnecessary/noise commands related to changing types of columns to integer and setting nextval() call as default value. * [Change] Partition tables are now displayed in the "Tables" tab at TableWidget. * [Change] Removed the cached catalog query test feature from Catalog. * [Change] Fine tuning on the validation of the entities used in the partitioning relationship creation. * [Change] Forcing the partitioning relationship to be invalidated when the reference table (partitioned) partitioning type is set to null (no partitioning). * [Change] Move the FK settings, copy options and name patterns group boxes to a dedicated tab on RelationshipWidget. * [Change] Improved the models destruction when closing the application. * [Change] Improved the Index/Exclude/ParitionKey elements handling by creating a generic form/grid that handles these kinds of objects (ElementsTableWidget). * [Change] Modified the RelationshipWidget in order to handle partitioning relationships. * [Change] Modified RelationshipConfigWidget in order to write name partterns for partitioning relationships. * [Change] Improved the column copying and validation on class Relationship to include partitioning relationship logics. * [Change] Improved the reverse engineering performance by avoiding update relationships as they are being imported. * [Change] Improved the object duplication feature in ModelWidget. * [Change] When the model is loaded it is copied to the temporary models storage as a first version of the temporary dbm file. * [Change] Simplified the temporary models saving process by removing the thread that was controlling it. Actually the thread was unnacessary because the process was being executed in the main thread no matter if there was another thread to control the saving. * [Change] Minor adjustment on the hint text resizing. * [Change] Increasing to 5 minutes the period in which the temporary model saving will be executed. * [Change] pgModeler will now use the official docs url in the help buttons. * [Fix] Fixed a minor bug that was preventing the copy action to be enabled in DataManipulationForm. * [Fix] Fixed some sample models to remove deprecated attributes. * [Fix] Fixed a crash while renaming view's children objects. * [Fix] Fixed the rendering of views which contain only a single reference that is the whole object's defintion. * [Fix] Fixed the column name deduction for recursive views. * [Fix] Fixed a bug that was causing crashes while configure new constraints on tables. * [Fix] Fixed the view's resizing. * [Fix] Fixed a regression in schema's rectangle selection. * [Fix] Fixed the StyledTextboxView bounding rectangle. * [Fix] Fixed an artifact when user switched on and off the compact view. * [Fix] Fixed the Linux deploy script. * [Fix] Fixed the macOs deploy script. * [Fix] Fixed some compilation problems on macOs due to the usage of C++14. * [Fix] Fixed some compilation problems on Windows due to the usage of C++14. * [Fix] Fixed a bug in DatabaseModel::destroyObjects that could lead to segfault when the destroyed model had permissions on it. * [Fix] Fixed a bug when importing columns which data types is some user defined type in form of array, e.g., custom_type[]. * [Fix] Fixed a bug in SchemaParser that was causing only the first %set line in a if block to be parsed no matter that there were others %set below the same block. * [Fix] Fixed the tooltip of some graphical objects by adding their comments and aliases. * [Fix] Fixed the catalog query for tables to select partitioned tables correctly. * [Fix] Fixed the catalog query for types to avoid selecting partitioned tables as being data types. * [Fix] Fixed a bug that was causing special primary key configured on a relationship to make the original primary key of the table to disappear after disconnect the relationship. Now pgModeler stores in memory the original PK prior the connection of relationship and creation of the special PK. When disconnected the relationship, the original primary key is restored on its parent table. * [Fix] Fixed the creation of elements (index, exclude, patition key) on DatabaseModel. * [Fix] Fixed the class Relationship to reuse compatible columns when handling partitioning relationships. * [Fix] Fixed the diff process in such way to create new columns with their respective COMMENT ON statement when present. * [Fix] Fixed the detection of comment changes for columns on diff process. * [Fix] Fixed the order of recent models saved on the file pgmodeler.conf. * [Fix] Fixed a bug when creating a view reference as the whole view definition. * [Fix] Minor tooltip fix on DatabaseExplorerWidget. * [Fix] Making pgModeler honor the columns arrangement in primary keys. * [Fix] Fixed a bug that was causing FK relationship deletion to crash the application sometimes. * [Fix] Some fixes were done in the ModelOverviewWidget in order to support large models without exceed the screen size when configuring the size of the overall widget. * [Fix] Fixes a bad erase in View::removeReference. * [Fix] Fixed some bugs related to dialog size restoration in DataManipulationForm and TableWidget. v0.9.2-alpha ------ Release date: August 20, 2018
* [New] Added the support for cancelling SQL execution in SQLExecutionWidget. * [New] Added support for save/restore the dialogs sizes and positions. * [New] Added support for truncate tables in DataManipulationForm. * [New] Added support for aliases on some graphical objects that is used in the compact view mode. * [New] Added support for save/load object's metadata containing aliases information. * [New] Added support for compact view of the model where graphical objects can have a more friendly name for a reduced view as well for those who don't need to see details about tables (clients of the business, for instance). * [New] Added support for sequence options for identity columns. * [New] Added the ability to paste CSV text from clipboard into the TableDataWidget. * [New] Added support for bulk data edit in TableDataWidget. * [Change] Added missing copy options on copy relationships. * [Change] Minor adjustments on the item delegates in order draw text in the right alignment. * [Change] Minor adjustment on buttons style in DatabaseExplorerWidget, DataManipulationForm and SQLExecutionWidget. * [Change] Minor adjustment on OperationList::removeFromPool to avoid throw an exception when an invalid index is passed. * [Change] Changed the behaviour of the fade in/out of relationships linked to a table by applying the effect on the other tables that are related to the selected one. * [Change] Refactored the view editing dialog by moving the references handling form to a dedicated modal dialog. * [Change] Improved the model loading from file by blocking signals of relationships avoiding excessive/repetive rendering of objects. The whole model is fully rendered when the file was completely loaded. * [Change] Minor adjustment on constraints rendering at extended attributes section of tables. * [Change] French translation update. * [Change] Updated the other lang dictionaries with the new text brought by new releases. * [Change] Removing icons at the top of the dialogs: DatabaseImportForm, MetaDataHandlingForm, ModelDatabaseDiffForm, ModelExportForm, ModelFixForm. * [Change] Minor adjustments in the features of the demo version. * [Change] Minor adjustments in the UI stylesheet. * [Change] In DatabaseExplorerWidget the root item will come automatically selcted when browsing a database. * [Change] Minor performance tuning when handling big models. * [Change] Added some statistics attributes for tables on DatabaseExplorerWidget. * [Change] Minor adjustment in NewObjectOverlayWidget by putting the tool buttons under categories. * [Fix] Fixed a bug in ObjectFinderWidget that was forcing schemas rectangles to appear even if the flag indicating them to be visible was set to false. * [Fix] Fixed the editing form cancel operation. Now operations done when the form was active are undone correctly. * [Fix] Fixed a bug that was preventing to create a view containing the same name as a table but in different schema. * [Fix] Fixed a regression that caused notices not to be shown in the output panel at SQLExecutionWidget. * [Fix] Fixed the query catalog for policies which was causing syntax error when combining import system objects and extension objects options. * [Fix] Fixed the disabling of some actions related to design when switching to manage view. * [Fix] Minor fix on stylesheet in order to display the extended button on general toolbar. * [Fix] Fix a shortcut conflict in DataManipulationform. * [Fix] Fixed the offset of strings composing the StorageType. * [Fix] Minor form size adjustments. * [Fix] Minor fix in sqlexecutionwidget.ui to force the exhibition of grid headers * [Fix] Minor fix in SQLExecutionWidget allowing the output widget to be resized to a size lower than the default one. * [Fix] Fixed the tab order in PolicyWidget. * [Fix] Fixed the generation of Database object source in DatabaseExplorerWidget. * [Fix] Fixed the method BaseObjectWidget::setRequiredField to make object selector fields as required correctly. * [Fix] Minor fix in HintTextWidget to stay on top of all widget when being displayed. * [Fix] Fixed a bug that was not quoting extension name when needed. * [Fix] Fixed a crash when trying to remove a fk relationship when it was created from a foreign key which references protected columns (added by relationship). * [Fix] Fix a crash when importing CSV files into DataManipulationForm. * [Fix] Minor typo in TableDataWidget. * [Fix] Minor fix on schema file sql/table.sch. v0.9.1 ------ Release date: May 14, 2018
* [New] Added support for line selection by clicking and moving the mouse over the line numbers widget in any source code field. * [New] The validator now checks if the model has columns referencing spatial data types and creates the postgis extension automatically when fixing the model. * [New] Added support for RESTART IDENTITY on truncate tables in DatabaseExplorerWidget. * [New] Added an custom option checkbox in Messagebox for general purpose usage. * [New] Added support for diff operation in CLI. * [New] Added support for import database from CLI. * [New] Adding missing types regrole and regnamespace. * [Change] Improved the copy/duplicate operation in order to copy rules, index, trigger and policies together to their parents. * [Change] Added column names to the code completion widget used in the filter widget at DataManipulationForm. * [Change] Improved the SQLExecutionWidget in such way that it'll display large amount of data more quickly and consuming less memory. * [Change] Minor improvement in SQLExecutionWidget to show the amount of time took to run a query. * [Change] Minor improvement in the text find widgets in SQL tool in order to make them closable via dedicated button. * [Change] Improved the set tag operation in ModelWidget in order to cleanup the assigned tags to a set of objects. * [Change] Minor improvement on DatabaseExplorerWidget to show the rls attributes labels correctly in the attributes grid. * [Change] Refactored all the CLI options. * [Change] Minor change in Connection::generateConnectionString in order to put the dbname param in the start of the string. * [Change] Improved the performance of the row duplication action in DataManipulationForm. * [Change] Minor improvement in order to update the schemas boxes when the tables have their extended attributes box toggled. * [Change] Improved the performance of "Move to schema" operation. * [Change] Added an busy cursor while closing a model. * [Change] Improved the object selection in object finder. * [Change] Changed the behaviour of select and fade buttons in ObjectFinderWidget in such way to enable the user to select/fade the objects in the listing (or not included in the results). * [Fix] Fixed a bug when import identity columns in certain cases when the identity column was followed by another column which data type was not accepted for identity, e.g, text after smallint. * [Fix] Fixed the check boxes disabling when dealing with identifier relationships. * [Fix] Disabled the drag & drop for items in the side listing at ConfigurationForm. * [Fix] Fixed the tab behavior on comment box in all editing forms of database objects. * [Fix] Fixed the catalog query for user defined types. * [Fix] Fixed the import of user defined types which names contains uppercase characters. * [Fix] Minor typo fixes in CLI. * [Fix] Fix window scaling on HiDPI/Retina screens. * [Fix] Minor fix in Connection::getConnectionId in order to omit port when that parameter is not configured in the connection. * [Fix] Fixed a bug in ModelExportHelper that was failing to remane the database when the command appeared. * [Fix] Fixed a bug in CollationWidget that was referencing the collation attributes LC_??? using the wrong constant. * [Fix] Fixed the behaviour of the message box that warns about the need of validate the model prior to export, save or diff. Now rejecting the dialog (i.e. closing it) will be considered that the user wants to proceed with the pending operation even with an invalid model. * [Fix] Fixed the import of comments for constraints,triggers, index and rules. * [Fix] The value input in BulkDataEditWidget will be focused as soon as the widget appears. * [Fix] Fixed a bug in the aggregate import process. * [Fix] Minor fix in DataManipulationForm to avoid the generation of a where clause when the filter is filled only with spaces. * [Fix] Minor fix in the magnfier tool to use the same render hints as the canvas viewport. * [Fix] Fixed a bug in the diff process that was trying to recreate the whole database when the "Force recreation" option was set. * [Fix] Fixed a bug when showing the source of tables in DatabaseExplorerWidget when these objects have permissions assigned. * [Fix] Adjusting tables position when the parent schema is moved and the alignment to grid is enabled. * [Fix] Minor fix in the CLI menu. * [Fix] Fixed the saving process for large models by stopping the threads related to temp models saving while the model file is being written. v0.9.1-beta1 ------ Release date: April 6, 2018
* [New] Added the ability to create multiples one-to-many and many-to-many relatationships between the same pair of tables. * [New] Added the ability to use more special ascii chars in the middle of object names. * [New] Added missing SQL keywords into sql-highlight.conf * [New] Added support for multi line comments in UI. * [New] Added code snippets for CREATE and ALTER policy. * [New] Added full support for row level security (RLS), including export, import and diff of this kind of object. * [New] Added the method DatabaseExplorerWidget::formatPolicyAttribs in order to display some attributes values correctly. * [New] Added support for bulk data editing in DataManipulationForm. * [New] Added an option to diff process to force the generation of DROP commands for columns and constraints even if the missing objects need to be preserved. This is useful to work with partial models and the user need to remove columns/constraints and preserve the rest of objects. * [New] Added the ability to generate diff code to Enable/Force RLS attribute of tables. * [New] Added support for RLS on tables. * [New] Added the support for detect identity columns in diff. * [New] Added support for identity columns (PostgreSQL 10). * [New] Added the support for BYPASSRLS option on roles. * [New] Added support for IS_TEMPLATE and ALLOW_CONNECTIONS options in database object. * [New] Added the procedures to fix old style domains in CLI. * [New] Added support for multiple check constraint in domains. * [New] Added support for sort items alphabetically (ascending) or by oid in DatabaseExplorerWidget. * [Change] Changed the input mode of the password field in ConnectionsConfigWidget in order to hide the passwords in the form. NOTE: the passwords are still in plain text in the config file. * [Change] Moved extensions from schema level to database level in order to reproduce better the PostgreSQL's behavior. * [Change] The filter widget is now toggled in DatabaseExplorerWidget via filter menu. * [Change] Minor adjustments on forms sizes. * [Change] In GeneralConfigWidget when restoring default settings the default settings for syntax highlight are restored as well. * [Change] pgModeler will not try to create the plugins path anymore. This will avoid constant error messages during startup. Now, it'll silently ignore the absence of that folder and skip the plugin loading. * [Change] Minor improvements on catalog queries for index, trigger, rule, policy, constraint in order to use the comment catalog query. * [Change] Removed an uneeded form adjustment code in Table::openEditingForm. * [Change] Minor improvements on DatabaseModel::getCreationOrder. * [Change] Improved the source editing in external application. The use is informed about the app running state and the contents for the source editor field are locked until the user closes the external app. * [Change] Improved the model loading on macOs in such way to avoid showing the visual objects creation while they are being loaded from file. * [Change] Improved the reverse engineering and diff process to accept the new attributes of database object. * [Fix] Fixed the query catalog for built-in types to include the types related to domains. * [Fix] Fixed the Extension::setSchema method to accept null schemas. * [Fix] Fixed the generation of XML code for casts. * [Fix] Fixed the extension creation, allowing only one instance of the named extension per database no matter the schema used to allocate its children objects. * [Fix] Minor fix in ObjectDepsRefsWidget to correctly list the indirect references. * [Fix] Fixed a bug when dropping Functions in DatabaseExplorerWidget. * [Fix] Improved the import of sequences in such way to avoid unsolvable reference breaking. * [Fix] Fixed a bug that cause the disabling of connections for database models created prior to 0.9.1-beta1. * [Fix] Fixed a bug on import process that was wrongly creating types derivated from tables/sequence/views causing duplication problems during validation. * [Fix] Fixed a crash on macOs when opening a second model. * [Fix] Fixed the import of sequences which now assigns owner columns correctly. If the owner column is an identity one the SQL code of the sequence is disabled by default which will not cause confusion in the diff process trying to drop it in some cases. * [Fix] Fixed an issue in diff process that was generating a malformed DROP command for extensions. * [Fix] Minor fixed in the "Filter by OID" feature in DatabaseExplorerWidget and DatabaseImportForm. * [Fix] Fixed the diff for domains which contain multiple check constraints. * [Fix] Fixed a bug that was not selecting the correct spatial type in the widget. * [Fix] Fixed a conflict of shortcuts in DatabaseExplorerWidget. Now F5 updates a leaf/subtree and Alt+F5 performs quick refresh of the tree. * [Fix] Fixed a problem with sqlexecutionwidget.ui that is not building properly in Qt 5.10. v0.9.1-beta ------ Release date: January 26, 2018
* [New] Added support for GROUP BY/HAVING clauses in Views by adding a new kind of reference. Proper changes done in ViewWidget to allow configuring those clauses. * [New] Added the method Catalog::isSystemObject(oid) which indicates if the provided OID is related to a system object. * [Change] Minor adjustment in the copy/paste operation to generate suffix in the pasted objects only when there're conflics. * [Change] Removed the port range limitation in connection configuration dialog. * [Change] Updated the default version of Qt and PostgreSQL to, respectively, 5.9.3 and 10.1 in deployment scripts. * [Change] Changed the method PgSQLType::getTypeName by adding a bool parameter so the name can be returned with dimension descriptor (when dimension is > 0). Useful for configuring operator's signatures. * [Fix] Fixed the drop action for materialized views in database explorer. * [Fix] Fixed a crash when importing extension objects. * [Fix] Fixed the generation of operator's signature that must consider dimensions of the arguments' types. * [Fix] Fixed the bounding rect calculation for relationship instances when one or more labels are hidden. * [Fix] Fixed the SVG & PNG export to properly determine the area to be drawn in the destination graphics file. * [Fix] Fixed a crash when adding attributes into many-to-many relationships. v0.9.1-alpha1 ------ Release date: November 30, 2017
* [New] Added the ability to compare two databases, and not only a model and a database, in diff tool. * [New] Added the relationship creation buttons on the object overlay when a single table is selected. * [New] Added the "Relationship" action in "New" submenu on table's popup menu so the user can create relationships using the selected table as source. This avoids the need to use blank areas of the canvas to start creating relationships. * [New] Improved the data manipulation dialog in such way that when dealing with deletes in tables without PK, tuples with NULL values can be correctly considered. * [New] Improved the validations on ResultSet class. * [New] Added a method to indicate if a column value is null in ResultSet. * [New] Added support for fade in/out objects in object finder in order to highlight the graphical objects retrieved from the search. * [New] Added an attribute in pgmodeler.conf to store the current status of the "Fade in" button in object finder widget. * [Change] Minor improvement in the diff generated metadata. * [Change] Increased the maximum allowed amount of lines in command history. * [Change] Minor adjustment on diff tool so the connections combo can be correctly updated when the user edit connections from within that form. * [Change] Improved the progress info of diff process so it can be more accurate. * [Fix] Fixed the way PostgreSQL 10+ version is returned from Connection::getPgSQLVersion. * [Fix] Fixed the sequence importing on PostgreSQL 10. v0.9.1-alpha ------ Release date: October 20, 2017
* [New] Added support for crow's foot notation. * [New] Added the crow's foot notation switch in RelationshipConfigWidget. * [New] Added the grid arrangement in the arrangment menu at MainWindow. * [New] Added the schema arrangement (scattered). * [New] Added an action to toggle schemas rectangle on ModelWidget. * [New] CLI now loads the relationship and general settings to reflect relationship styles in export modes. * [New] Added support for connect relatinship on tables' edges when using classical notation. * [New] Added support for apostrophes in the middle of object's name. * [Change] Removed the controls related to arragement in DatabaseImportForm. * [Change] Minor adjustments in tables' spacing in auto arrangement process. * [Change] Minor improvement on SQLExecutionWidget and DataManipulationForm in order to make possible to paste csv buffer from SQLExecutionWidget to DataManipulationForm. * [Change] Improvements done in the Spanish UI translation. * [Change] Changed the position of the zoom info icon in SceneInfoWidget. * [Change] Minor adjustments in the pen width of relationship lines and objects borders. * [Change] Minor improvement when aligning objects to grid forcing the relationships updating. * [Change] Minor arrangement of the connection modes in RelationshipConfigWidget. * [Change] Improved the performance of (de)selection of several objects at once in ModelWidget and ObjectsScene. * [Change] Removed unused attributes from BezierCurveItem. * [Change] Improved the BezierCurveItem class to enable the drawing of inverted curve by inverting its bounding rect. * [Change] Improved the import of index objects. * [Change] Minor tweak to enable clipboard usage in macOS when copying data in DataManipulationForm. * [Fix] Fixed a bug in ObjectsScene that was not emitting signals of deselection correctly. * [Fix] Fixed a bug in SQLToolWidget that was not cleaning up the source code pane when all databases were disconnected. * [Fix] Fixed a bug that was causing the diff process to try to remove the not null constraint of a primary key. * [Fix] Fixed a bug that was causing relationship line to be wrongly constructed in case the tables bounding rects don't intercepted. * [Fix] Fixed a bug that was recognizing the creation of a constraint but wasn't generating the SQL in diff process. * [Fix] Minor fix in order to avoid the inheritance/dependency descriptor to be rotated to the wrong size when curved lines are being used. * [Fix] Fixed the generation of sql comments for database and tablespace. * [Fix] Minor fix in example.dbm * [Fix] Fixed the configuration of bidirectional fk relationships when crow's foot is enabled. * [Fix] Fix a bug in GeneralConfigWidget that was reverting the grid optins everytime the user applyed settings. * [Fix] Fixed the genaration of index elements containing expressions. * [Fix] Fixed the import of operators and operator classes. * [Fix] Fixed the generation of operator signature by removing the length/precision of the types. * [Fix] Minor fix in CSVLoadWidget::loadCsvFromBuffer in order to preserve the line breaks avoiding the creation of unecessary lines. * [Fix] Fixed the import of exclude constraint. * [Fix] Fixed the import of timestamp(0) type. v0.9.0 ------ Release date: September 1st, 2017
* [New] Added the ability to paste text from clipboard to data grid in DataManipulationForm. * [New] Created the method CsvLoadWidget::loadCsvFromBuffer to make the code that extract csv document from string buffer reusable by other classes. * [New] Added a new sample model donated by the maintainers of 3D City DB project. * [New] Added the language "internal" to the set of system languages available when creating a new model. * [New] Added support for override the default language settings via GeneralConfigWidget. * [New] Added support for toggle curved relationship lines in GeneralConfigWidget. * [Change] Improved the MetadataHandlingForm enabling user to only extract metada to a backup file. * [Change] Small update on sample models. * [Change] Minor adjustments in the graphical points when relationships are selected. * [Change] Adjusted the calculation of the descriptor object. * [Change] Fixed the rotation of the descriptor object for identifier relationship when curved lines are activated. * [Change] Minor code documentation. * [Change] Moved the class BezierCurve to its own source files. * [Change] Improved the way bezier curves are generated for relationships. * [Change] Changed the default action to reset label's position from middle button click to Alt + Ctrl + left click. * [Change] Minor enhancement in auto arrange feature to avoid breaking lines when curved relationship lines are enabled. * [Change] Minor size adjustment in GeneralConfigWidget. * [Change] Minor update in README.md. * [Change] Minor size adjustment for DatabaseImportForm. * [Change] Minor adjustment in the methods which automatically resize dialogs depending on the resolution. * [Change] Changed the default font for objects and source code. * [Fix] Minor fix in RelationshipView to hide the circles at end of lines for self relationships. * [Fix] Fixed the catalog query for event triggers. * [Fix] Fixed the icons and labels of the "Select all" submenu in ModelWidget. * [Fix] Fixed a rare crash when configuring self relationships. * [Fix] Minor fix when rendering self n:n relationships. * [Fix] Minor fix in the HintTextWidget to resize more properly according to the held text. * [Fix] Minor adjustment in SceneInfoWidget. * [Fix] Minor fix in default confs for source code font style. * [Fix] Fixed the generation of objects style configuration file that was missing constraints settings. * [Fix] Fixed a bug in the index / exclude constraint import which was not creating expressions of these objects correctly and sometimes trucating them. v0.9.0-beta2 ------ Release date: July 1st, 2017
* [New] Added an action to reset labels distance in BaseRelationship and ModelWidget. * [New] Added a widget that shows some info about the canvas and the selected objects at the bottom of main window in design view. * [New] Enabled the usage of snippets in other portions of the software like GenericSQLWidget, FunctionWidget, ViewWidget, CustomSQLWidget. * [New] Added the ability to quickly jump to the tables related to a relationship. * [New] Added support for select all objects in the canvas by type (table, view, textbox, schema, relationship). * [New] Added support for bulk relationship points removal. * [New] Added a magnifier tool so the user can visualize objects when the zoom is too small. This tool allows the user to click to select or activate the context menu over the objects. * [New] Added support for generic sql objects that serve as an improved way to use custom SQL. * [New] Added support for handle metadata related to generic sql objects. * [New] Added the first object auto-arrange algorithm. * [Change] pgModeler will now accept (connect) to a PostgreSQL server even if the version of the server is not supported falling back to the most recent supported. * [Change] Minor improvements on DatabaseImportForm, ModelExportForm, ModelDatabaseDiffForm and MetadataHandlingForm to toggle uniformRowsHeight of the output tree at the start and the end of each process to avoid slowdowns and allow the items to be resized correctly when expanded. * [Change] Changed the way color are stored in Tag. * [Change] Minor adjustement on position info of objects in canvas. * [Change] Improvements on import/diff/export performances by adjusting the way the output widget handles items height. * [Change] Move the code from MainWindow::showEvent to the constructor of that class so all operations that load resources and restore configurations can be performed prior the window display. * [Change] Improved the ModelOverviewWidget to handle huge models better. * [Change] Improved the objects swapping by adding an objects grid where user can interact with it in order to choose which objects to swap. * [Change] Improved the schema parser to allow comparisons forcing the cast of values to float or int in the expression by using special letters attached to logical operators. * [Fix] Fixed the DatabaseModel::destroyObjects in order to include missing object types and avoiding leaks. * [Fix] Several memory leaks removed in different portions of the application. * [Fix] Minor fix in RelationshipView to show the line circles for n:n relationships. * [Fix] Minor warning fixes related to unused variables/values. * [Fix] Minor fix in Catalog that was trying to retrieve catalog info for generic sql objects. * [Fix] Fixed a bug when zooming out using wheel that was causing duplicated zoom in a single wheel turn. * [Fix] Minor fix in TableView and TableObjectView to present tables in a more compact fashion minimizing the space used in the canvas. * [Fix] Minor typo fix in swapobjectsidswidget.ui. * [Fix] Minor fix in lambdas slots usages. * [Fix] Fixed a bug in generateTextBuffer method in SQLExecutionWidget. v0.9.0-beta1 ------ Release date: May 13, 2017
* [New] Added the ability to standalone dialogs like import, diff, export and others to be resized according to the screen dpi and resolution. * [New] Added an experimental routine that will resize windows according to the current screen resolution and font dpi. * [New] Added support for browse referrer and referenced in DataManipulationForm. * [New] Added an item under table items that stores the referrer tables in the DatabaseExplorerWidget. * [New] Added the method BaseObjectView::getScreenDpiFactor to help resize scene objects according to the screen dpi/resolution. * [Change] Minor adjustment on readonly items regarding to referenced and referrer tables in DatabaseExplorerWidget. * [Change] Improved the tabs handling in SQLToolWidget in order to avoid confusion related to which database is being managed or queried currently. * [Change] Improvements done in the context menu at DataManipulationForm to include the key actions related to the control buttons at the top right portion of the dialog. * [Change] Improved the external script handling in SQLExecutionWidget. * [Change] Applied automatic resize for TaskProgressWidget. * [Change] Improvement done in model restoration dialog that is now displayed after the main windows is exposed. * [Fix] Fixed a problem in UpdateNotifierWidget that was receiving error 403 from the site. * [Fix] Fix a bug in DataManipulationForm that was causing order by clause to be nullified by comments added in the filter field. * [Fix] Fixed a regression in permission code generation. * [Fix] Fixed a bug in the generation of grant/revoke commands for columns. * [Fix] Fixed a bug that was causing the sorting options of index elements to be wrongly hidden. * [Fix] Minor fix in the site url. * [Fix] Minor fix in the filter toggling action in ObjectFinderWidget. v0.9.0-beta ------ Release date: April 4, 2017
* [New] Added support for indexes in Views. * [New] Added the support for edit/load the source code in NumberedTextEditor in external application. * [New] Added the ability to save/load metadata related to fade out status and extended attributes display status. * [New] Added the ability toggle the extended attributes area in tables and views. The toggle status is persisted in the model file and restores during loading * [New] Added constraints to the extended attributes section in the tables at canvas area in order to improve the quick access to these objects. * [New] Enabled the importing of view's indexes. * [New] Fade status is now persisted in the dbm file and restored during loading. * [New] Added the ability to control zoom factor from overview widget. * [New] Added a shortcut for "Duplicate" action in design view. * [New] Added support for (back)slash char in object's names. * [New] Enabled the usage of NewObjectOverlayWidget for views. * [Change] Changed the default characters used to escape values in DataManipulationForm and TableDataWidget from {} to // due to problems with json data. * [Change] Improved the file manipulation in SQLExecutionWidget. Added option to save the commands to the current file or in another file (save as). * [Change] Minor improvements done in Linux deployment script to support multiarch systems. * [Change] View's children (indexes, rules, triggers) are now listed under their respective parent view in DatabaseExplorerWidget. * [Change] Minor improvement in ElementsWidget to disable/hide columns combo when creating index elements for a index associated to a view. * [Change] Improved the diff between the complete database and a partial model representing it. * [Fix] Minor fix in AppearanceConfigWidget in order to set the font color correctly. * [Fix] Minor fix in the default file objects-style.conf * [Fix] Added the missing support for drop event triggers from database model. * [Fix] Fixed the drop cast command generation. * [Fix] Minor fix in windows deploy script to use newer PostgreSQL. * [Fix] Minor fix in template connections.conf file. * [Fix] Minor fix in config files related to installer generation (Linux). * [Fix] Minor fix in paste operation to restore the viewport position in design view. * [Fix] Minor fix in diff process to detect view's index changes. * [Fix] Fixed a bug in EventTrigger that was causing unknown exception to be thrown. * [Fix] Fixed a bug on RoleWidget that was preventing roles to be removed from "Members Of" tab. * [Fix] Minor fix in mouse cursor override operations. * [Fix] Fixed a bug when importing functions and composite types that somehow depend upon array types. * [Fix] Fixed a bug in function importing that was causing default values of parameters to be placed in the wrong position. v0.9.0-alpha1 ------ Release date: February 07, 2017
* [New] Added support for object moving via arrow keys in canvas area. * [New] Added support for easily create primary keys just by checking the desired columns in table's editing form. * [New] Added support for use middle button to handle panning mode. * [New] Added a more user friendly message at startup whenever a missing or corrupted configuration file is detected. The user is now presented to an option to restore default settings for the problematic file. * [New] Now any default file restored in ConfigurationForm has a backup saved into the directory 'backups' inside the configuration storage. * [New] Added support for hide the database explorer widget in SQL tool via splitter handler. * [New] Added a method to disable the custom context menu of the class NumberedTextEditor. * [New] Added support for object fading in ModelWidget. * [New] Added the support for persist the object opacity factor in config file. * [New] Added the method PgModelerUiNS::getIconPath() in order to retrieve icons from resource. * [New] Added support for column, constraint, trigger, rule and index duplication in TableWidget. * [New] Added support for item duplication in ObjectTableWidget. * [New] Added a loading cursor when the user opens the DataManipulationForm. * [New] The database explorer now creates the root item in the tree as the server itself which contains data related to this latter. * [New] Added the support for parenthesis in the middle of objects' names. * [Change] Improvements done in the SQL history at SQL execution widget. Now the command history is saved into a specific file and restored when the application starts. * [Change] Minor improvement in DataManipulationForm to show a wait cursor while filtering results. * [Change] Minor improvements in GeneralConfigWidget. Added an readonly input that exposes the path to the current user's configuration storage. * [Change] Improvements done in the object duplication feature. * [Change] Remove hardcoded icon paths in the code. * [Change] Improved the PgSQLTypeWidget to enable the length, precision, dimension fields as the user types the desired datatype. This will avoid jumping to the wrong field when pressing tab. * [Change] Updated the urls related to download and donation of the new site. * [Change] Changed the url to check for updates in GlobalAttributes to point to the new site. * [Change] Improvements done in the linux deploy script to use Qt 5.6.2. * [Change] Minor tweaks done in order to minimize the diff detection related to default values of columns. * [Change] Changed the default framework version used in the windows deployment script to 5.6.2. * [Change] Dropped the automatic LC_COLLATE and LC_CTYPE generation in Database object. Since this was causing more problems than helping when import the database and validating/exporting it. * [Change] In DataManipulationForm the filter input field is automatically focused when the filter toggle button is activated. * [Fix] Fixed a bug when using diff to create columns and update constraints. * [Fix] Fixed a bug that was duplicating the action "New" in the main window's side bar. * [Fix] Fixed a problem when importing database that contains citext extension installed in pg_catalog. * [Fix] Minor fix in ConnectionsConfigWidget that was causing duplicated connections to share de same host info wrongly. * [Fix] Restored the input data type handling in AggregateWidget. * [Fix] Fixed the oldsample.dbm model. * [Fix] Fixed a crash when restoring objects' metadata from backup file. * [Fix] Fixed a bug that was preventing inheritance relationships to be created when the same pair of tables existed in different schemas. * [Fix] Fixed a bug that was causing column name patterns to be used wrongly in many-to-many relationships. * [Fix] Fixed a bug that was preventing the automatic closing of tabs related to a dropped database in manage view. * [Fix] Fixed a bug that was causing the duplication of permissions during the database import which was leading to the complete failure of the entire process. * [Fix] Fixed the problem with invalid type error when trying to edit a 'timestamp with timezone' column. * [Fix] Fixed a bug in Relationship that was not setting NOT NULL flag for columns of the multi-valued primary key of many-to-many relationships causing the diff process to fail in some specific cases. * [Fix] Fixed a regression in RelationshipWidget that was not showing advanced object's form. * [Fix] Fixed the constraint codes display in TableObjectView. Now self relationships do not mark the primary key field as foreign keys. * [Fix] Fixed a regression that was not properly disabling the apply button in editing forms when the handled object was protected somehow. * [Fix] Minor typos fixes in some widgets. v0.9.0-alpha ------ Release date: October 18, 2016
* [New] Enabling pgModeler to connect to PostgreSQL 9.6 servers. * [New] Added the option to ignore error codes during the export process in CLI. * [New] Added the ability to ignore extra errors by their codes in ModelExportForm and ModelDatabaseDiffForm. * [New] Added the ability to load data from CSV file into TableDataWidget and DataManipulationForm. * [Change] Minor update in snippets.conf by adding a SELECT * command. * [Change] Removed deprecated exception ERR_ASG_ZERO_LENGTH. * [Change] Improvements done in CodeCompletionWidget so that the completion can be more accurate mainly when using the form [schema].[table]. * [Change] Methods responsible for dropping and exploring data were moved from SQLToolWidget to DatabaseExplorerWidget. * [Change] Improved the error output in DatabaseImportForm, ModelDatabaseDiffForm, ModelExportForm and Messagebox. * [Change] TableDataWidget widget now can have the column names changed freely not only when there are invalid ones. * [Change] Removed codename from AboutWidget. * [Fix] Fixed a bug in PgSQLType and PgSQLTypeWidget that was not properly setting length = 1 in character, varchar and numeric data types. * [Fix] Fixed a bug that was leading to stack overflow when generating object's sql plus its dependencies in huge models. * [Fix] Fix the structure of the sample model pagila.dbm. * [Fix] Minor fix in diff proccess in order to permit the comparison between a column added by relatinship and other that is not but share the same name. * [Fix] Fixed a bug that could cause crashes when editing connections in DatabaseImportForm or ModelDatabaseDiffForm. * [Fix] Fixed a crash when the user modified a connection on the fly with the SQL tool activated and trying to resume his work in database management. * [Fix] Fixed the tab order in ConnectionsConfigWidget. * [Fix] Fixed a bug in ModelDatabaseDiffForm that was running the export thread several times. * [Fix] Fix the generation of truncate commands in the diff when the types of columns are incompatible. * [Fix] Fixed a bug that was generating broken sql for tables when these objects have no constraints. * [Fix] Fixed a bug in diff that was not detecting column types length changes. v0.8.2 ------ Codename: Faithful Elephant
Release date: June 3, 2016
* [New] Created the PlainTextItemDelegate replacing the ReadOnlyItemDelegate where needed. * [New] Added the ability to the table to create insert commands from the initial data buffer. * [New] Added the support for interpret initial-data tag in DatabaseModel::createTable. * [New] Create the attribute initial-data for Table in order to store the initial set of values in a CSV-like buffer. * [New] Created the form to handle table's initial data. * [New] Added the ability to duplicate rows in DataManipulationForm. * [New] Added shortcuts to tabs in TableWidget. * [New] Added the ability to clear and copy text from history to the sql command input field using middle mouse button in SQL tool. * [New] Added the ability to set the default connection for operations import, export, diff and validation in ConnectionsConfigWidget. * [New] Added the usage of default connections in ModelValidationWidget. * [New] Added support for save/load default connections in the ConnectionsConfigWidget. * [New] Added attributes to the Connection class in order to control wheter the connection is the default for export, import, diff or validation operations. * [New] Added the ability to save the current grid options to the pgmodeler.conf file. * [New] Added a reference the svg library to the deployment scripts. * [New] Added support for export model to SVG file in UI and CLI. * [New] Added the support for change case and identation of the selected text in NumberedTextEditor using context menu or shortcuts. * [New] Added a method PgModelerUiNS::createOutputListItem which created list items with an icon and text. * [New] Connections now can have a timeout between command executions. When this timeout exceeds the next command is not executed. This is a workaround to avoid the crash of the program due to connections being (unexpectedly or not) closed by the server. * [New] Added the ability to show connections notice/warning in SQL tool. * [New] Added an step during the connections.conf loading to fix the connection timeout attribute automatically. * [Change] The class ReadOnlyItemDelegate was removed due to the introduction of PlainTextItemDelegate. * [Change] Minor adjustments in queries generated in DataManipulationForm in order to use PostgreSQL like escaping E'' permitting user to use special chars in the middle of values. * [Change] Simple quotes (') in DataManipulationForm and TableDataWidget will be automatically replaced by double quotes ('') in order to avoid broken commands. * [Change] Updated all translation dicts with new terms to be translated by their mainterners. * [Change] Changes in demo version enabling a limited usage of diff and import features. * [Change] Improved the way QTableWidgets instances are emptied. * [Change] Improvements done in order to correctly enable the column/row control buttons in DataManipulationForm according to the selected items. * [Change] Improved the duplication/delete operation in DataManipulationForm. These operations will happen only if the user selects the entire row. * [Change] Renamed the method DataManipulationForm::insertRow to addRow. * [Change] Changed the icons for Add, Delete rows in DataManipulationForm. * [Change] Improved the metadata handling form. Now the user just need to choose from which model to extract the metadata and the form will do the rest (extract and apply) in one step. * [Change] Minor improvement in ModelsDiffHelper in order to avoid the generation of useless SQL code (SET statments) when no effective changes were found in the process. * [Change] Minor improvement in ObjectSelectorWidget to change the object selection dialog title according to the handled object type. * [Change] Minor improvement in ObjectSelectorWidget to adjust the size of input according to the installed syntax highlighter. * [Change] Renamed the method Connection::setCommandExecTimeout to setSQLExecutionTimout. * [Change] Minor improvements in SQLExecutionWidget to use the command execution timeout. * [Change] Improvements on SQLExecutionWidget to enable the connection stay open in order to permit the usage of commands START TRANSATION, COMMIT and ROLLBACK. * [Change] Changed the icon for info message boxes. * [Fix] Minor typos fixed in UI components. * [Fix] Fix a bug in the Catalog class that was generating broken catalog queries for PostgreSQL releases under 9.3. * [Fix] Fixed a bug in DataManipulationForm that was not quoting columns in the generated UPDATE commands. * [Fix] Fixed some tooltips and shortcuts. * [Fix] Fixed a bug in import process related to permission creation. Now pgModeler removes extra backslash from role's name to avoid it not to be found in the model. * [Fix] Fixed the doxygen 'brief' instructions in code documentation. * [Fix] Fixed a bug that was generating broken table's SQL when the object has one or more inherited column. * [Fix] Fix on the history text copy. Added the correct mouse button (middle) that triggers the copy from the history to the sql input field. * [Fix] Escaping properly columns' comments. * [Fix] Minor fix in RelationshipWidget input fields related to receiver and reference tables. * [Fix] Minor fixes in QPlainTextEdit instances where the SyntaxHighlighter class is used to adjust the height of the field according to the font size. * [Fix] Minor fix in NumberedTextEditor::showContextMenu to use the cursor's postion only when the menu is executed. * [Fix] Fixed the way instances of ResultSet are copied. v0.8.2-beta1 ------ Codename: Faithful Elephant
Release date: March 31, 2016
* [New] Added missing PostGiS types. * [New] Adding the ability to save/load more metadata from objects like model's last zoom and position, protection status, sql disabled status, tags, textboxes and others. * [New] Created the method BaseGraphicObject::isGraphicObject. * [New] Added the ability to show the object's source in the SQL tool. * [New] Added missing encodings descriptors KOI8 and KOI8R. * [New] Added the method PgSQLType::isPolymorphicType that indicates if the type is one of the any*. * [New] Added a new method PgSQLType::canCastTo() that indicates if a type can be casted to another. * [New] pgModeler now stores and restore the state of attributes grid and source pane in SQLTool. * [New] Added the ability to load dummy items contents by clicking them in DatabaseExplorerWidget. * [New] DatabaseExplorerWidget now loads the small set of object in order to improve performance. The user have the ability to load the full database by using the refresh button actions. * [New] Added the ability to retrieve children objects of schemas or tables on demand (as their items are expanded) improving the performance. * [New] Created an specific icon for refresh database tree. * [New] Added a version of the method DatabaseImportHelper::getObjects that accepts a list of types and returns a list of attributes. * [New] Added an new version of Catalog::getObjectNames that retrieve the names according to a list of object types. * [New] Created a second version of PgModelerUiNS::configureWidgetFont that accepts a custom factor value. * [New] Adding the ability to BaseForm to use a ScrollArea when the size of the widget exceeds the 2/3 of the user's screen. * [New] Created template methods to show editing forms according to the kind of database object in ModelWidget. * [New] Created a signal BaseObjectWidget::s_closeRequested to tell the parent form close after successfuly edit an object. * [New] Created template methods in RelationshipWidget and ViewWidget to handle child object manipulation. * [New] Created a template method TableWidget::openEditingForm to handle the editing form for children objects. * [New] Added support for placeholder objects when moving graphical objects improving performance mainly when moving tables and relationships avoiding excessive update operations. * [New] Added an option to protect schema's children when protecting the schema itself. * [New] Added the abitily to diff partial models without drop the not imported ones from the original database. * [Change] CentralWidget renamed to WelcomeWidget. * [Change] Adjusted the build in Windows to use qt 5.5.1 and PostgreSQL 9.5. * [Change] Changed the help action from Wiki to Support and pointing it to GitHub's issues page. * [Change] Minor tweak in GeneralConfigWidget to permit current line to be highlighted even if the text preview field is readonly. * [Change] NumberedTextEditor will not highlight the current line if it is readonly. * [Change] Since label's dtd was moved to its own file the dtd for relationship now includes it. * [Change] Sorting spatial types in PgSQLTypeWidget. * [Change] Minor adjustments in central frame of the dialogs modelfixform.ui and modelrestorationform.ui. * [Change] Replaced the taskprogress widget usage from undo/redo operations by a simple busy cursor. * [Change] Removing duplicated alignment descriptors in generated warning frames at BaseObjectWidget. * [Change] Minor improvements in DatabaseExplorerWidget. Now each operation that take some time the cursor will be changed to a "wait" icon. * [Change] Minor improvements in table SQL generation. Inherited columns will be included in the table's code but in commented lines. * [Change] Minor fix in catalog query for operators. Unary operators will come with NONE key work in the side that the type is missing. * [Change] Minor update in sql-highlight.conf. * [Change] DatabaseImportForm::updateObjectsTree now removes 'without time zone' type modifier from parameters. * [Change] Minor adjustments on table headers in objectdepsrefswidget.ui. * [Change] Improvement on DatabaseImportForm::listObjects method. Now user can opt in load the full database or load only the cluster level ones and creating dummy items as children of these ones. * [Change] Minor size adjustments in AboutWidget. * [Change] Added a default title for ConnectionsConfigWidget. * [Change] Removed the static text 'pgModeler - ' from message box title. * [Change] Changed the default Qt version to 5.5.1 in linuxdeploy.sh. * [Change] Minimum size adjustments for toolbuttons and icons in DataManipulationForm, ModelValidationWidget and SQLExecutionWidget. * [Change] Minor improvement on DatabaseModel::getCreationOrder in order to include generated relationship constraints instead of the relationship themselves (useful in diff process) * [Change] Removed the forced frame shape for BaseForm central widget (Windows only). * [Change] Several size adjustments in all editing forms and dialogs. * [Change] Forcing the usage of Fusion style if the user does not provide a custom style. * [Change] Refactored the usage of SwapObjectsIdsWidget instance in ModelValidationWidget. The aggregate BaseForm instance in SwapObjectsIdsWidget was removed and locally created in ModelValidationWidget. * [Change] Removed the default window title from database objects widgets. * [Change] Decoupled the BaseForm instance from all BaseObjectWidget and their subclasses. Now editing forms are constructed in ModelWidget::showObjectForm. * [Change] Changed the attribute that controls connection timeout in connections.conf from 'connect_timout' to 'connection-timeout'. * [Change] Minor adjustment on connection configuration dialog size. * [Change] Remove the maximum size restrictions from all editing forms in order to better adapt the user's font settings. * [Change] Minor adjustments on bottom margins at mainwindow.ui. * [Change] Adjustments on warning and hint messages in editing forms. * [Change] Changed the size constraints for tool buttons. * [Change] Done modifications in order to avoid the usage of fixed font size and fixed colors in some widgets. * [Change] The option to control render smoothness in canvas now does not requires application restart. * [Change] Improved the CLI fix mode when dealing with broken operator classes, index and exclude constraints. * [Change] Improving the presentation of operator classes and families. Now the index access mode comes attached to their names in tree views. * [Change] Added a message to export progress when an object is renamed due to the option 'use temp. and uniq. names'. * [Change] Moved the "save model" button from "Report" tab to "Database model" tab in CrashHandlerForm. * [Change] Forcing the tree item update in model objects widget when activating some of actions in the popup menu. * [Change] Added colon character (:) as a valid one to appear in the middle of object's names. * [Fix] Added missing dtd file label.dtd. * [Fix] Fixed the label for inheritance relationship action in ModelWidget. * [Fix] Fixed the object schema file for metadata generation. * [Fix] Fixing the splash screen display in MacOSX. * [Fix] Fixed the tooltip of toggle buttons in SQLTool. * [Fix] Minor fix when generating the database source code for visualization in SQLTool. * [Fix] Fixed a bug in import process that was not properly creating dependency objects when auto resolve deps was checked. * [Fix] Fixed the fonts of hint boxes in datamanipulationform.ui. * [Fix] Fixed the conversion catalog query and import process. * [Fix] Fixed the aggregate validations related to assigned functions in order to permit the import of system aggregates. * [Fix] Minor fix in catalog query for triggers. * [Fix] Fixed the import of triggers, index, rules to automatically create their parent table if they are not yet created (when using auto resolve deps). * [Fix] Fixed the reference to "any" type. * [Fix] Fixed the attribute used as function for casts in DatabaseImportHelper::createCast. * [Fix] Additional fixes to cast code generation. * [Fix] Minor fix in the cast SQL schema file. * [Fix] Fixed the OID filtering in DatabaseExplorerWidget. * [Fix] Fixed the code display in SourceCodeWidget. * [Fix] Fixed the drop command generation for extension objects. * [Fix] Fixed a bug that was not updating relationships when importing objects to the current database model. * [Fix] Fixed the deployment script linuxdeploy.sh making it to copy additional Qt libs. * [Fix] Fixed the path to Qt installer framework in linuxdeploy.sh. * [Fix] Additional fix in linuxdeploy.sh to retreive the current compiled version. * [Fix] Fixed a bug when initializing PgSQLType instances when the provided type name is a user defined one. Random precision/dimension is not created anymore. * [Fix] Changed the font factor used by WelcomeWidget buttons. * [Fix] Minor fix in deployment script (Mac OSX). * [Fix] Fixed the object search when using exact match option. * [Fix] Fixed a bug that was not creating new columns in cases when the option to keep missing objects was set. * [Fix] Fixed the diff process that was not processing 1-1 or 1-n relationships correctly. * [Fix] Minor fix in ConnectionsConfigWidget setting up the correct buttons of the parent form in method openConnectionsConfiguration. * [Fix] Minor fix on message box default size of buttons. * [Fix] Fixed some signal connection warnings in BaseForm. * [Fix] Disabling the apply button correctly when the object is protected. * [Fix] Fixed a bug when pressing ESC key in the middle of object's movement that was canceling it. * [Fix] Fixed a bug when selecting a protected object using right button. The parent object is not selected incorrectly anymore. * [Fix] Fixed a bug when importing operator classes that was generating incorrect XML code for this kind of object prior the creation in the output model. * [Fix] Additional fix in SchemaParser::convertCharsToXMLEntities to correctly replace char in operator's names. * [Fix] Fixed the sample files to use the new way to reference opertor classes and families. * [Fix] Additional fix for code generation of operator classes. * [Fix] Fixed the loading of index, exclude constraint and operator classes when referencing some operator class or family. * [Fix] Fixed the code generation for operator classes to use 'signature' attribute. * [Fix] Fix a bug in the method SchemaParser::convertCharsToXMLEntities that was not replacing char by entities in certain cases. * [Fix] Minor fix in SourceCodeWidget to correctly show the progress dialog in the right position on screen. * [Fix] Added a validation in enum types avoiding user to include enum ids with invalid chars. * [Fix] Added a validation when creating operator classes that references an operator family by the name instead of signature. * [Fix] Minor fix in operator class form to install syntax highlighter in the operator family selector. * [Fix] Improved the method DatabaseImportHelper::getObjectName in such way to be able to return the operator families signatures. * [Fix] Fixed operator class code generation to use operator family's signature instead of name. * [Fix] Fixed the code generation for Operator family. Reduced form code (XML) is generated with "signature" attribute instead of "name" * [Fix] Fixed the object search in DatabaseModel. Now duplicated operator families are accepted, the desambiguation term will be the indexing mode. * [Fix] Fixed the creation of operator classes. Now operator families are referenced by their signature not the name. * [Fix] Fixed a bug when importing functions with unamed parameters. * [Fix] Minor typos fixes in PgSQLType source. * [Fix] Fixed some leaks and crashes when canceling the creation of new tables, views or relationship from their editing forms and closing the application. * [Fix] Fixed a bug related to quoted name validation that was wrongly raising errors related to long names. The validation of name size now discards the quotes from the count. v0.8.2-beta ------ Codename: Faithful Elephant
Release date: January 12, 2016
* [New] Added version descriptor for PostgreSQL 9.5 enabling pgModeler to connect to it. * [New] Added access method BRIN for indexes, operator classes and operator families as an initial support for PostgreSQL 9.5. * [New] Added event "table_rewrite" for event triggers as an initial support for PostgreSQL 9.5. * [New] Added "Diff" action to File menu. * [Change] Minor improvement in DataManipulationForm adding the shortcut of "Copy selection" button to its tooltip. * [Change] Improvements on DataManipulationForm on how pk columns are handled and used in the generated DML commands for UPDATE and DELETE. * [Change] Minor improvement on ModelRestorationForm when listing temp models. * [Change] Changed the hint text for "Disable render smoothness" option. * [Change] Changed the hint text for "Validate before save, export and diff". * [Change] Minor improvements on SQLExecutionWidget and DataManipulationForm to scroll items in the results grid by pixel not per item. * [Fix] Fixed a bug in operations that convert integer to serial and vice-versa. * [Fix] Fixed some header items text alignment. * [Fix] Fixed a crash when loading a broken model. Instead of show the error message related to corrupted file pgModeler was being aborted. * [Fix] Minor fix in hint text in SourceCodeWidget and ModelDatabaseDiffForm. * [Fix] Fixed shortcut conflicts in MainWindow. v0.8.2-alpha1 ------ Codename: Faithful Elephant
Release date: November 13, 2015
* [New] Added an additional step in import process to validate inheritance relationships to avoid incomplete tables. * [New] Added an additional relationship validation in model loading process when there are inheritances. This will avoid incomplete columns and validation errors related to "permanent invalidation state". * [New] Created an exclusive exception code when a parent table is not found in the imported set. This error is raised during inheritances creation. * [New] Added the signal s_connectionsUpdateRequest in DatabaseImportForm, ModelExportForm, ModelDatabaseDiffForm, ModelValidationWidget and SQLToolWidget in order to inform the main window that user has changed connections in those forms. * [New] Added the ability to configure connections without using the main configuration form. Now the user is able to do this task by using the "edit connections" option in any combo related to connections. * [Change] Minor adjustments in diff process messages. * [Change] Minor adjustments on ModelValidationWidget, ObjectFinderWidget and SQLExecutionWidget resize event to change the shape of toolbuttons in order to avoid truncate texts when the window size is too small. * [Change] Replaced the explicit hint texts from ModelValidationWidget by HintText instances. * [Change] Minor adjustment on widgets that are used to set connections. * [Fix] Fixed the way objects are destroyed when a model is closed diminishing the time consumed by that operation and the chances of crashes after their destruction. * [Fix] Additional fix in database import feature. Inheritances will be automatically created when "auto resolve dependencies" is checked. * [Fix] Fixed a crash when importing a database that contains big tables that handles multiple inheritances. * [Fix] Fixed a crash in Windows version. A missing initialization in OperatorClassElement was leading to segmentation fault. * [Fix] Fixed a bug in table and view editing form that was permitting to confugure permissions to new objects before create them in the model. * [Fix] Fixed a problem in UpdateNotifierWidget when the server returns http status code 302. v0.8.2-alpha ------ Codename: Faithful Elephant
Release date: October 05, 2015
* [New] Added a toggle button in SQL Execution to show/hide the output pane. * [New] Added the method Permission::isSimilarTo that returns true when a provided permission has the same semantics as the caller permission. * [New] Added missing keywords CASE, ELSE, QUERY, ELSIF, RAISE, EXCEPTION, TG_OP to sql-highlight.conf * [New] Columns that compose primary key and unique key are exposed as children of the constraint in the object tree at DatabaseExplorerWidget. * [New] Foreign key objects selected in DatabaseExplorerWidget now expose, in two children items, the source and referenced tables/columns. * [New] Added a confirmation message in DataManipulationForm to avoid lose uncommited changes before retrieve data. * [New] NumberedTextEditor now is able to set a custom tab width. * [New] Added a configuration option for custom tab width in GeneralConfigWidget. * [New] Added a nl_NL (Dutch - Netherlands) UI translation. * [New] Created a mechanism to make default values of columns in the form nextval(sequence) be transformed in a link between the sequence and the column in the import process. This will diminish the divergences raised by the diff process. * [New] Added a readonly item delegate for attributes grid to permit user to copy contents or navigate through values using keyboard. * [Change] Changed the initial data limit in DataManipulationForm from 100 to 1000. * [Change] Removed the default protected status of public schema in sample models. * [Change] The system schema public now can be protected/unprotected as well moved through the canvas area. * [Change] Changed the method DatabaseModel::getPermissionIndex to search permissions looking into their contents and not only by their internal references. * [Change] Improvements on diff process to avoid include already existent permissions. * [Change] Improvement in diff process to avoid generate code for an unmodifiable object when its code doesn't differs from the same object in database. * [Change] Added an option to DatabaseImportHelper to avoid the fk relationship updates. This will reduce the time to perform the import step in diff process. * [Change] The diff is now capable to detect differences in functions source code and recreate them. * [Change] Minor enhacement in DataManipulationForm to show the query time when retrieving data. * [Change] Minor adjustments on tooltips of buttons in SQLToolWidget and DatabaseExplorerWidget. * [Change] Minor size adjustment in ColumnWidget. * [Change] Minor improvement on SyntaxHighlighter to optionally use the same tab size as NumberedTextEditor. * [Change] Minor improvement on BaseObjectWidget to avoid install event filter in QPlainTextEdit and NumberedTextEditor. * [Change] Replaced the QPlainTextEdit instance for source code input in FunctionWidget by a NumberedTextEditor instance. * [Change] Minor message adjustments on SQLExecutionWidget. * [Change] Minor adjustment on relationship invalidation message in ModelValidationWidget. * [Change] Removed unused code from ModelValidationHelper. * [Change] If a 1:1 or 1:n relationship is removed from the model the receiver table will have its fk relationships updated. This is useful to recreate fk relationships that were replaced by the removed relationship. * [Change] Minor forms adjustments to resize command buttons depending on the size of texts. * [Change] More improvements in the diff process when dealing with foreign keys creation. * [Change] Changed the characters used to specify function call or any unescaped values in DataManipulationForm from <> to {} * [Change] When using snippets in the SQL execution field the current code will not be cleaned up, instead the snippet will be appended to the current code. * [Change] Removed the automatic view switching when saving the model. * [Change] Minor adjustment on buttons positions at NewObjectOverlay. * [Change] Minor message update in MainWindow::saveModel. * [Change] pgModeler now indicates the name of unsaved models before quit. * [Fix] Fixed a regression in trigger drop action in DatabaseExplorerWidget. * [Fix] Fixed a severe bug that was not configuring the connection correctly when adding a new SQL input field from the current browsed database in SQL tool. The bug could cause user to manage a different database other than the one desired. * [Fix] Fixed the "Find" button tooltip in SQLExecutionWidget * [Fix] Minor fix when showing system objects in ModelObjectsWidget. * [Fix] Fixed the view's SQL generation trimming the SQL that defines it to avoid differences between the model's view and the one generated after export. This will cause less divergences in when diff'ing the model and database. * [Fix] Minor fixes in the *::getAlterDefinition() methods do avoid crashes due to null objects handling. * [Fix] Fixed a crash when generating SQL code for recursive views. * [Fix] Minor fix to correclty show the temporary models save progress at the bottom of main window. * [Fix] Minor fixes in the validation process to force graphical objects updates and object's tree updates to reflect the new ids. * [Fix] Minor fixes in the object naming. Now pgModeler will accept dollar signs in any portion of the string or even numbers as object's name but this will automatically quote the name to avoid errors. * [Fix] Fixed the generation of DROP commands for triggers and rules. * [Fix] Fixed a bug in Index and IndexWidget that was permiting btree index elements to have sorting attributes which is not valid according to PostgreSQL rules. * [Fix] Fixed a bug in CodeCompletionWidget that was not retrieving objects with quoted names. * [Fix] Minor fix in DataManipulationForm to clear the changed rows list after save the modifications. * [Fix] Fixing the tab index in generalconfigwidget.ui. * [Fix] Added a workaround to avoid crashes and leaks related to relationship disconnection and validation. * [Fix] Minor fix in ModelsDiffHelper to avoid diff generation errors related to the missing 'fk-defs' attribute. * [Fix] Fixed a crash when trying to create a new foreign key after connect two tables using a 1:1 or 1:n relationship. * [Fix] Translated the pt_BR (Brazilian Portuguese) word found in the code. * [Fix] Minor fix in BaseObject to permit the usage of swapObjectsIds method from ModelWidget class. * [Fix] Fixed a bug that was duplicating some foreign key creation code in diff process. * [Fix] Fixed a bug in the diff process that was dropping columns linked to sequences when these ones were dropped. * [Fix] Fixed a bug when disabling table's SQL code from model widget. The FK constraints are now enabled/disabled correctly. * [Fix] Fixed a bug in import process that was wrongly prepending schema's name in types related to tables. * [Fix] Minor fixes in doxygen.conf. * [Fix] Fixed the feature to convert to sequence a serial column in order to diminsh breaking references between the column's parent table and the newly created sequence. * [Fix] Spelling fixes in es_ES (Spanish) UI translation. * [Fix] Fixed a bug that was not setting up the object's schema correctly when creating new table or view inside a selected schema. * [Fix] Fixed a bug in DatabaseModel::storeSpecialObjectsXML that was causing crashes when closing a model. * [Fix] Fixed the model loading from recent list in order to expose the "fix model" message box in case of errors. * [Fix] Minor adjustment on the generated diff code to include foreign keys definitions at the end of the script. * [Fix] Minor adjustment on ui-style.conf to minimize the problems with dark themes. * [Fix] Fixed a problem with validation that was trying to validate foreign keys without need. * [Fix] Fix a bug that was preventing "deferrable" attribute for constraint triggers to be used in SQL definition. v0.8.1 ------ Codename: Faithful Elephant
Release date: July 30, 2015
* [New] Added the ability to create objects from within the object selectors to shorten up the time spent to create a new objects in the model. The only exception of for selectors in SwapObjectsIdsWidget and table/column selectors in ViewWidget. * [New] Added a new method OperationList::isObjectRegistered to check if an object is registered in the list. * [New] Created a test class for SyntaxHighlighter. * [Change] Code optmizations done in SyntaxHighlighter removing duplicated or unused code. * [Change] Minor adjustments on splitters at DatabaseExplorerWidget and SQLExecutionWidget. * [Change] Changed the way the s_objectAdded signal is captured in ModelObjectsWidget::selectObject in order to work properly in Windows. * [Change] Removed unnecessary message box in BaseObjectWidget. * [Change] Changed the connection mode of the procedures to clear the operation list when a fix is applied in the model by the validation. * [Change] More improvements related to the operation list management when editing/creating objects through forms. * [Change] Improvements on BaseObjectWidget when canceling the creation/edition of objects and there are chained operations in the operations list. * [Change] Additional improvements on TableWidget removing unneeded connection to signals. * [Change] Improvement in TableWidget to register a new table in the operaions list after the user create a dependency object (schema, tag, role, etc) to avoid undo/redo errors. * [Change] Additional improvements on ObjectSelectorWidget and ModelObjectsWidget to automatically set focus on the created object. * [Change] Enhanced the generated view code. Now it should be more readable. * [Fix] Fixed a bug related to unlogged tables exporting. * [Fix] Fixed a small bug in SyntaxHighlighter that was not highlighting properly new lines and text after multline comments. * [Fix] Fixed a bug that was preventing comments to be properly quoted (issue #710) * [Fix] Fixed the SyntaxHighlighter constructor call throught the classes. * [Fix] Minor fixes on xml-highlight.conf * [Fix] Minor fix in the import process to remove quotes from enum type attributes to avoid erroneous modification of attributes when diff a model and database. * [Fix] Fixed the disabled close button on editing forms (Windows only) * [Fix] Fixed a bug in the object selector that was preventing the selector dialog to be shown when user click in the input field. * [Fix] Fixed a regression in method DatabaseModel::getObject(QString,ObjectType) when dealing with operator class or family. * [Fix] Fixed the configuration of Quick menu for relationship added objects. The disable/enable sql action is not visible anymore. * [Fix] Fixed possible memory leaks when creating new objects through editing forms. * [Fix] Fixed a bug on the object name validation that was permitting user to specify object names containing only numbers. * [Fix] Fixed a bug when generating ENUM types without enum attributes. * [Fix] Fixed the generation of DROP command for trigger and rules. * [Fix] Fixed a crash when closing the model. This crash was related to removing permissions from special objects and right after destroy the remaining permisisons. * [Fix] Fixed the method Permission::getSignature to avoid generating the same signature for different objects (permissions must be unique). v0.8.1-beta1 ------ Codename: Faithful Elephant
Release date: June 30, 2015
* [New] Objects can be now renamed in database explorer except for databases and casts. * [New] Added an initial Spanish (es_ES) UI translation (review needed). * [Change] Dropped the startapp script in Mac OSX. All executables now are able to run without explicitly use that script. * [Fix] Fixed the snippet related to object renaming in snippets.conf. * [Fix] Fixed a small bug in schema parser that was ignoring the usage of '$oc' metacharacter in some cases. * [Fix] Fixed shortcut for delete command in data manipulation form. * [Fix] Fixed the deployment script on Mac OSX to make the CLI and crash handler find the core libraries properly. * [Fix] Fixed a bug that was generating ALTER ROLE commands without the semicolon. v0.8.1-beta ------ Codename: Faithful Elephant
Release date: June 04, 2015
* [New] Added the ability to handle databases in different connections at once without the need to disconnect from a server and connect to another. * [New] Added an option to preserve database name (do not rename) in diff process. * [New] Added a numbered code editor in ModelDatabaseDiffForm. * [New] Created a basic structure to start building unit tests based upon Qtest for new features and fixes. * [New] Added an automatic quotation mechanism for PostgreSQL's reserved keywords when they are begin used as object's name. * [New] Created the function createNumberedTextEditor in PgModelerUiNS to be used as a factory of NumberedTextEdit instances. * [New] Added a font preview widget in GeneralConfigWidget. * [New] Added the ability to configure line numbers font/bg colors and highligt color in GeneralConfigWidget. * [New] Created a class ReadOnlyItemDelegate to avoid the edition of items in data grid / tree widgtes. * [New] Added a donate widget in MainWindow. * [New] Created a new class NumberedTextEdit which goal is to display source code with line numbering and highlight color. * [New] Created a html based delegate item in order to render tree items with html format. * [New] Added a fallback value for environment values not set during startup. * [Change] Minor improvement on ConnectionsConfigWidget when user left a connection open for editing and don't save it. The software will ask for save the connection. * [Change] Improvements done to DataManipulationForm in order to avoid let connections open leading to application crash when the connection timeout is reached. * [Change] Added a new constructor to Connection class that accepts a map of connection params. * [Change] Removed the installation of PGMODELER_TMP_DIR environment variable in installer. * [Change] Removed the usage of TEMPDIR variable in pgmodeler.pri * [Change] Moved the code to create temp dir to Application class. * [Change] Temporary folder now is isolated in pgModeler's configuration dir at user's home (platform specific) to avoid a user to see temp files from another. * [Change] Removed the "stay on top" behavior on ModelOverviewWidget to avoid the blocking of application dialogs is some systems. * [Change] Minor improvement on DataManipulationForm when creating the window title based upon the connected database. * [Change] Disabled the cascade drop for roles and tablespaces (not supported) in DatabaseExplorerWidget. * [Change] Minor improvement on SQLToolWidget to remove the excessive usage of buttons to connect and browse databases. * [Change] Removed the "connect" button from ModelDatabaseDiffForm. Now the databases are listed when the connection is selected in combo. * [Change] Removed the "connect" button from DatabaseImportForm. Now when selecting a connection the databases will be listed. * [Change] Minor improvement on DataManipulationForm to load the first 100 rows of the current table each time the index of combobox changes. * [Change] Moved the database drop button from SQLToolWidget to DatabaseExplorerWidget. Now each instance of the latter class emits a signal to SQLToolWidget to perform the db drop. * [Change] Removed the mothod ModelsDiffHelper::setDiffOptions and create setDiffOption and a set of OPT_xxx constants to access the diff options. * [Change] Minor improvement on SQLToolWidget to force focus of the current SQLExecutionWidget instance. * [Change] Replaced the QPlainTextEdit instance in SnippetsConfigWidget by NumberedTextEditor. * [Change] Added instances of NumberedTextEditor to CustomSQLWidget to be used as appended/prepended code input. * [Change] Changed the default font size of source code editors to 10pt. * [Change] Minor size adjustments on aboutwidget.ui and donatewidget.ui * [Change] Improved the windeploy.sh to build binaries in x86 and x64 at once. * [Change] Minor improvement on linuxdeploy.sh to build demo and full versions at once. * [Change] Avoiding the copy of ui-style.conf during startup. * [Change] Attributes and general functions in namespaces are now declared as extern in .h and defined in .cpp to force them to be initialized once. * [Fix] Minor fix on windeploy.sh when building all releases at once. * [Fix] Fixed the demo version build error. * [Fix] Fix a crash when recreating Views that have child objects (rules or triggers) in DatabaseModel::storeSpecialObjectsXML. * [Fix] Fixed a typo when displaying column default values as nextval(seqname). * [Fix] Fixed a bug on DatabaseExplorerWidget that was selecting the wrong database when opening the data grid. * [Fix] Fix a bug on DataManipulationForm that was preventing user to delete rows in tables with no primary key. * [Fix] Minor signal message correction in DatabaseImportHelper. * [Fix] Minor hint text correction in ModelDatabaseDiffForm. * [Fix] Fix a bug on diff process that was not detecting precision/length changes in column types. * [Fix] Fixed a bug in CLI that was not considering the PWD when dealing with input/output files. * [Fix] Fix a crash in PgModelerCLI when exporting model to PNG. * [Fix] Minor fix in SyntaxHighlighter to apply font changes in live objects instead of only apply font changes in new objects (requires the use of rehighlight()) * [Fix] Fixed a bug on SyntaxHighlighter that was rehighlighting endlessly a document leading to application crash. * [Fix] Minor adjust on pgmodeler executable to find libs at runtime (Mac OSX). * [Fix] Fixed a crash when creating a new table containing a new index. * [Fix] Fixed a bug that was permitting to set precision/scale to a user-defined type. * [Fix] Minor fix on catalog query that retrieve types. Now types derivated from materialized views are not listed. * [Fix] More fixes related to inherited columns and check constraints. Now diff infos containing modification for these kind of objects are discarded. * [Fix] Fixed the import of inherited check constraints. * [Fix] Minor fixes on DatabaseImportForm, ModelDatabaseDiffForm, ModelValidationWidget to use the html item delegate. * [Fix] Minor fix on model export and validation progress. v0.8.1-alpha1 ------ Codename: Faithful Elephant
Release date: April 20, 2015
* [New] Added the ability to import objects from an existent database to a currently working model. * [New] Improvements on DatabaseImportHelper to dump the objects attributes in debug mode or to the log file when "ignore errors" is checked. * [New] Added a fix step in CLI to fix functions signatures that includes OUT parameters. * [Change] Minor adjustment on model validation progress and output. * [Change] Minor adjust on model export progress on CLI. * [Change] Minor improvements on objects validation process when dealing with broken relationship config as well with FKs referencing a column created before it. * [Change] Minor improvement on object selector widget to show the constraint name correctly. * [Change] Change in user's configuration copy process. Now only configuration files are copied, folders are not copied anymore. * [Change] The CLI now references template configuration files instead of user's when configuring file association. * [Change] The settings related widgets now references template configuration files in order to load defaults or save settings. * [Change] Improved the way threads are handled in ModelDatabaseDiffForm. * [Change] Changed the way thread is used in ModelValidationWidget. Now it'll be created in each time the "Validate" button is clicked. * [Change] Removed unused actions in MainWindow. * [Change] Removed sleepThread method from ModelExportHelper, ModelValidationHelper and DatabaseImportHelper. * [Change] Disabled the tabChangeFocus property of sql input field in SQLExecutionWidget. * [Change] Minor adjust on tag objects positioning. * [Change] Fixed the generation of function's signature in Function. Now OUT parameters aren't included. * [Change] Fixed the generation of function's signature in DatabaseImportHelper. Parameters signaled with 't' in their modes aren't included. * [Change] Restored the old behavior of Connection class to append only error code as extra info in exceptions to avoid break other features that need that code. * [Fix] Added a proper quotation to the command used to trigger the crash handler. * [Fix] Minor fix when displaying the row amount for the selected table on database explorer. * [Fix] Added a patch into swap id dialog when dealing with broken relationships. * [Fix] Minor fix on relationship line configuration when redrawing them during the relationship validation process. * [Fix] Minor fix when drawing views with extended attributes. * [Fix] Minor fix when enabling/disabling zoom buttons when the current zoom reaches the minimum or maximum values. * [Fix] Minor fix on thread operations on Windows system. * [Fix] Fixed the export to SQL and PNG in thread mode. * [Fix] Added missing breaking points in ModelsDiffHelper to help the thread to shutdown. * [Fix] Fixed the UI hang up when exporting a huge model by using BlockingQueueConnection in some slots to avoid thread consume all CPU resources. * [Fix] Fixed a endless loop in PgModelerUiNS::formatMessage. * [Fix] Minor fix in the generation of ALTER TABLE .. ADD COLUMN command. * [Fix] Fixed current tab index in AboutWidget. * [Fix] Minor fix on SwapObjectsIdsWidget to invalidate the database forcing the validation process. * [Fix] Fixed the operator name validation. * [Fix] Adding missing flag icons in AboutWidget. v0.8.1-alpha ------ Codename: Faithful Elephant
Release date: April 02, 2015
* [New] Added a "Contributors" section in "About pgModeler" dialog. * [New] Introduced the NO_UPDATE_CHECK variable in qmake to turn off update verification code specifically for package maintainers usage. * [New] Generated installers has the ability to install .dbm file association (Windows and Linux). * [New] Introduced a new env var PGMODELER_TMPL_CONF_DIR to override the template configuration location. * [New] The "plugins" folder is created automatically at startup if does not exits. * [New] Added the ability to show original SQL code, dependencies and children's code for test purposes in source code preview dialog. * [New] Added the method DatabaseModel::getCreationOrder(BaseObject *) that retrieves all objects needed to create a certain object. * [New] Added an action to save SQL code to file in source code preview dialog. * [New] Added an option to list indirect refereces to an object in ObjectDepsRefsWidget. * [Change] Minor adjust on Windows installer script. * [Change] Deployment scripts on all platforms now uses PostgreSQL 9.4 and Qt 5.4.1 by default. * [Change] Replaced float data types to double in libobjrenderer and libpgmodeler_ui classes to avoid lost of precision mainly when handling graphical objects. * [Change] File association procedures were moved to CLI. Now the user can install/remove file association by using '--dbm-mime-type' option (Windows and Linux). * [Change] Minor adjustments in PgModelerCLI menu. * [Change] Removed unused variables and commented code throughout the code. * [Change] The build process now uses libxml2 from PostgreSQL installation (Windows). * [Change] Minor adjustment on how the duplicated elements are removed from lists in the methods __getObjectDependencies(), __getObjectReferences(), findObject() in DatabaseModel class. * [Change] Removed uneeded "using namespace" statements. * [Change] Adjustment on start-pgmodeler.sh script to use pgmodeler.vars as source of needed environment variables (Linux). * [Change] Improvements on how objects are recreated using the "recreate unmodifiable" option on Diff process. * [Change] Enhanced the control of database explorer widgets and the SQL execution panes related to them. * [Change] Added a clear error message when required fields are not set when creating/updating object. * [Change] Installation folder/files arrangement reverted to previous settings in order to avoid "DLL entry point errors" errors (Windows). * [Change] Minor change in pgmodeler.pri to set default output paths according to FSH standard (Linux). * [Fix] Minor fixes and adjustments on the deployment script and installer configuration file (windows). * [Fix] Minor fixes when dealing with CLI and crash handler calls inside code (MacOSX). * [Fix] Minor fix on range based loops using auto keyword. * [Fix] Fixing invalid shebang in shell scripts (Linux). * [Fix] Fix tab order in ConnectionsConfigWidget. * [Fix] Minor fix when resizing HintTextWidget instances. * [Fix] Fixed a bug when importing constraint triggers. * [Fix] Minor bug fix when dropping table children objects in database explorer. * [Fix] Minor fix when generating XML code for permissions. * [Fix] Minor bug fix on database explorer at manage view to avoid left opened connections. * [Fix] Added a patch in model fix process to correctly move indexes/triggers/rules from within tables to outside their xml definition. * [Fix] Fixed a bug when configuring encoding for database. Now the "Default" value can be used normally. * [Fix] Fixed a bug on model fix process that was removing empty lines (only with breaks) from functions definitions as well from other objects. * [Fix] Fix crash when converting a serial column which is not assigned to a primary key. v0.8.0 ------ Codename: Faithful Elephant
Release date: February 28, 2015
* [New] Added support for multiple SQL execution widget instances for the same browsed database in SQL tool. * [New] Added truncate table actions on DatabaseExplorerWidget. * [Change] Minor adjustments on ModelValidationHelper. * [Change] Minor adjustments on CustomSQLWidget. * [Change] Included the delete cascade action to Edit menu in MainWindow. * [Change] Minor widget adjustments on ModelDatabaseDiffForm. * [Change] Minor improvements when saving temp models. Now the saving thread will not run if the diff/export/import dialogs are focused avoiding (rare) race conditions. * [Change] Improved the update notifier to display a recover link and purchase link on the "Get binary package" button menu. * [Change] Minor adjustment on output icons at ModelExportForm. * [Change] Improvement on DatabaseModel::getObjectReferences to retrieve indexes as references to columns. This solve the bug related to import and diff processes that was causing detached columns to be dropped even if there were indexes referencing those columns. * [Change] Added a more friendly error message when the user try to undo/redo an invalid operation at operations history. * [Change] Minor improvement on ConnectionsConfigWidget adding the ability to make the configured initial database to be auto browsed when using the connection to manage objects on Manage view. * [Fix] Fixed the output of SQL commands on diff, import and export. The commands now does not comes without original line breaks. * [Fix] Fixed unexpected dialog blockings and form resetting on diff and export dialogs when minimizing and restoring the application. * [Fix] Fix a crash when converting a serial column to sequence in which the first is not assigned to a primary key. * [Fix] Minor fix on crash handler startup. Now exceptions occurred during the process are printed to stdout. * [Fix] Fix a crash when pasting objects right after closing the source model (from where the objects were copied/cut). * [Fix] Minor fix on ModelWidget::showObjectForm to correctly show permissions details. * [Fix] Minor fix on the import process. Now the majority of problems related to objects that are created before their dependencies are solved. * [Fix] Fixed some bug related to object duplication error treatment on ModelExportHelper. * [Fix] Fixed a crash on connections config dialog when user removed a single connection and close the application, causing segmentation fault. * [Fix] Minor fix on SQLToolWidget to avoid the disabling of SQL command input and controls when a database is dropped and there is at least one database being browsed. * [Fix] Minor fix on session saving process. * [Fix] Fixed a bug that was causing relationship points to be moved twice when multiple objects were selected on the canvas area. * [Fix] Fixed some syntax errors on snippets.conf file. * [Fix] Fixed a bug that was preventing global settings for relationships to be persisted. * [Fix] Fixed a bug when importing permissions related to functions. * [Fix] Minor fix on signal/slot connection order in NewObjectOverlayWidget. * [Fix] Minor improvements on swap objects ids dialog. v0.8.0-beta2 ------ Codename: Faithful Elephant
Release date: February 07, 2015
* [New] Added the method Connection::getServerInfo that returns some informations about the connected server. * [New] Added an attribute to DatabaseExplorerWidget to show the estimated rows amount for selected table. * [New] Added the ability to cascade delete objects from database model. * [New] Created missing getters and setters for Operation class. * [New] Added the ability to set owner, schema and tag for several objects at once through the quick actions menu. * [New] Added an option to diff process to reuse sequences if the source model has serial columns in which the generated sequence name matches a sequence's name on the imported model. * [New] Added the support for per-user configuration. Now each user on the system will have his separated configuration folder. * [New] Added a bug report form on main window to give user the chance to report a bug without use crash handler. * [New] Added action to enable/disable an object's sql from quick actions menu at ModelWidget. * [New] Created a new namespace PgModelerUiNS to store shared constants and function in libpgmodeler_ui subproject. * [New] Added the ability to execute the DROP statements attached to object's SQL when exporting model to DBMS. * [Change] The method PgModelerNS::formatString was moved to PgModelerUiNS::formatMessage. * [Change] Simplified the layout of DataManipulationForm making the Advanced tab (filter) be moved to the same tab of result set facilitating the access to filtering features. * [Change] Restored previous behavior of ModelWidget::cancelObjectAddition and ModelWidget::enableModelActions methods. * [Change] Removed empty destructors from classes TableView and GraphicalView. * [Change] Minor changes on destructors of classes that represents graphical objects on libobjrenderer to correctly undo the link between the graphical object and the source object. * [Change] Improvements on ModelExportHelper adding the ability to ignore certain error triggered by PostgreSQL referencing their codes. * [Change] Improvements on crash handler to reuse the code from bug report form. * [Change] Changed the default PREFIX on pgmodeler.pri to /opt/pgmodeler when building on Linux. * [Change] Several adjustments on deployments scripts to use the new build variable settings. * [Change] Minor adjustments on main.pro, pgmodeler.pro and pgmodeler.pri files. * [Change] Additional improvements on start-pgmodeler.sh and startapp. * [Change] Crash/bug report files now have extensions .bug instead of .crash * [Change] Removed the unused class Utf8String. This class was used in earlier versions of pgModeler and Qt 5x to fix some issues related to UTF8 string handling. After removed any reference of the class from code the issue seems fixed. In any moment this class can return if we have regressions. * [Change] All literals throughout the code were replaced by QString() construction. * [Change] Adjustments done in .pro file in order to correctly compile under Windows. * [Change] Modifications done on .pro files that will permit custom output paths when building pgModeler from source, enabling it to be package to several linux distros. * [Change] Moved the method disableReferencesSQL from BaseObjectWidget to PgModelerUiNS. * [Change] Modifications done on DatabaseImportForm in order to be in the same standard as ModelExportForm and ModelDatabaseDiffForm. * [Change] Minor improvements on ModelExportHelper in order to show the correct actions (commands) being executed. * [Change] Improvements on ModelExportForm by including an output tab in order to display all actions taken during the export process. * [Change] Adjustments on PgModelerCLI, ModelExportForm and ModelExportHelper to accept the "drop objects" option. * [Change] Minor adjustment on ModelDatabaseDiffForm in order to lower the chances to crash the app if user try to repeatedly cancel and start over the diff process. * [Change] Minor change on the generation of DROP statements attached to object's SQL. * [Fix] Minor fixes on html formatted messages. * [Fix] Fix on GeneralConfigWidget that was not saving code completion enabling status. * [Fix] Fixed some bugs on libobjrenderer classes that was causing crashes in some models arrangements. Now graphical objects are effectively deallocated only when the whole scene is destroyed. * [Fix] Minor improvement on OperationList::removeOperations to avoid crashes if a pool object is destroyed outside the operation history (e.g. relationship invalidation). * [Fix] Several fixes on OperationList to minimize the crashes when undoing/redoing operations. * [Fix] Minor fix on validation process that was failing sometimes to use temporary names feature. * [Fix] Minor fix on ModelsDiffHelper to correctly recreate foreign keys that references recreated primary keys. * [Fix] Minor fix on Table::removeObject to change not-null state of columns only when the removed object is a primary key. * [Fix] Fixed a bug when converting many-to-many self-relationship and trying to undo the operation. * [Fix] Fixed the query to retrieve the last_value field of sequences on DatabaseExplorerWidget. * [Fix] Minor fix on CLI that was wrongly considering tag attributes default-* as xml code for database objects causing errors on fix process. * [Fix] Minor fix on diff process that was ignoring column's data type changes. * [Fix] Minor fix on column SQL generation that was removing quotation on sequences names when using nextval() function call as default value. * [Fix] Minor fix on ModelFixForm to correctly find the startapp script on MacOSX. * [Fix] Fixed bug when import/diff user defined types that contains $ in the middle of their names. Now the names are quoted to avoid errors when referencing those types. * [Fix] Minor fix when saving/restoring sessions. Now, empty sessions (without loaded files) are correctly saved. * [Fix] Fixed a crash when importing a database in a second time after some error has occurred previously. * [Fix] First version of a fix to solve problems related to inheritance diff/import. Now pgModeler does not try to drop inherited columns on diff process. * [Fix] Fixed a crash when destroying constraints stored on operation history. * [Fix] Fix on the import process to correctly identify and create inherited columns that aren't linked to constraints or other objects. For those referenced by other objects they will be created as detached columns. * [Fix] Fixed a bug on rule.sch catalog query. * [Fix] Minor fix on generation of DROP commands. * [Fix] Fixed some catalog query schema files and the Catalog class itself in order to correctly select/discard objects linked directly or not to extensions. * [Fix] Minor fix on generation of commands related to extensions. According to the rule, extensions names can't be schema qualified. v0.8.0-beta1 ------ Codename: Faithful Elephant
Release date: January 10, 2015
* [New] Created the widget SnippetConfigWidget in order to handle SQL snippets on SQLTool and DatabaseExplorerWidget. * [New] Introduced a new expression %unset on SchemaParser to clear the named attributes. * [New] Added support for permission on objects Type and Domain. * [New] Added the method SchemaParser::extractAttributes that is capable to extract the attributes used in a loaded buffer. * [New] Added methods to handle snippet selection in DatabaseExplorerWidget and SQLToolWidget. * [New] Created the hint text for code completion option on GeneralConfigWidget. * [New] Added an option to enable/disable code completion widget on sql code input fields (linked to CodeCompletionWidget instances). * [New] Created a method Connection::getConnectionId that returns a string to identify that connection. * [New] Created the constant GlobalAttributes::SNIPPET_CONF to store the default name for code snippet config file. * [New] Added some basic code comments on DatabaseExplorerWidget. * [New] Created the global constant SQL_HIGHLIGHT_CONF_PATH and XML_HIGHLIGHT_CONF_PATH on GlobalAttributes in order to avoid code repetition when loading syntax highlight conf files. * [New] Added a method to parse rule commands on Catalog. * [New] Added the method Catalog::getObjectAttributes to retrieve object attributes by its oid. * [New] Introduced a new step on model validation: relationship configuration checking. * [New] Added "properties" action on context menu at DatabaseExplorerWidget. * [New] Added a panel related to object's properties on database explorer widget. * [Change] The operation history is erased whenever a fix is applied to the model by the validator. * [Change] Minor change on ColorPickerWidget in order to change color of pickers using stylesheet instead of QPallete. * [Change] Minor adjustments on AppearanceConfigWidget. * [Change] Minor copyright update on source files. * [Change] Renamed the instruction %define to %set at SchemaParser. * [Change] Removed unused methods from Messagebox. * [Change] Minor improvements on Messagebox class by adding a simple show() method that receives only trhee parameters. * [Change] Minor improvements on SchemaParser::translateMetaCharacter() * [Change] Minor fix on DatabaseExplorerWidget::handleSelectedSnippet() * [Change] Removed duplicated code to handle snippets on SQLToolWidget. * [Change] Methods setIgnoreEmptyAttributes and setIgnoreUnkownAttributes at SchemaParser were renamed to ignoreEmptyAttributes and ignoreUnkownAttributes. * [Change] Minor improvements on ModelNavigationWidget to show the filename associated to a hovered item on combobox. * [Change] Simplified the syntax for attributes on .sch files from @{attrb} to {attrib}. * [Change] Updated all .sch files with the new attribute syntax. * [Change] Minor improvements on configuration widgets in order to detect if the settings was changed, this will avoid the unecessary load/save of the configuration files in ConfigurationForm. * [Change] Replaced ternary ifs like "1" : "" by ParsersAttributes::_TRUE_ : "" * [Change] Extensive changes in BaseConfigWidget and its subclasses in order to remove the use of extern keyword on other libs when there is the need to get the current config params. Now, user must call * [class]::getConfigurationParams() where class must be one of the derivates of BaseConfigWidget. * [Change] The extern pointer configuration_form on mainwindow.cpp was moved into MainWindow class as a subwindow of it. * [Change] Improvement on BaseConfigWidget and its children classes in order to use polymorphism in ConfigurationForm when needing to save or load confs. * [Change] Moved the constants PGSQL_VERSION_xx from SchemaParser to a namespace called PgSQLVersions in order to avoid the "static initialization order" problem. * [Change] Additional constants were created on PgSQLVersions namespace: ALL_VERSIONS and DEFAULT_VERSION. * [Change] Improvement on XMLParser::hasElement method in order to permit user to check if the current element has a child of the specified XML node type. * [Change] Minor improvements on BaseConfigWidget. * [Change] Moved the method DatabaseModel::getObjectType(QString) to BaseObject as a static one. * [Change] Minor updates on sql-highlight.conf * [Change] Updated the version info on platform specific installer files. * [Change] Removed unused constructor on Connection class. * [Change] Minor improvement on DatabaseImportForm::listObjects, now it's possible to include a database root item. * [Change] Minor improvements on class DatabaseImportHelper. * [Fix] Fixed a bug that was crashing application when using special pks in relationshps. * [Fix] Minor fix on windeploy.sh to copy the correct libs. * [Fix] Minor fix on macdeploy.sh in order to use Qt 5.4. * [Fix] Fixes done in order to build pgModeler on Windows using Qt 5.4. * [Fix] Fixed a bug on SchemaParser that was wrongly reading %define instructions inside if's and creating attributes when it was not need to create them. * [Fix] Modifications done on attributes initialization at RelationshipWidget in order to fix some crashes. Now pgModeler runs without crashing when compiled in release mode using g++. * [Fix] Minor fix on aggregates listing on Catalog class. Now the handled types are attached to aggregates' names. * [Fix] Minor fix on config pages indexes on ConfigurationForm. * [Fix] Minor fix on MainWindow when there are errors during configuration files loading. * [Fix] Minor fix on object name formatting at DatabaseExplorerWidget. * [Fix] Minor fix on SQLToolWidget to set the current database explorer instance properly. * [Fix] Minor fix on rule catalog query. * [Fix] Minor fix on table.sch schema file. * [Fix] Fixed the object filter on database explorer. * [Fix] Typo correction on ModelExportHelper. * [Fix] Additional fix to remove g++ warnings. v0.8.0-beta ------ Codename: Faithful Elephant
Release date: November 29, 2014
* [New] Introduced the first version of model database diff feature. * [New] Created the method Constraint::isCodeDiffersFrom in order to correctly generate the xml code and compare it with another object's code. * [New] Created the method PgModelerNS::formatString in order to avoid repeatedly replace special chars by html tags. * [New] Added the method PgSQLType::isEquivalentTo in order to check if a type is equivalent to another. This method helps to avoids unnecessary recreation of columns or type attributes on diff process. * [New] Created the class DatabaseExplorerWidget in order to permit user manage several database instances on the sql tool. * [New] Enabled the usage of cached catalog queries on Catalog class in order to increase the performance of the whole import process. * [New] Added the method PgSQLType::isRegistered that indicates if a type is already registered or not. * [New] Added the method BaseObject::acceptsAlterCommand to indicate if an object type can be changed through ALTER commands. * [New] Added the method BaseObject::acceptsDropCommand to be able to identify which kind of object accepts DROP commands. * [New] Added the method Column::getAlterDefinition in order to get the ALTER definition based upon the differences of two columns. * [New] Added the ability to schema parser to create attributes from within the parsed schema files or buffer. * [New] Added the method Table::getTruncateDefinition to return the proper TRUNCATE command. * [New] Added method Sequence::getAlterDefinition. * [New] Added method Role::getAlterDefinition. * [New] Added method Index::getAlterDefinition. * [New] Created the getAlterDefinition method for Extension and Function. * [New] Created the custom implementation for getSignature() for Aggregate, Cast, Constraint, Index, Operator Class, Operator Family, Rule, Trigger. * [New] Created the own versions of getDropDefinition for Function and Index. * [New] Added to schema parser the ability to evaluate simple comparison expressions in the form (@{attribute} [operator] "value"). * [New] Added a special attribute pgsql-ver when generating code definition to store the currently used pgsql version. * [New] Introduced a new method BaseObject::getSignature() that returns by default the object's name (formatted or not) and with the schema name prepended (when available). * [New] Introduced a new name pattern PK_COL_PATTERN which is used to generate the single pk column name for many-to-many relationships. * [New] Added method getAlterDefinition for Aggregate, Collation and EventTrigger. * [New] Created a styled text box object. * [New] Created the new class RoundedRectItem in order to generate rounded corner rectangle items on scene. * [New] Added a sql disabled info item for relationships. * [New] SQL disabled status are now displayed as a textbox on top of tables and schemas. Other objects will continue to have their names striked out to denote the deactivation of SQL code. * [New] Added the ability to copy text from validation widget output. * [Change] Minor change on Connection class. Added the method Connection::setSilenceConnError in order to silence connection errors in certain cases. * [Change] Major changes on sql tool. Now it's possible to manage several database instances on the same server connection. * [Change] Moved the code that was handling database objects tree from SQLToolWidget to DatabaseExplorerWidget * [Change] Improvements on DBMS export process. Now the process detects when a object is being created, changed or dropped returning the correct message to the user. * [Change] Minor fix on Role::getAlterDefinition. * [Change] Removed the generation of inheritance command from Table::getAlterDefinition and moved to Relationship::getInheritDefinition. * [Change] Minor update on sql highlight configuration file. * [Change] Minor adjustments on schema files for CREATE commands. * [Change] Minor update on sql-highlight.conf. * [Change] Several changes on schema files related to comment command formatting. * [Change] Removed the attribute ParsersAttributes::DIF_SQL due its deprecation. * [Change] Improvements on all schema files that makes use of @{pgsql9x} attribute. Those attributes were deprecated and replaced by comparison expressions. * [Change] The method SchemaParser::storePgSQLVersion was removed due to the deprecation of attribute @{pgsql9x}. * [Change] Minor change on the Connection class to return the full version or only the major one of the server. * [Change] Code blocks where there was a special treatment to get object's name filtering by object's type (specially function and operator) were replaced by a single call to BaseObject::getSignature(). * [Change] Improved the way many-to-many relationships can be configured. Now the generated table can have a single column as primary key or a multi-valued one. * [Change] The ModelWidget::convertRelationshipNN method was improved in order to correctly convert many-to-many relationships with single or multi-valued primary key. * [Change] Removed the restriction from Catalog and DatabaseImportForm to hide the "postgres" database. * [Change] Minor change on how drop command is generated for collations. * [Change] Minor fix on fields which accepts expressions to show scroll bars as needed. * [Change] Changed the order of actions on left control bar at main window. * [Change] Minor improvement on export to png process. The output image is generated with a margin. * [Change] Minor change on sample models and asset images. * [Change] Minor changes on TextboxView. * [Change] Changed the style of graphical resentation for schemas, views, tables. Now they are drawn with rounded borders. * [Change] Minor improvements on how sql disabled info item is generated and managed. * [Change] Change the relationship cardinality pattern from (1,n) to 1:n. * [Change] Minor label adjustment for many-to-many relatinships. * [Change] Minor adjustments on textbox resizing. * [Change] Minor adjustments on relationships custom points descriptors in order to give better selection and movement. * [Change] Minor improve when moving a schema object. Relationship points will be moved together. * [Change] Minor editing forms size adjustments. * [Change] Changed the layout of modeldatabasediffform.ui and added hint text widgets. * [Change] Changed the hint texts on general config, relationship config and model restoration form. * [Change] Minor change on relationship editing form, by default random line colors are enabled. * [Change] Minor fix on temporary models saving process. * [Change] Explicit hint texts were moved to the instances of the new class HintTextWidget. * [Change] Minor improvement on database editing form. LC_COLLATE and LC_CTYPE can be freely modified. * [Change] Minor improvement on primary key constraints. Columns added to them will be marked as not-null by default. This is done to avoid false-positive changes on the model db diff process. * [Change] Improvements on main window in order to give more visibility to SQL tool and central widget. Now there are three different views (welcome, design and manage). * [Fix] Minor fixes throught the code in order to remove g++ warnings. * [Fix] Minor fix on table's SQL schema file. * [Fix] Minor fixes on demo version code. Remove the execution time limit and increased the maximum objects count. * [Fix] Fixed a bug when generating XML code for materialized views that was causing these objects to break DTD rules. * [Fix] Minor fix on code generation of permissions. * [Fix] Minor fix on permissions editing form. * [Fix] Fixed a bug on database import process that was crashing the application whenever importing a composite type. * [Fix] Minor fix on reverse engineering process when importing columns which reference user defined type that are in pg_catalog. * [Fix] Minor bug fix on database import process that was causing some crashes. * [Fix] Minor improvements on "move to schema" feature on model widget. The references to moved object are now correctly updated. * [Fix] Minor fix on SyntaxHighlighter that was not correctly applying the default font to the parent object. * [Fix] Minor fix on index class and editing form to accept FILLFACTOR no matter the indexing method used. * [Fix] Minor fix when removing table children objects and restoring them from operations list. * [Fix] Fixed a crash when reverse engineering a model. The crash was due to trying to handle a not existent graphical object for pg_catalog schema. * [Fix] Fixed the resizing of schema objects. * [Fix] Minor fixes on schema editing form. * [Fix] Additional fixes for export model to png. Now the correct bounding rect is calculated. * [Fix] Fixed a bug when exporting model to png that was exporting unnecessary blank areas. * [Fix] Fixed the click on the object selector input field. When the control is disabled the object selection dialog will not be opened. * [Fix] Minor fix on domain class and editing form that was not resetting the constraint name attribute. * [Fix] Minor fix on model validation helper to avoid include the database as a referer of other objects. * [Fix] Fixed a bug when renaming objects and invalidating their references. * [Fix] Fixed a bug on schema parser when converting chars to xml entities. v0.8.0-alpha2 ------ Codename: Faithful Elephant
Release date: September 30, 2014
* [New] Added an option on general settings to disable ask to validate model before save, export and diff. * [New] If the user try to save, export or diff a model and it is invalidated, pgModeler will first validate and then proceed with the pending operation. * [New] Added an entry on general settings to control how graphical objects are created. * [New] Added an option to disable render smoothness to improve performance on large models. * [New] Added the method Catalog::getObjectsOIDs in order to retrieve all database objects oid and store them in maps. This method is used as an auxiliary for model-database diff process. * [New] Added the method ConnectionsConfigWidget::fillConnectionsComboBox() in order to reuse the code that fills up a combobox with configured connections. * [New] Added the ability to create special primary key on many-to-many relationships. * [New] Added the ability to save the dock widgets configuration on the main configuration file. * [New] Added methods to retrieve objects by their names on DatabaseModel class. * [Change] The configuration form was reestrucured decreasing the size occupied on the screen. * [Change] Minor improvement on model fix dialog. * [Change] Minor improvement on constraint import. Fillfactor attribute now is correcly retrieved. * [Change] Removed extern directives referencing configurations from SyntaxHighlighter and ModelWidget converting the used attributes to static ones. * [Change] Changed the way threads are created, as well the import and diff helpers instances to avoid race conditions and crashes. * [Change] Schemas by default will be created to show the bounding rectangle. * [Change] Minor improvement on BaseObject::getTypes() in order to exclude some types from the resulting vector. * [Change] Minor widgets adjustment on modeldatabasediffform.ui, modelexportform.ui and databaseimportform.ui. * [Change] Updates on several resource images. * [Change] Minor change on example.dbm file. * [Change] Minor change on DatabaseImportHelper to accept a DatabaseModel instance instead of ModelWidget. * [Change] Minor adjustments on deployment scripts. * [Fix] Fixed issue with Inno Setup invalid bitmap error (Windows). * [Fix] Fixed a bug that was preventing encrypted password to be configured for roles. * [Fix] Fixed a crash whenever user quit the application on Mac OSX. * [Fix] Minor fixes in order to compile using Qt 5.3.2. * [Fix] Fixed a bug when starting the creation process of relationships on model widget. * [Fix] Fixed a bug related to individual permission exclusion and object removal error when there are permissions attached to it. * [Fix] Fixed typos on demo version warning messages. * [Fix] Fixed a bug that was not generating FILLFACTOR attribute for constraints. * [Fix] Minor fix on object naming rules. Now the dollar sign ($) is accepted in the middle of object's name. * [Fix] Fixed a bug when import domains which have the same name as some tables. * [Fix] Fixed a bug on trigger class and editing form that was preventing the "FOR EACH ROW" attribute to be saved. * [Fix] Fixed a infinite loop on operation list class when calculating the chain size. * [Fix] Fixed a crash when creating relationships. Apparently this crash was caused by a faulty access on some threads right after close the relationship dialog. * [Fix] Fixed the bug that was preventing a sequence to be assinged to a column. * [Fix] Fixed a bug on relationship validation process that was causing errors mainly related to generalization relationships. * [Fix] Fixed a bug on xml parser when reading DTD files from paths that contains accentuated chars. * [Fix] Minor fix on Messagebox class when replacing
tags on message text. * [Fix] Minor fix on conditional compilation macros entries for demo version. v0.8.0-alpha1 ------ Codename: Faithful Elephant
Release date: August 15, 2014
* [New] pgModeler now is capable to handle table's data through the new data manipulation form. * [New] The SQL tool received a basic find/replace widget. * [New] Created a new environment variable for samples directory, PGMODELER_SAMPLES_DIR. * [New] Source code dialog now optionally appends the SQL of permissions for the current object. * [New] Added an option to the source code privew dialog to include table's children objects' SQL. * [New] Added a field on all object's editing form to expose the object's internal id. * [New] Added an option on the database import process to generate random colors for relationships. * [New] The model objects widget gained a filtering field that is capable to list objects by their name or internal id. * [New] Added support for custom SQL for rules, indexes and triggers. * [New] Added two new sample models. * [Change] Changed the shortcut for "About pgModeler" to F4 key. * [Change] Minor update on shortcuts and tooltips of buttons on bottom control bar at main window. * [Change] Minor improvement on model validation. Now the DDL executed for any object is shown on the output field. * [Change] Minor change on object's id interval generation. * [Change] Minor adjust on model export process to force the code cache invalidation when using the unique name generation option. * [Change] Message box objects are now used on demand and no more as class attributes. * [Change] The software startup was hugely improved by removing singleton dialogs from main window's constructor, now they are used on demand. * [Change] Minor update on sql-highlight.conf file. * [Change] Sample models can be now loaded direclty from the main windows's central widget. * [Change] Enhancement on the messages of model validation output. * [Change] Minor fix on object's schema files to correctly generate the appended/prepended SQL code. * [Change] Major improvement on all core classes (resposible to represent database objects) in order to keep their cache syncronized with the current configuration. * [Change] Object finder now highlights the parent table if the user selects a child object of the first. * [Change] Minor improvement on CLI. Added a routine to change a table structure, moving the tags rule, index and trigger to outside of it. * [Change] Changed the way on how the relationship connection points are determined. Now they depends on how the tables' center points are distant from each other. * [Change] More improvements done on database model objects classes in order to give more speed on the code generation. * [Change] Update for French (fr_FR) translation. * [Chage] Minor improvements on swap objects ids dialog. * [Change] Huge improvement on validation process mainly for reverse engineered models. Now pgModeler honors the imported structure and in a few cases there will be inconsistencies. * [Change] The objects rule, index and trigger will have the SQL/XML code generated outside of table's definition due to validation process that sometimes needs to swap id's of those objects. * [Change] The object selector will trigger the object selection if user click the input field. * [Change] Changed the 'line color' attribute of relationships to 'custom color'. * [Fix] Fixed a crash provoked by the constraint editing form when switching the constraint type on the second time the form is opened. * [Fix] Minor fix on database import process that was wrongly checking all tables as unlogged. * [Fix] Minor fix on sample models pagila.dbm and usda.dbm to remove the unlogged attribute. * [Fix] Minor fix on class CodeCompletionWidget to make it persistent as well to remove duplicate items from listing. * [Fix] Minor fix on message box instances to resize according to the height of the current message. * [Fix] Fixed a crash whenever the user cancelled the changes on settings and tried to connect to a server using the SQL tool. * [Fix] Minor fix on SQLToolWidget to disable controls in some situations. * [Fix] Minor fix on BaseRelationship and Relationship classes to correctly invalidate envolved object's when connecting or disconnecting. * [Fix] Fixed a crash when closing the last model and the object finder was visible with result list filled. * [Fix] Object finder now doesn't show duplicated items. * [Fix] Minor fix on model objects widget when assigning a null model. * [Fix] Fixed the problem with function parameter name not being generated due to cached code. * [Fix] Minor fix on index editing form layout. * [Fix] Fixed the import of rule object on DatabaseImportHelper class. * [Fix] Fixed a bug when displaying the cardinalities for fk relationships. * [Fix] Fixed a bug on the reverse engineering process that was wrongly migrating 'timestamp with time zone' data type as 'timestamp' only. * [Fix] Fixed a bug on the reverse engineering process that was preventing the migration of operator classes / indexes that contains duplicated elements. v0.8.0-alpha ------ Codename: Faithful Elephant
Release date: July 21, 2014
* [New] Added support for using global settings for relationships on the editing form of those objects. * [New] A new section was created on settings dialog to manage global configurations for relationships. * [New] Enabled the movement of schema objects without the need to select their children. This operation does not applies to protected or system schemas like public, pg_catalog. * [New] Created a more elaborated central widget with some basic operations like create, load, load recent models and restore previous session. * [New] Reletionships 1:1, 1:n and fk now supports a new style of link between tables. The foreign key columns will be directly linked to primary key columns. * [New] Created a class called ColorPickerWidget to handle operations where the user need to configure colors for objects. * [New] Relationship objects now supports custom line colors. * [New] Added the static methods setPgSQLVersion and getPgSQLVersion on BaseObject class in order to override the PostgreSQL version used to generate code for all instances of that class. * [New] Introduced a method DatabaseModel::getXMLParser() in order to return the xmlparser of the model to permit user create new objects from xml code within the current database model. * [Change] Minor adjustment on central widget buttons style on MacOS X. * [Change] Disabled the collapsed main menu on MacOS X due to particularities on GUI of this system. * [Change] Minor adjustment on main menu construction on Linux/Windows. * [Change] Major change on main UI style in order to make a cleaner interface and gain more space on canvas to handle models. * [Change] Minor model objects style refreshment. * [Change] Minor optimization on class AppearanceConfigWidget by adding color pickers in order to select color of the elements. * [Change] A significant code optimization was made on TagWidget by changing the tool buttons that was handling color configuration by color pickers. * [Change] Added a color picker on RelationshipWidget to permit the configuration of custom line color. * [Change] Minor layout adjustment on update notifier widget. * [Change] Important change on SchemaParser class which is not a singleton anymore in order to minimize crashes due to race conditions on running threads. * [Change] Important change on XMLParser class which is not a singleton anymore in order to minimize crashes due to race conditions on running threads. * [Fix] Fixed a bug related to partial command execution on SQL tool. * [Fix] Minor fix on model navigation widget when closing a model. * [Fix] Fixed a bug that was crashing pgModeler when switching models with the overview widget opened. * [Fix] Fixed a bug that was eventually making pgModeler enter on a endless looping when calculating the chained operations length. * [Fix] Fixed a regression related to special objects recreation after rename a primary key column. The problem was that the relationship was wrongly storing the old name of the columns at connection time. v0.7.2 ------ Codename: Brave Mastodon
Release date: June 27, 2014
* [New] Added the missing attribute BUFFERING for Gist indexes. * [New] Added an experimental installer for Linux based upon the Qt Installer Framework. * [New] Added an file called RELEASENOTES.md. This file will be read by the update notifier on server in order to return to the GUI the change log and additional release info. * [Change] Minor change on MacOS X deployment script to generate the dmg file with a custom icon. * [Change] Restored the start-pgmodeler.sh file due to difficulties that some users are having when running pgModeler on Linux systems. * [Change] Created the folder "installer" to store all files related to installers of all platforms * [Fix] Fixed a regression related to sequences not being included on database model XML code. * [Fix] Fixed deployment on Linux. Now start-pgmodeler.sh is correclty copied. * [Fix] Fixed the display of relationship actions on NewObjectOverlayWidget v0.7.2-beta1 ------ Codename: Brave Mastodon
Release date: June 21, 2014
* [New] Added support for event trigger objects. The export and import processes were adjusted to handle this kind of object. * [New] Added support for UNLOGGED tables. * [New] Enabled PostgreSQL 9.4 export and import processes. * [New] Enabled the jsonb datatype for PostgreSQL 9.4. * [Change] Rolled back to Qt 5.2.1 the version used by the macdeploy.sh script due to crash reported in issue #494 and #482. * [Change] SQL tool improvement. Added a "drop cascade" action and fixed a bug when refreshing a specific item on database tree. * [Fix] Minor fix on ColumnWidget, disabled the line breaking in the field "Expression". * [Fix] Fixed the model fix dialog on MacOS X and Windows platforms. * [Fix] Schemas names are now correctly striked out on the rectangle when their SQL code is disabled. The system schemas public and pg_catalog will continue not to have their names striked out. * [Fix] Fixed a bug that was preventing default values of domains to be loaded from file. v0.7.2-beta ------ Codename: Brave Mastodon
Release date: June 06, 2014
* [New] Added an option to convert integer type to serial ones on columns which default value is a nextval(seq::regclass) call. * [Change] Changed the MacOS X deployment script to use Qt 5.3. * [Change] Minor size adjustment on the new object overlay. * [Change] The model objects widget now clears the selection when it lost the focus. * [Change] Minor change on new object overlay behavior. The overlay will be hidden when any tool button on it is pressed or the ESC key is pressed. * [Change] The partial database import was improved. Now pgModeler is capable to resolve dependencies of foreign key constraints, creating the needed tables automatically. Additionally, domains are automatically imported when referenced by columns. * [Fix] Fixed compilation process on Windows system. * [Fix] Fixed the crash handler call inside the main program. * [Fix] Minor fix on "object's deps. & refs." dialog that was triggering an error when trying to open a table child object from there. * [Fix] Added a entry on DatabaseModel::getObjectDependecies() to get the sequence that a column depends on. * [Fix] Fixed a bug column editing dialog that was wrongly removing the sequence assigned to a column. * [Fix] Fixed sample plugins compilation when using a LIBDIR value other than the default. * [Fix] Fixed the build number generation at compilation time. * [Fix] Minor fix on TableTitleView class to correctly strikeout the schema name only when the schema rectangle is not visible. * [Fix] Minor adjustment on databaseimportform.ui size. * [Fix] Fixed the custom page size bug due to patches provided by Qt 5.3. A conditional compilation statement was added on portions where the custom page size is used. This way the code can be build on any Qt version but the fix will available only on 5.3. * [Fix] Minor fix on the Linux deployment script. v0.7.2-alpha1 ------ Codename: Brave Mastodon
Release date: May 30, 2014
* [New] Introduced a "new object" overlay widget which gives user a quick access to actions that create objects. * [New] Added a step to fix indexes with old tag on command line interface. * [New] Added support for item interaction on "object's dependencies and references" dialog. * [New] Added support for generate temporary names for database, roles and tablespaces when running validation process. This will avoid errors if the original database and the other objects already exists on the server. * [New] Updated the CLI to include the option to generate temporary object's names. * [New] Added suppport to save and restore the last position and zoom on the canvas. This behavior can be deactivated on general settings. * [New] Added support for prepend SQL commands on object's definition. * [New] Added zoom info popup that appears whenever the user changes the current zoom factor. * [Change] Renamed the methods setCheckExpression and getCheckExpression methods to setExpression and getExpression because the expression is used either for check and exclude constraints. * [Change] Renamed the attribute "condition" to "predicate" on index class. * [Change] Improved the way SQL code is disabled/enabled on editing forms. User now is asked to apply the same disabling/enabling status to object's refereces. * [Change] Minor size adjustment on SQL append dialog. * [Change] Changed the order of the tabs on user-defined type editing form. * [Change] Minor appearance improvement on textbox editing form. * [Fix] Made visible the field related to predicate expression on exclude constraint editing form. * [Fix] Added reference checking between an exclude constraint and operators. * [Fix] Minor fix on copy operation that was not resetting the copied objects list if the user clicked several times the "copy" command without paste. * [Fix] Minor fix on the model object widget when disabling the controls. * [Fix] Minor fix on ModelWidget::createSequenceForColumn() operation. The generated sequence is now correctly assigned to the column. * [Fix] Minor fix on pgModeler command line interface menu text. * [Fix] Minor fix on permission.dtd file. Attribute "index" was incorreclty marked as required when its optinal. * [Fix] Minor fix on semantics of one-to-one relationship. When one of the tables are of mandatory participation the foreign key columns must not accept null values. * [Fix] Minor fix on Windows and Linux deployment scripts. v0.7.2-alpha ------ Codename: Brave Mastodon
Release date: May 06, 2014
* [New] Added a basic routine to check if there is some new version available on pgModeler site. * [Change] Custom indexes for columns and constraints added by relationships are now stored on tables. In previous version the relationship was the responsible for that but this approach was provoking the bug related on issue 449. * [Change] Remove unused parser attributes and commented old code. * [Change] Removed attributes and methods from relationship which were responsible to control columns, attributes and constraints indexes. * [Fix] Fixed a bug that was changing the columns positions whenever a relationship was edited on the model. * [Fix] Minor fix when generate the string that denotes the assigned constraints to a column. * [Fix] Minor fix on function editing form when handling the result table columns. The variadic field is disabled on the parameter form. * [Fix] Fixed a crash when removing a view linked to tables. * [Fix] Minor fix on view reference code generation. * [Fix] Minor editing form size adjustments. * [Fix] Minor compilation fix on Windows system. v0.7.1 ------ Codename: Brave Mastodon
Release date: April 15, 2014
* [New] Added option to invert panning mode and range selection triggers. * [New] Added support for use relationship attributes as special primary keys. * [Change] Improvement on unique name generation for columns and constraints when connecting relatioships. * [Change] Improvement on copy / paste operations. * [Change] Minor workaround in order to try to fix the crash due to thread conflict mainly on Windows system. * [Fix] Minor fix on custom columns positioning. * [Fix] Input and output files are now correctly escaped on the model fix form and the process works fine. v0.7.1-beta1 ------ Codename: Brave Mastodon
Release date: April 8, 2014
* [Change] Minor change on project's description text on about dialog. * [Fix] Workaround for the slow editing of function's definition. Disabled the automatic syntax highlighting. * [Fix] Minor fix on reverse engineering process. In some cases the process was aborted due to duplication of relationships caused by an incorreclty name generation for this kind of object. * [Fix] Minor fix on model objects widget when changing the visible object types. * [Fix] Fixed the conflict with panning mode and graphical object addition operation. * [Fix] Fixed a regression introduced by 0.7.1-beta on model fix process. v0.7.1-beta ------ Codename: Brave Mastodon
Release date: April 6, 2014
* [New] Created a small interface to pgmodeler-cli that enables the user to fix a broken model inside pgModeler GUI. * [New] Added support for assign a sequence as default value of a column. The sequence will be converted to "nextval('seqname'::regclass) and the validation process will check if the sequence is correctly referenced by the table that owns the column. * [Change] Changed the default behavior of left click on blank areas of canvas. Instead of create a range selection the user will move the viewport (panning mode). To enable range selection user must press SHIFT and click/move to draw the selection rectangle. * [Fix] Minor fix on connection class in order to accept empty passwords as well passwords that contains spaces. * [Fix] Fixed the column listing on constraint editing form after remove one or more columns. * [Fix] Fix a crash when canceling the model saving dialog on Windows. * [Fix] Minor patch on the model fix process. * [Fix] Fixed wrong default values for relationship added columns. * [Fix] Fixed a bug related to file paths with ampersand on config files. * [Fix] Fix the broken sql for inheritance when a child table don't have columns but only constraints. v0.7.1-alpha1 ------ Codename: Brave Mastodon
Release date: March 29, 2014
* [Change] Major model validation improvement. Now special objects are correctly validated. * [Fix] Fixed a crash when closing a model that contains a view that references columns added by relationships. * [Fix] Fixed wrong working directory handling on CLI. * [Fix] Fixed a bug on file loading process that could left behind some objects depending on size and arrange of the loaded model. * [Fix] Fixed the undesired behavior when moving a table to another schema. v0.7.1-alpha ------ Codename: Brave Mastodon
Release date: March 21, 2014
* [Fix] Fixed connection config. Empty passwords are now accepted. * [Fix] Fixed schema object code generation. * [Fix] Fixed the usage of PGMODELER_SCHEMAS_DIR environment variable on import process. * [Fix] Fixed "ALTER ... SET OWNER" DDL for materialized views. * [Fix] Fixed duplicated semicolon at end of permissions defintion. v0.7.0 ------ Codename: Brave Mastodon
Release date: February 25, 2014
* [New] Addded a catalog attribute "hide-postgres-db" in order to avoid listing "postgres" maintainance DB on import operations. * [New] Added options to hide system/extension objects on SQL tool improving the object listing performance. * [New] Added support for custom compilation output directory through qmake variables BINDIR, LIBDIR and RESDIR. * [New] Added support for deferrable unique, exclude and primary key constraints. * [New] Added support for custom colors on tables and views through tag objects. * [New] Added support for export models to png image page by page. * [New] Canvas can now be moved using Control + Arrow keys. If the shift is pressed the movement factor is increased. * [New] Introduced the SQL tool that permits the execution of arbitrary SQL commands direclty on a server. * [New] Added methods getType, getTypeId to BaseType and getSQLTypeName to PgSQLType as an alternative to call operators ~, ! and *. * [New] Added a commented DROP command at start of each object definition (CREATE or ALTER TABLE ADD) * [New] Added a "Code Preview" tab on permissions dialog. * [New] Enabled SQL code visualization for FK relationships. * [New] Added a build number on about dialog. This number is the compilation date in format yyyymmdd. * [New] Added support for materialized and recursive views (PostgreSQL 9.3 feature). * [New] Added pgModeler version information on generated sql scripts as well .dbm files for debugging purpose. * [New] Added support for custom delete/update actions for relationship generated foreign keys. * [New] Added support for move the canvas by positioning the mouse over corners. * [New] Added a configuration parameter to control font style for any source code highlight field. * [New] Added additional PostGiS types: geomval, addbandarg, rastbandarg, raster, reclassarg, unionarg, TopoGeometry, getfaceedges_returntype, validatetopology_returntype. * [Change] Added support for on-demand updates on sql tool object's tree. * [Change] Improved the tab navigation experience on editing forms. * [Change] Minor change on SQL tool to ommit binary data values. * [Change] Dropped the navigation through object using Alt + due to the difficulty to understand the order in which objects are highlighted. * [Change] Minor change when generate .stacktrace file for crash handler to include pgModeler build number. * [Change] Minor adjustments on DatabaseImportForm's import execution progress. * [Change] Minor enhancements on operation list when removing last operations. * [Change] Minor enhancements on table and relationship dialogs on error control flow. * [Change] Changed Z-value for relationship labels in order to avoid that name labels don't overlaps the cardinality labels. * [Change] Removed the translation installing from within plugin loading method at PluginsConfigWidget. * [Change] The Application class constructor now loads at once all translation files available for the current language including language file for plugins. * [Change] Minor changes on deploy scripts on all platforms. The parameter '-with-build-num' was introduced in order to generate a package with build number. * [Change] Relationship dialog enhanced. Now participant tables are described in what role they make part. * [Change] Minor improvement on model export process. * [Change] Minor improvement on model validation widget. * [Change] Minor improvement on crash handler report generation message. Full path to crash file is now shown. * [Change] Improved the message displayed when user try to save an invalidated model. * [Change] Minor adjustment on model export dialog size. * [Change] Minor improvement on model overview widget. * [Change] Minor adjustments on window title buttons for model export and database import forms. * [Change] Improvement on connection config form. pgModeler now ask to save/update unsaved connection if the user forgot to. * [Change] Minor update sql syntax highlighting configuration file. * [Fix] Fixed bug that was permitting paste already formatted text (html) on source code input fields. * [Fix] Fix broken range type generation. * [Fix] The DELETE privilege is now correclty saved on model. * [Fix] Fixed drop object command on SQL tool. * [Fix] Fixed bug that was crashing pgModeler when a error was raised on view edit form. * [Fix] Fixed a bug that was crashing the application when deleting relationship attributes or constraints. * [Fix] Fixed bug related to the range selection weird behavior when finishing creating a object. * [Fix] Minor fix on OperationList undo/redo methods to update types names on tables that references a modified type. * [Fix] Minor fix on View assignment operator to correctly rename the type associated with "this" object. * [Fix] Minor fix on DatabaseModel to correctly return the references to a view type. * [Fix] Fixed bug that was causing indexes/triggers that references columns added by relationship have the sql code generated twice. * [Fix] Minor fix on ResultSet class to identify bytea columns. * [Fix] Minor fix on CLI menu to add new export modes. * [Fix] Fixed a crash dealing with duplicated columns on a table. * [Fix] Fixed bug when deleting tables and fk relationships together. * [Fix] Fix bug related to geometry type. * [Fix] Minor fix on logical expressions evaluation on SchemaParser. * [Fix] Minor fix on model export when showing the name of objects being exported. * [Fix] Minor fix on list/view advanced objects of a relationship. * [Fix] Minor fix on form resizing when showing the protected object alert. * [Fix] Fixed a minor bug that was crashing pgModeler when visualizing many-to-many relationships. * [Fix] Fixed some warnings triggered by clang compiler. * [Fix] Fixed a crash when loading plugins on MacOSX. * [Fix] Fixed the issue related to import roles from database. pgModeler will not query pg_shadow anymore since this view is a very restricted object. Now role passwords will be imported as ***** (according to docs). * [Fix] Fixed the object name validation. pgModeler now accepts spaces within names. * [Fix] Fixed the function editing form resizing. * [Fix] Fixed a bug that was not loading "sql disabled" state for relationships. * [Fix] Fixed incorrect behavior of "Zoom In" action on MacOSX. * [Fix] Trying to fix the infinite loop of the Validation confirm dialog on Windows (more tests needed). v0.6.2 ------ Codename: Daring Mammoth
Release date: December 20, 2013 * [Change] Update Qt version to 5.2.0 on build scripts (Windows only). * [Change] Linux binaries are now bundled with all needed Qt libs. * [Change] Important change on the way that special primary keys are created for generalization/copy relationships. Now there is the need to create the relationship first, close the dialog and open it again in order to generate the columns that will be used on the primary key. * [Fix] Fixed a bug on model loading and relationship validation that was causing pgModeler to ignore some special objects (constraints referencing columns generated by relationships). * [Fix] Workaround done on the sql append widget when handle a lot of code avoiding slowdowns on the syntax highlighting. * [Fix] Fixed the incorrect creation of foreign keys on many-to-many relationships. * [Fix] Fixed the conversion of self many-to-many relationships. * [Fix] Fixed a bug that was causing some constraints to be destroyed when the relationship was connected to the table that owned the constraint. * [Fix] Comments that contains apostrophes now are correctly escaped in order to avoid SQL related errors. * [Fix] Fixed the incorrect generation of SQL code of check constraint associated to many-to-many relationshps. * [Fix] Minor fix on crash handler when trying to read an stack trace file that doesn't exists. * [Fix] Minor typos fixes on CLI menu. * [Fix] Minor fix on the about form positioning. v0.6.2-beta ------ Codename: Daring Mammoth
Release date: November 29, 2013 * [New] Added an option to drop database before a export process. * [New] Disabling SQL code now disables the code of all referrer and child objects (experimental!). * [New] Added support for columns to reference "table types". * [Change] Object names are trimmed on editing forms to avoid unnecessary error triggering. * [Change] Minor improvement on crash handler form. * [Change] Minor change on SQL validation message. * [Change] Minor improvement on operation list. * [Fix] Fixed a crash when adding foreign keys to a new table. * [Fix] Fixed the import of foreign key constraints from PostgreSQL 9.3. * [Fix] Fixed the creation of fk relationships when the involved tables has too long names. pgModeler no more complains about "already existent object". * [Fix] Minor fix when showing self fk relationships. * [Fix] Minor fix on pgmodeler-cli: working directory is now set correctly. * [Fix] Minor fix when retrieving advanced (generated) objects from relationships. * [Fix] Fixed a bug that was not properly removing table objects when the user was canceling the table's editing. v0.6.1 ------ Codename: Daring Mammoth
Release date: November 3, 2013 * [New] PostgreSQL version 9.3 activated on code base. Now import and export operations works with this new version. * [Change] Changed the way inheritance is created. Now the INHERIT command is appended in the table's definition. * [Change] Update on model validation. Generalization and copy relationships have the participant tables' id's validated in order to check reference breaking. * [Change] Version info upgraded on MacOSX app bundle configuration file (Info.plist). * [Change] Minor change on "pgmodeler.vars". Included environment variables for custom Qt installation. * [Fix] Fixed a bug related to INSTEAD OF/ON UPDATE triggers on views. * [Fix] Fixed a bug related to incorrectly error raised when setting a owner table in the same schema as the sequece. * [Fix] Fixed a bug related to importing sequences which name has uppercase characters. * [Fix] Fixed misspelled "Connetion" word on configuration form. * [Fix] Typos correction on model validation message box. * [Fix] Fixed incorrect objects removal after cancel the edition. * [Fix] Minor fix on disconnection of generalization relationships. * [Fix] Minor fix on updating table's graphical representation when importing primary keys. * [Fix] Minor change when displaying the columns' types on table/relationship editing form. * [Fix] Fixed the compilation process on MacOSX 10.9 (Mavericks). * [Fix] Minor change on macdeploy.sh to use Qt5.2-beta by default. v0.6.0 ------ Codename: Daring Mammoth
Release date: September 30, 2013 * [New] Added a validation when removing protected FK relationships. * [New] Added a progress info (at bottom widgets bar) for temporary model saving. * [New] User can now restore the last session via File > Restore Session. Sessions will not be restored at startup anymore. * [New] Added a "zoom" option when exporting to PNG image. * [Change] Disabled the model loading via command line on MacOSX due to bundle particularities. * [Change] Remove option "Save session" from general config widget. * [Change] Improved the way schema's children objects are selected/unselected. * [Change] Improved the printing operation. Now custom paper size has a separated field to assign it's coordinates. * [Change] The import errors now are written on a log file when "ignore import errors" is checked. * [Fix] Fixed an inconsistence when removing a table before the fk relationship linked to it. From now on (to avoid crashes) user must remove the relationship first and then remove the table. * [Fix] Fixed a minor bug on column's graphical representation that was incorrectly configuring the column descriptor for self-relationship fk's. * [Fix] Minor fix on model overview widget when showing large models. * [Fix] Fixed bug on pgmodeler-cli that was generating errors when running it outside the executable's directory. * [Fix] Fixed the calculation of pages to be printed. * [Fix] Fixed the type enumeration validation to accept space on the names. * [Fix] Minor fix for GiS types. Spatial auxiliary type name can null. * [Fix] Minor pgmodeler-cli typos corrections. * [Fix] Fixed a bug related to XMLParser and threads that was crashing pgModeler on Windows. * [Fix] Fixes on DatabaseImportHelper to correctly handle extension created types. * [Fix] Minor fix on PgSQLType::parseString() when creating datatypes from strings. v0.6.0-beta ------ Codename: Daring Mammoth
Release date: September 16, 2013 * [New] Added experimental reverse engineering support. * [New] Added an experimental option --fix-model to pgmodeler-cli to permit the user to fix the structure of an older model (generated in pgModeler < 0.6.0) or a corrupted file. * [New] Added an option to debug the import process printing any generated code to stdout. * [New] Added support for bidirectinal FK relationships. * [New] Added a statement "SET search_path [schemas]" on database model SQL code. * [New] Added missing PostgreSQL built-in types. * [New] Configured connections now can be duplicated in order to reuse it's attributes. * [Change] Minor change on main compilation script. The subproject "tests" are included only when compiling in debug mode. * [Change] Major change on validation widget. Fixes are now applied using a thread and can be aborted any time user want. * [Change] Change on model saving process. pgModeler will not deny to save invalidated anymore. Now it will ask the user to validate the model or save an invalidate one anyway. * [Change] Changed the behavior of the operation list. In the first exception the entire list are emptied. * [Change] Changed the way foreign keys are generated. They always will be generated at end of database definition to avoid reference breaking. * [Change] Minor improvements on model code generation and copy operations. * [Change] Removed deprecated "rtree" indexing type. * [Fix] Minor fixes on PgSQLType class. User types aren`t removed instead they are deactivated to avoid reference breaking. * [Fix] Minor fix on selecting the children objects of a schema. * [Fix] Minor fixes on scene and relationship avoiding crashes when destroying the whole graphical scene. * [Fix] Fixed bug on deleting self relationships. * [Fix] Minor fix on model export process. The last line of the SQL code now is correctly extracted and executed. * [Fix] Minor fix on sequence class to accept owner. * [Fix] Minor fixes on the splash screen control code. * [Fix] Fixed a bug that was crashing pgModeler at startup. * [Fix] Fixed a bug that was causing pgModeler to crash when loading operators which name contained '&' char. * [Fix] Fixed bug related to sequence values assignment. * [Fix] Fixed "Operation with not allocated object" error on applying validation fixes. * [Fix] Fixed relationship label position saving. * [Fix] Minor fix on main window. pgModeler now is not closed while the validation is running. v0.6.0-alpha1 ------ Codename: Daring Mammoth
Release date: August 05, 2013 * [New] Added catalog query for triggers. * [New] Added catalog query for rules. * [New] Added indexing method to exclude constraint. * [New] Added catalog query for constraints. * [New] Added catalog queries for tables and columns * [New] Added catalog queries for view, domain, sequence and user defined types. * [New] Added catalog query for collation. * [New] Added catalog query for operator family. * [New] Added catalog query for operator class. * [New] Object dependencies form now can list indirect dependencies. * [New] Added an environment variable to set a different location for crash handler executable. * [New] Objects that has SQL disabled now is shown with name striked out. * [Change] Minor change on MainWindow::closeEvent() * [Change] Moved app_style variable to GlobalAttributes::DEFAULT_QT_STYLE. * [Change] Minor improvement on Exception::getExceptionsText method. * [Change] Improvements on copy/paste operations. * [Change] Removed unused linker parameters. * [Change] Crash handler executable renamed to "pgmodeler-ch". * [Fix] Fixed possible leak when destroying a ModelWidget instance. Objects from scene were not being deleted correclty. Fix tests in progress. * [Fix] Fixed the "Save current session" option on GeneralConfigWidget that wasn't doing it's job correctly. * [Fix] Fixed a bug that was crashing pgModeler at startup when restoring previous sessions or temporary models. * [Fix] Minor fix on trigger code generation. * [Fix] Fixed incorrect loading of multiple triggers/rules on views. * [Fix] Minor fix on model validation. Operator classes are now checked during the validation process. * [Fix] Fixed generation of constraints in form of ALTER command. In some cases the constraint code wasn't appended to table's definition. * [Fix] Minor fixes on cast object. * [Fix] Minor fixes on databasemodel on retrieving dependencies/references for objects. * [Fix] Fixed crash handler path variable on MacOSX. v0.6.0-alpha ------ Codename: Daring Mammoth
Release date: July 19, 2013 * [New] Added the widget to swap objects IDs on model validation form. * [New] Added indexing type "spgist" to IndexingType class. * [New] Model validation and export now works with threads. * [New] Functions now have a "leak proof" attribute. * [New] VARIADIC key attribute added to function parameters. * [New] User now can completely disabled UI stylesheets by calling executable with param "-no-stylesheet". * [New] Added the class Catalog to handle the basis of reverse engineering by reading the pgcatalog/information_schema. * [New] System tablespaces pg_global and pg_default are now automatically created as new models are added. * [Change] Minor change on schema area selection. The entire schema area and children can be selected (and moved) by using "Select children" action or SHIFT + left-click. * [Change] Improved the transition between opened models. The problem was solved putting the temporary models saving in a separated thread. * [Change] Minor improvement on model restoration operation. Models that fails to be restored can be kept so the user can try to fix them manually (until pgModeler is closed). * [Change] Minor adjustments on model loading progress. * [Change] Minor chages on model export form. Export to DBMS is the default option. * [Change] Minor improvements on pgmodeler-cli. Added "--simulate" option to export dbms. * [Change] Disabled notice output to console for Connection class. User can re-enable it by calling Connection::setNoticeEnabled() [recompile source needed]. * [Change] Minor changes on PgSQL base types. "[NO] LEAKPROOF" removed from FunctionType class. * [Change] Minor improvements on SchemaParser, now its possible to make parser ignore empty attributes. * [Change] libdbconnect renamed to libpgconnector for semantics reasons. * [Change] Minor improvements on CrashHandler. Added buttons to load report and save embedded model when in analysis mode. * [Fix] Minor fix on linuxdeploy.sh script related to grep command execution. * [Fix] Fixed some leaks when destroying objects that are registered as PgSQLType (table, sequence, extension, domain, view, type). Now these type are correctly remove from user type listing. * [Fix] Fixed bad sql code generation when disabling sql of columns/constraints. * [Fix] Fixed dependency retrieving for operator classes. * [Fix] Fixed incorrect reference to "replicate" option on Roles. * [Fix] Fixed the "ignore duplicity" bug for columns when exporting model. * [Fix] Fixed library build order now libpgmodeler is built before libpgconnector. * [Fix] Minor fix on UI stylesheet related tooltips when using Fusion theme. * [Fix] Fixed the assignment of LC_COLLATE, LC_CTYPE and template db to database instance on DatabaseWidget. v0.5.2 ------ Codename: Lovely Duda
Release date: June 27, 2013 * [New] User now can append free SQL commands to database objects via "Append SQL" command. * [New] Introduced an experimental code completion on fields that permits code input. * [New] User can create default sequences from serial columns. This feature does not apply to columns generated by relationships. * [New] Introduced a feature to break relationship lines in straight angles and to remove all user added points. * [New] Added support for change font size on textboxes. * [Change] Removed the code "OIDs=FALSE" from table's SQL. * [Fix] Minor fix on Mac OSX deployment script. v0.5.1_r1 --------- Codename: Lovely Duda
Release date: June 13, 2013 * [New] Added deployment scripts on all platforms to compile and pack pgModeler. Note: On Windows the script must run on GNU environment port like Cygwin or MingW. * [New] Added an special field to columns to easily identify which relationship generated it. (only for columns added by relationship) * [Change] Model overview widget is now shown always stay on top. * [Change] Minor improvements on syntax highlighter. * [Change] Improvements on model validation widget. Output panel now shows the currently validated object (SQL validation). * [Fix] Removed from user defined type DTD the mandatory use of collation object. * [Fix] Collation's SQL generation corrected. Encoding is appended to LOCALE keyword. * [Fix] Corrected the wrongly used COLLATION keyword on user defined type. * [Fix] Corrected a bug that was crashing pgModeler when selecting relationship created objects on object finder result list. * [Fix] Extension object naming corrected. * [Fix] Extension object removal corrected. * [Fix] Corrected a bug on CLI that was not finding dependencies paths correctly. * [Fix] Minor fix on task progress widget on MacOSX. * [Fix] Splash screen corrected on MacOSX * [Fix] Corrected a bug on relationships that was crashing pgModeler when specifying column name pattern. v0.5.1 ------ Codename: Lovely Duda
Release date: June 1, 2013 * [New] Code base ported to C++11 and Qt5. * [New] MacOSX compilation now generates an application bundle: pgmodeler.app * [New] pgModeler is now capable of associate dbm files to its executable being possible opening a model from file manager by clicking it (except for MacOSX, see MacOSX notes). * [New] Added support for loading models by calling pgModeler gui executable from terminal (e.g. pgmodeler model1.dbm model2.dbm) * [New] pgModeler logo redesign. * [New] Added special primary keys support for one-to-one and one-to-many relationships. * [New] Relationships now supports patterns to define generated objects names. The manual suffix and auto-suffix generation are deprecated. * [New] Columns/constraints generated by relationship can have position changed on parent table. * [New] Added smallserial built-in datatype. * [Change] Improvements on model validation tool. pgModeler will not save the model while isn't completely validated. * [Fix] minor fix on point insertion on relationships. * [Fix] Corrected the wrongly displayed interval fields. * [Fix] Corrected self relationship validation. * [Fix] Corrected a bug on editing numeric data types. * [Fix] Minor fixes on build scripts (All platforms). * [Fix] Added the missing directive CONFIG+=console to main-cli.pro * [Fix] Minor fixes on task progress exhibition on quick tasks. * [Fix] pgmodeler-cli output fixed on Windows system. * [Fix] Table inheritance now copies columns with NOT NULL attribute correclty configured. * [Fix] Plugin build scripts fixed. Now generated libraries are correctly copied to build directory. * [Fix] Editing a column with 'numeric' datatype does not generate errors anymore. v0.5.0 ------ Release date: May 17, 2013 * [New] Complete main window restyling. * [New] Added a model validation tool to prevent reference break and name conflicts. * [New] Added an object navigation using keyboard on model widget. Pressing Alt + [left|right] keys will switch between graphical objects. * [New] Introduced the pgmodeler-cli. A command line tool to handle model export without loading the graphical interface. * [New] Added an option to list available configured connections on pgmodeler-cli. * [New] pgModeler now alerts the user when he try to save an invalidated model. * [New] pgModeler now aborts app closing when the user wants to do a last saving on modified models. * [New] Added support for hide relationship labels and table extended attributes on configuration dialog. * [New] Added "Recent Models" menu. * [New] Introduced the Xml2Object plugin to help on develpment testings. * [New] Added partial support for PostgreSQL Extensions objects. * [New] Added JSON datatype. * [New] Added support for rules and trigger on views. * [New] Added support for user defined range types. * [New] Added support for collations on composite types (user defined). * [New] Added built-in range types. * [New] Added support for INCLUDING/EXCLUDING options when dealing with copy relationships. * [New] Added support for EXCLUDE constraint support * [New] Added NO INHERIT option to check constraints. * [New] Added REPLICATION option to roles. * [New] Added FOR ORDER BY option and removed Recheck from OperatorClassElement. * [New] Added collation support for index elements. * [New] Added [NOT] LEAKPROOF key word to functions. * [New] Added collation attribute to domains. * [New] Required fields are now highlighted on editing forms. * [New] pgModeler creates system objects (e.g, public schema and SQL, C, plpgsql languages) when adding a new model. * [Change] Minor improvements on when showing Views. * [Change] Relationship points are moved when the parent relationship is being moved together with other objects. * [Change] Simplified the model loading operation. pgModeler will not try to recreate objects with unsatisfied dependencies instead errors will be raised. * [Change] Minor changes on FK relationship creation. * [Change] User-added foreign-keys had code generation changed. * [Change] Minor improvements on PgModelerPlugin structure. * [Change] DummyPlugin renamed to Dummy. * [Change] Improvements on building process for all supported systems. * [Change] Removed "Save widget positions" from configuration form. * [Change] Removed fullscreen mode from main window. * [Change] Removed unused/deprecated error messages. * [Change] Removed deprecated files COMPILING.md and PLUGINS.md. * [Change] Subproject libutil was renamed to libutils due to some conflicts on Linux systems. * [Change] Startup scripts removed. Since the environment variables are set by the installer on Windows and for Unix the variables are set using the new pgmodeler.sh script. * [Change] "Disable SQL code" option added for all types of objects. Except for textboxes and base relationships (view-table relatioships and fk relationships). * [Change] Fixed permissions for views. * [Change] PostgreSQL 8.x support completely removed. * [Change] Schema files (for SQL code) aren't organized in folders anymore. All code (for different PostgreSQL versions) will be in the same .sch file for each object. * [Change] Spatial types had SRID digit count upgraded to 5. * [Change] One-to-one relationships now generates unique names for UNIQUE constraints. * [Change] Several class improvements, performance tunings and forms readjustments. * [Fix] Minor fixes on connection configuration form. * [Fix] Corrected a bug that was crashing pgModeler when adding new schemas. * [Fix] Corrected a bug that was crashing pgModeler when validation model. * [Fix] Corrected a bug that was preventing the popup menu to be configured correctly on model widget. * [Fix] Menu bar style correctly applied on Windows system. * [Fix] Now relationship labels' position are restored when loading the model file. * [Fix] Minor fixes on database model code generation. * [Fix] Corrected the glicthy wheel scroll/zoom on model widget. * [Fix] Corrected the visual update of schema's rectangle when adding a column on a child table. * [Fix] Corrected a bug that was preventing a new model to be saved correctly. * [Fix] Minor fixes on model widget copy/paste operations. * [Fix] Models now are correclty auto saved when modified. * [Fix] Corrected operator's signature generation. * [Fix] Corrected a bug on textbox with unicode texts. * [Fix] Index and Rule editing forms now handles correctly unicode expressions. * [Fix] Corrected a bug that was avoiding the name "remembering" during relationship loading. v0.4.1_r1 --------- Release date: March 19, 2013 * [Change] user can now prepend a CTE (commom table expression, a.k.a "with queries") on view's definition. * [Change] user can now create a single reference containing a expression that defines the entire view. * [Change] improvements on permissions, user now can control GRANTs and REVOKEs via permission editing form. * [Fix] fixed invalid UTF-8 chars on function definition. * [Fix] fixed unavailable "nocreatedb" role option. v0.4.1 ------ Release date: March 16, 2013 * [New] introduced the "Disable SQL code" option for roles/tablespaces. * [New] user now can add objects by right-clicking group items on "Model Objects" dockwidget tree. * [New] added the abbreviation for time and timesptamp data types both with timezone: timetz and timestamptz. * [New] introduced a object highlight action on "model objects" dockwidget. * [Change] major changes on SQL code generation/export. Introduced a token to help export process to identify the end of each DDL command. * [Change] minor improvements on role editing form. * [Change] when generationg XML code empty tags that stores pure texts are now created with a tag in order to avoid malformed xml code. * [Change] index FASTUPDATE and FILLFACTOR params is now activated according the indexing type. * [Change] index fill factor now is optional. * [Change] chinese, portuguese and french translations update. * [Fix] pgModeler no longer crash when in error state (showing an exception) and try to auto save the models. * [Fix] minor size adjustments on forms. * [Fix] corrected a bug related to one-to-many relationship validation (endless looping) when changing to automatic suffix generation. * [Fix] corrected the "apply button disabled" bug on constraint edit form. * [Fix] IN/OUT keywords now appears on functions signature. * [Fix] corrected translation bypassing on index edit form. * [Fix] pgModeler no longer crash when triggering the print action. * [Fix] triggers no longer complains about assigning a function without parameters. * [Fix] corrected the loading process for indexes. * [Fix] corrected some bugs related to GiST and index sorting. * [Fix] minor fix on quick rename action when renaming a column with primary key. * [Fix] corrected a bug that was causing pgModeler to complain about duplicated elements when loading indexes. * [Fix] corrected a bug related to main window title when save a model with a different filename. * [Fix] fixed a bug related reload a model file after editing a foreign key. * [Fix] corrected a bug related to invalid chars at task progress. v0.4.0_r1 --------- Release date: March 04, 2013 * [New] introducing the "pgModeler Wiki" as the main project's support resource. * [Fix] when main windows is closed the overview widget is closed too. * [Fix] corrected a bug on operation list widget that was converting an item name to UTF-8 twice. v0.4.0 ------ Release date: February 27, 2013 * [New] introduce a "New object" submenu when activating the schema context menu (right-click) * [New] tables and view are now graphically separated by colored rectangles representing its schemas. * [New] compiling pgModeler now works perfectly on Mac OSX system. * [New] introduced the 'Quick actions' menu that permits: rename, move to another schema, change onwer and edit permissions. * [New] the relationship editing form gained an "advanced" tab which shows the objects generated and/or represents the relatioship itself. * [New] the user now can add relationships only creating foreign keys on tables (fk relationships). * [New] added a french UI translation (provided by [toorpy](https://github.com/toorpy)). * [Change] all relationships type are now grouped together on "Model objects" widget. * [Change] chinese UI translation updated (provided by: [Bumanji](https://github.com/Bumanji)). * [Change] user now can remove fk relationships directly without needing to remove the related foreign keys. * [Change] field semantics adjustments on relationship editing form. * [Change] graphical object can be now selected and have the context menu activated only with a single right-click. * [Change] minor improvements on plugin base class: PgModelerPlugin. * [Change] widget size adjustments to better showing on Mac OSX system. * [Change] crashhandler now shows the compiled and running versions of Qt. * [Change] french UI translation reviewed and updated (provided by [babs](https://github.com/babs)). * [Change] 'Objects of Model' when used as object picker now expand all the nodes by default. * [Change] 'Objects of Model' now memorizes the tree state when update an object and / or opening another model. * [Change] PostGiS 'geometry' type can have a free assigned SRID value. * [Change] editing forms when shown set the focus on the first field, generally, the object name. * [Change] 'Objects of Model' widget displays the nodes in alphabetical order. * [Change] the printing options for the model were moved to the general configuration form. * [Change] relationship validation method now removes fk relationships when the foreign keys that gerenates is no longer exists. * [Change] copy/cut/delete commands does not manipulates system objects like schema public and languages C, SQL and plpgsql. * [Change] pgModeler startup scripts are now path location free meaning that software can be installed where the user desires. * [Fix] corrected a bug related constraint name on domain XML code generation. * [Fix] corrected a bug that was causing crash when click "Apply" on Type editing form with fields not filled. * [Fix] corrected the "invalid constraint name" error on domain editing form. * [Fix] corrected the empty DEFAULT clause for columns, types and domains. * [Fix] corrected a bug related to incorrectly initialized OID attribute when creating tables. * [Fix] corrected a bug when creating a view with WHERE statement. * [Fix] corrected a bug related to one-to-many relationships semantics. * [Fix] corrected some bugs that was causing crash when removing all operations from operation list. * [Fix] minor bug fixes related to object selection over the model. * [Fix] corrected a bug on load model dialog filter (chinese UI only). * [Fix] pgModeler no longer crash when editing objects style. * [Fix] corrected bug that was deleting two sequeces at once. * [Fix] pgModeler no longer crash when removing (disconnecting) relationship that has special primary keys. * [Fix] minor fixes on the startup scripts on all platforms. * [Fix] corrected an incorrect reference to output stream on Windows system. * [Fix] shortcuts and popup menu now works correctly when selection an object on 'Objects of Model' tree. * [Fix] the pgsql base types (represented by tables, sequences, user defined types and domains) are now updated correctly when the related schema is renamed. * [Fix] corrected some weird SRID value on non spatial types. * [Fix] corrected bug on objects table when move rows to last / first. * [Fix] typos corrections on some error messages and dialog titles. * [Fix] 'referenced columns' combobox on constraint editing form are filled correctly when the dialog is shown in a second time. * [Fix] pgModeler no longer crash when creating many-to-many relationships. * [Fix] pgModeler no longer crash when the user activates the print dialog. * [Fix] corrected bug that was removing fk relationships when pasting objects. * [Fix] corrected SQL syntax error of 'timestamp with time zone'. * [Fix] corrected constraint type showing on editing form. * [Fix] corrected bug on cyrillic typed enums and check constraints expressions. * [Fix] corrected bug on enumeration type editing form. * [Fix] corrected bug on 'truncate' table privilege code generation. * [Fix] corrected column default value code generation. * [Fix] dummyplugin build process corrected on Windows. * [Fix] corrected bug on column comment code generation. * [Fix] corrected bug that was deleting two tables at once. v0.3.4 ------ Release date: October 17, 2012 * [New] added chinese UI translation (provided by [gjunming](https://github.com/gjunming)). * [New] added basic support for PostGiS 2.0 only data types: box2d, box3d, geometry and geography (suggested by [george-silva](https://github.com/george-silva) on [issue#28](https://github.com/pgmodeler/pgmodeler/issues/28))(EXPERIMENTAL). Note: when using these data types make sure that PostGiS extension is installed on database cluster since pgModeler WILL NOT install it automatically or generate the command to do it! * [New] added a model restoration feature to reopen models after unexpected quit (crash). * [New] added a crash handler to pgModeler. Now signal SIGSEGV is trapped (in most cases) and the crash handler pops up permiting the user to generate an error report. (EXPERIMENTAL) * [New] to facilitate the error reporting exceptions stack now can be showed in text format. Users can post the complete error stack when creating an issue. * [New] icon added to pgModeler executable (Windows only) * [Change] update on pt_BR translation file. * [Change] removed "pgmodeler" prefix from translation files. * [Change] added the field "Underline" on textbox editing form. * [Fix] corrected the "AlwayOnTop" bug on model overview widget. ([issue#30](https://github.com/pgmodeler/pgmodeler/issues/30)) * [Fix] little fix on startup scripts. Corrected de PGMODELER_ROOT on both Linux and Windows systems. ([issue#29](https://github.com/pgmodeler/pgmodeler/issues/29)) * [Fix] corrected the referece to environment variables PGMODELER_*. Now pgModeler search for necessary paths on current directory if some of these variables are not set. * [Fix] corrected the validation of UTF-8 names that have 3 bytes length. * [Fix] corrected the sources path reference on project (.pro) files. Now lupdate command do not generates empty TS files. * [Fix] corrected a bug that was causing crash where user try to edit protected objects. * [Fix] corrected the exhibition of UTF-8 messages on ```throw``` statements. v0.3.3 ------ Release date: October 09, 2012 * [Change] pgModeler license were update to GPLv3. * [Change] Error massages and entire UI were translated to en_US. Now people can contribute more easily with translation files. [(issue#8)](https://github.com/pgmodeler/pgmodeler/issues/8) * [Change] The left side image were removed form all forms giving more space to show widgets. * [Change] pgModeler now shows a messagebox at startup if any critical error is raised instead to show them on stdin. * [Fix] Translation files now are correctly loaded depending on system language. [(issue#23)](https://github.com/pgmodeler/pgmodeler/issues/23) * [Fix] Compilation process and execution is working correctly on Windows system. [(issue#11)](https://github.com/pgmodeler/pgmodeler/issues/11) * [Fix] No more crashes when dealing with relationships that have special triggers/indexes/columns. [(issue#8)](https://github.com/pgmodeler/pgmodeler/issues/8) [(issue#24)](https://github.com/pgmodeler/pgmodeler/issues/24) v0.3.2 ------ Release date: September 27, 2012 * [Change] The default extension for the models now stands for ".dbm" [(issue#9)](https://github.com/pgmodeler/pgmodeler/issues/9) * [Change] Tables and sequences now can be used as function return type as well parameter type. This is valid for other objects that make use of base types (except for table columns). * [Change] The relationship conversion command now need to be confirmed by the user. * [Fix] Compilation process now works correctly on Windows system. * [Fix] Adjusted the size of some forms to show their fields properly. * [Fix] The "make distclean" command now make the correct cleanup on build/ directory. * [Fix] Startup scripts "start-pgmodeler.(sh|bat)" where adjusted. To prevent errors pgModeler need to be started through these scripts. * [Fix] Corrected the reference to the plugins directory. [(issue#7)](https://github.com/pgmodeler/pgmodeler/issues/7) * [Fix] The action "New Object -> Tablespace" now is displayed properly. v0.3.1 ------ Release date: September 18, 2012 * [New] Relationships generates column suffixes automaticaly. This behavior can be changed on the relationship editing form. * [New] Added two samples to pgModeler. * [Change] Tables are now created with "With OIDs" attribute by default. * [Change] The graphical update method on overview widget has improved preventing unecessary processing. * [Fix] Class CenaObjetos now doesn't delete objects twice. * [Fix] Eliminated bug that caused crashing on pgModeler when closing a model. v0.3.0 ------ Release date: September 12, 2012 * [New] Added a model overview widget. * [New] Added export feature that generates PNG image of the models. * [Fix] Corrected the naming of columns generated by many-to-many relationships. * [Fix] Corrected generation of XML/SQL code by the model. v0.2.0 ------ Release date: August 31, 2012 * [New] Added an interface to implement third party plugins. Check [PLUGINS.md] (https://github.com/pgmodeler/pgmodeler/blob/master/PLUGINS.md) for details. * [New] Added a short cut to easily control the zoom on the model. Use Crtl + Mouse wheel up (zoom up) or Crtl + Mouse wheel down (zoom down). * [Change] Due to the plugin interface the compilation method changed back to the form of shared libraries + executable. * [Fix] No more crashes when removing an primary-key of a table which has relationship with other tables. [(issue#2)](https://github.com/pgmodeler/pgmodeler/issues/2) * [Fix] Adjusted the semantics of one-to-one relationships. v0.1.2 ------ Release date: August 24, 2012 * [New] Added a functionality to save modified models before closing the software. * [Change] Updated the en_US dictionary with the texts of the above functionality. * [Fix] Dockwidgets no longer disappear unexpectedly when the main window is minimized. * [Fix] Operations performed before creating a table object (column, constraint, trigger, index, rule) are no longer removed when any exception is thrown in the creation of these object. * [Fix] Fixed bug that caused user-defined types had wrong SQL/XML code generated by the model. * [Fix] Functions and Types received an own range of id in order to create these objects in a correct way. * [Fix] Eliminated segmentation faults caused by the destruction of relationships which possessed attributes/constraints. * [Fix] Adjusted the translation to SQL code of one-to-one relationships. * [Fix] Eliminated segmentation fault when editing relationships and/or undoing an operation involving a relationship. * [Fix] Identifiers relationships now correctly display the thick line beside the weak entity. v0.1.1 ------ Release date: August 14, 2012 * [Fix] Correction of the actions for inserting graphic objects (table, text box, vision and relationship) in Windows environment. * [Fix] Correction on the display of the maximize button in the window decoration in Windows environment. * [Fix] Adjust on the position and spacing of widgets in editing forms. * [Fix] The XML parser can now correctly read DTD files in Windows environment. * [Fix] The compilation method is no longer in the form of shared libraries + executable and passed to be as standalone executable only. v0.1.0 ------ Release date: August 9, 2012 * First pgModeler release. pgmodeler-0.9.4/CODE_OF_CONDUCT.md000066400000000000000000000064301416010000600162700ustar00rootroot00000000000000# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at raphael@pgmodeler.io. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq pgmodeler-0.9.4/LICENSE000066400000000000000000001044671416010000600145070ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 3., or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . pgmodeler-0.9.4/README.md000066400000000000000000000130301416010000600147420ustar00rootroot00000000000000Building status --------------- [![Linux build](https://github.com/pgmodeler/pgmodeler/workflows/Linux%20build/badge.svg)](https://github.com/pgmodeler/pgmodeler/actions?query=workflow%3A%22Linux+build%22) [![Windows build](https://github.com/pgmodeler/pgmodeler/workflows/Windows%20build/badge.svg)](https://github.com/pgmodeler/pgmodeler/actions?query=workflow%3A%22Windows+build%22) [![macOs build](https://github.com/pgmodeler/pgmodeler/workflows/macOs%20build/badge.svg)](https://github.com/pgmodeler/pgmodeler/actions?query=workflow%3A%22macOs+build%22) Introduction ------------ pgModeler - PostgreSQL Database Modeler - is an open-source data-modeling tool designed for PostgreSQL. No more DDL commands written by hand, let pgModeler do the job for you! This software reunites the concepts of entity-relationship diagrams and the features that PostgreSQL implements as extensions of SQL standards. Please, let me know how pgModeler is working on your system! Help improving this project, give your feedback about the software or report any bug at [Issues](https://github.com/pgmodeler/pgmodeler/issues) page. Additionally, follow pgModeler on [Facebook](https://www.facebook.com/pgmodeler) or [Twitter](https://twitter.com/pgmodeler) and be up-to-date with new features, fixes and releases. Licensing --------- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 3. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See [LICENSE](https://github.com/pgmodeler/pgmodeler/blob/master/LICENSE) for details. Donate to pgModeler ------------------- Much effort, coffee, chocolate, time and knowledge is being devoted to this project so that a reliable and constantly improved product can be delivered to the community. If you liked pgModeler and think it deserves a contribution, please donate any amount (via PayPal) at [project's official site](https://pgmodeler.io). Developers and Reviewers wanted! -------------------------------- pgModeler has reached a state where its developer cannot handle all the modifications and new features requests alone anymore. So if you know C++ and Qt and want to contribute with coding let me know! I'll be grateful for any help to the project! Compiling/Installation ---------------------- For details about the installation process from source code, visit the [Installation](https://www.pgmodeler.io/support/installation) section. If you don't want to compile pgModeler there are binaries available for purchase at [official site](http://www.pgmodeler.io/purchase). You might want to check out the [official plugin repository](https://github.com/pgmodeler/plugins) as well. Known Issues ----------- * Due to the usage of Qt's raster engine to draw objects, the process of handling objects on the canvas tends to get slower as lots of objects are created causing constant CPU usage. A heavy performance degradation can be noticed when dealing with models with ~500+ tables and/or relationships. There're plans to improve the speed of drawing operations, for large models, in future releases. Changing the relationship connection mode and render smoothness options may help in the performance when handling big database models. * pgModeler can't handle correctly the importing of complex CSV files (multilined cell values) in data manipulation form, or pasting CSV content of that complexity on that dialog. * Due to the CSV importing limitations, any value copied or exported from pgModeler in CSV format will be automatically formatted in the proper way that the tool can handle (by escaping any special character like line breaks and tabulations). If you intend to use CSV files generated by the tool in other software you have to revert back that characters escaping so the file can be read properly by third party softwares. * The diff process still presents false-positive results due its limitations. Sometimes, there is the need to run the process twice to get the full changes. * pgModeler does not fully supports the [quoted identifier notation](http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS). When using quoted identifiers only the following characters are accepted in the middle of names: a-z A-Z 0-9 _ . @ $ - / \ space. * pgModeler is unusable in sandboxed Mac OS X installations. To workaround this issue you'll need to deactivate sandbox usage to run pgModeler properly. There is no plan to support sandboxing in Mac OS X. * pgModeler can't be compiled with Microsoft Visual Studio due to use of some gcc/clang extensions. * Compiling the source using '-Wconversion' (disabled by Qt in its defaults) generates a lot of warnings. These warnings are 99% harmless, I don't plan to fix them in a near future. * pgModeler can sometimes crash during the export, import or validation process due to some threaded operations that, depending on the size and the arrangement of the model, cause race conditions. * Due to particularities on executing bundles on MacOSX, the file association does not work correctly on this system. So it's not possible to open a model file by clicking it on Finder. Changelog ---------- The detailed changelog can be seen on [CHANGELOG.md](https://github.com/pgmodeler/pgmodeler/blob/master/CHANGELOG.md) file. Older Releases/Code ------------------- Older releases of pgModeler can be found at [Sourceforge.net](http://sourceforge.net/projects/pgmodeler) pgmodeler-0.9.4/RELEASENOTES.md000066400000000000000000000115211416010000600157010ustar00rootroot00000000000000v0.9.4 ------ Release date: December 17, 2021
Changes since: v0.9.3
Attention: the database model file structure has changed since the last stable 0.9.3. Models created in older releases will certainly fail to load due to incompatibilities because some attributes in the XML code don't exist anymore or have changed during the development of 0.9.4. Before loading your database models in this new release, please, make sure to have a backup of them all and follow the steps presented by the model fix tool to patch the documents' structure. Not paying attention to this situation may cause irreversible data loss! If the fix procedures aren't enough to make your database models loadable again, please, ask for help at the official support channels!
Summary: it was quite a challenge to develop version 0.9.4 during the year 2021 but we finally made it, the last pgModeler of the series 0.9.x is ready! This one has a vast set of improvements over 0.9.3, being 51 new features, 104 enhancements, and 73 bug fixes that will make a big difference in the overall usage of the tool.
The first improvement in 0.9.4 is the ability to put objects in multiple layers which was not possible in previous versions. The user has now the ability to set up custom colors and labels for each layer enhancing the database model visualization and semantics. Still in the database model design, one can now define a custom color for canvas, grid lines, and page delimiter lines which can help a lot those who aren't comfortable with the excessive glare produced by the default color schema.
This release also improves the support for some PostgreSQL objects by bringing the configuration parameters and transform types to functions and procedures, adding the support for PARALLEL attribute on functions, and the support for included columns also known as non-key columns on indexes. It's worth mentioning that the import and diff processes were also improved to support all the mentioned improvements in those objects. Besides, the diff process is now capable of generating GRANT and REVOKE commands to set up new role memberships.
The data type configuration widget received a simple improvement which adds a significant reduction in the time spent to configure a data type. Now, the user can just type the name of the desired data type to be used instead of selecting it by using the mouse. After typing the data type name just hit the tab key to jump to the next field and the data type will be automatically configured. Seems a silly fix but it adds speed when you need to repeatedly create columns in a table, for example.
In the SQL tool, is now possible to drop databases quickly from the databases listing. Previously, there was the need to browse the database first and then drop it. In the database browser widget, the tree items collapse state is saved and restored after any updates requested by the user, improving the overall experience on that module. In data manipulation form, the sorting operation performed when clicking columns was adjusted. Now, the sorting will be triggered by holding the control key and clicking the desired column, and if the user only clicks a column without holding the control key will cause the entire column to be selected in the grid.
Attending to some requests, pgModeler is now capable of exporting the database model in split SQL files instead of generating a single SQL file representing the entire database. In this export mode, the files are named in such a way to represent the proper order of creation, which means that running the scripts one after another will create the whole database like it was created from a single file.
Due to the introduction of a new syntax highlighting configuration file (for code snippets configuration), pgModeler will, from now on, create missing configuration files at startup. This will avoid breaking the tool's execution when it detects the absence of any configuration file. Also, during the copy of these files, pgModeler will enforce the write permission over them to avoid access problems on some systems that store template settings on read-only paths.
The command-line interface was patched in such a way that now doesn't crash anymore when performing a diff operation in which a database model is used as input. Another improvement to the CLI is the introduction of the option --force in the mime type handling operation. Also, a patch was made in such a way to avoid the usage of option '-platform offscreen' explicitly when calling the application.
Finally, there is a bunch of other new features and bug fixes implemented in almost all parts of the tool which improves stability and reliability. I kindly invite you to read the CHANGELOG.md file of the 0.9.4 development timeline to know everything in detail.
pgmodeler-0.9.4/apps/000077500000000000000000000000001416010000600144315ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-ch/000077500000000000000000000000001416010000600167775ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-ch/pgmodeler-ch.pro000066400000000000000000000014151416010000600220700ustar00rootroot00000000000000include(../../pgmodeler.pri) TEMPLATE = app TARGET = pgmodeler-ch windows:RC_FILE=res/windows_ico.qrc windows:RCC_DIR=src/ SOURCES += src/main.cpp \ src/crashhandlerform.cpp HEADERS += src/crashhandlerform.h unix|windows: LIBS += $$LIBGUI_LIB \ $$LIBCANVAS_LIB \ $$LIBCONNECTOR_LIB \ $$LIBCORE_LIB \ $$LIBPARSERS_LIB \ $$LIBUTILS_LIB INCLUDEPATH += $$LIBGUI_INC \ $$LIBCANVAS_INC \ $$LIBCONNECTOR_INC \ $$LIBCORE_INC \ $$LIBPARSERS_INC \ $$LIBUTILS_INC DEPENDPATH += $$LIBGUI_ROOT \ $$LIBCANVAS_ROOT \ $$LIBCONNECTOR_ROOT \ $$LIBCORE_ROOT \ $$LIBPARSERS_ROOT \ $$LIBUTILS_ROOT # Deployment settings target.path = $$PRIVATEBINDIR INSTALLS = target pgmodeler-0.9.4/apps/pgmodeler-ch/res/000077500000000000000000000000001416010000600175705ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-ch/res/windows_ico.ico000066400000000000000000012615361416010000600226260ustar00rootroot00000000000000 ( V (~ 00 %(  NN h^( 8kq|yv`B4<ec. + ? YfqroiR 8 +  :cKI%   #&%R5{Tis~{rfsLB.&&"    $*--/6=5Pksai%E :4,+,(!    #'-365:B)Ub{SnL=7441)%  #(+,-................................................--,($  #*--0 :?Yz &#/&3'5(5(5'5&4%2!," o6L1.)*% #/8?DFHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJHGEA9/%  !OE #%1/?5G;MBWG_IaI`G_G_G_H`HaE[>R7J3D+:!,qO7  #3BQZafghiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiihghea[RE5'   `$b$*88HCWH_G^E\CX>R9K6G4C2B2B2B3D5G9L>SAWCZD]E\;O2B". Li;.BWiwxkZH6'D#-5CEXJ_G]?S8H2?*6$. )%!"&!+$/*62@5H?UBZC\;Q+;& t&!6Oh}nZG8/*((((((((((((((((((()((&45r%/:JG\J_AT7F.;#,!  !$/.<5G@VCZ?U1A& E 1NkkXLEBAABCBBBBBBBBBBBBBBBDC@EZ #+8FG[H]?Q3@%.     '22A>RCZ=S/>! js/ 9B3t{*{m$oa dV[OVKSHRGQFQFPFQFQFQFQFQFQFQFQFQFQFQFQFPFQFQFPFPFPFPEPEOEODNDNDNCMDNDMDNDNDMDMCNCNDNDODOEPEPEPFPFQFQFQFQFNDVLRI zj`\\]_`abbbbbbbbbbbbbbba`N0>DVJ]BS1> (   ",1B?UD[;N&4 3AMõYķ]ķ\Ķ\Ķ\Ķ\ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\Ķ\ķ\ö[Ķ[õZµZ´Z´ZZZYXWWVVVVVVWWWXXYZ´ZµZö[Ķ[Ķ[ķ\ķ\ö\˺YC>6yssvz}~L "+=LJ]GY7D"*   $/6HCYBX2A+/F̽atspqqrrrssssssssssssssssqqpppommkjji̿h˾hʾh˾h˾h̾ghiiklnopppqqrpx{R>7F,6DUL_AQ*3     ,9>SE]9K ) 0-GelͺYƲSųVųVųVųVųVųVųVųVųVųVųVųVųVŲVŲVŲVųVųVųVųVIJUIJU±UTSRPPNLKIIHGGGHIIIKLNPQRTU°UñVIJVîMξ_xS:2>3?HZK]9G$    )9KE\%!               6/ MB RG RG TH WJ \O aS iZqa{jr{+MɾiJ2+ &(0ЁXWCSM^DR  '>RG^-; S.G˾bg¯L3'$&%$$$##$#"!!!! fZ,'      6. MB RG QF UI XM _Q fWo_ wgq'GcF0( &(/р}| /8P`HV)/  )3DXAU )$.G˾bg¯L3'$&%%%$$$$#"""" r93     =4 WJ RF RF VI \N dU k]uf"A\B-& &'-~DD!N^JX:C  5CI^8Ig.G˾bg¯L3'$%%%$$$%$#"""!r5.     '" E; TH SF UH \N bTj]x*$$%,||vt;DSbCO   '@SF['2,.G˾bg¯L3(%&&%%%$$$###!sd3,        :2 RH RF TG ZNbUyn7P~:'"#$+yz}AA!'SbJW4<   1=H]68B̾ch®L5+)*)(('%RI  nTVTUTTSS~S~R~R~R~Q~Q}Q}Q|P|P|O|N|MzMzM{MzLzM|LjJ.+/  VR0bY(aad9???????????????????????????=;,(N>̾bh®L5,**))((p (%  YMDZVUUUUUUSSSR~R~R~Q~Q~Q}P|P|O|N{NzO{N{M|L|MkG;1(  YU1d[)cbeBEzdiEDLMJJKKKKKKJJKKGGYY00BBLLMMKKJJFDKJksrGT, *9EOVY\]]]]]]]]]]]]]]]]]]]]]]]]]]]\X! f9ͿchL5,**))((dX .('vUVUVUUUUUTTTSSS~R~Q}Q}P|Q|P|P|O|O|N|M|N|OjA;.  \X3g_+"ffhFJ}dhCBLLJJKKKKKKJJKKEEWW##55LLMMIIGGHHJJFFJJkszO\3 ':L^ksx{||||||||||||||||||||||||||{{w7ͿchL5,**))(#E>  jYKWXWWWUVUTUUUUTSS~S}Q~R~Q~Q~Q|P|P|P|O{O|NlJ92/  `[5mc-"ijlHK}bfAALLJJIIIIIIJJKKDDWWCCGGJJEEGGIIHHIIFFHHiq|T`6 /F^tx5chL6-**)*(m_ =40}\[WWWWVVVUUUUUUTS~SS~R~Q~Q~Q|Q|Q|Q|O}O~QxaF   fa8tj0 $mmpGK}beA?JJHHHHHHHHHHJJEEWWGG??HHGGHHHHHHIIEDGGhp{Ta6 1Lhu2οciL6-)**)'PF iXIVXYXXXWWWVVVTTUUTTT~S~R~R}R}P}P}Q~PRtQE92   rl?|q4 !'qqtEI|bfA@JJHHHHHHHHHHJJDDWWCCAAHHGGGGGGGGHHDDGGhp{T_2+!]>$eCFN3N>*a3"w+ $ "                                ~q0ͿciL5,*+*)y#4. 4,(tT[XYYYYXXWWWWVVUUUUTTS~S~S~Q~QRVuSSE7 43}Gy8#"#(uux?BxcgCBJKHHGGHHHHHHJJDDWWCC@@GGFFFFFFFFGGDCGGhp{PZ+P6L5*wPQ.W/Z.X,U+{R*wP(uN(sL(qK(qK(qL(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(qK(rL'pKR7|o0ͿdiL6-**©+)dYYJ;Y[YZZYYYYXXXXWWVVUUUTTTTTT{RhMK@9      LF'P<&!#$*zy|36qwcgCBIJHHGGGGGGGGIICCVVCC@@GGFFFFFFFFGGDCHJir{JTY;K.+zRj1`:p9n:o:o:p:q:q:q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;q;qvx3c3^@rCvBsBtBtBtBtBtBtBtBtBtBtBtBtBtBtBtBtBtBtBtBtAtBtAtBtBtBtCv8d.X=t;t"dC zm/diL6-*ū,*WM 1*&lQ_]^]]]]]\\\\ZZZZYYYYYWmQ4.-    /)rc.OlK2+ &(0ЂQPPUtzZ\BAHHFFFFFFFFFFFFEEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBCCCCDDCCCCCCCCCCDDA@DD\bvm{$)VU9*+yPf4c>x2a7cOSnjPQˆQˆQˆRˆRˆQˆQˆR‰Q‰RˆRˆQˆQˆRˆRˆRˆQˆRˆQˆRˆPˆQˆPˆQˆQˆQTnj@p,V=u;t"dC zm/diL7.,ê-)LC H>4ac^_^^]]]]]\\\\[[ZZYYX~Y<4/     ,'sc0RoM3, &)0т||>@}be@?IHGGGGGGGGFFFFEE@@==>>>>>>>>>>>>>>>>>>>>>>>>>>==============================<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>DDDDDDDDDDDDDE@?EFdly^g9U9*+yPf4c>x2a8eSYɐUËVŌVŌVŌUČUČVČVČUŌVČUŌUČVČVŌUŌUČUČVČUČVČUČVČVČUČVČVČUċUʎ@q,V=u;t"dC zm/diL7.©,,y&2/`RBab_``_^^^]]]]\\\\[[ZZWfUH  .)k\ 2TqN4, &(0҂$&hnhkDDGGFFGGGGFFGGGGFFGGGGGGGGGGFFFFFFGGHHHHHHGGFFGGGGGGFFFFFFFFEEEEEEFFFFFFGGFFEEFFFFFFEEEEEEDDDDDDDDDDEEEEEEFFEEEEDDDDDDDDDDCCCDA@IKku{JQ#U9*+yPf4c>x2a9fU[ɑWÌXčXčXčWčWčXčXčWčXčWčWčXčYčXčXčWÍXÍWčXčXčYčXčWčXČXÌVŠTȌ?p,V=u;t"dC zm/diL7.Ī,,zk#$")$!vbIaa`a``___]^]]\\]\\[[[],%%  ;4m]t 2TqN3- &(/ҁ X\otRSDDHHGGGGGGGGFFGGGGGGGGGGFFEEEEEEFFEEEEEEFFFFFFFFEEFFFFFFEEDDDDDDDDDDDDDDDDEEEEDDEEEEEEEECCCCCCDDDDCCCCCCCCDDDDDDDDDDDDDDEECBCDTXt}y6;v U9*+yPf4c>x2a;gZ_˓ZŎ[Ɛ[Ɛ[Ɛ[Ɛ[Ə[Ə[Ɛ[Ő[Ə[ŏ[Ə\Ə\Ə\Ə\Ə[Ő[Ő[Ə[Ə\Ə\Ə[Ə\Ɛ\ƏYōU‹Unj@p,V=u;t"dC zm/diL7.Ǭ.,^S  92-sYd_`a`a```__^]\\]\][\[}d   ?6bUxgoz 2UqM2, ')0ՃDBDGx~`cA@GHGGGGGGGGFFGGGGGGFFFFGGGGGGGGFFEEEEFFEEEEEEEEFFFFFFFFFFFFFFFFEEDDDDDDDDDDDDEEEEEEEEEEEEEEEEEECCCCCCCCDDCCCCCCDDDDDDDDDE@@EF`fymx#'QU9*+yPf4c>x2a;g]Žc̕^Ƒ_ǒ_ƒ_Ɠ_ǒ_ǒ_ǒ_ƒ_ǒ_Ǒ_Ǒ_Ƒ_Ǒ_Ƒ_Ƒ_Ǒ_Ǔ_Ǔ_Ƒ_ƒ_Ǒ_Ƒ_Ǒ^ǒ]ƐYōUÊUǍ@p,V=u;t"dC zm/diL7.ɮ.,OF G>9hh`babaa`aa____^]\]]]\mY "D;XKdUj[xhu0SoL5- ()/{zzec)*qujoDEGGGGGGGGGGGGGGGGGGFFFFGGGGGGFFFFGGGGFFEEEEEEEEFFEEEEEEFFFFFFFFFFFFFFEEDDDDDDEEDDDDDDEEEEEEEEDDDDEEEEEEDDCCCCCCCCCCCCCCDDA@KMlt{U\0U9*+yPf4c>x2ax2a=hcœjϜeɕeʖeʖfɗfɗfɖfɖfɖfɗfɗeɗfɗfɗfɗfɗfʗeʗfɖfɗfʖeʗfʖcɕaǒ\ŐXčUŠUǍ@p,V=u;t"dC zm/diK6.ɯ.-SK OB2`hbcccbaa``a````__^]]]|f /+TIQFWL^ShZvenw)IĸeG90                  k47}imBBHHGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGGFFFFFFGGFFEEEEEEEEFFFFEEEEFFFFFFEEEEFFEEDDDDDDDDEEEEEEEEDDEEEEEEDDDDDDDDEEA@JJgm~ho"IU9*+yPf4c>x1a?hgƖnОiʘi˙i˙jʙjʙiʙjʙjʙiʙiʙiʙjʚjʚjʚjʙj˙i˚iʙiʙjʙi˘gʗdɕ`Ȓ\ƐXčUŠUǍ@p,V=u;t"dC zm/diL7/ɮ.,TK  TG9bhcdddcbbbaaa``a`___^]b'$"  KBSGTIXMaTl\sd|l&C]Jr.vk-|p.s/v/w0w1x1y1y1y1y1y1y1y1y1y1x3y-siT!^btxRSDCGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFFFGGGGGGGGFFFFFFFFFFEEEEEEEEFFFFEEFFFFFFFFEEEEEEEEDDDDDDDDEEEEEEDDEEEEEEEFDCDDUYv{HM U9*+yPf4c>x1`?ikȗrѠl˚n̜n̜m̜m˜m̛m̚m̜m̜n̜n̜n̛n̛n̛n̜m̜m̛n̜n̜l̛j˙gʘcɕ`ǒ\ŐXčUŠUǍ@p,V=u;t"dC zm/diL7/ɯ/-UL  UH8bhdeedddccbbaaa`````_^\PD9 /*RGTGTHZMbThZpb"|;V[ZŹcgjlnooppppppppppqmWR58|jnEDFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGGFFFFFFEEEEEEEEEEFFFFEEFFFFFFFFEEEEEEEEEEDDDDDDDDEEEEEEFFABJMgnkt')]U9*+yPf4c>x1`@jmșuӢo̜p͞p͞p͞p͞p͝p͝p͞p͞p͞p͞q͞qΞpΞp͞p͞p͝p͞q͞n͜kʚgɗcɕ`ǒ\ŐYčUŠTǍ@p,V=u;t"dC zm/diL81ɯ/-TK  QE9hkdeeeeeddccbbaaa````__t\ ;4RFSGSHZM_Rf[!vl2AKQUZ^Ƹa˼cϿdfffghhhhhhhiew!_cv|WYEEFFGGFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFGGGGGGFFFFFFFFFFEEEEEEFFFFFFEEFFFFFFFFEEEEEEEEEEDDDDEEDCEFY^x|KP &U9*+yPf4c>x1`Bjqʜyԥs͟tϠtΡtϡtϠtϠtΠtΡtΡtϡtϠtϡtϠtϠtϠtϠtϠtΠqΟn͜k˚gʖcɕ`ǒ\ŐYčUÊUȍ@q,V=u;t"dC zm/diL81ʰ0.RI  JBx1`Bkt˟}֨wϢxУxУxУxУxУxУxУxУwУxУxУxУxУxУxУxУuϡqΟo͝k̚gʗcɕ`Ǔ\ŐYčUŠUǍ@q,V=u;t"dC zm/diL81ƭ0/tf% 93.tZjhgggffeeedeeccccbaa``_}^4/, ;4RHTHRGVKZO`Th[qb{lt!}$'()++,,++,,,,,+-&}D(# NR|dgEFFFHHHHGGGGGGGGGGFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFGGGGGGFFFFFFEEEEEEEEEEFFFFFFEEFFFFGGCCJJch~x@C U9*+yPf4c>x0`Dlx̡׬{Х|Ѧ{Ѧ{Ѧ|ѥ|Ѧ|Ҧ|ѥ{ѥ|Ѧ|ѥ|ѥ{Ҧ{ҥ|Ѧ{ѥxѣuСqΟo͝k̚gʗdɕ`ȓ\ƐYčUŠTǍ@p,V=u;t"dC zm/diL81ī0/w(0,! !n]Khjhhgggffedddddddcbbaa`b}gQ#!! 1,LASHRGUIZNaShZqb{js|fX`psy~Y[EEGGHHGGHHHHHHGGGGGGGGGGFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFGGGGGGGGFFFFFFFFFFEEEEFFFFFFFFEDFF]awX]SU9*+yPf4c>x0`Dn{Σٮ|ѧ~Ө~Ө~Ө~ӧ~Ө~Ө~Ө~ӧӨ~ӧ~Ө~Ө~ӧ~ӧ}ҦyѣuСqΟn͝k̚gʖcɕ`ǒ\ŐXčTŠTǍ@p,V=u;t"dC zm/diL81ê0©0*<6 QGx0`En~ЦڰҨԪԩԩԪԪԩթժԪԪԫԪԪҩ|ҦyФuϡqΟn͝k̚gʗbɕ`Ǔ\ŐYčUŠUǍ@p,V=u;t"dC zm/diL810ȭ1-KC  3-*qYkiiihhhgggggeeeededcccbb^aRF  92LBQFQGWK\ObUk\venxçy@  MNoqPQDDHHHHGGGGHHHHHHGGHHHHHHHHGGGGGGGGGGFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFFFGGGGFFFFFFFFEDTWluv};>50U9*+yPf4c>x0`FnѨ۳ӫխխլլխխխ֭խխլլիӨ}ҦyФuϡrΟo͝k̚gʘcɕ`Ǔ\ŐYōUÊUǍ@p,V=u;t"dC zm/diL82/ƭ10ob%XK>ilhiiihhhgggfffeeddddccacfXMF +'I?VJRGTH[MbTjZsc~mu~ scX[^mnPPDDHHHIGGGGGGGGGGHHHHHHGGHHHHHHHHGGFFFFFFGGFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFFGGGGGFEERUlr~{GK `6U9*+yPf4c>x/_HoҪܵխׯׯׯ֯֯֯֯ׯְ֮֯խիө}ѦyѣuСrΟo͝k̚gʘcɕ`Ǔ\ŐYōUÊUǍ@p,V=u;t"dC zm/diL830ê1ë1*83 .*)q\njijjhiigghhgfefddddddcbd}`SHA '#>6PDSGSGYM`RgXq`zis{ 'WKlfhjlQRDDHHJJGGGGGGHHGGGGGGHHHHHHHHHHHHHHHHHHGGFFGGFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHEFDCSVlq}~QT % U9*+yPf4c>x/_Ipҭ޷֯ױױײײرررױزرװ֭իө|ѦyѣuТqΠn͝k̚gʘbɕ`ǒ\ŐXčUŠUǍ@p,V=u;t"dC zm/diL8311ƭ2.VM!OE>hkjkjjjiiiihhgfgfededeecbcaWLD 71RF TITHXL^QeWm_wfoy.?6$%ikloTUEEFGJJIIIIHHGGGGGGHHGGGGGGGGHHHHHHGGGGHHGGFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGEDDDWYnsUZ(DU9*+yPf4c>x._Ipկ߻ײٴٴٴٴٴٴٴٴشزװ֭իө|ѦxѣuТqΠn͝k̚gʘbɕ`ǒ\ŏXĎU‹Unj@p,V=u;t"dC zm/diL8311Ŭ2ª0t')' qbPqlkljjiiiihhhhgfgeedeeccbdd\QI 70MCRGRGVJ\PcVk\uemv2/(''hjqtYZGGEEIIJJHHHHIIHHGGGGGGGGGGGGGGGGGGHHHHGGHHHHHHGGFFFFFFFFGGGGGGGGGGGGGGGGGGGGFFCBGH\^ty~UY/g4$U9*+yPf4c>x._Kqղشڶڶڶڶ۶۶ڷ۶ٴرװ֭ԫө|ѦxѣuСqϟo͝k̚gʘcɕ`ǒ\ŏYĎUŠUǍ@q,V=u;t"dC zm/diL83222Ŭ1.TK!4/-{dollkjjjihhhhhgggffedddddcdfaTL +'G?UIUHUHZNaThZra|kt}8*$""bdx{abKLFFFFIIJJIIHHHHHHIIIIGGGGGGGGHHHHGGHHHHHHHHGGGGGGGGHHFFFFFFGGGGGGGGGGGGDDDCNObfz{PT)S<#U9*+yPf4c>x._Krֳڷ۹۹۹۹ܹܹ۸۶ڴرװ֭ԫө|ҦyУuϡqΟn͝k̚gʘcɕ`Ȓ\ƐXčTŠTǍ@p,V=u;t"dC zm/diL83ª221Ŭ2Ī0r((%D>9hnllkkkjjiiihhhgggfeeddeecdcfXI *%C;QESGTHYL_ReXo`{ir|7*#XYlnTUHHEEGGHHJJIIIIIIIIHHHHHHHHGGGGGGHHHHHHGGGGHHHHHHHHGGGGGGFFFFGGGGDDCDGHUWmru{GL  s X:#U9*+yPf4c>x._Lrص۸ܻܻܻܻܻܹܺ۶ڴرְխԫԩ|ҦyУuϡqΟo͝k̚gʗcɕ`ǒ\ŐXčU‹UǍ@p,V=u;t"dC zm/diL83ª222ª2ū1.TK!`SHlomlllkkjjjiihhhggffeeeddddcyfQ*'' :2PESGSHWK^QdWm^xgq{21*EFy{z~dfNNHHFFGGIIIIHHHHIIIIIIHHHHHHHHGGGGGGGGHHHHHHHHGGHHHHHHGGFFEEEEGFPQfj{lo77twW:#U9*+yPf4c>x._Nsٸܻ޽޽޽޽޽޼ܺ۶ٴزׯ֭ԫԩ}ҦyУuϡrΟo͝k̚gʗcɕ`ǒ\ŐXčUŠUǍ@p,V=u;t"dC zm/diL94ª2223ī2ū2q('%{jYonmmlllkkkjiihhhhgggeeeededisZ6/)/*H>RFSHWJ\OcUk\wfpz,G;y*+fhx{ccONGGGGHHHHHHIIIIHHIIIIIIHHHHHHHHHHGGGGGGHHHHGGGGGGFFGGHGOPehy{Y\1wX:#U9*+yPf4c>x._Otۻݾ߾ݼܺ۶ٴرװ֭ԫԩ|ҦxѣuТqΠo͝k˚gɗdɕ`Ȓ\ƏXĎT‹Tnj@p,V=u;t"dC zm/diL83«2332ª2Ŭ2/QJ"'##zaonmmmmlllkkjiihhhhhfffeedded{]ND; '#H?QFSFVI[NbTk]ueoz'i[]BDx{z}jlUUHHFEGGHHHHIIIIHHHHIIIIIIIIHHHHHHGGGGHHGGFFEEHHXZorz}lo46$a=!wX:#U9*+yPf4c>x-_Otܽ߾޼ܹ۷ٴرְխԫԩ|ҦxѣuСqΟn͝k˚g˗cɕ`ǒ\ŏXčU‰Unj@p,V=u;t"dC zm/diL94ê3332©3«2Ŭ2+<7 822ssnnmlllllkkjjiihhhgggfffedeea_OB  &"H@RF QFTHZMaSjZtdoz"wC-&NO}~}wyhjZ[MNDDEEFFFFFFGGHGHGGGGGFFFFFFDCEEQQ[\jnx|z}rv>?#@{?wX:#=)*+xPg4c>x-^Qv߾޼ܺ۶ٴرװ֭ԪԨ|ҦyѤuСqΟo͝k̚gʘdɕaǒ\ŐXčUÊUȍ@p,V=u;t"dC |n/diL94ª33ª3©3ª22ª1ƭ1~n(+(H>6jqnnnmmmlllkkjiiihhhgggfeeddfds_L($# 5/SHODSHXM`SiZtcmx+cTb EGux}z}z}uxkndf_a]^Z[WXWXWYZ\^__adgoqv{y}z}}hl89 3sV>wX:# $(*vOh4c>x-^Rv߿ݼܹ۷ٴرװ֭ԫө|ѦyѤuСrΞn͜k̚gʗeɕ_ǒ\ŐXčUŠUǍ@p,V=u;t"eC}o/diL:5ë3ª3ª4ª3ª22©3ǯ2/SI#ZMDkqponmmmllllkjjiiihhhgggfeeddjn[3./ 4.SHODRHXL`Ri[scmw!FJA12WZ|~z}y|y|y{x{x{x{y|y|y|z~rwKM&)-]JN\=wX:#  )tNk4c>x-^Rv߿ݼܹڶٴرװ֭ԫԩ|ҦyѣuСrϟn͝k̚gʗcɕ`Ȓ\ƐXčUŠUǍ@p,V=u;t"eE~p1diL:5ê4©4ª3ª43ª233Ǯ3+;5m`Uopppnnnmmllllkjjjiihihggfeedgiw[H>64-SHODSHXM`RhYrc~lv$GsXS  /0IK`dtwnq[^CE')  /]IU[OX=wX:#   'pJo4d>x-^Rvݽܼڹٶ׳ױծԭӪѨ|ѦzФwϡsΟp̝l˛iʘeȕbǓ_ő[ÎW‹TTŋ?o,V=u;s"fEr2ciL:5ê4©5ª3ª3©4ª32¨3é3Ǯ2zl($"|kaxqpponnnlmlllkkkjjihhhhgfeecdfc_RJ 4.RGODRHYL_RhYqb~lw)­>Yĸotkhn  ")+46?AHJNPQSRSQRMOFH==13')  18jK\b\UOY=wX:# !$hEw4e>x,]Y}޳۰ۭ~ڪzبw֦sբnӞjҜeЛbΗ^͔ZˑZєBt,V=u;s#gFt3ciL:5ë45©4©3©3©4ª223Ʈ31qd')&%$)mZppqqonnnnllmmmkjkhhihihfffeechll[I# 6.QGQF RGWL_RgYrcmx)Bν`h=3' 1z@mD_(   34ZCyVgi`ZZWOY=wX:#'-135666666666666666666666666665701!_?4e>x0`@fqwoomkihfdb`]\[YWV~U}R|P{OzMxKvHuFtEsCqApAq5a.X=t;r#hFu3ciL:5ë44©5©5ª3©4ª43«33γ41VN$ *%#u\uoqqpoonmlmlmmkkkjiiihhhgffeddgkV1..71ODRFSGXK_RhYrcny (AϾ`kF-WtV5j@a2I,   /0M=eHz[otld`^\ZWOY=wX:# "0<ELOQSSSSSSSSSSSSSSSSSSSSSSSSSSSSLMT85e=w5f+W ~M}M N N!N!N"O"O"O#O#P$Q$Q%Q%R%R'R'R'S(S(S(T)T)T*U*U+U+V,V,V-X3`;q;s#hFu3ciL96ë555«5ª5©34ª4ª3ª32ī2,B[:U9U;W?]DgLvTYcx}ulgeeb^\ZWOY=wX:# 0BS`imprrrrrrrrrrrrrrrrrrrrrrrrrrrsljL35g?{;r=tAxAx@w@x@x@w@w@w@w@w@w@w?w?w?w?v?v?v?v?v>v>v>v>v>v>v>v>v=u=u=u;s>v;swoqqpqoononllmlkkjiihiigggffdbhcVI@  '$LBSGRGXM`Sj[ueq|)Aо_jD.MtwhZ~wqomljgda_\[WOY=wX:# (=SgyH05f=uvrrrqqqpooonnmlmllkjjjhhihhgfeebizgR/+)81RGRGTH[NdVm_zhv)Bо_jD.Mtwi^}{wuroljgda_\[WOY=wX:# I J6- #@Zu                                   }r0Ϳci®L:7ì6«6ê5ª6«5ª5554©4ª4ª4ª42̲5¨3cY%## !l]Qwssrqqqpppnnnmmmllkkjihhihhggffaoq\4..81RFRFUJ[PdVp_~lx (Aо_jD.Mtwi_}{wuroljgda_\ZWOY=vW:#+*V/.83243320/-+y*)s('n&&k&%h&%h&%h&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%g&%f&%h&%iO4/w0݁t2Ղu2Ӂu2Ӏt2~q1{o1ym/xl.wl.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.vk.uj.{o.砑?diL:7ë6ª7«6ê5ª6«6«5ª4ª55©4ª3ª3ª43ʰ4é2aW&#!'%$sdttsrrqqqqooonnmmllkkkjhhiihggff`pvb71/80THQFWJ^QgYtco| )Aо_jD.Mtwha~zwuroljgec_\ZWOY=uV9")(A10^CBYVa__]`]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]_]a_WU0/$TLʸSgͿdͿdͿddddddddddddddddddddddddddddddddddddepfK;7Ĭ7ª7ª6«6ë6«6ª5ê5«55©4ª4ª4442Ȱ3¬9[S)! /+*puttsrqqqqppoonmmmlkkkjiiiihgfffbnyZ;2(?8RGRGXK_Rk[xgs )AϿ^jD.Mtwha}yxtroljgda_\[WOY= uV8!%$#31_RPomnldbecfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdqpnl98!SJ^~jhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijhϽ[I<8ī7ª7«7«6ë6ª65«6ª65455©4ª432ɯ39=7!H@!rS8!$$43\TRhfUTA?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A>CA\[kh:9!SI_wȴQILLLLLLLLLLLLLLLLLLLKLKLLLLKKKKKKKKKKLKID=«8ì7ª7ê6ê7ë7«66ª6«55ª5©4ª5ª53332Ǯ4/40  navuttsssqqqqpponnmmlllkkjiiiihggdfiwY623($NDRFTI[OfWqb~nz)Aξ^iE.Mtwgb~zxuroljgda_\[WOY>"oR7 $$43]SRdbMK6497=;<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:8686VTig99 SI_v­I=?@??????????????>>?>>>====<<<<<<<<<<;<==;ª7ë7ë7ë7ë8ª7ê6«7«6ª6«6ª5ª544443302wk))'0,+xxtttttrqrqqppoonmmmmllkjjihihggedm{e4/.5/TGPFWK_RhZufr}(@ν^iD.Mtwgd~zyvspmjgda_]ZVOY?$hN3$$33]SRecPN;9ECLJKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKIKILJCA<:WUjh99!RI_w®K?­AůBĮAĮAĮAĭAĭ@ĭAĭAí@ĭ@ĭ?í?í?ì>ì>ì>ì>ì>¬>ì=ì=«=¬<¬<ë<«<«;«;«;«;«:«:«:«:ª:ª9ª99«9ë8ì8¬7¬7ì8ë8ë7«6ê7ª6«6«5ª5ª5©4443311.->9 zk_vvuutttsrrqqqpponnnmmllkjjhighhgdfov`0++@8RGSHZMaTm^zjv(?μ^iD-Mtwge}zyvroljgda_]ZVOY@&|cI1$$33]SRecPN=;JHRORPRPRPRPRPRPRORPQORPRPRPRPRPRPRPRPRPRPRORORORORPQORPROQOEC<:WUjh99!RI_w®K?ůBȲCƱBDZBǰBǰBǰBƯAǰAƯAư@Ư@ů?ư@Ư?Ư>Ư?Ʈ?Ů?Ư>Ư=ů=Ů>Ů=Ů=Ů=Į=ŭ<ĭ;ĭ;ŭ;Ů;Ů:Ů:ŭ:Ŭ9Ĭ9Ĭ9ĭ9ì8ì8ì8ì7¬7«8ë7ë8«8ê7ª6«6«5ª54553331.,+bW#%#833tyuvttutssqqqppoonnnmmmljkjiiiiggddnoZ'### J@RGVJ\OfWrco{'?̼]hC-MuwiZ~~~}{ywusrpnmkihgec`^]\ZYWTTQLY@(w`H0$$33]SRecPN=;LJURUQSQSQSQSQTQTRSQTRSQSQSQSQTQSQTQSQTQUQSRSRSRSRSQTRSQROPNCB;9WUjh99!RI_w®K?ĮBǰCįBưBƯAƯAƯBůBůAŮAŮ@Į@Į?Ů@ů@ů?ŭ?ŭ?ĭ?ĭ>ŭ=ĭ=ĭ>ĭ>ĭ=î=í=Ĭ=ì<ì;Ĭ<Ĭ:ĭ:Ĭ;Ĭ;Ĭ:ì:ì:ì9ë8ë9ì8ì8«9«8ë7ë8ë8«7ë6ª6«6ª5455431/,)%]S"'%x|uvtuuttssqqppqpnnnmmmlkkihggggfeedmp_O,'SGSGXK^Rj\xgt'?ʺ]hC-Krwv]dfeededdccccbbbbaa`a``___^^^^][f@(|v_H1$$33]SRecPN>ŭ?ŭ=Į=Į>Ů<ŭ=ŭ<Į=î<í;ĭ<Ĭ;ĭ:Ĭ:ĭ:ĭ:í:í:ì9ë:ë:ì8ì8ë9ì8¬8ë7ë7«7ë7ª6©6ª5ª55331/-*&f[!-+w}vwuuuttttrrqpqqonnmlnnmonnmlllkihgcjUI@<4SGTHYNcWp`~ly&=ɸ\hB-MswA({cL4 $$33]SRecOM?=RP\Z\Z[Y[Y[Y[Y[X[X[Y[Y[Y[Y[Y[YZY[Y[Y[YZYZY[Y[Y[Y[Y[YYWVTTQPNCA;9WUjh99!RI_w®K@ĮCDZCƯCƯBŰBŰBƯBƯAůBůAƯAƯAŮAů@Ů@Ů?Ư?Ư?Ů?Į?Į?ŭ>ĭ=Į>Į=ŭ>Ů=Į<ĭ<Ĭ<í;í;ì;í;ĭ;ì;Ĭ:Ĭ:ë:ì:ì9ë9ë8ì8ì9¬8ë8«7ë7«7ª6566531/,*u&WN!&%u}wwvvvttutssrqpqppqqqponmlkrsrmhiihjgg>63KATGWK^QhZvfs%<ŵ[gB-Ouj@&lS9# $$33]SRecOM?>US_^^^_]_\^]^]^\_\_\_]_\_\_]_\^]_]_]_]^]^\_\_\_]_]][ZXVUTQPMCA;:WUjh99!RI_w®K?İCDzDƯCưCưCƯBŰBŰBƯBƯBŰAƯ@Ů@ůAƯ@Ư@Ů@Ʈ@Ư@Ů?Ů>Į?ŭ>ŭ=ĭ>Ů=ĭ=ĭ<ŭ=ĭ=í<ĭ<ì<ĭ<í<Ĭ;Ĭ:ì:Ĭ:Ĭ9ì:ë:ë9ë9ì9ë8¬8«8«7«76554320,)u&KD"A:5w}xxwvvvuutttsrqqssqrp|as[|kWk[IbRAaQAaSI\PK\PH_QCbR>iXFvcPsXkght_-)'5/RGUIXMcVo`}mz$;³ZfB(6V=NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNH+htZ?( $$33]SRecOM@?WUd`c`a_a`bab`a`a`b`b`b`a`b`a`b`b_b`b`b`b`b`a`b_a^^\ZXVUTQPNCA;9WUjh99!RI_w®K?ŰCɲDǯCǯCǰCưBưBůCưBưBƯAůAƮ@ƮAŮ@ů@ů@ů@Ư@Ů?Ů?į>Į?Ů>ŭ=Ů>ĭ>Į=Į<î=Ĭ=Ŭ=ĭ<Ĭ;í;ĭ;ĭ:ĭ;ĭ:ì:ī9ī:Ĭ:ì9ë9ë9ì8ë8«77654320-*s%JC!/+,{fzzxxxwwwvuuutttttsmv_ucQ]QFD;560-'&)       !";3,WLDjZF}\ptaPD;SGWK]PhZvfs"9X˾dA+#!5 $7!5"6"6"7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7"7 %: +|`C* $$33]SRecOMA?YWgdfdecececececedececececececececececececececdba`^[ZWVTTRPNCA;9WUjh99!RI_w®K?ŰCȲCƯDƯDƯCƯCưCŰCưBưAƯBƯAƯAƯAů@ŮAůAƯ?Ʈ?į@Į@Ů?ů>Į?ŭ>Į=Ů=Ů=Į>Į>ĭ<ĭ<Ĭ=í<Ĭ<í;í;ĭ;ĭ:Ĭ:Ĭ:ì:ì:Ĭ9ë9ë9ë9ë8ª876542/-*q&HA",*+teY}{zyxxxxxwvvuuuwuhzgTWKC711  NC7}]mOC9'#PEWKXMcVpa~mx 6UǺbDm`$RGSFWHWHWHWHXHXHXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIYJRE($ cE+ $$33]SRecOMB@\Zjijhigigigigigigigigigigigigigigigigigigighfdba`^\ZXWTSRPNCA;9WUjh99!RI_w®K?İDDzEưDưDưCưCůCŰCŰBůBưBƯBƯAůAƯAƮAĮAį?ů?ů?Ů?Ʈ@ů?ĭ>ŭ?Ů>Ů>Ů>ĭ>ĭ>Į>Į=ĭ<ĭ=Ĭ<ĭ<ĭ;í;Ĭ;ĭ:Ĭ;Ĭ;ì:ì:Ĭ:ì9«9ª876542/-)vh&G?" GB>}l\}|{{zyyyyxxwwvvvmzhUK@9!!YKAc}a1,) C:UHVJ]QiZwfr4Rƻhȼdʻ]Ͽ_`````````````````````````````````````]I[Q fG- $$33]SRecOMCA_]nmnlmkljljmklklkmklkmkmklkmkmklklkmkmkmkkkhgdba_][ZXVUTQPNCA;9WUjh99!RI_w®K?ŰDɲEǰDǰDǰDưCƯCƯCưBưCŰBůBƯBƯAůAƮAƮAůAů@Ʈ@Ư?Ư@Į?Į?Ů>ŭ?Ů?Ů>Į=ĭ=ĭ>Ů>Ů<ŭ<ĭ<Ĭ<ĭ;ĭ;í;Ĭ;ĭ:ĭ;ĭ;Ĭ:ì:ì9ë8876420-(i\$73!   +))bVLu~||{{zzzxxxxxwx{gOF@ t\wgXJ(%NDWKXLcUp`~m2K÷amprsssssssssssssssssssssssssssssssssssswwWVNhI- $$33]SRecOMDBb`qppoomompnpnomonpoonpnpmomoopoomomonpnonlkhfdca`^\ZXVUTQPMCA;:WUjh99!RI_w®K?ŰDȲEǰDưDưDǰDưCưCƯCƯCƯCưBŰBŰAƯBůBů@Ư@ƮAƮAŮ@Ư@Ů?į@į?Ů?ŭ>ĭ>Į>Ů>Ů=Į=ĭ<Į=î<ĭ<Ĭ;Ĭ;ì;ĭ;ĭ;í:í:Ĭ;ë:«9ª887520.*bW%,+!  !    ! !D=:sb}}|||{{{yyyx|wn[?86       n`SlhE<7 B:TIVJ_Rj\vgw0>EJLNNO¯OOOO¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯O¯OïP¯P¯NïMͺYlVVMhI- $$33]SRecOMDCdbusustrtrtqtqtrtrsqtrsrsrtrtqsqtrsrtrsppnmkhfdca`^\ZXVUTQPMCA;:WUjh99!RI_w®K?ŰDɲEǰDDZDDZDǰDưDưCưDưDƯCưCưBƯBŰBŰBưBƮAƮ@Ư@ƮAŮ?Ư@ů@Ů@į@Į?Ů?ŭ?ŭ?Į>Į=Į=Į=ĭ=ŭ<ĭ<í<í<Ĭ;í;í;í;ë:ë:«997530.~*aV%.+!  ! !     " %##[QJq~~~}|||{{{zyzuxgV/+( ###/0/;:;LLLUUVTSTNNOPPQNMNIHI666[NBcm{hU!!$)&NDYLZMeXrcp$~+-02334444444333333333333333222212221123<ƴSjVULhI- $$33]SRecOLEDgeywxvwuwvwvwvwvxvwuwvwvwvwvwuwuwvwvutsqpnmkhfdca`^\ZXVTTRPNCA;:WUjh99!RI_w®K?ŰDɲEǰEDZDƱDưEǰDǰDưDưCƯCưCưBưBŰBŰBưBƮAƯ@ư@ƯAů@ƮAƯ?ů?ů@į@į?Į>ĭ?ŭ?ŭ>Ů=Ů=ŭ>ĭ=ĭ<ĭ=Į<í;Ĭ<Ĭ<Ĭ:ê:ª:98642/s*QI%+)!    !  "!"1,,seY|~~}}||||z{}ua,(& $$$???VVV|{|kkkgWKjhjWK? @8VJWKaTn_|lz!"#########"""!!!!  !8ǵVkVULhI- $$33]SRecNLFEjh|z{yzxzyzyzyzy{zzzzzzyzzzzzzzzzyyxvurqpnmkifdca`^\ZXVTTRPNCA;:WUjh99!RI_w®K@ŰEȲGŰEDZEDZEǰDǰDǰDưDŰCƯCƯCƯCưCưCůBůBŰBƯAƯ@Ư@ƯAŮAƯ?į@į?Ʈ?ů>į>Į?ĭ?ŭ>ŭ=ŭ=Ů>Į=ĭ=ŭ<ĭ<ĭ<Ĭ<Ĭ<ì:ª::97630w+HB$ !! ! ! ! ! ! !  $""D>;xg~~}}}||}oG@?'''PPPJJK n\peluY1,( /)ODYM\OiZxgv !! 7ǵVkVULhI- $$33]SRecNLGFmk~}~}~|~|~|~|~}~}~}~|~}~}~}~}}|yyvusqpnmkifdba_^\ZXWUSQPNCA;9WUjh99!RI_w®K@ŰEȱFưFƱFưDDZDDZEƱEDZDŰDƯDƯCƯDǯCǰBŰCůCŰAŰAƯBƮ@ƮBŮAĮAį?Į?Ư?ů?į>Ů>Į>į>ŭ>Ů=Ů=Į>Į=ŭ<ĭ<ĭ<ì;¬;¬;;:9741x,JC& "!!!""!" " "! !  !!!"!"%#&XNGr~}||~vtcQ@@@jjk-))cmfgkfWF !E=XLYLdVrbp!#""######"""!"! !! "8ǵVkVULhI- $$33]SRecNLGGon~}|yyvusqonkkhfdba_^\ZXWTSRPNCA;9WUjh99!RI_w®K@ŰEȲFǰFưFưFDZEDZEƱEDZEǰDƯDưCưDǯCưBŰCƯCůAŰAƯBƮBŮBƮ@ĮAƯ?ƮAů@į?Į@Ů?į>Į>ŭ>Ů?ĭ=ĭ>Į=ŭ=ĭ<í<ì;ì;;:8751y-JE& ""#"!"""!!"!!" "! !"!" !(&&naX{Ī~}}}~pND>WUWq`Riihglw]0,, ;3SHXL`Sm^}l{ ""#"""##""!!! !!  !8ǵVkVULhI- $$33]SRecNLIHrq}|yyvusqonkjhfdba_^\ZXVTTRPNCA;9WUjh99!RI_w®K@ŰEȲFǰFưFưFǰEDZDDZDƱEǰDƱDưCưDƯCŰCŰCưBŰBŰBƯAƮBůBƯ@ů@Ʈ@ƯAŮ@Į?Į@ů@ů>Į>Ů>ŭ?ĭ>ŭ=Ů=Ů=ĭ<ì<ì;«;;9742{.LE' ""#""#"#! #!!!!!!! ""!! /,,}n]ī~~~zh1/2POQ#""?89hniihgmgXN ,'LBYM\Pj[xhv "##""###""!!! !! !8ǵVkVULhI- $$33]SRecNLJIut}|zyvusqpnljhfdba_^\ZWWTTQPNCA;9WUjh99!RI_w®K@ưFɳGƱFƱFDZEDZEǰEDZEǰDƱEDZDưDưDưDƯCƯCưCưCŰCůBƯBưBůAƮAƮ@Ư@Ů?Ů@ů@ů?Ů?Į?Ů?Ů>Ů>Ů=ŭ=Į=ĭ=ì<«;;:853}/NG) #"#"##"#!!#"!"!!""!"$"# !733wg~|kY000&''"! t`oljiihms]%$)B9YMXMfXtcr !"""##""#"""!!!!  !8ǵVkVULhI- $$33]SRecNLKIxv}{zxvusqpnkkgfeca_^[ZXWUSQPNCA;9WUjh99!RI_w®K@ưFɲGƱFƱFƱFDZEǰEDZEDZEDZDǰDƱEưDƯCƯDưDŰCůCƯBưCŰBưAƯBƯBƮAŮ@Ư@ƮAƮ@Ư?į@į@Ů?Ů>Ů>Į>ŭ=ĭ=í=ì<«;;9741QJ)""#! ###"#!""""!!"!!"!""#"">:9qseR EEE**+s`LknlkjiijeVJ@ 92UJWLaTo_n}!"#########"""! !! "8ǵVkVULhI- $$33]SRecNLKJyx}|zyvusqonkjgfeba_^\ZWWTSQPNCA;9WUjh99!RI_w®K@ŰGɲHDZFDzFƱFƱFDZFǰFDZEDZEDZEƱEưDưCưCƯDƯDƯCǯCưCŰBŰBƯAưAƯBƯAƮ@Ư@Ư@Į@Į@į?į?Į?ĭ?Į>Į>ĭ=ì<«<<:763h]+*($ #####"#""#"!#"!#""#""# "?71wsdS  HHH///gZSjmlmlkjiiklR.)LBYM^Rl\{kx!"###$$##""#"!!!! !! "8ǵVkVULhI- $$33]SRebNLLK|{}{yxvusqpmligfeba_^\ZXVUTQPNCA;9WUjh99!RI_w®K@ưGʴHDZGDZGDzFDzFƱGǰFǰEǰFƱEǰEDZEǰDƯDƯCƯCǰDǰDƯCưCưCůBƯAưAưBƯAƯ@Ů@Ů@ů@į?ů?Į@Ů@ŭ?ĭ>í=«<<;863oc-0.&""$#"$#"##"##"$""#""#%#$ !PIBvxhW?>?334\QJnpnmlmmkjjl~_632A9ZNZNhYwgu "#$$####""#"""""!!!  "8ǵVkVULhI- $$33]SRebNKML~}|zywusqpnljhfdba_^\ZXVUTQPNCA;9WUjh99!RI_w®KAưGʳIDzGDZGDZGDzGDZFƱFƱFƱEǰEDZFDZEưEǰDǰDưDưDƯCƯCưCůBŰCưBƯBưBŰBƯAƮAƮAƯAů@Ư@ů@ů?Ů?ĭ>«==<:84re,1.%#!$%#$$"$##$$#$#"###$$#% " UKE}ŭtc##(444878VKDkqpnmmlmmljjjq`P ?7[NWKdVrbq "#$##$$$##"##""!"! ! "8ǵVkVULhI- $$33]SRdbMKNM}{yxvusqonkkifecb_][ZXVUTQPMCA;:WUjh99!RI_w®KAưHɳHǰGȲGȲGȱGDZFDZGDZFDZEưEưFDZEDZDDZDǰDưDưCưCŰDƯCƯCưCưCưBƯBƯBƯAů@ůAŮ@Ů@Ů?Ů?Į?ĭ>Ĭ>ª=<;85qe.30'! %%#%%#%$#$$#%##$#"$$#$""$ TJD|Ůªl855tss?@?OG>krqpponmlmmkkmx]"1,PEYLaSn^~m{"#$##%%$$##""#!!"!!!  #9ǵUkVULhI- $$33]SRdbMKON}|yxvusqonlkhfdba_^\ZXVUTQPNCA;9WUjh99 RJ^w®KAƱHʴIȲGȲGDZGDZGȱGDZGDZFDZFDZFDZFưEDZEǰEưEƱEDZDDZDưDưCưCƯBůBůBŮBŮAŮAĭAĭAĭ@í?í?í?í?ì>«><:871FA)$&$%%#%%$$$$$##%##%$#%%#%OF@{ȰìqIB> JIKHIHKA:jsqqpqooomlmmllaA91%#F=ZM^Pk\{ky!#$$$$%$#$###""##"""! ! #9ǵUkVULhI- $$33]SRdbMKPO}|yyvusroolkhfdca_][ZXVTTRPNCA;9WUjh:9 RJ^w®KAưHɴIDZHȱHȱHȲHȲHDZGDZFDZFDZGDZFưEǰEDZEDZEǰEưEưDƯDůCůCŮBĮBĭBĬAíA­@¬@«@«????>>=;973TL+$#%""%&%&%#%$#%$#%$#$%$%&%& PHBzɱĮ««nbS "^__H?7iurrrqqponmmmllklqcW?7[OZNhZwfu!#$%%%%$$$#$##"#"!!!"! !  $9ǵUkVULhI- %$#43]SRdbMKQP}|yyvusqonljhfdba_^\ZXVUTQPMCA;:WUjh:9 SJ^v®KAƱIʴIDZHDzHȲGȱGDzHȱGȱGDZGƲGƲGDZFƱEưDǰDǰEŰEůDŮCĮCíB¬BAB@A@?@??>>==<:86i_.(&& %('&&$%%$&$#&$#%%$%%$% IC?yɲŮ¬ì«««~h-*,  788{zz! !A;4fwsssrrpqponnnmllnyb70VJYMdVsdr!#$%%%$$%$##$###"!!!!" !  $9ǵUkVULhI- %$43\SRdbMKRP}{zxwusronkjhfdba_^\ZXWTSRPNCA;:WUjh:: UJ^v®KADZIʴIDzHdzHȱGȱGDZHȲGȲHDzGƱFDzFƱEƱDŰEůEůDîD­C¬CBBA@???>=<<<;;::985vh/74(""%&%'&%&&$%%$%%%%$%%&$&!GBC}ȱƯ¬ììì¬ë««ª|]SLGHI,+,;77iyuuutrrppqponnllmma610/)NCYMaToao}"%%$$%%%$$$#$$###"!!" !! $9ǵUkVULhI- %$43\SRdbMKRP}{zxwusrookkgfeba_]\ZXXTSRPNDA;9WUjh;:"VLϿ^v®KAǰIɳKdzIȲHDZHDzIȲHDzGȲHDzFƱFưFưEůEĮE­E­CBCA@@?=<<;:9888877564r/94( &'&&&%&%%&%%&&$%&%&&&&!?;;|ʲƱ¬îíìĬ쬫««zh&%'ECDAAB 510|j~vvvuutrrppponnmllng[OD'#G=ZN_Sm^|kz"%%$$&&%%$$#$$######!!! !  $9ǵUkVULhI- %$(43]SRdbMKQQ}{{wwusrpolkjfeda`^\[YWWTRPONCB<9WUjh;:#XNϿ^v®KAưIɳKDzIȱHDZHDzIȲHDzHDZGƱFŰGĮFĮEíDCBAA@>=<;98765553332211u.F@)#$(%$('&&%%&%%&%&&&%(&$'20/~oǰȲîĮůįíìì¬í«ë«ªk^V  !$$%%#%r`|xvwvuuutsqppoopnmlmm|jX?7[N]Pk\yix"$%%$$%&%$$%$#$$""##!!!  $9ǵUkVULhI- %$,43]TRdbLJWU}{ywvsronkihfdc_^[ZXWTSQEC<:WUjg<;%ZQϿ^v®KAƱI˵KDzIDZHȱHȲIDZHƱHƯGůGíF¬FDBA@@>;98764321~0|/z/y-x-w-w,v,v,r+YO)&%'##((''%%''&''%'&&&&''"('+yla¬ȱƯůįůůĮĮíìíìì««§uD=;  l]Swywxwvvuuusrqpppponmlpg:3[O[NhYwfu"$%%%&%%%%%%$#$$""""#!!! ! %9ǵUkVULhI- %$+43[SRdbMKOM~|{yxwutrrpnmkjhgfdcaa^][[YXWUSQOOMMKKI@>;9XUig<<%]S;^v®KAƱI˵KȲJDzJDzHDZHƱHŰGîG¬FDCA@?=:88542}/y.t-r,p+|n)yl)wj)wi(vi(uh'ug'tg&th&f[&40(&$((''&''&%('%('%''&(""#%$%g]YɴDZƯƯŰİįįůĮîíĬí¬«««~k2-,UJEq{yyyxwvvuussrqpppoonmmd7124-THZNdWscr!#%&&&%%%&%$%$#$$"""#""!!"! %9ǵUkVULhI- %$-43ZSRdbML21,*+*+*+*+*,+,+,+,+,,,+-+-,-,.,.-.-.-.-.-.-/./.0.0//.0/0/0/101075VThf=<&]S;]v®KADZIʴKDzHDzHDZIŰHįG­FEDA?>=:863}1y0t.~q,zm*wj)ug'rd'oa&m`$k^$i^$g\#g\#h\"fZ"g[!`U"<8&&&)&%)''('&'''(&'''&($"%"!$QKF̶DzƱŰưůůưİįŮįîíĬì­ì«ªª|k:43 831g~{zyyyxwvuuttsqqppponmnhWLC)%I?[OcUqbq!#%&&%&'&&%$%$#####$""!!""! %9ǵUkVULhI- '&$64YTRhf[YLJPNPNPNPNPNPNPNPNPNPNPNPMOMOMOMOMOMOMOMOMOMOMOMOMOMOMOMOLNLNLMLMLa_ki==%\Q;^v®KAưJʴJDZIűIïHíGFDCA?;974}2x0s-|o+xj(se'pc&l`%i]$dX"bW#aV"_T _S]R\R \Q \Q[PYOF@$%%)&%)(&('&(('(('''((&&'!!#>:;zһƱƱDZƲűŰůůůưůįŮĮíĬí­¬ëë«rC?<2-.}k}{zzzyyxwwuttsrqpppponoihWG*%I@ZNaTo`n}!$&&%%&'&%%&%$%%$$$#""""!!"" !!%:ǵUkVULhI- '&-31ZQOusqo87$YOϿ^v®KAƯJȲJįIîHFFDA?=:64z1u/|p,wk*rf(l`&g\%dY$aV"^T!_S!A:@;$C=%A<$A;$A;$@;#@:#@:$B;!C;0/((')('((((('('&)'&)('(""$745~rϹdzDzȲDZƱƲDZDZűůƯưůĮůĮîíĬĭ­«ë«oa[.*+  RIEs~|}|{zzxxyxwvuttsrqqqpponoud!A9[N`Sm_}l{!$&''&&''&%%&%%$$$$###""""!!! !! %9ǵUkVULhI- 435443[4354656565757676767676767676767676767676767676767676767676767676767676767687(' (TL^wJAïJƱJ­HGDB@=;84x0q.yk+sf)ma'm_%]R%HB'E@'75)+*++*,++,*),)),))+))+))+))+))+)(+)(*)'))(*((*)(*(')('((()'()))+!!$+)*wlaȳʵɴȳDzȳDzƱDzDzŲűưůưưůĮůĮîĭĭ­¬¬¬©oqbTi[Lo`|~~}|}}{{zyxyxwvvutsrrqppoope92[O^Qk\{jy!$&'''&''''&%&&&$$%$#$#""!""""! %9ǵUkVULhI- PL32++bF"04!Ke  QH^vJ@HîHFCA?<85x1p.wj*tg(f['XN'?:)/.,/-,-+-,+-+*-)*,*),*),**,*),**,))+(**(*+)(+)(+))*())))))()((*)())'))'**(*'&'%%'TMJӽDzȳɴȴdzȲȳȳƱƱDzƱŰƯŰưůŮůįíĭĭ­­ì«ª~}}|||{zzyyxwvutttrqqpqppf/)(82ZN\Ph\yhw #%'''&''&'&%&%%%%$%$$#""#"!!""! %9ǵUkVULhI- !Ѹ $4/q'uv"uhh\^SXNUKSJSIRISHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSHSIPGPG{m)ʺYtI?FFCA=85z2r/|m+ka)YP)>:+10-/.-,*-))-)+-*+-+*,+*-,+,-+-,+,,,,-,----.,-.---,,,+,,+-,+,,*,+)**)*))*((*)'*)()*))$$'<87nйɶʵʵɴȳɴȴdzȳȳȱƱƲDzƱűŰưƯůůůïîĬì­¬¬«ª~~}}}{{{zyyxxwvuuutsrqpppiJBC1-SH]PhZwgv #%'''&'''''&&&&&&%$%$$#"####!!"!%9ǵUkVULhI- shE>>Mĵ[´\ZYYYYXXXXXXXXXXXXXXXXXXXXXXXXXXXXUVisH>ED?<8}5w1}o,bX+B=-53-20-+*.)(.**.++.-,.-,.-,..,--,----/-/---*)*&&(##&!!% #!#&#&"!!%$$&)()-,-*)+*))*(*)(***+$#&>::wԾƳʶɶʵɴȳɴɳȳȳȳDzDzDzƲƱƱưưŰůŮįįĮĭìí¬ë«ª~}}}||{zyyxwvvuttsrqpqqk]PG*'JA\PgYuet #%''((((('&''&%%&%$$$%#$#""##"!!&9ǵUkVULhI- {.} <ɼ_umlmnoooooooooooooooooooooooooooonnmlmeG,32.**0**1..///..-..,/.-/.-/.-.0-.-,-&&)##'735aYT|rλŭ˱ͳ̰ͲƮűyme>:9##%)()+*+)'**)+$%& #RJIԿȴɶɶʵʴȴȴɴɴɳȳȳDZDzDzDZŰůƯưƯĮĮůĮîĬ¬¬ë«ª~~~~}}{z{yxyxvvvtttsrpqno^M)&H@[OdWscr #&((('(('(&&''''%%&&$$%##$$""##!%:ǵUkVULhI- y-s <̿dkGAFFFFEEEEEEEEEEDDDDDDDDDDDDDDCBCBB@?>;88{4ka0NH0860*,0*+10/01///-/.-..../-0/-/.-/,+.$$&/-/ZSPxoů϶ȯĬѿ̻ʹʸʸɶ˸ƭѽUNM##&&%',+,)(*,*+%%'((*g^XλɶɶɶʶʵʴɴɴɳȳȳdzDzDzDZDzŲůƯưůĮůįîĬĬ¬ë«ªª~~~}}|{{yxyxwvuttttsrppp_#""$"D<[OcWqcr #&(((()('(((''''%%&&$$%$#$$$""#"&:ǵUkVULhI- y-t <̿dmHFƲRȴTƳRƳQƳQƳQƳQƳQƲQƲQƲQƲPƲPDzPƲOƲOŲOŲOƲOŲNƲNŲNŲNƱMŲMűMűMİLįKįK®KKIGD?:7~q4^W1960&&1**11001000.0/-//-00.0/./...,+,'&)=::d]W}sʳ϶Ʈν˺̺ͻϻϼннϽϼλ˺ʸμëc[U(&($#&,+,*(*+)+#$%1/0uk͸˸˶ʶɶʶʵʴʴɴɴȳȳȳDzƲDzDzƱŰưưưůůŮíĭì¬ë¬«ªª~~}}|{{zyxywuuuttsrpsp'%%<5]PcUqbq #%'((())(((('&&&''%%&%$$%$$##$#"&:ǵUkVULhI- y-t <̿dmHI͸WϺY͹X͹X͹W͹W͹V͸V͸V͸V͸V͸U̸U̸U̸T̷T̷T̸T̷T̷S̷S˷S̷S̷R˷R˷R̶Q̵P˵PɴPƱNïMJGC>8pf5HD20/0,,11112010.10.10.00.1//0.-/,,-('+B>=g_Z|ɷϹưμ̺μоϿϿϿннммϽϼμϼμ̺˹°i_X''($%&+*+**+'&(##%LFEҽ̷ʷʶʵɶɶʴʴɴɴȳȳȳDzDZDzƱDZƱŰưưůůĮîíìì쬪ª~~~}}|{zyyyxvvuttsrqtq)&&82]PcUpap #&())(()(((('('&'&%%&&%$%$##$$""':ǵUkVULhI- y-t <̿dmHH˷W͹W˷V˷W˸W˸V˶V˶V˷UʸTʷT˶U̶T˷SʶTʶTʶSʶR˷RʶS˵R˶RʵQʵQɶQɵPɳOɳODzOŰNLIFB>8e[3:72))2..12110/10/10/1//0//10.1,,/((*988ZSR}ѹìͼϾѿѿѿѿпппϾϾнннϽϽϼμμμ˹нh`Y'%(%%(,+,+*+%$''')si_ɵι˷˷ʶʵʶɶɵʵɴɴɴȳȳȲDzDzDZDZűůůưůůįíĭí¬ì쪪ª~}}|{zzxxxwvvuttsrse)&# 93\PbUo`o #&(()))))(((((''''&&%&&%$$$$$##"&:ǵUkVULhI- y-t <̿dmGI˷W͹X̸W̷W̷W˸V˷V̷U̷V˷U˷U̶U˶T˷T˶S˶TʷSʷR˶R˷S˶S˵SʵQʶQɶQʵPʳPȳOƲOîMKHC?y9ZS3002-,22111110/11011000/00/1.-/,+-424NIGwoȶ̷íνѿѾппϾϾϾонϽϽϼμλ̺_XS!"%))*+*,('*%$&D@>Ҿκʶ˷ʶʶʶʶɵʵɴɴȳȳdzȳȲƲDzDzűŰƯưůĮĮĭíììë묪~}}||zyxyxwwvuttsth*'$83\PaTn_n} #&())()*))))(''(('''&%&&%%%$$$$#':ǵUkVULhI- y-t <̿dmGI˷WͺY̸W̷W̷W̷W˸V̸V˷U̷V̷V̷U˷U̶U̷T̷TʷTʷSʶSʶRʶR˵RʶRʵRʵQɴPȳPDzPİNLIE@t9HC4&'20022121021020020/11/1001-,.,+.@==rjc˵ů­­­­ҿпѿпппϾϾϽнϽϼϼμͼнNHH!!#+*++*,&%'$#'riaɷм˸˷˷˷˷ʶʶɶʵʴɴɴȳDzȳȳƲƲDzƱŰưưůŮĮĮĭĬ¬¬ì«ªª~}}}|{zyxyxvvuuttti0+(82[O`Sl^~m} #&(()))**)()(''((''&'&%&&%$$$$##':ǵUkVULhI- y-t <̿dmGI̸XκX̸W̸X̸W̷W˸W˷V̸U̸U̸V˸U̷U˶T̶U̷U˷T˶T˷TʶS˶SʶR˷S˵RɴPɴPDzOįOLIEAt:KF4**3212103113202102102102101.-//.0MHFðȳîîîî­­­­­¬ѿѿппооϾонϽϼλҿнu<87%%(++,)(*%$'FA@ѽϻ˷˸˶˶˷ʶʶɶɵʴɳɴȳdzȳȳƳƲDzƱűƯưůįįĮííí¬ë««~~}||{zyxxxwvvttuk83093[O_Sk]}l{ #&(**)***)))(('''(('&'%&&%$%%$$#':ǵUkVULhI- y-t <̿dmGI̸WκY̸W̸W̸X̷V̸V̸W˸V˸U˸U̸V̷U˷U˶U̶U̷UʷSʶS˷T˷TʶR˶RʵQɴQdzPŰOMJF?}q9KG5**2323213213113112212213002/.0968ia\ǴDzİïïﯮ®îí­­­­­ѿппϾϾннϽͻʶul1.1'&(++,'')%%(xnd˷ҽ˸̷̷̹˷˷ʶʶʶɵʴɴɴȴǴȲȳƲƱDzƱŰƯưůĮĮĮîìì¬ì«ª~}}}|zzyxywvvutul?9672XM_Sl]|l| $&(**)***)*))))''''('&&%%%%%$$%$(;ǵUkVULhI- y-t <̿dmGI̸XκZ̸X̸X̸X̷W̸W̸W˸W̸V̸V˸V˷U̸V̷V̷T˷TʶU̶T̷S˷SʷSʵRɴRȴQƱO­NKHBvk8;70/.4214224224213213113324103,+.C>@}w̽˶ƲıűŰİİðïïïîîîî­¬­­ҿѿпооϾϾнϼμ«¯nd^'&)**,))*""$WQMмκ̸̸̸̹˷˷˶ʶɶɵʵɴɴȳȳȳȲDzDZDzƱŰƯƯůĮĮĮĭíì¬ë««~}}|{{zxxxwvvuvnF><0+QGaTm^|l|!$')********)))))(''((&'&&&&%%%%$(;ǵUkVULhI- y-t <̿dmGI˸XͺZ̹Y͹Y̸W̸WͷX̷W˷W̷W̸V˸V̷V̷V̷U̶U˶T˷T̷U˶T̷TʷTɵRɴRƲPįOLIDz>JD6((3314433313324313213324112,,.LGG̷ƳıűűűűűİŰŰİİïïïîí­­­­ѿѿппоϾнϼҿìSMJ""&,+,''(755uλҽ̸͹̸̷̹˷˷˷ʶɶɵʵɴɴɴɴȳȳȲDzDzƱŰưůůĮĮĮĭìì¬ì«ª~~|}}{zzyyxwvuvoIA?)'KBbUn`}m|!$')**)*+******)))(('''&''&&%%&%$(;ǵUkVULhI- y-t <̿dmGI˸XͺZ̹Y͹Y̸X̸X͸X̸X̸X˸W˷V̷W̸V̷U̷V˷V˷V̷T˷T˶U̷TʶSɵRɳRƱPNLF|>LF7-,5445444324224224324324214/-1WROɴ˷ųŲƲŲƲŲűűűűűűıİİįïïîîí­­­¬¬ѿѿппϾϾͼ«оt301&'(+*,"kb[ðӿ˸͹͹̸̸̹˸˷˷ʶɶɶʵʴȴȴɴȳdzȳƲƱƱŰƯůůŮŮĮííì¬ë«~}}|{zzyxxxwuvnF@=)'JBbVoa~n}!%(*+**++++****)))))('(&&&&&%%&%$(;ǵUkVULhI- y-t <̿dmGJ̸Yκ[̹Y̹Y͸Y͸Y͸X̸X̸X̸W̷W˷V̸W̷V̸U̸U̷U̷U˷T̶T˶SʵRȴRƲQ¯OMHAMH8+,4224634425325334224435213203a[Y̸̹ƲdzǴƳųƳƳƱƲƲŲŲűűűűŰİįᝮîí¬¬ѿѿпϿпϾϾìf^W#%&**,""%IDCϼϼ˹ͺ͹̸̹̹˷ʷ˷ʶɵɶʵɴȵɴɴdzDzƳƱDZűŰƯƯįįĮĮĭí¬¬¬«ª~~|}}{{zyxxwvwnC=9*(LCcWpbp"&(*++++++*++***(()))(''&&'&&&%%%);ǵUkVULhI- y-t <̿dmGJ̸Yκ[̸Y̸X͹X͹X͸Y̸X̸W̷X̷W˸V˷W̸W̸V̸U˸U˸V̸V̶TʵSʵRȴRİPMKDOK9++42157554144243343245452140.2bZXϼʷƳȴȴǵǵǴƴdzƳƳƳųűƱƱűűıűŰݰ¯ïî­¬ҿѿѿппμëGBB%%'*),*(,~sj̺ʸ̺̺͹͹̷̹ʸʷ˷ʵɶʶʵɵȴȳɴDzȲȳƱDZƱůŰŰįįŮĮí¬¬¬ë«~}|}|zzyxxwwwnB;8*(MCeXpcq#&(**+++,+**+*)*))*))('((('&&%%&%);ǵUkVULhI- y-t <̿dmGJ̸Yκ[ͷY͹X͹X͹X͸Y̸X̸W̷X̹X˸X˷W̸W̸W̷W˷V˸U̸V̷TʵSȵTƲRPMHg`=/.51/4866426535434334435212/-0[TSϻ˷ƳȵȵǴǵȵȵȴȴƴƴƴǴDzƲƲűűıűűııįðïîï®­­ѿѿпоѾϾëμxp.-/)(* e]W˹̺̺͹͹͹̸̹ʷ˷˷˷ʶʶʶɴȳɴɴȲȳƳDZDZƱűůįįŮĮíĬì¬ë«~|}|zzyxxwxwn?85)'LBeWrcq#&(**+++,++*++*)**)((()((('&&''&%);ǵUkVULhI- y-t <̿dmGJ̸Yκ[͸Y͸Y͸Y͸Y͹X̹X̸X̹X̹X͸X̷W˸V̸W̸W̸V̶V˶VʷUʶTȴTİQNKwA?=7115866535546535436536213/.0TPMϼ̺ƵɶɶȶȵɵȵȵȴȵȴǴȴȵƴƳƳƲƲŲűűűűİİïïﯮ­¬­ппѿϾŮYRQ(&)!#NJFѾϼ̹κͺ̹͹̸̹˸˷˷˷˶ɵɶʵɴȳɴȴDzdzƳDZDZƱůƯƯůĮĮĭì¬ì«ëȰ˳˲ȯª~~}}|{{zxxxxo<74,)NEeXtcr#&)++++,,,+,+++***)(())(('''&&'&&);ǵUkVULhI- y-t <̿dmGJ̸Yκ[̹Y͹Y͹Y͸Y̹X͹Y͸X̹X̸WͷX̷W˷W˷W˷W˸W̷V̵UʵTʶTƲS®QMEIF90/5556556535535436446325/.1MJIλͻȷɸɶɷɸȶɶɶɶȶȵȵǴȴȵǵǴǴƳƳųƲƱűűűİİİįïï®®­¬ѿѿѿѿϾz:88$$&101{qκ̹λͺͺ̹͹̹˹̸˷ʶʶʵɵɶʵɴɳɴɳDzdzƲDZDZűůƯůůĮĮíí¬ȰǯëƮ~~}|}|{zyyxyo9315/XMfYses#')*,,+,,,+,+*+++))*))()()(''&&'&*;ǵUkVULhI- y-t <̿dmGK̹Zλ[̹Z̹Z͹Z͸Y͸Y͸Y͹X̸X̸X̸W̸X˷W̷X˷X˸W̸W˶U˵TɵSűRPKWP;/.65367675475355355564350/2DA@ͼμɷʸʸʸʸɸɷɷɷɷɷɶȵȵȵȵǴǴȵǴǴdzƳƲƲƲűűİİŰİİï¯î®­ѿѿĬd]X)(* kaXİ©̺λλͺͺͺ̹̹˸̸˷˷˷ʵʵʶʵʴȳɳȳDzDzƱƲƲűŰƯůĮĮĮíĭȰzui\XPHVNFk`UqŬ~}|}}{zyyxzm0,)!!<6`TeYtet $'*,,,,,-,,,++*++****)((()(''''&&*;ǵUkVULhI- y-t <̿dmGJ̹[λ\͸Z̸Y̹Y͹Z͹Y͸Y̹Y͸Y͹Y̹X˹X̸W̸X̷W̷V˸WʷUʶTƳS¯QN}C327106966547557545545546002:9:~vpŵμ˹˹˸˸ʹʹʸʸʸʸʸɸɷɶɶɶȵȵȵȵȵǵȴǴǴƳƲŲűűııŰıİïﯮ­¬¬ѿпѿĭ{><:RKFμͻλλκͺ̺͹̹˸̸̷˷˷ʶɵʵɵɴȴȳȲDzDzDZƱƱưŰůůĮĮíɲym_FA<*)*##$?<7h]P|Ŭ}|||{zyxzo+('#"";6_SgYufu $(*,,,,--,-,+,,**++))))(((((''''&*;ǵUkVULhI- y-t <̿dmGJ̹[λ\͹Z̹Z̹Z͹Z͹Z͸Y͸Y͹Y̸X͸Y̸Y͹X̸X̸W̸W̸V˷UȴTŲSPHJF:447657657647547557767224325e_]ƹ̻̺˺˹˹˹˹˹˹ʹʸ˹ʹʸʸɸɷɷȷȶɶȵȵȵȴȵǴǴƳƳŲŲŲűŰİİðïï®­­¬ѿ«ųmc^#"&>:<ϼѾλμμͻͻͺ͹͹̷̹̹̹ʷʷʶɶʵʵɴɳȳdzȲȲƲƱƱŰưůůĮȲpeX+))$"$'&&'&&#"$!!"\SH~Ĭ~~}||{zzy{u,*)"!!<6aTh[wgw!%(*,--,--,-,,,,++++*)**()())''(''*;ǵUkVULhI- y-t <̿dmGK̹Zκ\͹[ͺ[͹[̹Z͹Z͸Z͸Z͹Y͸X̸Y͹X͸X͸W̸X̸W̷VʶVdzTıRNlc@3274477776586576577685450/1RONͼ̻̻̻̺˺˺̺̺˺˹˹˹ʸʸ˹ʹʸʸʸɷɷɶȶɵɵȴǴǵǴǴƴƲƲŲŲűİİİİïî®®¬¬ȱC?>*(,~sk̹ͻϼμλλκͺ̺͹͸̸̸̸˶ʶʷɶʵʵɴȳȳȲDzDzDzƱƱŰưůŮȱq41/&&'%#&%#$%$$%#$$#% ""!#l`Tê~~}||{zyzt+))" "  <6aUj]yix!&)+--------,-,+,,**+*)))*)(((''('+;ǵUkVULhI- y-t <̿dmGJ̹[λ]ͺ[͹Z͹Z̺Z̹Z̹Z̹Z͸Y͹Y͹Y͹X̸Y̹X͹X̷WʶVȵVŲTRJ?;9448757657758667667667324EBBϽͽͼͼͼͼ̻̻̻̻̻˻̺˺˹˹˹˹ʸ˹˹ʸʸɷɷȶȶɵȵȴǴǴǴǴƳƳƲŲűűİİİïﯭ­­­˹ule d^W̻í̺Ͻϼμμλͺ̹̺̹͹̹˹̸˷ʶʷɶɶɵɴȳȳDzDzDzDzƱƱŰƯʴMGA ""##&%&$$%$$%$#%%#%$$%#"$ 2/.në©~~~}|{{zyzj)'("!"  =7cVl^{k{"&*,----...-,-,,,,,+++*)))*)((((''+;ǵUkVULhI- y-t <̿dmGK̹\λ]͹[͹[ͺ[̺Z͹Zͺ[͹Z̹Z͸Z͹X͸Y͹Y̹Y̸Y̸X˶VǴTǴSNf^@338758867768667657768446537tliʺννͽͼͼͽͼͼͼͼͼ̼̻̻̻˺˺˹˹˹˹ʹʸʸʸʸɷȶȶɶȵȵǴǴǴǴdzƳŲŲűŰİİİðîî®­пʴ101TOKìμнϼϽϼλλͺ̹̺͹͸˸˸̷˶ʷʷʵɶʵɴȳȳȳDzDzDzƱűŰηt'&' )((%$&%$&%$&%$%$$%%$%"""" "`WM~ª~}||{{xo_&%&#!"!  =7dWm_}m}#'*,--...-.-----,+,,******))())(('+<ǵUkVULhI- y-t <̿dmGK͹\Ϻ^͹\ͺ\ͺ[̹[͹[͹Z͹Z͹Z̹Z̸Y͸Y͸X̹Y˹Y˸WʶVųUıSK978668778878879778778767325QNM̼ξνννννμμͼͼμͼͼͼͼ̻̻̺˺˺˹˹˹˸˸˹ʸɸɷȷȶȵȵȵǴǴǴƴƳƲŲűűİİİİïï®­¬î̸d[XEA@пμннϼϼμλͺ̹̹͹͸˸˹̷˶ʶʶɵʵʴɴȴȲȲDzDzƱƱƱͷu('( )&)%$&%$%%$%%%%%%&! #""$dZNë~}}|||vrbR%##"!!    ! B:eYoao $(*,---....-.-,--++,+++*+*)))(()((,;ǵUkVVLhI- y-t <̿dmGK͹\ϻ^͹\ι[̺[̹\͹[͹[͹[͹Z͹Y͹Y̹Y̹Y͸Y͸Y˸XǵVɵUQpgB228788868769879869879657637~wrξϿϾξξξϾνννννννͼμͼͼͻ̻̺̺˺˺̹˹˸ʸ˹ʸɷɷɶȶȶȵȵǴǴǴdzƳŲŲűıİİİİï®­­Ͽ͸}MFF{rϾϽонϽϽϼμͻͺ̺̺ͺ͹̹˸̷˷ʶʶɵʵʴȴȴȳȳDzDzƱƱθu''( )')%$&%$%%%%'&' """$cXOǯ«~}|||wi[N#"#" "   !!)'JBfYrdr!%(+-....//...-,,--,,,,,+***)))))((+<ǵUkVVLgH- y-t <̿dmGK͹\ϻ^κ\ι\͹\ͺ\ͺ\ͺ[ͺ[ιZ͹YͺY̹Z͸Z͸Z˷XʷWǴVȳUM@=:989779779778868978879104UNO̼ϿϿξξξξξξνννͽͼμͼͻͻ̼̻˻˺̸˹ʸʸʸʸʷʷȷȶȶȵȵǴȴǴƳųŲűűűİİİï®®­Ȳókb_ukfƵŭϽпϾнϽϽμμλλ̺̹ͺ͸˸˸˷ʷʶɵʶɶɴɴɴȳdzDzDzDZθx/.. "(()$$'%$'''( "#"$bYOȯ«}}|}w[SM $"!" ! !!!/+QGgXtes"%),.//..../.-.-,,-,+,+,,***)**)))(+<ǵUkVVM fG, y-t <̿dmGKͺ\м^ͺ\͹\ι]͹\ͺ\κ\ι[κ[ͺ[̺[͸Z͸Z̸Z̸XɵWȴWR|rE1/8:8:98:77:77876888:769;;=~пοοοξξξͽͼνμν̽ͼͼ˻˻˺˹ʸ˸ʸʸ˸˷ɷȷȷȶȶǴǴǴǴųƲűűűűİİݯî®к{rog_ĴȰνпϿϾнϽμϻμμͺ̹̹͸͸˹˷˷ʶʶɵʵʵɵɳȳȳDzDzƱʵQJD#"$*)*''( "$#%aYOȱ«ª}}|~uF??  !"# !!" ! !!.+PGj\whv"&*-.../.../.-...-,,+,+++*+***))*((-;ǵUkVWN bE+ y-t <̿dmGKͺ\м^ͻ[ͻ]κ]͹[͹[κ\ι[κ[̺[̺[͸Z͹Z̸Y̸YƳXϻXPLJ=879:8:98:97:97:88888:647aYVξϿϿξξνννμͽͽμμͻͻ̼˺˺˹̸ʸ˸˹ʹʸɷȶȷǵǴǴǴdzƲŲűűűİİİİî®íοѺ{qĮϾппϾннмϻϼμλι̹̹ͺ͹˹˷ʶʶɵʵʵɵɳȳȳDzDzƱȳîr<86##%!"#$$%aXOɲ«««ª}|~p1-,""" !" !"" ! !!1.TJl]yjx$'+-/..00//../...---,--,,++******))-;ǵUkVYP z]A( y-t <̿dmGKͺ\ϼ^κ[λ]κ]ͺ\ι[ͺ[ͺ\ͺ[̺[̺ZͺZ͹Z͸YʷYǴXʷVK./9<;:88987:97:97:98:98:637yϿϿϿϾϾνννμμͼͽͼ̼˺˺̹˺ʹʸʹ˸˹ɷɷȶȵɵǴǴƳƳųűűűűİİïîîưǷнппоϾннϽϻμͻκ̺̹ͺ͸˹˸˷ʶʶɶɵɶɵɳȳȳDzDzDzDZįp?;9$$&bYOʳìì«~}t'&&###! ! ! !!" !:5^Sl^{l|$&+.////0/......-,-,,,,,+++*****)((,;ǵUkW\R!oU;% y-t <̿dmGKͺ]Ͻ_κ\ͺ]ͻ]κ\κ\͹\ͺ\ͺ\ͺ[͹[ͺ[͹Z͸YɶX͹XQc\A44:;:;98:97988997998:88:KFHпοννννͽͽͼͼ̻̻˺˺˹˸ʸʸ˹ʸɷɷȶɶȵǴǴǴƴƲƲŲűıİİïï®®îͼɷппппϾнϽμλλͻͺͺ̸̸̹̹˷˷ʶʶɵɵʶɵɴȳȳDzDzƲǴ­v\TLg^T̶¬íí¬¬«ª}s&%&#"$! "! !"!!#! !A:fXm_}n!~&(,/000010/00///.....---,,,,,++++*)-;ǵUkX`V# udJ3 y-t <̿dmGKͺ]μ_ͻ]λ]λ]κ\ͺ]κ\ι[ι[κ\ͺ\ͺ[̹Z˹YǴXӾZPDB=99:;:;:8;:8:98:87:99;446|upǻϿϿϿϾξνμνͼͼͼ̻̺˺˺˺˹ʸʸʸʸɷȶȶȵǵȴȴƴƳƳŲűŰİİï®®­­ѿѿпоϾнϽϽϻλλκ͹̺͹͸̸˷˶ʶʶɵɵʵɴɳȳȲDzƲƱűİįŮĮĭì쬫«~{{l]$#$##$! "" !#!!" !?9eXl`!}n&|*/2577788887877777777666555545544555=ǴTjWe[$ }gW@+y-t <̿dmGLκ^м`ͻ]ͻ]λ]κ]κ]ι\κ\κ\ι[ͺ\ͺ[͹Z˸YųXӽYL-.9<<;98:98;:9;:8;:9<:9;546пϿϿϾξϽνͽͽͼͼ̻̻̻˹˹˹ʸʸʸɷɷȶȵǴǴǴǴǴƳŲűűİİðïîîѿѿпоϾмϽνϼϼλλ̹̺͹̸˸˷ʷ˷˵ɵɵʵɴȳȳDzDzDZűűDZƯįįůĮĭí¬ì«xeYL""" #"$"!"!!""""""!"D>"k_&sg+w29>CFHIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ˹XkXg\% u\L5" y-t <̿dmGLκ^м`λ]ͺ]ͺ]ͻ^ͺ]κ\κ]λ\κ\͹\ͺ\̹[ɶYκZSc]C44:<<<99;:9:98::8::9;98:b\[ǽϿϿξξνμͼνͽͻͻ˻˺̺˹˹ʸʸʷɷȶȵȵȴǴǵƴƳƲŲűıİįﯭ­­ѿѿпоϽϼμμϻͻͼͺ͹̺̹˸˸˷ʶʶʶɶʵɴɴȳȳȲDzƱƱƱƯůůůĮĮí¬¬««ªªxMGG !  #"#"""""# # "42&\U0wn9{@JT\ƹaοdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhmsYh[& rWE. y-t <̿dmFMͺ^μ`ͺ^λ^κ^κ^λ]ͻ]λ]κ\ι]͹\κ\͹[ȴZӾ[OIF>:9;<;<::<;9;:8;99;;:<98:ϿϿξξνͼͼμμͼ̻˺˺̹˹ʸ˸ʷɷȶɵɵǵǴǵǴƳŲƲűİŰůﯮí­ппоннνμμλͻͺ̸̹̹˹̷̹ʶʶʶɵʵɴȳȳDzȳDzDZDZűŰưůůĮííìë¬r-)+####"##!##!#! "!!"53'^W0wp9}@JRYö^ɼa̿ccdeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefcMh\$ sVB* y-t <̿dmFMͺ^Ͻ`κ]κ_λ_ͻ]λ]λ^ͺ]ι]ͺ\λ\͹\͹[ųY\L/.9=<<:9;;:<:9<;9<:8;<:<<;=ϿϿξξξͼͼνͼͻ̻˺̺˹ʸ˸ʸɷȶȶȶȵȴǵƴƳųƲűŰŰððïî­¬ѿппоонμνϻμͻͺ̹͹̸˸̷̷ʷʶʶɵʵɴȳȳDzDzƱDzDZůůưůĮĮíĬ쬫ªªt"!#%$$""$""$""#""#!!"%%61HARJ `V&nd,{o0ڂv3ֆy6ׇz6څx4܅x4߄w4v4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4u4v4v4w2ym,C<xZA) y-t <̿dmFMͻ^н`ͺ_κ_λ^ͻ^λ^λ]ͻ^κ]κ\κ]ͺ[ʷ[ϻ\Tb\D33<><=;:<:9;;9;::;;:;;:==<:=;9<;:<:9<;:=<:={sm˾ϿϿονννͼμͼ̻˺˺˹ʹʸʸʸʷɷȶȵǵȴǴƳųƲƱııİïïî­­ѿѿѿϿϽмϼμλͻͺ̺͹͹͸˸˸˷ʶʶɵʵɴȳɴȳDzDzDzDZƯůưůįĮĭí¬ì쪪ycVJ!$!"$#%####"$"#$#"#! "*! 5" VA3xZE}`JbLeNdMbMcMcLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLaLbLdNvZF3&aC) y-t <̿dmFMλ_нaμ_μ^Ϻ^Ϻ_λ^λ^λ^κ]κ^κ]ͺ\ǵ[\N=;=<:<<;<<:=;:=;;<<9<<:==<=пϿϿϿξνͽͼͼ̻̻˺˺˹ʸʸʸɷɷȶȵǵȴǴƳŲƱƱııİįïî­­ҿпϾϽнϼμͻͻͺ̹͹͸˸˸̶˶ʷʶɵʵɴȳȳDzDzƲƱDZưŰƯŮůĮĭí¬ì쫪uG@> !$!!#$#$$"$$"#$!##!#!/)!O8W9 %$ׁbKl̝wҡz֣|إ~٦ڦڧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧܨפ|eK:+cD* y-t <̿dmFMλ`нbλ`ϼ`μ_λ^Ϻ^κ_λ^λ]ͻ^κ]κ]Ƴ[^tJ+,:??>;;=;:<;;<;;=<;<=;=97:ϿϿξξμͼͽ̼̻˺̸̹ʸʸʸʸɷȶȵȴȵdzƳŲƲƲűŰİįîî­­понϼμϻμͻ͹̺ͺ͸˷˷˷ʶʶɵʵɴȳɴɳDzDzDZDZƱŰưŮŮįĭí¬¬ìëªx&%( "$$$##$##$##$$"$# #!2*"X<Z< " ՀbKqҠ{բ|٥ۧۧۧۧۧۧۧۧۧۧۧۧۧۧۧڧڧڧڧڦڦڦڦڦڦڦڦڦڦڦ٦ڧ٦eE5'cD* y-t <̿dmFMλ`нbκ_ϼ_μ_ϻ_λ^κ^Ϻ^κ]ͻ_ͺ]͹]ɶ[λ\xoJ12:?>>=<>;:<<;<;:<;;<=;=KEG˿Ͽοξνͼͼͽ̻˺̹̹ʹʹ˹ʹɷȷɵɵȵȵǴƳƳƲİİűįî®î­­ѿооϽϼϻλͻ͹̹̹͸̸˹˷˶ʶʵɵʵȳȳȴǴdzdzƲƱưƯŰĮůĮí­ììªxh" $%$%#$$$$%#$%$"$### 9,!]>\= &"ԄeMpŗtmiijjjjjjjjkkkkkkkkkklklllllllllnɚvԢ}eF5(cE+ y-t <̿dmFMλ`нcϻ`μ_μ_ϻ`μ`ϼ^Ϻ^ͺ_λ_ͺ]̸]κ\Vb]F55=?=>=;>=:=<:=;:<;:<=<=tlkϿξοξͼνν̼̺˺̺˸ʸʹɹʷȶɶȵǵȵȴƳŲűűűıï®î­­ѿоонϼνϻͻͺ̹̹͸͸̹˸˷ʶʷɵʵʵȳȴǴdzdzƲDZưůưįůĮí­¬¬¬ª|g\S!!##!%%#'$$$%#$$$%$"$#$$B0 hD _? ($ԇgNŖrǘtjhjlllkkjjjiiihhhhggffffeeddcdcbgȚv֤~eF5(dF+ y-t <̿dmFMλ`ѽbϼaμaμ_μ_ϻ`ϻ`λ_λ_λ_ͺ]ʷ\ӿ^RQMB88>==?<<>=;=<;=;;>;:=?=?ϿϿϾνͼνμͻ̺̺̺˹ʸʹʹɷɶȵȴȵǵdzŲŲƲűűıïî­¬ѿооϼνϼλͼλ͹̹͹̸˸˷ʶʷɶɵʵɴȳȳȳȳDzDzƱűưůůĮĮĭ¬«ë¬©yFA@""##$$$%&$#%%$%%%%$#%"(&E1#iF"cB )$҉iPȘuǗtl̙sۣ{ۤ{ڣyڢyסy֡x֠v՞uԝuӜtқsћrϚqΘqΘq͗p̖n˕mʔmɓkǒkƑjŐiĎhÎgfeeddhșv֤~eF5(dF+ y-t <̿dmFNλ`ҽbϻ`μaμ_ϼ_ϻ_κ`ϻ`ϻ_λ_κ]ɶ\`zN><>><>>=>=<><;>=<><<>;;=?>AпϾξνͼνͽͻͻ̻˺˹˸ʹʸɷȶɵȴǵǵǴųŲƱŰűð¯î­¬­ҿҿѾϿнϼμλͼμκ̹̺͹̸˸˷ʶʶɵʵɵȴɳɲȲdzƲDZƱŰƯŮůĮĭĭ­¬ì«ª§s"#%$#%%%%%%%%$&$#&%#&%#%-&K4%nI#hE *%ьkR˚vșulǖqՠxաxԟwԟwҞwўvќuМtϙsΚs͙r̘q˘pʗpɕpɕoɔnȔmǓmƒkĐjihggfeeedhșv֤~eF5(dF+ y-t <̿dmGMλaнcκ`μaμaλ`ϼ`ϼ`ϼ`μ`ϻ_κ^ȵ\_tlJ00=?>=?=>=<>=<>>=>=<==;><;=A@AϿξϾϽͼͼͼͻ̻̺˹ʸ˸ʸɷɶȵȵȵǴǴƳƲűűİï¯î¬­­ѿпϾмϼμλͻͻͺ̺͹̸˸˷ʷʶɶɵʵʴȴȴȳdzƲDzưůưůůĮĭĬ¬¬ì«ªzYNG! #%%'%$'&%'%$&$%%%$%$%&:,Z:*uN%rK .'ΑnSΝx˚wmʘs٣{٣{֡y֡yՠx՟wӟwҞvҝuМtЛtϚsΙr͘q͗q̗p˖oʕoɕnȔmǓmƒkĐjÐiihggfeișv֤~eF5(dF+ y-t <̿dmFNλaѾcμaλbϻbϻaμaϼ`μ_ϼ`λ_̹_λ_Yc]F66>?>?>>=>==@><@>>=?XQRϿϾϾϾνͼͼ̻˺̺˹˹ʸɸȷɶɵȵȵǴƳƲŲıŰİïî­­­ҿпоϾмϽϽϻͻͻͺͺ͹̹˸˷ʶ˷ʶɵʴʳɳȴdzȲDzDZưůưůŮĮĮĭí쬪yj)')&%'&&&&%&&&'%#&&'(%=2L5^>-W)zQ 2!)̔qVПz˛wn˙uۤ|ܥ|٣{٣zآzסyաx՟wӟwӞvҜuќuЛtϚsϚsΘq͘q̘q˖pʖoɔnȔmƓmƑlőkÑjhŽhŽhfișv֤~eF5(dF+ y-t <̿dmFMϼbѾdмaмbмbϼbϼbμaλaμ`ϻ`̹_ҿ_UVRD:9>???>>??=??=@==?<<>?>@c\\ϿϾϽνννͼ̻˺̹˹˹ʸɷȶȶɶȵȵǴƳƲűűŰį¯î쬭ѿоϾнмμμμλͺ̸̸̹̹˷ʶʶʶʶʴɴɴȳȳDzDzƱŰưůůįĭĭíì쫪©}_UL!(')'&''%''&&&&&%"%&+*'R= \= ^>/\*~T4"*˕rVѠz̜wn̛tۦ}ܦ}ڤ{ڤ{٣zآzסyաx՟xԟwӝvҝuќtћtϛtΚsΙr͘q̘p˖pʕnɕnǔmǓlƒkőjÏiÏiÏhfișv֤~eF5(dF+ y-t <̿dmFNμcѾeмcнcϼbϼaϼaμbϻaϻaϼ`̹`ӿ`TTQD:9>A>@?=@?>?>>@>>@=;>@>@pfgϿϾϾϾνͽͼ̻̺˺˹˹ʸɷɷɶȵȵǴdzƲƲűűİïïí­ѿѾонϼϼϼͼͻͺ̹͹͹̸˷˶˷ʷɵɴʴɴɳȳȲDZƲƱưŰůůůĮĭí¬ëªĬu<7;%%%'''&&(&&'&%''&'&$&(70*\B"_?"bA1^+V6$*ʗsWҠz̜wn̜vܧ~ݧ~ۥ|ۥ|٤{أzآzסy֠x՟wԟwӞvҝuќuќuЛtΚs͙r͘q̘q˗oʕoɕnȔmǓlǒkőkđjĐigiǙv֤~eF5(dF+ y-t <̿dmFMϼcѾeλcнcнbнbϼbμbϼaϼ`ϼa˷_aumL99?@?@?>@>=@>=@?=??=@=;>B?A||Ͽξννμͼ̻˺̹˹˹˸ɶɶɶȵȵǵƴƳűİűűïïí¬ѿѿоϾннνλλͻ͹̺͹̸̷˷ʷʶɵɵʵɴɴȳȳDzDzƱŰưůůůĮĭí¬ì«ªīxi+**'&(''('&'&&(&%(&&')D7,dH#`A#hE4b-Y7$+ʗrWҡ{̝xo͝uݨ~ߨܦ}ܥ}ڥ|٤|٣{آzסy֡y՟xԞwӝvҝuҝtМtϛtΚsΙr͙q̗p˖pʖoɕnȔmǓlƒkƒkĐjhjǙv֤~eF5(dF+ y-t <̿dmFNϼcѿeмbнcнcмcϽbϼaϼbϼ`ϼa˸_cibI33>BAB??A>=@>=@>=@?=?=<>CADοϾννͼ̼̻̺˹˹ʹʸʷɶɵȴȵǴƳƲıűűﯮí­ҿпоϾооϽϻλλͺͺ̺͹̸˷˷ʶʶʶʵɵɴȴȳȳDzƱưưŰŰůĮĭíí¬ëªé`VM*)+(&)('(''(''(&#'&)*,XB.sP%bB%mH4e.[8%+ɘsXӡ{͝xoΝvߨߩݧ~ܦ~ۦ}ۥ|ڤ|٣zآzסy֠y՟xԞvӞvӝvќuМtЛsϚsΙr͘q̘p˗pʖoɕnȔmǓlǓlőlijǙv֤~eF5(dF+ y-t <̿dmFNϼcѾfмcмcнcϼcмbнbϽbϼbϼa˸_coiK66?A@A@@A@>A?=@>=@>=?=<>CADϿϿϿϽνμ̼̼˺̺̹ʹʹʷɶɵȴȵǵǴƲƲűŰŰî®î­ѿппϾнмμμμͻͺ̹͹̸˸˷ʶʶʶʶʵɴɴȳȳDzDzƱŰưƯůůĮĭí¬ì«ɮm0.1((((()''((')'')(')(&'(4//fJ1{U'fF'sK6i/^9%+ɘsXӡ{͝xoΝw઀ੀާݧܧ}ܦ|ۥ|ڤz٣zءyסy֡xաvԟvԝvӜvҝtќsЛtϙsΚr͘p̗p˖pʖoɕnȔmȔmǒljjǙv֤~eF5(dF+ y-t <̿dmFNϼdѾfмdмdнcϽcмbϽbнcϼbϼa˸_cniK56>B@B@?B??A?>A@=@>?A=<>CBDпϿϿϽνν̼˺̺˺˸˸ʹɸȷɶȵǵǴƲƳŲűııð¯î­поϾннϽϼλͻͺ̹͹̸̸˷˷˷˷ʶʵɴȴȳȲdzDzƱŰưƯůůĮĭíì쩨wi^ ,++(()''((')(&((%((()*B61nO4~X)lI'vN8k1`9&+ɘsXӢ|͝xoϝxઁ⪀ߧިި~ܧ~ܦ|ۤ|٤z٣{ءzסy֡yԠwԞvӞvҝuҝuМtЛsϚsΘr͗p̖p˖oʖnɕnɔmȔljjǙv֤~eF5(dF+ y-t <̿dmFOϼdѾfмcмdмdнcнbϽbнcмbϼa˸_cohK66>A@B@>A@>@??A@?@>?A=<>CBDϿϿϿννμͼ̻˹˸˸ʹȸȷɶȵȴȴƴƳŲűűűð¯î­­пѾѾϽϽϽϻλͼͺ̺͹̸̷̹˷˷˷ɶɵɴȴȳȲdzDzƱưưůůůĮííìì©©ƭ}PHG !,*,(())()('((&('%(',+-XB5{W6[+rM)zP9n1a;'+ȘsXӢ|͝xoѝx⪂᪂ߩߩި~ݧ~ܦ}ۦ|ۤ{٣{آzסyסxסwՠwԟxӟvҝuҜtМsϚsΙr͘q̗p˘oʗpɖoɕmȓmjjǙv֤~eF5(dF+ y-t <̿dmFOϽdѿfмcнdнdмcнcнcϽbмcϼa˸`dohK76?CAAA@A@>A@>@??A@>@>A>>@A?Al^[Ͽξννͼ̼̻̺̹˹˹ʸɷɶȵǵȴƳƲƱııŰð¯î­пооомϼμλλͺ̺͹̹˸˷ʶʶʷʶʵɴɴȳȳDzDzƱŰưưůůĮĭí¬ìªcZO.,,())(())'))'*('))++.TA4tT:`=@A@BjbeϿϾννͼ̻̺̹̹˹˸ɸɷɶȵȵǴƳƲűűűİð®îѿѿѿϿϾϽϼμμͻͺ̸̺̹˷˷˷˷ʶɶʵɴȳȳȲDzƱƱƱƯůůůĭíì쪫˳m745&%'+*+))*)()((*(()(()*4.2cK8[?e>j0X-Wv2e<',ștYԢ|͝xpҠy宄毄㬃㬃⫂᪁ੀߨާ~ܧ~ܦ}ۥ|ڤ{٣{٣{ءzסy֡x՟xӟvӞvҝuќtЛsϚrΙr͘r͘p̘pĒmkǙv֤~eF5(dF+ y-t <̿dmFOϽeѿgмdоeоeϽdϽdнdнdнdϽc̸aepiL78@DBCA@C@@B@@A@@AA?BA@AA>APJKϿοξνͼ̼̼̻̺˹˹ʸɷɶȵȵǴƳƳƱűűįï®íѿппоϾнϼμλκͺ̹͹̷̹̹˷ʷʶʵɴɴȳȳDzDzDZŰŰưůůĮĭíììȯzD??!!$-,-***))+*(+*)*)')*,+2^G;~\>dDpDs3].Z>w3e<',ștYԢ|͝xpҠz毅氅㭃䭃㬃⫂᪁ੀߨިܧ}ܦ}ۥ|ڤ{ڤ{٣{آzסy֠x՟wԞwӞvҝuќtЛsϚrΙrΘr͘qēmkǙv֤~eF5(dF+ y-t <̿dmEOϽeѿhоfѽfнeоeоeϽdϽcнdϽc˸aeqiL88@DBBBACAACA@BA@BA@A@?A@>AEBCϿϾννν̻̻̻˺˹ʸɸȶɶȵǵƵųųƱŰŰð®­ѿѿпооϽϼμλͻͺ̹͹͸˸˸˶˶ʶɵʵɴɴȳdzDzƱưưưŰůŮĭĭìì˲oc[&%+,+,,+,+*****))*)(**)+-<48wW>cBiHuGw4`.\>x3e<',ștYԢ|͝xpӡ{谆豆宄宄䭄㬃⫂᪁ੀߩާݧ~ܦ}ۥ|ۥ|ڤ|٣{آzעy֠x՟wԞwӞvҝuќtЛsϚsϚsΙrœnkǙv֤~eF5(dF+ y-t <̿dmEPнfhнfнfѾeоeнdоdоdоdнc˹bfqiM88@CBBBABB@BB?CAACB?B@@B@?ADCEϿξνννͼ̻̺˹˸ʸɷɶȵȵȴƴƲűıııï­ѿѾооϾϽϼμμͻͺ͹̸˸˸˷ʷʶʶʵɴɴȳȳDzDzDzŰŰưůůĮĭìĬJDA#.-.***+)*+)+*)+)'*+-.4_I=^BgFoK{H{5a/]?x3f<',ștYԢ|͝xpԢ{鰆鱇毅寅䮄䭄㬃⫂᪁઀ߩިݧ~ܦ}ܦ|ۥ|ڤ{٣zآzסy֡x՟xԟwӝvҝuќtЛsЛsϚsƔokǙv֤~eF5(dF+ y-t <̿dmEPоfhѽeѽeѾeоeоeоeнeоdнd̹bfqjN98ACBBBABBABB@BA@BA?CA?C@?AEBEǽϿϾϾ;ͽͼ̻̺̺˹ʸʸɶɶȵǵǵƳŲŲİŰï®­ѿѿпоϾнϼμλλͺ̸̸̹̹˸˷ʶʶʵɵɴȳȲDzDzƲưưưůůĮĭ­̳sh\,+-))*,*-*)+**++*,*)+**+/<5;zZAdElHuM~J}6c/]?x3f=(,ștYԢ|͝xpբ|鱇겈簆簆毅宄䭃㬃⫂᫁઀ߩިݧ~ݧ~ܦ}ۥ|ڤ{٣{آzסy֠x՟wԞvӞvҝuќtќtЛtǕplǙv֤~eF5(dF+ y-t <̿dmEPоfhнfнeѾeоfоfоeнeϽdϽd̹bfqjM99ADCCCBCB@CA@BA@CA@BB@BA@BCBDϿξνννͼ̻̺˹˹ʸɷɶȵȵȵƴƳƲűİįï®ѿѿѿпоϽϼϼλͻͺͺ͹̷̹̹˷ʷʶɶʵɴɳȳȳDzDzDzűŰƯůĮĮ¬ůF@>!!$.,.+*-+*,**+*++*(*+0.7`K?`DjIsLyOK6c/^?y3f<(,ștYԢ|͝xpգ}겈겈籆豆簆毅宄䭃㬃⫂᪁઀ߩިިݧ~ܦ}ۥ|ڤ{٣zآzעy֠xՠwԠwӞvҝuҝuќtȖplǙv֤~eF5(dF+ y-t <̿dmEPоfiѾfѾfнfнfоfнeϾeнeϾd̹bgslN9:BDCDDADC@DBACB@CBABAACA@BDBDϿϾνννͽͼ̺̺˹˸ʷɶɶȵȵȴdzƳƲİŰï®­ѿѿпоϾнϼμλλͺ̺ͺ͹˸˷˷ʶʶʵɴɴȳȳDzDzDzűŰưůůĮ«ȯndY,,-('*-,.++,++,+*,+*,++,0>6>}\DfHoLwN}QM7d/]?y4f<(,ștYԢ|͝xp֣}볊볉豇鱇豇簆寅宄䭃㬃⫂᫁઀ߩߩިݧ~ܦ}ۥ|ڤ{٣{آzסy֡xՠxԝwӝvӞvҝuɖplǙv֤~eF5(dF+ y-t <̿dmEOнgҿiѾfѽfнfоfѽeоfϽeоeѾe˹chleL56AEDDB@CBADBBDC@CB@BAABB@BDBDϿϾϽννͼ̻˺˹˹ʸɶɶȵǵǵŴųűİıï¯í¬ѿѿпоϾнϼμλͻͺ̺͹͹̸̹˷˷ʶɵʴɴȳȳDzDZDZƱƱưůůíDZz>;9$&(-.-+,-+*-+*,,+-*(*,/.8`MCcHlMuP|PRM7e/^?y4f<(,ștYԢ|͝xp֤}겈걈鲇豆氅毅它䭃⬃⫂᪂ੀߩި~ݧ}ܦ}ۥ|ڤ|٢{آzעy֠y՟xԟwӟwӞuɗpmǙv֤~eF6(cE+ z-u <̿dmEOнgӿiоgѾgѾfоfѽeоfнfоeѾe͹ch{sO?>BCBDBBCBBCBADC@CB@DA@BB@CCBDb\\ϿϾϾνμͼ̻˺̺˹ʸɸɷȵǵǵŴųűƲıïïí­поϾϽϼμλͻͺ͹͹͹̸̹˷˷ʶɵʴɴȳȳDzDZDZƱƱưůů¬ʳg]X,*.*),,--,,,,*-+*-,+-+*,0=7BaGhMrP{SRRM7d/^?y4f=(,ȚuYբ|͝xpץ}겈곈鲇鱆谅毅寅䮃㬃⫂᪁ੀੀߩިݧ~ܦ}ۥ|ڤ|٤{آ{עy֡yՠxԟxӞwӞvɘrmǙv֤~eF6)cD* y-u <̿dmEOоgiоgоgѾfϾfϾfнfоfоeоeκdeXVRG@>DDCECBCDACBBCCBDB@DB@CCACD@Aпоξνμμ̻̺̺˹ʸʸɷɵȵȵǴŴųƲİŰﯮѿѿпоϾϼϽμλκ͹͹͹˸˸˷ʶʶɶʵɴɳȳȲDzDzDzƱưůů˴}:::)(+.-.-+.-+-,,,+,,*(*-1/:bNFhLoQyTUTUN6d/^@y4f=(,ƚvYԢ|̝xqץ볉볉겈鱇貇簇毅宄孃䬄⫃᪂ᩁੀߩިݧ~ܧ}ۥ|ڤ{٣{آzסy֠xաxՠxԟwʘqmǘv֤~eF6)bC* y-u <̿dmEQѿijҿgҿgҿghѿhѾhѿgҿgѿgϽgf]]XK>=CEDEDBDCAEBBDCBCCADBACCACA@CϿϿϾννͼ̻˺˹˹ʸȷɶȵǵȴƳųűİŰﯮѿѿпоϾнϽμλλͺ̸̹̹̹˷˷ʶʶʵɴɴȳȳDzDzDzƱưůưȱZRO-,-,+,-,.-+.-+.,--,,,+'*1A:EeJlQvTWVUUËN8e0^@y4f=(-ÚvYӢ|̝xqץ촊볉겈鲉豇篆毅宄䭄㬃⫂⪂᪁ીߪިݧ~ܦ}ۥ|ڤ{٣{آzסy֡x֡xՠxʘrmǘv֤~eG6)}_A) z-w <̿dmEPϾfjпhпhпgѿfѾfѽfѾfоeоeͼff\ZXJ>?CECDDADCBEBADBBCCBCCADCADDCEϾνͽͼ̻̻̹˹ʸɷɷɵȴȵdzŲŲŰİİï®ѿѿпϾнϼμλͻͺ̺̺͸̸̸˷˶ʶɵʴɴȳȳDzDzDzƱůȱ˳s524+*-/-/,+-,,--,.-,.+)+/53=eQJlOsU|XXWUUċN8e0^@y4g>).wZӢ|̜xqئ﷌촊볉겉鲇谇簆毅宄䭄㬃㫂⫂᫁઀ߩާݧ~ܦ}ۥ|ڤ|٣{آzסyסx֡x˙smǘv֤~fJ9+w[?& 8u =̿dlFHðWųXıWıWIJVIJUıUıUıUıUıU°UıWOf`F;;EEDEDCEDCDCBDCADBBDBADCBDCBDϿξννͻ̻̺˹ʹʸɷȶɴȴȵƳųƱİİï®­ѿпоϽϽϼμλκ̹̹͹̸̹˷ʷʶɶʵɴɴȳDzDzDzƱƱ̴E@>----,..,/-,-,-.,,.,*-../:SGLjPrV|Z[[[ÍW‹VƌO7f0^?y3g@*0x[Ӣ|̜xqڨ︍ﶌ볉벉鲈豇簆毅宄它䭃㬃⫂᪁ੀߨިݧ~ܦ}ۥ}ڤ|٣{٣{أz͛tlǘv֤~gO<.lQ8" 8w =̿dmįLFKKKKJJJJJJJJJ̵HsjF99EFEECCECCEDCEDBECAEBADDBECBDa\]Ͼννͼ̻̺˹˸ʸɸɶȵǵȵdzƲűİİï®­ѿпоϾнϼμλλ̻̹͹̹˸˷˷ʶɵʵɵɴȳȲȲDzŰʴǰwka0/0-,---/--/.,..,/,-/,'+4>:Fw_QrVz[^]\ŽZĎVÌVǍO8e0^?y3gB+2y\Ԣ|̜xrۨﶍ촊쳉벉鲇豇簆毅毄宄䭄㬃⫂᪁ੀߩާݦ~ܦ}ۥ|ڤ|ڤ{٣zΛumǘt֤}hVA1zl\E08x =̿evdabbbbbbbbbbbb;bdYGGIDADECFDCFCCDDCDDBDCBECAECBDEBDϿϾννͼ̺˹˸ʹʹʷȷȶǵƴdzűŰİİï®ѿпоϾнϽϼμͻͺ͹̸̹̹̹˷ʶɶʵɵɴȳȳȳƱdzʴ;88/.0/-.....-.--/.-/.-/*)+0J=?~]BbGlJqLvLyKyJyGxHyDt5`2`?x4fD-5z^Ң|̝xnʛwڦۧإإإפ~פ~֣}բ}բ}ԡ{ӡ{ҠzҠzҠzўyϞyϟyϞxΝwΝw͝v̛v̛v˛uʚtʙsʙsəsokǘtգ}j_I7_SI6& ;& >ôWjgfffffggggghhihi`]ZL@>DGDGEBFDBECCDDCEDCDCBDDCEB@CϿϾννͼ̻̺˹˹˸ɷȷɵǴǵƳŲűİİï®­¬ѿпоϾϽϼλλκ̺̺͹̸̸˷ʷʶɵʵɴȳȳȳİϹQKJ../.-//.//../-.../..//&-'81"]?*lK-vP1W3[5^6a6b5b5b5b4b1]5e=v4gE.8 {^ҡ{ϟzonppoopoooooooooonnnnnnnnnnnnnnlmɚvԢ}lmS@A94' ?8@gGONNNNNMMNMòLƭI̧GԢEܞCᙋA坎@v;RN@BAFEDEDCEECFCBECBECCDCCDDDECBE}|Ͽξνͼͻ̺˺ʹʸɸɷɵȵȴƳŲűİİï®íì¬ѿпоϾϽϼϼλͺ̺̺͹̹˸˷˶ʶɶʵɴɴɴŰιįwkb1/10/0.-/.-/.-/..//.//*-,:3'_B&vM*~T/[2a4e7h8j7k8k9l9l9l9l:q>x4hC-6z^Ӣ}٦Пz͝yΞyΞyΞyΞyΞzΞyΞyΞyΞyΞyΞzΞzΞzΞzΞzΞyΞyΞyΞzϞzϞzϞzΞzΞzΞzϞzϞzΞzΞzϞzПzפ~פ}n|`Hu ("" IA'yO-V1^3d5i8l9o:q:q:q;r;r;r;r;s=u3eH07{^Пy֣}Ӡ{П{ПzПzПzПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПyПz̜wlmSo oZeT t]Qv]mVeP|^KtWDnS@iP>dM=nP;NB>;=DGDGCCFDDEEDEDCEEBEEBEEDFECF?>@ονμͼ̻̺˹˹˸ɶɶɵǴǴƳŲűİİï®î¬ѿоϾнϽμμμκ̺̺͹̸̹˷ʶʶɶɴʴïҼPKH.-/001//10.0//00.0.,.635(6/I1!\=$`B'jG)qL+tO,xQ,yR-zS-{S-{S.{S.{S.{S.zS.zS/~U*tN;((`JԤ~_㪂cܮeԲgеi˸kȹkȹlǺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƺlƹlǷkȰftXN<.#   `qVdmʙu̜w̝w͝xΝxΝx̜w٥{jVOOBBFFDGECEDDFECFDCFECEEBFFCGCACsmlϿϾννͼ̻˺˸ʷɷʶȵǴǴƳŲűİİï®®¬ѿпоϽϼμλλλ̺̺͹̸̹˷˷ʶʶʵ®Ӽg_Z-,/1020/10.0//00/00.0113                  +!?1$G7*U@1qgO;]z]FOhOEqV@uZ>w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=w[=y\>x\5iP0% x]BfLdɚuܧۨݩުߪߪܨ谆qcWPACFHFGFCGDCFECFDDFECEEBEECFDCEOIKϿϾννͼ̻˺˸ʹɹʸȷǵǴƴƳŲűİï®®¬ѿпоϾϼϼλͼͻ͹͹͹̸̹˷˷ʶ˷űкdz{of5350011021/1/.0/010/1102,+-**++)+0+.3/3626:59;6:<7;=8<=8<>8<>8<>8<>8=>8=>8=>8==7;A;?C>B&#%bD) ~`JdMeȚuԢ|ƗtollmlndgXN=@DIFGFCGFCFECFDDFDCGEBEECEECFA@BϿϾννͼ̻̺˹˹˹ʸɷɵǴƴƳŲűİï®®¬ѿпоϾϽϼμͼͻ͹͹͹̸̹˷˷ʶǴʶӽs=990/12230021/2/02101213(()EEGhgjvvy~IJKiJ/ :,!fNuZץʚ̛͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜͜Ҡ~`z]G ~aJeNeəuԣ}phjjiigƔmp\>@EHFHFEFFEFEDFDCFDCGECFECEFDFCBD[WY½Ͼννͼ̻̺˹˹˹ʸɷɵǴǴƳŲűİİįíѿпоϾнϼμμκκͺ͹̸̹˷˷ɵɵӾMHH/-02231120021/2002201/,.546mmpBBEiJ/ &:,"oTdLfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNfNgN~aJeNeəuԢ|p“oՠx٣yנxנxӞvޤyhVOMDDGGFFFEGFDGECGFDGDCFECEEDGDCFA@CϿξνμͼ˼˺˹ʸȷȶȵǴǴƳŲűİİ᝭¬поϾнϼμλλλͺ̹͹̹˷˶ʵҼUOO-,/2131131/21/11011120/00/1SSUiijrrt{{}CCDiJ/ ~aJeNeəuԢ|pnӟw֡yՠxԠwҝvסwno^U@AFGFGEEFFDFFDFFDFECFDCFDCGEDGCBD]Z[ϿϾννͼ̻̺̹˹ʸɷȶǴǴƳųƱŰİð®®­ѿѿооϽϼμμμκͺ̺͹̹˷˶ҽXPJ.-02032231132032021120/0/./PPSbbdjklrsuyy|}}CCDjK0 ~aJeNeəuԢ|poԠwآy֡xՠwԟxԟwќto]:>DIGHFDGEEGFEFEEGEDFFDFEDFEDFCCEAACzroϾννͼ̻̺˹˹ʹɷȶȵǴdzŲűİİİ®®­ѿопϾнмλͻͻͺ̺͹̹̹мZSM.-/2144353221121022031010/1FEFyxzCCDjK0 ~aJeNeəuԢ|p“o֠yڣzעz֡yՠyѝv{e7;BJIIGEGFDHEDGFDFFDFEDGFDGFCGFDGA@CMILϿνͽμͼ̻˹˹ʹɷȶȵǴdzƳŲİİðîî­ѿпоϾнмλλλͺ̺͹κм^VQ1022024242242242132230120/1DCD{z|CCDjK0 ~aJeNeəuԢ|p”oעyڤ{٣zآzסyԟxzjTNLGEHGFGGEGFEGEEGFDGEEFFDGEDGFEGECEBACidfϿϾνͼͼͻ˹˹˹ɷȶȵǴǴƳŲŰııİ®¬¬ѿпоϾнмμμλλ̹ͺнSML--0203424213224224213325/./334kjlCCDjK0 ~aJeNeəuԢ|p”pעzۤ|ڤ|٣zآzסzԟx{g5;CJGJFFHGEGFFHEEHFDGFEFFEGFEGGFHBBDBADϿϾννͼ̻̻̹˹˸ɶȵǴǵƴųŲİİð¯î­ѿпоϾнмμμμͺλҽTNN002213435335324313213446.-/546ljlCCDjK0 ~aJeNeəuԢ|p”p٤{ܧ}ۥ|ڤ{٣z٣z֡yۣzНvq_A@FHFHFEIFFHGEGGEHGEHGDHEEHFEGFEF@?BJGJпϾννͼ̻̻̹˹˹ɸȶǵȴdzŲƲƱİݯ®­поϾннνμʸѿҾzKFD102324425324424435434656-,.768mlnCCDjK0 ~aJeNeəuԢ|p”q٥{ݨ~ܦ}ۥ|ۤ{٣zأz֠yޥ{oOKLJHIGFIFEHGFGGFHGEGGDGGDHEEHFEHFEH?>ALGEпϾννͼ̻̻̹˹˹ɷȶȵǴƳŲƱƱıᝮ­ѿпоϽϽ̺̻©yoi>;=102435546335435435435657--.;:>?VRPпϾϽνμλ̻˺˹˹ɷȶȵǴƴƳŲıŰŰï®­ѿϿϾμ˹êYSO436013436546545446346235646424324^\^CCDjK0 ~aJeNeəuԢ|pĕqܦ}ݨݦ~ܦ}ۦ|ۤ|ڤ{סyܤ{آxk\>?FGFGHGHGEIFEHFEGFFGFEGGDHFDHEEGEEGB@CZVXпϾννͼ̻̻̺˹˹ɷȶȵǴǴƳűűűᝮ­ѿоνϾĮ¬uleFBC.-1103778556455546535535768203.,.YWZCCDjK0 ~aJeNeəuԢ|pĖrܧ~ިާݧܧ}ܥ|ۥ{ڣzءz֡xΛuj\EEHEEHHGIFEHFEGFEHFFIFEHGDHGDHGEGEDF??B][[Ͽξνͽ̼̻̺˹˹ɷȶȵǴǴƳűűıį¯ŮŮ̹{piQKK0/3,-0778869647647657546535879,,-B@BljlCCDjK0 ~aJeNeəuԢ|pĖrݧ~᪀ߨިި~ݧ~ۦ}ۥ|ڣ{٣z٣{٣y͚uVONABGHGIHGHHFHGEIGEHGFHGFIGFHGEGGEHFEHA?BWSTϿϾννͼͻ˺ʹ˹ɷȶȵǴǴųıűŰİðįưȳDzŵyphbLGF-,0*+/76898:657657647647657656657++,>=?{y|CCDjK0 ~aJeNeəuԢ|pŖrߧ⪁ੀߩި~ݧ~ݧ~ܦ}ۥ|ڤ{٣{آzԟx~eVONBBFGFHIGIGEHGEHGEIGFIGFHFEHGEHGEHIGJ?<@OKNϿϾννͼͼ˺ʹ˹ʸȶȴȴǴdzƳdzȳʵ˵ν~tqiePLJ227$%+..1989:9;779567567657557567657323646ONOCCDjK0 ~aJeNeəuԢ|pŖrߩ㬂᪁ᩀߨިިܧ~ܦ}ۥ|ڤ{٣zעy|~eUONBCHGFHHGIHGIHFIGFHGEHGEHFEGFEGGEHJHK?=@B>A}ww¿ϿϾννμ̼˺˹˹ʹɷʶʶʷʷ̷wo^WV@=@$$('(,014879<;<:8;758758767567568658658545102;:<^]_CCDjK0 ~aJeNeəuԢ|pƗs઀䭃᫂᪁ੀߩߩާܦ~ۦ}ۥ|ڤ{٣{Ԡy|~fVPNBDGFFHHGHHGHGFIGFIGFHFFHGFHFEGFDGIHKFEI98=@B?B|vxппϾϾϾνϽϼųĶoicXSS1/3'(,005758<;<=<>:9;98:88:97:869869869778778869869769547435<;=\[^||CCDjK0 ~aJeNeəuԢ|pƘs᫂毅䭃㬃㫂᪁઀ੀߨާ~ܧ~ۦ|ۥ|٤{٣z֡xަ{gl]RIIKCCHHGIHGIGFHGFIGEHFFHFEHGEGGEGFEGGFIHGI98<=8;{ttпŵȻnfbYSS('+,-0436658;:<=:=;9;:9::9:99;98:97:88:88:97:97:8798797697684377680/.&%&YX[{{~CCDjK0 ~aJeNeəuԢ|pƘs㬃氆䮄䭃㬃⫃⫂᪁ੀߨިܦ}ܦ}ۥ|ڤ{٣{ءzܤ{˚uk\HFIKHJGFIHGHHFHGFIGFIGFHGEHGEHGEHFEHFEGGEGEEG==?C>?vppоɹôǻvnjVOO203227658769;:=:9;::;;:<;9<:9;:9::8;98;99::8;98;98:98:97:98987987:439547B@a]^˽ĸ˾ùysh``C>?64697:97:87:87:98;9:<;:;<;<;:<;:<:9;::<;:;;9;:9;:9;:8;98::9:98;:9::8965954:?=;C@7OJ7OXmd&^_d뤤CCDjK0 ~aJeNeəuӢ|pǘt䭄鱇篆毅宄䭄䭄㬃⫂᪁ੀߨިݦ~ܦ}ۥ|ڤ{٣zآzۤ{٣yibWQMJKCDGHGIIGIGFIHFHGEIGEIGFHFFHFFHGEGGEHGFIDCE?>@A@BCCFC@Db^_~þʾĸȾùvpf\UMHH@?@=<>;;=:9;76:64987:98<;:=><>>;=<;=;:<<;=<;=;;<::;;9;::<::<;:<;9<;9;;:;:9:76:55:98:DBph@?=@FCEIHJKIKb\]ƼŸŻ~~ypjhSOOFDEECEA@B>=?;8:75964877:98<;:<>=>>=?><>=<>=;>=;><<>=;=<;=;:<;;<;;<;;;;:<;:;<:;=<<:9<75;55;98:DA;HE=[V?EKJC¯Leƹand&abgꧦCCDjK0 ~aJeNeəuӢ|pșu密볉豇豆簆毆毅宄䭃㬃᫂ߪߨߩި~ݧ~ܦ}ۥ|ۥ{٣zסzڣzߦ{ӝvheYSNJKEEHGEJJHIIHIHFHHFHGEIGEHGFHGFHGEGFDGFEHGFIHGJEEGBAC=AA>BA?A?=@?>?>=?<<>===>=>=<><<=<;==<>=<>=<==;==<<><<<;<98;77;44::9;DA=HE=_Y@~FILðNθPɵNEKeɻbpe'bbgꨧCCDjK0 ~aJeNeəuӢ|pəu簇촊豈鱇鱇豇氆寅宄䭃⫃᪂ઁੀߨިݧ~ܦ}ۥ|ۥ|ڣ{סzסyݥzۣyovcfZSHFI?AGFEHKHIIGIGFIHEIGEHGFHFEHGEGGEGGDGFDHFEHGFHIGIIGKEDHA?C?>@<A86:31510422545778:99<::=>=>AAACCDCACB@AA@A@>A?>?>>??=?><@>><=>==?>?>>>99=:8=76<34;98f]BFJL­OʵQϺQɴPƱPİOFMfʼcqe(bbgꨧCCDjK0 ~aJeNeəuӢ|pɚv籇곉걈鲇鲆氅尅毄它䭃⬂⫂ᩁ਀ߨިݧ~ܦ}ܦ}ۥ|ڤ|ءzՠxءyޥ{ӝwk{gYSNMGFICCGDDGJHIIFIGEHGEHFFHFFHGFGGEGFDHGDGGDGEDGECGGCGHEHGFHGFIHGJIHIIHJEEGA@C>=@<>@=:9=98<99;::<;;=<:;<;;==>AABDDCEEDFDCEDBDCBDBACBABB?A@>@?>@@>@@>@?>@?=@?>?>=??=??=@?=?@>?@?@A??@>?<;?:9>99=33<55>>=>CC>IF?\WBskE{EJOįOͷRлSɴRDzRűQƴRʵRȳPFMg˽dpe(bbgꨧCCDjK0 ~aJeNeəuӢ|pɚv豇볊겉鲇鲇豅氅毅宄䮃⬂⫃᪁ੁߨިݧ~ܦ}ܦ}ۥ|ڤ|٣{٣{סyԟxڢy٢yǖrfucWRMMGFJBCHCDIIGJIGIHGHGFHFFHFEHFDGGDHGFGEFGEEHFEFFEFEDGEDGECFDCFDCEEDFFEGGDHGEHEEFEDFFEFFDGFDGFDFEDFEDEDDEECFEBEDCEDCDDCDCCDBACB@CA?B@?BA?B@?B@@A@?A@>B@>A@>AA?AA@A@?AA@AA@AA?@?>@<;?;;?:9?66>46=67=<;>>=>??>FD?MHAulFtkF}IMNPïQкRҼTɵRƲRűRȴRɵRʶQʶRʶRǴPF¯Mg˽dpe(bbgꨧCCDjK0 ~aJeNeəuӢ|pɚv貈촊볉겈鱇鱆豆篆殅䮄䭃㬃⫂᪁ੀߨާݧݧ~ܦ}ۥ|ڤ{٣{آzסyԟxӞwޥ{١wjzb|g[WOOIGIIGICBICBIFDHGFHHGHHFGHFHGFHFFGFEGEEGFEFEEGFEGFCFFCGDCEEDFDDEECEEBFDBFDBDCBDDBDDBECBDBADBADBADBADBACB@CB@CB@CB@BA@BB@BA@BBABBABA@BB@AAABBABBABA?B=<@<;@==?>=@@?@EC@DA@MIAf`EnfGzpGMMQQƲSտUӾTκU˷UƳSƲSɵSɵSʶRʶR˶SʶR˶R˷RɵPG®Ng˽cpe(bbgꨧCCDjK0 aJeNeəuӢ|pʛw賉﷌촊쳉겈鲈鲈谇篆殅宄䭃㬃⫁᪁ੀߨިިݧ~ܦ}ۥ|ڤ{٣{آzءy֠xӟwΚuƕoȗrėuhiWM=:9DCDHFIDCHCAIBAHDBGCCFFFGIHHIFHGEHFEHGEGFEFEEFFEGFDGDCGEDFEDEECFEBFDCFDBECBDDCDDBEDCEDCEDADCBDCBDCBCCBCCBDCADCACBBBDBCCBC?>C>=B?=B<<@9;@99A<:@?=@?=A>=@A@ACAABAANLBibFleGxpIMNORSSXԿW͹VιUʷTƲTDzTɴUʶU˷T˷T˶T˶TʶTʶT˷T˶SʶS˷SɵQHNg˽cpe(bbgꨧCCDjK0 aJgNeəuӢ|pʛv괊촊볉벉鲈貇谇篆毅宄䭃㬂⫂᪁ੀߩߨާݧ~ܦ}ۥ|ڤ|٣{آzסyءyҞvloڦ~Ԣyz\I$oe6xQd`MNKHGEIDDHDDHCBGBAGBAGCBGDCGDBGCBGCCFCCFDBGGDGGEFEDFEDEEEEEDFFCFDDFBBEA@DBAEB@EA?DA?DA@D@@D@?C@?C?>C<;B<;B<=B?>B>=B@>BC@C<;AMJCiaHkcHkdG~vKONPTSUϺXYԿYϻX͹W͹WƳVǴVɵVɵU˷U̷V˶U˷U˷U˷U˷U˷TʷU˷U˷UʷT˶S˶S˷TɵRHNg˽cpe(bbgꨧCCDiJ. |_fOeɚuӢ|o˛w춊﷋촉볈겇鲈谇簅毅它䭂㬂⬁᪀ᩀߧ~ި~ݧ}ܥ|ۤ|ڣ{٢zڢzԞvnpԣ}ɚunRD1ǽg]D}MvoRtmR[WLCBHCDHCBGCAFCBGCBGCBFBBFBBFBAFC@FCAFAAFAADB@DB@EA@EA@DA@D@@D@@D@?D@?D@?D@?D@?D??B??B@>C==C=E=>D??E::A=<=[VGibLfaKgaLg`LgaKg`Kh`Ke^KicKyOSRRSVWWXн[\Ѽ\κ\κ[λZ̸ZʷZʷZʷY˸Y̸Y̸Y̸Y̸Y̸Y̸Y̸X͹X̸X̸W̷W̷XͷW˸W˸V̸V̷V˷V˷U̷U̷U˶U˶T̶U˶T˷T˷TɵRHNg˽crf(bch訧EEGbE, ~_iOeɚuԢ|pÖsު㮃ଃૃૂޫުݩܨܨۧۧ~ڦ~ؤ}ؤ|أ{ע{բ{բ{աyԠyԟyӟxҞxўwНvϜvΛuϜuʘrlpӢ}ʛu~_L 4qeBŲVhhgffμd__^^^^OSWVUVROWZZZZZYYYYƴ\^ϻ^н^ѽ^м]ϼ]ϼ]κ\̸\̹\̹\̸\̸[̹[̹[͹[͹Z̹[̹Z͹Z͹Z͹Z̹Z̹Z͹Z͹Y͹Y͸Y͹X͸X˸W̸X̷W̷V˸W˸W̸V̸V̸U̷V˷U˷T˷T˷U̶T̷TɵRHNh˽csh(bci秧HHJtY?' ~`hOgɚvӢ}rn•rÕrÕrÕr•rqqrqqqqqppooooooonnnnnnnmkrԢ|ɛufS" s6qeBıWѿhhѿfeҿeҿefeӿeӿeҿdҿddҿdҿcӿcӿcѾcоbѾbнbнaнaнaнaнaн`н`н`м^ϻ^λ^μ^λ^ϻ^λ^λ]λ]͹]ͺ]ͺ\ͺ\ͺ\͹\͹\ͺ\κ[κ[ͺ[̺[̹[ͺ[̺Z͸Y͸Y̹Z̹Y͹X̸X̹Y͹Y̹X̹W˸W͸W̷W˷V̸V̸V̸U˷V̷U˷T˷T˷T̶U̷UɵSIOg˽cwk)dej䧦LLN}wfN7" akSgǙtգ~̜xǘuŗtŗtƗtƗtŗtŗtƗtƗtƗtƗtƗtƗtŗtƗtƗtƗtƗtƗtƘtƘtƘtƘtƘtƘtƘtƘtƘtƘtƘtŘtŘt̜xգ}ɚtnY-!Z8peBñVоgоgнfоfнeϽeоeѾdѽdнdнcнccҿcҿcҾcҾcѾaҾaҽbϽaλ`λ`ϻ`ϻ`λ_λ_ϻ_ϻ_λ_ͺ_̹^̺^̹]ͺ^ͺ]͹]͹]͹\͹]͹\̹\̹\͹\͹\͹[͸Z̹[̹Z̸[̹Z˹Y˸Y̸Y̸Y̷Y̷X˷X˸X˷W̸X̷W˸V˷W˷WʶVʶU˷U˶UʶUʷU˶U˶TʶTʶT˶T˶UȵSI¯Og˽czo,fglާRRTa`Q?-`kPf̛w㭆㮆⭅ᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄᬄ᭄᭄᭄ᬄᬄᬄᬄᬄ᭄᭄᭄⭄᭄宆㮅͞xvb:*B;peAǴZmmllkkkjjjjjiihhhhhҿhgҿgӿgҿffҿfҿeҿeeeeddcӿcӿcӿcҾcѾbҾbҾbҿbҿbѾaѾaѾ`ѽ`ѽ`ѽ`ѽ`ѽ^н^ѽ_м_н]ѽ]м^м]м]м\м\м\м[м[л[ϻ[лZлZϻZϻZлZϻZϺYϻXϻXϻWлX͸UJ°Of˽cv. jkpץYZ\CF</! cx[fnəvʛwʛv˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w̛wɚvn~eS=%4oѿ]A>??????????????????????????????????????>??>>???????>?>>??>??>???>>>??>>>>>>>>??<¬Haɻa50*_stz˞mnp ˠ{crVjNhNeKdJ}_H}_Hz^Gy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fy]Fx\EbIlK{>uwifggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfmwiɻ`nmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnkŶZ@[P"2efrRxxzxxx{ozz}m{{~l||l}~k~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~j~~i~o~}muuw5eb`a}_z]GwZEx[Fw[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ew[Ev[Ey]FtB?@CöEöEµEôDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDĴDôDųBª>ug(" # ! $ %'(.//205637746746746746746746746746746746746746746746746746746746746746746746746746746746746646644897:>=540E= 5'$}#w"v"w"t!q p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p p o u%y+ob' 73UP<kllJl !002334--/UUWrrtiijkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklkklllmnnp@;76;aURIVMVLUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKUKVLSJB; ??????????????????????????????????????????????????? ( ;S, +      46GXd^L>Z"   .    )*.0NuQ_5'( !  !08;;;;;;;;;;;;;;;;;;;;;;;;:91"  JN #'43C8K8K8J5G+8)nl$ "FetxyyyyyyyyyyyyyyyyyyyyyyyxteH'V%7GBV@T7H/>*6'3'4,:2B:M?T8L$1 *#ZmH7455555555 6.aT$>PCV0=! %09L?U'4 b>wh DMHʖBݑ@搄?鐄?鐄?鐄?鐄?鐄?鐄?鏄?鏄?鏃>鎃>鍂>鋀=~=~<~<~<~=鋀=鍂>鎃>鎄>鐄?鎃?蕉@YP!oinqrrrrrrsl[ 6EGY,6  %:M=Q =iS ĵYjcggggggggggfed̽bƸ_³\[[[\ŷ^̽adegdu|9OEV VJ [M ^P hYxgv#;cuk.OPXߡ##GV6@   "E["6=W= ŷ[ʺ[,$%$#$"! dW#       <3 SG XL ^Q o_ o[md*PPYgf9DES  '1BV )=W= ŷ[ʺ[,$&$$$"!B:      D; UI [M hZObZ%OOW❜Q`  :K/>W=W= ŷ[ʺ[,%&%$$#!6/     70 UI WKCTN LLS䙙cbFS9B   FY#,=W= ŷ[ʺ[-&'&&$"3- TC/WF48.%  91SHwo;IBHHN敕N]  9H/<?=W= ŷ[ʺ[-&'&%$"H@#lKN}M}NrKhR7/'"    D;nf5?9BCI鏎¼:C\e@?IIHHAA66##   #*DU =W= ŷ[ʺ[-&''%$l^ qQOxKxLwJyJ~MzNlV=  %!jb294>>Dꊊǿ^]lvhkNNRRPPQQPPOOEE.. EV! JCT9 ŷ[ʺ[-()&&!  gHRyN{N{MzLxLwLwJMlF$  ZU,94;;A쇆.-UWJJNNNNNNSSRRTTWWPP77 W|P}Q|Q|P{NzMzMzMvK~NiF  FB&;6:;@셅 :>NNMLMMJJSSVV 7A9HJ $Y˻[.)((y! <3+XS~S~R~Q}Q|Q|P{O{NzMxKPM?1 ;7"=7;;A놆OTyHHKKLLIISS``77CC\bLZ^  5ELMMMMMMMMMMMMNK PUͼ\/))(KB pRWTUTS~R~Q~Q}P|O{OzMOdO5 >;$@;=>Dꉉ[aw~FFKKLLHHRRff""MMNNFE`dcp t 1]{QϾ]/)¨*% UH;\VWVUUTS~S~R~Q|PzNSUF5  C>'HBBCI菎_dv{DCJJJJGGPP??KKHHDB\`hv |O5 @*1 W                  Mп]/)Ī+k] uTZYXXWVUUUT}R}PVkL WS0TLGHO啔Y`v|DCHHIIFFPP99IIGGBA\`gs t.V)uN83a5f3a1_1^1^1^1^1^1^1^1^1^1^1^1^1^2^1_5!ԦH^/*)5/  J>2_ZZZYXXWVVTV~VgT=  |BaY$LMU㚙KOx~DDGGHHEEOO88HHFFA@_dam\/Y)sM?8m9m7h7k8k8k8k8k8k8k8k8k8k8k8k8k8k8k=x<&٥G_/ƫ+&hO`[\[ZZYXXWYjM-'#  >7Xja*OPY47HHEEFFDDLLyy99GGDDA@fmWaH/Z*uN=7k5dGzH}H|H{H{H|H{H{H|H|H{H{G{H{I|6b9q;&٥G_/Ȯ,}n$ %" ]^]]]\[ZYY[iM 5/~%̽bsj-QQZ44PQDCGGFFFFFFFFFFFFEEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDDDCCDDCCCCCCBApyCK*/Z*uO>7k8hVÌYȏXǎWǎXǎXǎWǎXǎXǎWƎXǎXǎWǎXƎWǍ9g9q<&٥G_0Ī,WN  F<1c`_^^]]\[Z\/)%   91u(fwm.PQYᦥQQw}`cBBHHGGGGEEEEDDDDDDDDEEEEDDDDDDCCCCCCCCDDCCCCBBBBBBBBBBDDDDDDBBIJw&+*,/Z*uO>7k9i\Ž^Ǒ]ő]Ɛ]ő]Ɛ]Ɛ]Ő]Ɛ]ő]Ő]Ő]ƑZŎUċ9g9q;&٥G_1,4/ hWGg`a``_^]\]xY=5m^r'euk.KLV㥤zyW[w|CCGGGGGGHHGGGGGGGGFFFFFFFFFFFFFFFFFFEEEEEEEEEEEEEEDDDDDDDDEE??Z^oz/Z+vO>6j:icƓeʖeɕeɕdɕdɕdɕdɖeɖdɕdɕdɖbȓZŎUċ9g9q;&٥G^0-0, vaJjbbaaa`_^^xZ &"XL\Oscu"\sh-754432543543543543544320%'QQDDHHGGGGGGGGGGGGGGGGFFFFFFEEEEFFEEFFEEEEEEDDDDEEEEEEEEDDDDBAryNU;/Z+vO>6j;jjȘl͛k˚k˚k˚k˚k˚l˛k̚k˚l˚i˙bȔZŎUċ9g9q;&٥G_2.2. ydKjddccba``_`($! F>WK`RqbMOFIKLMMMNHmfkqquBAGGGGGGGGGGGGGGGGGGGGGGGGGGFFFFEEEEFFFFFFFFEEEEDDDDDDFFAATW{ u/Z+vO>6j6j=kx̡{ҥyФzѤzФyФzѤyѤzѤwТp͞i˙bɔZŎUċ9g9q;&٥G_3Ĭ0QH VJ>mgfeeedcba`b92, I?VJYMeXxgy!"!""#§ueW]`GHGGHHGGGGGGFFFFGGGGGGGGGGGGGGGGGGGGGGFFFFFFEEFFFFFFAAcgy/Z,vP>5j>lϧԪөөԩԩөө~ҧwУo͞i˘bȔZŎTċ9g9q;&٥G_2ʰ1pc% *&$fihgffeddcac~[%" ;4TIYMdVxgz80 {~ruDDHGHHHHHHHHGGGGFFGGGGGGGGGGGGGGGGGGGGGGGGFFFFFFBAWZ586/Z,vP>5j?mҫׯ֭ծ֮֮ծլ~ҧwϣp͞i˙bȔZŎUŋ9g9q;&٥G_2ɯ1,m\Johihggfeddbew\ +'NDWK_Rrbt -moDDGGHHGGHHHHHHHHGGGGFFFFGGGGGGGGGGGGGGGGGGGGBATWKOy]]y/Z,vP>5i@mհٴسٳٳسر֬~ҧvТp͞i˙bȔZŎUċ9g9q;&٥G_31©1G@%##fmjjihhgfeecev\" ! J@VJ\Ol]n!Ĩ|@+,qtHHFEJIIIHHGGGGHHHHHHGGGGFFFFGGGGGGGGHHFFBBZ]QV( /Z,vP>5iAn׵ܸ۷۷۸۵رլ}ҧwϢp͞i˙bȔZŎUċ9g9q;&٥G_41ɰ3*H?8plkkiihhgfecg{_(%# @8VIZMgY{j} ũsH$$STDDGGIJJJIIHHGGGGHHHHHHHHGGGHGHFFBBHHjnHKzf- /Z-vP>4iBoں߽ݼݼݻڵذլ~ӧwϢp͞i˙bȓZŎUČ9g9q;&٥G_4ª23é2E> hYJskllkihhhgedfc?7/ 3-RGWKcVwfz!ŪzB fhnpOOEDEEGGIIIIIIHHHHHHHHGGEECBHG^`y-,|g. /Z-vQ>4iDpݿ߿ݻڵرլ~ӧvТp͞i˙bȓZŎUċ9g9q;&٥G_4«33ɰ3,q\tlmlkjhhhffdffWJ=  )$PEVJaSudy!ĩ10(45y{tw\]MMEEDDDDEDEDDDDDIITUilPS  a.^w i- !]>-vQ?4iDp޾ܹٴװԫ|ҦvϢo̝hʘaǓYčTĊ9f9q<'զG_4ë3ª32˲3k_&" crmmlljiihggeeir_L JAVJ_Rtdx!l^] 57imvyqsmooqtv{u{HJ @Q+Xxh-   +oLC3hGrݶڱ׬{էtҢmНe͘]ɒWɎ9h9q?(ͩI^5ê4ª32ë31=7 -*)ornmlllkihhhfdjqW%"! J@VJ^Qrbw èWb[ /-MNbdmppsorgiVX;:>L[Z+Xwh-  ')))))))))))))+S8X4i@kǬɬƧģ~Ÿytoid_ZTN~J{5a9oB*­J^5«4©5©33ȯ4/(&92/nqoonlmkjiihgdia:2- J@VI^Qscx#ϽUűI(;E[-L 8At]ibVW+Xwh-  %  3O^ccccccccccccceZ;'I=I=I=I=I=I=I=I=I=I=I=I=I=I>LCֱRϿ]6ì6ª6«5ª5ª5©43ɰ4l`'scRyqrppnmmlkihihekkWLBXKfWm"ʹVN%Į@ĭ@í?í?ì>¬=ì=ë=ì<¬;«;«;:9«9«8ª8ª7ª8ì8ì7ë8ë7ê7«6ª5431/r'r]zttsqqponmlkihgcl|hS?7XLcU}k!ǵTM%;AԂk}xtplhc^ZWOS/by V% $$ONXVFDXUVTVTWTVTVTVTVTWTWTVTVTVTVTGEOMJJ1,eKíADZCưBƯBƯAƯAů@ů@Ů?Ů?Ů>Ů>Ů>Į=ĭ<ĭ;ĭ;ĭ;ĭ:ì9ì9ì8¬8ë7ë7ª6ª542/)`V"_SH¤tuttrqpnmnopoomhmbSE LAZMl^w òSK&=C׋x{zzzzzyyyyyyxw}2gw W( $$ONWUIG^]][\[]Z][]Z]Z\[][\Z]Z][[YWTFCPMJJ1,eKîAǰCưBůBƯBƯAŮ@Ů@ů@Ů?Į>Į=ŭ=ĭ=ĭ<í<í;ĭ;Ĭ:ì:ì9ë9ì8«8«7653/*OG! n_P¤vvuttrqttmbpVlV~kZkRrWeoD<5 -(VJ^RziPL.7UlhhhiiiiiiiiiiiijcMpe0$$ONWUMJeccacbdadbdacbdadbdadbb`\ZWTFDPMJJ1,eKĮAǰDƯCŰCưBƯAƯ@ůAů@ů?Ů?Ů?ŭ>Į=Į>ĭ=Ĭ<ĭ;í;ĭ:ī:ì9ë9ë8ª763/)KC!<74wzxxwutxsr\TI?1,(" !'$#_P?d%" C:ZNk\sJTC=29(5=(5<)5=)5=)5=)5=)5=)5=(5=(5=(5=(5=(5=(5=(5=(5=(4<(8?+((q7$$PNWUPNmljhkikijikikikijikiihca[YWUFDPMJJ1,eKĮBDZDưCŰCŰBƯBƯBůAů@ů?Ʈ@ů?ŭ>Ů>Į>Į=ĭ=ĭ<ĭ;ĭ;ĭ;Ĭ:ì9«8740})C<"  !ZPGx~zyyxw{yb>72 saLkU &#UI`SyhBɼgecdcddddddddddddddce}7w9$$POVTSRtsrprorprprprpqprpqojhca\ZWTFCPMJJ1,eKĮBȱDǰDưCƯDưCŰBƯAƯAƮAƮ@ů?ů@Į?Ů>Į=Į=ĭ<Ĭ;Ĭ;ĭ;ì;ë9851z)62! !  ! !+((wd||{zx|xgU+*+334..//./!!!92-o=60 B9\Om^|/=CFFFFFFFFEFEEEEEEEFh@x:$$POVTWU|zywywyxywyxywywwvqpjhca\ZWTFCPMJJ1,eKĮBȱEưDǰDưCưCưBŰBƯBƯ@ůAƮ@ů@į?Į?ŭ>Ů=ĭ=ĭ<Į<Ĭ;ë:973~o*-+! !! ! !! E>;wĩ}|{~uaDDC;::@71ptY($VJdWp (b>x:$$POVTZY}~~~~~~}xwqpjhca\ZVTFDPMJJ1,eLĮCDZFǰEƱDưDưDưCưBưBƯBƮBůAů?Ů?Į?Ů>ŭ>Į>ĭ=ĭ<ì;;84r,'&#!""""!"dYN§~}z<62%$&~~wdPmkNC9 I@_Rxf!#"#"!!! +d>x:$$POUS^]~xwqojhca\ZWTFDPMJJ1,eLůDDzFDZEDZEDZDǰDưDƯCưCůBưBƯAƮ@Ů?ů?Į?Ů>Ů=Ů=ĭ=«;96t-('#"####"# !{l]ūl! @93ohkx^5/\Pn_{!"###"!!! +d>x:$$POUSa`}xvqoihca\ZVTFDPMJJ1,eLŮEȲGƱFǰFDZEDZEưDƯCƯCưCŰBƯAƯAƯ@Ů?į?Į?ĭ?ĭ=ì<;81-*%#$##$"$ " !zjȯ§|d101*''eokil?70%"TIfXs"###"#"!!! ,d>x:$$POURed}xwqojhca\ZWTFDPMJJ1,eLůEȲGDzGǰFDZEǰEDZEưDǯDƯCŰCŰBưBƯAŮ@ů?Į@ŭ@ĭ>=:2<7&$%$#%$%!)'(pɱ§l )()$""grlmknwePKAbT{k"$$#""""!! ,d>x:$$POTRhg}xwqpjhc`\ZWTFDPMJJ1,eLůFȲHȱGDZGDZEǰEưEDZEǰDưDưCưCƯBƯBŮAĮ@Į?Į?>;5C>($&$%%$& "'%&s˳x-** |buoomlme%"";4^Qsd"$$$$##""! -c>x:$$POTRll}xwqpjhca\ZWUFDPMKJ2,dLŰFɲHȱHDZGDZFDZGưEDZEưEƯDŮCîB­B«A@??><8`V,%'%%%%&!!#%%&q͵PH?==>('(x_xqqpnmkpKB9 ,'ZNl^{"$%$$$#""!!!  -c?x:QOTRon~|wvpnigb`ZYVSFCPMKK3-dLŰGȳIȱHȲHDzGƱFưEįEíCBA@>=;:997ui/$$&%%''&&$$$$#&sͶ¬ë«ĩ~k! YYYJJKr`|ssqppnlqsaN!QGgZu!%$%%$$$#"! ! -c?x:%$QPSQzy~}wuomgf`^ZWHGPNLK60eLŰGɳIȱHDZHưGĮFDB@=:85320~//|n,+*'##''&''''!~qdиíĮĭí쫪§[QI""" o`RvvutrppnncJ@eWn!$%%%%$##""!! -c?x:QPVSKJed_^]\ZYWVTSRPOMKJIGFDCB@??=64LJML82 dLưHȳJưHįFEB?<73z/s,|n*wi'rf%pc%ob#na#=8'##(('')')bZR̶ưůůůĮíĬ¬«F@;OE>}yywuusqponj2-*>6aTzi $&&&%$$##"!!" -c?x:)(IGfd^\[Y^\_]`^a_b`b`b`cacbdbececececroPN82#dLŮGưIGD@;5{0q*qe'g\$`U#QH"OG#MF"KD"NE B<"&%)('())* !JDBįʴŰƱưƯƯĮĭíì«aVN$"#TJB{}zyxwutsqpnqMB94.^Ruf %&&'&%%$$#""!!!.c?x:HG65S=<981/))o&%e$#b$#a$#a$#a$#a##a#"a#"a#"a#"a#"a#"`$#b O0*cKGGB=6w/sf*\R(HB(;7)0/,.,-**-*),))+('+)(**)+)(*)()&%'301кƱȳDzƲưưůůĮĭ쬫Īzzes~||zyxwvtspoubTF+'\Pqb%''''&&%$$#"""".c?x:#-;>6ʌ2܈}0|0|0|0|0|0|0|0|0|0|0|0}0{2㖊@jID@8x1f\,ID+42,++.))0++/''*!"%$$'''))()*(*&%'""$)(*-*, #kaWDzɴȳȳȲDzƱŰưůĮĮ쬫ĩ~}{zyxwutrps{gU$"UJo`|$'''''&&%$$##"" .c?x:EC\gebdeeeeeeeeeeeeedaŶZ@=6g^.@=-,,/))/.,0.-.(&(&%(<98d\V}qd[V)')&&(*(+/-/~ӾdzɴɴɳȳDzDzƱůůĮĭìë«~}|zyxvusptrY! QGm^z$''('&'&%%$$### .c?x:I@RdHIKJJJJIHHHGGGGEEC?:~q4GB0--0++01/110/''),+-VPM²ǯƮ쪪ë522&%'%$&855ϻȵʵɴɴȳdzƲƱŰůůĮí¬«ª~}{zywutssj MCl]x%((((('&&%%$$##!/c?x:H@ScM˷W̹X͹W̸W̹U̸U̸U˸T̷T̷S̷S̷SʶR˵PȳO­MH>g^5311++11/1312+*,('*ZTQîȱìνͼμλμͺ˺ŭ643(') #e\VҽʶʶɵɵɴɴDzDzƱưůůĮí¬«ª}|{yxwuttm"!!H?k\v%()))((''&&&$$$!/c?x:H@ScLʶV̸W˷V˷U˷U˷U˶T˶TʷSʶR˶RʵRɵQȳP®MI?SM4,+2//2322201'&)EBBİ˴пѿѿппоϽϽ˹Ŭ+*,(')+*+ӿɵʶʶɵɳɳdzDzƲŰƯŮĮĭ¬«~}}{yxvtvk%"!H?iZt%()*)((''&&&&$$"/c?x:H@ScL̷W͸X̷W˸V̸U̸U̷U̶U˶T˶S˶RʶRɴQįOJ?NI5)*22233230/2*)-ha\ȹθî­íѿпооϽͻīyn%%'!!$c[UӾ˸˷ʷʶʵɴȴȳDzƱưƯůĮí¬«~}|zxwuuo.*)G>gZs%)***)(''''&%%%#0c?x:H@ScL˷W̸X̷W̸W̸W̸V˸V̷U˶T̷T˷SʵRƱPMCJD4++3544434..00/1z̷ȴ®İİïîî­­¬ѿппϽϼ«e]X!755Ҿ˷˷˷ʶɵʵȳȳDzƱŰƯĮĭì««~}{zxvvr50/=6hZs&*****))'('&&&%#0c?x:H@ScL˸X͹Y̸X̸X̸W̷V̸V̷U˷U˷U˶SȴR®OGSN8-,4544445//1969лƳıƲűűűİįïî­­ѿпν«966!yoʷ̸˸˷ʶɶɴȴȳDzƱŰůŮíìì«~}|zxxwr3//:4j\v&+*++**))('''&�c?x:H@ScL̸Y͹Y͸Y̸X̸X̸W˸W̸V̷V̷UɵSűQL`Y;**4655546001646ӿƳǴȵǴƴƳƲűűűİïî­­ѿѿμǯx!OIGλͺ̹͹˸˷ʶʵɵȳȳDzDZưůŮĭììª~|{yxxr1-,:4l^x!'*+,++*)*((('&&$1c?x:H@ScL˸Y͹Z͸Y͹Y̹X̸W̷W˷W˷V˶UǴSűPyB115656546325314ǵɶɶɵȵȵǴǴƳųƲűűİï®­¬оѿRLI))+̹͹̹˹˷ʶʵʴȳdzdzƱŰůįĮȯȰŭŬ}|{yzr.*) A:n_z!(++,,+*+)))((''%1c?x:H@ScM̸Z͹Z͹Y͹Y͸Y̸X˸X̸W̸WɵUɴRK<97326656656-,0{ɷʹʸʸʸɸɶɶȵȵȴdzƳŲűŰİï®­¬Ͻǯ#{oŬ̺ͺͺ̹˸˷ʶʵʴɴȲDzƱŰůíɱaXN953XQGyǭ}|zzr&%$LCpa|"),,--,+**))((('%1c?x:H@ScM̹Zͺ[̹Z͸Z͸Y͸X͸X͸W̷VȵUıQc\?//6878878--/hb_Ͼ̻˺˺˺˹˹ʸʸʸɷɶȵȵǴƴƳűűİðî­¬ůWQNZSO«μͻκ͹̸̹˷ɶɶɴȳDzDzűůȲ<85 "/,,tĪ}|{{u%$%  LCsd#*-----,+++)()((&1c?x:H@ScM̹[ͺ\̹Z͹Z͹Z͹Y͹Y͸XʶV̹VJ547757778324GDE˾˻ͼ̻̻̻˺˺˹˹ʸɷɷɶȵǴǴƳŲűŰİï­пɳD@?ʸѿλμͺ̹͸˸˷ʶɶɴȳDzDzïϸoeY)(('%&)'(tgYȮ}{}l"!#  MEvg%+-..-,,,++***((&2c?x:H@ScM̸[ͺ\̹[͹Z͹Z̸Z͸Y̹YʶWdzT`Y?/07:99989.-0˻ξνμͼͼͼͼ̻˺˺˹˹ʸɷȶȵǴƴƳŲűİﮬ®f]ZŮλϼμͺ̹̹˸ʶɶʵɴȲDzįѺ^VN)'(&%&g\Qª~|yb   " TJzj&,-...--,+++*)))'2c?x:H@ScM̹\κ]͹\ͺ[ιZ͹Z̹Z˷XκXN96987998:324VQQ˼ϿϿϿξξνͽͼͼ̼̻˺˸ʸʸɷȶȵȴǴųűİİï˴|ɰνϽϽμͻ̺͸˸ʶʵɵɴdzŰкsh\)()f]QǯĬ|}l["!!"'%[P~n(-/.//.--,,,+*)*'3c?t8H@ScM̹[λ]ͺ\ͺ\ͺ\̺Z͹ZʷYκXphD008:9::9:113οϿϾνμͼ̼˻˺˹ʸʸɷȶȵǴƳűűİ®ưŵпϾϽϼλͺͺ̹˷ʶʶɵȳDzɴKE@i_Tȱĭ}çi[O$##"+)bVt!)../....,,,+**))'3bAg2H@Sc®M̹]λ^κ\ι\ι[κ\̹[κZTFC<76:<:;436NJKɼϿϾννͼͼ̺˹˸ʸɷȶȵȴƳŲŰİ®îппоϽμλ͹̸̹˷ʶʵɴɳƱ̷oíư«¬«~XOF$##"0,gZs$+012111100////..,3`DxP% H@Sc®N͹]λ]κ]κ\κ\ι\˸[ѽZN44:;:;<:=004}xϿξννͼͻ˺˹ʸɷɷȵǴƴƲűİﮬѿѿоϼϼλ̹̹˸˷ʵʵȳȳƱɳϷůĮĮ¬«|@:6$##"@=)|q6FT˺Zо]]^^^^^^^^^^^^^]nFe;H@ScN̹^λ^ͻ^ͻ]κ\κ\˸[ҽ[kdE23;=;<:8;:9;Ͽννμ̻̻˹˹ʷɶȵȵƴŲűŰïî­ѿпнϽμͺ̸̹˸˶ʵɵȳȳƱİůůîìë«x(&' !!#"$ ";5 f^-~v9ꘐDᢙIᡘI矖IꟕH쟕H쟕H쟕H쟕H쟕H쟕H쟕H쟕H쟕H쟕H쟕H쟕H잕H꧜Kzn0f4H@ScNͻ^λ_ͻ^λ]ͺ]͹\ϻ\WMJA76<=;=669UONϿοξμͼ̻̹˸ʸɶɵȴƳųűıï­ѿпϽϼλͺ̸̹˷ʶʶʵȳDzDzưŰįĭì«|g "#"###$#"# ;+R>,S?-O<+M:)K9)K9)K9)K9)K9)K9)K9)K9)K9)K9)K9)K8)J8)N;*2&p5H@Sc®Nλ_ϼ_Ϻ^λ_κ^̹]ӿ]S87;=;===>103xroϿξνͼ̼˺˹ʸɷȵȵǴŲűİį­­онϼλͺ̸̹˷ʶʵɴȳDzDZưůŮĭ¬«ŪnaT%%%$!##+'T9!w\ԣ}ԣ}إ٦٦٦٦٦٦٦ڦڧڧڧڧڧ٦ૃdLs7H@Sc®Nκ_ϼ`λ_λ^Ϻ^̹^Կ^O44<><>=<>325ξͽͽͼ̺˹ʹɸɶȵǴƳŰİïî­ѿоϼμͻ̹͹˸ʶʶɴȳdzƲưůůĮ­ìNGB&&&$ #"4+^> ޤz]ŗsjmmlllkkkjjjjihiԢ}aJt7H@Sc®Nκ_ϼaμ_ϻ_λ_̹^ӿ^ogH66=?=?;;==<>Ͽννͼ̺˹˹ɷȵȵǴŲưݯ­ҿпϽϼμͻ͹̸˷ʶʵɵɳdzƲưůŮĭ¬«|/--""#%%&$!#!<.gD$ܪ}`ŗs̙rסyԟwҝtћsϙr̘pʖoȔmƒlĐjŽhfecdҡ|aJt7H@Sc®Nͻ`ϼaϻaϼ`ϼ`̺_Ѿ][VD76=?>?;:?>?:9;LIJпννͼ˺˹˹ɷȶȵƳűűïí­ѿоϽϼλͺ̹˷˶ɶʴȴdzDZŰƯĮĭ¬«ū^TM (((&#%$,) V;&yP*رeɚvНvۥ|עy֠xӟwҝvќtΙr͘q˖oʕnǓmőkiggӢ|aJt7H@Sc¯Nμbнbϼaμbλ`ӿ`YHEA=A?@@?A769kfeϿνμ̼˺˹ʷɶȵǵŲİİ®¬ѿоϽμͻͺ͹̷˷ɵɴȳȲƱŰůĮí¬«ǭm !$)()&&''&(+XA'nJ,[-ֵfʜwӠxߨۥ|٣{آz֡yԟwҝuЛtΙr̘p˗pɕnǓlőjiҢ|aJt7H@Sc®OμcнdϽcнbͻbcU66?B@AA?B668qnmϿϽͼ̻˺ʸɷȵǵdzƱŰï­поϼμͻ͹̸˷ʶʵȴȳDzƱŰůĭì«ƭYPJ #))*'$')2.0oO+vO/`.!նgʜwԡz᪁ݧ~ۥ|ڤ{آz֡xԟvҝuЛtΚs͘q˖pɕnǓliҡ|aJt7H@Sc®OμcнdмcнcͻbcV77?B@AB@B87;jecϿνμ̻˹ʸɶȵǵƳűİ®­ѿоϽμͻͺ̹˸ʶʶɴȳdzDzŰůîì¬ŭ0.0&&(*(*'#',K=6[.~U1e/ նgʜw֢{㬂ިݧ~ܥ}ڤ{آz֠xԟwҝuЛtϚs͘q˗oɕnjҡ|aJt7H@Sc®OϼcнdнdмcλbdW77@CABB@C::>[UUϿνͼ̺˹ʸɶȵǴƲŰð­поϼμͻ͹̸˶ʶʵɳȳDzƱůůíìʲwj\ #+++('*(+*3jN5;^Bm4`3i0!շgʜw٥~簅⬃᪁ੀݧ~ۦ|ڤ{آz֠xԞvӞvќtϚr͘qlҡ|aJt7H@Sc®OϼeѾfоeоdμdeX99@CCBBAC?=@IFHϿνͽ̻˹ʸɷȵƴƲİïѿоϽμλͺ̹˸˷ʵʴȴdzƱưůŭ˳yk##'-,,*)+)&)5bKCkGv6c3k0!շgʝwڦ~鱆䭄⫂᪀ߩݧ~ۥ|٣{עy֠wԞwҝuЛsϙslҡ|aJt7HASc®OϽeѾfоeоeμdfY99ADCBB@C@>BDBDϾν̻̺˹ʷɶȵƳűį®поϼμͻ̸̹˷ʶʵɴȳDzƱůĮĮGA>%%(,,-*&).>6?aJtK}6e4k 0"նg˝xܧ곈毅䭃㬂᫁ߩݧ~ۥ|٣{עz֠xԟvҝuћtmҡ|aJt7HASc®OϽfѾgнfнeͻdfY88BECDBACBAB?>@Ͽνͽ̻˹˸ɶȵǴƲŰï­ѿонϼλͺ͹˷ʶʵɴȳDzƱưí͵wg#%'-,.++-*(*:fPIoP~N7e4k 0"նg˝xݩ谇毅宄㬃᫁ߩݧ~ۥ|٣{آz֠xԞwӝumҡ|aJt7IASc¯OϽfѾgоfнfϽef\DCDBBDCBDDCF769Ͼμ̻˺˹ʷȵǴƲŰð®пϾϼμͺ͹̸˷ʶɵɳȲDzŰDZ@<<((*.-.+'*1@9GhPzTO7f5k 1"Ӷg˝x߫ﶋ겈豆簅宄㬃᪁ߨݧ~ۦ|ڤ{آz֠x՟w“oҠ|bKs6IASbOϽgҿhоgоfнfgaPMGA?DCBDEDF87:}{νͼ̻̹ʸɶȴƳűİïѿоϽμλ̸̹˷ʶʵɴȳDzįиymc%%(/-/-,-,)+?mVQwWWP8f5k!2#θhʜx଄봉곉鱇篆宄㬃᫁ߩݧܦ}ڤ|آzסxÓoѠ{cLm4IARfïM¯QñSðRðRïQ¯QOXSE?>EDDEECE>&HxOsOtOvKuAw|u4e_*[V"B?+CBFECECCEEEF;:<ξͼͻ˺ʸɶȴƲűİ®­пϾϽϼͺ͹˸˷ʶʵƱӼxl('+0/0/.01/1,[C-Y4d8l9o:o;p?u7p';)lצ˛w˛w˛w˛w˛w˛w˛w˛w˛w˛w˜w˜w˜w˜w˜x͝xРzd  |cs^:hfʞw^ۚsZjVHFIDDEEDEGDG=;?jggονͼ̺˸ɶȵƳŲݯ­ѿоϽμλ̺̹˷ʶƳѺ534.-/0/10.0+:#B(E+F+G+G,G+D*jN|}ον̼˺ɷȵǴƳűİ®ооϼλͺ͹ʶ̸˵\UR)*-324113,+-STU**+ ] &0$ b٦将籇籇籇籇籇籇籇籇籇籇貇㯅ɚuldT˛wĖqעyעyޥz}e?AEGFGFDFFEGDCFDCEſϿνͼ̺˹ȷȴƳűİ®ппнλͻ˸κϺe\U)*-434314.,.ONP|{~''(\%ldT˛wĕq֡yסzۣzpFEGFEHFEGEDGGFI>=?hdeξͼ̺˹ɷǴǴűİï¬понλ˸ѽ͹g`Y**-435435,+-EDF(()\%ldT˛wĖrأ{ڤ|֡yޥ{r`>?EIGIFEHFEGHGI<;>Ͼν̻˹ʸǵƴŲŰï­ѿϾͼ̻ëð_WT**.546546..0BAC(()\%ldT˛wĖrڥ|ܦ}٣{٣{֠xaVQ?AFJGHFEHFEHGEI=;;Ͼν̻˹ʸȵǴŲŰïѿϾϾìëGDD,-/667657.-/=<>(()\%ldT˛wŗsܦ}ިܦ}٣{ަ|pQLLDDGHGHFEHHEIEEGCADϾνͻ˺ʸȵƴıð®îDZǰld_214003879657.-/BAC(()\%ldT˛wŗsިੀݨ~ܦ}أz}iBCFGFHIFIGEIHFIEDFB?AϿν̻ʹȷƴȵʷ˷̶̼vZUS757--16677795460/0RQR(()\%ldTʛwƗtઁ⫂ߩާܦ}أzߧ|}fCCGFEHIHIFFHHFIGEH<:>vrs;̻νоѾҽƳrkePLK547-.1003768:9:989657647ffg(()\%ldTʛwƘtᬂ㭄᫂ੀާ~ۦ}أ{|fNKJACGJHIGEHGFHIGI<;>NKOɹŸ{rl\WU@>@10400423599:;:<<9:879339.-1>=>~(()\%ldTʛwƘt㭃殄㬃᪂ߨާ~ܦ}أ{}oaVQ?AFHGIIGIGEHIHJCBE:8;QNPſŶ}upb\[B>@53710422599;<;<=;<=;<:8;659119657_[Df^.@@=ڟ(()\%ldTʛwƘt宅谆䮄㬃᪁ߩާܦ}أzަ|Ϝuj[DDHBCGIGIHFIHFIIHKBBD:9<@?B^Z\~ʿyugb_NHG=;>769004437;:<><>?=??>>=<<;:<87;12:76:GD;vmC@̻[@?><؟(()\%ldTʛvǘu簆鲇簆宄㬃ઁߩި~ܦ}٣{ۤ{ަ{hbWR@BFDDGIFIGEHHGIIHJFEH@?B87;<:>CADHGIRNPmhhqnmokjwro|vtvpnlgeokihddOLMFEFA@B<;=64722677:;:=>=?@>@B@AB@@>=><;=98=44;34;98;IF=nfCHMιQïIп]@A?>ء(()\%ldTʚvșu鲈볉鲇簅宄㬂᫁ੀި~ܦ}٣|עzޥ{Мus`UNM@BGFFIHFIHGHIGHIGIIHJGFHEDGCBD@?B<;?::=;;=98<88;99<:9=:9;::<==?>=?@?AAABDBCDBCBAB@?@==?:9?66>44=98>;:=NK@c]C}sHKO̸RкS̶RɵSI_AA?>ؠ(()\%ldTʚvșv곉겈豇毆䮄㬂᪁ߨݨۦ}ڤ{֡yآyۣyltbNHFAAE@@H@?GCBFGEGGFHGFGGEGGFHHHGIFHHFGHFGFEGFEGFDFFDEECECBCBAC>ؠ(()\%leTʛvɚu﷌ﶌ볈鱇谆殄䬃⪁ߨݧ~ۥ}ڤ{ӞwƗrգ|T@.·E}Sc]JVSLCBGA@F??F??E>=E<ؠ))*Z#leTʚvŗt䯆簈密㭅ᬃંީݨۦ~٤}ע{աzӠxӟxΛto˜yR=+SZıWd^YUW{rNf`KleOf`KumLRRR~QSWWYñZҾ\Ҿ\Ҿ[Ҿ[ѽ[ϻZ͸YʷY˷X˷X˷W̷W˷W˸V̷U̷U˶T˶T̷UJ_AA@?ԟ,,-R neQϟyʚwǘtșușuȘuǘuǘuǘtǘtǘtƘtƘtƗsŘsŗsÖrȚuѠ|hM7VʸYɶ]mijhhggfeedddcbbbaҾ_λ_λ_κ^ϻ]λ]λ]μ]ϻ\λ\λ[ϻ[λZͺY͹YͺX͹X͹W͹VϺWïM_CFECǟ556^>kdZɚuգ}Ҡ{Ҡ{Ҡ{Ҡ{Ҡ{Ҡ{Ҡ{Ҡ{Ҡ{ҡ{ҡ{ҡ{ҡ{ҡ{ҡ{գ}˜wdHuø[ȶUQɷ^dz[Ǵ[ƴZƴZdzZǴZdzYƳYƳXƲXƲWƲWűVŲVŲVűUűUűUƲTƲTŲTűSűSűRıRűQŰQİQŰPŰPŰOïOįOįNįNïMŰNE̼[HONLIIKn, $ ee d_d]d]d^c^c^c^c^c^c^c^c^c^c^c^c^c^c_f]e5+Ⱥ^fƴSȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVȶVǵTgQ`]ZjkmJ=u Mʼ`ʼ`ʼ`ɻ_ɻ_ɻ_ɻ_ɻ_ɻ_ɻ`ɻ_ɻ_ɻ_ɻ_ɻ_ɻ`ɻ`ɻ_ɻ_ɻ_ɻ_ɻ`ɻ`ɻ`ɻ`ɻ_ɻ`ɻ`ɻ`ɻ`ɻ`ɻ`ɻ_ɻ`ɻ`ɻ`ɻ`ɻ`ɻ`ɻ_ʻ`ɺ_鸧JZVG+nouBvuw>{{}=||}<||}<||}<{|}<{|}<{|}<{|}<{{}<{{}<{{}<{{|<{{|<{{|<{{|qpr!!!eknmmmmmmmmmmmmmmmmeɗ~ lM eI bGaF`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D`D^BeH|g _`M^^azz|?????(0` $a wl:Cq "'&&&&&&&&#556 bQ#'& P7 <N|s9gMH(ID&JE&ID&IE&JE%ID$JE%KF&MG% I<@?@ !*!* *$_P]ǵQĮ?ů@î?ư>;4124ʶHpjDLMWSRSQQTQQL'0!+lR¹p¯FB9  ;2`Q |^줤ii$-   )6vm3iðH$¨&$  ^Sd`I,1# "*>NRĹm¯H%%+&~cAOkDA4$-(RN;򥥭>CPPDD22 (  }I,Hȭ(j] jU;XzO~OQ9." GD6󨨯llSWFF>> 5=A "7% w    (,¯H',&#[UT~RWB5( RO>𰰷ijRV<;ssGGJPN=u5d6f6d6d6d7c3f7tMȭD~$r]D`XYzSA6) JCzuTyyLO@@ddDDCI<F6gS\ʒZȐZǐ]ɑM9}S˯Df[ }Ya\aL?11* -|wWꄆabFIPP@@<<<<<<;;;;;;;;::>=QR7=yK6gc‘oΝl˚m̛i˘M8{Q˰E[Rad`eUG6 @7zl!BEGECCXZDCJKIIIIIIHHHHGGHHCCUZCHO7grȜիӨzѤj̙M8{Q˯Ewj% wYkdd_(#  60j\!)β}kLBGZZBBGGHHHHHHHHFFAA]`9=( =c7g̥ܸׯyУh˘M:|QéE/=5/oifh_*%" '#VJrĨcUjFJ[\JKEFDEDDEFLM^];;iki[:h׷ܵըoϜP=~Q、D͵4l_'dVDtjhidB8- MBm çqaXDDUSXUXVWVXTOK=M˶D­@į?î>í<­;¬9ì8«9ë72ma'ixwpoUiWBlQcSA -(vf:[gddcahHrS|KI\^\qomlomkiZX?>MηFŮCƯBůAŮ@Į>ĭ=ì;ĭ:4^T'&$%xb}}pZ67:#E;0A90 OD6B;<;;:?~9kaW)GF\hf}|ljYW?>MηGůDưCƯBŮ@Į?í>Ů=8VN) A;5{ũrxy{.04TF7}^ .)n#$"! Ƭ&Cji^$DC\po}|kiZW?>MθHůEưEƯCưBưAƯ@ǯ<|o2MG@Ůŭ# bceurrl[H RH %$"!ĩ'Ajg\"JI\^]hg\\VUNMHG77NϹKĮF>4tg)bX!^T$''&<88ɳ¬ìūk&"!q{qty]?7&%$"Ī(Ajg\#FCn}tYyoW{rX|sXvZwoU鲣PC~q5C>&)'#744MHE<99xïƱůìū~ywti 0+{('%$!ū)Ajg\#μSѽQҾRҽPѽOϻNԾNDMH1 'JFHƶϼd\V?;:ɶʵDzƱůì~zvq,((&#v)('&"ū*Ajg\#PijWɵWʶWʵVȴTͷSF:82&&/vȲͶĮпƮIDBxlédzȴDZůì|yu4/-" r**('$ū,Ajg]$ƵV̷W͸X˶VϹUNB?6**1ƳðİîпƯVPLн˸ʶȳƱĮŮȰȮ{x61/!t++*(%Ƭ-Ajh]$ƵW̸Y͸Y˷XмVjbA!#-ǵɷȶǴƲİ˴yo˷ʶdzDzYQHXPF}y2.-'%{".-,*'ƭ/Ajh]%ƵW̸Z̸[ӾZQ++1d_\̼ͼ̻˺ʸȶdzıDzë̹˸ȴк} VOGw)'*/+",+*)%ū-Ajh\$ƵW͹[̹\\skG))2пξ̻˹ɷǵŲï̻ѿϼͺ˷ʶ­~mĭŭq#D=!2İ;ï:î:î96ɴ=IJdƵW̹\м^ɶ[FC:OLOпν̻ʸȵƲŰоμ̹ʶʵкů«Ūyd24#xEᛇP薂M엃N엃O엃O띈Qi]2/ƵW̹]`Y//3ytqξ̻ʸȵƲįоλ̸ɵƱưĮªȭi\P!@.fʗuÑqonjĒqU@32ƶX˹_cU))2ϿͼʸȵŲîϽͺ˷ɴDzůìB:8+')Y-,/Q_ZYoe`vmIWP@- k9h7i7k7l6n:jjmeștߧ|q`W57=jgfп̻ȵİϾĬʷTNK&&)xwyvrw\j}`Ǚt~pIHJ99<ξ̻̺ι̶íJFE''*}|}noqeѵpdppofjz^ʚvި嬀iDEH88=~~οxpPMO))288;pprcjx[˛w宄ߩnYRP25;MKNǻ|w_[\=m=kAn,cD[OL?7a[iU=d[(JMNNKL8=HxjМjϜlԞ>|DE<p]Kfc0(%"0ZSVTJL:9::::998888LO&*y:#)qP}ɃҪѨpϝ:vE^RLAzD/sZojxY gY=POMJLGLHLHDV"U@bPNOI@idSJy-gFָ7wj&fplb5.* cV1Tw`~YxQZ&@>B@;9G饝@AACE6Ҹ8^T"(%(qousNB7yh0x~i]"8I{"$JVTa_b`a_HGNӹC˲B˲?ʱ=ë9ȯ93<7%#%rwkXCOB3iYE# "2, /}||y&/+,a_|{{yhfEDL˴D­Cí@>ɱ=7+)>9:{ĨXMAkmq++,o\Grdæ%,D> rp١jhHGM̵FɳF͵EηD=2/OHGȯA;6qrsiWCv1+)E<"$"2D@%9dcwwbbSR;;PӻI=v,xk%E?"MHH̵ĭǭ{f,+-bTE|u_QD)%"'$2D?#jYXXXKj`.;7,\UOwmd314vտîĮīyzy~jV!¨(& 3D?#̺SӾTӾSQŰKFA-NJOɲεXRMdz˶ƱĮɯ}}w_!é*("4D?#ijWʶYʷX̸VMH4\W\ѻιðο̵dzƱŮzzc$ê-*%6C?#ƵVʷY\F>=EͺоɸʷǴűϾѾɶι'&'v©§ta$"&ǭ.+§%7E@#ŴW̹\Կ^MH7ον˺ȶƲоͻ͹ƯȬrdV+(8><;BOI%pyijWѾ_Y?==ȾϿͻɷdz®о͹˷ͷíǭWME+"ckfhuX Y@2#òWbTFEJͼɷŲϽ̸dzŰĭ421&N8ǘrޥ|КsϘp` \F5)òWdSHGN̻ȵįѿκʶŰͶ|k 2-7{Tƕq઀Ҟwӝua [E5(òWfY@?GϾʸƲϼ˸Dz˶N@?:qXChʕsݧ~ަ|c_B3'ôXwμ]蟒R98=̻ǵîоȶp*'?n8]ǔrޫԢ{աzj 7\F6ooKnC>>ͽǵ®Ͼǭ402]dbv^id@.!bե#e*k*o#ߢvǘtoUߧ}q`48?кŮ977rrt|CƗuoT٥}wcW;>DȽunnPLN873}}IlTDonǘtoTૃ鱆䫀}eGA@HGNa`gmkrmkpb`eTRTJGDNJ;f_=FM򷷽LǘtqQգ}إ~Ӡzڣ}dާSRLLNRVκYYVR𧧯1no i&g$i%|n ĩ_3[___^[˺XĴVUóTZlLSQVA?(  5W5lh5[S*Uh^%Tf]&X>8AI Į%2AıHX,WMI?{Qz{ %6-49uf u[E\D+ddWqqWXoSlƐ7]MuLdPfP/h>3FXZ__*.Y/jx̧pڴl_hR'izeL82e^75>=8A=<@2001w~czcM.NF1vhR;2#scF][}omXVF׶=ٻ@}*]RAj|pA:8UL^hzRonv}|TSM6}q*h^R̲qnmliNC)ɧ#dQ]Tof?tzqϹzåXL:!ȭ,-ŴTPXwD̶͹nƫ^R?ʲ*-aPRzrξ˺dzѿıéPI;HSs?fQQͻűμк6O?ʞ{՛yaMhFNǵçlhZ5yUҦ|ܦ|pTjoe_vlno}P=0?i᫃ĕr{ogttNp)102̝xa⫃dEŕIʞHɱLʵIʷò|gWpgmodeler-0.9.4/apps/pgmodeler-ch/res/windows_ico.qrc000066400000000000000000000001021416010000600226140ustar00rootroot00000000000000 IDI_ICON1 ICON DISCARDABLE "windows_ico.ico"pgmodeler-0.9.4/apps/pgmodeler-ch/src/000077500000000000000000000000001416010000600175665ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-ch/src/crashhandlerform.cpp000066400000000000000000000150251416010000600236170ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "crashhandlerform.h" #include "messagebox.h" #include "guiutilsns.h" #include "utilsns.h" const QString CrashHandlerForm::AnalysisMode("-analysis-mode"); CrashHandlerForm::CrashHandlerForm(bool analysis_mode, QWidget *parent, Qt::WindowFlags f) : BugReportForm(parent, f) { QFile input; QString buf; QWidget *wgt=new QWidget; QHBoxLayout *layout=new QHBoxLayout; setWindowTitle(tr("pgModeler crash handler")); stack_txt=new QPlainTextEdit(this); stack_txt->setReadOnly(true); stack_txt->setFont(QFont("Source Code Pro")); stack_txt->setLineWrapMode(QPlainTextEdit::NoWrap); layout->addWidget(stack_txt); layout->setContentsMargins(4,4,4,4); wgt->setLayout(layout); logo_lbl->setPixmap(QPixmap(QString(":/images/images/crashhandler.png"))); report_twg->addTab(wgt, tr("Stack trace")); //Open for reading the stack trace file generated on the last crash input.setFileName(GlobalAttributes::getTemporaryFilePath(GlobalAttributes::StacktraceFile)); input.open(QFile::ReadOnly); if(input.isOpen()) { buf=input.readAll(); input.close(); //Removes the stack trace file QDir stack_file; stack_file.remove(GlobalAttributes::getTemporaryFilePath(GlobalAttributes::StacktraceFile)); //Shows the stacktrace loaded on the widget stack_txt->setPlainText(buf); } //Creating an input field in order to select the input report file input_wgt=new QWidget(this); input_wgt->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); layout=new QHBoxLayout(input_wgt); layout->setContentsMargins(0, 0, 0, 0); input_lbl=new QLabel(input_wgt); input_lbl->setText(tr("Input:")); layout->addWidget(input_lbl); input_sel = new FileSelectorWidget(this); input_sel->setFileDialogTitle(tr("Select bug report file")); input_sel->setFileMode(QFileDialog::ExistingFile); input_sel->setAcceptMode(QFileDialog::AcceptOpen); input_sel->setNameFilters({ tr("pgModeler bug report (*.bug)"), tr("All files (*.*)") }); input_sel->setToolTip(tr("Load report file for analysis")); layout->addWidget(input_sel); save_tb=new QToolButton(input_wgt); save_tb->setIcon(QPixmap(GuiUtilsNs::getIconPath("save"))); save_tb->setSizePolicy(attach_tb->sizePolicy()); save_tb->setToolButtonStyle(attach_tb->toolButtonStyle()); save_tb->setIconSize(attach_tb->iconSize()); save_tb->setToolTip(tr("Save the attached model file on the filesystem")); save_tb->setEnabled(false); attach_wgt->layout()->addWidget(save_tb); report_tab_grid->removeWidget(details_gb); report_tab_grid->removeWidget(output_wgt); report_tab_grid->removeWidget(message_frm); report_tab_grid->addWidget(input_wgt); report_tab_grid->addWidget(details_gb); report_tab_grid->addWidget(output_wgt); report_tab_grid->addWidget(message_frm); setAnalysisMode(analysis_mode); connect(input_sel, SIGNAL(s_fileSelected(QString)), this, SLOT(loadReport(QString))); connect(input_sel, SIGNAL(s_selectorCleared()), model_txt, SLOT(clear())); connect(input_sel, SIGNAL(s_selectorCleared()), details_txt, SLOT(clear())); connect(input_sel, SIGNAL(s_selectorCleared()), stack_txt, SLOT(clear())); connect(save_tb, SIGNAL(clicked()), this, SLOT(saveModel())); connect(model_txt, &QPlainTextEdit::textChanged, [&](){ save_tb->setEnabled(!model_txt->toPlainText().isEmpty()); }); } void CrashHandlerForm::loadReport(QString filename) { QFile input; QFileInfo fi; char *buf=nullptr; Messagebox msgbox; fi.setFile(filename); input.setFileName(filename); input.open(QFile::ReadOnly); //Raises an error if the file could not be opened if(!input.isOpen()) msgbox.show(Exception::getErrorMessage(ErrorCode::FileDirectoryNotAccessed).arg(filename), Messagebox::ErrorIcon); else { QByteArray uncomp_buf; QString buf_aux, str_aux; int i, idx; QPlainTextEdit *txt_widgets[]={ details_txt, model_txt , stack_txt}; //Creates a text buffer buf=new char[fi.size()]; //Reads the file storing it on the buffer input.read(buf, fi.size()); input.close(); //Uncompress the buffer uncomp_buf.append(buf, fi.size()); uncomp_buf=qUncompress(uncomp_buf); delete[](buf); buf=nullptr; buf_aux=QString(uncomp_buf.data()); i=idx=0; //Showing the sections of the uncompressed buffer on the respective widgets while(i < buf_aux.size() && idx <= 2) { if(buf_aux.at(i).toLatin1()!=CharDelimiter) str_aux.append(buf_aux.at(i)); else { txt_widgets[idx++]->setPlainText(str_aux); str_aux.clear(); } i++; } } } void CrashHandlerForm::saveModel() { QFileDialog file_dlg; try { file_dlg.setDefaultSuffix(QString("dbm")); file_dlg.setWindowTitle(tr("Save model")); file_dlg.setNameFilter(tr("Database model (*.dbm);;All files (*.*)")); file_dlg.setFileMode(QFileDialog::AnyFile); file_dlg.setAcceptMode(QFileDialog::AcceptSave); file_dlg.setModal(true); if(file_dlg.exec()==QFileDialog::Accepted) UtilsNs::saveFile(file_dlg.selectedFiles().at(0), model_txt->toPlainText().toUtf8()); } catch(Exception &e) { Messagebox msgbox; msgbox.show(e); } } void CrashHandlerForm::setAnalysisMode(bool value) { output_wgt->setEnabled(!value); attach_tb->setEnabled(!value); attach_mod_chk->setEnabled(!value); save_tb->setVisible(value); create_btn->setVisible(!value); input_wgt->setVisible(value); if(value) { title_lbl->setText(tr("pgModeler crash handler")); msg_lbl->setText(tr("Bug report analysis mode activated.")); } else { title_lbl->setText(tr("Oops! pgModeler just crashed!")); msg_lbl->setText(tr("We apologize for what happened! It is clear that a nasty bug caused that. Please fill out the form below describing your actions before pgModeler quit unexpectedly. This will help on bug extermination and improve the software.")); } } QByteArray CrashHandlerForm::generateReportBuffer() { QByteArray buf=BugReportForm::generateReportBuffer(); buf.append(stack_txt->toPlainText().toUtf8()); buf.append(CharDelimiter); return buf; } pgmodeler-0.9.4/apps/pgmodeler-ch/src/crashhandlerform.h000066400000000000000000000034741416010000600232710ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ /** \ingroup pgmodeler-ch \class CrashHandlerForm \brief Implements the pgModeler's crash handler enabling the generation an analysis of crash report files. */ #ifndef CRASH_HANDLER_H #define CRASH_HANDLER_H #include #include "tools/bugreportform.h" class CrashHandlerForm: public BugReportForm { private: Q_OBJECT //! \brief Display the stacktrace QPlainTextEdit *stack_txt; //! \brief Container for widget that handles input report file QWidget *input_wgt; QLabel *input_lbl; FileSelectorWidget *input_sel; //! \brief Triggers the model saving to filesystem QToolButton *save_tb; void setAnalysisMode(bool value); //! \brief Generates a report buffer containing the issue details, model and stacktrace QByteArray generateReportBuffer(); public: //! \brief Analysis mode argument static const QString AnalysisMode; CrashHandlerForm(bool analysis_mode=false, QWidget * parent = nullptr, Qt::WindowFlags f = Qt::Widget); private slots: //! \brief Load a report file showing its contents on the form void loadReport(QString filename); void saveModel(); }; #endif pgmodeler-0.9.4/apps/pgmodeler-ch/src/main.cpp000066400000000000000000000030321416010000600212140ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "crashhandlerform.h" #include "application.h" #include #include "guiutilsns.h" int main(int argc, char **argv) { try { Application::setAttribute(Qt::AA_UseHighDpiPixmaps); Application::setAttribute(Qt::AA_EnableHighDpiScaling); Application app(argc,argv); QStringList args = app.arguments(); QTranslator translator; //Loads the ui translation for crashhandler translator.load(QLocale::system().name(), GlobalAttributes::getLanguagesDir()); app.installTranslator(&translator); CrashHandlerForm crashhandler(args.size() > 1 && args[1]==CrashHandlerForm::AnalysisMode); GuiUtilsNs::resizeDialog(&crashhandler); crashhandler.show(); app.exec(); return 0; } catch(Exception &e) { QTextStream out(stdout); out << e.getExceptionsText(); return enum_cast(e.getErrorCode()); } } pgmodeler-0.9.4/apps/pgmodeler-cli/000077500000000000000000000000001416010000600171545ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-cli/pgmodeler-cli.pro000066400000000000000000000014561416010000600224270ustar00rootroot00000000000000include(../../pgmodeler.pri) CONFIG += console TEMPLATE = app TARGET = pgmodeler-cli windows:RC_FILE = res/windows_ico.qrc windows: RCC_DIR = src/ windows: DESTDIR = $$PWD SOURCES += src/main.cpp \ src/pgmodelercliapp.cpp HEADERS += src/pgmodelercliapp.h unix|windows: LIBS += $$LIBGUI_LIB \ $$LIBCANVAS_LIB \ $$LIBCONNECTOR_LIB \ $$LIBCORE_LIB \ $$LIBPARSERS_LIB \ $$LIBUTILS_LIB INCLUDEPATH += $$LIBGUI_INC \ $$LIBCANVAS_INC \ $$LIBCONNECTOR_INC \ $$LIBCORE_INC \ $$LIBPARSERS_INC \ $$LIBUTILS_INC DEPENDPATH += $$LIBGUI_ROOT \ $$LIBCANVAS_ROOT \ $$LIBCONNECTOR_ROOT \ $$LIBCORE_ROOT \ $$LIBPARSERS_ROOT \ $$LIBUTILS_ROOT # Deployment settings target.path = $$BINDIR INSTALLS = target pgmodeler-0.9.4/apps/pgmodeler-cli/res/000077500000000000000000000000001416010000600177455ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-cli/res/windows_ico.ico000066400000000000000000004424721416010000600230020ustar00rootroot00000000000000  F@@ (B (S >[( @  -)2- / K K K K K K FRUTScgef_cag]a_gZ_]gY][fW[YfTYWfTYWfPUS]7;9"US0?Ș4ᘉ41zn,{o+1{N܀~}|z~z~x{~w|zgmjȸXƵVD5% VK1+>6 rcd{~AGD@FCAHEGOJIPLGPKBMH@FC^cauzxJQM ǷXƵVD5"C;;0#YE/)!" {x\uxw!%.#]vcpvXr_.#%BIFy~|JRM ""?]6m`4+"tM~PnF( ggZ}!7,Qo\4RB'F7)H:'E7!>19-EOK|~KSN /Z.X8(pK%gE%gE"eEVuBΰ5:3t]DYUz`A("~g4MBPt`%J:'L=(M>$H9KVRIQL gV3_M/\J*VDQ_YBIE @r;kce“uСqΞY^\370%_d|Y/(!71lZwkvljg_ySoBr_YjcAHDDt>mc{ʢٲzѤY][8@9r_KjgnR)#fg`Xpgmj}g{ezcxbwX{mfuoKSO 9fkɦ԰pʞR[\3i]&93,dokj|qsqnsNY^qZWPNOMOMONKIqisFDCBA«:Ĭ6/1-YMAtpgxXE:.&"yhOvsf]0<[ywVTÓfdjhgeSQskvŰDƯAŮ?Ů>ĭ<ĭ:3WN$40+r]wyhSRJCMHCF=3-(#D;9chgg`$%h^\Ɠ~qoSRskvƱFưDưBƯ@Ư>8SL'C=8qiYWU{|}[O@n\H'#p$" 1-)ndcɓonRQskwDzGDZFíB>:bY-HC>~ªq^[YXNDic.)"dW##!2-)n`^~sqlib_WT~unF;wk0cZ-QI)?;6DZìq_\RGnvoE<3MD#%#!3-)n[`CXﵥUUTKof7MH;qi`}~rXRMɴưíyuXL?A:#'%#4,)nǷYĴVBʷV͸V͸TMbZ9YTQ®îym˷ȴưí«}yaTG=6%)'%5,)nǷY²VBʷX̸XʵUxnAXTRµ˸Ǵűïνz°̸ɴDZ{h|aTH@:',)(6,)nǷY²VBʷYκ[QMJBͼ̺ɷǴű±λ˷ʵ~rdaXNZOEKC,/-+8/,hǷY²VB˸[ϻ]yIgcaν˹ȵıоͺ˷«IB;LG'ACCC@.+JǷY²VB˹\˸]e_EϾ̺ȶűϽ̹ʵDZìy351JQôZL7Eul6of2of3of3of3nf2md1ja0g_/g_/jb0md1of2g_-;;.Ń픘{||v|yekh9=;>lǸ[tƴO­?î@í?­?><9411471!@3!@3"@3"A3"A4"A4"A4"B4!A3& mpokqnPWS9&H0H0& &m       xr9įD)]Q:1)}VWUT~SRyOD7) =:#V[Y1)5VG|LrZ&J:%H9%H:%I:&I:&I:&I;&J;%H:)#psrntpPWS'pJ!^>3c4c2`2_2_2_2_2_2_,ZqFůD(0,p\E\ZXWVmKC7)qi7X^\(;3EfYFjY]lè/XD(O?)P@)P@)Q@)QA)QA*QA)P@-%tvuqwsOWS(rL"bA5fCvMMMMMMJ~4gqIǰD&$!xW^\[[rP*$ UKJ[a^/C;SvgctAhW3\L-XF,XF-XF-XG-XG-YG,WF0(wyxsyvBIF(rL#bB5eO`ɓ`Ȓ`Ȓ`Ȓ`Ȓ_ȒT4gqIDZE{l$;3+`a`^^r]F?7}lJ\c`6KCaul~X~nV{lV|mQxiEo^8eS1`M0_L1`M1aM0_L4+y|{tzv497(rL#cB5eXn͜m̛m̛m̛l̛eɕT4gqIȲEyj$A8.cdba`lO81`S{:\c`=SKlmg}f}e|d{czay`x[sP|jCr`:lY6iU3gR8-{|w}z153(rL#bB5e`|Ҧ{ѥ{ѥzѤrΟeɖT4gqIȱF{(0*&agedc`TF670ZP]caEZRxvtsrpomlkjga{YuN~k(C7|}485(rL#bB4eiװ֮֯ӨrΟeɖT4gqIưF-1,q_Kkhgfd_H=2,(]dbLbY}|zyxvutso9RH7<9(rL#cB4erݺ۷زөrΟeɖT4gqIŰF1j^%.)&|_ljhgf`NB5_gd?QJb}r`|q`{p_{p^zo]yn\ymZxmZwlYwkXvjWvjVuiUuhRrf2G?;?=(rL#bB4e{ğ޼ٳөsϠeʖT4grIŰFª2/61C;3hmkjhgbcSA OWTNWSNWSNWTNXTOXUOYUPYVPZVQZWQ[XR\XR\YS]YS]YT^ZZd`6:8 3c{۽ֳѪy̢mș`ÑQ4gtKŰG3ë3y*! TI=lnlkihfxdK~~ytzwo Ndeeeeeeg*U@pFsCq@o>nDC65y10n00m00m00m00m00m10o'&U[i:|NvJuJuJvJvJvKvKtINŰH5ª5ª42\R%udPrpnmkigaTK@"##"#"A< h]!~(,Hu}_txnd_e +QOON!,(&ftqomkih`D:1D;o_ĭ=ĭ<ì;ì:ë9ë9ë8«7ª63,LE!rbPwtrqokcc}]6/("THn:muUn{yvspnklh  ~'RQONĭ=ĭ<ĭ;Ĭ:ì9«85-PH"2.+fyvu~cdUEB91-(#.)#J?3cSB"4.gY7Lvv}|}}}}}h{j  3RQNMĭ=ĭ<Ĭ;ì:7.E?#NF>n}{xveS(%#778GGH??@G=3ZM=PFv'CCCCCBBBAîEJ7RQNLĭ=ĭ<90?:$ %$$j^Q}g&#"BBC^PA`,($71qa##"! %I 7RQMK<\Zxvjh]ZNKFDIDzJDZFǰEưDưCƯBƯAů@Ů?Ů>«<4C>'",*)~o`zjX&&'92,dl_PA%"`S"#"! %I 7RQLK<^]xvjh]ZNKFDIdzKDZGDZFDZEǰDưCůBŮAĮ?ì>8OH*!!#.,+wfvb((*5/)~bpmvZ PEw#$#"! &I 7RQKJ<:8bY-%$%,++xiììy72/<<>99:.*'~dtqoi:3-@8|l"%$#"! 'I 7RPML<\[}|{zsrkjca[YSQKIIH螑LdzLƱHEA:3x.|n*yk(aW)+)('&(vk_įůĭìªub*'''%$s^yuspoZM?2-rc"%%$#"! (I 7GFFE*YWZWTQSPSPSPSPSPTQKHy䠓KİKC:~q1`W+JD(<7%52&41$-+&&%(_WPȳƱůĮì«loaRzd|zxusrtbN(%hZ"&&%$#"!)I 7bdTfWRQQQQQQPSA~q5NH/42,-,-@==b[VwneukcJEC(')pf]ȴɴDzƱŰĮí«|zwusu\#!bU!''&%$#"*I 7 tôXpǵUɵSɵSɵRɵQɴQȴPȳO®K@_W453/-,/MHGvμѿѾ_XR0//{̸ɴȳDzưůí¬~|yvu{_" ZO!(('&%$#+I 7 u³WpȵU̸W̸V̷U˷T˶SʶRƲOCRL5/.1978|tl³Į­ѿоѾQLHRLHñ˷ʵȳDzưůĭ«~{xwd&$$VK!))(''%$,J 7 u³WpȵV̸W̸W̷V˷U˷TɵRHQL7//2B?@ıƲİï®ѿA=<κ˷ʵɴDzưůí«}zxj,)(VK"**)((&%,J 7 u³WpȵV̸X̸X̸W̷V˷UOc[=114?=>ʷȵǴƳŲıį®ѿ~tksiaλ̹˷ʶɴDzƱůĭ«|zi*''YN$++**)(&-J 7 u³WpȵW̸Y̹Y̸X̸WʵU}F877989̺˹ʸɷɶȵdzƲıï­¬ld\±λ̹˷ʵɴDzư|o`D?:pdV~|f&$$! ]R&,,,**('.J 7 u³WpȶW̹[͹Z͹Y͹XQOK<326oieɹνͼ̻̺˹ʸɶȵdzŲİî­Ѿͻ̹˷ʵȳɳ1/."MF@~f&$$$"dX(..-++*(/J 7 u³WpȶX͹\ͺ[͹Z̹YI879DBBϿϾνͼ̻˹ʸɶǴƲűįôѿϼͺ̹˷ɵɴLFAKE@~ªs_"!#*(pb*..-++*(/J 2 u³WpȶXͺ]ͺ\κ[ıW^XB548pkhϿξͼ̺˹ɷȵƳűîϿоϼͺ̸ʷɵɳŮªrdT!3/"r->îCïCïBîBîBîA®AİDQ  r u³WpȶXͺ^κ]ϻ\TEC>;9<Ͽνͼ˺ʸȶdzűïѿоμͺ̸ʶɴȳDZĮìYOE "((XQ*w@׈yA߅v@v@v@v@w@w@wAla1b u³WpɶYλ_λ^ϼ]O;:urpϾͼ˹ɶdzűîоϼͺ˸ʵȳƱůíĬs0..(,+0iL,WxYԠzੀܦ~٣zՠxѝuΙrʕoŕpaJ9f u³Wpɷ[Ͻdнdƴ`^YH<;?sonξ̻ʸȵƲİѿϽλ̹ʶɴDzưĮe\Q'&(.B8=@c`aϿͼ˺ɷǴű®оμ͹˷ɵȳưư|965*,,;mTGu2ayZף}簆䭃઀ܦ}٣{ՠxќuȗsaJ9f t³Wpɷ[нfоfɷcb]K?>BURTξ̻ʸȵƲïпϼͺ̸ʶȳDZíi_V*(+4H>MsN3czZ٥~촊豇䮄᪁ݧ~٣{ՠxʙtbK9cmĴXoɸZʸ\ʸ[ȷZskKA@DHFHϿͼ˹ɶdzİ­Ͻλ̹ʶɴɴx644-0/AuZSL~3d~]ף}氇㭄ૂݨڥ}ע{ӟxətqWBH `V"ƸZP3ƶYvĴXxUGbX@CBEBACξ̺ʷǴűîоμ͹˷ʶRLH,+-%=1)sM0[0\*V|qTĕrșuəușuȘtǘtǘtǗtǘtޚvZov\x^ pnv_IFGCADdabϿͻʸȵƲïпϼͺ̸űnd\/.0889LQPW`^Zea[fbT^[$#9* QsWhghhhhgx[ }_|^ŗsϜvĕq]SODCFFEGпͼ˹ɶƳİ­ѿϽλɵ~sh424768lkn'''>}_{^ŗsӠxآzs`FEHDCF[YZν˺ɷǴİ­ñ{qh757657lkm&&'?}_{^ŗs֢zܦ}̛vn^UDDGDCEmkkξ̺ʸɵdz­Ĵ^XT435::;srt&&'?}_{]ŗs٥}ߩݦ}rgZSEEHDCFb`aͻ±umgSOM:9;325EDF&&'?}_{]ŗsܧ㬃ߨݦ}ÕsucXGFIDCFLJM{yyözt_[XGEE:9;548879NJ87<98;?=C?>B>=A=<@<>?kdcm0o=n=n=n=n=n=n=n=i7±Yɹ[ȸZȸZȸZȸYȸYȸYȸYȸYȸYȷYȷYȷYȷYȷYȷYȷXȷXȷXȷXɹZ߸Vj|zzzzzzzr^^` ɾeGOPPPPPPPPPPPPPPPPPPPPG! (     ':DHIIIIIIIIIIIIIIIIIIIIIIIIHE>4.5<@BDCCCCCCCCCCDDDDBAAAAAAAAAAAAAAA>8 -! "Hj}qm:?;m.ͷJ72YN(" 5e                            MSP݄~u{x]d`GMJ*͸J3 Oõ[ڻW⵨T첥RRRRRRRRRRQPPNMLLLLMOPPQRRID?DKI昜~~~~}}}}|||||{{{{~z~z~z~z~w~rw~z~w}{x~|~agdELH̷I)ɺ^bȶUɷUɷUɷUɷUɷUɷUɷUɷUɷUɷUǶTƴS°RPMKJIIIKMO±RŴSǵTν\Ϳd_]9w}|qwurxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrxvrwvrrӣcqutsxvu{yv|zrxvsywsyw{z}T[W:?;'̷I)Ⱥ]ȶU0))(((''&&%$" yr~m{k{j~mry#Fɻ`poNrxvsywsywsywsywsywsywsywsywrywrywrywrywrywrywrywrywrywrywrywrywrywrywrywrywrywqwuھhlqojpnpvtqwuz}z~rxvsywsywu{y_fbIPL>]e`̷I)Ⱥ]ȷU,$##""!! z~lp`gXcTaS bT cUhYp`|jvCƸ^xwWsywtzxw|z{~||}}}}~~~~z}swvuywy}|}u{ysywtzxdkgKRNJOVRRXU̷I)Ⱥ]ȷU-$$$##"! q`SA80* -' ,' /);3 J? UI ZM bT n^l|>[yxYx~|}orqlpnmponqporqpsrqtsrutsvutwvtwvuxvuxvuxvuxvuxvuxvuxvuxvuxvuxvuxvuxvuxvuwvuwvuwvuwvtwusvutwutwvtwvw|ztzxekhKRNKOVROWT̷I)Ⱥ]ȷU-%%$$#"! l^/)    +% D: SG ZM fW vf7TxwY}FGF                                  uuusywekhKRNKOVROWT̷I)Ⱥ]ȷU-%%$$$"!OE    3, LA VJ aT|o.JuuZ%'&                                eeetzxfliJRMKOVROWT̷I)Ⱥ]ȷU.&&%%$#!I@    ! J? UIi^'}@rsY$&% %%%%%%%%%+&D-,J3,J2,J3,K3,K3,K3,K3,K3,K3,K3">)(&'''''' deetzxfmjJQMKOVROWT̷I)Ⱥ]ȷV.'&&%$"KB E7&dN4M@5(!    I? ]S"um7noY#&% "*!*!*!*!*!*!*!*!*!3$lpѶLnS-","-"-#-#-#-#-# dfetzxgmjJQMKOVROWT̷I)Ⱥ]ȷV/''&%$!_S   mXAxKzLxLsJz_@E7%  (# VM ib1lnY#'% %-#-#-#-#-#-#-#-$-#5&v{QrX0$/%/%/%/%/%/%0%  dfetzxhnkJQMKOVROWT˶I)Ⱥ]ȷV/('&%$o lW@{NzMzLyLyKyKwIb?<1%   G@b[.kmZ"(% (2'1'2'2'2'2'2(3(2'8*6[AFlQEkPEkPEkPEkPEkPEkPEkPFlQDiO)F54)4)4)4)4)5)5*5*# efftzxhokIQLKOVQOWT(Ⱥ]ȷV/(('&!3.]K7|P|O{O{NzMzLyLyLyKrHRA.  /+^W,lm["(% +"5)4)6*4)4*5*5*5*5*6*5)4(4(4(4(5(5)5)5)5)5)6*6+7+7+7+7+7+7+7+% efftzxiolIQLKOVQOWTwfȹ]ȷV/)('%eXG9+yP~Q}P|P|O{N{N{MzMyLyLuJE9.  ZT+mo]")& /%:.;./W;+M8;-9-9.:.:.:.:.:.:.:.:/;/;/;/;/;/;/;/;/1 >1 >1 >1 >1 >1 >2 >2 >2 >2 ?2!?2!?2!?2!?2!?2!?2!?2!@2!@2*" egftzyjqmIPLKOVQOWT#7DIJJJJJJJJJJJJJIQYɷV0))'`ThVCWUTS~S~R~Q}Q}P|P{O{N{MvN-% OJ(tub"+' 6+#B5!A3hqȬfp9bH"H5!B4"A4"B4"B5"B5"B5#B5#B5#C5#C5#C5#C5#C5#C6#C6#C6#D6#D6#D6#D6$E6.$ egfx}|kqnIPLKNUQOWT>czVɸV1*)%2,80*|WWVUUTT~S~R~Q}Q}P|P}OoM# WQ,y{e%.*(A70OB,M>isԻq{:gJ(N:#F6$F7$F8$F8$F8$F8$F8$F8$G8$G8%G8%G8%G9%G9%G9%G9%H9%H9%H90& egf|mspHPKKNUQOWTL37%9 d                 SʸV1**~n!s_K[YXWVVUUTS~S~QR{QO@1 qi7i'0,2K@=\O;[MIqXjuзGsV(N<&J;&J;'J;'J<'K<'K<'K<'K<'K<'K<'K<'K<'L<'L='L='L='L=2) fgfntqGOKKNUQOWTA|.Wn4c4c2a2_1_1_1_1_1_1_1_1_1_1_1_1_1_1_/["I-ٲQʸV1*)A:1+&|YZZYXXXWVUTTTmJG;/ 84Em'1- 6QFCcUAaTAaS>aQ@eRKs\]j{Ǫ+U@'M>'N>(N>(N>(N>(N?(N?(O?(O?(O?(O?(O?(O?(O?(O@(O@(O@5* fggpvsGNJKNUQOWT?w/[|9o7i7h7i7i7i7i7i7i7i7i7i7i7i7i7i7h7j8m%R3߱QʸV2+(3.aRC^\[[ZYYXXWV~ZaO3  YN=Yu*40% A\RPrdOqbdrѺ׿Uf>eS1YI,VD+UD,VE,VE,VE,VE,VE,VE,VE,VE,VE,WE,WF,WF,WF,WF:/ fhgryuFMILS[V6<:?w/[{8l=lUČVċUċUċUċUċUċUċVċUËUċVċUċVČP8h7k$R3߱QʸV2,pc".)$]`_^]]\\[Z[nYBSHBõ]w+51'"FbWVykTwh̳|ZlMtbMqbLqbHn_=fU1\K-YG-YG-YG-YG.ZG.ZG.YG.YH.ZH.ZH.ZH.ZH.ZH.[H=1 fhgsyvDKGOmwqcmj?w/[{7l?m\Ɛ\Ɛ\Ɛ\Ɛ\Ɛ\Ɛ\Ɛ\Ə\Ɛ\Ɛ\Ə\Ə\ƐYŎQ8h7k$R3߱QʸV2,D=I?7baa``_^]]\\LB:PExh~Aµ\y,62)%Li]^r[o̲y]qV}lUzkUzkTzjSyjSxiRxiKsc>iW4aN0^K0^K0^L0_L0_L0_L0_L0_L0_L1_L1_L1`M @3 fhgtzwBIER?w/[{7lAocȕcȔcȔcɔcȔcȔcȔbȔcȔcɕcȔcȔaǓZŎQ8h7k$R3߱QʸV3-:4]N=cbbaa`_^^]\B:5A8ZMj\q/:6#0+Zwkomlkkjiih~g}f}f}e|d{c{czbyayax`x_w\uR~mGuc?o\7jV4hS4hS4hT4hT#F9 bid{}BIEW?w/[{7kHtxУwТxТxТwТwУwУwТwУuϡo͝hʘaǓZŎQ8h7k$R3߱QʸW5/WM!H?8hggfeddcbaa`UH9B:RGYNfYt0;7%2-`swutssrrqpponnmlkjjihhggeb|\wTqI|hAxc=u_(L> aic~ELHW?w/[{7kJuӨ~ӧ~Ҩ~Ө~ӧӧ~Ө~Ө|ѦvСo͝hʘaȓZŎQ8h7k$R3߱QʸW5©0zk&)%"}^ihgffeedcbb~Z?5+5/NCWKq1=8'4/du{yxwwvutssrrqpoonnmlkjjihhhfb|]x;YM$akfGNJW?w/[{6kLwխլլլլլլԪ}ҦvϢo͝hʘbȓZŎQ8h7k$R3߱QʸW5ë1*fVGjiihggfeedcc}_5.+%"J@q2>9)61j}~}}||{zyyxwvvuttsrrqppoonHfZ*$bmiIPMW?w/[{6kOxױױױױװױׯԫ|ѦvϢo͝hʘaǓZŎQ8h7k$R3߱QʸW51/KD+'%|_ljiihhgfedddx\2,(vzq4@;+73m~}}|{zzyxwwvuutsrrqpJg[,&cmiKSPW?w/[{6kQzڶڶڶڶڶٴװԫ}Ҧvϡo͝hʘaǓZŏQ8h7k$R3߱QʸW62ê1{)OD9ilkjihhgffeddy]4.)msr5B=-95o~}}||{zyyxwwvuutMj_.(bliNVRW?w/[{6kS{ݻݻݺݺܹڴװԫ}ҦvϢo͝hʘaȓZŏQ8h7k$R3߱QʸW622/D=m]Mnmlkjiihgfede~_H=4nsr7D?+62=MGDVOCUNBUNBUNBUNBUMAUMATMATMATM@TL@TL@TL@SL?SK?SK>SK>SK>RJ=RJ=RJ=RJ=RJv/[{6kU}߿߿޾ܹٴװԫ}ҦvϢo͝hʘaǓZŎQ8h7k$R3߱QʸW6©22ª2z*#!"nXomllkjihhgfee^\N@msqEPK/<7.:6.:5.:5-95-95-95-95-95-95,94,94,94,94+94+83+83+83+83+83*83*83*83*83*73*72)72)72)72)71)71)71)72/@9oxuT[WV/Z|6kX~޾ܺڵװԫ|ҦvТo͝hʘaǓZŎQ8h7k%R3ݲQʸW7ª3322^T$61.~aommmlkjihhgeeht`K# fkix{zbhfageaheageageageahebhfcigdjhdkielifmjfmjgmkgnlhomipmjqnkrolspltqmtrnusovsowtpwtpxuqyvrzwszxt|yt|y~T[XJ.Y6jZ߿ݺڵװԫ}ҧwТo͝h˘aȓ[ŏQ8h7k&T5سRʸW8ª332ª3/:5>70jqnnllkjihhgfeeoV0*$EIIz~IPM0 +|R6kX~ܿٺ׶ղҭЩ}ΤvˠqɛjǗdē]WN8g7k'X7ϵSʸV84433ë3+)&KB;kqonmmlkjiihfefy[TLDahe 2AGIIIIIIIIIIIIIHF%kG8m>jRzPyNwLvKuItGsFrDqCoAn?m=l! cI2 )X 11`:1a;/^9-Z7-Y6-X6-X6-X6-X6-X6-X6-X6-X6-X6-X6-X6-X6-X6+V4+<ҳRʸW9ª6ª5ª5ª4ª44ê31IB""!!xfRsrqponmllkihhgfepV;66 !   !"@;XPcYuh!|&)++2Ʒ`O&=Hтqzupkfa\W[ x?;:87VRQVTSQQPPOPOPOPOPOPOPOPOPOPOPOPOPOPOQO%$d[Q ѸSV﹪UTSSSSSSSSSSSSSSSTfȶU9«6ª6ª5ª5ª4ª4©3ê31JD&%#"w_trqppommlkjihgfew^7/(D;UIbTzi&̺YF0=ˀnztnid_YT[x==<?>`ecPOOMOMOMOMOMOMOMOMOMOMOMOMOMOMOMNLfd10vf]'i˹XɷVɷVɸVɷVɷVɷVɷVɸVɸVɸVɷVɷVɷVɷVɷVɷVɷVɷVȶVI:«7ª6«6«5ª5ª4ª43ë3294 @82ptsrqponmlkjihgffxZ5/,#I?XLhZp&˹YG0=̀oztoid_YU\s;=<@>`_^=>>===<<<<9ë7ë7«6«6ª6ª5©4320r)! rcSwttrqpponmkjiihffsZ,(&,(PE\Opax&ɸXF0=̀p~ytnic^XT^ h6=<@>`_^B@QORPRPRPRPRPRPRPRPRPRPRPRPRPQOB@[Y21vf]'dEưBƯBƯAƯAů@Ů@ů?Ů?Ů>Ů>ĭ=ĭ=ĭ<ĭ<ĭ;Ĭ;Ĭ:ì:ì9ì9ì9ë8ë7ë7«7ª6ª5431-'40A:4qvutsqqponllkjihgfkR!70TIbTzi%ǶWF/<΀lwwurpmkhfda_\ZWW_ b4=<@>`_]DBXVYWYVYWYWYWYWYWYWYWYWYVYWWUSQB@[Y21vf]'dEưCưBƯBƯAůAůAů@Ů?Ů?Ů?Ů>ĭ=ĭ=ĭ<ĭ<ĭ<Ĭ;Ĭ;ì:ì9ì9ë8ë8ë7«7ª6542-~(LD ! 50-oxvutsrqqooomhfeehiiXFG>YMk\t#±UE/=с] i:=<@>`_]FD_\`]_]`]_]`^`^_]_^_^_]`]_\YVSPB@[Y21vf]'dEưCưBưBƯBůAůAŮ@ů@Ů?Ů?Ů>Ů>Į=ĭ=ĭ=ĭ<Ĭ;ĭ;Ĭ:Ĭ:ì9ì9ë8ë8«7652.|'D>!ZNDxywvuttsrnrZxeQYME70)5.(4.':3,`RB}gM^PD:+'PE_Rxg RE#'D|NNOOOOOOOOOOOOOOON5fyD=<@>`_]HFecgegdgefegefefefdgdfeec`^YWSQB@[Y21vf]'dFưDưCưCƯBƯBƯAůAů@ů@Ů?Ů?Ů>ŭ>Ů=Į=ĭ=ĭ<ĭ;ĭ;Ĭ;ì:ì:ì9«8763.x(C=!MD=q{yxwvuumn^N:4. LA5u[/*(>6XLj\sNW??@퓇@쓇@듇@듇@듇@듇@듇@듇@듇@듇@듇@듇@듇@듇@듇@듇@땈@rg,K=<@>`_]JHljmkmkmlmlmlmlmlmlmlljge`^YWSPB?[Y21vf]'dFưDǰDưCưCƯBƯBƯAůAů@Ů@Ů?Ů?Ů?Ů>ĭ=ĭ=ĭ=ĭ<ĭ;ĭ;Ĭ;ì:ì9874/xj'62!-*(seWy}|{zyxwt_830ubNr`K'#PF`SxhAYʻ]ξ_ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ο`ξ_iIM=<@>`_]LJrqtststststrtrtstssqnlge`^YWSPB@[Y21vf]'dFưDǰDưDưCưCưCƯBƯAůAůAů@Ů?Ů?Ů?ŭ>ĭ=ĭ=ĭ<ĭ<Ĭ<ĭ;ì;«985/re'1.!   C<7k~}|{zz{iW&##778VVVfefhhigfgUUVaRAfA93A9ZNn_z(03455544443333222215ͻ[JN=<@>`_]NMyx{z{z{z{z{y{z{zzxtsnlge`^YWSPB@[Y21vf]'dFƱEǰEưDưDưCƯCƯBƯBƯBƯAů@ů@Ů@Ů?Ů?Ů>Ů>ĭ=ĭ=ĭ<Ĭ<«;961oc('%"! ! !"!"ZPGx~}}|l.++"!"WVWtbNknV*&THeWp!"""!! #̺ZJN=<@>`_]PO{ztsnlfe`^YWSPB@[Y21vf]'dFƱFƱEDZEưDưDưDưCưBƯBƯAůAů@ů@Ů?Ů?Ů?Ů>Į>ĭ=ĭ<ì<:72sg**(# "! !! ! &$%seW~}gYK%%&112:41gigH?6F=_Rxg!""""!!! $̺ZJN=<@>`^]RQ{ztsmlfe`^YWSPB@[Y21vf]'dGDZFDZFDZEǰEǰDưDưDưCƯBƯBƯBƯAƯ@Ů@Ů?Ů?Ů>Ů>Ů=ĭ=;94tg,+)$!!""!"!!" 300te}F>8fff334#mWnjjmX92YMo`{ "###"!! $̻ZJN=<@>`^]TS{ztsnlge`^YWSPB@[Y21vf]'dGDZGDZFDZFǰFDZEưDưDưDưCưCůBƯAƯAů@ů@Ů@Ů?Ů?ĭ=¬=;6r/.,%"!##"#""# !72/l~=71767o^Nmllje81,&#TIgZs"####""!! %̻ZJN=<@>`^\VU{zusnlge`^YWSPB@[Y21vf]'dGDZGDZGDZGDZFDZEDZEưEưDưCưCƯCƯBƯBůAů@ů@Ů?Ů?ì><9y084'#"$$#$#"$! ":63rªQHB^^_<<=gXHpomllkhXHKAbT}l"#$###""!! %̻ZJN=<@>`^\XW{ztsnlge`^YWSPB@[Y21vf]'dGDZHDZHȱGDZGDZFDZEDZEǰEưDưCƯCůBĮAĮAí@í?ì?ì>=:4@;(#"%$$$$#%!!#:63rëªn`S99:@@@fWGqqpomllx\%" >7]Puf"$$$$##""!! &̻ZJN=<@>`^\ZY{zusnlge`^YWSQB@[Y21vg]'dGȲHȲHDzHDZGDZFDZFǰEưEůDĮCíB¬AA??==<;6VN+$$%%$%%$%##$;65sĭì«p*()nnohhhcUGstrqpnmmi93.2-YMo`{!$$%$$##""!! &̻ZJN=<@>`^\\[{zusnlge`^YWRQB@[Y32xi`(dHȲIȲIDzHDzGDZGưFůEíDCA?><:98764\T,'&'%%&%%&$#$2/0xůĭí쬫ZPI! !rrrttt TJBwvtsrqpnmmeVH%"TIi[u!$%%%$$#"""!! &̻ZJN=<@>`^\\[}|wupojhdb][WTPN@?[Y54}nd*dHȲIȲIDZHưGįFEC@>;8520{.y-x-w,k`*-,(&%'&%'%%&*()tfŰůįĮíí쫪u720>84pywuusrponn~jTJ@eWp $%%%%$###""!! '̻ZJN;:@>``^IH]\\[ZYXWVUUSRQQOOMMKKIIGGEECCA><][65qf+dHȲJDZIůGFC@=84{0s,zl*tg'oc%l`#j^#i]"cX#84'&%('&('&'&%'kaXïƱưůůĮĭíìì«~j8310,+~g|yxwutsrpond/*(D;aT|k $&&&%%$$##""!! '̻ZJN87<;`ba_]][][][][]\]\^\^\^\^\^\^\^\^\^\^\ge0/zmc*dGưIîHEA=7}2r-tg)e[']S%VL#C<$B<&@;%?;%@:#;7$(')(')('(%%'WOKȳDzƱƱưůŮĮĭìì«vWNF3/,1-*D=6k~|zyxwutsqpok70*81^Qxh $&&&&%%$$##""!! (̻ZJN5454/@?~NKIE@=o:8e85a74_74_74_74_74_74_74_74_74_74_74_74_63`&#=pe,cGHD?8|2xk-dZ*LE)B=)1/+/-+.,*((*('*'(*''*'&))))(()(()''(=97˶ȳȳDzƲƱưƯůĮĭíì«zxz}}{zyxvutsqpnH>8.)ZOtd$'&''&%%$$##""! (̻ZJN{"} I´WṬS糦PﱤOOOOOOOOOOOOOOOXdCC<5sh/UN,>:,1/-,+-++-+*,)(+)(+211634855844422*)+('))()'&(ZSN¯ʶɴɴȳDzDzƱƱŰůĮĭì쫪~}|{zywvusrqqp`R(%YMpa~$''''&&%%$$##""!(̻ZJNyfĶZdɸXʹYʹYʹYʹYʹYʹYʹYʹYʹYʹYʹYʹYʹYʹYʹXɷXŴVN=:~q3RL.75/-,/-,.-,.,+-+*,534VPL{qh|qh<88(')(()-,-ti˶ʶʵɴȳȳDzƲƱưůĮĮí쫪~}|{zxwutsrr{hQ'$XLn_|$'((''&&%%$$###!)̻ZJNxfŶ[ɸXJİOİNįNįMïMïMïMïLïLïLïK®K®K­JIGD>7d[2;80..0.-0/./--.-,.A>=qhaǶҿѾнϽϽλKFC(')(')311̸ʶʵɴɴȳdzƲƱưůůĮíìì«~}|{yxwutsslU!NDm^z$((((''&&%%$$$#")̻ZJNxfŶ[ɷXƱP͸W̸V̷V˷U˷U˷T˶T˶T˶S˶RʶRʵQʵPɴOűMICy9RL3101/.10.0/.0--/>;>x̼Űî­­­¬ѿпооϽϼѾy311'&(QKHð̹˷ʷʶʵɴɳȳDzDZưưůĮíì«}|zyxwuuyb&$%G?hZu%)**)((('''&%%$$*̺ZJNxfŶ[ɸXŲR̹X̸W̸W̷W̷V̷U˷U˷U˷T˷TʶSɴRïOIu=9731032132130/1LHGƲűıİįïîî­­ѿпоннλzpf)(*/./ϻ̸˸˶ʶʵɴɳȳDzƱưƯůĮíì«~}|zyxvvi-*+F=i[u&)***))((('&&&%$+̺ZJNxfŶ[ɸXŲR͹Y̸X̸X̸W̸W̷V̷V̷U˷U˷TʵSƲQL|@?=6224324214103YSQȵƳƲŲűűŰİİï®­­ѿпоѿKFC&&(kb\̹̹̹˸˷ʶʵɵɳȳDzDZƱŰůĮí쫪~}{zyxvh,)*F>k]x&**+**))((''&&&$+̺ZJNxfŶ[ɸXƲR͹Y̸Y̸X̸X̸W˸W̷V̷V˷U˶TȴSOEEB8225435435112VQO˷ȵȵǴǴƳƲŲŲűŰİïî­­ѿо1/1B>=λ͹̸̹˷ʶʶɵɴȳDzDzƱŰįĮíì«~}{yxx}e)&'G?m_z!'*+,+**)))((''&%+̺ZJNxfŶ[ɸXƲR͹Z̹Y̸X̸X̸X̸W˷W˷V˷VʵTƱRKc\<325446435213IFE̹ɷɶȶȵȵǴǴǴƳƲűűıİïî­ѿѿͻkd]*),~Ѿͺ̹͹̸˷ʶɶʵɴȳDzƱƱůůĭíìĭ~}|zyyyb&#$I@o`|!(+,,,+***))((''&,̺ZJNxfŶ[ɸXƲS͹Z͹Y͹Y̸Y̸X̸X̸W̸W˷VɴT®PtB767546546335GDDͺ˹ʸʸɷɷɷȶȵȵǴǴƳƲűűİİï­­ѿ755ncXϼλͺͺ̸̹˷ʶʵɵɴȳDzƱưƯŮĮlQJBOHAsb~}|zzs\ KBqb~#),,,,,+***)((('&,̺ZJNxfŶ[ɸXƲSͺ[͹Z͹Z̹Y̸Y̸X̸X̸W˶VdzTJIF:547657546979μ̺̺˹˹˹˸ʸʸɷɶɶȵǴǴƳƲűűİïî­¬ѿriaKFDƴϼλͺͺ̸̹˷ʶʶɵɳȳDzƱưůůxl^('(!!#! "$"$^UK}|{{r\! MDsd#*-,--,++**))((('-̺ZJNxfŶ[ɸXƳTͺ\͹Z͹Z͹Z͹Y͸X̸X̸XʶVRldA548767657546qjfȸνͼͼͼ̻̻̺˺˹˹ʸʸɷɶȵȴǴƳƲűŰİï®­­NIGѿϼλͻ͹͹̸˷ʶʵɴɴȳDzƱȱ~410$$%%$&$$%"!#841y~}{{p[   ! NEwh%+--.--,++***)(('-̺ZJNxfŶ[ɸXƳTͺ\͹[͹[͹Z͹Z͹Y͸X̷XɵVMDA:768768657FDDϾξνννͼͼ̼̻˺˹˹ʸʸɷȶȵȵǴƳŲűİį®­vmgнϼμͻ͹̸̹˷ʶʵɴȳȲDzɴu&%'%%&%$&##%.,+ve~|}oZ  !!%#UK{k&,...--,,,++**))(-̺ZJMxfŶ[ɸXƳUκ]ͺ\ͺ[͹[͹Z͹Z̹Y˷XŲUvmD769879869657zsϿϿϿξξννͼͼ̻̻˺˹ʸʸɷɶȵǴƴƳűűİî­î~uϾонϼμͻͺ̹˸˷ʶʵɴȳDzɴ}0.-%%&$#%.-,ud}}m_U! !!-*bUo (-.//.---,++***)(.̺ZKKxfŶ[ɸXdzUλ]ͺ\ͺ\ͺ[͹[͹Z̸Y˷XPHE=77987:768NJJĸϿϾϾννͼͼ̻̺˺˹ʸɸɷȵǴdzƳűűİîîξ̻понϼλͺ͹̹˸˶ʶɵɴȳDzưvg)()20/yi¬ì~{IA; ! " !0,fZt!).////.--,,++**)(.̺ZLxCxfŶ[ɸXdzUλ^κ]ͺ\ͺ\͹[ͺ[̸ZʷXzI:9;98:98:657~vqϾξνμͼ̻̺˹˸ʸɷȵǵǴƳŲűİïî̻ѿѿоϽϼλͺͺ̹˷ʶʶɵɴȳDzįosĮĭ¬«z?:5!! " !72i\x$,0111100///..---,0˹YM a4xfŶ[ɸXǴVλ^κ]κ]ͺ\ͺ\ͺ[̸Z¯Vf`D87;:8:98:A?@ϿϾνμͼ̻̺˹ʸɷɶȵǴƳƲűİïî­поϽϼλͺ͹̸˸ʷʶɴȳȲDzȲDZůĭìëªu:52! ""!"! "C>&uj0>JPƳRǵSǵSǵSǵSǵSǵSǵRǵRǵSǵSǵSǵSǵSǵSƴRcO xL$ xfŶ[ɸXǴVϻ_λ^κ]κ]κ\͹\͹ZSGD>:9;:9;879d^]˾Ͽξνͼͼ̺˹˸ʸɷȵǵǴƳűİï®ѿпоϽμλͺ͹̸˷ʶʵɴȳDzDzưůĮíì«zf&%&#""#"#! "HC&pg3BOTﵩTUTTTTTTTTTTTTTTU< xDxfŶ[ɸXǴWλ_λ^κ^κ]κ]ͺ\̸ZM=<=;:<:9<768|οξνͼ̻˺˹ʸɷȵǴǴƳűİï­ѿпϾϼμͻ͹̸̸˷ʶʵɴȳDzƱưůĮíì«yjZ!!"#####$  ( 3(4*1'/%.%.%.%.%.%.%.%.%.%.%.%.%.%.%)!}FxfŶ[ɸXǴWϼ`λ_κ^λ^κ]͹\˸ZtlH98<<:<;9=;>:9<\WWϿξνͼ̺˹ʸɷȵȴƳŲűİî­ѿпоϽμͻ͹̹˸˷ʶɵɴdzƲưŰůĭì«o.,-$$%$$%$#$ B0^>1:)乌kn˙sМuΛt͙r˘qʖpȕnƓmŒlÑkihgedc˛wx[JxfŶ[ɸXȴXϼaϻ`λ`ϻ_λ_λ^UDB@=<>=<>98;{yϿξͼͼ̺˹ʸɷȵǴƳƲŰð®¬ѿпнϼλͻ͹̸˷ʶɵɴȳDzƱưůĮìì«xi[##%%%&%$&#%%L5!fD4>,⾐npҞwסyՠwԞvѝuЛsΙr̗p˖oɔmƓlđjÏigfe˛wx[JxfŶ[ɸXȵXϼbϼaμ`ϼ`ϻ_λ^P@>?>:8;Ͽξνͼ̺˹ʸɷȵǴƳűİï­­ѿоϽμλͺ͹̸˷ʶʵɳȳDzƱůĮĭì¬OHC$#%&%&%$&".) X;$oI6A.p”pӟx٣{֡yՠxӞvҝuϛs͙q̗pʖoȔmƒlőjÏihf˛wx[JxfŶ[ɸXȵYнbϼaμaϼ`ϻ`λ^rjK;:?>=?>=?<:<Ͽνμ̻̺˹ʸɶȵǴƳűİî­поϽμͻ͹̹˷ʶʵɴȳDzƱưůĮììªu411%%&&%'&%'$C4#dB'wO8D0ĔrÔqաyۤ|أzסxՠxӞvќtϚs͙r̘pʖoȔmƒlđjÐig˛wx[JxfŶ[ɸXȵYнcϼbϼaϼaϼ`ʷ^nfJ<;?>=@>=?>=?Ͽνͼͻ̺˹ʷȶȵǴƲűð®­ѿонϼμͺ͹̸˷ʶʵȳȲDzƱůĮíì«}o`&&('&''%''**(V>&mI*U:F2ƕrÕr֢zݦ}ڤ|أzסyՠxӞvќtϚs͙r̗pʕoȔmƒkőkh˛wx[JxfŶ[ɸXȵZнcϼbϼbϼbϼaȶ^leJ=<@?>@>=@@>AϿνͼ̻̹ʸɷȵȴƳűİï­ѿоϽμͺͺ̹˸ʶʵɴȳDzƱưůĮíìªNGB&%''&('%')81,jJ*vO,Y;H3ǖsĖrؤ|ިܦ}ڥ|٣{סyՠxӞvќuЛs͙r̗pʖoȔmǓli˛wx[JxfŶ[ɸXɵZнdϽcϼbϼbϼbȶ_lfK==@?>A?>@@>AϿνͼ̺˹ʸɷȵǴƲűİî­ѿпоϼλͺ͹̸˷ʶɵȳDzDZưůĮí쫪r0//('((')'&(,K<1xT-V.];I4ǗtĖrڥ}઀ިܦ~ڥ|٣zסyՠwӞvҝuϛsΙr̗pʖoɔnj˛wx[JxfŶ[ɸXɵ[нeнdϽcϼcϼbȶ_mfK>=A@?A@?A?=@Ͼν̼̺˹ʸɶȵƳűűð®ѿоϽμͻ͹̹˷ʶʵɳȳDzƱŰŮĮì«mcV'&()()('))0-2iM6]0[0`;J5ȗtŖsۧ⫂ੀިܦ~ڥ|٣zסyՠxԞwѝuЛtΙr̘q˖ok˛wx[JxfŶ[ɸXȶ[оeнdнdнcнbɷ`mgL>>B@?A@?A=<>Ͽξͼ̻˹˹ɷȵǴƲűİî­пϽϼλͺ͹˸˶ʵɴȳDzƲưůĮíëë};75(())(*('),B7:\BA@BA@B=;>Ͽνͼ̺˹ʸɶȵdzƲűï­ѿоϼμͻ͹̸˷ʶʵɴȳDzưůĮĭìëyl_)(**)**)***+4_IAhAn4c1c))***+*(*.@8>^HrEu5e2dAb]^Ͽνͼ̻˹ʸɶȵǴƲűï­поϼλͺ͹̸˷ʶɵȳȲƱưůĮĭ}o`,+-+*,+*++--8fOFlM|Hy6f2eBx Ʒ[bƴTǵUǵUǵUȵUȶVʷVRKHFDBEDBDCBD?>AϿνͼ̺˹ɷȶǴƳűİî­ѿоϽϼͻ͹̸˷ʶʵȴdzDz_WQ,,..-/.,.-0/?oWNsTTQFx6g3fBR;ɘuĖsު將㮅⭄ଃߪݩܧڦ~٥}ף{֢zԠyӟxҞwƖpɚvcmQ,=0 MȺ]Ⱥ]Ⱥ]ɺ]Ⱥ]õZڼW䷪T읒NGECDCFDCEDBEB@CgccϾμ̻˹ʸɷȵdzŲİï­онϼλ͹̸˷ʶʵɴȳDzyk202.-/.-/../)L;)vO1\5d6g6h6g8l4gDU<̚v̜wƗtƗtƗtƗtƗsƗsƗsƗsƗsŗsƗsƗsŗsŖsŖsĖrџzj :+?M6 '&%y#pC=nW7fN>'>16*=98EDGDCFDCECBDLKLĿϿνͼ̺ʸɷȶǴƲűðî¬пнϼλͺ͹̸˷ʶɴʵ@=<.-//.0/-/'3. Y<&qK+T-Y.Z/[/[/[(|R9G2ƭd齑n•qŗsƘtƗtƘtƘtƘtƘtƘtƘtƘtƘtƘtƘtƘtƘtƗtݵi,!iǘtĖrqptaUBBEEDFECFDCEA?BϿξͼ̺˸ʸȶǴƳűİîпоϼλͺ͹̸˷ʶ˶VPK/.00/1//0.-/  _<.#3lS>lRpVpVpVpVpVpVpVpVpVpVpVpVpVqVsX "oПy”qÔqĕroYHEFEDGEDFECFCBDYUWϾͼ̻˹ʸɷȵƳűİî­ѿонμλ͹̸˷˷ïka[/.00010/10/1NNPqqs(()V##oʛvƕqҝvМtmUNLEDGFDGEDFEDFDCEϿνͻ˹ʸɷȵǴŲıï­ѿпϽϼλͺ̸̹űzof5351021020/1DCElkn,,-X$ #oʛvʙsأz֠xϛusaVDCGFEGFDGFDGDCESPPϿνͼ̺ʸɷȵǴƲűį­поϼλͺ͹ɵvj534112213001BACvux,,-X$ #oʚv˚tڤ{עyآxfKHIFEHFEGFDGEDGCBD{wxпξͼ̺˹ʸȶǴƳűİîпоϽλλŲyp867213214203979onp,,-X$ #oʚv̛uܦ}٣zآyѝvucWEDHFEHFEHFEGEDGGFIϾͼ̻˹ʸȶǴƳűİïѿоннkc^86832432431398:nmo,,-X$ #oʚvΜvާ~ۥ|٣{٣zp\SOFEHGEHGEGFEGEDFLIIϾν̻˹ʸɶǴƳűİî¬ɷSNK324435435324989rqs,,-X$ #oʚvϝwੀݧ~ۥ|٣{آziNJKFEHGFHFEHFEGEDFPNPϾνͻ˺ʸɷȵdzűıŰîпd]Y;9;435546546324A@Bzy{,,-X$ #oʚvОx⫁ߨݧ~ۥ|ڤ{סyxcLIJFFHGFHGEHFEHECFIGJϿν̼˹ʸɷɶɵŲ̽}ohbMIH98:446657657546546POQ,,-X$ #oʚvџy䭃઀ߩݧ~ۥ|ڤ{עy|eNJKGFHGFHGFHGEHFEGECEiefϿννμ˹IJzsYTRHEE668658658769768768657?=?YY[,,-X$ #oʚvҡz宄⬂᪁ߩݧ~ۥ|٣{آyfWPNFFIGFIFEHGFHFEHDBEMKN{xwͽ̻µz]XVOLL98;87:87987998:98:879869658;:8,+(^]`,,-X$ #oʚuԢ{簆䭃⬂᪁ߨݧ~ۥ|٣{עyngZSEEHGFHGFIGEHGEHEDGCBDNLNpmm¾tlhe`]QNN=;=:9<98:98;;:<;:;:9;:9;98:76:879@>;`Y;:<:9<;:==;><;=<:=;:<;:<:9<87<87;@>wDHFͿbKChhm蚚,,-X$ #oɚu֤}볉豇毅䮄㬂ઁߩݧ~ۥ}ڤ{٣zՠxik]UIGIFEHGFHGEHGEHFEHFDGEDFCBDCADCBDCBDHEGURSWUUWUU[XX^ZZ[WWTRRUSSRPQFCE@>@?>@>=@=<><;>>=?>=?>=@>=?><>=<>=<>;:=:9=:9=<:YS@{qEJNƲPɴPIcLDiin蛛,,-X$ #oɚuإ~겈豇毆䭄㬂᪁ߩݧ~ۥ|ڤ{آzآy̚t{d_UPHFIGFIGEHGEHGEHFEGFEGEDGEDFEDFDCFCBEBBDBADB@CA@CA@BA@CA@BA?BA@BA@BA@B@?A@?A@?A?>@>=@<<@<;?=;?=?MI@b[CmfEKNQdzRʵRɵRʵRʵRJdLDijn蛛,,-X$ #oɚu٦﷌촊겉豇毅䮄⬂᪁ߩݧ~ۥ}٣{עzסyϛtl~gZPGIFBFEHEDHDCGECGEDGFEGFDFEDFDCFDCEDCEDBECBDCBDCBDCACB@C@?B@?B?>B?>A@?A?>A>=@QMC^YE_YEphGNNQƲUdzT˷U̷TʶTʶTʶT˶T˶SʶSJdLDijn蛛,,-W$ #oɚuۨ촊볉鱇簆宄䬃⫁ੀާܥ}ڤ{٣zϜuĖrƗtlZ4ՠPNrjN_[M^ZMNKICAGCBFDBFDCFCBECBFBAE@@D@?D@?D??CGFDYUGYTGZVGe_IOPPUIJWŲWȴW̸X̹W̸W˷W˷W̷V˷V˷U˷U˶U˶T˶T˶SJdLEijn蛛--.U# &oɚuҡ{氇㭅ᬄૂުݨۧڥ~ؤ}ף{աzԠyҟxўwɘr”qŗtxd9̾aƳRɷ_ɷd±b]YYT~TT~SRVVUTVZZı[ȵ[̸\ͺ\κ[͹Z̹Z̹Z̹Y̸Y̸Y̸X̸X̸W̸W˸V̷V˷V˷U˷T˶T˶TJdNFkko四001{K}_0&pѠzƗsƘtƗtƗtƗtƗtƗtƗtƗtƗtƗtƗsƗsƗsƗsŗs̜wəvtB˾aIJR̹aѿgѿfffeоdϼcϼcλbϼbѽbѾaѾaѾaн`λ_λ_λ_λ^κ]κ]κ]κ\ͺ\ͺ[͹[͹Z͹Z͹Y̹Y̹X̸X̸W̸W̸V̷V˷U˷U˷TJdUM!ootܛ::<Y6y[TA/mҡ{Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|Ԣ|ƗtLͿaðPŲXɶ]ɶ]ɶ\ɶ\ɶ[ȶ[ȶZɵZȵZȵZȵYȴYȴXȵXȴXǴWǴWǴVǴVdzVǴVdzUdzUƳUƳTƳTƳSƲSƲSƲRƲRƲQŲQƲQŲPƱPűOűOŰOIdg])xx}̡PPQo- vZqVfDhdhcgcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdg\I^d̻[ǵUǶVǶVǶVǶVǶVǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǶUǵUǶUǵUǵUǵUǵUǵUɷVg{5sxx~ߖۖۖۖۖۖۖۖۖۖۖۖۖۖۖۖۖ܎gfiH AA9óVʼ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʻ_ʼ_ŶYݧ=N.2ETUV]^`cdfefgdfgdfgdfgdfgdfgdfgdfgdfgdfgdfgdfgdfgdfgdfgghjLLN AA611111111111111111111111111111111111111111145 ??PNG  IHDR\rfIDATxg-u&~;2y I zы\KU]53jV͔V[35?zzzLzQTH*QE#ѓ @x`c2cϏm"} }x|{9y2##bo'O?9~ !=/tʟ: ݀ }> @`f _3 Pp޻0aW?m{MǏJD#"O~Q ` ]0A cD۶:GN\@x}AK<={疝W] !Џ(_OU6mZعcG*f0~{׽/X!ƈG6<`(?2SB!%;n]O?Nu]ѓhbM9عiad>_K!sa/ h4|#F\6))v\v=O%xU^0@,.. rfT6/̠!VfO&nܰ.O@rEt'}qd0? ?)~$yS㥳s޻i{ò1|_mFJ~ 3C bOdVl9&@pY!j`(eVL=#?sf.eu hemӤ^%B;liyyS]ըgΞA| 3*PUؖx `+-~D8 sG}_avasuAh +d8,ת@saz/ rRR\')eN/&S$w'D$ʾ}E~G[Rz=aܗD('贕-9)tf:ͧd4hIڻ'N`:襁~J/0~50i&΀ieeen$A_p)J$Oy lܺ h&hU ",YhV QbLRD"E"BLY$A^-'W|SWV7E{dwEVID4Ox&Nɦ^R!!,rA"d% IWW%Z̅UGKd%x4 f;@3"a#8+)R㘐S7@8qN< F06iU h#tg&iY,=k*_:I/u+8UoM--4]{MR6׀Ū:jD:E&0&wP-@I!rŲHCgVp/ge7M̩rcFsNLbvFBg"1;׈N; Μ6-1xHֿDM`@ |*k_yB6gʛ6Mn`!s0cvB'b%9ȜC?-0MFKۥjy]@ '~3Yy7-)e,\s=B=HE0) n&@ۂ Ŭ> 0u!{ Dgp'p$!S2m^%֦p1,yV>ͤ )IXVc]wktt: G+8{h&d2SJ^BDD,$[[i4}hc;Ϊ%c-xtLIp 3%(ϕض|Ό YxٷK7S=!#ͥsc6OdVdw@|\@1WYeԘ2QMe)*H02s1P/^3p]ׁ; A9F6W۶ؘZ0Q^< EfmLaZY1Iv *(@GvM6vB@s##F?f :,~5-y*i3-",cefp *1s77݊1uMj'][.~G3|TDT/$w@UwZj *w FD0b; tfhLHe / \D َD%DVeRGqF ~z7zՆvxwp0ӟ7 V`3: VyCPS==0sׇai/ȯG;1#&d0@8BAEpv-?GG HD|/8КW̝M(hI"C;t.B!7:s"F"$x=\s®^ᣛΧ0Uc'jě\mzgg{F7?fE@yaw>4Ėxs Qf-&֕TpHcd:TTK؛`a. tn q0O@ǟ'<Ÿh~xf]I}zlX"clѶmNb _؈ ذiDh(b6ع#ڶADa͈ظq6oކݗBca`e4B5g?t:d2d2tfgΜ2f "ɓ8z0Μ9 Otq <^乫Pmݎ0C}Us$l8A}E:%= ]H@Gܜco8`3Ѧh4RIP™}GiJ ' cpc{?pKqW?MF`˖ع"\y1i4MӨ۠64J1KT8v(OtSNa:cei {Ϝ@3c<a: fg7%Kv`v<'u F{ x2gпPnۅ#^m.,0ր9gMo:p"' 98gxŖe쯂Zq0 `nq{v:Fvޡ=E]s%eflܴ W]s=n~1L0L䃞>uJeh%=k$d7Ɣ[AZ4!X!3\su׃9V9y O<(=agCchBUUl?푢` Ėyff;{z_ 4C>ym@zDUSyLeiiK/7t#n >~i[,X$+/B ,hCѣ$\ɛY⮓ضhebO(/n, l^÷x48q )bĉQUhCnm0N1 K*f.eS^fA9]E"л-kt6qw'mʗ'$<‹8~PN% l,d:ڭG]l06=v8oۮNpu!$ #Q!؈?Fp |"p(^qZ%g}Mq`m+ `xTgA洨FV$ ' NmpR/ {>wqd#vQ\J!4F䯾#Żq+Nx[sx?=$ΠNq) N0pi<㘟߀˯ ۷o(ES^K߾3Epb5O@:.x@~VO ^_u6r!, 0& 6l;~}v_XNA kV^6%!2E%3tZQsy.@jsYQq1{2L' f}8]?{9 #S簲1^YvA0tDdơC~7r3c uKuKsl^i~@P_hAηqq?.ZG¬< s_L;LvUc=:mD)C1x$D`K_5s:ؼc'6؁o{;ڕ^| <8y=uKg7P+ `ѣ6mp*P M N_U|:F ˁc#1>{ 99ت%AEiUʹmv+ M26K ;cp,+2-@W(B@Ž%qI9UA쒄Hޅ"!!3cFܲ3 ^n|#xq~,/BIR$utnC|~;JΡ%%PWdb<|6 ͏Jߗu\3K9[G9(L"l۶ oxP L`F)'3pUfQJQ_3Nᆷ Ub.ObQ4 b0bm6CF Ȇ-+s xݷ)G`љxKK"e"ܙp/ްregh=XJE*.x9]'?ۏ<t!`)@$rZ5-`Y|( yHə'H͂CˍQ@l,lڈ/᎟0u+U q)|_eF#'ɕk1ĥغ aPu?O'o E;")nޚ4?yU淾ɯ~ڌزVTU㕋"DQMYt-bI9*@n5Nh0啈Zjy=P]T(jN LEL? u{ |-Jrĕo|3~q7cd %b4_*:%,c2: MkCBŠ$FV ~W~mK8q ɔHߍ r7cE;S3p]CްBDv(v2 W|Q*vc%cm(Vף{M"N#atcӮޟ5E0}&"Fcǰ啕yi6-6U ?Oi~DƏ ;u*?cI$~Ce$ikII;|Q GH>J1!)3O.ފN=RQ@H ňe@N+\y2U8Nm-lM(>x1gT%0]|4Z]w݅3g`yy+Q*7ic(Ɇ#HD B~hןp.l]aZv*M}2$&J۶_$v - )j!վJ)'"y.RZJ<$Qd.ps)%%+-DYsSl; M8Zh _;){0G85yO'KK8x`Lq] Ee@;?Yn!5Ehvi&"K1zvg;nIin">[/R!7vMv1]"|>V( v8kkFT_ J;LC)T>LaՅ>zx'~ bؤ >e}qv,c2$wmDT;!mDa(w%pa21f/>2Dk ml޲ MHBobc"NUP +՘THSBq'j]-Ycǩ S{"IMMx@FgUQҭ>/ J&K;23qoO!m*$!-x'|ss yrE)!_a9.H"f𻤍MƂsӚi淼 W_s zZwE-Jt_͟vPYLz"&>Cv}'{ yd*>p HokUD,mKNJQRSѷI# ozPh_[z? De{qPZHId!>!a Lt-hBA D#Eh,^9GILʳSY "iKv|(YD- *++Q$ .q}?k~,o5\13g3-33`8H*^xy t;7֏)`헸 8u| vobJ,9A/W_{5^|:?MKaE1Xf!2 MWBhA8^Ϸ ExkX@d5?J q̛g[9QH4p.1 Z2/+"`׿cαH"cıOcbf8D?8T*wcQ)SV^U)G0߸mu5.aMz3d>Tafo*6lhV_kI>-mJb\ D ,$ȂE)V^Wa}d SfS d%03A9<'GsV ;Dp`"caV|W.?k8-\U秞zzrӦZ" j 0 a?hm~Q*F}u.x"yy?+dV>D;GOQ#N+.O|L**7jҋ+J4m׬1QPg\tG P oT׆T0Dxh'ЬLwVQ_dр܀Maى,XL2*V vg. ?Sտ_uMYiFBU޶mvύ ?](cBDc00QC!*{ f–q0a+oƯ.}<}ǾM) PLg˻ Gu`f gO_:s|hkN7r31ܠpMצiY%j ;w^3eY朗56 ;^b1,o|~-@v.$9OquZqC]k/j܇} [JmJ$M̜hL=.GtmC7B' !icl ĶQmǹn̴E *׃u/ T|sL^)O_xqoo=61U j(TMA rD4?g/#"Z!s<to~ݿ>gi]0_Ẽ-[N.y۵B&ل UWjzJpDM,^)IEnUf9 㮿/ÄLHRI}~!+aw֝._ P QÇMVr:H.pQ֔tQW?Y } ;/ [q\5]prsS,03`FFoP!vYJE4Ɖ˓|ܲ҅ [v-*XNSW+j@&%'J6PfeLHWs+LGqyaXT ?ge4Ѡn'PV{fp۰90ћP r-9[0E:j$1s`"^;/ttX߳q)}33Saav;0-op YWG;`bt$*m \Y.r5],I60]B7.›2/,țZ2UJuʲ3ܢ蔈'(]%NʌboqŧqQ aJ_eٍܿ5Bj@ lyđ1M!50>.Ys PC2^&gl*'m!-0,![ "Wb5:fkr B3vMU]~0mh)8+,iw6fzq>"5. WH<~Ъ9ʸ _/_*Āɝ.,(lR7Xl 7"XJzcn[1Z`ʂ/&Y#GW4N˅#2qk+0j[khĩ?gI]E'ܪnuZb"u /%mu:(!_~rȖ~utN~/K.ۍ *('8]udMb P AE';%vNk==G?"%4_)H* tdHG%JEƥ7^FU?rĩ#,c2xtܠDĆ]5B]h.:d)_ݞLR6)9(#j(qH__??X n⡡tbNМ9 j*I B/ΗIVYGT':S0.7+NiP9=-\-!K5] fI+\Z2&#ptu 'tA6?Ҿ<(Lb,\60|$Oӭ G] &)Qf6yz[u*v^@(ޥp f@/?^_XL@Zkaqe9/'0yK YhtC pw\m$ {)Т5׽WnyBm Zj]t`-Zu0LDj^KG\'2q%z:u% C ]ZM.ґ~{rlW`ZL?LAo&'0X*BPU*jEٝų8X>}]j%u ⏡(BVYWdXWݨUIv{#EUohO^n@-v7$ QY,EϬo]දUbsQ-g}8  ,8͊*=vgdYg"U\wrٟ`RW!x.z"Y@U=? iF-&\>Z+/WQn8bJ#}@_xռ̯N\#GW_]Qn%|lݒW#L^a -̑YWB1 *%vyr~n+v4{ 98:X2y()VE'/|~wՆZ I ~RdˊWqf\yո oFo0,i:b; &QD\.KNn7_Aخa\*"0[%(W3:AM-!z[P׵nGAb{u_Btyʰ>:vwW(0腋_X{V"g=PRvʅE;l%1q+irh"l"ozQս\ +2/tjddԢM_5ez_]J)|nNIT~~tϰ}(dHH 'n?5pmkFcؿ-B^ivGy>`zk r=7IpwO}Dύ"wL&<QA8/[}O< _0$Jan\z ^epZtIB&+DF!?u ilDޣ8-xn -fIj:mٙTr76oX,sHꟃ^SGsaOM[W⼃d>T-&ABPTE5 x$ꆵ}ұ7$Wwqzkڳ(i! gqFU'Nx|fb:j0Nڬ\ZrUߢ#bT8MI?U_p/Xג`Λ|8E *1BU"6춼=&e2 듯cqc8/3v>kkupPh'4@+^^s-Ɣ",)Eq=.} LIA3Wv_,9QȮ΋7L0BUP, QHx _1͍pvPH] Ji!ͮ{w~Xq~t0" ޹z7>&|N@-,C/YB<5a[w[PLL,A^][D8 % ]K]=U;R^f>E[:C@ppnCke{)OqqɸE3\@P\mgJq5QC,sl~Q)(6BZ}nޫJ+6=8:hf[aXGN^3w}?҄MLi( ŀ)In2I=V%(;\W^ܣмׁ-$gG4 <[y;H ةWj#[tqIi>6Aer4hlV[~>X4A ^_$K!u&Y)p^B$sc8qKW] ʰ "#7>T:ݘU.%&,ϗ Y+ f23_&/'h DƖӏzthkts[ U/ N+eYc]I@f]%YHe.)S%Y]@YYLuB^^isMD7p2Y:ue={L Sq!QdaCC2d" '[dա딺_\LV )`P*]h-;Ay!8sI!Q&= .4E黧]hsÓ fe ӱ$MAЁqHB􇃴c&,'q w,ک(!;dwWmO@Ԝ7R4K@.:*Zg/'O)EgfNnvq|SUSH÷e.n͟;Y)>b/(hO pm&ss1^lrE=HM53PF_Ww~vS|/QN4tq>M>9!O.bVލFP #o 3(bIPw1 :lE(&qOxlqe{nrf૰%(nEx:ץR5/pQ60 =6He]5/*4 D5̏bFvi{jxA3mL[SN[g7hwwvw\^c9ʹѮ EIs2Zc]M7.Ȍu}_N/ ]j}~;QsT+[D Y|S`.Gg$*D;%bX;]nZ{D(Tp9ރ+J!3وyWAeDsܘ@2˴\y;eo*kDmFJD3I?4~8; ~WA/#٣k źPOH *uX|^$pkZ;mEa]=#BҧA7=?\R.B9txw TR (ySErk{^w22!neSR=46ؾ2 FlT954"Nc\Rl>~Pu *B!m0cRcM2@:^:\Lfw۴u(#[án9%>KA9o/ч亚ZTC;ׅʄr =F.kiUr\UrNVYB}S(aK(blqMVOOa}S+o'U y%"}Ýם"ɒȀ-YNJATñ jCB Ǚw(M".*BjʐXy>MQ,l+nMptewb{zd`u3dҖgIj[(PX=gv/yaѽ׳;JܪBjCatHWEJ AflZ,lٮ'ILNӺF[:hji~GdU(܉hSEխWm0CXn;ő6Ss|T2&vksD`Z!V'   H|v [%"7_ToVŒ>Vt"J[EfƐYzG^ ߣ<鳊u,u_VME -E}n'R`k.r.云rPFqt)i8Әy4rawGݼ(|no uŪg#˱Z7)]u M眃)ny䮑{L5i$c0lzCO,g3rys'c AK&66):FS'[RDDVi[W6,2f CE! I ?E.%#v]g|\]1c:b&SN̔RP$3MTJ'mRLH}nn,9R>ϱ~ yr_P${6l =-ux:ZJWL$Jx4X'I䬡ts4@DD,@W \C-mGv5;9ZEW"'qZQgY)iXȑ{FaQ S,#|܈M&-ͮT3L@AR/L%gQ sgN'u-y}+^p6Ĉjl)iF O~QdOc1k fhQH)v&&bn%+mš6!zg1y[ld\d!='!ޔQS,4!R`ɯ +j~:D^ ,#Se\>OkHd<%]`nPC) xRC22/Xֱ;|/"QKopB(*KNPIR,Rd$I"S(M9 G D/\Do1K a{bQfV "Q,XAe(HV`V݄IU. kJ{0JOޞPx2Ní%^m;B}|fN#9>P~`EW73瀿c  @R+cV2\s$~t(ɗ12P 4Yn>BY0s&aUm iݝVиve"ojY  Fһ_ Cv`^!Y,KI0(qLV(Ա."S6_:A."5j{-09p3f7lO)OӳbLa\JHOQ~E.>3=$e3[ 8= 2Q3vn"B3l؊:}Ӷ)7W%\1Щ8#⤥L.r tI6YAew>))S@w5nb8:Q,ҹS=[JȊ" aVlv?RT] ݈D ؼu' " yM& mkd}M()"%o{9'<ޙKUrd.<g9Z_,_RDPE0 4K&*I+g ^@r Eq2 XJƜWDYe52yEL:,lܒP;_t"F4K*A1ئ>ʡ~HF[wi~G||$1q)hK#Yh#׉ಫ1ڻ'Y~&4tvl늴|'7m*je+'+eH (Msz'0kBNNHUV 6_ޔ%q8w@@E}b;2*F:OP@r"͈"Vy|qug&cwOi(v}ň;CDf:lI*9#ނh1{1:_hv.G$ -<"M[0a|x2% jR2H,rO7dLb'ЉD 1i1bmD+DЫR?i2ZsS|"UHk #+9bMb:g1a%X[LeZE! 92+0ClpUqL4;ڔb Udž-BmȫP3u ^>  jjm#?^'PP&{,jmcot;':ugl4V:?qTvw"ɪ#J oE rX#d8Y{$^Ac' 8 I2vm) u rtCmߏCQ,)NQ;nQLW~~O:3 DD0`M.ӘL'ϑ]ͱaN m f6  D9s!Tak*WtpVVJKL!zPUjd2031ڶ׿y1_JYw'(Kkeo) g>f!.AؾkҞd,I.+R_&gi$}SMX))zs2"zgQ4u]$`Zխ݇ өi#a4U +Y\O-vekʮ{NkJF2?99_]x#ږni6 f1"ԕ{v ZgN/ƆW|_Bu&T0#y3#> D xeqnUxTX$68ȋh [v`O*NrHo1;?Z oZSY..G a`PS S v5[7 u1h?*OĀ[[7KbOuT\ZW'qlDDG}v`Y(4|% %Ȇ#R2l*uuѧ,lڼ-, H2PGfGD4&㳧c`{} c^f,=Xė|(%( >ͷY#"ª;G4"Q"eV` CkˊHLjc⵼K<"=ˮ`hծ(o$1 qOmv]AAِKCfnymIbz ;6]rz0o{ `|p3O?HH# k! $0*$Q΃GK4?[ltӶ̧ F,7Nвe*V.A>-6[R9$s:B|n''mFݱCғl(Go E볠DVbɻVˡIMRnC<̣%WK\?f1bq|X-Cx'0f^Q3۲s[bvVl؈Aajt={0BB%MȭݼP+@AsymX]zQ1NOaii s Kr.j5 E(S揽zw, pԢ *f %hXj.D1rOgEiJꔨ{EHKO u>(^phhk`Z؃iFBKd[QnMKy#y/_^fzX>5fw; I! 3~03i߈g uUtF#`Ea:Nr{5}ET# "}As9 1Wv}2N0)A@T=ԡPAUU~43m ]Cv׊ 1rk#s"80`) `("=rJ' 12aTU7mEs4t:/uGPK" f V:'[N/d NRG`ໄ&?zNEӕ4 f7mB;m/2.$"}Kڊ`*{u'g;?v~׼G:}_`ҝzuMhpEP:"\os6whE @ i:i:S+q?\NgFb pHJ`I ,\q<=+ꥴIW̽'b({WVn{JdF1NڙZA:xc@8`M^PYU-Þ(Ik;|29͉ b3)()a+g@~=Cwķ>8y=߻ },+T-87,|[;|C)9P2[[)ak[mO΋R9G~( vT2s- !h9V-6X@RsH`x2pM/=''8&Rx>߉QxJ BaAt*NO9Wy\R+!PbEX>{{{ǎɉ;_K )[2dі` hi8E|K#^#>2ii CBvg``d$rMavn@QeyTD$WdJ@tF~ ͯ.1Yg@Iza};Rt<&I;!a}N&iB4?lS. f!'>}&XDe8$`%FtTu#s`KkZ H. RBʔU GTuGs'Oa ˺q?2꺟.JCF cT(JS`Fl[\rزy]CI&' ns|v]D?tUgH\]>qrıB"H߇E^V(p}w*m*(XDлv_D CBr/>'~++:I؍ y!`0ܺR-' ;ߥRpHUkDhҷ+Pa/ͥh'4N;+.P9dLĚ**`ofі@v0:DGGj7fN=}sx[_FUl:ad X׉BʨJ>rW`q[^ۚƦb(7yX21 IUnmgKzq.?s* SY׊I?[nϷ;T}SF͵Unql.3Ia$¢G|smM. TV#JyJ'x{Q`%jii]i<~7RxM)$ a!U?hڮ1BVʣ 0f,<@Y]ݤN#L#H5 ZJruVd43,a'uBe5nFq d#d$ 8|h?g@ ݏ/ZΏq2t2pp1ԙ r 5*r̨>} biC ;"q~LHKNgefo/mC+nlZLF+\5@_j|.s< !0-mұ9eO7p<i2k?SV.2ꪕ5!:XĒ1fv^e2P/`7w` ߿ncY Q j/3%p.Dr+ `[WuS.G.W{<.W1?v_k߻ y>kSwS("65m,\s#{;034EC]aŗ7܆bNYm` @.L׾|'WWHO9-DSrLq2|˟P1Tz} oou#ӵ6i)p-龪;mr{!]G%~~G IiQuO?6m;]+T{nmg*2.Zt0t2΃iFmM^7Uo[vUȂsǺ(:=QNv:RY;PH(޸3o{F/8,W 8ya~ob :+R5\by0 ,΅ J+둋%ܳV<Bz O|h) [0ز X + sm$ʵ5#"6n݁7lR<Wy]o{6m\L'yaEt 7*1h\]Y;4 9>_c]0!ĭE UB][ aCfzWލG~װyvMƾLK>8D(Bw'Iwg3~um;qeWa:ΐEHsw.$h-ڲd|Oyٶ-6lَ\m_-;/)qmxed 8{~CmnLGW\uז(=K hHkXԡc-sLV-<ڙ_X} Yt'a@#{&L&вRYTUU 6o݆m A(Y ҂4/@{ D}{ O?xD۷mu^iLqKu3nR3 ,/uo戦ix]rs1BYh:Ջ59i͈ 3WT mG۸C;t8ipTގ9U(|7m'}XWJ@L6QZ}# g1s{nɪ0{|/_k=}: $l"WA̜ǭtᡤ]C^@w]0]{'=TU`[J{߱[ؤ>1TGY*;SB'"kAB (V/'Y:z v R>zu!ԅKb 4S=Llnr}P&CfS[u0AAU!vs]_^½2XY^eǡ`)rőI.#jvq1ݺ~x֮PCxP5"qe0ϛbBiW/Zb &d&e/*[Xj-٨ 1Љ/}#z9GMO$)-|9P]`C}ŵpm@}}[URK J0rpǬ;$M4Eaw612_|w!Nqj4Fo(w uH,)f֡8?C." /(A>er)ĴcX)r V\O^(K6-l#5Mv nYV([_!-̙DTB}/Bre`FEǎ7-/{LO7yC̮1dٙDL۶%:w-<~om.[mYѽ11PJd-x+t*DS"%WULVD1׵ 2mz7gN5~v&kЯȫDu*dH>q~q]?^ηX}$]Vd5=s$I79UBrFPo݁ /<@OVV܁k Aŧϗ*̫XsZm/<(RB-F\}hb[V1Kk Rߐ Ib1mc$z΂[0PM !AVV^NCTOK`$hD 2^Lqm7ņ5~Iv'ɑ}#X cml!7Ty37@v u`zn ^]2MPHMai4S8uhŲmry+4x|phge=K&k?0 Kg{|/,ppXꪇm;0ܴ1\U˩Y&F$gWLS,Et͏( K3lzIZ}rLDIv vͨչ,=cx+s*.OHjsbp.K9]c<Z>/1bUA)(}Y QCԃD-]r|Ѱ™@ :}?ġcei TUZKҏA?Ӆ`Z@ #%Duz(`y }ϡ1ˮW e uB~"-Rb6{8#EE\ Uf̔)rsEJSdQФ!J+ˋj2 nf!d_a%͔dҭlxnSo[CN?xow|W|+s:ҘYQ͏`N5E X^Z_,}W@T5K΋/Oq!J榨p6f-*|.#~<@fqMgX4);X(b#s;')!} +-1>o%h::B?^j:+=Cy㒨0W7p}zX9Ci30b9gKdTr3`r8Cy^J :?ވwK 1c]vrR4'y8gNC΂܌ f|LG# N*#G9@3Sb岢0Ii(^óxb~4pE$D]U%S@0% BӘ|$OǽcC(gTTpVOD9eŭ9N&F9(9 lX?ih%o߹mtbRƜr-~MJ!/ Y76Y}6%9aSgKonx F(7ɲJ{tF|xh෾ųɿWxƛn}?Mh&.T'Ca4E;6e1;%DPd'stP`*.D^!U:dJ2%O'\d#:= 䴃PN\V# $xR||i$AHҹ4X.7aXU0Bv1mضIT@O<>:E }/>?;/p;?Cu ,I)AUgl) {T1c]bnΤVY|Oféי5ϴSo3)1suD]?OgWY'-Ey T$7$)vh<_ĦJ3u>gF΢]؜$ `rBI$ù>Ą$Ћáoe:okW 6Djt:Y< m]LQi]ceg/N d]:{w/p_u;q o`n>$Bj!$0i#= ?}ϣMm^Ֆ-+$)(D9Yj -Aȑr57A-y3ҶOd'E/ۺ]9PEĘ >{dʌ"Χ=ڋpJ($r_JkPUuKfE4@dư_a Y_P/)O8)xvqtVBZYFrL7EY"+P+ =4شy'n]ظk7؍j8Lh`F3Ё]_Þg$˓E#Jl!Mw}gquoxyĻgװ ?r[4-'l9c,Wr([y]O|gC)D j(bLwjm60wR{`" D0P͢MQ S @"S%/fQ1qðr-뚄Ь/1;c/Oe(bg0 ^ O&4b|H$ O_,@i|^i1@Ws(:mmjc!3"S4nVjBd|U**yfJ/LP"2%X3A}F@P&W \{UǫVw۶Ŷۚ#W`:>MoPu:WT)wI9VWݶ MGSO !P\Ml!f&}۶ `lݲ;/Åfݼ5 /P_Ѧ ,S}ArBպL||PG6mImsKt~g]\qaKvEHtb0%9X:xI![tYeZ$ 뺸 j#1bU%F/[ Lg'?8}]f:gݣ`m.yok\Ia RG Gh/tHRUփb,0oy6&o:A8v7qvlr 6&w)0VdC5W4X?!Ĉإ'[3ί ^+b{<]LrCyGNh y@sUg#U}qVbL IeIzR$xJ_HCu`{rS@Z{>rx`ɛO3gT9D 0PqKT~$tt1 P"!>ںgGhcLΞF߳ J#U#D}ZH_l7M;\sF Ll\RYFIQ0 WNQ#8Fmxsr> NkYoWp$be)K *q5+Kr^Ȝp a16:džlcDqmmۖ[~B~uj`!D U\rJU=hf2FPMh'cę)d hVpӀpt10T@k`:#Ӡfbիq p6I$\\QeUU#,ъl-Qz+dF:(=_s{#Bތ?Ip#ESJQp:/XU*/hʩjp;5#m4H I;.@*A~Gp^nH:/8f<'1>q"uʅ>oU]dF+= BpHDBUFjĺ&cq2F5̠N'cf8miiyj[m2]VuSybU 7 8yOj\vͩb-#Ktү`pd/.8am(I&r`03L=L+Z==t|(F'}?k,l}* ᙳ Brh9/dчBMh]0_U@s~c+ .Е>^*q2 vyrKcc 0QSftEݐ2Ӣ9eqRѱ.YWyX$L#?ǿ-4ʹ$O=z?c|kXb=z ۨ/hMZI; !q=4?PP0r(w)Q_Rԅbw x !~f1wz4d"\<^A? -#2}368b"vIܳ1u {>b d*j:U^m M Mr ܶbjgq)@fG]]v9h1}r bq!$b2Cl]_/܀S1[^gaӵ:⳸ O>9(QxG?on"\ gEqVc(nG|kЍN \Hld)7@U)HY`uY[SuH%8 z˯o~sz&OMړ9u-˯9q02ԳUVֹ \Ոm ڶ)b&7iA6c UXGFKPg+| +F=7'0 SШ /m%A{6[^=)<鞮60}"}Oi_d&iHGI~2O> ܟ=!>ܹpp $YP)d @?2_ kي*hHHBXk-|mDlL.YcTņF~ͷ?qbO.t{>UA3M%d'V]jE- kf@ј̉(7BN:6[[ W 6"r*}}hOD`4V sap\* h|ז Įre?lnUg@-ϔQЈ*٣1mjB\? ?ƣ1~7~_Z82y?d4Ó2}rt7|‘{ Fa#FPi,*L@ 8@XVIeWC2PLD_c߹z/%G98k ]cUN/S"di)3 CH,r@UkB )0o]cH۞gx㛓& a4G8vp_Y B)>><7"ӯ| M ?f3x{gQյ-2>pۿضu+ڦU.څ}cxޖ+0O<Pw/[9 rsN8tc!p I؁$99 UJ U0b:ݬQbVyº-'FecPJѭ$9Wܴ(3ɠ?۵ڋkVəbL'AFRHBħk(P}[w`O \t)J3/aNE>r&ZŞ\RZQ+,}ls8yr<2hce_ٟF4m*oID YiP-<-|S=D\z}-!J9f2AQ!z噓"R8kAv_sZ0OnJC v2$B. =^'M'W4]ȕq*a J҇k [nC;O}8C :HJ¥ &Q_zK{˄u+a2ه}_ ؗ!TX}c-0_{C.#0:q<^ImS @3moPBQfggъh3m3ųލ{?AU0&a}}[ #{rVӶ||owU?Ty]ڋRA\"'{)D s[`DLa(_6[K]decs" 4qҡ/r@Y9!,|^0]|\yәJp ]#׮QjM.;рU`M\zޝw_/T v!x`sDm1b#Dn(L&c<}@xb'nW F^>PU5>3g@7d9bصk@3mYj"L[n S,vG}?L13_<~S8c_+-r}!;B jUA#'Ps{8Ӧt:dJOS4:rA_~9'?IǓd ԙxSj2mhp1:s@˔uˋx~-4ew{%XS C33h 63 r Nm/} ^z>+p9ڀ*T!i*uNZ@>O%D?O܇o~{8zh/ڶIy1mÕlH^FOCPXuz)PYl84n2.d - 鲖u_ӕq.GX⭩^URN6˫)2;me,k6G[\ b^!3.w0 /u I9dx3_s 2n|ћۘGmW޲;j[ afm3ͻި{5xIXZ\>رBTC@+{}z=\}5{8s Mm7uM;pމӧO$ JQ8,q 骮4BT:Ƥ\(kO ʴ葋v{qqkp(@"֖Q[R>T :/ZEiw5g⋚([ghXmh}싔H겫я-&|}@`FH_F6FgNߌl0\X{o"35׽pzyIs`ff='7ߌo]v& bLtIx0 u5B] }n /hN<cmw[E?q?;r!A  #$%q[ߋ^Gz8|0 ߸xǻމo7nu]: 8aR;я} /M3U\x2wy,>a:fN̬UsL*grDK܍ _ˁ)_4֨Pы8?:qxDk=!Z䵯A pZ+2+ۈ,t ^tؤ5„yax`K#A<~LV܂Hm8s$W^&Ts󩆁ي3QoG6l%#+`gWU@Uqqpݸ[7m133G#Mx\V~3tdjwÏ}'@ /nT∸y;p ը{= U/i/Ј  .4*[1Glc#7:;rN w0:MھIcxr>s^綖|P@:)'[j*–ngkCrEdd͘>p=OL)eSp3,umyuh\W@-w([İ tKoz+ 8ym*Dn 'r޽سgO ssؼy 6lXL56iAf;8}긆& qf.Y}YUЫklz5^ :)f|C:~WҵUqL՞yU |@MOZͯu*ܱsQ~~Zwsɾ~&ڶO,}nyf%0AG%bN>80ZU|Df|%-0v_}[ )]Mn׼ظy3aeȃ;B qe(,k4R>Nxv V|F~cMп?a,\x?,*$ܴ9Uv+JWN8Nփ`b ງxp/ء]j1Kfj(alq1Z`$_[o`~Vԣ8y0AUUK 6sB`߈ oE{hc~3i={vs@m\Clؼ۷oWm\a}̸QKkwM*a>I?kI1չ>]J_膗D P "\b7uϓnznrA5vpe- ]zwxHpN ܀SΜW7 F]yNC9*v](y^ݿFlB*"` yފbp{]6Ws|8/fx|t磘EcP`o4y>zQz>9I[* n1EnŻ|O|;hWxN<|񴓆Bkmye#mDRޝ%LpGd<z#FZշy+0;:3~)4iC~ M'KK>u[ r>q?^)P:,-V_H:~Q0CCJ߯t+iPwqY+ qʧ2Re rBRB'GNH St Pv]~Oc=* ?1m$m:$U(-܂x;?< AM'eg'&`ևfUlc:W);YI6, 1J/?;L$ I9?v\|~cTY3lFi/ p^qSEM4> e4 l}ӻ[& 6'G=(aaavp#mZw?xY%ː "7nF{̜ -047~놶\safYgz}22J96Jsr # MLҵVޣt@. i3%GQ jJ\q, 0l;A2͸"~/} XYBU2FhUUa3[ޅz88So2†N'"F4[yEݻq?a".V&TtGX}!Z$PB~V]EVQ;鰢4ҦZ@&$>  'jwDIlͽKt '鼼b@La0r/̪[_0!n6V+_Y9UxV6nO#YgSIqBW 󊾼GCaeSawO 5z ;ӑSy3XiA FfnA&%<yr-M0ADɠk#HV $c\"XZ",NƝq|kF ^u-V!wf-%mgw)9okVM^Vv,ƌSz9o\GISݣ -%S'0" KF7#Tɂ1QQ6*\Ͳ[?pV+IQG8Нx{wg> \Z޸ ^*F`4 SEA H'ҏXtgTr\p f @!|,:n~o' Ϯܹ:eny3T֯"HB-dx~|E1O;wa\ dg0L۴ս\?38 py"TZMgk$}@IXyr,vܥh[˚wLa–rA'-NOIp߳SK/ J@^wmz =-9UDKPB8{0D" =H "ZE&GLox#0!!L YYpFu ~8_gKI"1,E[Ax ? L p?x@Udo:bLplѣ>jMeƂyj8{-QXی,x r t$"cGqĥFG֓2z%vY&6۹"9ӫK=sFb3{^d_ b3 nx>zj0T@g?30 fW?DF |IsDq g^?#-F̕dzdsk/lVk^;2m8<m:4;Fma2[G"#WڐxDqmǼTXv}BmU5O?@Q7<+ ډsco`-73@}Gck-c룽&Գyo/E>3fffWyv鿊}fԈ"pD?BMhb@ӼFW'1!/l :#*$ Ⱥ]@$-#EhB(Q^)hxIw\ǣܦp 3ڎ9ʙ)Xa>!7Jak+ux:E@[isUS3@ph V5E",B۝^潅>Qi[N?N/B\'}'R;ݔ Vr *NlȂP8~XNOɧQlٲ uuc=7{'/?I#{tSq9߷K;\9eѣGMd,p*arIfY|{v~f'3跪C蹼0hSp87R-dan7F3gݹjOsm ꯀ`XE'QqoֆAu ޭح6_g۵hjY͗$mv#ͮ0#mÝ q3QLpx68BGyTBr/xxٷIޖ*ICdnn{q?{x駟{ ; c`́.׆3uMy>~G|a8v)#%F 4 )1Xv)23eA; A@Z3.v]1x4Gtek'D! v`E +zfp5[? 9- !V]E$tϟK1?'"( oaˁj \SUYJOUt* N2\{HsqǨ|^~AoC?@3=`}c^WRE*ᐢ8wk ]40*v>'Ĥ9Hs:g\`o4jhT-ʲ`ccNؿ`v#>-oL$Sf|<8vD1p>&ܨPQj~ ~tB͗Y[.Bޮ\К.&I3J%r0(!EU;%wE_E\ ¤W.z(LM~ZsyƆsZ]Y7⅋{ztaWBqU8i_}W>+Ut띆59^)EС޳;{^t{=gfޣ{L3k3?;WW+%PIl@'c )RVݝ<5U2.ՅF4xBXP^B~]&cӝio |-A!Υbf#&.Dީ6g9/}?_N)bK,Kl)EY2ä[{].b%hȘ̄/8¦zcT# &01xKUW+ њ8*Fh42v/g~%CYyt(Fv=OSEj\5zG ƫx!61W׉Zn|v̈́=$=:k_9RР3n:s|IM~L"uxOԆ2o]Ǭ߸IbUFAdvՔ9y}fmeA]1Ia눭{G6j+mۜǿ]<ȓAn,-kl8###@) G>ט|&*yیf q<řp`ɍ1tS<3y)2UGWN\'ί7lB l7_Ͽ瑲@/[0U)>p}v/lNZE"> !`V4Pae;nk=.ʆCJ0co"R+AxTvt Jw*3' V^L5_a嘽jv9|?[hl;4V7w{|ѸpGdKs_;ﰱOېNa<̣Q JpFo6J܉F+\c2:x aھr/ |gّ{Tu lT%VnVT%Micl~߰F_ḩU5$ZO4aO0+/Sٷ$3ÈRU )זQSF$x(}fw#&/A/x%]`3?{W~76HF}<DE3pD6IacQRkxo-V,g 1]=N$!|ƥ6-b 4 ʍ|J2>mۅ9;gq&7 GV-*)QUwa`$L-RdkˠO~$ŵ˶ODC~{DBoXS͹ s @ 8O]'V]z.fS"S 9Ai!IJW)Pg„gyEw$v1!2ѸPncNDHR'xŪ4"fw.Dwp_qz>  ;lV ۢ`8[ݒ!oE mOʚ Ω0e^4wCםȫиXg.&TyϿ۹ċ?p\THgAdvflIxu QJH*DTzV׬;U/6hWX XmKQ ]Tϥ=nx I{~GKvwe}n YqDKI#9AɭuU5 ?N~}XsQ4I}~v?#jR[&Ndx!kOsϾGocUԱ6e ߍ>/BQC.%nTxAX}LuWmjNxKm>M>^jq/T{CL۸;-@/&}7l>c_c Gdoz{(o\C=7}@ ,0glvܟ/v>#~寡#- ;/s Lj(N(sdj{3) J3[{+ߎ8/W߸*#L:-G~76UJ (Mpz@4'Bq-s!B gFGZ1R&~ UaB)s: {s㘡[8z.1Xɯq?H5jb;6[H{aqm6FF_enTJH3ep^b\DDu E>quxȩsGL**M 9c )ȋei7\e!AN?ˇS@ U{&&ط[wUE'7(W n̞} vd룻8Dz/-k7l )Hޏ9hswi2$m6lUdLJ+;fT2R Evјy5zcIeb"C^0,Ő(1t >eY0, E9q,M#o }.@ fm5خm*6?NqMxuҰga7xOx#>#Pp{tؽM֚f5$4Z[-gnf&JpFcjg]Jt p_ۗ62о_@)Eijϧ+1Ra8(D@&NVL'ɾ(4$nN(UTg: Ðui.Z0ڡxe؎Mo8Ƌ駣B"^7FMth4LMњ!L13;+1/oxoW,6wbmT*>H WG߽!UMzQaϋ!|pg\OK EQ*n)<uwP-Xm-G<ڵ`lp-g*W{Ze$} ]R:BV,j9TP0=w3ߵt"Z0Y\@V6ԍ&iE{~]{v3=?Ϯ&tl t5"a uAY}$0*Wط"#B= V{=>EaK ڍTkbxE1,Ѯ"(0n4Aw84Iݶ R1TM3E+ zc'IJA',kP+f!5PuSx;\=> {^D\_9)+q--tMМenq2p +WD\|=z9:J $C*ߜƬu?.ϭ᳟S1Éjt6,^KoϲT $hM)zJ)tj~Pc@jE/$vo9.5Q[NOM iGfW_r0UR1[lYU9Q*?Ky[Y(`BAY "ʔf昿AۤS4ffiL-o,!Ơv/Flsb0-k A\S$~t[S76D7d82 6B͘]mY)EHqK|aB D 96HaϛXj*$#(E4xn{qǘ&y/~5S^ڍG9C)3*q{ ܈hJST@7[V3E:5E65M6= cDfSBw5E^2& {92u~RG6\MIMXƌc>et{]ÁMBɕ Oɶ R06Ə %w !@ Mρ&@<َJXqhLS]Q qjgIM!_/h 8a}bTe6V(V\X漈s ق"GB%)*k6!iuH[mVB@f+nTOcA'h >0BiyIᅲSgOpiVWWٸ`})%2 FO`)ʂzoa>@iMd47R`}0ኄz À*P69]S%b1۰< 2CՎ 9y?f^e~a] ?ťʔ%T0Yp@'T33hkyH !Nۯ@7fl4[$&i@]ds@H4P`O<3?7\_ً8]5J|-`Ĺ1ֱ7 6z=C uq\SS:!€] 2qa#njz֝p8蓑ǒv8i C:H2=m?|cNB|k/+ȋ!v STR%•)&[; GMTcorL}Թm{E54р$E%u&* &kOߗ!l+OkR)Lә0?ĵ嫼{uΞ;͛ A)LH]"eNУ`0tqĽn1p[-vP` tVT&M;W|zJMe֍Xlj|U[a$=[J@R̷Hچn%R&Z?_}T ~btjB_#\=b+e?Fl[(rP)!#Q -iWqsl\##ιVKg !Uz乳͔􅏑(eKI0 @SG i6vT&Kׂ_UB75?ѹsmRMI=ýbllݷrӌr} 'ы*{gfGr|8 Hĸ7; /F.gCL˪T3FDD|;o'y%ߒύVSEiJŀi - MݠW:q9N~.ڵKXtE$~N)fkb&[5yR gNq_(q .,f#@^\j:m.Q >)cȎ܏ d/ii\+; X&-VL/4>Ó[O.[ߑpF9xNҔW/Ʊg*yp~NWx !P5@9q7,y+)a͑h<:.e73m`n=CL7gHH4:_djjѭ 6nm;08`q%JMic@ 4SXf\Z= Gڃjw0dVq}v?67< )F{A*uȕKw}F)>c?ܛ/pc eY4Պ%2W/1v},!"qđ0 1U3IKg@i)iU\z5{wKO:} %&/j[a "B@Y`ӌ`t A)eꩍ昈FЈhF?$ 09BAc| .|6 ɨ>R!B?d97ӝݏʼn>V[IT9 8=nE;M9' :ooBhZZ" k#9A,`L\9NVAr[D A I 2Lw0yCYO$*A)zt7tׇ}TM(7@<7>N8vDT}&mJܕRBc[;MŹӋG<^y!c+o^ۯpe*6mҷ:~ZEq];;Mpl\?gk4&_Jrb^9LWKF\)z kn |Jmek8 8Ư00K5VX~W%yIyvC5m0I::|bkxW9/|<7.CC՘ݹI#u@A>(+dd@9PЮ;;N8lTu`[jj}U1OԳ>`1pEBu0μO) W;MXŨl!OgeOUJ9~3#],IC<ƕ\v6'1E)Dv_urnliP %ytsVf:IH,unopcuWxn.]G3]~e;Ѩ?0&o&4N 1I Fcp+-Xfk{mflHNGz^os8?^ڵ ,k^M K`5.g@1U問) <WNҕ<dMS!F Ro Pv/],v{XHT)JE0ϙnrx0)-!Qnpe2.yrFJc'6?Wh`s>h2 b$w꯰akRGot0*v>*KxU f9:Zsq~O?+qu.*z^`šr!l^UL?)J| FVb<(8@QhC$F?-~]rz`79koc6Q !b5'Qg ށ[Q[:J-Q*n ޜK꿆e~o&P%i>&GPLQE5 ؅2O~?TQ qGPCqr ZAwi;eP ~0g79lͷtRʦOjoy[oF>^ SonxHhi4YT@!ċt\x?Q>tC}1u6C~h=W:T` ڵ~k75,߯\@wTbU8B*ees=~9{!j!/V&@ 4*wjB1~?35yl[f4ɛ`@q[Xf!!LA7d~.q"Ó/<𜵙+4*$x!R~%Μ:a+L\-Q/8#1a%8<# yRa{'K|p}Ν~7ׇHA [?>Ȫ$(vLw(3mǤ\)=Kx4w4l#[t΃oZ)WxᅣvG5dAC8jbYp&ъ kW)$U,S49j ie:@Wvo"Hla%WnyDf@|ME  ؆ l(_V?I|,R?:LaEkʂSQ^H?G5i\cPõ 0?3B_ْUɻL乯$A0$7ڋte FwVqjDa@2 U8rUEY%_"AϳnkWfѶ~ˣD侓L= ~5:nJ̉_| _kO(FYؽU‡-jJ @! P+|˫X:/Ӌv%Ւقm&6?/SEb&jhѨiǾHq4~ݙV~P.svc$O"!b} t{9:=}2V懏ZDD7[sЭUnuFVG)GeıތY'#=b| n %~ǟ-;To O 6%]z4jvg(.pb<:a%oX?J}CLUC}ѨFY/X9.7RV0*Hv[O4,B8cMdRs 6mj+"f#{ޣ,Zi [\9wpMliTU3K**, O y:Zur]x/P~囔GLE=3K_t7~W<WC09T5є@l6y8Yz|8B^oW|Ζ6Hfw-&)ZiQEb;쁛`M%E 󂙹9oOlnw -XZ^bc[S)6tZiA9BQ ExSPagNlj'>ϟ0Zm97`Ô%G4[Ff[;4!8Z D?j(M(4eR$蘦)NITub4Q|_ pP`qTSK]kT!Dx(WWϧ^r:IQדWt^Y'hIR$T {P>60Imf AJri/)1 bqV!6f}}_K7Qޒ/ Ri5.خU&NUn3G1VF Vhm;^K~ _ M_7q=NZI)aaiڨ++_ eڽ2l-8C76&M"W9.( e ͝K7я Y6z~p_e8C~;U5h t7 pPmULP$HJC{/(BuN/8TUtN(׌ظUwp޹{?އazNT4,gi1p&}2]4nE;g'] 6XHtj e(GʲM<@2z "r!mw\쉠2۵W k?CHʆ̖wHNXpD]YKSH3TAl;40:L3$M6r#"þkQr;%V1;{nBw"08/T)@TXcP4_NMc.fWvul"O^lF)Jh4ы{}0Lk*f!LLS* I1oz@qƅ@1(([ݭr٭!f NQ:<Ls*8^UMHPMbHr>Eq=MH(rm1&4jffwOHJH,FvnIiHҪgÀJ2$M9x  nBoM"`"4!MR벆(ttW|ƩHM&)YRU=D > 1KY!:Ga{:FƵ.Qs 0=_TChnO!k-Tnm2Yg )rTHhVE5y/3pq!5ɸ"ΎFU׀ַJ~$"di㏓e5yԿ0Bލ|IEL^syԳ܏DiL}ɕrɞ|}~Q {ܸk@+EJL[F_̟5%$V2~lP6&iI:i*QZlre3D)v-yI{xp4=@>}&{{KeeucZПwϱGsAEbvv@5F+4КB۠<>C,yD HYAr<Q%ceF Z-t "iHZmfP~FL$UQP FhZ|幯D" ?cj5ЀߏT}U!Xp!,/ߠݨ3?]'gCk~ޫPUyn,:"}ɇ_[߁ wPw`k$Cb}h-M4$&I0\sՀPJIQtVjlFy쾊>_Pvf(y ^hIEX7eI'χc&̈Ez7x\]i! ?õYc*-q?tji  VE( _B+[淡]h6DeM4Ag:M-.@k[4R6b7%BB=[*+iN%2SPc¹R4Z+$%MR4%l,zmVFvA CMpW|jHUW1# Do WIڞfai P&9,1er &X 淂D9od$ JkRʈ`1%Zic{v|>c>z2R{s aK'IB IRpOAa-áP[_G)Ah,Dd=]i LJW~;/c,OyY d H!E) pxwmX?M4,C'5 564$lpj|iLa7nFnVWW]];.x׎OXySMh&S@k=Sb֚4M(˒nw,kNHɈ0;Wmy S$"SHYVG|mQ\%(׉S?y]YC`yy:{S<>tsNN8zfKl4M#"hhd0->I5t76X^YA)a[J'=@Wlm_J<*s, Rvbbē wt$SzVsYi53]F7\rme߁_=JÏp(ϟ-'նW@e…2|$-$~e ]6M&,^4n7W}DN^t *O:Y4>QQ 㵩}^q?3FF&c0fɱwEQsҵk_8s~| K}Z#s|vޕWHf  ӷ}ԒD)Is&d,kͫTiGJ]h4|ȕ^c[w}_wΖRʔEC)eђlHYf"&"A|(Q2Pi!4]MVO0h>ZeJ5qm+kw:3/Sf ._ӬPW\ gY c$ho.-~1ԠvNAf⛐:IS[^pzϲf+++\t` ZcNO D*iuYt72`p8ؗR) UÙٙɧgOvկ/<̌uSacf_^k8qkݗ]7,E@uUVcz\fDe3UQ1(X^KY[_yݗ_zr lW%+ ''=3> c ;fgbܒNʍٹɧxx~6zig}耉 G(6D%Gb>ȞD#7M:jlF cBgɲd0̍Ky׊Sg79€(6w%/R ?enPhS ;=9 `iClxԈLu450i&Mmv由 &GvØcŸU&_)ɵ>OOU3M|wWS,OsX! X_c=Cl Twjc9ჿH[)ƾ!>JE1fe0{sOΜ>(XƏ2>K@Bt60Mk>v5 K*ۨRPJ\-G†OQU]XIqSy [0w#E]d@m%|$'sPU # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include #include "pgmodelercliapp.h" #include "qtcompat/qtextstreamcompat.h" int main(int argc, char **argv) { QTextStream out(stdout); #ifdef DEMO_VERSION out << QtCompat::endl; out << QString("pgModeler ") << GlobalAttributes::PgModelerVersion << QT_TR_NOOP(" command line interface.") << QtCompat::endl; out << QT_TR_NOOP("PostgreSQL Database Modeler Project - pgmodeler.io") << QtCompat::endl; out << QT_TR_NOOP("Copyright 2006-2020 Raphael A. Silva ") << QtCompat::endl; out << QT_TR_NOOP("\n** CLI disabled in demonstration version! **") << QtCompat::endl << QtCompat::endl; #else try { #ifdef Q_OS_LINUX /* Workaround to make the CLI work on Linux systems without graphical interface. * Details at https://github.com/pgmodeler/pgmodeler/issues/1604 */ qputenv("QT_QPA_PLATFORM", "offscreen"); #endif PgModelerCliApp pgmodeler_cli(argc, argv); QTranslator translator(&pgmodeler_cli); //Tries to load the ui translation according to the system's locale translator.load(QLocale::system().name(), GlobalAttributes::getLanguagesDir()); //Installs the translator on the application pgmodeler_cli.installTranslator(&translator); //Executes the cli return pgmodeler_cli.exec(); } catch(Exception &e) { out << QtCompat::endl; out << e.getExceptionsText(); out << QString("** pgmodeler-cli aborted due to critical error(s). **") << QtCompat::endl << QtCompat::endl; return (e.getErrorCode()==ErrorCode::Custom ? -1 : enum_cast(e.getErrorCode())); } #endif } pgmodeler-0.9.4/apps/pgmodeler-cli/src/pgmodelercliapp.cpp000066400000000000000000002656111416010000600236310ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "pgmodelercliapp.h" #include "qtcompat/qtextstreamcompat.h" #include "qtcompat/splitbehaviorcompat.h" #include "utilsns.h" QTextStream PgModelerCliApp::out(stdout); const QRegExp PgModelerCliApp::PasswordRegExp=QRegExp("(password)(=)(.)*( )"); const QString PgModelerCliApp::PasswordPlaceholder("password=******"); const QString PgModelerCliApp::AllChildren("all"); const QString PgModelerCliApp::Input("--input"); const QString PgModelerCliApp::Output("--output"); const QString PgModelerCliApp::InputDb("--input-db"); const QString PgModelerCliApp::ExportToFile("--export-to-file"); const QString PgModelerCliApp::ExportToPng("--export-to-png"); const QString PgModelerCliApp::ExportToSvg("--export-to-svg"); const QString PgModelerCliApp::ExportToDbms("--export-to-dbms"); const QString PgModelerCliApp::ExportToDict("--export-to-dict"); const QString PgModelerCliApp::ImportDb("--import-db"); const QString PgModelerCliApp::NoIndex("--no-index"); const QString PgModelerCliApp::Split("--split"); const QString PgModelerCliApp::Diff("--diff"); const QString PgModelerCliApp::DropDatabase("--drop-database"); const QString PgModelerCliApp::DropObjects("--drop-objects"); const QString PgModelerCliApp::PgSqlVer("--pgsql-ver"); const QString PgModelerCliApp::Help("--help"); const QString PgModelerCliApp::ShowGrid("--show-grid"); const QString PgModelerCliApp::ShowDelimiters("--show-delimiters"); const QString PgModelerCliApp::PageByPage("--page-by-page"); const QString PgModelerCliApp::IgnoreDuplicates("--ignore-duplicates"); const QString PgModelerCliApp::IgnoreErrorCodes("--ignore-error-codes"); const QString PgModelerCliApp::ConnAlias("--conn-alias"); const QString PgModelerCliApp::Host("--host"); const QString PgModelerCliApp::Port("--port"); const QString PgModelerCliApp::User("--user"); const QString PgModelerCliApp::Passwd("--passwd"); const QString PgModelerCliApp::InitialDb("--initial-db"); const QString PgModelerCliApp::Silent("--silent"); const QString PgModelerCliApp::ListConns("--list-conns"); const QString PgModelerCliApp::Simulate("--simulate"); const QString PgModelerCliApp::FixModel("--fix-model"); const QString PgModelerCliApp::FixTries("--fix-tries"); const QString PgModelerCliApp::ZoomFactor("--zoom"); const QString PgModelerCliApp::UseTmpNames("--use-tmp-names"); const QString PgModelerCliApp::DbmMimeType("--dbm-mime-type"); const QString PgModelerCliApp::Install("install"); const QString PgModelerCliApp::Uninstall("uninstall"); const QString PgModelerCliApp::SystemWide("--system-wide"); const QString PgModelerCliApp::IgnoreImportErrors("--ignore-errors"); const QString PgModelerCliApp::ImportSystemObjs("--import-sys-objs"); const QString PgModelerCliApp::ImportExtensionObjs("--import-ext-objs"); const QString PgModelerCliApp::DebugMode("--debug-mode"); const QString PgModelerCliApp::FilterObjects("--filter-objects"); const QString PgModelerCliApp::MatchByName("--match-by-name"); const QString PgModelerCliApp::ForceChildren("--force-children"); const QString PgModelerCliApp::OnlyMatching("--only-matching"); const QString PgModelerCliApp::PartialDiff("--partial"); const QString PgModelerCliApp::Force("--force"); const QString PgModelerCliApp::StartDate("--start-date"); const QString PgModelerCliApp::EndDate("--end-date"); const QString PgModelerCliApp::CompareTo("--compare-to"); const QString PgModelerCliApp::SaveDiff("--save"); const QString PgModelerCliApp::ApplyDiff("--apply"); const QString PgModelerCliApp::NoDiffPreview("--no-preview"); const QString PgModelerCliApp::DropClusterObjs("--drop-cluster-objs"); const QString PgModelerCliApp::RevokePermissions("--revoke-perms"); const QString PgModelerCliApp::DropMissingObjs("--drop-missing"); const QString PgModelerCliApp::ForceDropColsConstrs("--force-drop-cols"); const QString PgModelerCliApp::RenameDb("--rename-db"); const QString PgModelerCliApp::NoSequenceReuse("--no-sequence-reuse"); const QString PgModelerCliApp::NoCascadeDrop("--no-cascade"); const QString PgModelerCliApp::ForceRecreateObjs("--force-recreate-objs"); const QString PgModelerCliApp::OnlyUnmodifiable("--only-unmodifiable"); const QString PgModelerCliApp::CreateConfigs("--create-configs"); const QString PgModelerCliApp::MissingOnly("--missing-only"); const QString PgModelerCliApp::TagExpr("<%1"); const QString PgModelerCliApp::EndTagExpr(" PgModelerCliApp::long_opts = { { Input, true }, { Output, true }, { InputDb, true }, { ExportToFile, false }, { ExportToPng, false }, { ExportToSvg, false }, { ExportToDbms, false }, { ImportDb, false }, { Diff, false }, { DropDatabase, false }, { DropObjects, false }, { PgSqlVer, true }, { Help, false }, { ShowGrid, false }, { ShowDelimiters, false }, { PageByPage, false }, { IgnoreDuplicates, false }, { IgnoreErrorCodes, true }, { ConnAlias, true }, { Host, true }, { Port, true }, { User, true }, { Passwd, true }, { InitialDb, true }, { ListConns, false }, { Simulate, false }, { FixModel, false }, { FixTries, true }, { ZoomFactor, true }, { UseTmpNames, false }, { DbmMimeType, true }, { IgnoreImportErrors, false }, { ImportSystemObjs, false }, { ImportExtensionObjs, false }, { FilterObjects, true }, { ForceChildren, true }, { OnlyMatching, false }, { MatchByName, false }, { DebugMode, false }, { PartialDiff, false }, { StartDate, true }, { EndDate, true }, { CompareTo, true }, { SaveDiff, false }, { ApplyDiff, false }, { NoDiffPreview, false }, { DropClusterObjs, false }, { RevokePermissions, false }, { DropMissingObjs, false }, { ForceDropColsConstrs, false }, { RenameDb, false }, { NoSequenceReuse, false }, { NoCascadeDrop, false }, { ForceRecreateObjs, false }, { OnlyUnmodifiable, false }, { ExportToDict, false }, { NoIndex, false }, { Split, false }, { SystemWide, false }, { CreateConfigs, false }, { Force, false }, { MissingOnly, false } }; map PgModelerCliApp::accepted_opts = { {{ Attributes::Connection }, { ConnAlias, Host, Port, User, Passwd, InitialDb }}, {{ ExportToFile }, { Input, Output, PgSqlVer, Split }}, {{ ExportToPng }, { Input, Output, ShowGrid, ShowDelimiters, PageByPage, ZoomFactor }}, {{ ExportToSvg }, { Input, Output, ShowGrid, ShowDelimiters }}, {{ ExportToDict }, { Input, Output, Split, NoIndex }}, {{ ExportToDbms }, { Input, PgSqlVer, IgnoreDuplicates, IgnoreErrorCodes, DropDatabase, DropObjects, Simulate, UseTmpNames }}, {{ ImportDb }, { InputDb, Output, IgnoreImportErrors, ImportSystemObjs, ImportExtensionObjs, FilterObjects, OnlyMatching, MatchByName, ForceChildren, DebugMode, ConnAlias, Host, Port, User, Passwd, InitialDb }}, {{ Diff }, { Input, PgSqlVer, IgnoreDuplicates, IgnoreErrorCodes, CompareTo, PartialDiff, Force, StartDate, EndDate, SaveDiff, ApplyDiff, NoDiffPreview, DropClusterObjs, RevokePermissions, DropMissingObjs, ForceDropColsConstrs, RenameDb, NoCascadeDrop, NoSequenceReuse, ForceRecreateObjs, OnlyUnmodifiable }}, {{ DbmMimeType }, { SystemWide, Force }}, {{ FixModel }, { Input, Output, FixTries }}, {{ ListConns }, {}}, {{ CreateConfigs }, {MissingOnly, Force}} }; PgModelerCliApp::PgModelerCliApp(int argc, char **argv) : Application(argc, argv) { try { QString op, value, orig_op; bool accepts_val=false; attribs_map opts; QStringList args = arguments(); model=nullptr; scene=nullptr; xmlparser=nullptr; zoom=1; export_hlp = nullptr; import_hlp = nullptr; diff_hlp = nullptr; conn_conf = nullptr; rel_conf = nullptr; general_conf = nullptr; // We extract the options values only if the help option is not present if(args.size() > 1 && !args.contains(Help) && !args.contains(short_opts[Help])) { for(int i=1; i < argc; i++) { op = orig_op = argv[i]; //If the retrieved option starts with - it will be treated as a command option if(op[0]=='-') { value.clear(); if(i < argc-1 && argv[i+1][0]!='-') { //If the next option does not starts with '-', is considered a value value=argv[++i]; } //Raises an error if the option is not recognized if(!isOptionRecognized(op, accepts_val)) throw Exception(tr("Unrecognized option `%1'.").arg(orig_op), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); //Raises an error if the value is empty and the option accepts a value if(accepts_val && value.isEmpty()) throw Exception(tr("Value not specified for option `%1'.").arg(orig_op), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); else if(!accepts_val && !value.isEmpty()) throw Exception(tr("Option `%1' does not accept values.").arg(orig_op), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); /* If we find a filter object parameter we append its parameter index so * its value is not replaced by the next filter parameter found */ if(op == FilterObjects) opts[QString("%1%2").arg(op).arg(i)] = value; opts[op] = value; } } } //Validates and executes the options parseOptions(opts); if(!parsed_opts.empty()) { model=new DatabaseModel; xmlparser=model->getXMLParser(); silent_mode=(parsed_opts.count(Silent)); //If the export is to png or svg loads additional configurations if(parsed_opts.count(ExportToPng) || parsed_opts.count(ExportToSvg) || parsed_opts.count(ImportDb)) { connect(model, SIGNAL(s_objectAdded(BaseObject *)), this, SLOT(handleObjectAddition(BaseObject *))); connect(model, SIGNAL(s_objectRemoved(BaseObject *)), this, SLOT(handleObjectRemoval(BaseObject *))); //Creates a scene to scene=new ObjectsScene; scene->setParent(this); scene->setSceneRect(QRectF(0,0,2000,2000)); //Load the general configuration including grid and delimiter options GeneralConfigWidget conf_wgt; conf_wgt.loadConfiguration(); //Load the objects styles BaseObjectView::loadObjectsStyle(); } if(parsed_opts.count(ExportToDbms) || parsed_opts.count(ImportDb) || parsed_opts.count(Diff)) { configureConnection(false); //Replacing the initial db parameter for the input database when reverse engineering if((parsed_opts.count(ImportDb) || parsed_opts.count(Diff)) && !parsed_opts[InputDb].isEmpty()) connection.setConnectionParam(Connection::ParamDbName, parsed_opts[InputDb]); } if(parsed_opts.count(Diff)) { configureConnection(true); if(!extra_connection.isConfigured()) extra_connection = connection; extra_connection.setConnectionParam(Connection::ParamDbName, parsed_opts[CompareTo]); } if(!silent_mode && export_hlp && import_hlp && diff_hlp) { connect(export_hlp, SIGNAL(s_progressUpdated(int,QString)), this, SLOT(updateProgress(int,QString))); connect(export_hlp, SIGNAL(s_errorIgnored(QString,QString,QString)), this, SLOT(printIgnoredError(QString,QString,QString))); connect(import_hlp, SIGNAL(s_progressUpdated(int,QString,ObjectType)), this, SLOT(updateProgress(int,QString))); connect(diff_hlp, SIGNAL(s_progressUpdated(int,QString,ObjectType)), this, SLOT(updateProgress(int,QString))); } } } catch(Exception &e) { throw e; } } PgModelerCliApp::~PgModelerCliApp() { if(scene) delete scene; delete model; if(export_hlp) delete export_hlp; if(import_hlp) delete import_hlp; if(diff_hlp) delete diff_hlp; if(conn_conf) delete conn_conf; if(rel_conf) delete rel_conf; if(general_conf) delete general_conf; } void PgModelerCliApp::printText(const QString &txt) { out << txt << QtCompat::endl; } void PgModelerCliApp::printMessage(const QString &txt) { if(!silent_mode) printText(txt); } void PgModelerCliApp::configureConnection(bool extra_conn) { QString chr = (extra_conn ? "1" : ""); Connection *conn = (extra_conn ? &extra_connection : &connection); //Getting the connection using its alias if(parsed_opts.count(ConnAlias + chr)) { if(!connections.count(parsed_opts[ConnAlias + chr])) throw Exception(tr("Connection aliased as '%1' was not found in the configuration file.").arg(parsed_opts[ConnAlias + chr]), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); //Make a copy of the named connection *conn = (*connections[parsed_opts[ConnAlias + chr]]); } else { conn->setConnectionParam(Connection::ParamServerFqdn, parsed_opts[Host + chr]); conn->setConnectionParam(Connection::ParamUser, parsed_opts[User + chr]); conn->setConnectionParam(Connection::ParamPort, parsed_opts[Port + chr]); conn->setConnectionParam(Connection::ParamPassword, parsed_opts[Passwd + chr]); conn->setConnectionParam(Connection::ParamDbName, parsed_opts[InitialDb + chr]); } } bool PgModelerCliApp::isOptionRecognized(QString &op, bool &accepts_val) { bool found=false, append_chr = false; if(op.endsWith('1')) { op.chop(1); append_chr = true; } for(auto &itr : short_opts) { found=(op==itr.first || op==itr.second); accepts_val=(found && long_opts[itr.first]); if(found) { op = itr.first; break; } } if(append_chr) op += '1'; return found; } void PgModelerCliApp::showVersionInfo() { printMessage(); printMessage(tr("pgModeler command line interface.") ); printMessage(tr("Version ") + GlobalAttributes::PgModelerVersion + QString(" - %1 Qt %2").arg(GlobalAttributes::PgModelerBuildNumber).arg(QT_VERSION_STR)); printMessage(tr("PostgreSQL Database Modeler Project - pgmodeler.io") ); printMessage(tr("Copyright 2006-%1 Raphael Araújo e Silva ").arg(QDate::currentDate().year())); printMessage(); } void PgModelerCliApp::showMenu() { showVersionInfo(); printText(tr("Usage: pgmodeler-cli [OPTIONS]")); printText(tr("This CLI tool provides several operations over models and databases without the need to perform them\nin pgModeler's graphical interface. All available options are described below.")); printText(); printText(tr("Operation mode options: ")); printText(tr(" %1, %2\t\t Export the input model to sql script file(s).").arg(short_opts[ExportToFile]).arg(ExportToFile)); printText(tr(" %1, %2\t\t Export the input model to a png image.").arg(short_opts[ExportToPng]).arg(ExportToPng) ); printText(tr(" %1, %2\t\t Export the input model to a svg file.").arg(short_opts[ExportToSvg]).arg(ExportToSvg) ); printText(tr(" %1, %2\t\t Export the input model to a data directory in HTML format.").arg(short_opts[ExportToDict]).arg(ExportToDict)); printText(tr(" %1, %2\t\t Export the input model directly to a PostgreSQL server.").arg(short_opts[ExportToDbms]).arg(ExportToDbms)); printText(tr(" %1, %2\t\t List available connections in file %3.").arg(short_opts[ListConns]).arg(ListConns).arg(GlobalAttributes::ConnectionsConf + GlobalAttributes::ConfigurationExt)); printText(tr(" %1, %2\t\t Import a database to an output file.").arg(short_opts[ImportDb]).arg(ImportDb)); printText(tr(" %1, %2\t\t\t Compares a model and a database or two databases generating the SQL script to sync the latter in relation to the first.").arg(short_opts[Diff]).arg(Diff)); printText(tr(" %1, %2\t\t Try to fix the structure of the input model file in order to make it loadable again.").arg(short_opts[FixModel]).arg(FixModel)); printText(tr(" %1, %2\t\t Create the pgModeler's configuration folder and files in the user's local storage.").arg(short_opts[CreateConfigs]).arg(CreateConfigs)); #ifndef Q_OS_MAC printText(tr(" %1, %2 [ACTION]\t Handles the file association to .dbm files. The ACTION can be [%3 | %4].").arg(short_opts[DbmMimeType]).arg(DbmMimeType).arg(Install).arg(Uninstall)); #endif printText(tr(" %1, %2\t\t\t Show this help menu.").arg(short_opts[Help]).arg(Help)); printText(); printText(tr("General options: ")); printText(tr(" %1, %2 [FILE]\t\t Input model file (.dbm). This is mandatory for export and fix operations.").arg(short_opts[Input]).arg(Input)); printText(tr(" %1, %2 [DBNAME]\t Input database name. This is mandatory for import operation.").arg(short_opts[InputDb]).arg(InputDb)); printText(tr(" %1, %2 [FILE|DIRECTORY] Output file or directory. This is mandatory for fixing model or exporting to file, png or svg.").arg(short_opts[Output]).arg(Output)); printText(tr(" %1, %2\t\t Force the PostgreSQL syntax to the specified version when generating SQL code. The version string must be in form major.minor.").arg(short_opts[PgSqlVer]).arg(PgSqlVer)); printText(tr(" %1, %2\t\t\t Silent execution. Only critical messages and errors are shown during process.").arg(short_opts[Silent]).arg(Silent)); printText(); printText(tr("SQL file export options: ")); printText(tr(" %1, %2\t\t\t The SQL file is generated per object. The files will be named in such a way to reflect the correct creation order of the objects.").arg(short_opts[Split]).arg(Split)); printText(); printText(tr("PNG and SVG export options: ")); printText(tr(" %1, %2\t\t Draws the grid in the exported image.").arg(short_opts[ShowGrid]).arg(ShowGrid)); printText(tr(" %1, %2\t Draws the page delimiters in the exported image.").arg(short_opts[ShowDelimiters]).arg(ShowDelimiters)); printText(tr(" %1, %2\t\t Each page will be exported in a separated png image. (Only for PNG images)").arg(short_opts[PageByPage]).arg(PageByPage)); printText(tr(" %1, %2 [FACTOR]\t\t Applies a zoom (in percent) before export to png image. Accepted zoom interval: %3-%4 (Only for PNG images)").arg(short_opts[ZoomFactor]).arg(ZoomFactor).arg(ModelWidget::MinimumZoom*100).arg(ModelWidget::MaximumZoom*100)); printText(); printText(tr("Data dictionary export options: ")); printText(tr(" %1, %2\t\t\t The data dictionaries are generated in separated files inside the selected output directory.").arg(short_opts[Split]).arg(Split)); printText(tr(" %1, %2\t\t Avoids the generation of the index that is used to help navigating through the data dictionary.").arg(short_opts[NoIndex]).arg(NoIndex)); printText(); printText(tr("Connection options: ")); printText(tr(" %1, %2 [ALIAS]\t Connection configuration alias to be used.").arg(short_opts[ConnAlias]).arg(ConnAlias)); printText(tr(" %1, %2 [HOST]\t\t PostgreSQL host in which a task will operate.").arg(short_opts[Host]).arg(Host)); printText(tr(" %1, %2 [PORT]\t\t PostgreSQL host listening port.").arg(short_opts[Port]).arg(Port)); printText(tr(" %1, %2 [USER]\t\t PostgreSQL username.").arg(short_opts[User]).arg(User)); printText(tr(" %1, %2 [PASSWORD]\t PostgreSQL user password.").arg(short_opts[Passwd]).arg(Passwd)); printText(tr(" %1, %2 [DBNAME]\t Connection's initial database.").arg(short_opts[InitialDb]).arg(InitialDb)); printText(); printText(tr("DBMS export options: ")); printText(tr(" %1, %2\t Ignores errors related to duplicated objects that eventually exist in the server.").arg(short_opts[IgnoreDuplicates]).arg(IgnoreDuplicates)); printText(tr(" %1, %2 [CODES] Ignores additional errors by their codes. A comma-separated list of alphanumeric codes should be provided.").arg(short_opts[IgnoreErrorCodes]).arg(IgnoreErrorCodes)); printText(tr(" %1, %2\t\t Drop the database before execute a export process.").arg(short_opts[DropDatabase]).arg(DropDatabase)); printText(tr(" %1, %2\t\t Runs the DROP commands attached to SQL-enabled objects.").arg(short_opts[DropObjects]).arg(DropObjects)); printText(tr(" %1, %2\t\t Simulates an export process by executing all steps but undoing any modification in the end.").arg(short_opts[Simulate]).arg(Simulate)); printText(tr(" %1, %2\t\t Generates temporary names for database, roles and tablespaces when in simulation mode.").arg(short_opts[UseTmpNames]).arg(UseTmpNames)); printText(); printText(tr("Database import options: ")); printText(tr(" %1, %2\t\t Ignore all errors and try to create as many as possible objects.").arg(short_opts[IgnoreImportErrors]).arg(IgnoreImportErrors)); printText(tr(" %1, %2\t Import system built-in objects. This option causes the model bloating due to the importing of unneeded objects.").arg(short_opts[ImportSystemObjs]).arg(ImportSystemObjs)); printText(tr(" %1, %2\t Import extension objects. This option causes the model bloating due to the importing of unneeded objects.").arg(short_opts[ImportExtensionObjs]).arg(ImportExtensionObjs)); printText(tr(" %1, %2 [FILTER] Causes the import process to import only those objects matching the filter(s). The FILTER should be in the form type:pattern:mode.").arg(short_opts[FilterObjects]).arg(FilterObjects)); printText(tr(" %1, %2\t\t Causes only objects matching the provided filter(s) to be imported. Those not matching filter(s) are discarded.").arg(short_opts[OnlyMatching]).arg(OnlyMatching)); printText(tr(" %1, %2\t\t Causes the objects matching to be performed over their names instead of their signature ([schema].[name]).").arg(short_opts[MatchByName]).arg(MatchByName)); printText(tr(" %1, %2 [OBJECTS] Forces the importing of children objects related to tables/views/foreign tables matched by the filter(s). The OBJECTS is a comma separated list types.").arg(short_opts[ForceChildren]).arg(ForceChildren)); printText(tr(" %1, %2\t\t Run import in debug mode printing all queries executed in the server.").arg(short_opts[DebugMode]).arg(DebugMode)); printText(); printText(tr("Diff options: ")); printText(tr(" %1, %2 [DBNAME]\t The database used in the comparison. All the SQL code generated is applied to it.").arg(short_opts[CompareTo]).arg(CompareTo)); printText(tr(" %1, %2\t\t Toggles the partial diff operation. A set of objects filters should be provided using the import option %3.").arg(short_opts[PartialDiff]).arg(PartialDiff).arg(FilterObjects)); printText(tr(" %1, %2\t\t\t Forces a full diff if the provided filters were not able to retrieve objects for a partial diff operation.").arg(short_opts[Force]).arg(Force)); printText(tr(" %1, %2\t\t Matches all database model objects in which modification date starts in the specified date. (Only for partial diff)").arg(short_opts[StartDate]).arg(StartDate)); printText(tr(" %1, %2\t\t Matches all database model objects in which modification date ends in the specified date. (Only for partial diff)").arg(short_opts[EndDate]).arg(EndDate)); printText(tr(" %1, %2\t\t\t Save the generated diff code to output file.").arg(short_opts[SaveDiff]).arg(SaveDiff)); printText(tr(" %1, %2\t\t\t Apply the generated diff code on the database server.").arg(short_opts[ApplyDiff]).arg(ApplyDiff)); printText(tr(" %1, %2\t\t Don't preview the generated diff code when applying it to the server.").arg(short_opts[NoDiffPreview]).arg(NoDiffPreview)); printText(tr(" %1, %2\t Drop cluster level objects like roles and tablespaces.").arg(short_opts[DropClusterObjs]).arg(DropClusterObjs)); printText(tr(" %1, %2\t\t Revoke permissions already set on the database. New permissions configured in the input model are still applied.").arg(short_opts[RevokePermissions]).arg(RevokePermissions)); printText(tr(" %1, %2\t\t Drop missing objects. Generates DROP commands for objects that are present in the input model but not in the compared database.").arg(short_opts[DropMissingObjs]).arg(DropMissingObjs)); printText(tr(" %1, %2\t Force the drop of missing columns and constraints. Causes only columns and constraints to be dropped, other missing objects aren't removed.").arg(short_opts[ForceDropColsConstrs]).arg(ForceDropColsConstrs)); printText(tr(" %1, %2\t\t Rename the destination database when the names of the involved databases are different.").arg(short_opts[RenameDb]).arg(RenameDb)); printText(tr(" %1, %2\t\t Don't drop objects in cascade mode.").arg(short_opts[NoCascadeDrop]).arg(NoCascadeDrop)); printText(tr(" %1, %2\t Don't reuse sequences on serial columns. Drop the old sequence assigned to a serial column and creates a new one.").arg(short_opts[NoSequenceReuse]).arg(NoSequenceReuse)); printText(tr(" %1, %2\t Force the recreating of objects. Instead of an ALTER command a DROP and CREATE commands are used to create a new version of the objects.").arg(short_opts[ForceRecreateObjs]).arg(ForceRecreateObjs)); printText(tr(" %1, %2\t Recreate only the unmodifiable objects. These objects are the ones which can't be changed via ALTER command.").arg(short_opts[OnlyUnmodifiable]).arg(OnlyUnmodifiable)); printText(); printText(tr("Model fix options: ") ); printText(tr(" %1, %2 [NUMBER]\t Model fix tries. When reaching the maximum count the invalid objects will be discarded.").arg(short_opts[FixTries]).arg(FixTries)); printText(); #ifndef Q_OS_MAC printText(tr("File association options: ")); printText(tr(" %1, %2\t\t The file association to .dbm files will be applied in a system wide level instead of to the current user.").arg(short_opts[SystemWide]).arg(SystemWide)); printText(tr(" %1, %2 \t\t\t Forces the mime type install or uninstall. ").arg(short_opts[Force]).arg(Force)); printText(); #endif printText(tr("Config files creation options: ")); printText(tr(" %1, %2 \t\t Copy only missing configuration files to the user's local storage.").arg(short_opts[MissingOnly]).arg(MissingOnly)); printText(tr(" %1, %2 \t\t\t Forces the recreation of all configuration files. This option implies the backup of the current settings.").arg(short_opts[Force]).arg(Force)); printText(); printText(); printText(tr("** The FILTER value in %1 option has the form type:pattern:mode. ").arg(FilterObjects)); printText(tr(" * The `type' is the type of object to be filtered and accepts the following values (invalid types ignored): ")); QStringList list; QString child_list; for(auto &type : BaseObject::getChildObjectTypes(ObjectType::Table)) { if(type == ObjectType::Column) continue; list.append(BaseObject::getSchemaName(type)); } list.sort(); child_list = list.join(", "); QStringList fmt_types, lines, type_list = Catalog::getFilterableObjectNames(); int i = 0; for(auto &type : type_list) { fmt_types.append(type); i++; if(i % 8 == 0 || i == type_list.size() - 1) { lines.append(QString(" > ") + fmt_types.join(", ")); fmt_types.clear(); } } printText(lines.join('\n')); printText(); printText(tr(" * The `pattern' is the text pattern which is matched against the objects names.")); printText(); printText(tr(" * The `mode' is the way the pattern is matched. This one accepts two values: ")); printText(tr(" > `%1' causes the pattern to be used as a wildcard string while matching objects names.").arg(UtilsNs::FilterWildcard)); printText(tr(" > `%1' causes the pattern to be treated as a POSIX regular expression while matching objects names.").arg(UtilsNs::FilterRegExp)); printText(); printText(tr(" * The option %1 has effect only when used with %2 and will avoid discarding children of matched tables.").arg(ForceChildren).arg(OnlyMatching)); printText(tr(" Other tables eventually imported which are dependencies of the matched objects will have their children discarded.")); printText(tr(" The comma separated list of table children objects accepts the values:")); printText(tr(" > %1").arg(child_list) ); printText(tr(" > Use the special keyword `%1' to force all children objects.").arg(AllChildren) ); printText(); printText(tr(" * NOTES: all comparisons during filtering process are case insensitive.")); printText(tr(" Using the filtering options may cause the importing of additional objects due to the automatic dependency resolution.")); printText(); printText(tr("** The diff process allows the usage all options related to the import operation.")); printText(tr(" It also accepts the following export operation options: `%1', `%2'").arg(IgnoreDuplicates).arg(IgnoreErrorCodes)); printText(); printText(tr("** The partial diff operation will always force the options %1 and %2 = %3 for more reliable results.").arg(OnlyMatching).arg(ForceChildren).arg(AllChildren)); printText(tr(" * The options %1 and %2 accepts the ISO8601 date/time format: yyyy-MM-dd hh:mm:ss").arg(StartDate).arg(EndDate)); printText(); printText(tr("** When running the diff using two databases (%1 and %2) there's the option to specify two separated connections/aliases.").arg(InputDb).arg(CompareTo)); printText(tr(" If only one connection is set then it will be used to import the input database as well to retrieve the database used in the comparison.")); printText(tr(" A second connection can be specified by appending a 1 to any connection configuration parameter listed above.")); printText(tr(" This causes the connection to be associated to %1 exclusively.").arg(CompareTo)); printText(); } void PgModelerCliApp::listConnections() { map::iterator itr=connections.begin(); if(connections.empty()) printText(tr("There are no connections configured.")); else { unsigned id=0; printText(tr("Available connections (alias : connection string)")); while(itr != connections.end()) { printText(QString("[") + QString::number(id++) + QString("] ") + itr->first + QString(" : ") + itr->second->getConnectionString().replace(PasswordRegExp, PasswordPlaceholder)); itr++; } printText(); } } void PgModelerCliApp::parseOptions(attribs_map &opts) { //Loading connections if(opts.count(ListConns) || opts.count(ExportToDbms) || opts.count(ImportDb) || opts.count(Diff)) { conn_conf = new ConnectionsConfigWidget; conn_conf->loadConfiguration(); conn_conf->getConnections(connections, false); } //Loading general and relationship settings when exporting to image formats else if(opts.count(ExportToPng) || opts.count(ExportToSvg)) { general_conf = new GeneralConfigWidget; rel_conf = new RelationshipConfigWidget; general_conf->loadConfiguration(); rel_conf->loadConfiguration(); } //Creating the export/import/diff helpers when one of the operations are specified if(opts.count(ExportToDbms) || opts.count(ExportToFile) || opts.count(ExportToPng) || opts.count(ExportToSvg) || opts.count(ExportToDict) || opts.count(ImportDb) || opts.count(Diff)) { export_hlp = new ModelExportHelper; import_hlp = new DatabaseImportHelper; diff_hlp = new ModelsDiffHelper; } if(opts.empty() || opts.count(Help)) showMenu(); else { QString curr_op_mode; int exp_mode_cnt = 0, other_modes_cnt = 0; bool fix_model = (opts.count(FixModel) > 0), upd_mime = (opts.count(DbmMimeType) > 0), import_db = (opts.count(ImportDb) > 0), diff = (opts.count(Diff) > 0), create_configs= (opts.count(CreateConfigs) > 0), list_conns = (opts.count(ListConns) > 0), export_dbms = (opts.count(ExportToDbms) > 0); for(auto &itr : accepted_opts) { if(itr.first == Attributes::Connection) continue; if(opts.count(itr.first)) { curr_op_mode = itr.first; if(itr.first == ExportToFile || itr.first == ExportToPng || itr.first == ExportToSvg || itr.first == ExportToDbms || itr.first == ExportToDict) exp_mode_cnt++; else other_modes_cnt++; } } if(opts.count(ZoomFactor)) zoom=opts[ZoomFactor].toDouble()/static_cast(100); if(other_modes_cnt==0 && exp_mode_cnt==0) throw Exception(tr("No operation mode was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if((exp_mode_cnt > 0 && (fix_model || upd_mime || import_db || diff || create_configs || list_conns)) || (exp_mode_cnt==0 && other_modes_cnt > 1)) throw Exception(tr("Multiple operation modes were specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!fix_model && !upd_mime && exp_mode_cnt > 1) throw Exception(tr("Multiple export mode was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!list_conns && !upd_mime && !import_db && !diff && !create_configs && !opts.count(Input)) throw Exception(tr("No input file was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(import_db && !opts.count(InputDb)) throw Exception(tr("No input database was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!opts.count(ExportToDbms) && !upd_mime && !list_conns && !diff && !create_configs && !opts.count(Output)) throw Exception(tr("No output file was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!opts.count(ExportToDbms) && !upd_mime && !import_db && !list_conns && !create_configs && opts.count(Input) && opts.count(Output) && QFileInfo(opts[Input]).absoluteFilePath() == QFileInfo(opts[Output]).absoluteFilePath()) throw Exception(tr("Input file must be different from output!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(ExportToDbms) && !opts.count(ConnAlias) && (!opts.count(Host) || !opts.count(User) || !opts.count(Passwd) || !opts.count(InitialDb)) ) throw Exception(tr("Incomplete connection information!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(ExportToPng) && (zoom < ModelWidget::MinimumZoom || zoom > ModelWidget::MaximumZoom)) throw Exception(tr("Invalid zoom specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(upd_mime && opts[DbmMimeType]!=Install && opts[DbmMimeType]!=Uninstall) throw Exception(tr("Invalid action specified to update mime option!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(create_configs && opts.count(Force) && opts.count(MissingOnly)) throw Exception(tr("The options `%1' and `%2' can't be used together when handling configuration files!").arg(Force).arg(MissingOnly), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(diff) { if(!opts.count(Input) && !opts.count(InputDb)) throw Exception(tr("No input file or database was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(Input) && opts.count(InputDb)) throw Exception(tr("The input file and database can't be used at the same time!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!opts.count(CompareTo)) throw Exception(tr("No database to be compared was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!opts.count(SaveDiff) && !opts.count(ApplyDiff)) throw Exception(tr("No diff action (save or apply) was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(SaveDiff) && opts[Output].isEmpty()) throw Exception(tr("No output file for the diff code was specified!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(PartialDiff) && !opts[Input].count() && (opts.count(StartDate) || opts.count(EndDate))) throw Exception(tr("Date filters are allowed only on partial diff using an input model!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(PartialDiff) && opts.count(FilterObjects) && (opts.count(StartDate) || opts.count(EndDate))) throw Exception(tr("Date filters and object filters can't be used together!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(opts.count(PartialDiff) && !opts.count(FilterObjects) && !opts.count(StartDate) && !opts.count(EndDate)) throw Exception(tr("Partial diff enabled but no object filter was provided!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); // For partial diff we force the --only-matching option and --force-children = all if(opts.count(PartialDiff)) { opts[ForceChildren] = AllChildren; opts[OnlyMatching] = ""; } // Validating the date formats in the provided start/end dates QDateTime *dates[2] = { &start_date, &end_date }; QStringList dt_params = { StartDate, EndDate }; for(int idx = 0; idx < 2; idx++) { if(opts.count(dt_params[idx])) { *dates[idx] = QDateTime::fromString(opts[dt_params[idx]], Qt::ISODate); if(!dates[idx]->isValid()) throw Exception(tr("Invalid date format `%1' in option `%2'!").arg(opts[dt_params[idx]]).arg(dt_params[idx]), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); } } /* If any of the dates are correctly parsed we need to force * the signature name matching, the forced filtering of all table children objects * and the only-matching option, so the objects can be correctly retrieved from * the destination database */ if(start_date.isValid() || end_date.isValid()) { parsed_opts.erase(MatchByName); parsed_opts[ForceChildren] = AllChildren; parsed_opts[OnlyMatching] = ""; } } //Converting input and output files to absolute paths to avoid that they are read/written on the app's working dir if(opts.count(Input)) opts[Input]=QFileInfo(opts[Input]).absoluteFilePath(); if(opts.count(Output)) opts[Output]=QFileInfo(opts[Output]).absoluteFilePath(); /* Special treatment for filter parameters: * Since it can be specified several filter parameter we need to join * everything in a single string list so it can be passed to the import helper correctly */ if(opts.count(FilterObjects)) { opts.erase(FilterObjects); for(auto &op : opts) { if(op.first.contains(FilterObjects)) obj_filters.append(op.second); } } /* Performing a final validation on the parsed options which consists * in check if all provided options are compatible with the operation mode selected */ QStringList acc_opts = accepted_opts[curr_op_mode]; QString long_opt; // Diff, import and export (to DBMS) share the same connection options if(diff || import_db || export_dbms) acc_opts.append(accepted_opts[Attributes::Connection]); // Diff also accepts all import parameters if(diff) acc_opts.append(accepted_opts[ImportDb]); for(auto &itr : opts) { long_opt = itr.first; if(long_opt == curr_op_mode || long_opt == Silent) continue; /* Before validate the option we need to remove any appended number to the option name * This happens for options related to objects filters and connections */ long_opt.remove(QRegExp("[0-9]+$")); if(!acc_opts.contains(long_opt)) throw Exception(tr("The option `%1' is not accepted by the operation mode `%2'!").arg(long_opt).arg(curr_op_mode), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); } parsed_opts = opts; } } int PgModelerCliApp::exec() { try { if(!parsed_opts.empty()) { showVersionInfo(); if(parsed_opts.count(ListConns)) listConnections(); else if(parsed_opts.count(FixModel)) fixModel(); else if(parsed_opts.count(DbmMimeType)) updateMimeType(); else if(parsed_opts.count(CreateConfigs)) createConfigurations(); else if(parsed_opts.count(ImportDb)) importDatabase(); else if(parsed_opts.count(Diff)) diffModelDatabase(); else exportModel(); } return 0; } catch(Exception &e) { throw e; } } void PgModelerCliApp::updateProgress(int progress, QString msg, ObjectType) { if(progress > 0) printMessage(QString("[%1%] ").arg(progress > 100 ? 100 : progress) + msg); else printMessage(msg); } void PgModelerCliApp::printIgnoredError(QString err_cod, QString err_msg, QString cmd) { printText(); printText(tr("** Error code `%1' found and ignored. Proceeding with export.").arg(err_cod)); printText(tr("** Command: %1").arg(cmd)); printText(err_msg); printText(); } void PgModelerCliApp::handleObjectAddition(BaseObject *object) { BaseGraphicObject *graph_obj=dynamic_cast(object); if(graph_obj) { ObjectType obj_type=graph_obj->getObjectType(); QGraphicsItem *item=nullptr; switch(obj_type) { case ObjectType::Table: item=new TableView(dynamic_cast(graph_obj)); break; case ObjectType::ForeignTable: item=new TableView(dynamic_cast(graph_obj)); break; case ObjectType::View: item=new GraphicalView(dynamic_cast(graph_obj)); break; case ObjectType::Relationship: case ObjectType::BaseRelationship: item=new RelationshipView(dynamic_cast(graph_obj)); break; case ObjectType::Schema: item=new SchemaView(dynamic_cast(graph_obj)); break; default: item=new StyledTextboxView(dynamic_cast(graph_obj)); break; } scene->addItem(item); if(BaseTable::isBaseTable(obj_type)) dynamic_cast(graph_obj->getSchema())->setModified(true); } } void PgModelerCliApp::handleObjectRemoval(BaseObject *object) { BaseGraphicObject *graph_obj=dynamic_cast(object); if(graph_obj) { scene->removeItem(dynamic_cast(graph_obj->getOverlyingObject())); //Updates the parent schema if the removed object were a table or view if(graph_obj->getSchema() && BaseTable::isBaseTable(graph_obj->getObjectType())) dynamic_cast(graph_obj->getSchema())->setModified(true); } } void PgModelerCliApp::extractObjectXML() { QString buf, lin, def_xml, end_tag, pgmodeler_ver; QTextStream ts; QRegExp regexp(QString("^(\\<\\?xml)(.)*(\\<%1)( )*").arg(Attributes::DbModel)), //[schema].[func_name](...OUT [type]...) func_signature=QRegExp(QString("(\")(.)+(\\.)(.)+(\\()(.)*(OUT )(.)+(\\))(\")")), //[,]OUT [schema].[type] out_param=QRegExp(QString("(,)?(OUT )([a-z]|[0-9]|(\\.)|(\\_)|(\\-)|( )|(\\[)|(\\])|("))+((\\()([0-9])+(\\)))?")); int start=-1, end=-1; bool open_tag=false, close_tag=false, is_rel=false, short_tag=false, end_extract_rel; printMessage(tr("Extracting objects' XML...")); buf.append(UtilsNs::loadFile(parsed_opts[Input])); // Extracting pgModeler version from input model QRegExp ver_expr(AttributeExpr.arg(Attributes::PgModelerVersion)); start = ver_expr.indexIn(buf); model_version = buf.mid(start, ver_expr.matchedLength()); model_version.remove(Attributes::PgModelerVersion); model_version.remove(QRegExp("(\\\"|\\=| )+")); if(!model_version.contains(QRegExp("(\\d\\.\\d\\.\\d)((\\-)(alpha|beta)(\\d))?"))) { printMessage(tr("** WARNING: Could't determine the pgModeler version in which the input model was created!")); printMessage(tr(" Some fix actions that depend on the model version will not be applied!")); model_version.clear(); } //Check if the file contains a valid header (for .dbm file) start=regexp.indexIn(buf); if(start < 0) throw Exception(tr("Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); else { //Extracting layers informations from the tag QRegExp dbm_regexp = QRegExp(TagExpr.arg(Attributes::DbModel)), db_end_regexp = QRegExp(EndTagExpr.arg(Attributes::Database)); int attr_start =-1, attr_end = -1, dbm_start = dbm_regexp.indexIn(buf); QString aux_buf = buf.mid(dbm_start, buf.indexOf(db_end_regexp) - dbm_start), layers, active_layers, attr_expr = QString("(%1)( )*(=)(\")"); QList act_layers_ids; //Layers names attr_start = aux_buf.indexOf(Attributes::Layers); attr_end = aux_buf.indexOf(Attributes::ActiveLayers); layers = aux_buf.mid(attr_start, attr_end - attr_start); layers.remove(QRegExp(attr_expr.arg(Attributes::Layers))); layers.remove('"'); model->setLayers(layers.trimmed().split(',', QtCompat::SkipEmptyParts)); //Active layers attr_start = attr_end; attr_end = aux_buf.indexOf('>', attr_start); active_layers = aux_buf.mid(attr_start, attr_end - attr_start); active_layers.remove(QRegExp(attr_expr.arg(Attributes::ActiveLayers))); active_layers.remove('"'); for(auto id : active_layers.trimmed().split(';', QtCompat::SkipEmptyParts)) act_layers_ids.push_back(id.toUInt()); model->setActiveLayers(act_layers_ids); //Remove the header entry from buffer buf.remove(start, regexp.matchedLength()+1); //Checking if the header ends on a role declaration QRegExp role_regexp = QRegExp(QString("(<%1)(.)*(<\\/%2>)").arg(Attributes::Role).arg(Attributes::Role)); end = buf.indexOf(role_regexp); // If we found role declarations we clear the header until there if(end >= 0) buf.remove(0, end); else // Instead, we clear the header until the starting of database declaration buf.remove(0, buf.indexOf(QString("<%1").arg(Attributes::Database))); buf.remove(QString("<\\%1>").arg(Attributes::DbModel)); ts.setString(&buf); //Extracts the objects xml line by line while(!ts.atEnd()) { lin=ts.readLine(); /* Special case for empty tags like , they will be converted to in order to be correctly extracted further. Currently only language has this behaviour, so additional object may be added in the future. */ if(lin.contains(QString("<%1").arg(BaseObject::getSchemaName(ObjectType::Language)))) { lin=lin.simplified(); if(lin.contains(QString("/>"))) lin.replace(QString("/>"), QString(">").arg(BaseObject::getSchemaName(ObjectType::Language))); } /* Special case for function signatures. In previous releases, the function's signature was wrongly including OUT parameters and according to docs they are not part of the signature, so it is needed to remove them if the current line contains a valid signature with parameters. */ else if(lin.contains(func_signature)) lin.remove(out_param); if(is_rel && (((short_tag && lin.contains(QString("/>"))) || (lin.contains(QString("[a-z]+")) && !containsRelAttributes(lin))))) open_tag=close_tag=true; else { //If the line contains an objects open tag if(lin.contains(QRegExp("^(((\n)|(\t))*(<))")) && !open_tag) { //Check the flag indicating an open tag open_tag=true; start=lin.indexOf('<'); end=lin.indexOf(' '); if(end < 0) end=lin.indexOf('>'); //Configures the end tag with the same word extracted from open tag end_tag=lin.mid(start, end-start+1).trimmed(); end_tag.replace(QString("<"),QString("')) end_tag+=QString(">"); /* Checking if the line start a relationship. Relationships are treated a little different because they can be empty or contain open and close tags */ is_rel=lin.contains(Attributes::Relationship); if(is_rel) { end_extract_rel=short_tag=false; while(!end_extract_rel && !ts.atEnd()) { def_xml+=lin + QString("\n"); lin=lin.trimmed(); //Checking if the current line is the end of a short-tag relationship if(!short_tag && !lin.startsWith('<') && lin.endsWith(QString("/>"))) short_tag=true; end_extract_rel=((!short_tag && lin.contains(end_tag)) || short_tag); if(!end_extract_rel) lin=ts.readLine(); } close_tag=true; } else close_tag=lin.contains(end_tag); } else if(open_tag && lin.contains(end_tag)) close_tag=true; } if(!is_rel && !lin.isEmpty()) def_xml+=lin + QString("\n"); else if(lin.isEmpty()) def_xml+=QString("\n"); //If the iteration reached the end of the object's definition if(open_tag && close_tag) { //Pushes the extracted definition to the list (only if not empty) if(def_xml!=QString("\n")) objs_xml.push_back(def_xml); def_xml.clear(); open_tag=close_tag=is_rel=false; } } } } void PgModelerCliApp::recreateObjects() { QStringList fail_objs, constr, list; QString xml_def, aux_def, start_tag = "<%1", end_tag = "", aux_tag, type_tag = " types={ ObjectType::Index, ObjectType::Trigger, ObjectType::Rule }; attribs_map attribs, fmt_ext_names; bool use_fail_obj=false; unsigned tries=0, max_tries=parsed_opts[FixTries].toUInt(); int start_pos=-1, end_pos=-1, len=0, obj_id = 0, obj_cnt = objs_xml.count(); printMessage(tr("Recreating objects...")); if(max_tries==0) max_tries=1; model->createSystemObjects(false); while(!objs_xml.isEmpty()) { //If there are failed objects and the flag is set if(use_fail_obj && !fail_objs.isEmpty()) { xml_def=fail_objs.front(); fail_objs.pop_front(); use_fail_obj=false; } else { xml_def=objs_xml.front(); objs_xml.pop_front(); fixObjectAttributes(xml_def); } /* Replacing the tags [restartParser(); xmlparser->loadXMLBuffer(xml_def); obj_type=BaseObject::getObjectType(xmlparser->getElementName()); xmlparser->getElementAttributes(attribs); if(obj_type==ObjectType::Database) model->configureDatabase(attribs); else { if(obj_type==ObjectType::Table) { //Before create a table extract it's foreign keys list=extractForeignKeys(xml_def); /* If fks were extracted insert them on the main constraints list * and restarts the XMLParser with the modified buffer */ if(!list.isEmpty()) { constr.append(list); xmlparser->restartParser(); xmlparser->loadXMLBuffer(xml_def); } } //Discarding fk relationships if(obj_type!=ObjectType::Relationship || (obj_type==ObjectType::Relationship && !xml_def.contains(QString("\"%1\"").arg(Attributes::RelationshipFk)))) { object=model->createObject(obj_type); if(object) { if(!dynamic_cast(object) && obj_type!=ObjectType::Relationship && obj_type!=ObjectType::BaseRelationship) model->addObject(object); printMessage(QString("[%1%] %2") .arg(static_cast((++obj_id/static_cast(obj_cnt)) * 100)) .arg(tr("Object recreated: `%1' (%2)").arg(object->getName(true), object->getTypeName()))); /* Special case for extensions: * Before pgModeler 0.9.4-alpha1 the types handled by extension (for example hstore, ltree, etc) were * registered in the PgSqlType as user-defined data type without their schemas names prepended. This * was causing lot of troubles importing databases in which extension data types were being used. The * solution was to adjust the extension type names in such a way to prepend schema names. So here we * store the schema-qualified extension name in a special map where the key is the name of the extension * without the schema name, this way search the tags [getObjectType() == ObjectType::Extension && dynamic_cast(object)->handlesType()) fmt_ext_names[object->getName()] = object->getName(true, true); } //For each sucessful created object the method will try to create a failed one use_fail_obj=(!fail_objs.isEmpty()); } /* Additional step to extract indexes/triggers/rules from within tables/views * and putting their xml on the list of object to be created */ if(BaseTable::isBaseTable(obj_type) && xml_def.contains(QRegExp("(<)(index|trigger|rule)"))) { for(ObjectType type : types) { do { //Checking where the object starts and ends aux_tag=start_tag.arg(BaseObject::getSchemaName(type)); start_pos=xml_def.indexOf(aux_tag); end_pos=(start_pos >=0 ? xml_def.indexOf(end_tag.arg(BaseObject::getSchemaName(type))) : -1); if(start_pos >=0 && end_pos >= 0) { //Extracts the xml code len=(end_pos - start_pos) + end_tag.arg(BaseObject::getSchemaName(type)).length() + 1; aux_def=xml_def.mid(start_pos, len); //Remove the code from original table's definition xml_def.remove(start_pos, len); //If the extract object doesn't contains the 'table=' attribute it'll be added. if(!aux_def.contains("table=")) { aux_def.replace(aux_tag, QString("%1 table=\"%2\"").arg(aux_tag).arg(object->getName(true))); aux_def=XmlParser::convertCharsToXMLEntities(aux_def); } objs_xml.push_back(aux_def); } } while(start_pos >= 0); } } } } catch(Exception &e) { if(obj_type!=ObjectType::Database) { fail_objs.push_back(xml_def); printText(tr("** WARNING: Failed to recreate an object!")); } else throw Exception(e.getErrorMessage(), e.getErrorCode(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } if(objs_xml.isEmpty() && (!fail_objs.isEmpty() || !constr.isEmpty())) { tries++; //If the maximum creation tries reaches the maximum value if(tries > max_tries) { //Outputs the code of the objects that wasn't created printText(); printText(tr("** Object(s) that couldn't fixed: ")); while(!fail_objs.isEmpty()) { printText(fail_objs.front()); fail_objs.pop_front(); } break; } else { printMessage(tr("** WARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2)").arg(tries).arg(max_tries)); model->validateRelationships(); objs_xml=fail_objs; objs_xml.append(constr); fail_objs.clear(); constr.clear(); } } } // Fixing the roles memberships. Role *role = nullptr, *mem_role = nullptr; bool member_fixed = false; for(auto &rl : member_roles) { role = model->getRole(rl.first); if(!role) { printMessage(tr("** WARNING: Could not find the role `%1'! Ignoring it...").arg(rl.first)); continue; } for(auto &name : rl.second) { mem_role = model->getRole(name); if(!mem_role) { printMessage(tr("** WARNING: Could not find the role `%1' of `%2`! Igorning it...").arg(name, rl.first)); continue; } role->addRole(Role::MemberRole, mem_role); member_fixed = true; } } if(member_fixed) { printMessage(tr("** WARNING: Roles memberships were fixed but their creation order is not guaranteed!")); printMessage(tr(" It may be necessary to run the fix tool again but now on the file `%1'.").arg(parsed_opts[Output])); } } void PgModelerCliApp::fixObjectAttributes(QString &obj_xml) { //Placing objects , , outside of
if(!obj_xml.startsWith(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Tablespace))) && obj_xml.startsWith(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Table)))) { int start_idx=-1, end_idx=-1, len=0; ObjectType obj_types[3]={ ObjectType::Rule, ObjectType::Trigger, ObjectType::Index }; QString curr_tag, curr_end_tag, def, tab_name, sch_name, name_attr=QString("name=\""), sch_name_attr=TagExpr.arg(BaseObject::getSchemaName(ObjectType::Schema)) + QString(" ") + name_attr; //Extracting the table's name start_idx=obj_xml.indexOf(name_attr); end_idx=obj_xml.indexOf("\"", start_idx + name_attr.size()); tab_name=obj_xml.mid(start_idx, end_idx - start_idx).remove(name_attr); //Extracting the table's schema name start_idx=obj_xml.indexOf(sch_name_attr); end_idx=obj_xml.indexOf('"', start_idx + sch_name_attr.size()); sch_name=obj_xml.mid(start_idx, end_idx - start_idx).remove(sch_name_attr); //Configuring the table=[name] attribute to be included on rule objects tab_name=QString("table=\"%1.%2\"").arg(sch_name).arg(tab_name); for(unsigned idx=0; idx < 3; idx++) { curr_tag=TagExpr.arg(BaseObject::getSchemaName(obj_types[idx])); curr_end_tag=EndTagExpr.arg(BaseObject::getSchemaName(obj_types[idx])) + QString(">"); start_idx=obj_xml.indexOf(curr_tag); while(start_idx >=0) { end_idx=obj_xml.indexOf(curr_end_tag); len=(end_idx - start_idx) + curr_end_tag.size(); def=obj_xml.mid(start_idx, len) + QString("\n\n"); obj_xml.remove(start_idx, len); //If the object is a rule include the table attribute if(def.startsWith(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Rule)))) { start_idx=def.indexOf('>'); def.replace(start_idx, 1, QString(" ") + tab_name + QString(">")); } start_idx=obj_xml.indexOf(curr_tag); if(!def.isEmpty()) //Puts the object's defintion to the list in order to be evaluated in the main process objs_xml.push_back(def); } } } //Remove recheck attribute from tags. if(obj_xml.contains(TagExpr.arg(Attributes::Element))) obj_xml.remove(QRegExp(AttributeExpr.arg(QString("recheck")))); //Remove values greater-op, less-op, sort-op or sort2-op from ref-type attribute from tags. if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Operator)))) { obj_xml.remove(QString("greater-op")); obj_xml.remove(QString("less-op")); obj_xml.remove(QString("sort-op")); obj_xml.remove(QString("sort2-op")); } //Replacing attribute owner by onwer-col for sequences if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Sequence)))) obj_xml.replace(QRegExp(QString("(%1)( )*(=)(\")").arg(Attributes::Owner)), QString("%1 = \"").arg(Attributes::OwnerColumn)); /* Remove sysid attribute from tags and storing the referenced roles (ref-roles) * for later re-assignment. */ if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Role)))) { obj_xml.remove(QRegExp(AttributeExpr.arg(QString("sysid")))); QRegExp ref_roles_expr = QRegExp(QString("(\\<%1)(.)+(%2)( )*(=)(\")(%3)(\")(.)+(\\/\\>)").arg(Attributes::Roles, Attributes::RoleType, Attributes::Refer)); int pos = ref_roles_expr.indexIn(obj_xml); if(pos >= 0) { QString buf = obj_xml.mid(pos, ref_roles_expr.matchedLength()), name_attr = QString("name=\""), role_name; int start_idx = 0, end_idx = 0; // Extracting the role name start_idx = obj_xml.indexOf(name_attr); end_idx = obj_xml.indexOf("\"", start_idx + name_attr.size()); role_name = obj_xml.mid(start_idx, end_idx - start_idx).remove(name_attr); // Removing the element obj_xml.remove(pos, ref_roles_expr.matchedLength()); // Retrieve the name of the ref-roles buf.remove(QRegExp("^(.)+(names=\")")); buf.remove(buf.indexOf("\""), buf.size()); /* Storing the association between the current role and the ref-roles * in a map for further processing */ for(auto &rl_name : buf.split(',', QtCompat::SkipEmptyParts)) member_roles[rl_name].append(role_name); } } //Replace tag by on tags. if(obj_xml.contains(TagExpr.arg(QString("usertype")))) { obj_xml.replace(TagExpr.arg(Attributes::Parameter), TagExpr.arg(Attributes::TypeAttribute)); obj_xml.replace(EndTagExpr.arg(Attributes::Parameter), EndTagExpr.arg(Attributes::TypeAttribute)); // Fixing the enumeration type labels if(!model_version.isEmpty() && model_version <= "0.9.4-beta1") { /* Until pgModeler 0.9.3, enum labels separators where commas. * In pgModeler 0.9.4, enum labels separators where UtilsNs::DataSeparator */ QString sep = (model_version == "0.9.4-beta1" ? UtilsNs::DataSeparator : ","), values, labels; QRegExp enum_start_expr("(" + TagExpr.arg(Attributes::EnumType) + ")( )*(values)( )*(=)( )*(\\\")"), enum_end_expr("(\\\")( )*(\\/>)"), enum_tag_expr("(" + TagExpr.arg(Attributes::EnumType) + ")(.)+(/>)"); int start = -1, end = -1; // Extracting the values of the tag start = enum_start_expr.indexIn(obj_xml) + enum_start_expr.matchedLength(); end = enum_end_expr.indexIn(obj_xml, start); values = obj_xml.mid(start, end - start); if(!values.isEmpty()) { // Converting each value extract into a separated tag for(auto &label : values.split(sep, QtCompat::SkipEmptyParts)) labels.append(QString("\t<%1 label=\"%2\"/>\n").arg(Attributes::EnumType, label)); obj_xml.replace(enum_tag_expr, labels); } } } if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Relationship)))) { //Remove auto-sufix, src-sufix, dst-sufix, col-indexes, constr-indexes, attrib-indexes from tags. obj_xml.remove(QRegExp(AttributeExpr.arg(QString("auto-sufix")))); obj_xml.remove(QRegExp(AttributeExpr.arg(QString("src-sufix")))); obj_xml.remove(QRegExp(AttributeExpr.arg(QString("dst-sufix")))); obj_xml.remove(QRegExp(AttributeExpr.arg(QString("col-indexes")))); obj_xml.remove(QRegExp(AttributeExpr.arg(QString("constr-indexes")))); obj_xml.remove(QRegExp(AttributeExpr.arg(QString("attrib-indexes")))); obj_xml.replace(QString("line-color"), Attributes::CustomColor); } //Renaming the tag to on indexes if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Index)))) { obj_xml.replace(TagExpr.arg(Attributes::Condition), TagExpr.arg(Attributes::Predicate)); obj_xml.replace(EndTagExpr.arg(Attributes::Condition), EndTagExpr.arg(Attributes::Predicate)); } //Renaming the attribute default to default-value on domain if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Domain)))) obj_xml.replace(Attributes::Default, Attributes::DefaultValue); //Renaming the tag to if(obj_xml.contains(TagExpr.arg(QString("grant")))) { obj_xml.replace(TagExpr.arg(QString("grant")), TagExpr.arg(BaseObject::getSchemaName(ObjectType::Permission))); obj_xml.replace(EndTagExpr.arg(QString("grant")), EndTagExpr.arg(BaseObject::getSchemaName(ObjectType::Permission))); } //Replace the constraint attribute and tag expression by constraint tag in . if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Domain))) && obj_xml.contains(TagExpr.arg(Attributes::Expression))) { int start_idx=-1, end_idx=-1; QRegExp regexp = QRegExp(AttributeExpr.arg(Attributes::Constraint)); QString constr_name; regexp.indexIn(obj_xml); constr_name = regexp.capturedTexts().at(0); constr_name.remove(QString("%1=\"").arg(Attributes::Constraint)); constr_name.remove(constr_name.length() - 1, 1); obj_xml.remove(QRegExp(AttributeExpr.arg(Attributes::Constraint))); start_idx = obj_xml.indexOf(TagExpr.arg(Attributes::Expression)); obj_xml.insert(start_idx, QString("\n\t\n\t\t").arg(constr_name)); end_idx = obj_xml.indexOf(EndTagExpr.arg(Attributes::Expression)); obj_xml.insert(end_idx + EndTagExpr.arg(Attributes::Expression).length() + 1, QString("\n\t\n")); } //Remove the deprecated attribute hide-ext-attribs from
and if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Table))) || obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::View)))) { obj_xml.replace(QRegExp(AttributeExpr.arg(Attributes::HideExtAttribs)), ""); } //Remove the usage of IN keyword in functions' signatures since it is the default if absent QRegExp regexp = QRegExp(AttributeExpr.arg(Attributes::Signature)); int sig_idx = regexp.indexIn(obj_xml), len = 0; QString signature, in_keyw = QString("IN "); while(sig_idx >= 0) { signature = obj_xml.mid(sig_idx, regexp.matchedLength()); len = signature.length(); if(!signature.contains(in_keyw)) { sig_idx = regexp.indexIn(obj_xml, sig_idx + len); continue; } signature.remove(in_keyw); obj_xml.remove(sig_idx, len); obj_xml.insert(sig_idx, signature); sig_idx = regexp.indexIn(obj_xml, sig_idx + len); } //Rename the attribute layer to layers if(obj_xml.contains(QRegExp("(layer)( )*(=)"))) obj_xml.replace("layer", Attributes::Layers); //Fix the references to op. classes and families if needed fixOpClassesFamiliesReferences(obj_xml); } void PgModelerCliApp::fixOpClassesFamiliesReferences(QString &obj_xml) { ObjectType ref_obj_type; if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Index))) || obj_xml.contains(QRegExp(QString("(%1)(.)+(type=)(\")(%2)(\")") .arg(TagExpr.arg(BaseObject::getSchemaName(ObjectType::Constraint))) .arg(Attributes::ExConstr)))) ref_obj_type=ObjectType::OpClass; else if(obj_xml.contains(TagExpr.arg(BaseObject::getSchemaName(ObjectType::OpClass)))) ref_obj_type=ObjectType::OpFamily; else return; QString ref_obj_name=BaseObject::getSchemaName(ref_obj_type); if(!obj_xml.contains(TagExpr.arg(ref_obj_name))) return; QString obj_name, aux_obj_name, signature=QString("%1 USING %2"); QRegExp sign_regexp=QRegExp(AttributeExpr.arg(QString("signature"))); QStringList index_types; int pos=0; obj_xml.replace(TagExpr.arg(ref_obj_name) + QString(" name="), TagExpr.arg(ref_obj_name) + QString(" signature=")); index_types = IndexingType::getTypes(); do { pos=sign_regexp.indexIn(obj_xml, pos); if(pos >= 0) { //Extracting the signature attribute obj_name=obj_xml.mid(pos, sign_regexp.matchedLength()); //Removing useless portions signature=" in order to retrive only the object's name obj_name.remove(QRegExp("(signature)( )*(=)")); obj_name.remove('"'); //Transforming xml entity for quote into the char obj_name.replace(XmlParser::CharQuot, QString("\"")); for(auto &idx_type : index_types) { //Building a name by appe aux_obj_name=signature.arg(obj_name).arg(idx_type); if(model->getObjectIndex(aux_obj_name, ref_obj_type) >= 0) { //Replacing the old signature with the corrected form aux_obj_name.replace(QString("\""), XmlParser::CharQuot); obj_xml.replace(pos, sign_regexp.matchedLength(), QString("signature=\"%1\"").arg(aux_obj_name)); break; } } pos+=sign_regexp.matchedLength(); } } while(pos >= 0); } void PgModelerCliApp::fixModel() { printMessage(tr("Starting model fixing...")); printMessage(tr("Loading input file: %1").arg(parsed_opts[Input])); printMessage(tr("Fixed model file: %1").arg(parsed_opts[Output])); extractObjectXML(); recreateObjects(); printMessage(tr("Updating relationships...")); model->updateTablesFKRelationships(); printMessage(tr("Saving fixed output model...")); model->saveModel(parsed_opts[Output], SchemaParser::XmlDefinition); printMessage(tr("Model successfully fixed!")); } void PgModelerCliApp::loadModel() { //Create the systems objects on model before loading it model->createSystemObjects(false); //Load the model file model->loadModel(parsed_opts[Input]); /* The scene object is created only when some options are used * so we need to check it if is not null to avoid segfaults */ if(scene) { scene->blockSignals(true); scene->addLayers(model->getLayers(), false); scene->setActiveLayers(model->getActiveLayers()); scene->setLayerColors(ObjectsScene::LayerNameColor, model->getLayerNameColors()); scene->setLayerColors(ObjectsScene::LayerRectColor, model->getLayerRectColors()); scene->setLayerNamesVisible(model->isLayerNamesVisible()); scene->setLayerRectsVisible(model->isLayerRectsVisible()); if(model->isLayerRectsVisible()) model->setObjectsModified({ ObjectType::Schema }); scene->blockSignals(false); } } void PgModelerCliApp::exportModel() { printMessage(tr("Starting model export...")); printMessage(tr("Loading input file: %1").arg(parsed_opts[Input])); loadModel(); //Export to PNG if(parsed_opts.count(ExportToPng)) { printMessage(tr("Export to PNG image: %1").arg(parsed_opts[Output])); export_hlp->exportToPNG(scene, parsed_opts[Output], zoom, parsed_opts.count(ShowGrid) > 0, parsed_opts.count(ShowDelimiters) > 0, parsed_opts.count(PageByPage) > 0); } //Export to SVG else if(parsed_opts.count(ExportToSvg)) { printMessage(tr("Export to SVG file: %1").arg(parsed_opts[Output])); export_hlp->exportToSVG(scene, parsed_opts[Output], parsed_opts.count(ShowGrid) > 0, parsed_opts.count(ShowDelimiters) > 0); } //Export to SQL file else if(parsed_opts.count(ExportToFile)) { printMessage(tr("Export to SQL script file: %1").arg(parsed_opts[Output])); export_hlp->exportToSQL(model, parsed_opts[Output], parsed_opts[PgSqlVer], parsed_opts.count(Split) > 0); } //Export data dictionary else if(parsed_opts.count(ExportToDict)) { printMessage(tr("Export to data dictionary: %1").arg(parsed_opts[Output])); export_hlp->exportToDataDict(model, parsed_opts[Output], parsed_opts.count(NoIndex) == 0, parsed_opts.count(Split) > 0); } //Export to DBMS else { printMessage(tr("Export to DBMS: %1").arg(connection.getConnectionString().replace(PasswordRegExp, PasswordPlaceholder))); if(parsed_opts.count(IgnoreErrorCodes)) export_hlp->setIgnoredErrors(parsed_opts[IgnoreErrorCodes].split(',')); export_hlp->exportToDBMS(model, connection, parsed_opts[PgSqlVer], parsed_opts.count(IgnoreDuplicates) > 0, parsed_opts.count(DropDatabase) > 0, parsed_opts.count(DropObjects) > 0, parsed_opts.count(Simulate) > 0, parsed_opts.count(UseTmpNames) > 0); } printMessage(tr("Export successfully ended!\n")); } void PgModelerCliApp::importDatabase() { printMessage(tr("Starting database import...")); printMessage(tr("Input database: %1").arg(connection.getConnectionId(true, true))); ModelWidget *model_wgt = new ModelWidget; importDatabase(model_wgt->getDatabaseModel(), connection); model_wgt->rearrangeSchemasInGrid(); printMessage(tr("Saving the imported database to file...")); model_wgt->getDatabaseModel()->saveModel(parsed_opts[Output], SchemaParser::XmlDefinition); printMessage(tr("Import successfully ended!\n")); delete model_wgt; } void PgModelerCliApp::importDatabase(DatabaseModel *model, Connection conn) { try { map> obj_oids; map> col_oids; Catalog catalog; QString db_oid; QStringList force_tab_objs; bool imp_sys_objs = (parsed_opts.count(ImportSystemObjs) > 0), imp_ext_objs = (parsed_opts.count(ImportExtensionObjs) > 0); if(parsed_opts[ForceChildren] == AllChildren) { for(auto &type : BaseObject::getChildObjectTypes(ObjectType::Table)) { if(type == ObjectType::Column) continue; force_tab_objs.append(BaseObject::getSchemaName(type)); } } else force_tab_objs = parsed_opts[ForceChildren].split(',', QtCompat::SkipEmptyParts); catalog.setConnection(conn); catalog.setQueryFilter(Catalog::ListAllObjects | Catalog::ExclBuiltinArrayTypes | (!imp_ext_objs ? Catalog::ExclExtensionObjs : 0) | (!imp_sys_objs ? Catalog::ExclSystemObjs : 0)); catalog.setObjectFilters(obj_filters, parsed_opts.count(OnlyMatching) > 0, parsed_opts.count(MatchByName) == 0, force_tab_objs); catalog.getObjectsOIDs(obj_oids, col_oids, {{Attributes::FilterTableTypes, Attributes::True}}); db_oid = catalog.getObjectOID(conn.getConnectionParam(Connection::ParamDbName), ObjectType::Database); obj_oids[ObjectType::Database].push_back(db_oid.toUInt()); catalog.closeConnection(); import_hlp->setConnection(conn); import_hlp->setImportOptions(imp_sys_objs, imp_ext_objs, true, parsed_opts.count(IgnoreImportErrors) > 0, parsed_opts.count(DebugMode) > 0, !parsed_opts.count(Diff), !parsed_opts.count(Diff)); model->createSystemObjects(true); import_hlp->setSelectedOIDs(model, obj_oids, col_oids); import_hlp->importDatabase(); import_hlp->closeConnection(); } catch(Exception &e) { throw Exception(e.getErrorMessage(), e.getErrorCode(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } } void PgModelerCliApp::diffModelDatabase() { DatabaseModel *model_aux = new DatabaseModel(); QString dbname; vector filtered_objs; printMessage(tr("Starting diff process...")); if(!parsed_opts[Input].isEmpty()) printMessage(tr("Input model: %1").arg(parsed_opts[Input])); else printMessage(tr("Input database: %1").arg(connection.getConnectionId(true, true))); dbname = extra_connection.getConnectionId(true, true); printMessage(tr("Compare to: %1").arg(dbname)); if(!parsed_opts[Input].isEmpty()) { printMessage(tr("Loading input model...")); loadModel(); if(parsed_opts.count(PartialDiff)) { QString search_attr = parsed_opts.count(MatchByName) ? Attributes::Name : Attributes::Signature; // Filtering by modification date always forces the signature matching if(start_date.isValid() || end_date.isValid()) obj_filters.append(model->getFiltersFromChangelog(start_date, end_date)); filtered_objs = model->findObjects(obj_filters, search_attr); /* We need to finish the diff if no object was found based on the filters * this will avoid the diff between an empty database model and a full database model * which may produce unexpected results like try to recreate all objects from the database * model that contains objects */ if(filtered_objs.empty()) { printMessage(tr("No object was retrieved using the provided filter(s).")); if(!parsed_opts.count(Force)) { printMessage(tr("Use the option `%1' to force a full diff in this case.").arg(Force)); printMessage(tr("The diff process will not continue!\n")); return; } else printMessage(tr("Switching to full diff...")); } else { /* Special case: when performing a partial diff between a model and a database * and in the set of filtered model objects we have one or more many-to-many, inheritance or partitioning * relationships we need to inject filters to force the retrieval of the all involved tables in those relationships * from the destination database,this way we avoid the diff try to create everytime all tables * in the those relationships. */ obj_filters.append(ModelsDiffHelper::getRelationshipFilters(filtered_objs, search_attr == Attributes::Signature)); } } } else { printMessage(tr("Importing the database `%1'...").arg(connection.getConnectionId(true, true))); importDatabase(model, connection); } printMessage(tr("Importing the database `%1'...").arg(dbname)); importDatabase(model_aux, extra_connection); diff_hlp->setModels(model, model_aux); diff_hlp->setFilteredObjects(filtered_objs); diff_hlp->setDiffOption(ModelsDiffHelper::OptKeepClusterObjs, !parsed_opts.count(DropClusterObjs)); diff_hlp->setDiffOption(ModelsDiffHelper::OptCascadeMode, !parsed_opts.count(NoCascadeDrop)); diff_hlp->setDiffOption(ModelsDiffHelper::OptForceRecreation, parsed_opts.count(ForceRecreateObjs)); diff_hlp->setDiffOption(ModelsDiffHelper::OptRecreateUnmodifiable, parsed_opts.count(OnlyUnmodifiable)); diff_hlp->setDiffOption(ModelsDiffHelper::OptKeepObjectPerms, !parsed_opts.count(RevokePermissions)); diff_hlp->setDiffOption(ModelsDiffHelper::OptReuseSequences, !parsed_opts.count(NoSequenceReuse)); diff_hlp->setDiffOption(ModelsDiffHelper::OptPreserveDbName, !parsed_opts.count(RenameDb)); diff_hlp->setDiffOption(ModelsDiffHelper::OptDontDropMissingObjs, !parsed_opts.count(DropMissingObjs)); diff_hlp->setDiffOption(ModelsDiffHelper::OptDropMissingColsConstr, !parsed_opts.count(ForceDropColsConstrs)); if(!parsed_opts[PgSqlVer].isEmpty()) diff_hlp->setPgSQLVersion(parsed_opts[PgSqlVer]); else { extra_connection.connect(); diff_hlp->setPgSQLVersion(extra_connection.getPgSQLVersion(true)); extra_connection.close(); } printMessage(tr("Comparing the generated models...")); diff_hlp->diffModels(); if(diff_hlp->getDiffDefinition().isEmpty()) printMessage(tr("No differences were detected.")); else { if(parsed_opts.count(SaveDiff)) { printMessage(tr("Saving diff to file `%1'").arg(parsed_opts[Output])); UtilsNs::saveFile(parsed_opts[Output], diff_hlp->getDiffDefinition().toUtf8()); } else { bool apply_diff = true; if(!parsed_opts.count(NoDiffPreview)) { QString res, buff, line; QTextStream in(stdin), preview; buff += "\n** Press ENTER to scroll the preview **\n"; buff += "\n### DIFF PREVIEW ###\n\n"; buff += diff_hlp->getDiffDefinition(); buff += "\n### END OF PREVIEW ###\n\n"; preview.setString(&buff, QIODevice::ReadOnly); while(!preview.atEnd()) { line = preview.readLine(); res.append(line + '\n'); if(res.count(QChar('\n')) >= 30 || preview.atEnd()) { out << res; out.flush(); res.clear(); if(!preview.atEnd()) in.readLine(); } } out << QtCompat::endl; out << tr("** WARNING: You are about to apply the generated diff code to the server. Data can be lost in the process!") << QtCompat::endl; do { out << tr("** Proceed with the diff applying? (yes/no) > "); out.flush(); in.skipWhiteSpace(); res = in.readLine(); } while(res.toLower() != tr("yes") && res.toLower() != tr("no")); if(res.toLower() == tr("no")) { apply_diff = false; printMessage(tr("Diff code not applied to the server.")); } } if(apply_diff) { printMessage(tr("Applying diff to the database `%1'...").arg(dbname)); export_hlp->setExportToDBMSParams(diff_hlp->getDiffDefinition(), &extra_connection, parsed_opts[CompareTo], parsed_opts.count(IgnoreDuplicates)); if(parsed_opts.count(IgnoreErrorCodes)) export_hlp->setIgnoredErrors(parsed_opts[IgnoreErrorCodes].split(',')); export_hlp->exportToDBMS(); } } } printMessage(tr("Diff successfully ended!\n")); } void PgModelerCliApp::updateMimeType() { #ifndef Q_OS_MAC try { printMessage(tr("Starting mime update...")); handleMimeDatabase(parsed_opts[DbmMimeType]==Uninstall, parsed_opts.count(SystemWide) != 0, parsed_opts.count(Force) != 0); printMessage(tr("Mime database successfully updated!\n")); } catch (Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorCode(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e); } #endif } QStringList PgModelerCliApp::extractForeignKeys(QString &obj_xml) { QStringList constr_lst; int start=0, end=0, pos=0, count=0; QString start_tag=QString("<%1").arg(Attributes::Constraint), end_tag=QString(" 0 && end > 0) { count=(end - start) + end_tag.size() + 1; constr=obj_xml.mid(start, count); if(constr.contains(Attributes::FkConstr)) { obj_xml.remove(start, count); constr_lst.push_back(constr); pos=0; } else pos=end; } else break; } while(pos >= 0 && pos < obj_xml.size()); return constr_lst; } bool PgModelerCliApp::containsRelAttributes(const QString &str) { bool found=false; static vector attribs={ Attributes::Relationship, Attributes::Type, Attributes::SrcRequired, Attributes::DstRequired, Attributes::SrcTable, Attributes::DstTable, Attributes::Points, Attributes::Columns, Attributes::Column, Attributes::Constraint, Attributes::Label, Attributes::Line, Attributes::Position, Attributes::Identifier, Attributes::Deferrable, Attributes::DeferType, Attributes::TableName, Attributes::SpecialPkCols, Attributes::Table, Attributes::AncestorTable, Attributes::CopyOptions, Attributes::CopyMode, Attributes::SrcColPattern, Attributes::DstColPattern, Attributes::PkPattern, Attributes::UqPattern, Attributes::SrcFkPattern, Attributes::DstFkPattern }; for(unsigned i=0; i < attribs.size() && !found; i++) found=str.contains(attribs[i]); return found; } void PgModelerCliApp::handleMimeDatabase(bool uninstall, bool system_wide, bool force) { printMessage(tr("Mime database operation: %1").arg(uninstall ? QString("uninstall") : QString("install"))); #ifdef Q_OS_LINUX handleLinuxMimeDatabase(uninstall, system_wide, force); #else #ifdef Q_OS_WIN handleWindowsMimeDatabase(uninstall, system_wide, force); #endif #endif } void PgModelerCliApp::handleLinuxMimeDatabase(bool uninstall, bool system_wide, bool force) { SchemaParser schparser; attribs_map attribs; QString str_aux, share_path = !system_wide ? QDir::homePath() + QString("/.local/share") : QString("/usr/share"), //Configures the path to the application logo exec_icon=GlobalAttributes::getTmplConfigurationFilePath("", "pgmodeler_logo.png"), //Configures the path to the document logo dbm_icon=GlobalAttributes::getTmplConfigurationFilePath("", "pgmodeler_dbm.png"), sch_icon=GlobalAttributes::getTmplConfigurationFilePath("", "pgmodeler_sch.png"), //Path to directory that register mime types mime_db_dir=QString("%1/mime").arg(share_path), //Path to the file that associates apps to mimetypes mimeapps=QString("%1/applications/mimeapps.list").arg(share_path); //Files generated after update file association (application-dbm.xml and pgModeler.desktop) QStringList files = { QString("%1/applications/pgModeler.desktop").arg(share_path), QString("%1/applications/pgModelerSchEditor.desktop").arg(share_path), mime_db_dir + QString("/packages/application-dbm.xml"), mime_db_dir + QString("/packages/application-sch.xml")}, schemas = { GlobalAttributes::getTmplConfigurationFilePath(GlobalAttributes::SchemasDir, QString("desktop") + GlobalAttributes::SchemaExt), GlobalAttributes::getTmplConfigurationFilePath(GlobalAttributes::SchemasDir, QString("desktop-sch") + GlobalAttributes::SchemaExt), GlobalAttributes::getTmplConfigurationFilePath(GlobalAttributes::SchemasDir, QString("application-dbm") + GlobalAttributes::SchemaExt), GlobalAttributes::getTmplConfigurationFilePath(GlobalAttributes::SchemasDir, QString("application-sch") + GlobalAttributes::SchemaExt) }, icons = { exec_icon, sch_icon, dbm_icon, sch_icon }; QByteArray buf, buf_aux; QFile out; for(unsigned i=0; i < 4; i++) { //When installing, check if the necessary file exists. If exists, raises an error and abort. if(!uninstall && QFileInfo(files[i]).exists() && !force) throw Exception(MsgFileAssociated, ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(uninstall && !QFileInfo(files[i]).exists() && !force) throw Exception(MsgNoFileAssociation, ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); } if(!uninstall && !system_wide) attribs[Attributes::WorkingDir]=QStandardPaths::writableLocation(QStandardPaths::HomeLocation); else attribs[Attributes::WorkingDir]=""; try { for(unsigned i=0; i < 4; i++) { if(uninstall) { if(!QFile(files[i]).remove() && !force) { throw Exception(tr("Can't erase the file %1! Check if the current user has permissions to delete it and if the file exists.").arg(files[i]), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); } } else { attribs[Attributes::Application]=(i == 0 ? GlobalAttributes::getPgModelerAppPath() : GlobalAttributes::getPgModelerSchemaEditorPath()); attribs[Attributes::Icon] = icons[i]; schparser.loadFile(schemas[i]); schparser.ignoreEmptyAttributes(true); buf.append(schparser.getCodeDefinition(attribs).toUtf8()); QDir(QString(".")).mkpath(QFileInfo(files[i]).absolutePath()); UtilsNs::saveFile(files[i], buf); buf.clear(); } } out.setFileName(mimeapps); //If the file mimeapps.list doesn't exists (generally in Ubuntu) creates a new one if(!uninstall && !QFileInfo(mimeapps).exists()) { out.open(QFile::WriteOnly); out.write(QByteArray("[Added Associations]\napplication/dbm=pgModeler.desktop;\n")); out.write(QByteArray("\n[Default Applications]\napplication/dbm=pgModeler.desktop;\n")); out.write(QByteArray("\n[Added Associations]\napplication/sch=pgModelerStxEditor.desktop;\n")); out.write(QByteArray("\n[Default Applications]\napplication/sch=pgModelerStxEditor.desktop;\n")); out.close(); } else { out.open(QFile::ReadOnly); if(!out.isOpen()) throw Exception(Exception::getErrorMessage(ErrorCode::FileDirectoryNotWritten).arg(mimeapps), ErrorCode::FileDirectoryNotWritten,__PRETTY_FUNCTION__,__FILE__,__LINE__); //Opens the mimeapps.list to add a entry linking pgModeler to .dbm files buf=out.readAll(); out.close(); QTextStream ts(&buf); while(!ts.atEnd()) { //Remove any reference to application/dbm mime from file str_aux=ts.readLine(); str_aux.replace(QRegExp(QString("application/dbm*"),Qt::CaseSensitive,QRegExp::Wildcard),""); if(!str_aux.isEmpty()) { //Updates the application/dbm mime association if(!uninstall && (str_aux.contains(QString("[Added Associations]")) || str_aux.contains(QString("[Default Applications]")))) str_aux.append(QString("\napplication/dbm=pgModeler.desktop;\n")); else str_aux+=QString("\n"); if(str_aux.startsWith("[") && !str_aux.contains("Added Associations")) str_aux=QString("\n") + str_aux; buf_aux.append(str_aux.toUtf8()); } } //Write a new copy of the mimeapps.list file out.open(QFile::Truncate | QFile::WriteOnly); out.write(buf_aux.data(), buf_aux.size()); out.close(); } //Update the mime database printMessage(tr("Running update-mime-database command...")); QProcess::execute(QString("update-mime-database"), QStringList { mime_db_dir }); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorCode(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e); } } void PgModelerCliApp::handleWindowsMimeDatabase(bool uninstall, bool system_wide, bool force) { SchemaParser schparser; QString base_reg_key = system_wide ? QString("HKEY_LOCAL_MACHINE\\SOFTWARE") : QString("HKEY_CURRENT_USER\\Software"); //Checking if the .dbm registry key exists QSettings dbm_ext(QString("%1\\Classes\\.dbm").arg(base_reg_key), QSettings::NativeFormat), sch_ext(QString("%1\\Classes\\.sch").arg(base_reg_key), QSettings::NativeFormat); QString exe_path=QDir::toNativeSeparators(GlobalAttributes::getPgModelerAppPath()), sc_exe_path=QDir::toNativeSeparators(GlobalAttributes::getPgModelerSchemaEditorPath()); //If there is no value assigned to (.dbm | .sch)/Default key and the user wants to uninstall file association, raises an error if(uninstall && !force && (dbm_ext.value(QString("Default")).toString().isEmpty() || sch_ext.value(QString("Default")).toString().isEmpty())) throw Exception(MsgNoFileAssociation, ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!uninstall && !force && (!dbm_ext.value(QString("Default")).toString().isEmpty() || !sch_ext.value(QString("Default")).toString().isEmpty())) throw Exception(MsgFileAssociated, ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); if(!uninstall) { //Write the default value for .dbm registry key dbm_ext.setValue(QString("Default"), QString("dbm_auto_file")); sch_ext.setValue(QString("Default"), QString("sch_auto_file")); } else { dbm_ext.remove(""); sch_ext.remove(""); } dbm_ext.sync(); sch_ext.sync(); //Other registry keys values map confs = { { QString("\\%1\\Classes\\dbm_auto_file").arg(base_reg_key), { QString("FriendlyTypeName") , QString("pgModeler Database Model") } }, { QString("\\%1\\Classes\\dbm_auto_file\\DefaultIcon").arg(base_reg_key), { QString("Default") , QString("%1,1").arg(exe_path) } }, { QString("\\%1\\Classes\\dbm_auto_file\\shell\\open\\command").arg(base_reg_key), { QString("Default") , QString("\"%1\" \"%2\"").arg(exe_path).arg("%1") } }, { QString("\\%1\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.dbm").arg(base_reg_key), { QString("OpenWithList/a"), QString("pgmodeler.exe"), QString("OpenWithList/MRUList"), QString("a")} }, { QString("\\%1\\Classes\\sch_auto_file").arg(base_reg_key), { QString("FriendlyTypeName") , QString("pgModeler Schema File") } }, { QString("\\%1\\Classes\\sch_auto_file\\DefaultIcon").arg(base_reg_key), { QString("Default") , QString("%1,1").arg(sc_exe_path) } }, { QString("\\%1\\Classes\\sch_auto_file\\shell\\open\\command").arg(base_reg_key), { QString("Default") , QString("\"%1\" \"%2\"").arg(sc_exe_path).arg("%1") } }, { QString("\\%1\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.sch").arg(base_reg_key), { QString("OpenWithList/a"), QString("pgmodeler-sc.exe"), QString("OpenWithList/MRUList"), QString("a")} } }; map::iterator itr; itr=confs.begin(); //Iterates over the configuration map writing the other keys on registry while(itr!=confs.end()) { QSettings s(itr->first, QSettings::NativeFormat); if(uninstall) s.remove(""); else { for(int i=0; i < itr->second.size(); i+=2) s.setValue(itr->second[i], itr->second[i+1]); } s.sync(); itr++; } } void PgModelerCliApp::createConfigurations() { QString conf_dir = GlobalAttributes::getConfigurationsDir(); printMessage(tr("Creating configuration files...")); printMessage(tr("Destination path: %1").arg(conf_dir)); bool missing_only = parsed_opts.count(MissingOnly) > 0, force = parsed_opts.count(Force) > 0; if(!missing_only && !force && QDir(GlobalAttributes::getConfigurationsDir()).exists()) throw Exception(tr("Configuration files already exist!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); try { if(force) { QDir dir; QString bkp_conf_dir = conf_dir + QDateTime::currentDateTime().toString("_yyyyMMd_hhmmss"); printMessage(tr("Configuration files already exist! Creating a backup...")); if(!dir.rename(conf_dir, bkp_conf_dir)) throw Exception(tr("Failed to create a backup of the configuration files!"), ErrorCode::Custom,__PRETTY_FUNCTION__,__FILE__,__LINE__); } createUserConfiguration(missing_only); printMessage(tr("Configuration files successfully created!\n")); } catch (Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorCode(),__PRETTY_FUNCTION__,__FILE__,__LINE__,&e); } } pgmodeler-0.9.4/apps/pgmodeler-cli/src/pgmodelercliapp.h000066400000000000000000000172371416010000600232750ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ /** \ingroup pgmodeler-cli \class PgModelerCliApp \brief Implements the operations export models whitout use the graphical interface */ #ifndef PGMODELER_CLI_APP_H #define PGMODELER_CLI_APP_H #include "application.h" #include #include #include #include "exception.h" #include "globalattributes.h" #include "widgets/modelwidget.h" #include "tools/modelexporthelper.h" #include "settings/generalconfigwidget.h" #include "settings/connectionsconfigwidget.h" #include "settings/relationshipconfigwidget.h" #include "settings/generalconfigwidget.h" #include "tools/databaseimporthelper.h" #include "tools/modelsdiffhelper.h" class PgModelerCliApp: public Application { private: Q_OBJECT XmlParser *xmlparser; //! \brief Holds the pgModeler version in which the model was construted (used by the fix operation) QString model_version; //! \brief Export helper object ModelExportHelper *export_hlp; //! \brief Import helper object DatabaseImportHelper *import_hlp; //! \brief Diff helper object ModelsDiffHelper *diff_hlp; //! \brief Reference database model DatabaseModel *model; //! \brief Graphical scene used to export the model to png ObjectsScene *scene; //! \brief Stores the configured connection Connection connection, //! \brief Stores the extra configured connection (only for diff) extra_connection; //! \brief Loaded connections map connections; //! \brief Connection configuration widget used to load available connections from file ConnectionsConfigWidget *conn_conf; //! \brief Relationship configuration widget used to load custom relationship settings RelationshipConfigWidget *rel_conf; GeneralConfigWidget *general_conf; //! \brief Creates an standard out to handles QStrings static QTextStream out; //! \brief Stores the long option names. The boolean indicates if the option accepts a value static map long_opts; //! \brief Stores the short option names. static attribs_map short_opts; //! \brief Stores the accepted options by the different operations static map accepted_opts; //! \brief Stores the parsed options names and values. attribs_map parsed_opts; //! \brief Indicates if the cli must run in silent mode bool silent_mode; //! \brief Stores the xml code for the objects being fixed QStringList objs_xml, //! \brief Stores the object filters for reverse engineering obj_filters; //! \brief Zoom to be applied onto the png export double zoom; //! \brief Start date used for filter changelog of the input database model (partial diff) QDateTime start_date, //! \brief End date used for filter changelog of the input database model (partial diff) end_date; /*! \brief Stores the member of role names that appear in deprecated tags * This map is used to reconfigure the role memberships after all objects are created */ map member_roles; static const QRegExp PasswordRegExp; static const QString PasswordPlaceholder; //! \brief Option names constants static const QString Input, Output, InputDb, ExportToFile, ExportToPng, ExportToSvg, ExportToDbms, ExportToDict, ImportDb, Diff, DropDatabase, DropObjects, PgSqlVer, Help, ShowGrid, ShowDelimiters, PageByPage, IgnoreDuplicates, IgnoreErrorCodes, ConnAlias, Host, Port, User, Passwd, InitialDb, Silent, ListConns, Simulate, FixModel, FixTries, ZoomFactor, UseTmpNames, DbmMimeType, Install, Uninstall, SystemWide, NoIndex, Split, IgnoreImportErrors, ImportSystemObjs, ImportExtensionObjs, DebugMode, FilterObjects, OnlyMatching, MatchByName, ForceChildren, AllChildren, PartialDiff, Force, StartDate, EndDate, CompareTo, SaveDiff, ApplyDiff, NoDiffPreview, DropClusterObjs, RevokePermissions, DropMissingObjs, ForceDropColsConstrs, RenameDb, NoSequenceReuse, NoCascadeDrop, ForceRecreateObjs, OnlyUnmodifiable, CreateConfigs, MissingOnly, TagExpr, EndTagExpr, AttributeExpr, MsgFileAssociated, MsgNoFileAssociation; //! \brief Parsers the options and executes the action specified by them void parseOptions(attribs_map &parsed_opts); //! \brief Shows the options menu void showMenu(); //! \brief Shows the version info void showVersionInfo(); //! \brief Returns if the specified options exists on short options map bool isOptionRecognized(QString &op, bool &accepts_val); //! \brief Loads the input model and perform all tasks needed to configure the graphical objects void loadModel(); /*! \brief Extracts the xml defintions from the input model and store them on obj_xml list in order to be parsed by the recreateObjects() method */ void extractObjectXML(); //! \brief Recreates the objects from the obj_xml list fixing the creation order for them void recreateObjects(); //! \brief Fix some xml attributes and remove unused tags void fixObjectAttributes(QString &obj_xml); /*! \brief Extracts the foreign key code for the specified table xml. The foreign keys are recreated after all the other objects */ QStringList extractForeignKeys(QString &obj_xml); //! \brief Returns if the specified string contains some of relationship attributes bool containsRelAttributes(const QString &str); /*! \brief Install the .dbm file association in the mime database (default behaviour). The paramenter 'uninstall' is used to clean up any file association done previously. */ void handleMimeDatabase(bool uninstall, bool system_wide, bool force); /*! \brief Fixes the references to opertor classes and families by replacing tags like by . This method operates only over operator classes, indexes and constraints */ void fixOpClassesFamiliesReferences(QString &obj_xml); void fixModel(); void exportModel(); void importDatabase(); void diffModelDatabase(); void updateMimeType(); void configureConnection(bool extra_conn); void importDatabase(DatabaseModel *model, Connection conn); /*! \brief Prints to the stdout the provided text appending a \n on the string * even if the silent mode is active. */ void printText(const QString &txt = ""); //! \brief Prints to the stdout only if the silent mode is not active void printMessage(const QString &txt = ""); void handleLinuxMimeDatabase(bool uninstall, bool system_wide, bool force); void handleWindowsMimeDatabase(bool uninstall, bool system_wide, bool force); void createConfigurations(); void listConnections(); public: PgModelerCliApp(int argc, char **argv); virtual ~PgModelerCliApp(); int exec(); private slots: void handleObjectAddition(BaseObject *); void updateProgress(int progress, QString msg, ObjectType = ObjectType::BaseObject); void printIgnoredError(QString err_cod, QString err_msg, QString cmd); void handleObjectRemoval(BaseObject *object); }; #endif pgmodeler-0.9.4/apps/pgmodeler-se/000077500000000000000000000000001416010000600170145ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-se/pgmodeler-se.pro000066400000000000000000000021711416010000600221220ustar00rootroot00000000000000include(../../pgmodeler.pri) TEMPLATE = app TARGET = pgmodeler-se windows:RC_FILE=res/windows_ico.qrc windows:RCC_DIR=src/ SOURCES += src/main.cpp \ src/aboutwidget.cpp \ src/schemaeditorform.cpp \ src/sourceeditorwidget.cpp \ ../pgmodeler/src/pgmodelerapp.cpp \ FORMS += \ ui/aboutwidget.ui \ ui/schemaeditorform.ui \ ui/sourceeditorwidget.ui HEADERS += \ src/aboutwidget.h \ src/schemaeditorform.h \ src/sourceeditorwidget.h unix|windows: LIBS += $$LIBGUI_LIB \ $$LIBCANVAS_LIB \ $$LIBCONNECTOR_LIB \ $$LIBCORE_LIB \ $$LIBPARSERS_LIB \ $$LIBUTILS_LIB INCLUDEPATH += $$LIBGUI_INC \ $$LIBCANVAS_INC \ $$LIBCONNECTOR_INC \ $$LIBCORE_INC \ $$LIBPARSERS_INC \ $$LIBUTILS_INC \ ../pgmodeler/src DEPENDPATH += $$LIBGUI_ROOT \ $$LIBCANVAS_ROOT \ $$LIBCONNECTOR_ROOT \ $$LIBCORE_ROOT \ $$LIBPARSERS_ROOT \ $$LIBUTILS_ROOT \ ../pgmodeler # Deployment settings target.path = $$PRIVATEBINDIR INSTALLS = target # Print the current build settins (see pgmodeler.pri) printBuildDetails() pgmodeler-0.9.4/apps/pgmodeler-se/res/000077500000000000000000000000001416010000600176055ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-se/res/windows_ico.ico000066400000000000000000003437501416010000600226410ustar00rootroot00000000000000  F@@ (B (S l>[( @ LhLhLLLSSSyvvvzzzuuuwwuvvu{{{~~~rrrPPPaTTTLLLLLLdddđ\}UaYYYLLLOOOhhhƶbkY[G)G= [[[LLLRRRkkkIpY8tOOC*[[[LLLUUU mmmn˜bx~?~fFvUC:~AM~\ZYLLLWWW###ppp~ØhGhX*_oRG<rlzj\ZXLLLZZZ'''ssstr_]NK?{l!gWBjn\H>4Z[ZYLLL]]]+++uuujiʳCĭ>.fZ=qwjwqk[L8m`36~YZ\LLL```...xxxt7|o<^T;ëqlcZM#(zYY]LLLccc222zzz;uOuj;yóȳpXL"&,zYY]LLLfff666}}}wAy˹Ƕ͹|zs]Q)9=ZZ]LLLiii999xwm@úͻŲоɵƯ~g^ZDƝqn[\]LLLkkk===ymeA˹îͺDZbdQi~^ۥ|Λu[\]LLLnnn@@@Цj^Cȴ|H_P޺ܻ[\]LLLqqqDDD{_ngaɼxnie\\\MMMtttHHH۩{^odO|v`za}sQ}q@G^^^OOOwwwKKK¸øǜȢ___PPPyyyOOOaaaQQQ|||RRRbbbSSSVVVcccTTTZZZdddUUU]]]eeeVVVaaafffWWWdddgggXXXggghhhYYYjjjiiiZZZmmmiiiZZZooojjj[[[qqqjjj[[[sssjjj[[[sssiii\\\z```afff\\\(@ @LhLhLLLLLL LLLIIIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHJJJLLLZMMMLLLLLLLLLHMMM|||mmmKKKLLL!LLLLLLJJJzXXX¼LLLLLLELLLMMMKKK[[[Η1.)maYOte7LLLLLLILLLNNNLLL]]]͔&A7 *!!ULLLLLLLILLLPPPMMM^^^̔(TI3'{k MMMLLLILLL]]][[[kkktszyxvdb\Z`DZCưBůAŮ?Ů=4D<0)!}elVWURNMM`O;+$H?.21/0pMMNLLLILLL^^^\\\lllec^[cȲFDZEưCŮA;NE:3+zi[JZOBg^N<'"#! lMMMLLLILLL___]]]mmmsr_^a_gưF?2v+VL4/&ůlLGBQI?jtsX |l%$""lMMMLLLILLLaaa___ooozxyuRwj*C<NF2aXE/*#ui\˶ưĭªuu|wg% j\''$$mMMMLLLILLLbbb```pppą˷Q̸R̸QFOG<7.|ƶоcYOʵƱĮªzo.'_R()'&mMMMLLLILLLdddbbbqqqȌ˷U͸WðQSK!D?:ɵű®í{ͺɵDZĮ~s.']Q++((mMMMLLLILLLeeecccsssǼ̸XϻZ{9.+$Ͻ˹ɷǴűͽͺ̸ɵPG;xiWt,%i[,,))nMMMLLLILLLgggeeetttÆ͹ZǴXG@zslϿͼ˹ȶŲνϾλ˸űmo!|o-BA?>ø}MMMLLLILLLhhhfffuuuɍκ\O+'Ͽ̻ɶƲ­оͺ˷ʴůt_}atqpnMMMLLLILLLiiihhhwwwȼѽ_C+(#Ƽ̻ɶűϽ̹ɵƱìª^QC-!l՟xϚsȔnjMMMLLLILLLkkkiiixxx‡Ѿay>2/,п̺ȵİѿλ˷dzů1.&&Z@tݦ~סyϛsƔnMMMLLLILLLllljjjyyyːҾbz@$" ξʸƳ­Ͻ̹ɴȲuc,!>fw嬃ߨעy̙sMMMLLLILLLnnnlll{{{͖оiI¾̻ȵïѿͺ˷62+-dHIxz㫃ިأ{ΛuƴMMMLLLILLLooommm|||ͳiνɷűϼʶg[O+1.dwkȷʹɸȸMMMLLLILLLpppooo}}}˾̙tI6(..-Ͽ˺ȴįȷshZ0.-NNNMMMIMMMrrrpppɶڥ}e+ HHGynHB:;:9OOOMMMIMMMsssrrrϼߩ㬂gI6((%#\ZYzsmXRK=804/G@ul;OOONNNINNNuuusss˽ީ᫂ܦ}˘ssTYQ*@:;5?9NG$aW){n3>IDzP^PPPOOOIOOOvvvtttǽƭƮƭƭŴȺsŷnlõlƷmɺnʻnɻmȹkǸiuQQQPPPIPPPxxxvvvRRRPPPIQQQyyywwwSSSQQQIQQQzzzyyySSSRRRIRRR|||zzzTTTSSSISSS}}}{{{UUUSSSISSS~~~}}}UUUTTTITTT~~~VVVUUUIUUUWWWUUUIUUUWWWVVVIVVVXXXVVVIVVVXXXWWWIWWWYYYWWWIWWWYYYXXXIXXXZZZXXXIXXXZZZYYYIYYY[[[YYYIYYY[[[YYYIYYY\\\ZZZIZZZ\\\ZZZIZZZ\\\ZZZIZZZ\\\[[[I[[[]]][[[I[[[]]][[[I[[[]]][[[I[[[]]][[[I[[[]]][[[I[[[]]][[[I\\\^^^\\\I\\\z]]]\\\E\\\I񹹹\\\\\\!\\\ 홙~~~|||{{{yyyxxxvvvtttsssqqqooonnnlllkkkiiihhhfffeeecccaaa```^^^\\\]]]ZQQQ\\\( LhLhLLLLLL LLL[LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMM+WWWNNNLLLLLL LLL}LLLLLLKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLL3MMMKKKNNNLLLLLLQLLLLLLKKKQQQSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSNNNKKKLLLLLLLLLLLLLLLKKK LLLLLLKKK{{{YYYKKKLLLLLLELLLLLLLLLLLLKKKQQQGGGLLLLLLsLLLLLLLLLLLLKKKSSSȖzpoooonkiijmnqEEELLLLLLLLLLLLLLLLLLKKKTTTɸ[665432-(u%r$y&)+O{EEELLLLLLLLLMMMMMMMMMLLLTTTǶV$#"!}]P7/.(;2OD eVl@yEEELLLLLLLLLNNNNNNNNNMMMUUUǶW&%$"r/( 1*UI t2pEEELLLLLLLLLOOOOOOOOONNNVVVǶW'&%z#0&RA,A3#'!`W'yueEEELLLLLLLLLOOOOOOOOONNNWWWǶW('!7/ 7, qK}OyLiCN<) C>kh[EEELLLLLLLLLPPPPPPPPPOOOWWWȶW)(fX!lIR|P{O{NwKN<)+)fcWEEELLLLLLLLLQQQPPPQQQPPPXXXʹƵW*#iT>VT~R}Q|P}O~bA '&ifYEEELLLLLLLLLQQQQQQQQQQQQYYYijT+pb5+ }VXVUTTzQUC/85{weEEELLLLLLLLLRRRRRRRRRQQQZZZ3m=p=o=o=o=o=o=o:mypŲT*A9kV?][ZXWmKB5&  si2tEEELLLLLLLLLSSSSSSSSSRRR[[[BtSSSSSSQ?rxoƳT((#qQ`^]\{U/& RGCyEEELLLLLLLLLTTTTTTSSSSSS[[[K|dʖcȕcɕcȕcȕbȔYÍ@txoǴU%+#[ca__uS 3, m^@nEEELLLLLLLLLTTTTTTTTTTTT\\\Rrϟq͞q͞q͞o͝gʗYÍ@txoǴU&*"^fdba]:/#QEth)EPUUVUUUUXt{vvvvvvvEEELLLLLLLLLUUUUUUUUUTTT]]]Zԩҧҧ~ҦuϡgʘYÍ@txoƳU++&  qTjgedcpQ"G=gYv#&&&%$"2s_ZZZZZZYvFFFLLLLLLLLLVVVUUUVVVUUU^^^bٲױװԪuϡgʘYÍ@txoŲU0RGOA1ijhgee~gN 91 ^Q}l-sebbbbbaYtFFFLLLLLLLLLVVVVVVVVVVVV___i޼ܹٴԪuϡgʘYÌ@txpŲUê3' q^HmkjhffmQ)"-( VJue/smmmnmleZtFFFLLLLLLLLLWWWWWWWWWVVV```r߾ڵիvϢh˘Yč@ttkıT42dWqWomkiggxX=1&"NDqa.suxxxwpeZtFFFLLLLLLLLLXXXXXXXXXWWW```ohַѭ~̥sɞhĖ]Q=rtkűT4ê4.81'!{_pnljhh`RD4 MBo`/s}zpeZtFFFLLLLLLLLLYYYYYYYYYXXXaaah{Cm?kAiBiCiCiCiBhBiyjıT5ª5ë4),& 6.&gqomkihenZCMCrb0szpeZtFFFLLLLLLLLLYYYYYYYYYYYYbbbondcbbcbcbcbcbdbhgsjcaaabbbbbųR6ª6ª5ë4' I>2orpnljig~gL!TH{j0szpeZuFFFLLLLLLLLLZZZZZZZZZYYYbbbqpKINLNLNLNLNLNLNLcauǴNűIűIŰIŰIİHįHįGįFįF@«8«7«6©53j]q`LvrqomkjhwbJ ,& ^Qw.ryoe[xEEELLLLLLLLLZZZZZZZZZZZZccconTRYVXVYWYWXVXUPNa_uűHƯBƯAŮ@Ů?ĭ>ĭ=ĭ<Ĭ;Ĭ:ì9ì9«8ª64,TISF8xusroh_{]`eS? =5 n_+n~}||{zEEELLLLLLLLL\\\\\\\\\[[[dddml`^gefefegefc^\QO_]qƱIưCƯCůBůAŮ@Ů?ĭ>ĭ=ĭ<ì;ì:«96,I@0)"~ezxv|`XI84+! *#bPĭ=:-/)qbQr)#:;; J=/hXI7^R""! GEEELLLLLLLLL]]]]]]]]]]]]ffflkzylk_]QO][nƲJDZGDZFưDưDưBƯBůAŮ@Į>«=281 taj ---/'anuW LBr"$#"" HEEELLLLLLLLL^^^^^^^^^^^^gggrqzymk_]QOa_tƲKȲHDZGDZFǰEưCůBĮAì@¬?8ND|g«v% abb,,-,%~aqni;1'7/ vf"%%$#"! HEEELLLLLLLLL_________^^^hhhrqyxlj^\OMcaxDzKȲIDZGưFD@=:86bWtcĮí«]PCuuv<<={aurpodS@$j\!%%$#"! HEEELLLLLLLLL______```___hhhtswwzysrmkfe`_ZXTShfzDzKƱIE@9}1|n+ob%k^#XM  qeWŰưĮí«zLB7lWzwtrptX ^Q &&%%$#"!HEEELLLLLLLLLaaaaaaaaa```iiiurokokolplpmpmsoh®JC8oc(IA-'  !# OF=ȴƱưůí¬ª~hl|{yvtrdSH~&'&%$#""HEEELLLLLLLLLaaaaaaaaa```jjjýȹdó[±Z±Z±ZZZYXU@rf*0+ >93i_UrxcYO>73˵ȳDzƱůĭ¬ª}zxvsk3+#KAz'(('&%$$IEEELLLLLLLLLaaaaaabbbaaakkkġǵWɴRʵSʵRɵQɴPȴOȳN­KƵμs mbWʷʵɴdzƱůĮì«}zxuoB7+A8w()(''%%$IEEELLLLLLLLLcccbbbcccbbbkkkضȶZ˷V̸V̷V˷U˶T˶RƲP?;5 wl˻Ű®ппϽ|pc+'"͹ʶɴȳDZŰĮìª|ywsF;.;4t(**)('%%IEEELLLLLLLLLcccccccccbbblllڹȶZ˶W̸W̷W˷V˷UʵSE=6)&#dzƲıïï­ǵRJBym`λ˸ʶɵȳDZŰĮ¬«ª~{yuH=12-v )+*))('&JEEELLLLLLLLLdddddddddcccmmmԲȶZ˷X̸Y̸X̸W̷VOWN## ˹ɶǵǴƳűİï­¬]TJIJͺ˸ʶɵȳƱůĮ}{vGпͼ˺ʷȴŲïѿϽͻ̸ʶɴDzŰíì1*$$U<5`xq̛yߩިڤ|סyӞvϛs̘pŔn{EEELLLLLLLLLlllllllllkkktttٸʸ_ϼcоe˹aRJ&.+)Ͼͼ˹ɶdzİ®оμͺ˷ʵȳƱĮŮta 9\;jyr̜z⬃⫂ިۥ|סyӞvЛsȖp{EEELLLLLLLLLmmmmmmlllllluuuٷʸ_ϽdѾf̹bSK'ν̺ʸȵŲïпϼͺ̸ʶɳDZư?7.'P;Iu>pyrΝz毅殅⫂ިۤ|סyԞwʘr{EEELLLLLLLLLmmmmmmmmmmmmvvvطɷ^λcϽdϼc\T,Ͽͼ˹ɶdzİ­Ͼλ̹ʶɴDzȲ~o` FhS@r{tϟ|곉겉毅㬃ߨۥ|آz͚t}EEELLLLLLLLLnnnnnnnnnmmmwwwٸ̼f˺d˻d̼dwn; ν̺ɷǴűîоμ͹˷ʵɴ(#+XANxL>q~Ξ{߫ંݨڥ}ע{ԠyҞwʘráEEELLLLLLLLLooonnnooonnnwwwؾäz\ jheϾͼʸȵŲïпϼͺ˸˶îWMB.#;zYEkFnFoȢϨϨϨϨϨΧΧΧԺFFFLLLLLLLLLooooooooooooxxxԴȚxi(*)(пͼ˺ȶƳİ­ѿϽλ̹ʶqb eggFFFMMMLLLLLLpppppppppoooyyyҰ͚sϛtS>.zwvν̺ɷǴı­оϼ͹}m XWYGGGMMMLLLLLLqqqqqqqqqpppzzzҰѝvۤ|vX Ͼ̻ɷȴű®ȶzna XWXGGGMMMMMMMMMqqqqqqqqqqqqzzzɧԠxݧ~֡yrU? .--Ͼͼ˹ʷȴ®óNG? `_aHHHNNNMMMMMMrrrrrrrrrrrr{{{ƣ֢{઀ݧ~ϛtkP< %$$μzd\S94/$$$zy{HHHNNNNNNNNNsssssssssrrr|||Ǥ٤}䭃ੀݧ~Ҟw~^F A@?ƻ|rb[T>:5!)%e_;HHHNNNNNNNNNttttttssssss|||Ϭۧ~豇䭃઀ݧ~آzz[K7) 511]ZWlieqmiqmhokehc^ZVR?;9   60^T&~8IcIIIOOONNNNNNtttttttttttt}}}ӱީ쵊豆䭄ઁݧ~ܥ|ȖpkRD<-   82OH"g],~;ENȴS͸U˶RcIIIOOOOOOOOOuuuuuuuuuttt~~~Ұפ|⭄ߪܧ٥}֢zӠxМuɛy{QJvk9g]2[S,\T,f]0g^0wl7BJPTɵX͹YκYκY͹W˷V˷UʶSeJJJPPPOOOOOOuuuuuuvvvuuu~~~ʬ̡̢̢̢̢̢ˡˡɢĵ˹\κ^н_м_̹\̸[ϻ\ϻ\κ[͹Y̹Y̸X˷WʷVʶUɶTɵSɵSȵRȴQȴPiJJJPPPPPPPPPwwwwwwwwwvvvǼ{ƻxƻyƻyǻyǻyƻyƻxƻxƻxƻxƻxƺxƻxƺxƺxƺxƺxƺxƺxǻx¹KKKPPPPPPPPPwwwwwwwwwvvvKKKQQQPPPPPPwwwwwwxxxwwwLLLQQQQQQQQQxxxxxxxxxxxxLLLRRRQQQQQQyyyyyyyyyyyyLLLRRRQQQQQQzzzzzzzzzyyyMMMRRRRRRRRRzzzzzzzzzzzzMMMSSSRRRRRR{{{{{{{{{{{{NNNSSSRRRRRR|||||||||{{{NNNSSSSSSSSS}}}}}}||||||NNNSSSSSSSSS}}}}}}}}}}}}OOOTTTSSSSSS~~~~~~~~~~~~OOOTTTTTTTTT~~~~~~OOOTTTTTTTTTPPPUUUTTTTTT PPPUUUUUUUUU PPPUUUUUUUUUぁQQQVVVUUUUUUもQQQVVVVVVVVVもQQQVVVVVVVVVッRRRWWWVVVVVV㄄RRRWWWVVVVVV㄄RRRWWWWWWWWWㅅRRRWWWWWWWWWㆆSSSXXXWWWWWWㆆSSSXXXWWWWWW㇇SSSXXXXXXXXX㇇SSSXXXXXXXXX㈈TTTYYYXXXXXX㉉TTTYYYXXXXXX㊊TTTYYYYYYYYY㊊TTTYYYYYYYYY㋋UUUYYYYYYYYY㋋UUUZZZYYYYYY㌌UUUZZZYYYYYY㍍UUUZZZYYYYYY㍍VVVZZZZZZZZZ㎎VVVZZZZZZZZZ㎎VVV[[[ZZZZZZ㏏VVV[[[ZZZZZZ㐐VVV[[[ZZZZZZ㐐WWW[[[ZZZZZZ㐐WWW[[[ZZZZZZ㑑WWW[[[[[[[[[㒒WWW[[[[[[[[[㒒WWW[[[[[[[[[㓓WWW\\\[[[[[[㓓WWW\\\[[[[[[㓓WWW\\\[[[[[[㔔WWW\\\[[[[[[㔔XXX\\\[[[[[[㔔XXX\\\[[[[[[㕕XXX\\\[[[[[[㕕XXX\\\[[[[[[㕕XXX\\\[[[[[[㕕XXX\\\\\\\\\㖖XXX\\\\\\\\\㖖XXX\\\\\\\\\㖖XXX\\\\\\\\\זYYY\\\\\\s\\\ mmm\\\\\\\\\E\\\S𗗗zzzddd]]]]]]\\\\\\\\\ }~~~}}}||||||{{{zzzyyyxxxxxxwwwvvvuuuuuutttsssrrrqqqppppppooonnnmmmmmmlllkkkjjjiiiiiihhhgggfffeeeeeedddcccbbbbbbaaa```___^^^^^^^^^^^^^^^]]]\\\3^^^ZZZ [򙙙~~~}}}||||||{{{zzzyyyxxxwwwwwwvvvuuuttttttsssrrrqqqppppppooonnnmmmmmmlllkkkjjjjjjiiihhhgggffffffeeedddccccccbbbaaa``````^^^^^^^^^+]]]^^^PNG  IHDR\rflqIDATxyeYY]kg5tUT=M725 @H@hL}5 A"AniykkuNݪϭ{9{:y3AHWJHF!čv!8 Xj_Szſ';fsN}ΰΫhG)u )mRCPEZ=Rʗh <{%F>X߫0>0Osu^=:^7<>Հ_>Q_ !NY-Gcڢ~RJ_s5w~ߍ} }R7k^-Sod?|4 N7Ω9g4\3h^}շ{ェۃw k?' SJ/@kmXkW ת9u~yyotK<8JsnK/9ٽru>ٱBxw1}k>[)V&MS&''nd݈`t];S]ezl%;ݘnszt9'|{R.6|!t5 xڕ>e/{[n=taXS1癲 \fK)ٿ?{صkJ_'|OݺF޸a׼,4,k0,=g-ǽ~lٲLOO)޸_%uS^\}LLL<-ЉuNC3\.7Fұ7eQ4MٱcG7{Oir饗jV 50_vzܟ9 {aG3wSi4%PL$_3U Gt$s4Bi7I2GYuo5c6Z$ozffn^00 aөWBR09990!8`h^tsWJXBg#ԭqVs4,}^j,d$ _wk~;5UgZ3ǟ*Ӭ[E7s94ja&lyr\~: px01Y \X  + 1A ^\g& m u1Y`۰h kEawvkg2ïGE E4j 1Ow? c%t4NapvsS}&]6La(}`:8lI>~RDT:#Q^g.--qU!bݸϳlٲg׺NanF4%MӞ$;{M)MӾ_s%Gz8j_t0ҙVl߫aw^ӰkXhp#Z!0̿Z!wTBRHA5h"(3f4LsEBPVwdh`yd~sl_8juX84| 6dnDZn 4`CØ W/O:08#ۃ`s }ͳ!IRIC0?0]ѥh~;Ls]F:NR"[-ᷖ+sRDQԓ9j~9qY!@H# S_7>|'g~;59MOO377b~ @ڈ?LTZj@V&n/Jr˩Q/`|_͜V;^4AֹbeOz|XA(u4*Pv2α-]OHr&_І6J:~F=O6. V0`7iJ3 z{Ԙ~? Á> [ 3uæ5l$7b7k~\{(|adpU: vTus'k%#U ؋Jaf~s{9(\Ws4&Yk3H0hMѠyI@+F FJy Yp#4L沼̱cdž6ndrrrCYb࡮XiH =9Zk+64S gTA8^Wn!нB^9+AEI9g)^/ {Z_ԝtT T gڽ Z4LcK)ݼnYgn?411!_V7%u+ξJMVj_g׏F6v``JGjSs4L+LT@ h4)ĽkX2h<^MvrڟNtjүH*zi-Z0f(P%b=sЋy 0hNF׹އU(T*|ZQZ`~5ǎc߾}6x!͛ٱc Dgnbn$~ _Zk[0`ڡf))1a#08Kgh@̢I)9~8wjsssl۶MȬ%gν?ڴ^aR-M&zHJɃ>?NA@ղW^y%RIU1ЩԿNQt7ҰNFCU frr)%ǎC)EED}q6o dcNGaϞ=?3_-mٲ۷+ uHMaHZ% C{"QL=_ͱVe幯t+:aÝbrLTBAEqL٤jinFFm~ F" Ҥ7KӔ%}Fу=J4JsUZkP{^?:'u#rKHp`dmo~VB؃QcIJI 4F%D%`ffٮL jAЩp(z]/1R@*^ RP`9Lze2{N7ة`$0ḡ{q2ma0Q_ ;Ơ0HdEdń̯ТsdQw1W9 @e^oFhL*< `O7BelլtnrU4MQJb^3 CiId;Qw /usU9j9L0gֹ[}(@Oe_>thtv.~ ,]r=QA}_572<Zxa֨2!)%LOOF?+phLa}XNl6Y^^^wcLVI~BPTNV0+MzP1~~&|zKHq{k>0U$l蝀gr ps %{bx !_( 2T!:<6=uC "zoǬQ%!LiE[x L-!1-qE;^ø뾿|q-BGAg FZ^\ЁV-\{u4SۈyЩAd7 c DZk4$<~HqXm[E\s1J^VPjO@1 ded뛝`ѹ2$fR&N<Ė)92Rm;|g&BP. `U!׺cI`jg#vc=|O~'l5Qh0g} Ύ3űBHZgl|٢=JU ٱ*Y n+A+A`i1tu)t6WB{0)$J+^W JT6sJi}O)RٍKVcjj )ĮOU(;nIaU׃ hӍ{薠}IH4Iӛ@e**-hk*!# 63&AJ'A@qч, m;r5BJL[3v^wӊvdlv{K j5js[*UJT¯TK'}±g\5TH7:MIB+:?N냴$p V77Rd;R,g?ZY՟z.vw;ig"MSJV0 IF@mBƞX6_L]r[یWc|vJȰJSR/q^iίTZJZOwj^+8oLi$<^hRJ9>*~cfFB5ԅ3οƷ/muIt9Ph ѦU~$Q 0jYXX89/.!9T+ ?v{J~|xMߕ{\M߾GOHG}Ď23y>~C?~~kMd"I3hN3PG319^#ڽ{Z2m;d H8"x/"̮M4Ip%_ U&ٷӜ?2NhTLa\߸nɷ͟&~+|Ck嵯{5;/FI'qߍݭtj-i:iQI5c\yՕ=կy5> {Yv^x!r9O`$n~.Bi'> m4/zY'(V)ay}|&/cݯ /ljMyFd . f{誼(H9d~8&S.W hHTA(a/s(ۏPS~o~R"QC؋5~G' )@ZRV$VSa y z3g x;x/1JR$cnxK=tn<מFSWhj+i*A#hm193Oҫ]kH))J4 r3ZrߝҪ[MaO]p1!~ )eW bF7AŸAp{n {݅ͦMGr(aĜ--}So2^\aJ;<+X%*{#NRs+SPw{{8~8QL$̟8Y'1w#5`vt^F_8l;ȷ?|:0~M[7g, sfVoE G:N-CiA۸|Gh24I+w˟\AHcǎH$jEQ t^ ^:{#a%6!ыԤjE񢐧h&b~³}=g:Kz _S ݅- Daww{сIB;o1ӛso{;W>hIf{#>SO,,γHLդ5iE-,0NTwKإk~CukNOMh-e>}.ug͑F̾\ӈ[v^+v7uQInt(V[)Ȏpmv/Vv^z)ˤim_ǎ1')KTj3>1,Zi<)Wy `$ _`^ڧ<O<'n5>8E:Ͼg*;Y{`w]e~;+5y;D©!F ۜbrr!u%i>r}w{rV!Rx+ЧZ Cʥzۋy{qrBi ~Ѱ KJW \u4sy;8zxVW<۷l9`~F{[_Arܑ$OkfZXrq{x֋^c}/| |YGo%nŭ8f!jp4QfOs_@+IjauXvS~5* 䇒 mӺYٳ`s ZVw]!D1@?﹋]1'bܭԪUS!AI"L2U±sI&|2T9E0 O 6h_hX")zDifljޝyy,AZ P9jPf6{FWhڝ''@X5(FX 9G;,41T'&_x&__gnv 3cS2Ch^᧎0DMΞ3 Zug2]fql~}RԘPZo@'?l7i5%;=O1Q`BLThe?aVgi9ΰ l2eKo<,_ fYPrp`لVZ'PؔݕƳB no|3!Qq 199!Lh"hЊ D f[%uU KV -9)6o\.S.O^ mlak::`Ve 61EM#}}l!7<DI|36c}: ÝMYgl}ڹ[9pZ#kEjwM>\E/yOā=|TO 3稇47D4M4keSwa* ՘B(,7Z9Ҥ66A$誮z/%!t ߿vVZYi$I8gWvfK."jEɗg5n o`dz*Q5Ѩ!LZp\3c.Hh* U6w^[zKL5]OUЮhA3\4$Iݔ3~SJIuL:SZ8LNU;:vvb+0a_-Խ#y ! 9qF!L4/^C^_{I+Osáb`+>aF8Ŭ\MOR4$#w,ھ6I_)JxGZͪ'gHSe#ن80_߱&lD^g__$"o0 Mb\3fv[p 5LAV/-mE]jy[QL/bPhZ=u_PvLO4iQsv=UuȰ4^3;ɢ9zE[ii<~8 >x*u 2. ȩI^FYq;^'(-R@zm?UV _8$W0UNOdK1:.34s,6ֶBC,=㊫ii? t y  ߀G?pkLq(OLMs5ϵKVT88,XN Eܞr`4j6EDQ@ZK8I7~[=.6u|6Wp0q}첝6Uۣm:)&;w6uv&a#~vu Rzs\x;4;ʦj4c`\oBv]*4ɬ -&vjCe ,8d[Uݯ#pWZ@h{.AfPEaLpzyO?FdnFpmުծ9P.Cw: _\; ˵`nW@e->ʾvl=\7ur6meAZQ#eP!D 3T8i3h N2={pR*ljJV^#P,q&F M8,efe6 oߋ^#)Ǔ]$eIn;jvxLa cA:Eǡ,aw\v#TMrپ9z`u$6N>#^chM7"mF M@AQ=!,RxNs^Glt L\IsPpkB<㡇G( Uڱ`EcdY7+'cU( ngj]Y!֧@. >Wi̶syIx8PJПcTߢ lp$ Ar0 cwTVuEFͶoVHy{)@$4u>LVm/1c*=1X;9pm P#&vl"r`|&p|X((/u4T啯9>ӇQJ!X8$j R%mL#Ϭюk=уv4Ty&M}+& ^TL:{#bbZl4z O{O@ ="j^tQ~& pxmuÆLY$ ֟P 3*lW׮ H2f=O-.:ØR & 8묕+g53Bϼ<3 Y<+& }JRʬo3===rHJy@7>/RdG w5&(MS{\ti:2f`>0uS+|n.c|AraQnŠ1O:M|N]cQj#[u*b&1R6m'}9=\d| /]vuf Zf^-W߁Q"RR׹_Uoxcmۦ1'Q#['MTScv'A+II:АZ2{9%K6D"ccc6^6Ѓ:7zxهJk^ jcLn;R*طg7~ PN sQa Cw;}">"6at33<م`(kAXp;|[B묬zbv Lᅬ_NR%flr/F:A{pf}iߣyRFiLCZkgHVEɵW˔Zk8^Q0Hûvwf=˯f{i4<}\}sHv& \B pw|cw[pw{jel^Bo|I±ݜ379E9Z@th VjS9DHU JJ_UpMUʅ۷UkFZF~f7B=X+'I 8Y~֚y:tk#! zgd嘷{*M~;a'K24N>]a;Ej1p5JiXZ-±i;o\-#:8eCQ-2.3& v=rNmlBf0-ͣp@AG#K!$o{~P*҅EVdgN@kn"PILhH0cBUBR5w*2 !ɵv\D%`0z^n}u !Pq/a޾{'ͺ\;rvgw78aKkMa(q7}M[E:;etP^~/-;Ȟc80"ccB' s5†]ngDz8zj Î۫eh~<;O9k=s6VWg{ ¬ ?z؏ܩS0»yo^Kev9@.iqYa᧴flb_O _z?ʛ/yF YUG9ĬQav,2+R):M!Y$e9.I=tk>ZƚhuKGgM5 $%W?iLƔaatSwi]ݶ]y ݼTZ3czYNʳ6}~ż_zr98Fd9Ec2g|Z^bm_MCuZ ՅO=X(0P'cbSqy1%#^jZf0Nn2;]q qx$cc[=q8. kn ']vαBw\s{v?ƫ~g(Wqy[ UEjrS`ҙjmI4!;}X|Y֣Uu y9؛Ud|rE&f (B搞hoejt[N3:7Җƴf_K=$]vOAz-ձ1$g\06tz)^{~C.ۿ+#jEE 3jzNrNH2Y8<'L)gŨoR̝K3'lDs"hc{zLA}Tv #߉/,1}\1~Eɏ9~8z0B e;@pAUN2kHZ&75ٺ\$5N!L9ES*: @n(Dt#* *?8rCFrQe,bJ*|jbL[6o/rsvsK]6 dPj~NwMY֛lunmcQ?*UyK[J x{=OmCz*c4:tB}% K6@GZzx2Z)|^X"4ƀ^ \vZS< Y=|5aX"cggi]˘>t[@e x7p2)'2g:B;m$ZHI"dVgRG0>$?&WӼ44hXkKS 45:tȢJFSaFɎ31)&pTRL]t^sx?dm|yϽg\}_sj5OB/&K}Q;o2?]I+("Y#a!TN.۸sBy7&I~ڄNfh (Ef_*Z-*9Pėv]ր E#uY`M}=k b{֝$?`lJ ts0=( KIW8pzMϺvDy¶s/d;q5׳uy*qNAz$>`,??#bWN3h`1fiyI#(2^ QpV3j 4 )QBB I5q嬵0tz *hLox[&(VQ+N <(;__]gg$giB",J8~}D8=Cey/BIclIS /a_36o;gmmGуЪ8@ο>Юǹ7qWte$q"q8 cH!R B _ t`0 EX 4 *w?4-]=B\Syu7շEEV 'V4Pq~gE1*jQo,l`c MqM^$h6I[ flG-TA4ќ-<I$JeJ/x)Q#w4yY{AYXl<|O>ڿq5& z#t* 1D3x?W& +M5~dbu[ɵYfl%}*Fh$ΞU=`L- F҆sfvRhacI!$Rxa4,*~_W5i&/qd>1{^>ǐ̱((D l6Fߛw{˿TU/4m YL/Ϯstۇ:6V(%DXB!l_^$Yo@ހѮ!̿~B !`N*|kٔZr=(k @!8y> YXA. JfDK<5|ᇄs}Ku[M %5 >hnGeyi!]w_B~~zN̟]}+v P6cy_ԅ=Ixa-=RgONrO_9'kW, "'*~+%bU! Q +'N({ t^Oo1/#2a._] +*%7~:AP@<&eQ) g_n5EhZl۶Of$&7"x;_CR.aHX"Je#:Κ3 ߬M6|B"K_ 流qx7}b?j7mBf8 ._={/Λb<|C/dkyܾ˚oy۲F{~?ѣG =v#033ïW89.@e]{!y:`z4,#\Ae3p 7ר(~5Tfݵx9Ӫ1KћO+O?YP r~LC26jwoĈ@ +b|Eދ!vrɿ&C?4糞 T)HҘ-QoyΕW^ۿÇ@ 59~) Ǩ;އ!j,YpvccAW!*5#2/"ɴnȴ??0Pk0{iB;ZY^8)ti^Z&`2Ӎ@BSЅǿ<($rM4w79Y[x<mmF )Q[pejoosv@Bcv}f6k42;%ΌS(|Xc ,eP N倫T*LOOK!^G~wuN]GC_0,6+h+]@]kM 9U KE|w7O?Oos+WШ*0$ab6o5;<:Wb:ki#w}}-TkP璋/DFiZFXtp411Ԇ|)$B0|z GX D3*lXbVR:lRcJi''$$^y;9Bc^ڟ9 i#f228\Wp^"Ow7} ֋aebj9lJWyoeJ!įe~mr¾;tc^{Y='*X@KIT"N_4&i5N(rWi5i*ax{`!&\h޳D5d+Ij+2^V$ttL^*(!)#~+f"KFRD×o(^|wD:eYCÒla|n [.T\t˳dTȠL6Ʈ{- E$Z() kI" ϟ9ƕW^kyh)VC Ec1B5h@x+~nklWq â$6Kh<(,%χ1}O (N u @T"I>w{6 yUGTjI+g?!$jZ|& ߊR dr3R)8b&Khs'ScT,OQdYgz]gvR oQ䢪w};G4puc8FCv]\=u*4ÊM1'3+4(%idrM?Ic?k$*ieBZeJ !oTDBF 43>#}TjJLZ45&(W^;{L+mʪA)/,ח/8 $IHMCz "j vl*+ծ}:2CYm~ Fw_ kHr 9qē$U׿8ÏR htn[9>[%_!<4E)b빔݉Br or=9_#C&6~ Z%15"0Au[ӐB[fMfքsOAj@5Ge߾}=bpf99B^.(N1{SRnc_=4ъ2&<(85xU60jE.//福RZy;%? CIn*R:~?1z 7v^FPl矞D+9y)(\ :>"*M3 |8ӵWe͡ffF"ظ~!OH<fn#(IR2F:@v iO }qq a"S_ oX~ʘO䌍|vn9Aߑc~#|+oߊ1Nf_pUx24 Tj(|W_g6}[#@jY'+Zi] 8d'68 )$G7{K9-,#\)\d?9e 3%C5j@Fq2wLJ!H*Te 'p+s^"8iب@vL]~=O>D\jRT_{ TFLL#7QC$6k (9r(Gh%5uD^cs_jg /Z! Cf{@zG# tlj&jDE$:"IcUJ$}2x#{i!~'9ʆ^9\C*G/D$I%;*E y x~f`[ߟ2or O@X yp7y6rSzK QX›AlŸ͘_dخ?1+ Oj`2  M^ !azzm󍎱=C1z4@$N[/Q4ZڴN_TbdxG:ǿtS{@ $᢫o९y0=+YBY8GC|Ȅu$Yy3R(WUƟL099(WўswVt%8 s-P;KHUR&Gdeow' lceNP* 'gy~UdyMGI@twnk#~ž]Y♈;5tL09ٌ? 91,W~ft+i€y qsonF1șN[&iJ~ɬbAG*G 0C(⟽7n}mL Y`Sj,̷&G)t~~?Z%h;ݹHh+ NQNW:f8V N[Z0j-'${9Ou/3$yuf:>[:W>ak@Kh5j 7ʈ & &TBM>yY"PMLLm9~WY`ԅ03iq:4fS,7wAVǿ#]ώԚ ] BJFk!H䖛?ƒ)?̳ ՝AXB+ȉI9MxӈZ &%ȹ2!QI)tL76O`5ٚavD3Z_p9dΒ]Fq H!H珱wje.T'3nwlT1Wey;QX^^FJAX#r-;HjJ26MifjzprUH^DTb2  *jϺ&Q=WW=,,D2E8Vvv  F;SF--Ul;-; ַ=cVO!dyyO VMdzbpfojp|Q }% 4J>o`њ5hPђɢ ;B# @k㟎2--5g[_h ku< Orh?AޡxfEԦfIg [>gy1P:<.'$ssLm;&i±qdUٮB Cj:AytRb97km ^U }{$8Nw>^X  iЍ:ͼ0~^@j Ѵ.Zi)\M!I.xeI~)̛ek)8x >d>4'dwE φLnа3o$rH"G1)B[(Z9F0ZkkIRo4-n6S2f+E! 9;A>=̐|=HٮT"GHI^DGuF˵{LC MDa퇕ß| cDz WJYL"<)اȞm$W .fSSgcSl?g]aA$1 "Rm}kJ!< `jjjJ5Dkw;tIAn[53gVdef 4\M9~0 LMY߭3@&ׯM1鑃~?FX!U0DIR#9bϟ7woڴ /111AVCJi|VF|߷՜ccPC0n߃Q GpAOWK'6R^dj6o O_K.⤀3]?7}4i)Z(xt£-JU[)RBOz<Q{|g||Jưk< P S70h cs^F,CGhW]@ ˝m,njUk`SA{+`Afm>܊l^|-/_[n=O$$aӬi^z.^Բ JLNNj6-*LHB4Qx&Ddyi)|ߧRX}-̟~ cgMOl&Ӆ!dLT8zI0mx^ )]uvt2?RHTI,5‰+n>~s(Md'@Pig3~swuvm!KGO_b˩-7,#K%H$Uf̞B!@)8@V:}% Q'0g(;y[=~O,I gu*AiyԀ#j^EdU{|\ܗ:F:ـN*T7yS9=|DIh==z/y-$ }Tiӧ)i¨j!0g?֚jMS'0^I 0@!=Yr5?=KKt_c܋A47-mN;_Exw?VU($M ?c4,ffV)Iѹ0Pi!0fMCg= sX-Ri&*5jlTsxK1vq_>eݷY?Ď~4!A'ns@T+.vnej/l60YҙF`w~W+P'[K~7ħ pjj4 tժrwK!X:4Oi)}%^z5C<̫.0` Ry4e9RVtǒ8IP*%IsE O:U$Ji1GwiAFiw% :9XA>qK Ae)BY/uFSĮzkV_)౯`:h?Gh)d^TǮPJgߖ@LPT#ɍ1Xnt~|z 2 {ock}?0t[0 ng?=<_8G7E)En V4!V2[YCY0a?Xrfwt ̄# |_ʊҔZfj^KT&' 5K: iww~?Q r : x&AuS 0;ikJJtkL!U>q4XА}G(j@6AsV KLTjToSUwrAVQ }"аЙ"dzA]*O/ C$/|Am{";mhesmN:9}j [;߈2$ M[}^X(n=FFQ>jGQN?w~ݴOuҐ:=q:۴4j*jiQ_&ZYFhϐ~+5Zq8Qe Iٙ+@ARy 9WFB=,IT&RTV=JUVzbb[N sF^d\&8[ sA{'A ]9j6PIN # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "aboutwidget.h" #include "guiutilsns.h" #include "baseobjectview.h" AboutWidget::AboutWidget(QWidget *parent) : QWidget(parent) { setupUi(this); GuiUtilsNs::configureWidgetFont(title_lbl, GuiUtilsNs::HugeFontFactor); GuiUtilsNs::configureWidgetFont(pgmodeler_ver_lbl, GuiUtilsNs::HugeFontFactor); GuiUtilsNs::configureWidgetFont(build_num_lbl, GuiUtilsNs::BigFontFactor); pgmodeler_ver_lbl->setText(QString("v%1 ").arg(GlobalAttributes::PgModelerVersion)); build_num_lbl->setText(QString("%1 Qt %2").arg(GlobalAttributes::PgModelerBuildNumber).arg(QT_VERSION_STR)); } pgmodeler-0.9.4/apps/pgmodeler-se/src/aboutwidget.h000066400000000000000000000021431416010000600222720ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ /** \ingroup pgmodeler-sc \class AboutForm \brief Form that contains information about software authoring and licensing. */ #ifndef ABOUT_WIDGET_H #define ABOUT_WIDGET_H #include #include "ui_aboutwidget.h" #include "globalattributes.h" class AboutWidget: public QWidget, public Ui::AboutWidget { private: Q_OBJECT public: AboutWidget(QWidget *parent = nullptr); }; #endif pgmodeler-0.9.4/apps/pgmodeler-se/src/main.cpp000066400000000000000000000025031416010000600212330ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "application.h" #include #include "guiutilsns.h" #include "schemaeditorform.h" #include "pgmodelerapp.h" int main(int argc, char **argv) { try { PgModelerApp::setAttribute(Qt::AA_UseHighDpiPixmaps); PgModelerApp::setAttribute(Qt::AA_EnableHighDpiScaling); PgModelerApp app(argc,argv); QStringList args = app.arguments(); SchemaEditorForm syntaxchk; args.pop_front(); syntaxchk.loadFiles(args); syntaxchk.showMaximized(); app.exec(); return 0; } catch(Exception &e) { QTextStream out(stdout); out << e.getExceptionsText(); return enum_cast(e.getErrorCode()); } } pgmodeler-0.9.4/apps/pgmodeler-se/src/schemaeditorform.cpp000066400000000000000000000360021416010000600236430ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "schemaeditorform.h" #include "guiutilsns.h" #include "globalattributes.h" #include "settings/generalconfigwidget.h" #include "guiutilsns.h" #include "sourceeditorwidget.h" #include "aboutwidget.h" #include "baseform.h" #include "utilsns.h" const QString SchemaEditorForm::UntitledFile = QT_TR_NOOP("(untitled)"); SchemaEditorForm::SchemaEditorForm(QWidget *parent) : QWidget(parent) { QToolButton *btn = nullptr; QFont fnt; setupUi(this); setWindowTitle(windowTitle() + " " + GlobalAttributes::PgModelerVersion); for(auto &obj : bnts_parent_wgt->children()) { btn = dynamic_cast(obj); if(!btn) continue; fnt = btn->font(); fnt.setBold(true); btn->setFont(fnt); GuiUtilsNs::createDropShadow(btn); GuiUtilsNs::configureWidgetFont(btn, GuiUtilsNs::SmallFontFactor); if(!btn->toolTip().isEmpty() && !btn->shortcut().toString().isEmpty()) btn->setToolTip(btn->toolTip() + QString(" (%1)").arg(btn->shortcut().toString())); } GeneralConfigWidget general_conf_wgt; general_conf_wgt.loadConfiguration(); alert_frm->setVisible(false); syntax_txt = GuiUtilsNs::createNumberedTextEditor(syntax_wgt); syntax_hl = new SyntaxHighlighter(syntax_txt); syntax_hl->loadConfiguration(GlobalAttributes::getXMLHighlightConfPath()); dtd_txt = GuiUtilsNs::createNumberedTextEditor(dtd_wgt); dtd_txt->setReadOnly(true); dtd_hl = new SyntaxHighlighter(dtd_txt); dtd_hl->loadConfiguration(GlobalAttributes::getXMLHighlightConfPath()); SourceEditorWidget::setDefaultEditorPalette(syntax_txt->palette()); syntax_conf_sel = new FileSelectorWidget(syntax_conf_wgt); syntax_conf_sel->setReadOnly(true); QVBoxLayout *vbox = new QVBoxLayout(syntax_conf_wgt); vbox->addWidget(syntax_conf_sel); vbox->setContentsMargins(0, 0, 0, 0); syntax_conf_sel->setNameFilters({ tr("Syntax highlight config file (*.conf)") }); QAction *act = nullptr; stx_action_grp = new QActionGroup(&syntax_cfg_menu); act = syntax_cfg_menu.addAction("Schema file", this, SLOT(loadSyntaxConfig())); stx_action_grp->addAction(act); act->setCheckable(true); act->setChecked(true); act->setData(GlobalAttributes::SchHighlightConf); act = syntax_cfg_menu.addAction("XML script", this, SLOT(loadSyntaxConfig())); stx_action_grp->addAction(act); act->setCheckable(true); act->setChecked(false); act->setData(GlobalAttributes::XMLHighlightConf); act = syntax_cfg_menu.addAction("SQL script", this, SLOT(loadSyntaxConfig())); stx_action_grp->addAction(act); act->setData(GlobalAttributes::SQLHighlightConf); act->setCheckable(true); act->setChecked(false); syntax_tb->setMenu(&syntax_cfg_menu); syntax_tb->setStyleSheet("QToolButton::menu-indicator { \ image: url(':/styles/styles/h_menu_indicator.png'); \ subcontrol-position: right center; }"); syntax_cfg_menu.installEventFilter(this); connect(apply_conf_tb, SIGNAL(clicked(bool)), this, SLOT(applySyntaxConfig())); connect(save_conf_tb, SIGNAL(clicked(bool)), this, SLOT(saveSyntaxConfig())); connect(reload_conf_tb, SIGNAL(clicked(bool)), this, SLOT(loadSyntaxConfig())); connect(new_tb, SIGNAL(clicked(bool)), this, SLOT(addEditorTab())); connect(load_tb, SIGNAL(clicked(bool)), this, SLOT(loadFile())); connect(exit_tb, SIGNAL(clicked(bool)), this, SLOT(close())); connect(save_tb, SIGNAL(clicked(bool)), this, SLOT(saveFile())); connect(editors_tbw, SIGNAL(tabCloseRequested(int)), this, SLOT(closeEditorTab(int))); connect(editors_tbw, SIGNAL(currentChanged(int)), this, SLOT(loadSyntaxFromCurrentTab())); connect(use_tmpl_file_chk, SIGNAL(toggled(bool)), this, SLOT(loadSyntaxConfig())); connect(indent_all_tb, SIGNAL(clicked(bool)), this, SLOT(indentAll())); connect(save_all_tb, SIGNAL(clicked(bool)), this, SLOT(saveAll())); connect(close_all_tb, SIGNAL(clicked(bool)), this, SLOT(closeAll())); connect(syntax_txt, &NumberedTextEditor::textChanged, [&](){ alert_frm->setVisible(true); }); connect(save_as_tb, &QToolButton::clicked, [&](){ saveFile(true); }); connect(about_tb, &QToolButton::clicked, [&](){ AboutWidget *info_wgt = new AboutWidget; BaseForm base_frm; base_frm.setMainWidget(info_wgt); base_frm.exec(); }); } void SchemaEditorForm::showEvent(QShowEvent *) { h_splitter->setSizes({ width(), width()/2}); } bool SchemaEditorForm::hasModifiedEditors() { bool editors_modified = false; SourceEditorWidget *editor = nullptr; for(int tab = 0; tab < editors_tbw->count(); tab++) { editor = dynamic_cast(editors_tbw->widget(tab)); if(editor->isModified()) { editors_modified = true; break; } } return editors_modified; } void SchemaEditorForm::closeEvent(QCloseEvent *event) { if(alert_frm->isVisible() || hasModifiedEditors()) { Messagebox msgbox; msgbox.show(tr("There are modified files! Do you want to exit without saving them?"), Messagebox::ConfirmIcon, Messagebox::YesNoButtons); if(msgbox.result() == QDialog::Rejected) event->ignore(); } } bool SchemaEditorForm::eventFilter(QObject *object, QEvent *event) { if(object == &syntax_cfg_menu && event->type() == QEvent::Show) { syntax_cfg_menu.move(mapToGlobal(syntax_tb->pos() + QPoint(syntax_tb->width(), 0))); syntax_cfg_menu.show(); return true; } return QWidget::eventFilter(object, event); } void SchemaEditorForm::loadSyntaxFromCurrentTab() { SourceEditorWidget *editor = dynamic_cast(editors_tbw->currentWidget()); if(!editor) return; stx_action_grp->blockSignals(true); for(auto &act : stx_action_grp->actions()) { if(act->data().toString() == editor->getCurrentSyntaxConfig()) { act->setChecked(true); loadSyntaxConfig(); break; } } stx_action_grp->blockSignals(true); } void SchemaEditorForm::loadSyntaxConfig() { QAction *act = stx_action_grp->checkedAction(); QFile input; QString filename; if(!act) filename = GlobalAttributes::getSchHighlightConfPath(); else { if(!use_tmpl_file_chk->isChecked()) filename = GlobalAttributes::getConfigurationFilePath(act->data().toString()); else filename = GlobalAttributes::getTmplConfigurationFilePath("", act->data().toString() + GlobalAttributes::ConfigurationExt); } try { syntax_txt->setPlainText(UtilsNs::loadFile(filename)); syntax_conf_sel->setSelectedFile(filename); if(dtd_txt->toPlainText().isEmpty()) { filename = GlobalAttributes::getTmplConfigurationFilePath(GlobalAttributes::ObjectDTDDir, GlobalAttributes::CodeHighlightConf + GlobalAttributes::ObjectDTDExt); dtd_txt->setPlainText(UtilsNs::loadFile(filename)); } save_conf_tb->setEnabled(true); apply_conf_tb->setEnabled(true); reload_conf_tb->setEnabled(true); alert_frm->setVisible(false); applySyntaxConfig(false); } catch(Exception &e) { throw Exception(e.getErrorMessage(), e.getErrorCode(), __PRETTY_FUNCTION__, __FILE__, __LINE__, &e); } } void SchemaEditorForm::applySyntaxConfig(bool from_temp_file) { QTemporaryFile tmp_file; QString filename; /* When applying the syntax on-the-fly we save the syntax conf code to a temporary file * and use it as configuration for in the open editors */ if(from_temp_file) { tmp_file.setAutoRemove(false); tmp_file.setFileTemplate(GlobalAttributes::getTemporaryFilePath("temp_XXXXXX.conf")); tmp_file.open(); filename = tmp_file.fileName(); if(!tmp_file.isOpen()) { throw Exception(Exception::getErrorMessage(ErrorCode::FileDirectoryNotAccessed).arg(filename), ErrorCode::FileDirectoryNotAccessed, __PRETTY_FUNCTION__, __FILE__, __LINE__); } tmp_file.write(syntax_txt->toPlainText().toUtf8()); tmp_file.close(); } else if(stx_action_grp->checkedAction()) { if(!use_tmpl_file_chk->isChecked()) filename = GlobalAttributes::getConfigurationFilePath(stx_action_grp->checkedAction()->data().toString()); else filename = GlobalAttributes::getTmplConfigurationFilePath("", stx_action_grp->checkedAction()->data().toString() + GlobalAttributes::ConfigurationExt); } try { /* Testing the temp file contents against a dummy syntax highlighter before * applying to the open editors */ QPlainTextEdit dummy_txt; SyntaxHighlighter stx_hl(&dummy_txt); stx_hl.loadConfiguration(filename); SourceEditorWidget *editor = dynamic_cast(editors_tbw->currentWidget()); if(editor) editor->loadSyntaxConfig(filename); } catch(Exception &e) { throw Exception(e.getErrorMessage(), e.getErrorCode(), __PRETTY_FUNCTION__, __FILE__, __LINE__, &e); } if(from_temp_file) tmp_file.remove(); } void SchemaEditorForm::saveSyntaxConfig() { UtilsNs::saveFile(syntax_conf_sel->getSelectedFile(), syntax_txt->toPlainText().toUtf8()); alert_frm->setVisible(false); applySyntaxConfig(true); } void SchemaEditorForm::saveFile(bool save_as) { SourceEditorWidget *editor = dynamic_cast(editors_tbw->widget(editors_tbw->currentIndex())); QString filename = editor->getFilename(); if(save_as || filename.isEmpty()) { QStringList files = showFileDialog(true); if(files.isEmpty()) return; filename = files.at(0); } editor->saveFile(filename); editor->setModified(false); QFileInfo fi(filename); editors_tbw->setTabText(editors_tbw->currentIndex(), fi.fileName()); editors_tbw->setTabToolTip(editors_tbw->currentIndex(), fi.absoluteFilePath()); } void SchemaEditorForm::setTabModified(bool modified) { SourceEditorWidget *editor = dynamic_cast(sender()); int idx = editors_tbw->indexOf(editor); QString tab_text = editors_tbw->tabText(idx); if(modified && !tab_text.endsWith('*')) tab_text += '*'; else if(!modified) tab_text.remove('*'); editors_tbw->setTabText(idx, tab_text); } void SchemaEditorForm::indentAll() { SourceEditorWidget *editor = nullptr; QApplication::setOverrideCursor(Qt::WaitCursor); for(int tab = 0; tab < editors_tbw->count(); tab++) { editor = dynamic_cast(editors_tbw->widget(tab)); editor->indent_tb->click(); } QApplication::restoreOverrideCursor(); } void SchemaEditorForm::saveAll() { QApplication::setOverrideCursor(Qt::WaitCursor); for(int tab = 0; tab < editors_tbw->count(); tab++) { editors_tbw->setCurrentIndex(tab); try { saveFile(); } catch(Exception &e) { Messagebox msgbox; msgbox.show(e); break; } } QApplication::restoreOverrideCursor(); } void SchemaEditorForm::closeAll() { Messagebox msgbox; if(hasModifiedEditors()) { msgbox.show(tr("There are modified files! Do you want to close them without save?"), Messagebox::ConfirmIcon, Messagebox::YesNoButtons); if(msgbox.result() == QDialog::Rejected) return; } QApplication::setOverrideCursor(Qt::WaitCursor); while(editors_tbw->count() > 0) closeEditorTab(0, false); QApplication::restoreOverrideCursor(); } QStringList SchemaEditorForm::showFileDialog(bool save_mode) { QFileDialog file_dlg; QStringList files, filters= { tr("Schema file (*.sch)"), tr("Database model file (*.dbm)"), tr("pgModeler config file (*.conf)"), tr("Objects metadata file (*.omf)"), tr("SQL script file (*.sql)"), tr("XML file (*.xml)"), tr("DTD file (*.dtd)"), tr("All files (*.*)") }; if(!save_mode) filters.prepend(tr("All supported files (*.sch *.dbm *.conf *.omf *.sql *.xml *.dtd)")); file_dlg.setNameFilters(filters); file_dlg.setWindowTitle(save_mode ? tr("Save file") : tr("Load file")); file_dlg.setFileMode(save_mode ? QFileDialog::AnyFile : QFileDialog::ExistingFiles); file_dlg.setAcceptMode(save_mode ? QFileDialog::AcceptSave : QFileDialog::AcceptOpen); if(save_mode) { file_dlg.setDefaultSuffix(".sch"); connect(&file_dlg, &QFileDialog::filterSelected, [&](QString filter){ filter.remove(QRegExp("(.)+(\\*)")); filter.remove(")"); file_dlg.setDefaultSuffix(filter); }); } if(file_dlg.exec() == QFileDialog::Accepted) files = file_dlg.selectedFiles(); return files; } void SchemaEditorForm::loadFile() { try { QStringList files = showFileDialog(false); if(!files.isEmpty()) loadFiles(files); } catch(Exception &e) { throw Exception(e.getErrorMessage(), e.getErrorCode(), __PRETTY_FUNCTION__, __FILE__, __LINE__, &e); } } void SchemaEditorForm::loadFiles(const QStringList &filenames) { try { QApplication::setOverrideCursor(Qt::WaitCursor); for(auto &file : filenames) addEditorTab(file); QApplication::restoreOverrideCursor(); } catch(Exception &e) { QApplication::restoreOverrideCursor(); throw Exception(e.getErrorMessage(), e.getErrorCode(), __PRETTY_FUNCTION__, __FILE__, __LINE__, &e); } } void SchemaEditorForm::addEditorTab(const QString &filename) { SourceEditorWidget *editor_wgt = nullptr; QFileInfo fi(filename); try { editor_wgt = new SourceEditorWidget; if(!filename.isEmpty()) editor_wgt->loadFile(filename); connect(editor_wgt, SIGNAL(s_editorModified(bool)), this, SLOT(setTabModified(bool))); } catch(Exception &e) { delete editor_wgt; throw Exception(e.getErrorMessage(), e.getErrorCode(), __PRETTY_FUNCTION__, __FILE__, __LINE__, &e); } editors_tbw->addTab(editor_wgt, filename.isEmpty() ? UntitledFile : fi.fileName()); editors_tbw->setTabToolTip(editors_tbw->count() - 1, filename.isEmpty() ? "" : fi.absoluteFilePath()); editors_tbw->setCurrentIndex(editors_tbw->count() - 1); save_as_tb->setEnabled(true); save_tb->setEnabled(true); indent_all_tb->setEnabled(true); save_all_tb->setEnabled(true); close_all_tb->setEnabled(true); syntax_cfg_edit_frm->setEnabled(true); syntax_tb->setEnabled(true); } void SchemaEditorForm::closeEditorTab(int idx, bool confirm_close) { SourceEditorWidget *editor_wgt = dynamic_cast(editors_tbw->widget(idx)); Messagebox msgbox; if(editor_wgt->isModified() && confirm_close) { msgbox.show(tr("The source code was modified! Do you really want to close it without save?"), Messagebox::ConfirmIcon, Messagebox::YesNoButtons); if(msgbox.result() == QDialog::Rejected) return; } editors_tbw->removeTab(idx); delete(editor_wgt); bool enable = editors_tbw->count() > 0; save_as_tb->setEnabled(enable); save_tb->setEnabled(enable); indent_all_tb->setEnabled(enable); save_all_tb->setEnabled(enable); close_all_tb->setEnabled(enable); syntax_cfg_edit_frm->setEnabled(enable); syntax_tb->setEnabled(enable); if(!enable) { syntax_txt->blockSignals(true); syntax_conf_sel->blockSignals(true); syntax_txt->clear(); syntax_conf_sel->clearSelector(); alert_frm->setVisible(false); syntax_txt->blockSignals(false); syntax_conf_sel->blockSignals(false); } } pgmodeler-0.9.4/apps/pgmodeler-se/src/schemaeditorform.h000066400000000000000000000042721416010000600233140ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ /** \ingroup pgmodeler-se \class SchemaEditorForm \brief Implements the pgModeler's schema files editor and syntax checker. */ #ifndef SCHEMA_EDITOR_FORM_H #define SCHEMA_EDITOR_FORM_H #include #include #include "ui_schemaeditorform.h" #include "widgets/numberedtexteditor.h" #include "utils/syntaxhighlighter.h" #include "widgets/fileselectorwidget.h" #include "widgets/findreplacewidget.h" class SchemaEditorForm: public QWidget, public Ui::SchemaEditorForm { private: Q_OBJECT static const QString UntitledFile; NumberedTextEditor *syntax_txt, *dtd_txt; SyntaxHighlighter *syntax_hl, *dtd_hl; FileSelectorWidget *syntax_conf_sel; QActionGroup *stx_action_grp; QMenu syntax_cfg_menu; void showEvent(QShowEvent *) override; void closeEvent(QCloseEvent *event) override; bool eventFilter(QObject *object, QEvent *event) override; QStringList showFileDialog(bool save_mode); public: explicit SchemaEditorForm(QWidget *parent = nullptr); void loadFiles(const QStringList &filenames); bool hasModifiedEditors(); private slots: void loadSyntaxConfig(); void applySyntaxConfig(bool from_temp_file = true); void saveSyntaxConfig(); void addEditorTab(const QString &filename = ""); void closeEditorTab(int idx, bool confirm_close = true); void loadFile(); void saveFile(bool save_as = false); void setTabModified(bool modified); void indentAll(); void saveAll(); void closeAll(); void loadSyntaxFromCurrentTab(); }; #endif pgmodeler-0.9.4/apps/pgmodeler-se/src/sourceeditorwidget.cpp000066400000000000000000000271701416010000600242310ustar00rootroot00000000000000#include "sourceeditorwidget.h" #include "messagebox.h" #include "guiutilsns.h" #include "qtcompat/splitbehaviorcompat.h" #include "utilsns.h" QPalette SourceEditorWidget::def_editor_pal; attribs_map SourceEditorWidget::snippets = { {"ifend", "%if {} %then\n\n%end\n"}, {"ifelseend", "%if {} %then\n\n%else\n\n%end\n"}, {"ifexpr", "%if ({}) %then\n\n%end\n"}, {"ifexprelse", "%if ({}) %then\n\n%else\n\n%end\n"}, {"setattrstr", "%set {} \"\"\n"}, {"setattrtxt", "%set {} [ ]\n"}, {"unsetattr", "%unset {}\n"}, {"unsetattr", "%unset {}\n"}, }; SourceEditorWidget::SourceEditorWidget(QWidget *parent) : QWidget(parent) { setupUi(this); is_modified = false; curr_sytax_cfg = GlobalAttributes::SchHighlightConf; editor_txt = GuiUtilsNs::createNumberedTextEditor(editor_parent); def_editor_pal = editor_txt->palette(); editor_hl = new SyntaxHighlighter(editor_txt); find_wgt = new FindReplaceWidget(editor_txt, find_parent); find_parent->setVisible(false); code_compl_wgt = new CodeCompletionWidget(editor_txt); code_compl_wgt->configureCompletion(nullptr, editor_hl); source_file_sel = new FileSelectorWidget(source_file_parent); source_file_sel->setReadOnly(true); source_file_parent->setVisible(false); QVBoxLayout *vbox = new QVBoxLayout(source_file_parent); vbox->setContentsMargins(0, 0, 0, 0); vbox->addWidget(source_file_sel); QStringList snippets_id; for(auto &itr : snippets) code_compl_wgt->insertCustomItem(itr.first, itr.second, QPixmap(GuiUtilsNs::getIconPath("codesnippet"))); vbox = new QVBoxLayout(find_parent); vbox->setContentsMargins(0, 0, 0, 4); vbox->addWidget(find_wgt); indent_tb->setMenu(&indent_opts_menu); act_break_inline_ifs = indent_opts_menu.addAction(tr("Break inline ifs")); act_break_inline_ifs->setCheckable(true); act_break_inline_ifs->setChecked(false); connect(code_compl_wgt, SIGNAL(s_wordSelected(QString)), this, SLOT(handleSelectedSnippet(QString))); connect(find_wgt, SIGNAL(s_hideRequested()), find_tb, SLOT(toggle())); connect(validate_tb, SIGNAL(clicked(bool)), this, SLOT(validateSyntax())); connect(indent_tb, SIGNAL(clicked(bool)), this, SLOT( applyIndentation())); connect(editor_txt, SIGNAL(modificationChanged(bool)), this, SLOT(restoreEditorPalette())); connect(editor_txt, SIGNAL(undoAvailable(bool)), this, SLOT(setModified(bool))); connect(editor_txt, SIGNAL(cursorPositionChanged()), this, SLOT(restoreEditorPalette())); connect(find_tb, SIGNAL(toggled(bool)), find_parent, SLOT(setVisible(bool))); } void SourceEditorWidget::saveFile(const QString &filename) { UtilsNs::saveFile(filename, editor_txt->toPlainText().toUtf8()); QFileInfo fi(filename); validate_tb->setEnabled(filename.endsWith(GlobalAttributes::SchemaExt)); indent_tb->setEnabled(filename.endsWith(GlobalAttributes::SchemaExt)); this->filename = filename; source_file_sel->setSelectedFile(filename); source_file_parent->setVisible(true); } void SourceEditorWidget::loadSyntaxConfig(const QString &filename) { try { editor_hl->loadConfiguration(filename); editor_hl->rehighlight(); curr_sytax_cfg = QFileInfo(filename).baseName(); } catch(Exception &e) { throw Exception(e.getErrorMessage(), e.getErrorCode(), __PRETTY_FUNCTION__, __FILE__, __LINE__, &e); } } void SourceEditorWidget::handleSelectedSnippet(const QString &snippet) { QTextCursor tc = editor_txt->textCursor(); tc.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor); tc.removeSelectedText(); tc.insertText(snippets[snippet]); } QString SourceEditorWidget::getCurrentSyntaxConfig() { return curr_sytax_cfg; } void SourceEditorWidget::loadFile(const QString &filename) { if(filename.isEmpty()) return; bool enable = filename.endsWith(GlobalAttributes::SchemaExt); editor_txt->setPlainText(UtilsNs::loadFile(filename)); validate_tb->setEnabled(enable); indent_tb->setEnabled(enable); code_compl_wgt->setEnabled(enable); this->filename = filename; source_file_sel->setSelectedFile(filename); source_file_parent->setVisible(true); QString ext = QFileInfo(filename).suffix(); if(ext == "dbm" || ext == "xml" || ext == "conf" || ext == "omf") curr_sytax_cfg = GlobalAttributes::XMLHighlightConf; else if(ext == "sql") curr_sytax_cfg = GlobalAttributes::SQLHighlightConf; else curr_sytax_cfg = GlobalAttributes::SchHighlightConf; } void SourceEditorWidget::validateSyntax() { SchemaParser schparser; Messagebox msgbox; try { editor_txt->setPalette(def_editor_pal); schparser.ignoreEmptyAttributes(true); schparser.ignoreUnkownAttributes(true); schparser.loadBuffer(editor_txt->toPlainText()); schparser.getCodeDefinition({}); msgbox.show(tr("No lexical or sytactical errors found."), Messagebox::InfoIcon); } catch(Exception &e) { // When founding an error we try to highlight the exact portion of the document where to problem is QTextCursor cursor(editor_txt->document()->findBlockByLineNumber(schparser.getCurrentLine() - 1)); cursor.movePosition(QTextCursor::StartOfLine); cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, schparser.getCurrentColumn()); editor_txt->blockSignals(true); editor_txt->setTextCursor(cursor); editor_txt->blockSignals(false); // Changing the text selection color so the user can see where the problem is QPalette pal = editor_txt->palette(); pal.setColor(QPalette::Highlight, QColor("#f00000")); pal.setColor(QPalette::HighlightedText, QColor("#ffffff")); editor_txt->setPalette(pal); msgbox.show(e); } } void SourceEditorWidget::restoreEditorPalette() { editor_txt->setPalette(def_editor_pal); } void SourceEditorWidget::applyIndentation() { QStringList buffer = editor_txt->toPlainText().split(QChar::LineFeed); int if_level = 0, comment_pos = -1, line_count = buffer.size(); bool found_cond = false, found_if = false, inline_ifend = false; QString cond_pattern = QString("^(( )|(\\t))*(%1)"), line, tk_if = SchemaParser::CharStartConditional + SchemaParser::TokenIf, tk_then = SchemaParser::CharStartConditional + SchemaParser::TokenThen, tk_else = SchemaParser::CharStartConditional + SchemaParser::TokenElse, tk_end = SchemaParser::CharStartConditional + SchemaParser::TokenEnd; QRegExp inline_if_regexp(QString("(%1)(.)+(%2)").arg(tk_if).arg(tk_end)); for(int ln_idx = 0; ln_idx < line_count; ln_idx++) { line = buffer[ln_idx]; comment_pos = line.indexOf(SchemaParser::CharComment); inline_ifend = line.contains(inline_if_regexp); if(line.contains(QRegExp(cond_pattern.arg(tk_if))) && !inline_ifend) { if_level++; found_if = found_cond = true; } else if(line.contains(QRegExp(cond_pattern.arg(tk_else))) || line.contains(QRegExp(cond_pattern.arg(tk_end)))) found_cond = true; // If the current line is an inline if: %if ... %then ... %end, we break it if(act_break_inline_ifs->isChecked() && inline_ifend) { line.replace(tk_if, QChar::LineFeed + tk_if); line.replace(tk_then, tk_then + QChar::LineFeed); line.replace(tk_else, QChar::LineFeed + tk_else + QChar::LineFeed); line.replace(tk_end, QChar::LineFeed + tk_end + QChar::LineFeed ); /* If the line was broke ( presence of \n) we split the resulting string * and insert the new lines in the buffer and restart the indentation process */ if(line.contains(QChar::LineFeed)) { QStringList buf_aux = line.split(QChar::LineFeed, QtCompat::SkipEmptyParts); buffer.removeAt(ln_idx); for(auto itr = buf_aux.rbegin(); itr != buf_aux.rend(); itr++) buffer.insert(ln_idx, *itr); ln_idx = 0; found_cond = found_if = false; if_level = 0; line_count = buffer.size(); continue; } } line = line.simplified(); if(!line.isEmpty()) { line = line.rightJustified(line.size() + if_level + (found_cond ? -1 : 0), QChar::Tabulation); if(!inline_ifend) if_level -= line.mid(0, comment_pos).count(QString("%1%2").arg(SchemaParser::CharStartConditional).arg(SchemaParser::TokenEnd)); } buffer[ln_idx] = line; found_cond = found_if = false; } QRegExp cond_tk_regexp(QString("^(( )|(\\t))*(%1)[a-z]+").arg(SchemaParser::CharStartConditional)); QString prev_line, next_line, next_next_line, tk_set = SchemaParser::CharStartConditional + SchemaParser::TokenSet, tk_unset = SchemaParser::CharStartConditional + SchemaParser::TokenUnset; for(int ln_idx = 0; ln_idx < buffer.count() - 1; ln_idx++) { line = buffer[ln_idx].mid(0, buffer[ln_idx].indexOf(SchemaParser::CharComment)); // Ignoring the line if it contains a inline if if(line.contains(inline_if_regexp)) continue; // Capturing the previous, next lines without comment portion prev_line = ln_idx > 0 ? buffer[ln_idx - 1].mid(0, buffer[ln_idx - 1].indexOf(SchemaParser::CharComment)) : ""; next_line = ln_idx < buffer.count() - 1 ? buffer[ln_idx + 1].mid(0, buffer[ln_idx + 1].indexOf(SchemaParser::CharComment)) : ""; next_next_line = ln_idx < buffer.count() - 2 ? buffer[ln_idx + 2].mid(0, buffer[ln_idx + 2].indexOf(SchemaParser::CharComment)) : ""; /* Removing the empty line in the following cases: * 1) Between a two %end tokens * 2) Between an %end and %else * 3) Between an two %if tokens * 4) Between an %else and %if | %set | %unset */ if(next_line.isEmpty() && !next_next_line.isEmpty() && ((line.contains(QRegExp(cond_pattern.arg(tk_end))) && (next_next_line.contains(QRegExp(cond_pattern.arg(tk_else))) || next_next_line.contains(QRegExp(cond_pattern.arg(tk_end))))) || ((line.contains(QRegExp(cond_pattern.arg(tk_if))) || line.contains(QRegExp(cond_pattern.arg(tk_else)))) && (next_next_line.contains(QRegExp(cond_pattern.arg(tk_if))) || next_next_line.contains(QRegExp(cond_pattern.arg(tk_set))) || next_next_line.contains(QRegExp(cond_pattern.arg(tk_unset))))))) { buffer.removeAt(ln_idx + 1); ln_idx--; continue; } // Separating an end token from any conditional token in the next line if(line.contains(QRegExp(cond_pattern.arg(tk_end))) && !next_line.isEmpty() && !next_line.contains(cond_tk_regexp)) buffer[ln_idx].append(QChar::LineFeed); // Separating an closed plain text from the next line else if(line.endsWith(SchemaParser::CharEndPlainText) && !next_line.isEmpty() && !next_line.contains(cond_tk_regexp)) buffer[ln_idx].append(QChar::LineFeed); // If the current line has an %if and the previous is not a conditional instruction % else if(line.contains(QRegExp(cond_pattern.arg(tk_if))) && !prev_line.isEmpty() && !prev_line.contains(cond_tk_regexp)) buffer[ln_idx].prepend(QChar::LineFeed); // Separating an if token from previous end, set and unset else if(line.contains(QRegExp(cond_pattern.arg(tk_if))) && (prev_line.contains(tk_end) || prev_line.contains(tk_set) || prev_line.contains(tk_unset))) buffer[ln_idx].prepend(QChar::LineFeed); } /* Replacing the current code with the formatted one in such a way to preserve * the undo/redo stack. This is achieved by selecting the whole text document * and inserting the new text using the cursor. Using QPlainTextEdit::setPlainText * will clear the stack. */ editor_txt->blockSignals(true); QTextCursor cursor = editor_txt->textCursor(); cursor.movePosition(QTextCursor::Start); cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); cursor.insertText(buffer.join(QChar::LineFeed)); cursor = editor_txt->textCursor(); editor_txt->moveCursor(QTextCursor::Start); editor_txt->blockSignals(false); setModified(true); } void SourceEditorWidget::setModified(bool value) { is_modified = value; emit s_editorModified(value); } void SourceEditorWidget::setDefaultEditorPalette(const QPalette &pal) { def_editor_pal = pal; } QString SourceEditorWidget::getFilename() { return filename; } bool SourceEditorWidget::isModified() { return is_modified; } pgmodeler-0.9.4/apps/pgmodeler-se/src/sourceeditorwidget.h000066400000000000000000000057361416010000600237020ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ /** \ingroup pgmodeler-sc \class SourceEditorWidget \brief Implements the basic source code editor with minimal code completion for schema files. */ #ifndef SOURCE_EDITOR_WIDGET_H #define SOURCE_EDITOR_WIDGET_H #include #include "ui_sourceeditorwidget.h" #include "widgets/numberedtexteditor.h" #include "utils/syntaxhighlighter.h" #include "widgets/findreplacewidget.h" #include "widgets/codecompletionwidget.h" #include "widgets/fileselectorwidget.h" class SourceEditorWidget: public QWidget, public Ui::SourceEditorWidget { private: Q_OBJECT static attribs_map snippets; static QPalette def_editor_pal; CodeCompletionWidget *code_compl_wgt; FileSelectorWidget *source_file_sel; NumberedTextEditor *editor_txt; SyntaxHighlighter *editor_hl; FindReplaceWidget *find_wgt; QString filename, curr_sytax_cfg; QAction *act_break_inline_ifs; QMenu indent_opts_menu; bool is_modified; public: explicit SourceEditorWidget(QWidget *parent = nullptr); /*! \brief Defines the default pallete for text editor. * This is used to restore the colors of the editor after an error is raised * during syntax validation and the text selection color is changed to point the * error location */ static void setDefaultEditorPalette(const QPalette &pal); //! \brief Returns the file being handled by the editor QString getFilename(); //! \brief Returns the current modification status of the editor bool isModified(); QString getCurrentSyntaxConfig(); private slots: //! \brief Validates the syntax of the editor's content (only for schema micro-language code) void validateSyntax(); //! \brief Restores the editor default colors after highlighting an syntax error in a portion of the text void restoreEditorPalette(); //! \brief Applies a custom identation on the editor's content (only for schema micro-language code) void applyIndentation(); //! \brief Insert the selected snippet into the editors (only for schema micro-language code) void handleSelectedSnippet(const QString &snippet); public slots: void setModified(bool value); void loadFile(const QString &filename); void saveFile(const QString &filename); void loadSyntaxConfig(const QString &filename); signals: void s_editorModified(bool value); }; #endif pgmodeler-0.9.4/apps/pgmodeler-se/ui/000077500000000000000000000000001416010000600174315ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler-se/ui/aboutwidget.ui000066400000000000000000000324001416010000600223050ustar00rootroot00000000000000 AboutWidget Qt::NonModal 0 0 816 704 0 0 650 500 16777215 16777215 About pgModeler Schema Editor :/images/images/schemafile.png:/images/images/schemafile.png 4 4 4 4 6 0 0 100 100 100 100 :/images/images/schemafile.png true Qt::Horizontal 40 20 0 0 75 true pgModeler Schema Editor Qt::AlignCenter Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse 0 0 0 0 16777215 16777215 75 true true 0.0.0 Qt::AlignCenter Qt::Horizontal 40 20 0 0 0 129 0 0 129 0 128 128 128 50 true false (BUILD_NUM) Qt::AlignCenter -1 Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse 0 0 0 0 false QFrame::NoFrame Create, edit and verify the syntax of files written in pgModeler's schema micro-language. You can also tweak the tool's syntax highlighting settings to be used by the main GUI application. Qt::PlainText Qt::AlignJustify|Qt::AlignTop true 0 Qt::TextSelectableByMouse 0 0 License 4 4 4 4 QFrame::Sunken QAbstractScrollArea::AdjustToContents false QTextEdit::WidgetWidth true <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier'; font-size:11pt;">pgModeler - PostgreSQL Database Modeler<br />Copyright 2006-2021 - Raphael Araújo e Silva<br /><br />This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 3.<br /><br />This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<br /><br />The complete text of GPLv3 is at LICENSE file on pgModeler's source code root directory. Also, you can get the complete GNU General Public License at &lt;</span><a href="http://www.gnu.org/licenses"><span style=" font-family:'Courier'; font-size:11pt; text-decoration: underline; color:#0000ff;">http://www.gnu.org/licenses</span></a><span style=" font-family:'Courier'; font-size:11pt;">&gt;</span></p></body></html> false Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse pgModeler is proudly a brazilian software! :/images/images/brazil_flag.png Qt::AlignHCenter|Qt::AlignTop 0 0 <html><head/><body><p>Raphael Araújo e Silva &lt;<a href="mailto:raphael@pgmodeler.com.br"><span style=" text-decoration: underline; color:#0057ae;">raphael@pgmodeler.io</span></a>&gt;</p></body></html> Qt::AutoText 5 true pgmodeler-0.9.4/apps/pgmodeler-se/ui/schemaeditorform.ui000066400000000000000000000740041416010000600233300ustar00rootroot00000000000000 SchemaEditorForm 0 0 916 629 800 600 pgModeler Schema Editor :/images/images/schemafile.png:/images/images/schemafile.png 0 0 0 4 4 6 Qt::Horizontal 4 false 0 4 0 0 6 16777215 16777215 QTabWidget::North true false 0 4 4 0 6 0 0 Syntax file: 0 0 0 0 0 0 QFrame::StyledPanel QFrame::Raised 4 4 4 6 6 false Save && apply :/icons/icons/save.png:/icons/icons/save.png 22 22 Qt::ToolButtonTextBesideIcon 25 25 24 24 Qt::AutoText :/icons/icons/alert.png true false Apply only :/icons/icons/confirm.png:/icons/icons/confirm.png 22 22 Qt::ToolButtonTextBesideIcon false Reload :/icons/icons/refresh.png:/icons/icons/refresh.png 22 22 Qt::ToolButtonTextBesideIcon 0 0 50 false false false true The syntax settings below have changed. Click <strong>Save & apply</strong> to persit the modifications to config file and apply them; <strong>Apply only</strong> to use the modified settings on-the-fly on the current editor without save the changes to the configuration file; or <strong>Reload</strong> to load the file again from the last time that it was saved. <strong>NOTE:</strong> switching to another editor tab will cause all modifications below to be lost. true Qt::Horizontal 40 20 0 0 <p>Instead of loading the configuration file at user's local storage, loads the template one inside the pgModeler's installation folder.</p> Use template configuration file 0 XML 6 4 4 4 4 0 0 16777215 16777215 DTD 6 4 4 4 4 0 0 16777215 16777215 0 0 0 0 0 3 0 3 4 Qt::Horizontal Qt::Horizontal false 0 0 0 0 Save changes to another file Save as :/icons/icons/saveas.png:/icons/icons/saveas.png 25 25 Qt::ToolButtonTextUnderIcon true true 0 0 0 0 Exit :/icons/icons/exit.png:/icons/icons/exit.png 25 25 Qt::ToolButtonTextUnderIcon true true 0 0 0 0 Open a new editor New :/icons/icons/new.png:/icons/icons/new.png 25 25 Ctrl+N Qt::ToolButtonTextUnderIcon true false 0 0 0 0 Save changes Save :/icons/icons/save.png:/icons/icons/save.png 25 25 Ctrl+S Qt::ToolButtonTextUnderIcon true true 0 0 0 0 Load files Load :/icons/icons/open.png:/icons/icons/open.png 25 25 Ctrl+L Qt::ToolButtonTextUnderIcon true Qt::Vertical 20 40 true 0 0 0 0 About :/icons/icons/help.png:/icons/icons/help.png 25 25 F1 Qt::ToolButtonTextUnderIcon true false 0 0 0 0 Choose the syntax highlighting mode Syntax :/icons/icons/xmlcode.png:/icons/icons/xmlcode.png 25 25 QToolButton::InstantPopup Qt::ToolButtonTextUnderIcon true Qt::NoArrow false 0 0 0 0 Apply identation to all open editors Indent all :/icons/icons/ident.png:/icons/icons/ident.png 25 25 Qt::ToolButtonTextUnderIcon true false 0 0 0 0 Save all :/icons/icons/saveall.png:/icons/icons/saveall.png 25 25 Qt::ToolButtonTextUnderIcon true false 0 0 0 0 Close all :/icons/icons/close.png:/icons/icons/close.png 25 25 Qt::ToolButtonTextUnderIcon true 4 2 4 2 6 0 0 127 0 Qt::PlainText :/images/images/pgmodeler_name.png Qt::Horizontal 40 20 pgmodeler-0.9.4/apps/pgmodeler-se/ui/sourceeditorwidget.ui000066400000000000000000000154161416010000600237120ustar00rootroot00000000000000 SourceEditorWidget 0 0 1212 736 Form 4 4 4 4 4 0 0 0 0 0 0 6 2 true 0 0 0 0 Validate the syntax of the schema file Validate :/icons/icons/validatesch.png:/icons/icons/validatesch.png 25 25 F5 QToolButton::InstantPopup Qt::ToolButtonTextBesideIcon false Qt::NoArrow true 0 0 0 0 Apply custom indentation to the code Indent :/icons/icons/ident.png:/icons/icons/ident.png 25 25 Ctrl+I QToolButton::MenuButtonPopup Qt::ToolButtonTextBesideIcon false Qt::NoArrow true 0 0 0 0 Find :/icons/icons/findtext.png:/icons/icons/findtext.png 25 25 Ctrl+F true QToolButton::InstantPopup Qt::ToolButtonTextBesideIcon false Qt::NoArrow Qt::Horizontal 40 20 pgmodeler-0.9.4/apps/pgmodeler/000077500000000000000000000000001416010000600164075ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler/pgmodeler.pro000066400000000000000000000017421416010000600211130ustar00rootroot00000000000000include(../../pgmodeler.pri) TEMPLATE = app TARGET = pgmodeler windows:RC_FILE=res/windows_ico.qrc windows:RCC_DIR=src/ windows: DESTDIR = $$PWD HEADERS += src/pgmodelerapp.h SOURCES += src/main.cpp \ src/pgmodelerapp.cpp unix|windows: LIBS += $$LIBGUI_LIB \ $$LIBCANVAS_LIB \ $$LIBCONNECTOR_LIB \ $$LIBCORE_LIB \ $$LIBPARSERS_LIB \ $$LIBUTILS_LIB INCLUDEPATH += $$LIBGUI_INC \ $$LIBCANVAS_INC \ $$LIBCONNECTOR_INC \ $$LIBCORE_INC \ $$LIBPARSERS_INC \ $$LIBUTILS_INC DEPENDPATH += $$LIBGUI_ROOT \ $$LIBCANVAS_ROOT \ $$LIBCONNECTOR_ROOT \ $$LIBCORE_ROOT \ $$LIBPARSERS_ROOT \ $$LIBUTILS_ROOT # Deployment settings target.path = $$BINDIR INSTALLS = target macx { macdeps.files = $$PWD/res/Resources $$PWD/res/Info.plist $$PWD/res/PkgInfo macdeps.path = $$PREFIX macscript.files = $$PWD/res/startapp macscript.path = $$BINDIR INSTALLS += macdeps macscript } pgmodeler-0.9.4/apps/pgmodeler/res/000077500000000000000000000000001416010000600172005ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler/res/Info.plist000066400000000000000000000026461416010000600211600ustar00rootroot00000000000000 CFBundleDocumentTypes CFBundleTypeRole Editor CFBundleTypeExtensions dbm CFBundleTypeIconFile pgmodeler_dbm.icns CFBundleTypeName pgModeler Database Model CFBundleIconFile pgmodeler.icns CFBundleExecutable pgmodeler CFBundleDisplayName pgModeler CFBundleIdentifier br.com.pgmodeler.pgModeler CFBundleInfoDictionaryVersion 1.0 CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 0.9.4 CSResourcesFileMapped NSPrincipalClass NSApplication NSHighResolutionCapable True pgmodeler-0.9.4/apps/pgmodeler/res/PkgInfo000066400000000000000000000000111416010000600204500ustar00rootroot00000000000000APPL???? pgmodeler-0.9.4/apps/pgmodeler/res/Resources/000077500000000000000000000000001416010000600211525ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler/res/Resources/empty.lproj000066400000000000000000000000001416010000600233460ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler/res/Resources/pgmodeler.icns000066400000000000000000004020321416010000600240070ustar00rootroot00000000000000icnsis32 {vtHKMdk{_xXP·XuwVȷaSriTjĸtHthgUvȾHhb_V`¼U;\J S\Eƺja*, YTP>wu[+,]4-GWfqJ!^%PSilyqVcŗbVӧrȅaͫǿV~sdbĀѮ{rd1gm]-^gYnWj\h/YwYSy]0,F>4Ky3Tʩ/Գqa9Q˭.sΰïRLK~y!8eiNoUm6ƹcX5ZW?.|oVg7>%OQӜiրxWwԦeVvݜ%༆Fzͺop›ٍ̉p̭3pĽŀiͫ/^i[z_ĹonyϮ1ZyYۘ\e9,H@6{S%OQs8mkE̵Du|o'&'''?'@KAR>76<ɥ(Dx%X\5il32 iv{kejjl[]__^\ZXVVUhlRGy{{vWWONNQVYOh¾qj?-}wP?VfidWG=;DGi»b8jM@yoAeɶzX:CIJc.omrslNGyw?qÿ]=flqStWF]:{RRbhpoWT[X;xľB7nW{~yybTR`h<¼~1tc}}UTR_d:þC=`|~vvTUR^b:ÿi%Q|yqqTUS\c;¿):qlhkOVTZaC[7!BAAB? VTY\S5ƹZCA?A:669ztlb4 LV~SHJIDa`^]U=5$$lnkh5 KL;pea\<(bok_% JKmb`Z9NogX JMUj`[/ gd] ,7886MBjec_.^`SXrW][F>?>B8H[UH?{ L:TTP,Ʒu9k] Yec6! 3=tBnb6"" WoT_]A465/.56266:(Ľk]nT=\F¯a}sQ-UO@҉j±Q*X_2a~DH.XdYjaYHpaN;.l85<Yn]qKgP-U4TYaW~rLh?)~D}Chv[VRdiiLhDtb3B@ 4COOMNOFh ?=pɽF8:#"RZ!? S¨C;z'QAnÒ'`waīD}˜"/t6!v Dqj]`Zn!`iVx[7ĵs-TH淼+ J[q̸H!1llvtf(749'ѹƥ}yϱϏokMm=O`e`UKK\`8~iB`ϯXAGðaNñhp>pl;dU|?q6w|QĿɿKwO$6Uө½GΧ0D^ߓ¼DW\Ւ½FˑUє¿Vô%A¸¿{YĽ?D3¿ҷ4oHźS@dz_¿r?وʪ]1VUBtȻ].Yh4hIżT3Yf[lb\IwӣmWA0{@=CYo^sLoX0V<aYcYtMoE,ΔDzO}ű]XSfkkNnƿK t8DK#;>QPOPRGr HHmnbZ/9;$!5c_]Sqd#J _yg[4;8+(oKNӉ, ^Ùi~yh[1q?21}~VV(srÞ^ffc]5/60eyuT]%5W\Z\W #843NXXK^# Nq -0/$ "N#wYxi 8Ŷs0(Z_Uxrƿ/)_`rǺR#8mɧn'749'l8mk%$%mNAECI&  +  )9;9999989A9g9k9k5kkkkeT3_`_`^_a`e_b`d+36 M>;<=?)ю)"A=>>>?7ih32MAffSVSTUVVWXYZ[X(q$urm{}^DAƺ_B-CǺ~&usnxcEA|72|"Ei*ghh_cpznxsK;¾=.&suqr[AR46ckqZCXTZ]b\^[VXTXVLE:w'1Z`Nhzwvvtv`\ZU\bbL8¾O) q]m{{I,[XS^hdH?'=zZk|wzF,[YT\ebDFL"\Yk{xrvG,[YT\daBG¿s">Qk{wtnsG\[YT[b`CD¿4(Bi|vrnhoG[ZTZ``H9N5i{vsqltJ'[ZUZ^_O0c"GUPQ+W3 [ZUY]]U3aq#!5B@??J [[UX\ZY@5ƽy$iy,#.-+*)(F[[VXZXYM/Wu~"2~{/!..,+))E[\VWYXVT@+lT|z1++*)('E[\WVXVUTM8*hKo}yy4**)(&%D]^ZWVVUSRG4'Jf1~zwt+))'&%#DSVRPJKJJINI6'(HlzZ$~{xuq(''&%$"DvIG<0$&rDNxttg'&%#"!D֎CKHC>842'$}54#HpsW&$#"!C ӄDIFEDCA?5"){lNuq= %$#! C ԆCHECB@?><0&p^#Wm ! C -ԆCFCBA?><;9,Z~y*,{:%L 0**)(''A<ԅBDB@?><;:96*@yysA!A:awsuutyeI׋CECA@>>;8764)muqwrik-1 =qBLIJIPB455'Exomhil2 3 ,_iedcb_ND25(4tolhkc+ 2 "&,ƷzPA2-*nojglX 2 &]94{yMA/eohfkJ 2 9L9xxMB$OpfeiE  0 &]E@uxMA"hfcfL%.221016 ]JFrxM@(fa_c' +Sb`b fXWz||{m]RNozP?]^[^4 -hW^Z]QPOF@I^WVW8 W8A#$[SRNY+Du}|ifc>% 7VNQH ?\ic>"$ :H3Hù\ic=!%  X]ke:  'k[a]NACBB?:79;L>̱c;%AŸ{&w>?˻60z'Z*I8Ǫ=,$m5-b\g0YK_ƒ&w-ewprrqxL/d6W-dz"z**^ '[ʀ 51 u c uƩZ4o K p¿P{Ĵ7j PIp0.k l3$Gr`!)!q +TTNNMLKLnI40( P]+x +[~m]KK.;/Wq: ZucNH(cL L $WtaMHt%tp ^ TrwwsbMHnl/'y5-b1v #Q`ecdaNGv!JR$&RN8R_ONQQPQLK{8 7qNDBAC>T T?)[ƿ &c=3#Qƾ &\ʮ /w $Q}ƾ &ql̬%b .U¿ VlˬihY6] &xr˫9g EsDz{uˀ˫+). DLpcddcgV{ů@EzxytuheO/uÿj*~}z9 SľĻUQ|rOʾ 'WqN5[·" (_qM-1Gba4>;<<>:q@&('  wB ʽÇΏŀ„`$Ľȥʹuľ$ɿyF406::7306DYxԾs¼|$J2R«kK0'4bw|$»;?پi=$Bƹ|&ü:B̖80z-v*»K9ۼA,%ĻŊ;SԶ45_flW p^3Ԗ%"./(ˤc2]& RV5},ƿT;˫)2I3x,ƿSB]:2y,ƿOCə!,-y\ƿV?<'xǿo1½e!~'؎%Ɖ!|Z] Ҵ/iʸ=\-¸ќ"Ž,,IJ ӡ'`ـ܌ͥ 85!¯ k|ظbɰ:¯ ̽PxU¼>z 5θWMz33{ %x5$K{h!ƹ-$ $VVPPONMNŧ{Q94* ¿·[l/ +\o_MM÷1οC-eĮ A \wePJƀ˘*̼ĘtY W $XucOJɃ'ʸć"m #UtxxtdOJ|{»4%x25t8Àȶ "ScfefcPJŀSÆ"Ta++b [~Q]QPTSSTNNÿȋA>YzwpkdabPEC%D@^aI/j^zk\d&3>:877'aͽpE;(^]yj]c& !Trdm^a]^]^Y`0Fzxysf;\="~OĽbldfik0Ahgf;]//5P4E?>A40&$=ACEſaeS˿,nd;_ø& /luZ5:Stüg3>;<<>:}ɲE(**+*) wBh8mk /FABBBBBBBBBBBBC=?زgdfugsgtgtjrYx 1 THSRTQTQTRTRTOT\TTTSTIm } fzwxyu  #    u 5666667$^feeg[XVVVUگÈ ^6%('''(! it32nffehjlnmpZ4A99UbacX8 0[ffecba`i>g^TUVUVUVXldV{|k|}vCcMU\ZYYXWWVVUUTSRRQPQPPONNMChG Io|qrsrssrxz6cQbjhiihgffedca``__^^]\[[ZZYYXWVHkw27pptz}|{zywwppx.gQ`fc]XZTSSRRWVUUV\Z\\]\\ZZYXYYXW VVUUTTUGls³(!`pt~||tr{)QOMLLGEDEEDBABFGOQPUYXWVWVUTSTGlq%"Wpu}~}{yyunjF?HGFFHGGFFGFEDBBAA@@?BEDFONRVUTSTGlq¿%)Wpu}~}{y{wdMEJJHHGIHHIHDCCB@@BAADCBCA?'>>=?CDLORSSRRSGlq¿%[Wpu|~}z{|jRFHIHHIIH@>>:;LNMQTQJMK;69:89?AB@@?>=<<;=?EKOQQFk q%[Wpuz~}z|v]GHIHHJH?=Bayżrj[D:688<@?>><;;::=DJClp¿%[Wpuy~|z{rPDIIHII=CfͭbZH3579?=<<;99:9W o¿%[Wpuy}|z}hJGJHHKBApŭzNG0369<;;989c$[Wpux~|z}fEHIHHK;XÿtK>036;:99>UǾ$[Wpvw~|z|cEIIHHG:~_A12886/J$ Wpvv}}z|lFHI?U238807~$=Wovt{zztKGHHGI8C.674.u$Wovs~zy{UEHHGI?EZ05640q$[Wovr}x{hEIGGI>oq-553/s$[Wovr|xwTEHFGF@j*340<}$ WounvtqJGEH;e-33.@p %mTLo|oqtXDHGFDLX)32-O|$T~jwwvzVCGFH9D-20. /iA( 5IEG@3/00/@PZ^_`V-jqtuti;ʧK_`X^[YSCFEE@[m)0/.AB7ҀU>$*&0LO^)xr|}|zyxvutrponmf{_?]XWebba``I>AB5срVb!)'(>IX)wqz~{zxwutsqpomkke{_?]XVdaa`_aI=@A3πс΀Tz+&(%4CR'vqy}zxxwtsqponlkid{_?]XUd` _`Q>?A1р ƀK?"'&&@3y͂΁W\('#4G#spwzxwutsponmkihgb{_?]XUc`__^^V=>?:M̀Xs'%A!pmqurqpnmljihfecc^z_?]XUb__^^]ZD<=;C΁ɀB1!%#,>otpro`?]XTb^ \\H:=<7ȀɀȀBE%#&2`qtsxX?]YTa^^]]\[L;h$#"(7GTYZY\>?]YS`]]\[\ZWC:;;5ŀ:{/ $!'3ANTVWXSkT?]YS_]\\[[YZI9;<0n:ms~0""!(,--,+* ))(('&]Q?]YR^\[ZYYQ;9;8A9|i%m}7#"!)./..-, ++**))aO?]YR_[ZYYXWD79;.qɽ>k"(&!g|W#! (-.//.-,*))aNa?]YQ^[[ZZYXXWN98879¼]~u )'&!h~{\"!&,.- ,,++**))'(aN ?]YQ^Z[ZYX VS@6790bĻH7&%''$$|~}z]! %+.-.--,++*)(('(aN?]YQ\ZZYYXXWVTK9779-Ʒ]7,_ G}|z^!#*-,-,+**))(''aN?]YP\YXYYXWWVTRB56748=%Uo<;c}}|y~^ #),+**)(%'aN?]YO\XWWVUTRM<46618]'}|zx{e!(+,,+**))(%'aN?]YP[XYWVRTSPF6557.E%7~}|ywyi#!'+*))(''&$&aN&?]YO[XXWWVVUTTSQM@4546.H<< [~}|zywxl&'**++*)('&$%aN ?]YOZWVWVUTTSQOJ=1435-<>f#)~}|zyxvvn(%)*)(('&%$%aN ?]YNZWVVUTTSRRQMF72324.3{8}(&C}|{yxwuwe!%)*('&%#%aN ?]YNYVVUUTSRRQPOKF92 30'U90)#s~}|yyxvtxZ%)('('&%$#%aN?]YOZWVUUTRPOKD:212)2g<7('A~}|zywvtrwW%())(''&%#$"$aN?]WDMKKJIHGFEB=7100/1.&5^9%+%$~}|zyywutrwX%(''&&%%$%$#"#aN~]jZ]]^L\YN<;2-.//0,%+Hhi/&,#k~}}{zxwvttqvR%(''&%$##!#aN5yASOLKMJN]i@D=4.,,-/0.'#+,--,#(,#Q~}|{yywvutrouV%'&&% $##"" "aNxf[VUTY1iCID?82,))(,--,+*+*+*)'1,~}|}{yyxvutsqos5%'&&%#"!! #aNւ؄N}lDJHFA=81,(&#!#&%%"#*()!EB%%/r{zyxwutsqqoq%%&%$$#"!!"aN Ѷ|lDJIGFCA=950,)'$#" "(3)Wp)!n~xxwutsrqonj% %&%%$$##""!"aNa˽ձ|lDJIHGEECA?;8521.--,*(('( h}'" -yxvuutrppmrV %&%$$# "!! !aNb˾״wmDIIHGGFEDCB@><:98775,&&'$&F#w{!>sttrqpolqJ!$%##""!"! !aNֳ̽umDHGFFEEDCBB@??>=<;7*%%&#+z7u! g`"F|srqpnmlo+!%$%%#$#"!"!!  aN̼׳tmDIHGFFEDCBBAA@??>=;5'%$&!)y"R..Gyopomln`"$#"!  aNֳ̻tmCGFFEEDC@BBA@@??>=91&$$& )yBX*IxnmmjpI"#$$#"!!  aNֳ̻tmCGGFFEECDCBBAA@??==;7/$##$ %r$*"Prjlij("#$"!! aNֳ̺tmCFFEDDCBBA@??>=<95-"##(i~4e\qgm^!#"!!  bN̹׳tmCFEEDCBBA@?=>>=<<;83+"!!#X|I.ofl5!#"##"!! bN ֳ̹tmCEEDDCCBA@??>=<;961( !!" D~}2r$QNqZ ! bNͷށ׳tmBEDDCBA@?>=<<;;9850( 1r}|xZ.TdgbZ=<;:9874/' ' Z~{{zyw}e* TQC_dijkgvPͶ؆ ׳tnBDCBA@?>==<4;;::98853.( 9x|yxxvtxuO*2i"R];13 ͵ׇ ֳtnBCBBA@@??>>=<<;;::9887752.( %A~xwvutssvv[SH#&#'DMj: ZDʹӁ ֳtnBCBBA@?>?>=<;;:9 8776542.( 'syuutsrqportqmkjsG^D+͵ՀՁ ٵtnBCBBA@??>>=<;;::847765441.(/wvttsqqponlkjihhefV `D&ͫtl>==<;:9988;977654420*(U}rtrqqpnmlkjihhfhc aE' ċtuYZ[[ZZ[ZXJ9625544335-xssrqppnmlkjihgefb(!aE'eWWVUmX6766554324&fvqqppommlkjhdgi" !bE'N311.-,. S[56654/33 Uxpqqpomllkihhgdk['!bE'icdbbaa``]c; 3YA9<=A!&NJˠBbiZkm*eq(R\..>haba``__^\`3 =\W`a`cOBbiYkk&eq(R\..7f`a``^^]\[a: Cb*BbiYkkfq(R\.-# b__^]\[Y^C Ca(BbiYlc{xyxyxyywap(R\.,%Tb\'[ZZYYX[3  ?](ĭBbhWqjhglv)R\.+* Fb[\[ZYX"WTb?  1V&@^dUdged%S\-*+"^YZYX$WUUTRWP. K" 7#  X[-*+!P^W&VVUUTSSPQY1 :ZZ,*)& (]VWU$TSRRQPONT .g \Z,))( F[TUSSRQ PONKS *} ^Y,)(($ WSSQ#PPONMLMK )x89_Y+)(&& *VPQPPONMMLJP- .w _Y*()&&#9TNONL JLN/ /y E_Y*((&%$)DQKLKJKND$ 0}¿8E_Y*''&%##  GPNNOD$ 38E_Y*&'&%$"   %78  #:Ŀ8E_Y)&&%%$#!   'C!¼E_Y(%%$%$"! #  /N%E_Y)%%$##"!   8X'E_Y)%%$#,!!  @`(E_Z(#$"!   Ec*E_V'$$# ""!  Cc'zcE`fVZ [Z[[ZZYWURPON PSUXYX_nCM^[YWVTSRQ RTUUVWXO }7*n/x~ľmtbr{íJtF _e¯Āü:m0;ڔS˸}|5i¿($~ߓPfSWD89;=<<:75>QOPY3h$t䓙O>=@A@EGFEFFE2B<=<;873HVRd3g¿$)t䓙}P@EGGFFGGEFFA@@>=>?>?C.BCBA;78754CY`3g$[t䓙XADHEEGGE=:;79JMLQSOHKI835766<@A?@?>:552=Np3g¿$[t䓙lABHFEHE=9?`{Ʒwm\C83549>>==<9416Kx3f¿$[t䓙T>HGEGF:Aeݸe\G/247=<<;94/5S-e$[t䓚GDHEFI>=pػOF,137;;97/5!a$t䓚~AFGEFH7W=Ϲ{L=+049976;Sż$[t䓚y@GFEFE6ǮeA./764-H$[t䓚AFFEFE=ȷX/076.5|$[t䓚KEFEEG8¿‘D+662+s$[t䓚_?FEDG:Ĵ^+332.o$t䓛@FEEF;oEz*320.r$ t䒛]@FD@Bv&22.:z$ t㒚IDSG8m)21,>n$"/Zߒo@EDCAJ8\%20+Nx$a=ECF5=H+0/+ ?Y|C) 5FBCC>0-/.4ay??DCD=[E|%/-*NzF ŲkBBCE4R&/-'rCt:DBD6Z,+-'IǷ?m8DB?F Pj$.,(o=}h:CA>KU3)-&B=}e:BA<|c8AA3߀Tb*'+m<|c8@@4܀ڀM&((!J{;|b7@?4݁߁XA!(#6mu;|e6??3܂[p)%'Vn9|e3??0ځ܁׀M)$&"Bf}8|8>?-ـ܁ڀ׀Ā8B'$)Zt5| <}$"Ho ]1:93ҁӀҁ΀:2#>oͦ {1::,sЀҀπ>þ}4"/[u<795Aρ̀ʀ9ćz#~:!*\t l098*xρ̀ɀ:ɢrƽ($xa"(Xn 86757́΀̀ɀ$¿`˺(%${r! Kl  a-87-eˀ̀̀ɀŮ6»,%%&&#"r!Ei =456*́ʀƀ=d7nPt!Deu,7536ɂƁÀ Į"`ƹ(B@tv Cc} X,65/7ɀŀ:cĸ}@a|8045,DƁ>Ɠ!7>`y  3233+H€À==`÷">^w x,023*: p '+$>\tl4.22,2nj%%D%~?[ux4*11/#Xž:Ħ.( s@\uG*.01'.nƿ;ĩ8&%Bp?^wQZ1*-1.$3eǣ:#*"nE^z*Ƹ(tI0(+.,"(Kqr,$, vj"O^|߰QŠiL7+(+,$*+.,+ &+ Vc#O`~3118A6.)'&%*' ZɥmZC<+,-%$%$#*)(&1 :'Pc 432a`[]__``abcbr&^ʦ~th[TM:;:9:6%()H-G&%2*1Sgc5=;`@XTRPNMKIHFDB@>>2a-aɧ|smjea__[/$')]'&=Uk;5>>ZWyrkd^VS9_,]ʧ~zxvzb$&%'v&&"!.lAXp95>=ZVzsle^VS:`*Y˧Q&%$!K#wz!EX LZu85>=[Tzsle^WS:`)V̧J&%"*g` !T.-N_{5>=[Ryrle^WS:`)U̦ 2%$)&_,- W~8Re5><[Pysle^VS9`)U̦~*!$$)$EX(XY CTk5><\Nzsle^VS9`)U̦w !#$%/!a +!KXs 5><\Lzsle^WS9`)U̦j "#$y&9esr3O_{5><]Jzsle^WS9`)U̦j !!f!W,;>Rg5>;]H|yzyzzysle^VS:`)U̦:e! JPas%KUp5>;]Fvrsrs rle^WS9`)U̦4i&! 4m.SdfbZN1:N^z5>;^Dnklje^WS9`)U̦o)  h%{)   jh "ISfȀȂؠ5>;^Bgddedded^VS:`)U̦7 =^- =!7M[pd5>:^@_]^^]^^]VS:`)U̦9 JsiM(*),SgB %GQg{ y{|{b 5>:_>XVVWVWVWV S:`)U̦1?'Z BM[uՄւ5>:_=RQT;`)U̦ /2'q1KShͷ͢5>:_4??>??>? >?>A1^)Uˢ@zd}'IN`xϼ¿ϡ5;7gPOPJp(VԺ@)0& CKYpϼО520PYVUTSXMǸB;' @JSh™ϻН.O*TQNKIHJ9k-u" 4HPcz™ϻ¾Н YMGh_e 4JN_v™ϻН!gGCkEI 3HM]r™ϻНN{ýF;3 6JM\p™Ϻȃ НPAC*.x! 4JM]p™Ϻȁ Н&gſAP (!e6JN]r™кÅ Н(b@~uMBKO_r™кНbۀ@5_%8(EJRat™й Нbـ@@% 4JKUex™йНbւ@?"  8KLZj| ™й Нbӂ@X% FJO^p™йН#b@n - 0GJSbu™иНbτ@J=E>JLWev϶Ϝb̄@.Sq;JMaĀƇ؜΋bς@1RJ 3JN]zhw bɀ@.O5 >OZp>L\[]JbɀƄ%@7 => Jn|Jbň—@e $'[ JHb@| p#<  OGÿcA* T#Q iB¿a ;2 %!~v8-;Q3r  c!~|> s6$  +~}{}y W2|8RX~~~~}}||{y~$ Q,u |~~}}|{x}k N*r )Y5|}|{!zzxx7 ]&q8$% Ly|{{zxw|~@ )`&sv  \x!|j- Ca)v8T ]~|e4  "Pf-}Ŀ8? 6S@  CRs3¼.=   EG\:/D   -EIQnA b#   %=JLVdE,wU7'&%(4BLMR]lzH~~pc\WUVUX`jwJ~umhfehnuGq~}|aƷ9 4> |X  Avħ /ǣ|sbӸքׅƕƄŀÀƂŅ ĺTsF }„Ä&z΁νCl¿07e˰ˀ̂URS^ɀʃ;f$׼X>=AABFIHGFGHGFFD=><;873J[WkЀ˼;f$+ןV>GIIHHIGGHFBAB?>?@?@DED+C=88744E_gʼ;f$,c>DJGGHIF><<7;MOOTWSKMK;457=ABA%?:552=Rz͹:f$5ф@BJHGIG=:Bd~~r`E83559?">=:408O;e$:\9JIGIG;Bhźm`J/258>=:3/6Z4d$[HCKFFI@>tɬSI-147<<;806#a$>GIFGI9\8ȟP?*04:;87=Sƽ$[HHFGF><ɞ_/187/7}$[NEHGFG;ՠI)763-t$o=IGFH:=e,453/o$ߨ>HFFHn$ .5yˍ@GEECM/f$31,Ny$]Yt:GEH7+L+10, R*d=$9GD?9ͷ2.01( ).00112&2ƌƴ/@ECE>^ڀ؀"Љ%1.0*(03556<47ÃĂֹŀ϶DF4XY&0-+AQVUSF515ҿ˯~;ECE8 F̬-,-+6PY[ZM712ϨՀt8EC@Hˀ'u#/,+>NTVK610Фn:DC>MLƽ8)-*0ENTJ610УҀ k:DC=Y׀7~ -+*8FOI610Уj9DD4NŽ=&+)->IE600ѣҀ j9CD1 ݀؀Հ̀)y-*(3BB50/ѣj9BB3π-Ų0(*(+;<300ϾѣҀ j8BB4G¿l,)(370//ͽѣҀ i7AA5ڀր7¿ǟ&()',2--/˻ѣр h7A@6OG!)'(,*+/ɺѣҀ k6@@3р Ā"*&'('(-Ǹѣl3AA1ڀր:è*%'&$#&,ķңԑ8?A. ׀Ԁ8I '&" #+õңҳ==@0 ׀Ѐ̀/y(%#)ɿңЀ ҳ9=>8R ݀ۀ р ǀ ŝ% &úТт^6>9Cހ׀Ѐ"5%$#$ſݤ̀ q0><6݀ۀ΀ Y%##!Ɖ̀̕ ҏ5<>, ݁܀Ԁ̀̀|%#! ̀ μ=:<3_߀܂׀р ǀ ď%$Nx΀ c2<:4߀݁ۀڀ рˀ́5$Byˁ ݳ΁Ӆ1;;-{݂܀ہׁЀы9#4iήЂ ͵>795D܁݀ڂـՕЇ$A#-i ҫЁ u/:;+ڄۀڂ׀7ڱ}ͧ(&Ͽo#+f~ҩ̂ ̮98868܁ۀڂ؀׀ ìˀ!З)&%ǿ#"V{ҩπi-98-kۂـׁ ׿9΀ˀ˪'%(($#ž !Nxҩ ́ ʩ?478*ڂـ؀Ԁ l:̀zYľ "Ntҩ̓ ˀ,9538فׂԂ־"kƓHG!Krҩ΀̀ ſ^+7609؀ׂՀԀ jˀ&Ipҩρţ:156,I׀ Ӏ٢!9Ѐʀ&¿!Gnҩ΄3345+MҁՀԀӀ=Ai#Fmҩ΂́»-134*=ҀԀҀрy 'ǀ#&Ej ҩ ̄x6.44+3Ҁ ۛ%$JˀȀ Hiҩ ́ƽ5*22/"^Ѐс ֶ0) ɀǀĀ HjҩῤƼM*/23&0x΀ ׺<&$GˁǀÀHlҩʻd3*.3.#6n۳>#+"ǀƀ Omҩ+ɀ͈"ɺO1(,/,#)O|ź~.#,ǀ)%[lҩ!ӴuT:,(+,$+-0/, ',]ǀt&\oҩ4229C91,)() eٹ¸{eIA,-.%$$#$**(&4ǀ¶A+]sҩ543ca]_`abcd eecs%hٻývf_W?A?>@:$))NǁĀĭO)(8/7`vҩ76>\Y{tnf_XU;a+hٻ¾n$'&(Ā$(#!1Jeҩ6?>\W{ung`YU]U{ung`YU;c)_ۻɃP'&",â g`#a€22[mҩ6?>]S{ung`YV U|W-/.1a}M )S^x¢:CDDCB+6?;a@ZYXYXY WV}$ ;T]sҩkztoid_ZN^ ;8556789::ͻÀumy=;:85:̻½z  PW :TYlҩjytoid_YN^).1Xztmf_YQ6:ͻʙC: >WYkҩi ztoid_ZN^PS11W}woha[S6:ͻ-3&;VYlҩhy~} ztoid_YN^'$3;11U|vohaZR6:ͻZ *y =VZlҩhtyx ytoid_ZN^D"3612S}vohaZR6:κ¿ɐ[ MX\n ҩgnssrrs roid_ZN^'"3612P}vohaZR6:κ:oA-PU^qҩginmnmnmjd_ZN^'"3613O}voha[R6:κʑJ(;VVbu ҩfdihd_ZN^"3613M|vohaZR6:κF% @WXh{ҩf^cbbcbccbbcbb_ZN^"3614K3}vohb[R6:θʛ g(  "QV\mҩeX^^]^^]^]]^]^]YN^"3604H}~~}vohaZR6:η|  66SW`s ҩeSXN^'"3604F}vxxwwxwxvoha[S6:θSFRGVWdtШaJONOONNO NONOOJ] "3605DupqpqqpqohaZR6:θ2bDVYlՊ^"3605Bnhijijha[R6:η6 cX :V[myTb_]\[]:"36/6@gbcbca[S6:η2^< G[hDK]\[^J "36/6=_[\[\\[[\&ZR6:η< GG VP"36/7ɸ-N    5PV^{Fʸ-q(*HVYeuKʸ+b?-,*- t8mk@6L Dd^```````````````bUSbD j& V8{LČU!ȐW"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ȐX"ƏV!T$ &P~,-gT,t>FHHHHHHHHHHHHHHﮅHζÿEsCqK" b3zCKLMMMMMMMMMMMMM-M]M[̽M]M]M]M]M]M]M]M]M]M]M]L]ఇJ]ڡ{D]j9]b2]j5]t:Xy< %Nz=2[wyz= 2@FHHHHHHHHHHHHHJ;z=  z=~z=|z={z={z={z={z={z={z={z={z<{w;{ڦh3{kisyzzzzzzzzzzzzzzvhJ% {qP>;===============;4%{wG$ |ItK ,[K=e{K#7DHIIIIIIIIIIIIIIDK KKKKKKKKKKK讅IТu@ʜpsy{{{{{{{{{{{{{{ynS.&^cF==??????????????<7* #Jm{dB$ ':DGHHHHHHHHHHHHHHHHHHHHHHHHGB4 ic08 jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2d#Creator: JasPer Version 1.900.1R \@@HHPHHPHHPHHPHHP]@@HHPHHPHHPHHPHHP]@@HHPHHPHHPHHPHHP]@@HHPHHPHHPHHPHHP ߂H1& TоLo>0_߂8f"@ E2!s&j@,DJaga~U@_lObsm߂8nޟU" rJ^Yr~')ȓ1?S ԧNsa9HLJ+l߂8lCU%Ϗ}80']Q5UodH+&`%Xwү >l3rXØtw:ڏ!o-)ꕙh#.S7MEX[}ZT$bg .ffUkK\%פ(ٲo#}>$:G?%Na$q(2Q$ KsN(CΚ9#bޞuNe% $䳝#ϵOߍψi\ZX7X6|P|g9<=ay'lrWG9dWJ3Y)>u#8 _qҒɴxhI-YQi7ݟ?;Tß'<"K-N!hyC2@5CHt:jXt7fGזe[$)&qBW(k=L Bre~FZ46G8YސUND$ eHtzOFZ ;|Y  ^ %K$lWXҜhA!9x-FdXo%nփ탷GO>%or@l=8u^3h#Ηp؛< $P>B~U`a[bF~aδ3H<#A){;?[< e 1f.z %54q;|VI=XVM.=xkNfXyϋMEEpZjcoՊWz ґ zwzw&GU-ͿE񓰨Ť)Rܓ^}+D╼@i*Q;^|CI8#+x^uAfߢ ?:쉑mY0/z{1GS8q-c})?axc, -;+i7eQ"˪?YeIg>#5**j>=zbQd=Z$nݟ?;h&fEC(S>"IA0U/۳cJ*^B|Rx]z?&5P(8,}J|e\$X;1a~ѹ٭W BX?Uɋ|k. KHHv}1eys` "~ppw иmW NϟB^owLbDǾa3)~}m L&GAU rW ,AW 8P7vY-cbVDEsOH~LW{Cs)ܟToMl-ƌmۃ L޻z$g #aeNw͋ưMplnI&_8 w^(Vss_'̻V8$Fb-D;-y'^FRw oXic j "D"E?w nWq$:]Ed(gj=[ "/_bS6wvduԴDy> {g˔úl.5]7m o5P#P`>!0'垖,&^K(̂uځ:*8z]^^`_ftɅWz>fuqo‡dxs{(nhc.XѧPy8C 0v%Ws=V7x'_G5I f yQ93{nkauQ])\@[=?&k}CI٬z,, D[]Qs1_WM6{\wQPi`a&p$m}n]gǐ6wqDFA;E?eq r78- Hg|d} r ;RL'=dCK+W>a%f&DNqnEl^#ѓ07ӊšV]'讘/s {lU`s j:NOw`pĠmru{,t2v?޵Ʀ-hm2I/TRu&t-UCvI/AzN6Eb*2Lo[xSgʗopƙABtYy wOVʽ/4&;-I1֣ ]Np0ďʤ숆%;@n3˾ -ZEOz 9!KejbD0.k ^6ol- QT)bW|Z@󽜌M7Q0h0퓲%4uMB R4 .Hh^hpoV;@FD$:o)@BxbKF.eRX4 s!KkT\->Ԉ!t 58XS`eQ^W^|B[uq_g ?1_vxoT@# J*OAYapȁas31NI)3 O1|nLMk Y*H &Gqe7XMlm4dOD9hx/u&=;xfOs臮ŴB9/R}GXqx^%G*GgЙ}!vZM$Buk:8h3 MW-֨IkSu#n;Ҁi&=%l nw>T j+T1%DHR<~ L5I[3bTEW:vo kPM]V UC,J&nIne!weQ2t[Hc\C,Ǜ@a;-M6 공EBO  j`U<(=3۹uqXձQH=zx Q{YV[#أ;hu&L䜈܃F_;mڸF^XO!w'9b\GO{d(3ȿG19\BLG^Q&wqᯱj;E?ʸ_roGd|Qͤ: {;n0`0Y/h !pz+8~PE? ~]I%&_Ӯ tR9Ɍ-ޝă\Ŋ'H<P氄5@W##}m$5Z/Aܟ !pA,^ec0x p!9=_fGB`dlG*!qm|5^ G$Ďĉe$iǕxwRL gMSTJ˭%RԚ5 c DѯpݿV섫4cGG$`o 65}g쇥fYQb>z17p׬|ufS^~[9omk4j 'w͛Xrc81 _9Odz |vw εUfZj]/,@OŽN?vgz&uا6Q9b'UZOSF|ȸ8݂MnvVL0:Ѿ6ѕ[z2~_Ԝ&J9L#@ngW ֿ*p@VZ4ύLegcʜ͘`)U"\VH8SݳBp<~3_ wywnfhS 9W${J[U)]x:RҚ "Z0ƹ Osd̈́7 wۢe1i FLd'v s#k@JK5 [BI UŰNBW9=(}5^gnf+7\din/CS8 9I~]Qpo]4{Iorݥs\TxSol1@w%^֞e<-W& c*m6H=!ϒaoT!چ2r0PuE)h<;v| %pF9)XݲIv= 0xѹIg3 V35Sz[5r}_Mt+|%$n7YsT\Z=r2Pd}␊- ?LKP*r-A~H Jך˄䍡P|X6zY1Q[⃌4,@B,Ipx{U@O?:=hDA37L: r j /V3CJDu#+zgQ4]IBJhzdB/gLd5[qL*V6uPlj 0ecwP֎\6.MW&..DK//,P ?TJ +tVo38NX똖`4-#3Y۶a+,.nܼ? O{:vB_AC !z]=' lmOUKMsNV6?̏5s=,'HF>?i)\=O؟X> ?Q(gtZ{=pp:,m'fnBxS2z ä1v $G(d0d2(쇒iHU(xJ$ MišB1bI\=1Yf(/Lb`!A"*[ nffm|`֋pUdŇ%:lMm5Úgӈב Ȅ 2-4P&`jb @lo]Lp+a5dģ['JwsQ4m^g5 +Vhz'#@F+)sj~6@U9ψ(ZSmMc~l3)))ݍ@\CÇw6WԨRXvl&3jᭁ"l#RQN( UgTƍJovۡnY%7xZva̿f:vP_Q!yt 8\ +97_D$ݸѤ`|訜|@'v'[m0 u mu;//Hs7ί~0޽ˍ0T}bWutpN5y6poh{ڞkU c.wTe Fmm SqÌk=}"d|gw@,ik Ӽe cK[K VpD }$;̊Ƴ{pd@mn̶>A1YqA90Ǩj`2$4S%6O̠\&)ŭ8yב%JnV^Ci43ry)4=5j=WGNy~O 2P1N)V'4RV?X̧ὃ>=E'Zx'VȀL{=[8a5q(1vQo^Rߎ 8P&NTF`\ ߘDh+J^G{񝦂Z^Ce 2Dʮ,)yt??<n LPfaκՍop:x,#ZMjQr*]{CEcT*AG羁Q[$itH H>O<' GԷJ.O>y-^a$F$2Є PޣKB,y;3j~1z.‡9ɴvw"yꄎS(@seelS؅w(@RuiIyʄ_R=omYLet<:c U|oJY ؓSAf4Y-G aT'bHԑ(s' LUJIiLmG;/mm4bF׆9՞uW+%]qS0 KxcvE/|uAtFGg q-M|YN;ݢ蓌Awj9Gy, F2GdUE=YvS,Vv)BKW8qnM F!I{&jZ g_#Ŝ{4OGh5QZD{jSPT[xw@KS=Jbi孳G 6MLA@̷FR!lP#K 7F3} ?JL,DߤCE@ l0DA.AevOJa"XypVrWH}@wU OzxxMth,U<bè$C]bHpd{@klʯ$[6ʊNs˱gg״31 UZ#?cWup;X06d- Fc7/UeI`(szWC@G%MV*f%{߫_A!яw,6[ׂ<퐇I?Z#MH%S?,\PDGE*|MpoXG|eZRlTQRl͌ "q۟u)hւkR֥$PA9xY݇߼R!["6߱w( wAҞ`i[<Gqo;ux;^UexYͶh<ɯQ]ۆQV]1}B3:JӒ MVx̔31;B,&=|vɽ| >UP&sЄ_N"b) }VBM;G< RF4oET.rEM9y,bL\`)B}ia=Im;)’bq4^:A|0R0}P IOl2w 8(Mm8pd~ E= 32O 0i!Ùj)n:?G[ńCW]$p?(} C R,jN1Nvș!KQrLH<"قKn$d'^9UK, ?(0"kI*G\xARZ!zhG,w#*` 1`[$ Vq2-).+nGݳ?K##{+"`..C5?WQD&_,R< `ւŪb]A JLCLܓhfX͸XFoWAdȃG|A \bP@ Tkbx&hc1P>p:iz uD.{7D>?Gw'?AW;B4 WkTjsp5R -yRD$ؾq6.ڬDz G4"GZjBe{UΛ I3U㊥fN(LJ8|٩Zq_4N ٰ+fɠS $pdmjO/gN`!`lЀ1*Q$[Fl::!Z+ Hct? - {j.v&j+}A5#Խ?:ʀGc*lLZekta)|oDBv8x/DR?/,}Lj}_T/99Uܧ#g8{Sʧ缮Z!-=e(Z]Tҕ? K0`M'3Dz8K_x$2@y'8n[)cfZE6o0J̸e! o4F\Ze)G4 P[~Ѷ^*/J{w_!@cPG..B~vd׳>9+h1VB (RBvNOy՚Қ!?&-"Z)>Dʭ&A j#<G^ZÉ:2K3IeąqSWJ' 7,4<ؐ3g҆*ctyVK$NP]>cw2>k/8`7Qx;9 UZT}*үkɼ鬜22yiqx Q /2'hBnͪ_?N3-N gl#l"`B {4%"!_.f{F?Bn)<8HᥕH@E<hG5xs7,!{(A^wt"?\st4-i,٩ 7u9@EaODT@,d;BRzJqp}Ώb̉](ɮ 9KsBLg!iŝ{rkGD6He\{:fۑU\e'5 9 4THluSʾn@I b\p%CߑR] ]g0yo| @qi*_ɡs4p!ERᶹ}Pw 56{ S[oV D-5j{HtAϿ3FUpnMs42 n7휔~дx6S5T,`צ6̮/_> Pý  ֭wE uQ! }Y`rS&c2MfW)#% rZvGH99U(2x,VjtC4.H ?}EN!R~2A J&џ@ix/lN/d/* M/yNڕd)@Ǐƅ;8֪a:M;_kI 7<۔X~b](FyEI~7,)I0.*+%&VOEmu/-ܓQ_V:'M[vx9h,!/Wo3Ǘ"3w3n[|dUifjW:9e ŴD;rvM 6W7.M2.0Mfkkj>?ө`UɁr,[~꽢>52_Y /C˔/JpM^);8"H,/{@"1#ځq)|#h2slKUZ9)%2?]AGJo+KCL|B7GS ! Θ;/:4@N&iB80M&{m`DOU-PA''Swua$X(@(rs+5ژfMb!ڂ~1z G@TGq=ݝlV7Km 9q]Q= D/)f;^,`73l);j1A`Yx.DixFty D+mY!rJNmGگ}^JbɀgߋYIφ7 ZX)yN_FY'һ)jv j`Hܬ0~&oEqU>D$* mVz{='냘iQ9|I  {'TDf\e2SLʵ 35?Ka KЈLfq9m9ehV7=uqPF. t H,#H#5՛f$"dP Vm;.o%ŭ9ju!4祫u١Zo v<| Цt#D؋-;&2Rx*F<RlRDr:hM~. ӍGR\11q~oMQ[* _ sTI 5GUc +vbY@h+"8h:m¨[uяJh"/V&Ya|b$]v>Pqiw ݱBYDU^ez:Esa3_*ujZy/xfK Z7e{ p"B6Fy{O6 *+S`:7$?Ӈ| J]Y[Ͼޞb(~|!j2Njp[}< 94Z )?H*4tJ{E{!w(R2NTj@ѳ%DsQ((g'u+"}h/}h(ݣْO+4]`im;R(2<=Ȩ3?gjtNoAiF^eY%&ѿ$ #bǔ]ONq!B2;ZL?3r4?.&# 'Wxb! }qu]ir YrjTR**ڀ;z`!T*evֈJ8nI_ظe9 %V_GIr<#+^I*}Gc U} TP(Ӗ_Y6jEdyW_Y hi?8eg0KO{2Rڇ^1_O&Yꆥܞ1IQhnt!,;1%$&:MeIbUͬ+_?N{=9D|" %&"Y&264K,MK~ySNtcU 1LT q?] 8L.gSg(5,QY7*z=w{x6'zkZ9CGMH~b.hhJ4 E$=icTgAV|Ura4e4'Y!B8Җ(thcqҧ[wjc֡cU܇e2g^|q/ԻuY+6sc3 CwXXEKyB| 3n `x;'lXeC\TgOg) .UE羨Dқ`rTuTMv@i5O (@D<`n0v ks6T1Vb> ˃`Z?ΠL,ޓZh#m5BY &s;Hڜ N> nK[h@(2g8 UU[h4tRW#~CxG8wt:m.y% eA֨FfmqitP{_ 4 Wѩjٌmj}ey 9~_ ̷6+ K֡kR1rOP>:4YTNbP6%u `ATlcӖJеfjeZ 0Uw|!ݾSÚ;Q6#ԩ\IAm hPd̥2 W?ou) jl2&h\&%#Vo~=oY(|At7ļhJ]Ts'7Fу9N~Dޘj< 9]OPp1#u&ɧR .lcRk ,ԠwBOr#IaskRMpzi+{ žG[K'eёH"򡔦u< *\q;˜Z%Y  4:mTZ^CL#c^q )5~)qߞWvLg]8@[. oG\3gr: 3(pj_5 `<g?2olۭ5{5WŎGq(N=?u7Bgr\;%-{O?2^eZ?*_hj< s;7+CUJpjnшVC1&<}5oPGqoqof)66-Vxo m=F[gl>oZJrB Y ]oyc01Ҵ򃶋> @OÚuMt*ˬI/(/xI,NzEyOŮ9@Hs2lbGvߣr#7uz0E,gr6ߪm TEsSUO"qRs&ܰISa.$B{ݭZeSnj2X-=S6mj/!Eˋu'\8?xѭt,e"{Ohׇ^ݐxw`~trdz^.x}A&Y1˟?.4LFd0JQnW.?⹛51's+=vDDLf;tI xHя.P3ZL/8g m#4!,FhJ.4S͜&&d'1܏l(>tÁg1BuZ{=M Z䪚Gͥt'4uHH$C%ݳfzi!zNb;reG[>t3ȺC!%Lw3i~'u^+v @4`gїh0Vw/ߕ͓Wmb8nvdPJ N$V=oYKsNJܧ $^C@8o5_9%'j*x)Vd>* .Ja=k~TWz`@ #zÿ lϓ9" qP;N ,N8; f}d-YnwaBG$EIfFÇ>h+]" •Jj%்Wͤ^ýި\2gBg: 4&< :j9TP[̖LK9EbҚ j '(bVhxk: r=^8LPgf,_*};6˽_CEji>ݿmK}+z6«e[2Lϐ@B o խ9D,wyzؽX[#S6)o,) جS?o\e!;XS62〗=עy5qjJlw?2Ԏ[:2lf_3'p)qؐC50b`C6[iEǨ&)v&l5. s?-.32^KM.>} ]Gb Lƫ֚\`ۊ;>$5$yi` 8~d"n5I ɜ,x1vVgxf&ՒW\Tuȧ!4&torZ? ~y@Y׏-.T*>RӆFk>`Xi10Ff 9q'fˆXfOt$!?x# `Ջmr ;iK_HYK?M]~H9`X.Tk ܂eG֥u3.|)//|Kpޯsmʆ*`8h5raCMEƧds2cY@K:k 0&\=:B2Ѡ `M2{ׂ;a[b'5KDX6}œMĞ qq \ 3Q%[|z|N <:6FC{[Qx3t1/—A"b e3KYq\Y䎳 Xۜ׀ff;KeCp!N a+BN*gN*"]D|r:4{zhL֏q8ڢx#=/wؒnrsmM,`ي(.EB@tPB ˑNs-y܎bRN='kV&@ء|kvP8j( 霛GQ"0()3AFI1\ M)d :#I/f[.;—^\(2!$:p<gξꯓ Z,o@XŁԒl'>lm2iK KD0MY!VL#]sD(]*ڗԢ|wN`x?.bVQzjc:q3cOgBPB,ّ4wޢX]54'v+e߄v8n5W]kjBA?Iz)>?X@>~4ÙG3e\.,ˍ@˿T3Hc~07FpeIW3xDQH[m4ZO.ؾg +F3jmo DèT_ӣx"X É 'xW_srzI" & F$tKG՞bW*R)[xe`dž7%K S8@~5ֶBkqn^˞I#'`#kkv_')|Y.v_ɬog\MfUoR?vAU '.WTЁ~zlRK'Asp\[c38|X @l`^5Pdս,T#P*txWe1fL+ b/L4l24GYxa4#{ ) d O7[E0AC|b}na$.`=+4⌰K<6l۸[)Dpæ/+ɐ,S A/15eL_qwDB|s̳6NײO~Ld bKDdB6 *{Zmჿ =\Ig {j7< .v#S]{u89 94qWm?c Z% 1Fe\bp3cW1.HM/)#N+H~,4uPr'2 yֈ{&(4dt@5 XWk;оYm~)ۿ<o"+`teAKgOa4ZQYf8QSYpo2p53D dw/FYɁX(a%}- `JBy@oU%B'i\8SMؽ^ kl>ý>^MUowr.sQEܝۣOԳJ9wUt: JyI+Kn4&f=- qYߠˑϧQ ?bW]&r0'ݛ(Z`t`uQLQf8tXvnx,x"?=Z[-+Ѻ:0xDa3$U؞8C}\Mh2Rg6M}lWZG< p;! ýdZ kS /,o/BT[hIi "'bE0b1DG\/XG闫o?=i)0vD3xT{iulՈ\?uʺѹzJBeX=<>3 7ӡm |8\K;/ubo[*[| K+1`_U+#G % D@@h9|c7 =O2R^}l3b]/Cl64]REqo) d?-Å}D0HC7a<>0 wI cr̘GJX_8QtHkH3A]WDJļ~RDETxb*D6]qfo&&]B|'}c\K,[gޒ"vT⫃5Z!t rg&Ϛ E،)&Y5zÛ:x"&|J8 , / {`GxLY~E"S:B&ܑ:wͿ_aO'%R8k@ɺŗ VՃ6B;nF aڼ}f^g\;j+`5 sO mK/7rذMlF zEQȓ/ Znqw<Ffm_^ڜNB4Fta7TRD1BC$$ELkߡW&*Lr +>()5Wu4ffv/LS .8H!H*4aRsm!=siΗvSdWt2>+H#:љeʁ@DThte7",@%xL(G/~/o:kt[-@Fqqid'0#k)6m˩Bܨ9cfd *|>p\ (,z(XqP1N\3]oVԢ[SJ,cYwb+iv9\aj)O<4cL~u+{)-^moPx ͧUQ߹Jd/Q 'Oyu?ED^|2|Syql`rj qRIL;q}tDM4!,vTd<| Fq P_cS@j{\ qv|-a~#쉣W1 FYTz v--2kl-nJ(8EIn+*0E{/l]{x SNZ<Բ#R<[I#^'"HN*MNfTGiC[څ7(.l.h (=nyXI~ Z.TɫBѼIT}8|P2s+cHx 3BF9w;F'7+wiIsk;8[Ɠ1"V NOfz"D䙯<\Nm6žZ͆Pwӟ3Wa}sʔhGN?kCoaF WR:MI ML#yy0`U:*4*9$I%4¹Mp1p-y \TЁ[K&IOo/WkR0 eyђ.ĊC<61Er~Vi/kt }lțM7x2*Y|%=%X;}udBB&"HRvkI.I7>HrK.;g}'$4u3 /iK&`YE|۞pFp HV:nr)ݬXNR꽬S8:0t#\w}aCnr)r7,ا8^\a 7,;VaoE4 Zc|0/}I\lS9:Ny Gɛ`oЮ;dӵxO yN<)^d%F k% +mGSΖ*v'oKĬ wz)Bd> hLDMBG^5XOR_}1niY;%-w8o&gg܏EEil0%l2l t #IOzљ$rc>7;UHsNvP&I 3i"m1&nRm-r*v. HqN>4UGWJ;jbďǵ0Cޓ*g 1±]\ *ݸ ojɃ-GDd(70T">WËhtV2}y{;C;>k,Zt6,pUjgC:upؚшNrܠib6BN*!]4cDix 뵔AJ2\{D,ޖ gn]Y\Y$WeFCEItSȦΫ\]>;Z-Oa ۛ)VǤKsmsjiww]fM.2"LzkD~,4kR>}FKm!%*C$?0;g 7CɘfdJb ;?xO˒5U{r:6r`7 ZYOdg\] 汐cȺ\qϢb''\ިե"ϙ=} )n{꟔ U3'`grVSGzZU>Nfdn0|6ЀRbдj[MRGd_%l^m 5R#I=?xEL4ų s= Dׄ=\Gٍ"0~凛>3hRĻ BRXfL aأp?c%`C$6Վ_~R?us]ЏUҋ[Kw <+`+@BދUݰ? )oA !b O\,rܩ5;N=BŁЙ=V".򵁞"yܶ8".ou<^?Գ*>OoF,b¡4KPh'LAg)yaH,>ݥR[>@xcUEKɺrn J[ 4T++ 7c_=c)*265I,9}~-<껉 /6݃7& _R BOƃƓ#X"\PeOհ~%D#z<_9{]9]wLJ~fa= xݫW*/Ŷm,9 YzfʪDTGO)i&Yb܀WsNt@TM<(ԸoieD]`pFkL,|.}ǾF^ݏRVw"jvd摕 %oZtNZ ]]l׆Z{ ̺ y0u%ٸu#޻#W1ȉwŭimZP)ɮf@t mOe_2p51B]~ ͍eIW?D * S. 7ɽn9$:;퍶#4 wI@Qb Tmc@zPVy%3`_!aXpSH]%#Qe>feӨPf'3J#aC [3 A׿i;0(L&I GHC\\G+,;z&I;qpa3)Jg   l-mΥkUф s[p*S"7!Qv6![TT/H~"LG;"Y=q޾wB "ȏk2DmZlT-h@NaV̕(h a,~'2|"^_\XB'c<(w +*QF 'wRevboԯ9F˃7鶼d&ҟ1X"P]Ԓ̧}/5<0MOgTKV^iCc\b׃V@N};>O|yĹq$]H~5||R*'a_ؾ#sblb32T/X!/+.9>SzWps$q|+t5Ih. m*=$.:Xt=v W4d劵V{J֋DGFzؽMtyϭGD[te6A?xIG`#=Ѐp0w0c5V&dk!v(ڡa%?#K{?k s;]$FJ"/t0+F姵{-Y PC9ԽgG3gVDR{GTuj M@yC=+%ؓZŘٿ~|#u4Cs )[s(я0cC $7I$_']f-G*L~$νOduX[$VkW"I-WV#ҫ|bu0}C(Zxf1^Ö;Lk0JMN;nuˍ6-܉1hj8zL>G"CΰO[5Wb}r_ۄ:1G,^('WX)w:`H7'<}je3֟m}gڄ:'uZvlhu -rx(E4tBGXV_o Tk T[aA.Y;r>ڊas[ѥr*ELa4 C!K.!Fe!Ch0$7$gBBBO+,{ÆƑ;y"FCe}]hg4,mOZwK#i1qM.LܲҺK#'@Z2WIޟA%OfM$.~  )M6 F=%OmȐu)o^|W͎_d%eC~ˀ8qB}xY)Hl-7"͖ĪvE/UsH];*œmkփԠL6hQ_uxA 'ҳ:?,5|tVɧ>e >/pPѼjoC6X3́w{4-Ԙú)3:Wn&mthL;~va*b\;!*llo˭@*nVǾ 8CyLbћ z  $#QL/~7H?ns/} J@@G2- {LH(1E{7ժDfA|M *˽mrT}e["ٙtK#~PrW o )^ `[{PN Ud ƮXʼl\p"6$FԖSK^Y(psH4)Ƙ YͦNu J6a;j&~_EU t UAzSI›ycW|.bmo6[czwF7VP451Vj̼>R7|O"MWV"@)f|XFgWx+y}wA' r攲n`l ܿ IW,*hܖ^z!JUm_'n.Ԑ9`!o&(8D11"e8,R[zjЫnx;ɘʽ_m/hl$0:h sh`ץ͢4󇀥#mK@Lq>w:h&A)5{ dS\UN`c$9PŨ6{hl!)Trʿs t;OnpT cD% ~EsxF^.y^t_Ŵnn#|1*IQN0y'ג ;a@u@էc A8Jp ξ !6sYd5+04k֯6䥔/;J)4ozo1Hq+gpp 6𹎏- NGIB>5=MK#R0@`hN0~$K%Ljǥ B,[DS"iuCƨ0pSX1'Ϲ{d<~jik5u;;-orI0xڟߋ͌Oz.x i8t"/E(C1:2LH %O4]?`Iv$0s"0VD+Ac{jp藥ym=~Ƨu7EI;`2BdZɯMD}: wDRKa;#rx;1)?fm3jvt)W)2Dbmat}&:'G#\X`dъ?pщ @MQ#ǎqxI xJ}S=od&mdQS^.4/k3GR`.z뮊%a^kLwOn3DAuBj *e}_kEqQ+ o=YslKW~y};X>qwPbD';勯p8sek7!25zfȢ&|()@YA!rłX"~ћ&Wm]%)nT Q/z&1ẢS}&̒$]O ՑZtKhP@vb>f-HUIdnw/V3@UaFP-lA4ZK 45X;߃BPzfLC5L&(ĈQ#yYѴIZ6\Y+RN,/<{H 枅={lq,k d򸬕C0Na@C+Ae%/>@K;ѭD>t4Ӷs  Ck>%UEhMs (.[8Qxu|t>#T8>tz "6;ip|ߟQ͉`-xu3MΡ8~p7XvKE4%^{>‹=@Dg]0+q9oߴ) kN&~ܗqCì6tC -,b|\͈ZkyW!P<)揁 ;a@s!'8SQ d.$Re*nfeA&8/4KVv6vL{?d'$;31ҙѳ7#W=$Ҭ&abI(P:@SqT.^$װfv6/o !7eԘTY ܰ/~6Տ39>:Bz ܺj-2ഊ*xel}*|Q!bM)5\>?MkN ,9mL/+TEWLM _ՒNJRF٥Emnxuތ 1gQ~pJ¶>f/]z8FQ?I@TH5Kti S5 Wc}A P1zZNfvq8t$! DP0*,J8~ z_TU dw* `˰Anr*NT{av]1]f'X.[:-uHѾ  ޒӑETmK+ ՚,wN UON^gdܝp XXb2gg,#Cn2LB54'/9&4 Mx+%<.Һ -Y L8#vpr4ȯ&w(%N,6 L,XxTz^/jE0mMݝC5MG+ mTl[UD)(><[;jh]fan>ɇd}v=YRST>=tM?HxP'llFY Q= +}-B$^]F˽<J9V&ɵoƈ>6B>" Qז oo26ydYՃkdRD[,Q@=S6VLB"6@Mbmf?CBþq÷c%/3A.{g}3NqjgkIvUk],Ӫ ~T +sKxIjfT~Rf ¦dk&Hp5H5SQ$kz^},Fz`7wO^~\XHQٕV sBǒ3X#=ntH0zk XD+129"Ȫ2́ѷv~k8tZ1WhFd3_?;"~:[£[]$sQA(f.v#ѶY+íL;)A6W.l]D \ʒ펪q`:Ɩ^׮BFGd1T9V+T(]t`PTܨ<9>%-I1;UFbnuv܏xݲYj" Ԧ(IF&l?\uo ,g8j #Eܙ<f"p8:#5'lE9INif^mFUyw qϨ{*3h ^^s s H=bZQ%G A{8JR)հ@!j(`q= QJ e?66wGjk- ؚ5/ВVS\Bh/x?Ύ[HU-w/Ǒ8#Ͱ)ʹf0O.S*W$gm:Z983jߣXa`폎fQ$u]pO? _mݷ/Fj}~ .N5;'Κ$c5gRns{zsd5aMne3o 5!7 gL!!OyTzF^V 1 ?N(>1$ݱ~,޴[1 $(MoWV].#܋ɘ\ظS𩗣n|!jIsSZRSzLW#`j砏kfpDɳz +/ʏ~30eWȋ, HIԕ~u?sSfP^3ΉM_Ђ}:3zHn}0} ;=DPr%Z3 ?|0/71 X \4ynET[&I)~òU蔵as{4A:[ }):6[*d_ݔ,P~ϽQ)?'u`!KX i7wcI9Wnx^*58z~ bLW^p}B4 d^Rc3prȧl wrp,gڦpVbP#_w7N(SbfXO9< HN?gS9st7-aUiXV6S{N(|?a:ou#&ywsԅsM:g]Sl]~I4Ӌ 3PH3A'ҫW$_E8^Z|U&pGZR辙O> w: @75:j<1/,!oG"MpgdZ{ t"}&]īGd(!J`-xT|7~k5)Y# Um+(# )qGV&76i\^9A_2=BiD'qB+3]`ZfgnrrǮ^qKܬRChmSX/Zc깿s3H), ZbzX[ҫ,q| ؎<.rD 21E65FDH1ZX<ՅEu9A@1w H_)Tu4':~e#L[4q7SΧ酀Z9DlgӮ@?@7 J-L4aq ')t.l2.N峓]<5,GE$ ^~ej\KIA TjgnJS, B<>$hRT7򟺎/P`<cwѼK۸vw/ѥ#M Fn}»mxcۤmPDBMbd|^-g0XTep ܡCnQ:>Rj?`k{tbAQ<J<[I-+8h–M;vFt-$#4'?Ė^էcggd3m4m"-Ȟ =Jn,q쎉ȵo1%M"|aTr^R [ D;tJR2VE9Pòةnwp'z@.\LCVW$aOM2YE4kGAs9q,h ln!SM1H2#MlZʦC i抦lDH陝"j۝rnIfr0qF:J&KK/#g0Lȱ3m[,H[xmrCJIr7o12#9a-Zn)ګՁ5B~DIjm *%-:j5"4F$[:l/nu{?&ӆt FtN12*㖡6r "+(H 7^_ۻpԢsZ.۲Re.#)鵠wM\ij&z,XߋbX-ۿ8wzROES(˽[n+AR{ffCýݻ`USY,db$^ KH>4̄z>Xs5̧S+pTR{ vk%``  \9!Zf?|5`rK"$q/C0L [ aoǎzW<f>m҈g*ɻ'Б|~͚# "ܖ+i܅vo#+EQZqPOi/j"tb_T:M.t[kv 3wNL}`*XIW]%4#E hXGJVd6Ig4e% [ ,Eܕ@2κĄy=+zR%VM9 b1;}Qx^irؠu ozF԰5g\0QawڕgG/&~K$o;P9a nZ{ lmb-:aXSZJM`sotPk%Pt}irs܍"+:w.g\`(#RJ UU_ ٸPWqIh$CNP3\xv-SGl7pg ܙdrPQdN)N+ 0}9&ĀrBial̜) },a_XxAy"+ []/I87;`j9i|h I:g0r-QtpNmlԭ_08+i##;hG$X_`5tl&I o{nvO9i{m,h JB'ɇ=LNTugp =WHdF.2i5ֹvզ҃ӓ/TaΡ$e?݋挫PSh[7'Rc}3lu.mc,άc1ꡁo-(jESqߴl6"Id^ř ϤJvݭݡ%/8qjH8x@kJb阨 _" f۰DNfyT/y[†xˌjߋl1FBB_;*A 8mSJ٭1D Sb(my4do@s2'B`yצNNsXz;9<+V=qW BtxO`7؜Sf˶GGc ʐUT"Zgw(X `5y.j‘Q xj~b& ;Ğ/^ !1P~yK\)2_paFY\qejICGK$gRX"$9@hȗxVȘu}]vi3f#z631lh/WΠߢC3Y?|6V5 JX\ l^f<#4S֘R1C'{?cɠ/{"vʧ6v}8ZGm׼ (OI $$Cc-߅xLP}/8u(qÖ]oGP@#]xbZ[`RT'ȷ.QkПʙg"EM;FRH2YWrS_~׏zEL@O x>_@JjC(C~ ׸qZ#wbyh 9qRJjJ =' ȯ.57n^dL<+~JgW,G6By)UUUqu \4PF+8IFZWﻎpNoi inRsRȳezh>2KEPϩ.'*м>jqro^T95s ݫ  5V{39o=el9@uxVAU]T/掌jH;Is(8MT3rn~Cv!Tݝ.P|8Gjc+TTL|,LجX_Lrג'|؈.ʆ)n;3A7P+MuP1ސj6mm~eOk,wl@r7fce3!@)&:ٜڎTB!h̡j(R`32yc ['=γ)C ,c8?^5z*}u_ )pg刬/n;5x ݄HUJr 7GJ mgTc#=g=yٵwoR5h^82Z,&rٹ$|ʛte<:Q#mj]wujBʽgor,AF-AŸz/;@Msc'+@l * jQ08##]FEj.nt=r ^U,fUcCg%n~5>IPجeAtxZWDD|v0S 70j y ]WM E3)B{7kz{(C N)m@VK^k7) ^"T,H%)4KoB ,L%ȅ*KGJ`!wz̏[.js{m1$c)%gbX>Wq`OEt3*!qQc(ܠkGPX . ;̑- _ԼOz.&\fvR+]~㲂<]ѨΤY7FXzwUԣqn xSL5/>aH9!yGɓg]y&WO` Q5D2Qw:_=ےȚ٣Xv$&Mipl>tdb  6/wVb@i8ﲪ X6M9}kmaWkxOpaIfMHG_wp5:ms}sCed¯&d3C/ġ2k[AQ_-wI'RCz{:Mm3)/[,C;j]2wMP#d|t 8D:Tʜ=遣)=Qrd`'/PqNԃq65Bm$Q 6lȍ!gC=PEe  b$N"R~[IyIے@΂Oz,} qr?Hk6>vT>N[mc orFpa2TU.5E5F{ őtRC/F3FnT 1yf7x.Z4+: fmڏjK.(u-T{ˁqqq {]X̒?!@/{Ts6+W\l9jgl֟0p[#{rbf$%V}k.+N u758PDdr=2 d!;.!ۦuLϖic_f0Μ.0#J;|t#JWؿ<>$%e}c%G@yCE*}Qօlܜm ;J$G= 3?j~-i:ZTЦ{SSu>R͜}@4͗X@'Q q7-'7v*Fd!)xvc𛸈xP Er?[GT/y{.pSL7&ޑԠec4_ 1jΚjsFUE`tXSV#B2Gc ~WT\}4ā=X0X>l*+M )fS@'o0Xġ Hܟmf ཪiLΛ%.-B1xW߽!jѯ JC{`h-?ɑztެ#E(F8 Q6#T.'Z e MI[>CKvgyy&$\Y3H֣|]);y{pr=h~`{VN$fE X(ພwέ)7.TOQ9AӱjH9A˲RrN5'J%-xncCH@S}ךR{ZbQ!6bGee:2$`[wb?p/C{*Q&Cߣ :}w~mJc9%3pX.@alYڒ Ƀ%p)Pu,-tt]/]>ǂ@.iT2|Boҥ d3[xuW[Px3kðK@MD{:=ށn?_+se-ùE0@cB'ֵflk~6|%x9` ]You؄ r~>@ssCÂՒ_6@eP-m1I2 ш[)AI9R+}UuK )ƻ_j`U9РG=4lIJ3rѕ./5<ɴp-e&{w =8' mh׺|;<ٚ?w#R(Bv߾f^wXPa#SmlL/ a%9Agi{0ek2{vξm ).^~k&D{Rz1GpA"۱f @X BR)I֯u[WcON=ӌB ŝYR}J+? G{~k"!DM(։1/dv,lr*/XA j>=tM 섙QJs{1{K(EȒ]?/A{؜2S E=3׷n jUGYAY m-2tcyR`«e^8o6Q}P+],r͸C5R B:JLGEPjL"@<n}V6A٪)neݵN7 XIJelvo 1K”DSgr[R*8?]*kyzcC!y3(}".Ωz ,W\A}"ƽBkq*ID@&;Z{Zr7S`G9C"Pه%I;Q\f[7j֣{;4=-!V)qۑ)a} qcvyv@BV%`;_lRSSHEε~,D"{'yb3HT~ A/Ș #y偓 )#v/TkʇKgiF2V;| BuLbQWu5ZJI~a\su)_0 9x0 .-ȡKiP'\xdrkwj^B֧vK Њ֋udAX1td2ihtKh$BI-"rNIS_M,QF:0`xpqyDjD v  pcdq]hQ 1#wG&`]/=sZ;;&8=)'t/AT H'Es5a)9ER^g4ɷlZ A9aFGCCl*{nPvhmYG4/8z]!WaB {R y;\<Tj14dn$껷}է&~{%xjGncu0DȻv bJz0h3,c?I~'3FR`(hJ $VuزD&wG_;,#i ?aA~eIp`kW]Y 3b;H+gKB&{3$X#؊ww(ߴS%ӮL,_eʅ~m]GϪk;\(?6NM,PV`I͘Lnznq;ᡍx۬b&xp ֯$ W+O/U9;&$[5. mЌDɷyYG?^8 \*oSՈG'\"pD( >`+M ,0Qo@I0uCqmZn+e:ʺa?x -9a濐:zu{Lһ(XFH΁LCӿDP2՟eq.H碆T[q(/QfvcTn1*6KAHU|Dz<5/u>Ԧ5R{>. 7 Σi=Rxu&vWoXƐ5a"$nGx h|+0s&.m ! x֧lpiHޠ3!Dh8Vr[srh*faQlnU'˼K3c죱ŔnT;-9ŵa brIAY%# pZh o}@$ѰwDoD1z L$kIƻD/eО,b^$Mx+mRDs_~{6[w)R@xIǷ=ޛC@Rh.~o:n!;L" )k&A{Dx8w N4mp4C hjɧ3a4OCx‰C`שRNcy 6I-_?~Gvr}"LŃRպK|oxR' ql\t êy#e~pK{fѡZx~$C]%-5G8?G"{f5Ů5`֍s4$i0bd#!1kU%ЄJY=hD`JY*ς+gyWn"}^=.<+m@LV9.7H-dUbZvTQ,ctHz"!mXf x v㥭x/ dٝ6♓׼ t <۴?ޭ0~ OM{Zm3L޷̸;p>{HVL2K*W1sۤΦOl(4TyZҟ>Fu1A D#P`Uh@ Iڋ#N(M?5hZm6N;B"'먬+=8%_\7ry/77֯A!rig2j&^gc9~ Տ3Lu, _U2"eNz/i&='i)Dj$ |H:wbT* D2t+ qhX=ZPsd1 S P]O0TvՒ̂¿zPs_'l5V)׎ ;MsP ߗ#vEWbX کac.dOL5ɽ-\jB;,'mjDxsʚgR9Z3XEu[nXس-6QGRNF}Mͭ7kŬztZW ̜L_s^Ai yU9n=r9{T7fjX?D )/P`|ELfw}V-gU7xPᇚ*DR&ovխq:L/ϟ$/}A _!٩z|ž㍶$#|,Y갂X7Q3s+0Z&T'`!Vn45+đO3*W}MЗ!A4)xS+W0Jz(gM56asDWTkFꈐfoa0O ͼjc]I=GzκR|jR]ln`o.]_}:&sa!˯=4ECڞv&Zv7FA+ı஢ !VU-Z;GEފR [ʁt>HuW QS%\h)DsnZπr!(@G!X-H}CW&0Fr)ƴ9Drծ'ݚFBn>@XQFٔ81"$#jE`{XD8#2Vq=Y&>3.P ?} U $Y}orh'M9N/sDfB mdlU0g 5DH|z˔OWzCwoe>i;2G'"B_a!&:jy-i ]D)k>A؅Py֌y{@A/p*\{݀xwM?b}C3z-}xQ|;FD@r%OH#,:scK eV@եHó$1 ]Q"uXD.zS}V}K bΖVjnm:&z!m)c(xKN[Cj.p-ߏȊ1ۖ@҉K8X|٪^6HAàɴ`!թ?+z5Qg# O`'&3>IY.Y:ۮ/1`>$(>~_o[c Ef)jf@l:9Ӕ`XIC׃֐Ȟf"gOi6PzH+p`^,4^J(b;`E6M(#1vp$j٩O1iTB1V"t$.칧5RIB鵵RLpu==}LՋwpӼw#ƯdK[DmpPg'g:WPxDWr? rH/tl8õ'=#Iv~[T0W9 ΖNn9AY+\gGI qgOivn@ryxUY-ALuA;/" ժ"75/4Ϳ\ɞc[QU"Z=7|j`]UH% IQ yM_VuAUm*ttTˊNdm6c+ ޼d:(:UXHTz2b4!j?'pJI9>VD.H8 8 [dLPem,7~WTMNuz}b:$\of-_eg @&"Y0%)m+( O*\UYP.a^]wd^zBOk0dԻTy/Fg~i1-!@|̡+eOtC x r̆3 _P6[zᦧڬ/!Sjw[Z 'e6zk԰EU%`PIO6M"ၓݿf@yxJy\Wqiٻl zbD/]AEay[O_g˔\LƢ3$SP4`ed# Y:6P`C7r*%^ EYSkWO`!KF$a~za/9 ?:~e#L J,)z{VL.VwI{f]ˁ&?F|"4BGNmZ<ð3j2h`X_ʃs=XvDE&Sg92n7p +30)"%1gerpl٧Sk5דLͽߌНԉ8*~hl쵄jmEm3o1i>^D,5}&.-Fzf9RVqJk2i4!bhqMWZf͐ahw߻VGŪ .4Қp*O\ /!u(}OmMy@6#\rYpk8'IN^&6 a0,'"fɕp,Tekŧ`BM=91z3$ż*ݹ w| OBJg^R}e{BԬT!aBc `akkc:莦]W+~|AXk4J:;ƿGqeyc|ZWh<< )璦BEao^rCDL}N>2%SLkc-ȰV%gsE nԤ;VO@Dsz( |bCo&8o&8Y. (C d)Jtg[\p %w,{+dxId`&Of }Uә2dg/Z/co[N3ƻiB6AtiWA4DnB\ eTIq*~k+aXHjQۧ?2|(ԕ^VGqyShc> h_#'t*b~#jTR`N>pƁEfS9LԣXRy{q wo*eu6 r8IoȱJJIIȘ4^x!<^h_'P շ ei"9Dx/ҟbŎWp}LpߒBy*#]sgOd\BHQ8!`zt᛽fN!یǸUs=m|kdɳ/JvmPQ=y #cX rx&eX_#Im` =y{}=?>} ͍MGRgqevcrYTai@sQ&CC*Z/f6<1 c_ьNiPʋ%vqCu[r 2Ɣӣ27 хNymNZioKu1 80qV=, e'>'Cw;(sDYe|өMMQo!Z&~8Uvp=2a^-se8y y8bUOaF5;,]pNK"oʉ}S_)ؚ:@ĵI}"^H \akq=ZNf/kyR?}#(k֡"COO+Z_ͣDc.D Vz UՓ{C0p`g;9*=6nr f}6U:4Nd<Srݛ&ZmCT&f0jby3Tz*M cl;:Bl^]L ]n. ]g*x)"U1Ь"\A?kRriIK)r R |;9\'2|/b '֥}aZ }'L6դΫZq\4z5Wt9wClo_Iϴ$N&?Kdz@04<9X75|9Q{v9ɗpcjI 8ѿd[uXC֍kltP# C 8VΉQ/cys)% X Sc|J+C5:Mz=܉^Lezcru`' ֧&ȆvI Ipf7> z>sSDÊ=p㚎l2 чMrQ`jdkZ^$`uDOnm/#F2@UsL8 ɟmt\,J9ǵbb!F57o'mnW:Er"ShgKWzJ.A7kEx87@Szb*hux݆iI-Z<Pv;H_b99c]0>N 2g+U -='jD1 $z(쪭0hY no u_DcFVw?F6 =#W雓',3Z?ym\lSػi)CJW8l*2_y6)<ϧǓZ4G*/؂aUŹ\5߀kX-{Ǟ2vmiȕq{[ l'U.Z`vW<K| d=qR87ge댼G")^[QgAK"" R(bo8BX(?,DRƨ0RˬuT}YCcE+?).z@hd|'ǧ\޻&G?BacJN ݧ$X*6K?~rk'\P̪bZicOYr|6 KX033VCMO-I mn/iK]|ɛ+gjsK*OaM^GgU{Z]wr2Oo7VU5u즕#g`6",-TiOE)&"]8|[ y]1Lxp>Mf^{84Jl5RY-=u;Y(`iVUlu|}x lx LVuee}s7{_R ӹ/\g>$=O ` ([)^)u#Iq_Ҷ_T}WWc] ($IA7Ŀ82Gс&Gv+ TSrjSW~@tsڤuB1Z @몽V߆~YK#z%C qO0ôz #:mYh77S!Ӛ݊s9s9s9h /B57{sP]x %,ނ"<{_SkBQzK="Kg|&dJ@/^9U6K Q.Sm?Rδ>iB?e֚NnMDe'9s9s9sB5B|FRr ѨhӫWRVCpjk`|%:3ˆQZ#ec~C҃7Z䘿`yŪҶ#'7I#lxY]_[joBlfvw{l6ЋoM~gR`UUUUUUUUUUUN߷`zTT&RbUhsLM ek&UY_뮽75=KWC̻zly2[bZQSb3O뷊L !^cbuX[f07 cKōb{](ߨ4IR+{q‹mp@8Kg:F%\qY,؏#Z(|E*Ns6 Gs9t.aШ0_@/\Sʟ $kE߯pGxM0 ! L$Bt= Ry" $'wNQo h#!N)a1;DV@W"Ј@# xZ! f&,c .*s){!pvUU, TKtq2MݣU+*D_h-ޘ-Pvx_bo }eҽDžg8JIq KC&sl!_5Cdd8vC':J.Gfу*~y̤nPB|^nx: OJr[9e)Tt 6zZ) )r`1qP@c@҄^u(4ȹWA |&fW#NȊ4G9ۗXL&f\,㴣钷6 1\g-h έFjV34+/_9q A4tqPrDVj`ɖ"\<%&%vDܒ:VWX#& 1p27A]\uç>N\+v3b֮"Us|J*鷚U$JIyԼ'364C/k\ž0A@S4b4>0sON`F1dn5NB;^ j@il-TS}z_ޑI\´/*r$[3T2ҚMjѼދOR[H /Mqs󄊆K2&W̃Hb/q*yB h•cg2S$}>W3.$`aܒl-4Lbf*zW jrz\g3pܿ?|K}_8DGvwͦSj9XE` 0VҠe+IW-LSAF@',TV7O2W83)TKgۍ>|qoGZ9Yb] 4#^"M.TU jMW4eBR Țq75@É7[a:{ʿ Nk&JYPZO~ǻeqb(&h [Aϋؖy( Q?ϻA7ԆD)r .K$HYE%$ c=f@ҧN^c,&`5ްXXwG>g$L`/釢5hC)!\bz{Sr(PySSBr 6=q,'Ysa`:HUC{q墶wǧg>%("Pj٭PDΫ.*gJ:CZ]P@CءQ,7dpAJ89@eS PޫNAֶcCQNv~zZ7>Vb4P~5DL%NlV ρޝVWCIGɡFY%a9Oʓs8^6ssPo._J,Ց8sh?L>/7NN V! `N aTFej8NLU'u){04oIw&~l:S!=CO){Z;3nRbKSx&yYj.XvI@s=?_>ERaq]*bU:N@ M,u ʷXC  ƌѳ i$oa@;&)w8bNbm`f+*3?QLqNǼ݀R|(EQmxe2] ]ͪq- ҽf 39oe~b耞!QhQ1# އu$[1H;-7Ę>Oies/1xYg>k;|„/~1b CKI`ſ(`S?꧚Đ1T@b/vrVa`7pgB5%ٱVmz :Dax.%< h-!oSI0 !>94LZ[N[XqZ~dC1wɜR* ^` @tIK?FlTt j5/ׁ rrڠ)Bvd*eT+08g {d;|~lyrIAw'fh6C)E-r7ۂ/zXi@l0Y01WX;X2hsڰ1mt %BgJ-zۥP~!^v^kx_u`z^yUG;_(fd\SO1>9\ qMkĘo}w[ QɀJyVz1Auiεc3䨻*oM첩+|>4]L#8k-g@&!$FE:d2i7A_Ol8++'# |jWNUEJVs6uM2ns{9e;TV[F-ɷ" Oև}F L%|KZHז 7 *sGa3_B}ٯ[ބ/E_(d j-|[†@F{t12YrL*q Vmbj=;O *e[tߞG+Js׋/7lx<|˿ dQqRz5XlF?,PÄpL~4*,Q'P &sItsr%9~`x\zk&A8efJgA^q$-1j\UHICS-e4{}X8N25&ǂC9܇"[r]ⱅhK:05z+=3SœEW]ቤ= +-^ao)zgrW2M[X x~5Ҕ QP{D| 0{+gO gG>S2Iҭt Ym_2< \of4ؚDTrvavdn0𕈺K \hq>E5D;nht˴*g JCW!fw^eaEkhT `ֹ&2A9 ʱb&p9{N䜺SIT&Ӕe!ǧ*r Sc ãхk UM(wƅTXdh2!+Q;#p؉|,vJК@MGL.E, AYjWe^xuz^hq, VGc7e̮hV-WTִtO^{_3[vA)ӥrEGgt)@^`K {%RSaxOϕs /[\9q* z+ 0!;8 .X( {8y<ՅtӱrztLЀ xh 2-'5 aɡ+0*qۣyjе佹Uc'|fG\,2HO>?9W?N"!r=MeYGH~o[zpBb1 VRsUzy< XB*'Mc'g.UK@q2x4#{ [hWk` )TeWQ{~-]x`솳k#Iؙ6 d{< 4I<:ru\_G}m5 P2,X#؊wwP~I0hjܻD|OͿ(s[gKC^6v3kc^EL7v}݄(kӚshLz"cڼ N*%{7?C၂2S TPϲ?:Ə*>^21`UrE=03<5|rsW1:{-EDjfeL-]ܵA3|36lz$GNa!;F 5 E#9Vƥ̯ԚvBĠɪQ(0{m f+Qt1{>ԣy`.x1}De+sG<^ 6kI!h&1jEDE[n- G(A FtM$nDOv\ h"MJ{nuGxЕ"Ėt0\nzZurM-_9Vwk! tt*KS GVڶ5xGsqSQ5 /8Qqnm5~~oT" ^r|wZix_ǀhffZv[::aqIN@ j)aa [37Ѹ $cPZVc]"B/k#Y z‘.9]y$ˊxBro7FvDFsR3fpcm$g5FӮMIe^Y%*P@ \ y;)˃eRI&MVrQ? ep\0&^|iE_۔!?a IT+;PP `׮fw@qn bZ2_rˡgs˝B(K[D;y}b3rlvz~}"] eW4ML:ǢYOZS>dz^gc9~ rpd  "M3v`+"O]Z+vwCڕ^kйѮ@DVV(6a?+S-RU?C1XfT K7~u[0*[36i;V~ "/ O $7.q| 9t7>Y1֑EaEb +`8-_ӌ"-xӲL'8Y0ߩG+ZЗg1٫BOh-\Qߚa`y&t.~Sr7ACuaj?M_Ձ:{xSxöO|X)^egQ嬴3_y9Jk؊osSP[+1L s"km}b5_W)E-U"^ B 9WXafEROo f&XahP*m]C((T:ljLx qX52Viņ Q3,jw,qZ\D zĭKsӿAoUw?R/?S.`G2#_-9۵O;÷,y ;^ְCr(Wp-no"olŐdAW;m %4>F{!p> xtI*xvOmK8 ObtLu%N&|X.[ {eVqQ?^`q,Q=cZC6 W7]//vAksgƫ2O:c洏Y&ߘfd4rn/.@7&26[,!G&9Ca4LbpԪ(cyNC.aJK ;-&tr'{v0kHb3nTdZЮ#0Z\XʍUK ;+SmhX$tp˝ȋn*? ZFÔ.FpI"7_Q jk1Qs,N;wDhEU(ő-QYAJ1KJgj+[at%w0ozώeM,?Xy"y65a=o84$Veih!ۺ-(enTu+ ^R:/wTG o$W/&Q;)B6ZZN\2e(* ]oZQYmXt.Q4p\ 5X%ҷ+}?A?3!- q6ldpPߣi _qsŸHq3RHHlE (OHh.g j:Cw~b]uvnp E1?ӎ|NI#Pы_p~lqu-`?4z}k xj,^W|Dp_8^ "U!tދLxcQ F% T)@ ҭ؉0ٜ )J"Q^'5;#ַL Yme/ʌj!-3= ߋO4m:.A`JjU!ON:Pk%Z:Fg,<ӧ^U] ,Rod(=+4&̚&Ap ) :]xuw:9|TdždLwQW?u EUT ">kSpgmodeler-0.9.4/apps/pgmodeler/res/Resources/pgmodeler_dbm.icns000066400000000000000000003301771416010000600246430ustar00rootroot00000000000000icnsis32 lrk͖rih]uc]ɹpެZğYŶ_iPXƹvHgFD~w00}Ydȩ֧6P,3zͪ஍7=<Q*H€3ba0lrkүctũZtɹrP}eF̆ɲ`|PZ ܁݀ހ[ށ[Ȥgdfkprq¿Ā[ڽ|P)9HF9-+6t[ھ~B:˺zM=[۾b"ƾ~:~[ʄ81oUmC'9A?J[qeDDC<2Gq[< [n׫veC"$ekJ([j୲v:Yh= '[g⤝v00fH ,HILϻ[fuvi2&\FR[fаGAQ&B[fO L[fa60',\[fª[f[bXRq{{nM*##%|PZ ܀݀ހ[فށ[̀ À[ǫk9GTUOMZ~ǿ[ǥY=ǭZD[ɀ'>}[fRž|>[Կ`s¼Hp[տdyſt9[վ{a+x[ּBƶw5v[ֺa`Ʋwg(p[fӴ;`};J[f{2/"f[f屛}[q[fʳ[f[bXRq{{nM*##%|PZ ܀݀ހ[ށ[±ϹĀ[ېCKXZUTe[w@ѸbG[ԥ,ӟBz[sTό(J[jwK1خ[n~DžΪ[Љfè([ͱGͬ=[lgŸɱFy[~ȺX_|»Ev[{}vbX<£x;[x۱zWʿeTk}q0[tڮqrYǺYJysM>C[qڮTSOø9ja#}vn[nИwufdAz)arb[jsWBf%fkha[gnjZzU{$q|ffg[fJLUL1u[fέF{MK[fȏ==)k[fd~[f˵[f[bXRq{{nM*##%l8mkgQR@'58888888888888888885'  ih32ހmE ߀}Cۀ܊|D݃ނ߁|Dށ|D ɱ{ zyxw|ׁ|C׵}{mE/%#'.8CLRSRƾ|C&ص}U2NXTE/+BǾ|Cٶ~|C LʽY/D|Cٶ{R\05|C}ڸs!!þ/6w݀|C&{שY d<;>q|C&iچXZB1@7 '-+(/^|C&gچVWT% p}v|=$+*'.]|C&dۅTUSJ {F|y<")(%,]}C&aێWVVUJ$;hj,n~yu3"(&$+]}C&_mG9& ]A=tvo$ "&$!)]}C&\rHFC?;"gR[a;pb"$" (]}C&YpFECA?;^A|QCG!!&]}C&WpDBA?=;5 Exf1K@$.FGFEHc}C&TpDB@?=:73ZwjSL+JΜ}C QڴiTQF51ipli> P}C&Oƫ}gI2\nkb2 P}C&L嬮jF" Pli[$ O}C&J媞jD2ifZ!!O}CG婐jA Geb4EUV b}C&Fy~eB :_\8m}C&F|klmkHUVR5 _Ļ}C&FX6RO6 Sĺ}C&FZ$ -$ ]}C&FX"!l}C&Fp@@>946Ad~}C&F}C!F}CF}CE}BFwɄȔhCGKOOSYZSPOIA%!YYހmE ߀}Cۀ܊|D܀݂ނ߁|Dڀۀށ|D̀À ׁ|Cw`MKSbyļ|C&r#2O[WH4$!5aż|CZ Mʵ`4F~|C&m]ɼ64}|C}•-!65w߀|C&{̾fO|C&x½ þf$|C&vþ$Z|C&sýÿT$t|C&qüU|C&nú$y:|C&lùN=Ļ43|C&iøų:MD%|C&g÷R#~L|C&d÷?$ÚOL}C&aڼW$Eux1A$}C&_~nd\TcK>lOL.1}C&\ǀhN_ze[aKF}C&YwiO}IqQ|RX^b}CWknofO}IU:LA."&}C&T^SUTL~Jspg9U}C QwPOONv7'T 9º}C&OƫMyC 1u}C&Lțwj}0 8u¿}C&Jǚ:A~(I}C&GǛ%`G U}C&F/OP M}C&F͎|}~T&~}Pl¹}C&FϵO}S\¸}C&F涣]C7 'm}C&F嶤^#4j}CF渝w~ }}C&FȜ}C!F}CF}CE}BFwɄȔhCGKOOSYZSPOIA%!YYހmE ߀}Cۀ܊|D܀݂ނ߁|Dڀށ|DЀʸׁ|C׹jUS\lŽ|C&ܘ/4Q^[K7'%;mƽ|CwMh9!G~|C&֒ ^̢<5~|C}IPVXYXWVUUTNZWX݈vJLK Ձu}{{nG!%5BNTUTSMZWT݋vJLKՀ֙t}}yU $('" !6HQN[WT݄vJLKԁ ֙t}}n4 0_žnR4  6TVT݇vJLKՀ ֙t}|c[ȽpF# ?TvJLK ր ֙s}|YHŀ»e<9TރvJLKր יs~}}` tzM!}TއvJLKրיs|}|m7 ZkTߊvJLKՀDךsz{x8k}$kT߄vJLKրךry{_ 87+rT߆vJLK ׀CךqtwG #!pUvJLKؙvuu+9?}0ix}~~tU vJLKOˤhRf )IRUVVT[{ vJLKMٲwutsk_DEMgmnlkgyvuuts vJLK ~~٫`TWVZ7?6xre`v~|zxrtwvJLK}}٬_\gfef0Qe_\tcWv~}zxsnXvJLKf||~ڬ_]gfec#*-psbSv~|zxvrmRvJLKf{{}ڬ_\feda c SxpaSu~}zxvtqmRvJLKfz{}ڬ_[fdd` (+jk`Tu~|zxvtrqmRvJLKfyz{ڬ_Zecc_ XTc^Sv}~|zxvtrpomRvJLKyy{ڬ_Zdcb_ րI~6YZRv|~|zxvtrpnnmRvJLKfwxz۬_Zcba^ =MUQuz~|zxvtrpnlnmRvJLKwwy۬_Ycaa`*ՀрHd :NPtx|zxvtrpnljmmRvJLKfvvx۬_Yba``4|%GMswzxutqpnliglmRvJLKuuw۬_Xa`_`@ ΀K;>IruxvsromkigekmRvJLKfttv۬_Xa_^^M wW 5EqqsrqpponmllqnRvJLKOssuۭ_W_^^]UKm&>jpml mbUvJLKOrsuܭ_W_^]\[''x8RYQL YvJLKqqsܭ_V^]\\[= ŀ227ISU ]gvJLKRpqsܭ_V^\[[ZOLdSD*123220/..-La}vJLKfoorܭ_U]\[ZZX)wLT&-//.--,,+**)LXcvJLKooqܭ_U\[ZYYXE LHa^I~~^$,..--,,+**)(KU[vJLKmnpܮ_T[ZYXXWT% 1@vx}|e"*-,++*))('KUZvJLKmmoܮ_T[YYXWWVG!0LIc"$c~|{g ),++*))(''KUZvJLKQklnݮ_SZXXWWVUS38r~|zyk(+,+*)(''&KUZvJLKNkkmݮ_SYXWWVUUSM">7}|yxl'+*))(''&%KUZvJLKNjjlݮ_RXWWVUUTSQG5gJ~|zxwl&*)(('& $KUZwJLKNiikݮ_RXWVUUTSRQNB x }~|zywvh%)((''&%$$KUZwJLKfhhjݮ_RWVUUTSSRQOL? E*=}{yxvua%()((''&%%$#KU[wJLK ggiݮ`NQPO:NNMKH=(H-}|zxvtt^ %('&&%%$##JU[wJLK ffiްj^YXRWXXWZR?5  'G^cJ i~|zywussU$'(''&%$$##"JU[wJLK eeh־g_ZMYFC<2$ = sut~|zywusqrH%''&%%$$#"!!JU[wJLK ddgņPȹ\YHIE@:3,$#|AAy|ywutrpp7 $&&%%$##"!! JU[wJLKfccfŻ_YHIHFC?;62/,**72F{wvtrqok$ $&&%$##""! JU[wJLKfbbeVYHIHGFEC@>;9775IP_I Wxtsqona$%%$$#"!! JU[wJLKMaadQYGHGFFEDCBA@?>=6N| O/ZuqonnM $##"!! JU[wJLKf``cPXGHGFFEDCBBA@?>=/ Sj ![rnll/!$$##"!! JU[wJLK__bPXF0EEDCBBA@@?>=:)J[_nl_ "#"!! JU[wJLKV^^aPXEFEEDCCBA@@?>>=;7"@g ~&glB"##"!!  IU[wJLK ]]` PXE/DCCBA@@??>=<;94 .r~~x) ]Md HU\wJLK \]_߀ހPXDCBBA@@??=<<;;:73#]}|{{g!+BF6C? *=ABA@??VU\wJLK [\^ۃPXDDCBBA@??>>=<;;:9862$ @v{ywxm> JB\UWX K_wJLK Z[]׀ׁPXCCBAA@@>>==<;;:998752' G{wvtutgP JR wJLK XY[ŻņPXBAA@@??>='<;8766543/OxtrqpnlkjhghH LT~wJLK XXZÇŶO`[ZY[O86654 &qtrponlkjighH   MUnwJLK VWYԸukjkfNZYNIGRX7654!#`tqpnmlkihggI   MUhwJLK VVXțvjijmkkgdccdeeh`UW754!( Stponlljihgd=   MUhwJLKUUW³8m}zvkh[W6434- Eqonmmkiigg_/ MUhwJLKTTVր=ܪoĽscSW5430=oommkjihggX  MUhwJLK RSUހ%nr`MW4331mnlkjihgffL MUhwJLK RRT߀)nr_LW43*!gnlkjihffd@  MUhwJLK QQS߀;mr_LV31Znjiihfeec5LUiwJLK PPR.ms_LV3+>miihgfddb3 LU iwJLK OOQm!r_LV4!`jhgfedcb6  LU iwJLK NNPl s_LV3/igfedbabG  )/34543SU iwJLK MMPlr_LV18gedcba`\ ,KPUYYZ\N jwJLKLLOހ ls_LV15fca``__R9IJ]^_Xs}nji jczwJLKLLOހks_LV0,ca`_^]]R ANuy wJLKLLOހkx-o_LV0\_]]\[YY0 >Nx¿}ӂҀ wJLKLLOހlij,k`MV/%L^[ZYXXWT5 +Gu¿}lwJLK LLO߀ŏpYS-TOQW.(+[YXWVVTTUH9oydwJLK LLO߀ǔncd)ifV-)OXVUTTSQPRH ,fybwJLK LLO߀־+U-)#+WTSRRQPONK &^ycwJLK LLO߀݁ڀ+U,('@TQPPONMN; %ZycwJLK LLO߀+U,('! IQNNMLM@([ycwJLK LLO߀/U+'&%KNMMG2+_ycwJLK LLO߀U+&&%"99) 1gycwJLK LLO߀U*&%$# ':pycwJLK LLO߀ U)%$$"! 1EuycwJLK LLO߀+T($##"!  ;NyycwJLK LLO߀!T'#""! AQwwdwJLK LLO߀ZFFEDCA=97 :=@AUTYwqd__`[pwJLKLLOހwgZWXWVUSRQRSUWWXKV|{{| }wJLKLLOހῆ_UTTUVW\tǀƂwJLKLLOހԴ wJLKLLOހրՀւ؀wJLKLLOހwJLK LLOwJLK LLOwJLJ LLOwJLH KLO߀wJLD KLO߀wJLCKLOwJKBKLOwJKBKLLkJKBILKd×ĭPLK0>JLKMQRPKLKEAJLKLKE ,BGGFEDDBO] NBDDEFFD8fepo}|ᒬŬ B~}{zyxvutsrponmkjhgfecba`^]\[YXWVUSRQPNMLS~}|{yxwvtsrqpnmlkihgfdca`_^\[ZYWVUTSQPONLKJKLLJSxXKLKWKLMqJLLuJLKрҁӁԀՁւׂ؂كڄۈܒ݇uJLK ҁӁԀՁցׂ؂كڄۅܜ݂uJLKҁӁԀՁւׁ؂قڃۆܡuJLKсӁԀՁցׂ؁قڃۄ܉ݑއuJLKҀӁԀՁցׂ؁قڃۃ܇ݘބuJLK ӁԁՀցׁ؂قځۃ܆ݠހuJLK ӀԁՀցׂ؁فڂۃ܅݈ގ߉uJLKӀԁՀցׁ؁قڂۂ܄݆ޙ߃uJLKҁԀՀցׁ؂فځۃ܃݅ޞ߁uJLKӀԀՁրׁ؁ڀقڂۃ܄݂ހߒuJLK Ԁփׁ؂ʄƇNJՉ߈uJLKԀƽ݋vJLKӁխ߁vJLKӀ'ծonބvJLK Հ)ծ}n`:$  ';Rii¾W݈vJLK Հծ^'!4Nqi¾S݋vJLKՀծq' !&))$ #Hui¿S݄vJLKԁ ծE  0avW9 G|h¾S݇vJLKՀ ֮)]̺zL&  /GSvJLK ր ֮wIՀ͹nB8SރvJLKր ֮6 vìU" |SއvJLKր֮) ǀ«ejSߊvJLKՀD֮Jl(iS߄vJLKր֮881pS߆vJLK ׀Cׯ_ (!nTvJLK׀׮9:@/guz{{|qT vJLKOӵiv 6eqtvwog vJLKT˿~ Op{ vJLK ~~ʼVrA#FtzvJLK}}ʺ[Qhoyj[vJLKf||~ʺB0 LvqgUvJLKfz{}ʺ>.;gUvJLKyz{ʺ>LivgUvJLKyy{˺>ILfUvJLKwxz˺>!LH&p{dUvJLK wwy˺S݀Iy VrcUvJLKvvx˺f܀J 6g_UvJLKuuw˺ ߀LF[[UvJLKttv˺}ـKiLUUvJLKssu˺+Pրց25J zWvJLK rsu˺O)ր5%&X{{z |yvJLK qqs˺ ~ Ҁ.<+u vJLK pqs˺"QҀ3wcRa ~vJLK oor˺ UπFť[g[dvJLK ooq˺Qπ3joXv P}\vJLKmnp̺P р2ÞG~ Ix [vJLKmmo̺$ρ1TSw)+x Gt [vJLK kln̺ o <̀3Ar\vJLKkkm̺?KD>f 3L\uĂhwJLK RRT߀=ç|)T:O^whwJLK QQS߀ ç|UuECRc{hwJLK PPRـ'ç|PA(HUihwJLK OOQ,Ÿç|tI3KYnhwJLK NNPŸ҂ ç|V<` >Obz łhwJLK MMPž΁ ç|GL&?Pl zjwJLKLLOހž˄ç|GH r&OcXhjk_ksc_ ]zwJLKLLOހžDžĨ|S9t ;rtx wJLKLLOހ-|rAAw}ӂҀ wJLKLLOހ,| h|I_t{lwJLK LLO߀Ψsmna6;k('en¿wcwJLK LLO߀ǔncd)gho~}jLe¾vbwJLK LLO߀־:~}}|tA^vcwJLK LLO߀݁ڀ+ͶX \~}|{{z}YAZ¿vcwJLK LLO߀+е(m~{{zz|d#GZwcwJLK LLO߀ѵ'n(q}|{pJ>L_¾wcwJLK LLO߀/ѵV$WV< RUfwcwJLK LLO߀ѵM  CbgowcwJLK LLO߀ѵX2HUzzuwcwJLK LLO߀ѵ"nA%"2EQ]oxwcwJLK LLO߀ѵl_YXZ`l|vtdwJLK LLO߀л[upc_[pwJLKLLOހҼ}Y{|}wJLKLLOހċdZ[\[[`tǀƂwJLKLLOހԴ wJLKLLOހրՀւ؀wJLKLLOހwJLK LLOwJLK LLOwJLJ LLOwJLH KLO߀wJLD KLO߀wJLCKLOwJKBKLOwJKBKLLkJKBILKd×ĭPLK0>JLKMQRPKLKEAJLKLKE ,BGGFEDDBO] NBDDEFFD8fepo}|ᒬŬ B~}{zyxvutsrponmkjhgfecba`^]\[YXWVUSRQPNMLS~}|{yxwvtsrqpnmlkihgfdca`_^\[ZYWVUTSQPONLKJKLLJSxXKLKWKLMqJLLuJLKрҁӁԀՁւׂ؂كڄۈܒ݇uJLK ҁӁԀՁցׂ؂كڄۅܜ݂uJLKҁӁԀՁւׁ؂قڃۆܡuJLKсӁԀՁցׂ؁قڃۄ܉ݑއuJLKҀӁԀՁցׂ؁قڃۃ܇ݘބuJLK ӁԁՀցׁ؂قځۃ܆ݠހuJLK ӀԁՀցׂ؁فڂۃ܅݈ގ߉uJLKӀԁՀցׁ؁قڂۂ܄݆ޙ߃uJLKҁԀՀցׁ؂فځۃ܃݅ޞ߁uJLKӀԀՁրׁ؅قڂۃ܄݂ހߒuJLK ԀՁրׁ؂τ͂ΉσՉ߈uJLKԀ˄̙̫̃݋vJLKӁτ́ѽʁɃȁlj߁vJLKӀ)ȭ«́soބvJLK Հ*Νvi@'  !+B[ùmW݈vJLK Հ|2 !#:W}lS݋vJLKՀ֘5  "'++&! 'OlS݄vJLKԁ \  2dɾ}]="OlÿS݇vJLKՀ ܯ7 _ ƨR( 3IÿTvJLK ր ܞ"5KǦxH!8TރvJLKր ݫ 6 xӻ^&!}TއvJLKր67 ԼpkTߊvJLKՀDdoѝ,jT߄vJLKրڪ8:ѭ6qT߆vJLK ׀C~ ϭ-!oTvJLK׀K9B͠/gv{||~sU vJLKı4̄ /46788ì΄ vJLKf Y +:=<9:ijvJLKf~~~Cʲ'&RXT@7yǹ}vJLK}}dmL} ?UUB4pȳ_vJLK||~ILǼ7JQ@3lDzXvJLK{{}D JȆ 7K?2lƲXvJLK z{}ɀDHĻ4B<2lŲXvJLK yz{ɀDGw 471lIJXvJLKyy{D!@ì!2/lòXvJLKwxzD"JR+,k²XvJLK wwyЀ\CÊ  )iXvJLKvvxqF%%fXvJLKuuwь GP bXvJLKttvЪDy]ŵYvJLK ssuπ0U/PZvJLKrsuX-1*&^ vJLKqqsЌ 1F0…ϰvJLKpqsε%W߀ހڀ'ȅo`n ƪvJLK oor΀_݀܁ڀ*մ˝gxh ơevJLKooq͡W܁ڀ/u}e\Ɲ]vJLK mnp̀Y߀ڀ/ԭMɞ¾ S Ɲ\vJLK mmo̓!'݀1]\Ɔ/2 QƝ\vJLK klǹ̀| A܀׀DӣƹÿJƞ\vJLKkkmɼSIڀҀ'D"Eƞ\vJLK jjlǀDZG>Ӏ)Ԁ\E|ƞ\wJLKiiḱ;ĦA'ԧ K{ƞ\wJLK hhjƀ?R TԸ4L M~ ƞ]wJLK ggiƀǁQºl&Xҩ7 Sƞ]wJLK ffiÆ:ľV# 0Wu|\ Z ƞ]wJLKeeh̨{c[ZVȾc= ƀ"o_ƞ]wJLK ddgޮbWUTSTS9VVyŽ|gWF@?@,W\S)e ƞ]wJLKfccfްZpztmf`YRLBW~ý~\ FDd66jƞ]wJLKTbbeްY}tj`WGTtQ^n_J}Fq ƞ]wJLKaad߰Y~{rh_VFSoȀ.8i+O/xRyƞ]wJLK``c߰Yx{ri_VFSoȁǀƀ+# o!I#^ƞ]wJLK__b߰Yr{rh_VFSoǂƁ&½ d#8g ƞ]wJLK ^^a߰Yl{rh_VFSoƂ,rW~9g Lp ƞ]wJLK ]]`߰Ye}| zrh_VFSoÃ3ÿm?; ]z'#[| Ş^wJLK \]_߰Z_trph_VFSoÃƁŀĀy#0+AE6hcAf͟^wJLK [\^߰ZXjig_VFSoǀƁł) Z\ #t!Xs awJLK Z[]߰ZR`_ ]VFSoƀā#½-g{ZIEJd@ DdJ]^_ ]RnwJLK ZZ\߰ZLWVTGSoƁłĀ5G'a,Ztf||zzyxwvutslwJLK XY[߰ZBHCToÃÀ8=tr QgƐg{|voib[Tsj}wJLK XXZ߯bTSVUmʈ9v6xE`}ȑg}}vng_Vt_nwJLK VWYɔpPFECW|{ojkjh9ņs 8[tɑgz}vng_Vt[hwJLK VVXɜwkijjknZ;63234A66ʿř}a3Wmɑhx}umg_Vs[hwJLKUUW³8~tjaW@3}˿å0gC[mɑhompmg_Vs[hwJLK QQS߀1>|~tjaW@3}˾bS$M^sɑhnfhihf_Vs[hwJLK PPR=u%~tjaW@3}!`O.Scyɑil_a_Vs[hwJLK OOQJLKMQRPKLKEAJLKLKE ,BGGFEDDBO] NBDDEFFD8fepo}|ᒬŬt8mk@*f 4 `P y!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+*t > @VQw0 $&(.6666666666666666666666666666666666666666666666666666666666666666666666666666666.(&$   %-------------------------------------------------------------------------------$  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&      ic08z jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2d#Creator: JasPer Version 1.900.1R \@@HHPHHPHHPHHPHHP]@@HHPHHPHHPHHPHHP]@@HHPHHPHHPHHPHHP]@@HHPHHPHHPHHPHHP 9߂He P|ˢ+LmF4]^U%`TLUcXFfXQL ᰎċcJTsOgpWQ*k_k߂(e b՚.|kVų.=59#Uwγlw*nAޕ7yfB>XrAi*U*n.osG\eaTْ>ؐU\TB܃$q1X`ԗs炨{r] TKWߙg(4 ,%N7) s~Z G k0CtH߉Q9 ,hD"a?1d5j+i]?՟?:x6U1L/HlzIeJRN86|zWeg\oZ>YJBڀ,ҷ2ErnrЍJ8Lmŏ u}- WZ$;L FQ s qXU` a钶1NL9o3o Ef=:3VٵqUro5q۞N5η~m.z0,Xr%=IY#ik=D'G_4T syeo^dwۉnSg֯}dqr9fxX"z4xmk1]\k6C 3dvk\,9yK^sag*g(B棻K'2QO# Ck{8Ch(ߍ(kz+u!k+dJxaE)11i'"917&ZYrz&%4_2,?*h~Y>}u.ej{5D qң2ulD^ֽkϗ?sۙYw0O9-_xM˱U/ٟ?:uJO 8WѨ0~ۤ6"& Qn`K՜0gNV V*XơK&~r?7γ%6Rr-X\_<[cx *`/. PgG6O/>GTHF p"OY9M, -.zS"!K^d%cP fJR@n,'a)U˥%C;U-mɂ[cDk1V-P{9ՙ!**d:tHrY-(@Ti-˾6iożdVusJ$+KrQ/{mlڰ1ԷoLxMC >lD07Q+vr?kbà ~HXfVucwDZP3좝 BO*Y;rjvضDgh\v~NDOmx3P¡miٓTisE HLu?b*V_]e-L۟?:t0>cȚ\o-o$2xИȁgL-#b@:%hbCV`ϷIjDVѫDѮn,&w1jpl-Ј4\C.K"OҶ+Ϳe[OT# ɼ%WJC݃ԉ&MzkV?[z8Y D*^(…H)%b<]K.zU| YQhڏHmDy+ʰo7s6RGQpg0#%6 y0 *YA͜kr]+(ׁ >-ˁjV`jQPj]h"ZJ4iK?v8=x=@S|[Hܜ<ʹg*CP,-vj -r<PZm/TO'Iꉧc"pq%i/dOhi(a"s.G[&*21KV$$0y30ztPA}7TJˠ (j._(%I4 nŀk) 拳?tR&e\8ޘA\<--9nIPM;-P~^8W_͵ ?t ZJq\z S nl;sTaziztVX:׿*Sn-jV=0Fmreߘ$V vw:r2Ү%5[ke0ʆm3,;t-O2~Bǂy_V=r yXƙe` wXEcgL] ㌗AxCHDX]œHf>$NN3:Labt&R!7$KFAZX6AG䣆qD3ST.mC@fYyW. /܌TNҏClj[2@U I#$[xE4 _{Jma-0F|8 %߱&kI:-7Wr[s14E d. KC+EF{KSP+K^FY Bf`"p0vuU5\ʢL怋bF]R^ݢgIH':RSZFR T8xժa- |{Ґga|N8 ѢzIfN@<^Poۚ! i $G.qn\bX|MR/'W`Y*51\e]e P@4FHgd*o(=$2pKxKNXwntqS|w;[OA_E?=)'?T2my";U^_o b8' fsm)TrG Y' '3Mo`pK;ƉKaA^bd>a_#AYԺ7_^Kf~4i~LΡj'm,'La4|ʿ+ tWA(Bc ߟJsz~{lKY_N:\H;7"fbZ-^&uxJvD9?`!2 ~P7flNDCI w8|׬x{T] D^ޢ[D>œ \pv&>)5zТX,iJRNɮ]6_uCALJ{.hD/; ]Cu|u2hSjMg5!R Z 6/qCs%XW{"_20 WUAS>]-F-^J)|Ryީu WTphf_Ml~\آ N}Vlg#h37y8$`}[|[o=O rux|܀I{֟ M&T:|)s_vaM.s\ I=d:j(`@d2nt5%[OH,:ɯxDJz]r6[} mĶ$-5nQZ."NҕeUF/_9_j jWMmW:q[JxBarq!Qk+!#*szpA.MII, I)=tGnS_j["#uBEt]ۃu";MdXakIpzsQtrxc-=(P`1SA 6sC[^ ѢGwY",+~maMlQ8:䀠]4 e"]L_/)j<~  *Vƶ{$v,SukQH }4lz~@$3%>&4l'>՞KwoVNrK}Uq+9\yDeA%QUK=uY9K9NUEuk!8 e<۬<2%|=4a"cZ@m$'o"m|ry-hUa3wi/e fP >S=乆19`օߙ2?̻/E2~pg3)`bv,:A=/[m`(,C QWV8MЬi25/Ij:XX3 J6 [g,\6vT%UW.wd.I1k}U+KV$%4#:n\&6po)_ <+ x׶mճ"3~ev%v$hexĀsJ MiN =ȕhgl׫@B̃q= 3hmpɦȞ߃yF)pX h947e I+C.V5s-L.IgQy`ey `ƾ㪤݈/?S!B35MfZ8>(Bf`$ѭ(\ON#HcCeG~iAENsNFZ{ U+Yɳw<)3 Cv4ە~8+f䘺ƨJ'͏V0 "vbׅINP]Ћ 91Ww#~URR7~g8t3<$@Cߴ?p{8Y0;*4Ruh}XYp% *əAD .G6q ֏ryݭc{tf%lE rdNf\ϨwTCoǷC }ATT gip: {e5 *Eè0)ЛѼXma'AG!%Ja= t!uJ|JAE$?dFK :ôU;͔FHrђ)WՕ*dr2N,*ѥ-gj>T @ِ4(nsOYuʹ׀OE#̚ռ+P6ķޅjIL"NAw!5y7)#+¥7 3#0,}FQ=_{0u\05om< TH go|9 |Z;}>E!sѿ_.i5nqgNxþ t>n012(E}G7lY6}w}ߵ=@f#PTS x篚ˌ[£sX]wAxF7jī]ڴ+-#>,BGZ"KVgV٧J#VD47pe-5|Zvr(p*#Ѳn^z;k|!7]M9`X"rcJfn3YTk&䜎cGNW|]Ψwnډw@<=}FI8r#Թ@O6B6+Mfet(e֯ /E+g0J@6Ǫх\'i!UM )@KH-1@O㦅Lot98SFv_L0p8mqYT27M e%@d=H,LVؑ?%r\h0qJlBg`3bG66}^dȟ|' 2"s&3% +̆-,vYiAA9. RHAk҅)oS K }d*ѕrLlrSVDN 'EЉ9 :47Vq"U1?kɒy\ruLo=zu;T z>gihMڎl+/Poe3wБWjBJxU/*pIB2-nj|X]0,aiOmu;A#4D@}̉.7QiaL`!meĬޖzL;2αԿF\FPТE/<.܍"P%)>]NLb> ݥV[퐼x,Pc %3Miyu1p%'JpZ<}~L HHab:Qx "O6uվdZrY p-74qU??:@@{ZA'l0ppB_M&Tu58P#y'9H "R0b9x<]%1-(!r}h$ߖ:KKL3!͍Jn&ߖ頼qABB)do?e:!c|;oK%EOTۧƳl.1~]sVO[֒]$2j)YȃB>V=乆1֜YN7mﳻ )_m:#}r9˕eņ\:&oK+"DկVA]@8?TyHԈ{@i9Ht>ٍeaz` W޸NMbd7GpK{.I x ϚR˯2@ϐd|&\md=t*߇bG[ŔQiB͛ ChPDsmx^N HGX R'b:Ve"E*- i+2Q<>Ϻv$ vj:DPB&8aި/ y'; KC :5ɐọ[駱>% ZWz kMU*qxDS!8.j+\ŨH6%"}ePEK(F Tr$u駦}4KKHn(00-KC7=y{C;v>mJ-BB'¼T(Z B(nlNWj&NPO GhмNtP:e,ZLc[ZIKG{LRqC|J'*]nV%L )OV l<;UMyfR\qL/;"51?《cjWD {xaU^+3y*GJ'9j p䛊 %BϿE ^hټfPI<=wi ͈ cԃ7K%w<50;qьm·JaSdi!]e;9߿:?́%V9 %{|G/D7vo`'&l#&1# s NOD\B'$# CI5IVxo ]dC%Q6mwcÉ[ÚЎzoi07>IV۔3 l0f`&oLE"zȠ}| Jjѧ/SlՃq?Ŧۑ\y-#dCjH|U;R굨(g6ؿ>a;]!Em2Wr7ձμ%*lt~--sn`&3ix,KsN sk@>՜M"r8J, *^%06wt6[%EYmRMߡnh]'hK(qb ė҃ 7z?\D[D$s1C X~,x^?-UNėĺҜ@ uNXKZ?.$d  @+Q J \zKք<+ZDpI O6!m4CYA1!-8) ]:)"|ZtSĴՋ A7{R[{'N]$m6 \T?V!Y#,|Qm"u+ԡ[kBi29V$ۓ޿.rWY' s?hR#U)k[L[Uo^ sʧ+K <] -DP҆v$DUǡrNyڍyS]8k0@wsQΑPKʓxM؛`'Hh17඀PkpߘW?X*#<5H!kooޛTVʞw*@D*GncqM;BB5Ug~:N YQ!S6qQ_3㸛m(:r%wVAt @ҧ[t qvQ@3sW/;z5mMp 8yR=p8ZW9®ĄW#V "kbC2$) "$鳢ϣVSi*:J%KͤyROk:,suڑJ]oWĹ#v@T\*IHU7ˆ,rAc[Gn3$fjW_ORtKnPr a?y RFKWK ipnPEh=Q Þt3<ccF^8XO{ǍS(8=_6A86.uBf4%yD78c^|+-q$#rʌSȠEX okqSX~#S`Jjv~X}]!Yw f b y;OKP~@09͉)a}+[̿r4X/,cõb[v AoFt,Lʐ1+MњY:/Y_m$yQc$zP`.pF:[2Re L4B㖅i-p5l)+ΊjsOh\(6_{M`uTꢆ`t/[gp`aGdm-{Le&K(;!ڂI%Z͸܄c[T5Dlk Zf)< 7kCZ#ad'S;Igk3)FCjVw}'k{ɍ !Bx"H[d^xM$љ>˹DxsL3d )M򟎺&}R~>:TD!VqlHY͋;`  #lL.A3Kui؂~z<乆1D7J))uNk#n N)ٰLn/? ͥ J|0;4e&2Wl؏+0&/c17>sͳ,Vвeiϵ0idΝ8'TQI,$[_*18|R;~ȴҼUԎ8 2ϩϋԇI^cKĮl}e2k2<(uNsӽnfF&r\i[@ #_t*!(NX8%7Д>L>tQ1u{ h.c=Z ` ^h uc阏8=ikXwK &g`J5JJ:{r=RJc?n$w"1ߧ*g{˻ɢFdNTX?6f92@cN NLh~>r'O4ͅ"1RGJ͏%>$Rϲ2۝T; HS7MO`R(N@1J0l5H7M;4x]}%ہZʁ]%Q$XGY,jxjF$Bwl''ѷk$-)mr2Y#CƑ#x Tc=A S4 SPEڽy{=oȔoUquʇEM,ZWr)d1h9ϨJP! O3l*W(Fʨ#e3֝s[CءKI};)[ixs޸"L8;η93. Y(EW?6Geid'lg2'XjG19cV䬽,`zνMM6j6V..@ψ1ntRRzԶjr11AF+pNBڼ&GDI oˇ֥+*!7w۫p8J୰fS鈩X"4Jd$RqeDblKIDtabk ~p)`2ȴ,l+!ЉN U=7b0\OE=&f? JbhKWzũQ*ů֯8DLNBDZVuR襼'!ߴ$$6}D2%sy2qSz : Z֮U@ ]G)e# ?'Zxh JvV]]9JX=dT&02Nr=6-r [>‘!%&,xi_r$6lR NgTWDn2[xqYxhz[`l9 ى(}F-n/f^B!-uR/ofJ8&hd_twCka"PLC-g9R`2җ|{@Sΐ|#J24q\m>..juNAův5=5$./ViJT)\s8FA+}F9 L&P̖f.Dly^+x]|K<5~K~}?Da>+WAd֍&7jQ@r D}cޙAPG[AS9ڏ(΢P83BcBV(DaN$8n8Jw{4#trQ Kɷ㪅P>K p#A+J6EqK TxޗCw*Cɯ{c/w IKI!nm/ESeG؁T_j|{)K՜(q=ݹEP1GJ羀EoY(h:ޙv|VV3vC](@U8|nb2;K^Y_ŗ%R]^ Mh ,쮦.sJU l{U1VpK}kZ'r+q*AVE M?Z* %L(Sz,r榙5v|r,1c0,Stmb t[7E2u+a?pL)uK2CoWegsO~nDuLEN L&˧m2du\u'7U ]ؽtSq՞GN,F5ҮNBm,fCլz ˥yccAke/BV+:(; yTf`(2rt,xon441XvIӹa(zBF~7nnw=Y1:sNR/Qص6>5B\F3/ g0КqϜ+ "nSuN\ lh1.1bU0X]FT-|mϡ,q6m]j%u5"OFv-yN0|)ڤxLCxf̢*'d%0gKBadvۆ:G!@1LHJՔĨ*^$ C$'R^Y.uQLg`#Fa\p_4cHν犌 BGYG9cu]Q7l5Vy%TfSI.Rѧ1ٜWo!؝W%OCP\I#ɋ԰VWMFQ!:7esܧ0O=@Ɛ)KR3i(7EpDYRm1ƭL q涄_)$iq 0L`qtl~-hq;?™pET LdZZ /1=}~PUӍe!0{)j Mjv0sD|+ʊX#tװ@e1Ĩ)BxiДݘ!I9)הI|E?;7>g R %3 bQ%ǯ Y̑=xG} iIŸxIJӥǶ5e:V{t_1G52-ª(z֔)6$)ph{*=Mh'¢,0^X!w*#_P eT6ˆka̙v0!a-!Z*Bgx2ywC~\( Y( #mkCrDW@CKt[6j Ne?@2cAR;_}UM,LۃQ[]&<, ibܵ1IGQZ93$$A Qx(DVӏ6,hebTb]<ꏛdžVEg6YcMn>q[ ]Ӕwl I;8üdmRc+}L.&7GRv{oy) Pz0@jvj,Ŝqߌ6AsE}ӌu>Ah=!`(Cxdv͘MnϬQU!T@GswXXlZ- C Q}^P?/]WFMFlj|)4M;Vj * qGub;u;1aB l k p2 M'|M J V/J~ @pY%Sg-},GQ)2!d0vb:Ou~ kohme%X9XimjwMEYgJک"~G8YJ XQX(xDo.rfYN&`;{KAmz5pÎC !in3PtFfٿZZr1J}^.*Gi_>5]?un XB9KJbfl\TTsP/7K3!UMߣd$]C.Gnfsk O Mo|b&!&}ckVunD ms*ʩX8^ "fWio[ =>qK4>H4ɘƭeԁS],Wz,Xs)ëa綟fmUQ,vXrdX*Lԧe"5tτA |=I<OlmXDQrR?gT&+-noq=t @PmE c$z ƞB͜f&Nw?erIkIW7?Zʚ+ty+)Y,xŹbRE_1,B\TFݳfFXVX-wY͟A.QipQ+]{Ǹ`M$6ā0⎃X='ISl 6׃\Ò_ոp<̴tk ˡD}=L>,Hnm'^t_w8Бb -[D4"sl9P&{;A]`*f0B}9-P~4LHRoH17oA;#.^ f <$t6\g;rS)`6L(NtΧe eHW,(:%t+ϋՅqw ƀ<DS;=z'ۓ\$1*k!ejco1bD rL+Imq5>К(\2MEvF$(LZnh9IS#2hPH#7H#}4b,xlUR˘-OLT㙼HFSkV&/ͩd@lvr?U20<؄viG؟-yQW.a'58:6>ep$x|R2*~.o [2 :e\ f h2MDNt y/s7j;N Yw}$Uu*Ք IEY4öC(QOXwE(sN:)!ŵpkN}wR  Bygy 2kBva[E RxƿUIi(QurVJ8N@?G&CPLF-H*ˠ,.MNERMI^a{.+j~G̼5k׷_jJ6@d{nqgSw|wȔC =As8^?)1#3 !PUՒQܳͷKnYX?v"܌ @GxuH ǷB@aRk穯fW/0/&5fãCpOdQ DMn_[ B{F"Hĥ\YCUҩ~H/i`g̲)jj"@$ yR#؏@~Sy6*^h1ϣΩo{. ]zH0{ *n`]anov@Xev2Qu*Vnj$nqIz|#׍H@j@^N[=a:Rayjoy9i3)(83}lNis5 `8|.rIH_% Ri>((B=ij+eǤbuf{EiV5({ez v6DdhRmxP}L'R~yչ g-Hd?;띧w~  4*ɦ7Vdks Dx3LZk5H&x$OZZ=E͢Ye U%> hIMߡ}5mTQ~~+̸=$b?5DkaPuV-5c!V7{D%J_3 J&nKVWK̕J`I{eHq.NyӳF# hUfjd4;L#u4ju9?2Kp eQO`^yGN[Ɛ7SDO/7$+?к_P> 㜭G 0^?l5A>Cڈسe櫰"3yZt1BqbzR\lFv^[JqT| XwiO=pSؼ]G-ǐÂG~H!ͤ^;O)[x;kra1:HnҠh7lxb$'OZx~2p  #|FR&l~^ NC}U0 Vʲ<=qҝM;lK"@b.0Kov@Yc$B$\$ b!"-Xm-)IG;Qw@գ2m @?$?~[y-01uOP!@Znt#T0+q\HS]ODVkљ\[7aQXK5A=pK]z( F:4DƓ#z~ CM ޗV:Q^x4a_ F+9dB7̫ME͞+w`<чXE6$,<O{yh<+eMmr?Z+ElķCE`i; /c8 U_B%DL17 :_ԟD߂7 ,G`Y廈'Fo4G~@gǟgS9 0L&8`ê@z!i= y74"SM dh{Nb ,>!$IijuFNo~0j4'zHXy/+;dsR9F~3+<=EͿ;6_Z `?"P =U32P?X-q SgR<C5!N6^ }{5-RWa_%zaDG6Q|X ejPQ\'h>e'Dw&@E=J91gtu٨l!ӂfHe+uIZvo]Хp&ɕnQG-/jǺ"S#Փ=> Cn5yǰqd>'0hq2T`v ! Sm1e i>N5<5ҡ: <& :UtaٷuVOcp6z1V,OnCLZ2II"fskbtƭ3kNr;=s40Ai!}HPsTƐ 膿>,CX4inv^?ZxݼbFP1ß㌳r?!`.`6%CA\vC*@؝PwB.=Wt}?ac1O&oG!YhFA;tZ^_!C3PS,q+OBC5yI{Wi#cX4gH87%.;=Ϝ+RL4ڢd}6+J .c J0oF褶$ʻ]i7+W3*H|9㒥̬,4_N (N::L|Z:7R` D>&|A7{k]P' Eĥ a"ʋɇ A<Bt3 VϱYlu}5*ZP;stB/6gBbXz $"[|^Keo3rF?&/ꚥ[Ajdf:8 ut0k+-mg"i_nvW~,QTʍ.K@n GB3 #jp? +6{-wv H9'J юRx+iz7Q:BNˈNb,]ZU](wչO?Lk,{'NO+œ~[bFtj:=лԟEdac{܏kwM'> #ytli#v(JyIKr*>}z[He BI{3T{w*4Ffo="[o5*r890$mdF:28mg{wː|+yACL0zqgĐp/۩5^3L@y3=^Ж{b`"fg ["M+r0sp>Y,;қoY4 R"3Xyounfk_3~gA ? LVsJ;'#*P xG"DBgM^1\D% ʚFťU&u~ɖAx9n.G x&0M=Z(rGOlLj=)XE 5YvV(k*۞4޻Мc9U a#mJ4ayva E{]7@pj@ܝ$^`}-GJ$~ w&&BbQ8a'. ҆肀#_Z{9{s"Λ,e| *&ҵ>sXC j]K3To~Ž{Qu2!R|k465t]~ߍI5khcWF ͓ Ƅ&d l$5 fp7$[ *o2XRb2A2&u9)i}ϯBVXi(GjJ(_ZqGŐMּ3z$V~2Z݌ ۄ Ӽy TNrSRL>RQ&}!)q\7^ !;&ZZА*~u3=Jǃ&ߕNQv'Y5>J@]샺r+>4[w Z.aG/qi8Ӓ+M7{(6}u[qc2-nl['plzSmezeA0淼8YOdѴ{]֒[W 6s| ~je ^ѰC}s\Z| R@`G;,u&1p @Z8.eJ˻&Po`隰X[z<)Z]"Kf8NH ٨t('IzѶ3ߡ#;`u;6u*FK,iMð79` 8FҌ0 h'扂8l8ZY`sC$poQi*<^WDQQ1CJA^$VMc4:Th`c)/75cdk'v5Sx>h$Ukaf|hihQp'oró?oxؕu{p#}]/VWIRS;;u.P֗`|Ų_m ZsOE@NT[,y_ic]|HF.pu D~OD+\/%'E \/#}lPTMptwp%:8*=δuS=~5-4sfyG2Dv r1>ã$1_cQoWc%]Sd1 =r}_4Tz5{}嵭#^[b:["#}>J$eU+JpEm~2hۄ?<잜"]"q62 H}R-;)-=Fo|U% S׷x$q&-"{vRٯjCw/+HW:r=4߻ C(h= V9I- t-ЀC(WRYH l/#Sȇ$8: ə.Ǯɘ~x45= 4IN e d&oņSӡۀ-}p1 FnefvI#b-^ԏHiy;??88F_Sւ}wVZ$=_=Rƕme#%].r1)9l_2A Ѡ1PW.dm^јUR(4@`Ѵ%:Nq `8cOT*66Ե!8"6rwֱ$xWr|oUXo=6 [#|(POM{| m!w7#oK ԳAסƢ)aHJh&+D)~T)Rz6YL{`>Ҙg: $&IlX`hWrE31<];O Ov" ЈJ% !W1Tn2T MgvZ}|:Z|Q5: Q~#69~Y#"|!2t|{/"7\u|+A 7D|ͨd2ÞL+!gŹ9 %'߬03%,s/z-FiKa-_lJ*=?@䚍Pz}@(8ys):kCfD c"o1 gk /3oWBS߽V|>>o* QoÙe-\neg (x+v\a 3ո,`vʰ:X<)*U=p6#хб҇l` ?66rGnr,Ȝ>?Qf竆³Xp<δd8Q`;b>OR$77KY r}ħ ͠ƚd5 Pi\MNlu8ҴpQTDl֊f?Lv4%yuYܟFj9㒓) eJcȀku{Ze%ZZ0.>k5$sZ8? 9 ᴢNv_"esDXdtO P)zZd=e[(Ec.\YcTc#iCO(92bc:K1.`fyL,hcsrխT] `j> N!%oayfNԗ4#1qP\#*W# g&t'2zBC D-0H$JT q 9OZwmmNd}V!W,eЌn)bH1&+'a`Bì4n_`f.^|vTYxɅ8EjQf&;/[2ڪ*qf?JO~b ?VĈ[b1SNח:T$*ѣ |6V]:р<54&jVD0Օ9 [ܱiGPdiuH;=PdyuN=a\{$F#g ,__PUև3 `Ыĥ/I=C mhNskax }wR  FNIOQz߄S DaʸLG#NrDwfG4R)9x}-ډ}(O"hI`/zKet%0cHا^8,HV*h&EmOQKKg^J/Ǧ)> EX+?cjY{# i#nxC^ۂn &@r= 3ͺpvfM:!z@D"?TX<5n(S\V*Ak@IVq\O?)oB&U/a=W\[U>H5?d-+p͇ I``ҝFVh6j`pc TYk E{muwSvp2jյ?}IS}x6m LZ0T {98r gl%(#Xwt=^{.P(D j$#wgg?{b`*+G(0F*DR5EKrX}XMFG`y.n,eP,i=, CbuJ&ij֬T[6nbI ]#71גʴE#h>soT6-Y3-XxbUYx(/QaQ e2@Irw&՞apC,@;3㱸59'h/5P̘5~=~== [z;,9w6փ#kQH $ք U =>] E.> 0c!^kLB"j9$>}.sjj9tMmB J(.rVߧMg,lY? B>™a1Zi UtUw nDPoM`F6~[Pyt%4e3%yL#HllytkMqRb^}D#Jر 60/lK4)޾4<@az!=[n.2Nͣ(~\mnv -U6{2B} 1c.Y;^[' V5RόznͩmL eQ݉Kʸ;:R t?` |HhO s-LO8E֓UU2^L%V:1$DQЃ=jd2*3?Rm.Fvp>`*&..qUiġMӷ0lH/ɪ68a ?趁R"#IUGdg(410 Zq#E.nEي=n0q>:YOkv Ѝ1 +Gycnh܋Othr{fRP`E6Ill>jf^­pەO24ݎ8 /c!AtNָ/;ˏ ʴ~ ƛ %y fxcUA\Xrv5pQpZ ;6qb}7Ǒ@U'D.<ȫyh@>W>y$:1ߜ[^败c=V6E tQ%WG-I( l6)d&_Cҟ^KK??v?X4T@ ׸ld*Uz NdG iĞ5ϲTnƮRn{+r)?ZZ?G Ӱ(91d6FloN,=o`vIEROIsI~ Eo:-),ly:[aHaD]N*ke.-Q͌3%ŞZmh+x.;mwzesqVeY1hniQ䅍8`c(pOkO7spvOb;z-ۅu=9RɌ8C3h}az%gցl>"MC, e &L Kv|RcZ7͌{9ЂO&[!ڡ]̘H&\nǿa2VV!"pia*&ʧm85'-3jݯb@#͜wvYa}螤ʋ>A<ݲ 2&sN}h^lhtl1mZ+WE$⊸_p?k|^t:UW-zKs+b,&@=⒅N$f<LJl@Uϑ߇Qshkc-RWj90$".u?oѽ^HY\GDyu_8{^F ։L:o@t#4+9昒-Ȓ{rHx QŋGJǁ"W] O/gbMs ڶ0oz"-&5sRE,Sk1=E죳-&;EZѦ(`v| h=ΚKYV7+KH}_CC}Ih6lZ_T{D}Z-%]An~=3(ŧE8Bq:PWmvF!0w-Ѻ&Rs2%b|wW6L?`1Τj'ifb)!YEHz ;_h-.[Mv|bt~Qh:*q>;*5k, ﹭H_wVwG}If+?j.:4z1坹_,'vV 9;bGU̦=iN;VA/6p7nXLǪF1h5R<̣q[ ON|_]:K3el[sp7h4 zZ9C@МutoarXGMM:fĶ3^^T;p84]~7Epzj,$W{pz=2P4JQDVTџb@n[ ^y- W&2P0ct:^=p 箩כTUR;ә7^c\hWW`E=rk@U0.(-qϞw O3ܩ,}T$EՠNƔ-\UJUֻuuMt3x+9lFхUۢw @tDS*K_#/vʤ,C^cG'Pcc;ŝD٭WF6,cIm?EP QXЬCy]gV=Pևƒ}'.Әj9@iol AɱQEjWP`"gDd@ s̮I#1#DKF}@"VW?1z|w&8[֝֫?M-\X<]iQSDή^K#hR3MJJ7FG^*'uvm* TN5{ᓡ{pǟ+jaNjGM "0CPyu!A(UuMC?/3sqYI7_Vy;}f#/uI%O}UD uY#E\T{M*= p(TUD32¬┭ĥ 9U"Jwf dǵ;_|fP Z9Ώf%b_"rx NSk&6d^'ځsk+ۉ9~ڽV_S>>a؅^yi$i^:߇@Zt?SՁ2 f@VT"Q k#Ip.֘s h~| D|x>rfTI ۑTE!l3?b n]'cplonKvE8jhXvbc:fTU]"FII`k- R&ou_óON?oz]u{|Y}]4_VWJRS;;u.PĜ /O1s%94 3H󺄬@"ήwD(k}ؤ &=ϯJ4QpͶ"wWx  </CG!B"5WQmdIBkeG+8OI4Ab._ '~&gi30'_GVEz$qe!E+ ]/D)ӥ4)_PaHt%擏ԓ(,y;{d+zv}";BmHu(%{>c#Oc65hF!׊'3( !=q/f̥wAX㌊ )j])l䧣\#x}:N`׸fvKTpOAfݟN͛~UoČk`pNNA/@_pQuPWX^y&j}5XQmcBȺǹpA-GPl: A*cL[˪:ǛáxKap{>X y^lЎ2!BJ#{~#eC՝t2Ͻ |2cA6bΤOD_U<# ~B*  XoR2s7L1by% %KHΝ1ۅM{e,wn!gE+[TTb Q4rM7VC'O͐ v^"P%7GJ*1[mS8FlZ[΁M%o׏ZDR^]Kh~JDơeUQV a;S.3ť~aB T.eKf6`4[tӮ7;/x̍9{`reνz+ Qa?kG=|@E3x\C:2`tSzeLx/͗IFyP1C(.t< KI_5eDmÜrRoԎ ,; B=˹Ȉtg:i._S:vh |]oܤ{㩾v_Y#4V)wP'4k&x_z~\;~Gk4IŽ"`l#}Ė;4Q]iÉ<;/whQ8) UL.'kNzFSylnIa'x`qu{xn9e6')ZirhG #_sZ)ԷIc:y`ib)ߞA΂;(2WL;DxP:):֙{.,g!{}rZS!\2荜/ꘫ8ǣdBFmQ7%7 SCk.S1\~@:mmc]Y7ƚwwߨQ 2B,|=(J"-#qpEu}W~ݬui\l9vwghȘ1P!&L5UQ5A^iқH􏞱 {d{OLǡ^}#y#LjN@`~g:@1"ب=>uR2^K x%8$'ӯXq7˟,O:y Ap ty]j^Ò6ٓJ)?IZ "{:xQPkͤ z`[`&Vs]; ^{Z]z \9#Ճ#slOmyG(N*q(*-x]1cT5ɽJz׶HdU `RBoHڤ`|c${P%@^<|/+Y2e$8kPk iN_s/b,#PXx֭t>~M]Z/${M:o@"eB,8'f#\G@&նXC?H06 4Ve+%5t#<=~H-LDYAIU*%C8?T̮#0e$KAxZ(Py;\q|noEt9XTJ-v=bŌqod|}wR 8gD /?wO t} #,hsS{gϤu.e=^ɘf-pxAo5?GVTԎmܯ>⁐Hg9K+zD.VTVs݅LT ^T$5 JhqPc%z?ˤt/n#| j+Z|P@InsX9"ڭZuz+HUk+chϓDίP,N%:!.כFu]- t jUݸe]u 'qW<.dkO\+EǍz`;1y"3=&+,bCHrRM5j?_<(1|R^,4:KN2Sͽﭺ4+`х*ЫA !t $܈O7>.QDW rvïf#'@SnD.?]dbPI>oOyy+C%`~뇽~{lc|tzw֪@ YghumCY&[Uq)]dVeʉnL&)6'Jhmxz\ Et q[6ꖊ^XzU-̉F(f3'v $(Or_y?V1NJXFZ ^95[AFx>Pc[ա'L C -ֈ!] Jp3١S"ўּWބ,B;5vU KqAlTa$@f6 _Y#f/y>zē#'!_jtx;irlc %s( Q|8)pdy]C(\X<' -,G;h͠FcS,Q]t-yp孍yV2OMŒwD(a5}G-o]|}w8ƌ4N$^q~]HQ͉D9z&Kp!Q2v]-0)b"δZwJ}3˙߁J@ao!oQ* j@u`N)7jmR#E!Gbl+\sɠř,??8D2R"@ae9"oYKaFBzv<ssqflTw~a$nҒՀ]WJxLCR٠{K:TE.WsэJ/R2OGUJPd Up_6z Һ<<)6"ۓ^xDmqWK2[tHj=kcK{*'~GE&5q=44)|jIoma`gϥf+G=<rTV+{^^\V}VIﰬ\bږP }/6XIZzֲODt"'O ?ݔܪ+|Əy-nYÚh_M*YQ:OK h@RŎw1xkT`qqR_.ݙrb$̈8vRn:RKvZ?̧#w 0;_.&E!\' &9ĺ.Y \b Ҝt&u|VUʌ[\97ؓt,T/v ) 08<é^ο羳:͚@$l"p b]q<#!Ԝ |'/uk&tg ~v9=.!3@|뼅M5P`, =َQl軘6|f@9[ylia{Ͽc3Wmvus#!u♐-b2_JȾb7-PA^U݁FG3Re+Z"|ͷ{!{ ܩwzu l6aH9\!,/%;Vu;(z^)wGI9&FY'g΁F`2V2C/% Pl@1{_RM+a[ȁQ[]9tJn#ł>kp+?eqr"Dyvi& o8dO'Wn#mhM[QݏgiUsw2>8ϩU'kT;~vZ5"Wd!fBDw43N,^lcSlk:XIo tKEr&`|$:`{74 P# ʙ]{|j2T `@[Z) !.2hr^WD',wՄ=jO\V.?ܗJeN k:80wq&E7“sX 7dnlFUB̀Xt[IA nD>`SֵŘ<C=}k9P*5i$ Dd<8w&>.g~8gJ_pj@Hؓ/pR@Q91ՒM@[KMUVY (1}@:: D!%ЃtV1^3SZfʋl9@BqWatz<[\{j;QY9XOq SI?ɗZ%bRsw(_yac1Fo'\א{Ra2GV:V>ELE.*t&ΉBsQ &RI8.u[_ᵓ (mXr];]Jd $rq 8Kvn0V[Bna;B!:p1' 0ftLR7wbHr%.gP.l(T!PpIn+x[pi*?}5amCx'wmũSS H+_39d8 tZ`1bߐ:*Y7 (=JN}_ntJłr>{*Rkrߕ 7>će;uQ(v+_ QRKz^>vG.r.&(V22B6 \ȥ^^bF30_r[O^>GF uU\% WTDiI,As #'؎8 ǦԓĸݙLiklt-"=:h.OI)QN/i`;04^s}'%zNgş^jiNÁ<00Z?V.<[,OwLB@I IL@Ze36rس6]LG@x]DAg&y@̱g-w/=e1w|:MB/TZ'rNv=5z*Vd9WGKՐQ2< JQBdÌ%9Š/:f d#%ύMVyƗC}ܖx|=MfT1(!*}OrpuYQ%9Z14sQ\w9Lyx2roawx~\F d!/hy:܁o8V`I^0&N[-VB5+ +,DNڒ@S ˎ%sN Xr7f##GבZ/JUm?+1){H‰MacVq v¼ޓ%VC.cw60@:d̦InKz _!U Y:8$E+4dkmlCSXh28L- k4ecdFY+B.~H 9i:{ GNX qӢ"K=& )z c'`TD;XvvG' _ v#;O@mΟrTQŶhpispγ0+oGUd;86ˌ| rWAM'f%(_( jRa;tpa&V^,?qmduOiSWw4`yyvVg+߫Z"xWK 6g6@'j#t~oq&wJ ~xL>D$U+>wku$2H-#ԭщ0xyٚa7_0uOD}$*0T i=czIrűY4XEoǨb##[4AmLF&M3bd5܉4N!WePɻ 9ŎNJ5脈徟M!:'DSjr8 q WQQ˨! "\vz)遐DKD'Rag_4_1  Ꝏ|L$EqWgK R틋\vp'sL4 ^l?[C9`MYjQvsk ?3Y!;يi*Y`wZOṯٰop-nםZ3Sqf2nǢoNgˆ 0r/o*<" j[l4fV ^Vnu259ӹij4<=\YMR:+z)]xqWXaYI"o4~:|HKf=^]ݩT2:-R^tH0zZΝn=] h_?zUu(u,&:4zuyb߭0h-@J^Th`fGMrL5Vḟ3n~V2.(}E$Ëyr:R_-i8ԭyp!^F @Hߥ s~R~"dVb+ odч:/er^~"ڃBtv~ݏv]a-ai1N#CV uUv-IXVu ürT:?j2~_Q/'BΛQ0&P^Иfbif]3ř'(oooΫwr [oo?-vgCpeeN"yZNaK`nbl:ۯoo7D_7|7|7"yyyyyyyyyyyyPC2H& ,j0dc٦ 패 ,[u|7|>L<^[U`o7|7|7)a%}JNx,_oOr6 QP<<*w8a8Ƣ+]¶oo=Ap6i`6 al6mpGrXtf=p;al6 aJ^7SG2l HY[6Y MYtE9!vVTwS ¥*n{=UHa'SI-AmY5Rh5"n4U LPX-LqpKNS:Ѭˁ-#@w{>MnZBWM#./S^wy2 V5U 3n3cJ^JZW==Z+0x bkN¨xj ɦq8SrkS/j 4G]=7-g/q 9{0pgmodeler-0.9.4/apps/pgmodeler/res/windows_ico.ico000066400000000000000000012615361416010000600222360ustar00rootroot00000000000000 ( V (~ 00 %(  NN h^(     """""""""""""""""""""""""""""""""""""""""""""""""""!  $+2579:::::::::::::::::::::::::::::::::::::::::::::::::9864.%  (6BKRTUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUSNG<0#  &8JZfnsuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvutpj_RA1$ /F\pxhTA2'! ! E>3- )> U o zeRD94201222222222222222222222222222210.*$ Aa}tcVMKJKMMNNNNNNNNNNNNNNNNNNNNNNNNNNNLJGA9/# 8B7ר2ͦ1Ԣ0۟/ᝉ/盇.왆.--.................-,,..--,,,,+,,,,+,,,---.-,---....7nc(riedfhklllllllllllllllllllllllllllllid\PA0! 8:g|z{|}~~~~~~}}||{zyxwvvuuuuvwwxzz{|}}~~~{`q*yy}vgS>* 86|q`dcccccccccccccccccccccbabbѿaν`̼_ʹ^ƶ\ô[ZYXXXXXWXYY²Zĵ[ȷ]ʹ^̼_Ͼ`aaaabadxisd# zcI187w_@ABBBBBBBCCBBBBCCCCCCBBBBAA@>=<:8767555566788:<=>>@BBBA?íKkfuf$nR7 87wdD5,,,,++,++,,+++***))((()'&&%#!!}zwtrrqqqrtwz} !"###"):ðPnfo` jii[[]]^`^^a^_a]^`\\_[[]ZZ\ZZ\YZ\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\YY\WWZddfEEGtW:#87wcE0#""!!!! ! |vqm|iygweudtcuducveyg}jnqv{7Omgl]'ɚ^_axZ=$ 87wcE0%%%########!!"!"|umygrbm]jZhYfWeWeVeWfWgYhZk\o`tdzhmsy8Nlgl^"ȖSSUyZ=% 87wcE0%$$$$#$$#""#!!! v~lvfvep`i[eWcUaR^Q \N \O XL WK YN \P _Q bTfWk[qaxgls{4Lkek^"ʗUUWz\>% 87wcE1%$$$$$$#"#"#""!! |soryiNDI?F< C9 B8 @8 A8 D<B:ZM aT YL SG UH XK \N _Q cU j[qaxfnv}2Ih˿dk\"ʗUUWz\>% 87wcE1&%$$$$##$$"""!! !z|~l\P2+ 1+        &" &! ;3 SG WJ SG RF VI [N _Q dV k[ sb{jr{0GŹeƺci[!ʕUUWz\>% 87wcE1%%&%%%#$$#""#"!! ~~SH1+         ! 6. LB VJ SF RF WK [N _R gW o^xgp{,B`_fX!˕UUWz\>% 87wcE1%%%%%$$$####""" }m81      1* LB QE MC SG XK ]P cUl\ udp(=[ZbT!˓UUWz\>% 87wcE1&%%$%$$%$$$#!!" RI5/    D: YL QF QE VJ [N bT j[tf%|8UV]R ͒UUWz\>% 87wcE1%%&%%$$%%$$"""! C<      .' E< SG NC UI ZL `Rj]!}q3ORYNΏUUWz\>% 87wcD2'%&&%%$$%$###" A:        I> SG NB UH YMaUth/ILTHЋUUWz\>% 87wcD2'''&%%&%$$$##" ?6       I> QF OD VJZOk`+{CGNDӈUUWz\>% 87wcD2&&'&&&&&$$$#" :2   2'6+1'.+2   G= RF NDUKdZ){s?BH>ՄUUWz\>% 87wcD3'''&&%%%%$##!!OF      ;/!tG~RqCzldSF7+ ,#&$)      E< TH PF_U&sl;w>C:~UUWz\>% 87wcD3(''&&&&$$$$#!\P    *'*vbPUxKwHxKv@~H]vJpc;/$    PEPGZQ$mg7yq;@7{z{UUWz\>% 87wcD3((''&&&&%$#!"pb      %#&zg~GuJxKyLxKxMuJsFwIv@Tf?M>.'!      *%VMUM#hb5sl7=4 vvwUUWz\>% 87wcD3((('''%%%%#"s"   "t`w?yMzMyLyMyLxLxKzKxJxLsGxILsNF9*    G@VM"d^4ng5:2 rqsUUWz\>% 87wcD3(((''''%%##"H>  kW{E{PzNzN{LzLzMzLyLyKyKyKxJwJuJtGNkR-'#  0+\S#aZ2kc470 oopUUWz\>% 87wcD2)(((('&'&$#o` t_OJzP{O|O{N{NzM{M{LzMyLyLyLxLyKxKxJsIvCyLH;.  TL"aZ2ha36. mmnUUWz\>% y17wcD3()())'&&%©&zk   =4+WwO|P{P{O|O{O|NzN{NzLzLzMyLzMxLxLxKyKwKrE\N?0 62f`3f_25. llmUUWz\>% nc' 7wcD3(())(&&&$%^T 0' dxM~Q}Q|P|Q|P{O|P|NzO{M{M{M{MzLzMzMyKxLyJxKuE~OB6+ '#oh6c]15. kklUUWz\>% KB6wcD3))((''&&Ī'vg  +%"zP{O}R}Q~P~P}Q}P|P|O{P|N|N|OzMzM{LzMzLyLyMyLxKxLwA}j0-1  $"g`4e^25. kjkUUWz\>%  /*6wcD3)**(((&%'dV sc[S~S~RR~R}R~P}P|P}Q}P{P{P|O|N{N{N{M{M{MzLzMyMyLuIQE7%  =:&mf43, kklUUWz\>%  !!"""""""""""""""""""""""""""" ( 5xcD4)**((('ȭ'h[ 1+$]|SS~TS~SS}Q}Q~Q}Q~P}P}P|P{O|O|N{N{NzM{MzLzMyMxMyGq`-*/   A?'mg55. mmnUUWz\>%  (0579::::::::::::::::::::::::::::9>$5xcD4*)))(('è*cW)'*}MVUUT~TSRR~S~R}Q~Q}P}P|P|P|O{P{N|NzN{MzM{LzMwI\B7-  C?(ph55. oopUUWz\>%  #/=HOTVWXXXXXXXXXXXXXXXXXXXXXXXXXXWW ZA4ycD4***(('ɯ(\Q 5+ X~UVUTUTU~T~SS~S~R~R}Q}Q}Q}Q}Q|P|P{O|O{O{NzNyMyKPB4$  DA)tl780 rqsUUWz\>%  /BSakqtvvvvvvvvvvvvvvvvvvvvvvvvvvvvu wb3zcD4++*))(ĩ(aT 81-{|QXVVVUUTUUT~TT~R~R~R~R}Q~Q}P}Q}Q|P{O|O|N{OwGhD:4  GD*zr:;3 vvwUUWz\>%  &;Qgy~3{cD4+++)(($;6 QD7ZVXWWWVUUUTTUT~T~SR~R~R}Q~R~Q}P}Q|P|P|PzOOp\L   KH-x>?7zz{UUWz\>%  +D^w2{cD5++**(ʯ*]Q<55~PZYXXWWVWUVVTTUTT~TSR~R}R}Q~P}Q}Q|QxJe>5- NL0CD:րUUWz\>%  +Gc2|cD5++**)(UKPB7^XZYXYXXXWWVVVUUUTTT~S~SS~R~Q~P~QyM[PA5    30JDMBӅUUWz\>% O5-$gE.W-V-V-U-U-V-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-U-V)nI/|cD5,*+)д,VM /+,oVZYZZXXYXXWXXVVVUUUUSUT~SS}RzKp70) 72PKSHъUUWzZ=% P5A,'nI-V9n>y=w>w>w>w>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>x>w9m+rK/}cD5,*+*г,UL PC9cY[[Z[YZXXYYXWWWVUUVTUUV~T{SVdSD  aW*SRXMΎUUWxZ=% O5D-'oJ-U:su)~SGxXːSUŠUĊTĊSÊSÊTÊTŠTŠSÊTÊTĊSÊTŠTŠTÊT‰TŠTÊTÊTÊTŠUĊTÊSÊTÊTÊTĊRŊ6b3b:r9m*rK/}cD5-,,)>8  2-+}e^__`__]]]\\\][\[[ZZYXbMA:    WK 4Jjdk\"˗[[]xgUE:41/0111111111111111111111111111110.+'! O5D-'oJ-U:q>v)~RHy[˒U‹WČWČWċVČVČVËVÌVċVċVċWČWČWČVċWċWČWÌVÌVČVČWČXČVċWČVċWČU‹Sĉ6b3b:r9m*rK/}cD5,,,)D< D9-şr]a`a``__^^]]]]\\\[[ZZS 4.pal!5Lkek\"̗[[]yk]QJHHIJKLLLLLLLLLLLLLLLLLLLLLLLLLLLLJHD=4) O5D-'oJ-U:q>v)}QK{_̕YĎZƏZŎZŎZŏZŏZŎZƎZŎZŎZƎZŎ[ƏZŏZŎZŎZŏZƎZŏZŎZŎZŏZŎZƎZŎZŏXĎUËRĉ6b3b:r9m*rK/}cD5-,Է/bW$  \M?k^```a````_^]]]\\]\[[Vxr  71i[xgo{ 5Kjej["Η[[]sha^_cghkjkkkkkkkkkkkkkkkkkkkkkkkkkkkie_UI8(O5D-'oJ-U:q>v(}QM|cΖ]Ə]ǐ^Ǒ^Ǒ]ǐ^Ɛ^Ɛ]ǒ^ǒ]Ǒ]Ǒ^ǐ]ǐ]ǐ]Ɛ^Ɛ^Ɛ^Ǒ^Ǒ^Ƒ^ǐ^ǐ^ǐ^ǐ^Ǒ\ŏXŌUËSĊ6b3b:r9m*rK/}cD6.,۾1KD#"*yf[baabaa`aa``_^^_]]]]]\ZbWX  6/]PeVl\{jw4Ji̿ei[ ДXXZ~uprw|zn]H3  O5D-'oJ-U:q>v(|QP~fК`ƒaȓaǔaǔaȓbȓbɔaɔaǓaȔbɔaǓaǓaȓaȓaɓbȓbɔbɔaɓaȓaȓaȓaȓ`ƒ[ŐXČVċSĊ6b3b:r9m*rK/}cD6-,پ1QI.*'rWebbacbb`aa```^^_^^\][^RGD82THXL\OhYtdp{2FǻeȻcgY(ԙhgh                                        nV=& O5D-'oJ-U:q>v&|QRjѝcǕeɖeɕdɕdʖdɖdɖeʕeɕdȕdɕeȕfȕdɕdɖdɖdɖeɖeɕdɖdɕdɖeɕcɔ`ǒ\ŏXčUËSŊ6b3b:r9m*rK/}cD7/-ٽ1QI0)"qQhcbbbcbaa`a``^^^^^\]][aVX  =4VJRGYLaSl]yhr~.B`^j^ &  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&{`D+ O5D-'oJ-U:q>v&|PTnҠgȖhʗhɘhɘhʗhʗhɗhɗhʘhɘhʗh˘iʘhʘgʗhʗhʗgɗhɘgʘhʗhʘgɖcȔ_ǒ\ŏYčVËSĊ6b3b:r9m*rK/}cD7/,۾1RH 3,&wXgddcbdcbbaa`aaa_^_^^]\pX!?7[MNCUJ[NdUo^whs)>[Tt(dXgZj\j\l^m^n_n_o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`m^zl!SK.:9*s-w-w-v,u+r+p)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o)o(m2z$OmeG- O5D-'oJ-U:q>v&|PWrӡjəl˚l˚k˚l˚l˚k̚l̚l˚l˚l˚l˚k˚l˚k̚l̚l˚k̙l˚k˚l˚j˙gʗcȔ_Ǒ\ŐXčU‹SĊ6b3b:r9m*rK/}cD7/-۾2RI  60)}_ecdedddcccbaa`aaa``_^\f D;UJ QEWJ\OdVl^vh&|7UaT]÷aȻb̿dfgggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhk]v/BX_l0u iJ/O5D-'oJ-U:q?v%|OZvդl˚o͝o̝o͝o͜n̝n̝o˜o̝o͝p͝o̜n͜o͝o͝o͜o̜p̜o͝p̝m̛j˙gʗdȔ`ƒ\ŏXčUËSĉ6b3b:r9m*rK/}cD7/-ٽ2SJ1+#vTideeeddddcccbaa``a``_^dD?A $ MBRFQFVK\ObUj]#|p1CTW\aƺe˿hjkmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnoj|pyk%TINCSHXL^QdWm^wgox*Fmtxk$=TlfJlfgffggffgfgfffgffgfggfgec`][YSQk'm jL1O5D-'oJ-U:q@wyKsٴ۷۷۷ڷڷ۷۷ڷڶٴر֮խӪ~ҧ{ҥwУtϡqΞn̜j˚gʗcȔ_ǒ\ŐYčUÊRĊ6b3b:r9m*rK/}cD833210ϵ2sf&822oilmlkkjjjhhhhhggffeeedddfX{n^Q  @8 TISGRFWK[ObUk\uemv,Fmtxk$=TlfJphiiijjjiiiiiiiijiiiiiihec`]ZYSQk'm jL1O5D-'oJ-U:q@wyKuڸܹܸܹܹܹܺܺڸڶٳرׯլԪ~ӧ{ѥxУtϡq͞n̜j˚gʗcȕ`ǒ\ƏXČUËSĉ6b3b:r9m*rK/}cD8232220/PF" ^SQximlllklkjjiihhhgggffeedcgXxl[$"$ =5G=THRFTJZMaSh[qb|ju~,Fmtxk$=TlfKskllllllllllllllllllllkhfc`][YSQj'm jL1O5D-'oJ-U:q@xyKwڹݼܼܻݻݼݼݺܸ۵ٳر֮լԩӨ{ѦxѤtϠqΞn͜j˙gɗcɔ`ǒ\ƐXŎUËRĉ6b3b:r9m*rK/}cC9222211Թ4sf& " tbtkmmllllkljjihihghgffedeef]g|b5/-  # KAPEQFSIYL_RfXpazjt~+Fmtxk$=TlfJvnnnoonnnoooooononoonmkhec`][YSQk'm jL1O5D-'oJ-U:qAxyJzܼ߾޾޿߿޽޽ݻ۸ڶٳر֮լԪ~ҧ{ѥwУuϡq͞m̜j˙gʗcȕ`ǒ\ŐXčUËSĉ6b3b:r9m*rK/}cC9©3©32222Ŭ2,94   inlmmmlmkljjiiiihhhggffeddfbgwTB82 :3SGOERGXL^QeVo_zis|+Fmtxk$=TleKypqqqqqqrqrrrrrqqqrqonjhec`]ZXSQk'm jL1O5D-'oJ-U:qAxxJ}ݿ߿ݽݻܸڵٳױ֮լԩҧ{ѤwѣtϡqΟn͜j˚gʗdȕ_ǒ\ƏXčUËRĊ6b3b:r9m*rK/}cD8ª3©233221պ4+ '#%xnmmmlmlllkjjiihhhhhggfedeecemgYR   @8SHSGRFWJ\PdWn^yhr{,Fmtxk$=TleL}suttutttttuuuuttttsqnkhec`^[XSQk'm jL1O5D-'oJ-U:qAxxI޿޽޻ܹڶٳױ֮լԩ~ҧ{Ѥwѣtϡp͟m̜j˙gʗcɔ`ƒ\ŏXčUËRÉ6b3b:r9m+qJ/}cC9333©223«206w)" #_UWponnmllmmklkkjjiihihggffeeeeYƥsf C:C:RGQFVK\OdUn^xfq},Fmtxk$=TleLuwwxwwwwwwwwxwwxxvsqnkhec`][YRQk'm jL19'1%iH,U:qAxxI޿޽ݻܸڶٴر׮լө~Ҧ{ѥxѤtϠq͞n͜j˙gɗdȔ`ƒ\ŏXčUċSĊ6b3b:r9m+qJ/|cC9ª3©433ª2©332Ŭ2,3. tcLrmonnmmmmmllkjijihighggfeede]iyZ)%' F= RFQFVJ\OdUl]whq|,Fmtxk$=TleMxyyyzyyzyyyzyyyyxvsqnkgdba^ZYSQk'm jL1* #dD,U:qAxxH޽ݻܹڶٴױ֮Ԭө~ҧ{ѥxѤtϡqΞl̛j˚gʗcɔ_ǒ\ƏXčVÌSĉ6b3b:r9m+rK/|cC:ª43ª3©43ª2¨3226+kXvloomnnmllmkkjijihhihhgfeededdiKCEG>RFQFVJ[ObVl\wfrz,Fmtxk$=TleMz{{{|{{}{{{|{|{zxvsqnkhec`]ZXSQk'm jL1  ![<",T:qAxxHã޿ݼݻܹڶٳױ֯լԪ~ҧ{ѥxУuϡqΞl͜j̙gɗcȕ`ǒ\ŐXĎUËRĊ6b3b:r9m+sK/|cC9ª543ª3©2232ª31ֺ3w*~mwooonmnlllmlkjijihhhhhgfefeddehdSB  I> RGQFUJ[ObUk\ufpz,Fmtxk$=TldM|~~~}{yvspnjhec`][YRQk'm jL1  H0),~T:rAxxHŦ߿߽ݺܸ۵ڳر׮֬ԩ|ӥzҤuУrΟmΝk̛h˘dɖ`ȓ]ǐZŎVČTŋ6b3b:r9m,tL0|cC95©54444ª2¨232ɯ2-<7 spqoonmmmlmlkkkjihiihhhfffedearxdT J? QGQFVI[NbTl]uep|!,Fmtxk$=TldM~{xurqnkgdc`]ZXSQk'm jL1  !!!!!!!!!!!!!!!!!!!!!!!!!!!!""7&6,}S:rAxxHܾ۽ۺڷٶشֲկӬҪҨ~Хzϣx͠u̞q˞nɛkəgǗdǔaŒ]ÏZÍVSQ5a3b:r9m,tM0|cC9ª544ª4ª4433ª2¨22ж4/94rrpqoponnmmlmmlkjjiiiiigggffde`om%"&LA QFRFUIYMbTk]wfq} -Fmtxk$=TldN|{xuspnjgfc`][YSQk'm jL1 $,1588:::::::::::::::::::::::::::9:9)I+{R;r>u(TPse]]\[Y~X}V}V{UzS{RxQxPxNvMuLuKtIsHrFqFpDoCoAn@m?l=k7ODRFUIZNaUl^yhs~ -Fmtxk$=TlcO|zwuspnkhec`]ZXSQk'm jL1 &8IYfnruuuuuuuuuuuuuuuuuuuuuuuuuuuuuur z*wOBI>QFQFWK]QgYrcny -Fmtxk$=TlcP~|xusqmjhdb`][YSQk'm jL1$<Xt1|cC;ê7ê7«6ª6ª6ª55«5©44ª4©44©422̲4-oussqrppqoponnmlmmllljiihhhhgfgeecfaX]G> QGSGXL_RhZtdp| !-Fmtxk$=TlbQ~{yvspnjhec`]ZXSQk'm jL1.-43321010101010000/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0//.65 " 8ﴡ@======================================?7zdC;«7ë6«66ª5ª5ê6ë644©54©3©33©32˲3-wusrrqqppqqnonmmmmkkkjjihihhgggfdcjvls  G=RGSHXL`Sl\wfs!-Entxk$=TlbQ~|xuspnkhec`]ZYSQk'm jK0,,'&gf{y|z|z|{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{{yA@:o}yzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzxۆ`D;ë6ê7«666ª555©5«4«4©33ª4©34©30̲:F KBCsusssqpqpppoonmmlmmkkkjhhiihhgffdfghK  G>QGPDUIZMcUn_{jw -Emtxk$=TlbQ~|xtrpnjhec`]ZYSQk'm iJ/,,#"vtmkRPZXYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWNLDC8ykϽ[^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ѿ_лVF:ª8«8«6ª7«7ê6ª66ª4ª4ª5©54ª4ª44ª330̳78! lXrtssrqqqqppooonmmlllkkjjhhihhfffeee~iO E<RGQEVJ\OfXsbny!-Emtxk$=TlbQ|zxvspmjhfc`][YSQk'n gJ/ ,,#"xvb_76;:;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9;9:8EC7ycFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGC;«7ë7ª7«6ª7ª7«6«55«6ª55ª45ª4©332213r,  ytttsrrqqpqqoonnmlmkkkjiihhihggeedgshm  @8RHRFWK_Rj\vfr~ -Dmtxk$=TlaR~|yvsqnkhec`]ZXSQj(o dG- ,,#"wvca1098@=>=?=?=><>=><>=>=>=?=>=>=>=>=>=>=>=>=>4397EC7ydA@BAAA@@@@AA@@@????????>>>>>>>>=====>>=<==:ë8«7«7ê7«7ê6ª67«75ª5«6ª4ª44432310/@;"[OLouutstsrqqqqponnnnmmlljjkjihhhggefdf^UY J@RGSGYNbUn^zjv,Dltyk%=TlaR~{wuspnkhec`]ZYSQk(q z_C+ ,,#"wvca0/B@NKLJLJLJLJLJLJLJLJLJLJLJLJLJLILJLJLJLJLJLJLJLILJLJLJLJLJLILJOL5496EC7ydA@ǰBŮBįAůAŮBĮAĮ@Į@í@í@ĭ?ĭ?ĭ>Į?í?Į?Ĭ?î=í>Ĭ>î=ĭ=ì<ì<ì<ë<ì;ì;ë;ì;¬;ì;«:¬:¬99¬9«:«9ì9ë9«8ë8ë8ë7ê7ê6ë6«6«6ª6ª6ª6ª5ª5433421..+|stuussrrqpqqqooommmmlkkjjiiihhgfeddMFI61MCRFVI[OeXrcnz,Cmsxj$Į>ŭ?Ů>Į=ĭ>ĭ>Ĭ=ĭ=ĭ<Į<í<Ĭ;í<ì;Ĭ;ì:í;Ĭ:ë:ì:Ĭ:Ĭ9ī8ë9¬8ë9¬8ë7ë8ë7«7ª7ª7ª7«6«6ª654©44410/-+'ND!gYOuwuttutsrrrpqqpppnnmlllllkjihihggfedc825 @8RGQEXL_Ri[vfr,Clrwj#( ,,#"wvca/.FDUSTRSQSQSQSQSRSRSQTQTQTQSQTRSRSQSRSQTQSQTQSQSQSQSQSRSQSQTRPNPM5496EC7ydAAȲCưBƯAƯBƯBưAưAƯAŮAŮ@Ư@Ů@ů@ů@Ů?Ů?Ů@ŭ>Ů?Ů=Ů=ĭ>ĭ=ŭ=Į=ĭ<ì=Ĭ=ĭ<Ĭ<ĭ<í;Ĭ;ĭ;ī:ì:ì9¬:¬9ì8Ĭ9ë9ì8«8«7ë7ë7ª7«7«7ª7«6«6ª4454320-*(}$JC@83pxwvututtsrrqpqqqponmmlllkkjjhhhhgfeeg F=VKRGZNcVn^|kx+Bksxj$;RliM\XXXXXXWWWWVVVUUUUUTTTSSSSSRRRQSm*u mW?* ,,#"wvca/.HFYWWTWUWUWTWUWUWTWUWUWUXUWUWUWVWUWVXTXUWUXUWUWTWUWUXTWUWUTQQOPN5496EC7ydAAɱDƯCưCůCůAƯBƯBůAįAƮAƯ@ů@Ʈ@ů?į@Į?Ů>ů?ĭ?Į?Ů?ĭ=ĭ>Į=ŭ<Ĭ=ŭ<Į<ì;ĭ<ĭ<ì;ĭ:ĭ:Ĭ;í:ì:Ĭ9ì:ì:ë9ī8ë9ì8ë8ì7«8ª7ê6ª7ë6ª65554310.+)%F?! 0,1rzwvuututtsrsrppqqponnmnmjihhffgfffgfi|k  %!H>RGVJ^QhYudp}*@jrxi$;Rlmtpppppppqqqqqqqqqqrrrrrrrrrrrssssv*u qZC,,,#"wvda.-JH]ZZY[XZX[X[XZXZX[X[X[X[Y[X[XZX[YZX[YZYZYZYZX[XZX[XZXZYWUTQQNPN5496EC7ydAAȲDƯCưBůBŰCůBƮAŮBůAƯBŮAů@ŮAŮ@Ư?Ʈ@ů?į>ů?ŭ?Ů>Ů>Ů=ĭ>Į>Į<Ů=Į=ĭ<ĭ=í<ĭ<ì:ì<ĭ;Ĭ;ī:Ĭ9ì:ī9ì:¬:«8ë8ë8ì8ì8ª8«7ë7ª76655310-*){$!! 93-r|xwvvuuttttrrqqppqpnkkhgqutssrrqojddcnaQ> A9VK QFYMaUm]ziw(>irwi$8Ni(o zbI2,,#"wvda.-LK`^]\^[^[]\]\^[^[]\][^\^\]]^\^[][^[]\^\]\^\^[][^[^\^\[XWTTQQNPN5496EC7yd@BȳDƯBưCƯCưBưBƯBƯAƯBůBůAůAůAŮ@Ư@Į@ů?Ů>ů?ŭ>ĭ>Ů>Į?Į=ŭ=Į>Į=í=ĭ=í<ĭ<ĭ<Ĭ;Ĭ<ĭ;Ĭ;ì;ë:ī:Ĭ9ì9Ĭ:ī9ë9¬8ë9«8¬7ì8«76ª655321.+({$&$j]Wyzyxxvvuuuttsstrqpnlpyâu£gYO;2*>6.=4,<5-;3,<4,<3*NC:qaVspnbaNGM$"LBTHUI\OfWscq~&=iqwi$&H[bmnnmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmme: jO5 ,,#"wvda.-NLcaa_a_a_a_b_b_a_a_a_b_a`a`b_a_a_a`a_a_a`a_a_a_b_a`_\[XXUTQPOPM5496EC7yd@BɳEưCưCưCǰBƯBůBŰBưBƮAŮAƯAŮAį@Ů@ů@Į@Ʈ?Ʈ?Į?ĭ?Ů>ŭ>Ů?Į>ŭ=ĭ<ĭ<ĭ=ĭ<Į=ŭ<Ĭ;ĭ;í;ĭ;ĭ:ĭ;ì;Ĭ:ë:ë9í9ì9«8¬9ī9ī8¬87764520.+(x$)&! (" t|yyxxwvvuuttutsrnrʨzåzib>4)E=3<5/2/3    !92+A8/E:-jgm%!G=TIWLaTm^zix%<˽gqwg# )K@"B"C"C"D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D"C'J-qT9" ,,#"wvdb-,POheecececececececdcdcececececdcececebebececdcecebb`^\ZYWUSQQNPN5496EC7ydAADzDůDưDưBưBƯCƯBƯBŰBŰBƮBƮAůAůAů@ů@ůAį?Ů?Ů?Ů?ĭ?Ů>ŭ>Ů>ĭ=Ů<Ů=Ů=Į=ĭ=ĭ<ĭ<Į<Ĭ<í;ĭ;Ĭ;ĭ;Ĭ;¬:ì:Ĭ:ì9ì:«9ë8«88876530.+(u%(&! "!"j~zyxxxxwwvvuuuuqqɪygF<0B;7##'    0*'z^bn[ ?8XLTG\OfXsdr{%:Ȼehx$bW"jZeO hShRiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSiSgQt]L>wX<% ,,#"wvdb-,QPjihgififhfhfigifhfhghghgighghghfifhfhfifighghfecb`^\[YWUSRPOPM5496EC7yd@BȲEưCưCưCůBƯBưCŰCƮBƯBŰBƯBƯ@ů@ƯAŮ@ů@Ů@į@Ů?Ů@Ů?Į?Į?ĭ>ŭ>Ů?Į=î>ĭ<ĭ=ĭ=ĭ<ĭ<ĭ<Ĭ;Ĭ;ĭ;Ĭ;í:ì:Ĭ:ì:ì:ì9ì9«9«7ª875531.+)|m$('"! JB;zi|{zyyyxxxwwvvtpyjLB<*''  )%"qsJDG)$K@SHWL`Um^}kv#8`uUƹ_Ǻ_ǽbɽbɽbɽbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȼbȽc̼Y}p,z[<% ,,#"wvdb-+TRnmkjljljlililjljljljlkljliljljljljljljljmikjigecb`^\[YWUSQQNPM5496EC7yd@CȱEƯDǰDưDƯCưBưCƯCưBƯBƯBƯAƯAů@ƯAŮAŮ@ů@Ʈ?Ů@Ů@Ů?Ů?Ů?Ů?Ů?ĭ>Ů=ĭ=Ů<ĭ=ĭ=ĭ=ĭ=ĭ<ĭ<í;í:ĭ<Ĭ;Ĭ;Ĭ:ì:ì:ì9«8«8«876641/+z'MD".+ "! " !%se\tƩ{{|{|{yyxyxxwrzuYOK(%' dWQbn >7WKTH\PgYweo 7SȾlimmnopppppppppppppppppppppppppppppppppql|mzj%{\>% ,,#"wvdb,+UUrpomomomomononomononomomolonononomononompmmkigecb`^][YWUTQPNQM5496EC7yd@BȲFƯDǰCƱCƱDưDưBưBƯBƯCưBůAůBƯBƯAůAŮ@ƯAƯ@Ư@Ů@Ů?Ů?Į?Į?Ů?Į?ŭ>ĭ>Į=ĭ=ĭ=ĭ<ĭ=ŭ<ì;Ĭ<ĭ;í;í;Ĭ;ĭ:Ĭ;ì;ë9«8997752/,}'HA# #"   "!! >82~j§|}|}{{zzzyyyztʪoA;<  #!$bjcSG/+OESHYMbUp`yj~8DKO°QŲRƳSǴSȵTȵTȵTȵTȵTȵTȵTȵUȵUȵUȵUȵUȵUȵUȵUȵTȵTȵTȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUȵUDzOrsxh"|]?% ,,#"wvdb,+WVutrqrprprqrqrqrqrqrqrqrprqrqrqrqrprqrqrqpmljigecb`^\[YWUTQQNPM5496EC7yd@CɳEǰDǰCǰDǰEŰCŰCǰCǯCƯCưCưCƯBŰBƮBůAưAƮ@ŮAƮAů@ů@Ů@Ů?Ů@Ů?ĭ>Į>Į>ŭ>Į=ĭ=Į<ĭ=Į=í<Ĭ;Ĭ;Ĭ;í;ĭ;ì;Ĭ;ë:ë9«998653/,)G@" ! "!     !  g[Vnɭ}~~~}|}|||{zyyvȩqZ)%'   //0./0)())()++,-,,efr =5VJUJ]Qj\ugt036:<===>>>>>>>>=>>>>>>>>>===============?Bnsxh"{]?% ,,#"wvdb,*ZXyxvtvtvtvtvtvuvuvsvtvuutvtvtvtvtvtvtvusqpnmkhgecb`^\[XXUTQQNPN5496EC7yd@CȲEưDƱEǰDǰDưCưCƯDưCưCƯBƯCưCŰBůBƮBƯAŮ@ůAŮAƯAů?ƯAŮ?Ů?į?Ʈ?Ů?ŭ>ŭ>ĭ>Ů=Ů>ĭ=ĭ=ŭ<Į<¬<í=Ĭ<í;í;Ĭ;ë:«::8852/,|n'1."" !!!! !  !    #!!#yc¨~|}}|||{zx£}xb !   &&&abbfkesl#"# 4.UHRH[OeXqcp~ $''()()))))))'((''(''&&&&&&%%%%%%$%$#%0Gorxh"{]?% ,,#"wvdb+*\[}{yxyxyxyxzxzxyxyxyxzxywywzxzxzxyxzwvurqpnmkhgecb`^\ZXXUTRQNPN5496EC7yd@CɳGưEƱEǰEưDƱDƱEŰEŰDưCƯBǰCưBƯBůAƯBůAƯBƮBƯ@Ư@Ů?ƯAƯ?Ů@Į@ů@į?Į?Ů?ĭ?Ů?Ů=ĭ>ĭ=ĭ<ĭ=ĭ=ĭ=í;ì<ĭ;ì;«:::8530-q)%$! $"! !   ! !   !835}gֹ~~}|}}|zvC7VKWK`Sm^}kz ! *Hnsxh"{]?% ,,#"wveb+*^]}{}{}{}|~|~|}|}|}|}|}{}||||{}{}|zxussrpnliifedb`_\ZYWTTRQNPM5496EC7yd@DʳFưEDZFƱEDZDDZEƱDDZDƯCůCưDƯBůBǰBƯAƯCŰAƯBƯBƮ@Ʈ@ůAŮ@ƯAŮ?Į@Ů@Į>į?Ů?Į?ŭ>Ů=Ů=î>ŭ>ĭ<ĭ<ī<ì=ŭ<Ĭ;«:«:97740/v*+)"!('"!!!!!! !  !#!" !cYRqͰ~}}}||{Ǧ|h[T%"#" jjj%$% fXUhihbsU$" 5/YMTH]PhZwft !"""#"#""""!!!! ! ,Hnsxh"{]?% ,,#"wveb+)`^~~~~~~~~~~}|yxvttrooljhfedb`_][YWTTQQNPN5496EC7yd@CɳFưEǰFưFDZDǰEƱDǰCưDŰDƯCůDǯCǰBƯBưCưCůAŰAƯAŮAůBƮ@į@ů?ůAƮ@Ů?Į@Ů>Ů?Ů>ŭ>Į=Į>ŭ>Į<î=í<ĭ=ì<«;«::97610y,/-#!'%" !!!!!"!" !! ! !$##{j[ĩ~~||n5/& !!"(&(JIJ!mlihg̦x6.# C:VJYMdWqbp !""""""#!!!!!!  ,Hnsxh"{]?% ,,#"wvec*)ba|{zxuttqonlkhgecb`^][YWUSRQNPN5496EC7yd@CȳGưFƱEǰFǰEƱDưEưDƱEǰDƯCưDǯCŰBŰBưBƯCůAůAŮAůAưAƯAį@ů@ůAŮ?Ů@Į@Ů?ů>į?ĭ>ĭ>Ů>ĭ>ĭ=Ů<Į<ĭ<í;¬;ª;:8620z-1-#"'&"!!"!" !! "!!! !"!"#"!!ylZҴ~~~{sc/+,-,.[[\ {mliiihhcuk! " 1,ZNUI`Sn^~l{!!"#""""##!!!!! !  ,Hnsxh"{]?% ,,#"wvec*)dc}{yxwtsqomljigecb`^\[XWTSRQOQM5496EC7yd@DȳGưFDZEDzEƱEǰEDZDưDDZEǰEưDưCƯCưDƯCưBƯBƯCƯCůBưBưAůAƮBů@Ʈ@ů?ŭ?Ů?Ů@ů@Į?ĭ>ŭ>ŭ>Į=Ů>ŭ=ĭ=í<ì<«;;9622z//-$"'&$ """"#"!#!!"! !!!!"!# 405veֻ~~|̭fZR ! "[[[  -)&oiiiib˪@:8 4.WKTI]Qi[yhv!##""##"#""!! ! ! ,Hnsxh"{]?% ,,#"wvec*(ee||zxvtsqpnlkigecb`_]ZXWTTQPNQN5496EC7yd@DʳGDZFưGƱFDZEǰEDZFǰEưDưDǰEƱDưCŰDǯCǰCưBůCŰCưBưBůBƯBƮBƮAƮ@Ư@Ʈ@Ů?Ů?Ů@Ů?ŭ>Į>ŭ>Ů>Ů>Ů>í<í<¬<;:843v0.,%"('#! """#!""!!""!"! "#"# !!"GAExеzշJA7  324^^^!!"!ghlljiii`n^U!$ F=VJZNeYsdr "##"##$""""!"! ! ,Gosxh"{]?% ,,#"wvec)(hg}|yxvttqomljhgecb`_\ZYWUSRPMPM5496EC7yd@DʳHDZFƱGDZGƱEƱEǰFưFDZDDZDưDưEưDŰDưDǰCƯDưBưBŰCƯBưAƯBƯAŮBů@Ʈ@Ư@ůAŮ@Ů?Į?Į@Ů?Ů>Ů?Į=Į=ì<¬<;:96412.&!*($"!##"#""""!"!!#!!"###!K@<˱{ָG@8 !  ``afff""$#gSpnllkkjihr0+' 71[NUKbUo`~n|"""########"""!!! ! ,Gosxh"{]?% ,,#"wvec)(ji}{yxvttqomljigecb`^\[XWUSRPNPM5496EC7yd@DɴHDZGDZFDZFDZGDZGưFưFDZFưEǰEƱDǰDưCưDƯCưDǰDƯDŰBŰBƯBŮAƯAůAƯAůAůAŮAį@Ů@ů?Ů@Ů?Į?Ů?ŭ>ì=ì==<9742KE'""#&%$#"###$""$""##"#!""$$$ RH@qɱ|ԷKC;    FFFooo#"#m_U|nmllmlkjgƢqOD:-)UIUJ^Rl]{jx !"###$"#"#""""!!! !  -Hnsxh"{]?% ,,#"wvec)'lk}|ywvusqpmljhgecb`_\ZXWUTQQNPN5496EC7yd@EʴJȲGDZGDZGDzGƲGDZEDzEƱFǰEƱEưEǰEưDưDưDǰCưDƯCưBƯCůBůBƯBƯAůAŰBŮ@Ʈ@ƯAů@ƯAį?Ů@Ů?Ů@ĭ>Ĭ=«<=;862PG) %$"%$#$##$#"##"##"$""#%$$   \QIɱ~ϲ_SKxxx$#$dVLwmnnmmmlkkjgwc'$$*%LAUJ\PhZwgu!"###$$#"##""""!!! ! ,Gosxh"{]?% ,,#"wvec('nm}{yxwtsqpmmjigecb`^][XWUTQPNPM5496EC7yd@E˳IDZGȱFȱGǰGDZFDzFDzEDzEDZFDZEDZEDZEưEƱDǰDƯDưCưBưCưCƯCƯBưBƯBƯBƮAƯAů@Ư@Ů@ů@Ů?Ů?į?Į>Ĭ>ì>=<972SK)"!%%$$%#$%"$$#%##%##$""$%$%! !ZPIìƪ~pg(&,$%$$$%]QDxoppnnmlllkjg¡{;50  D;VJYMeVrcq"####$$$##"##"""!!!  -Gosxh"{]?% ,,#"wvec(&oo}{ywwusqomljigecb`^\[YWTTRQNPM5496EC7yd@EʳIƱHȱHDZGȰGȰGDZFǰFǰGDZEưEƱEDZEǰEǰDDZEǰCǰDƱDƯCƯCưCŰCůBůAůBŮAŮAĮAĮ?ĭ?ĭ?ĭ>ĭ>í>ĭ>«?>;:75[S+%%$%%$%$$$$#$$#%$"%#"$%$% "WNGŮép402!!# hii''(ZNAǨ}nqpqopnmmllkimdVG -(]PUJbTn`~m| "##$#$$#$##"""#"!"!!! ! -Gosxh"{]?% ,,#"wvfc'&rq||yxutsrpnlkhgecb`^\[YWUSQPNPN5496EC7yd@EʴJDzHDZHDZGȲGDZGDZFDZGDZFDZEDzFDZFưEDZEDZFǰEưDƱDǰDưCưBƯBŮBĮAĮAĭBĮ@îAí@ìAì@ì?ì?ì?ë>«>=<;86084'%(&&$$%$$$##%##%##$%$&!!$ XOGư«ª©y:4.! "!"(&(XK@̫prrqpppnmllllki~b2-'-(RHUJ^Qk]zkx!"#$$$$$$$#"##"#"""!!!! -Gosxh"{]?% ,,#"wvfc'&ts|{yxwtsroolkigecb`^\[YWUTQQOPN5496EC7yd@EʳJDZIȲHDzHȲGȲGDZHDzFDZFưGƱFDZEǰEDZDDZFƱDưEůCůCůCƯBĮCíBíBíB¬A@@@?>>>?==<;:7341($*)&&#%%#%$$%%$$$$$%%%###YOHƯ쬫ªغ_UL!#"# LLL>>?TH>Ϯotsrrpqpomnmmmmgz3-( #!F=WK\Ph[xhu ##%$%%%$$$#$$""""!"!!   -Gosxh"{]?% ,,#"wvfc'%vu||yxvttqomljigecb`_][YWUTRPNPN5496EC8yd@EʵIȱHȲHDZHDZGȲHȱGȱFDZFDZGDzFDZEǰFƱEůDưEưDůCůDĭC¬BB¬B@A@@?>>>==<<;;964F@*%$%('&%$&%$%$$&$$&%#%%$&##" !$VLJʳíëë쬪©~=9<  '%'```vvv#!"G@<аouusrrpqqoonmmmliǢuKC;  C:WKZNeWtdr!#$$$$$$%%$##$#"#""!!" !!   -Gosxh"{]?% ,,#"wvfd'%ww|{yxwtsroolkigecb`^\[XWUSQPNPN5496DC8yd@FʵJȱGdzIȲHȱIDzHDzGDzHȱHȱGƲGưFǰEƯDŮEůDíC­D¬CCAA?@?==<;;::9998863GB*""&&%&&&&%%&%$&%%%%$&%$%'&& VMQ˵ììíìë«ì«©ūTLE" ""#mnm{{{&&&;65èovttussqpqpooommmmgs2/2 0*_RVKcVpbo} #$%$$%%%$$$$###"#!""" "!   -Gosxh"{]?% ,,#"wvfd&%yy|{yxwtsqpnmkhfecb`^\[XXUSRPNPM5496DC8yd@FʵKȲIȲIDZHDzHȱGȱGȲHDZGűGűFŰFįEîEíDDCBB@?>=;;9987666555332MH+##''&''&&%$&&%&&%&%$&%$%)()@;?ͶŮĮîĭíí¬ìì««è726! ""!! LKLtst %%%/*)oxvuuttsrrpqqonnmllme81) 0*YLVKaUm_}l| "#$%%%%$%%$$###""#"!"!! !  .Gosxh"{]?% ,,#"wvfd%$~|~|zxvutrqonkjhfdca`]\ZWVSQPOPN5496DC8xd@FʵJȱJDzIDzHȳIDzHưFǰFDZEưEįFíEEDCBA?>=<:976533210000~/}.|-x-96(!!'('(%&&%%'&$&%%&%%&'&'!!#"zj׿ůĮůįîĭìĬí¬ë쫪ϴfYK#"##!"'&%vaxxwvvututsrrpppponmmg?81 ?8YN^Rk]{jz "#$%%%%%%%%$$#$##"#"""" !!  .Gosxh"{]?% ,,#"wvfd&$|{|zyxvsrronkkhgeca`^][ZWVTRPOMOM5496DB!9xd@F˴KDzIȲIDZIDZGƱHƱHŰFĮFĮF¬EDCBA>=<877431~0{/y.v-u+s+r*p*p*~p)}o){l)s(*('()'('&('%'&%'&%'&%''&''''zkȨƱŰůůĮŮįîíííìì쬫ª©ͲdYS   fZVȫvyxwwwuuutsrqpqoonnmkĢtQF=A9XK\Ph[xhw"#%&%%%&%&%%$####"##""""!!!!! .Gosxh"{]?% ,,#"wvdb,+WWtsonmmkkkiihgfeddcbaa__^]\[ZZXYWWWUSSRSQPOOMNLLJIHHFFEECCAB@A@4397CB"9xd@FʴKȲJDzIDzHǰGưGįGîGECCB@><98642}0x/t,r,}n*yl)vi'tg're&pc%ob&ob$na$ma#l_#re#MG&.+''%(('''&'&&('&'&&'&&')(){mgйŰŰƯƯŰůĮŮůŮíĭì­ììì««©vIA<B:5Ħvzyxxwvvutttsrrpqpoommk{o1.35.\OYMfYuet"#%&&%&&%%%$%#$$$####""!!!! ! !.Gosxh"{]?% 21#"xvb_76988686868697979797979797979797979797:8:8:8:8:8:8:8:8:8:8:8:8;9;9;9:8DB"9xd@G˴LDzIDzHưHİGîGFDDBA?;:742{0v/p+yn+wi)sf(pc'nb&l_$i^#g\"fZ!dY cX!cX bW bW aV `U .,($$*''(('('&('&('&''&'*()VMIʵưƲƲƱůƯưưůĮĮįĭíĬí¬ëì««XNKA;6Ũw{zyyxywwvuttsrrrqpponmmfA8-1,]PWLeWscr!"$%%&&&%&%%$$$$$##"""""""!! !! !.Fosxh"{]?% 21#"vtmjRP[YZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWYWZXOMCB!8xd@FɳJDZIƱJįH­FECB@><964{1w0~q.yl+uh(pc&m`$j\$f[#dY#^S ]S!\Q![P YN XOXNXMWMTL_T'')$$**()'&)'&('&(('('&()(*!!";7:ҽıDzDZƲƲƱűŰưƯŰįĮŮĮíĬìíìëë«©ǭtgd  ICCw}|{zyyyxxwvuttssqqpqoooktC;3 /*[NWKcVpap~!$%&&&'&'%%%&%$$$#$#####!"!!!!! !.Fosxh"{]?% 21'&gezy|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z|z{y@>!8yd>FɳLįH®HHFD@><:63y1s.zn,uh)pc(k_&dZ#`V"ZP#VL"WM!SI ''+%%+%%+%%*$%+$%+$%*'&+$?;!0.('')(')'())(()'(''()()'&&*(,}ĤįȲȲdzƲDZƱDZưƯưưƯůĮůĭĮĭì­ìë묪ȭQHJ&$#'$$"!!'$%)&'fXKαy}|}|{zxxxxwvvutttrqrpqqoj}G=5 ;4\P`Sn_~m|"#%&&&'&&%&&%$$%$$$#####"#""!!!!".Fosxh"{]?% 434321100/0/0/0/0////./....-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.---54 #8xc?FDZK¬IGEB?=:75x1q.xj+qe(i^&eZ%bX#QI%%%-**,))-)(+*)+)),,+,)*+**+))******+**))(+*(+*))))*()*((*(')('((()'()''(/-- z˰®ɵɳȳdzȳDzƲƲƲƱưưƯƯưĮŮĮĮîĬ­­ì«¬«~~|}}{{zyxxxwwututssrqqoplƥyJ@4 <5[O_Rl^{kz!$%''%'''&'&%&%%%%$$##$"#""!"!! "/Fosxh"{]?%  -HeÛ5xc>EîJFDA>;75x1~p.vj+nc)pc&UM'$%.0.,++-,+,-*-++,+*,+*++),++,+*++)++),*)**)+)***)*)(+))**()))*((*('))())(((()(&)+)* "UNIкDzȳɴɴdzdzȳDzDZƱƲDZűůưŰƯįįůîĭìí­ëë«©~~|}|{zzyyywwvvttttrrqqpnsqaU $<5YM]Qk]ziy!#%''&&('''&%&$%$$%#$#$#""#"!""!"/Fosxh"{]?% B?@>⭚=骘<;;;;::::::::::::::::::::::::::::::1,^QZOj[xgw!#%''''(&&'&&&&%%%$%$$#$###""!!""/Fosxh"{]?% ($76ʼ_yrsssssssssssssssssssssssssssssssssrrpͼ^;AD@<7}4r1s+aW+1/./,/.-.----,.-,-,,.-,.,+.,,-,,-,+-,+--,--,-++-*)+))+""$ $ )%'#! !%%')(*+)+*(*))*))))'*((),*+!yneɴʷɵʶɵɴȳȳɴȲȲDzDzƲDZDzƲƱŰƯưůĮůĮîĭì­ì¬ìª©~}|}{{zzyyxwvuuutssrpqpmtJ@7 0,_QZNgZvfv $%&'''''(&''&%%%&%%%#$#$$""#""!"/Fosxh"{]?% &#61muп^dccccccccccccccccccccccccccccccbbbaν`˼`ųS<=@:6y4}p+]U+740,+0.-/-,.-,/.-.-,.-,-,,--,.,,.-+..,..-/,,,&') 502{plzͻͺͺ̹İVLO##&''(+)+*(+()))(*((),,-skκǴʵʶʶʴʴɴɴȳȲDzȲDzDZDZƲƱŰưưůŮůĮĮíĭ쬬¬ªª~}}}{|zyyyxwvutttsrrqporKA6 0,^PYNfYueu $%'(''''''&&'&&%%%$$%$#$##"##""#/Fosxh"{]?% &#60plFIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHHGGFCC8:;}51nb/65/+,//..--..-/.-/.-.--.--/--/.,.--./-./-0%&)!MFIvñλλͺѽҽѾѿҾҾн̸λA<=$$&*++)(*))*)()))*+**!ϰðʶɶʶʵʵȳȳɴȳȳȳdzƱDzƲƱŰưưŰĮŮůĮíĭíìì¬ê©~}|}|{{yxyxxvvuuttsqqouMC8 1+^PYMfYtes $%''(()(('''&'&'&&%%$$$$$#$##"#$/Fosxh"{]?% &#61on?DJIIIIIIHHHHHHGHGGGGGGGFGGFFFEEEDCB@?<785xl/=:/++00./--/-.0/.0/-0/-//./.-/.-././1/1,-."#&/*,shϿ˺λѿоμμνμλλͻμѽʸҾmba(','')**+)(*)()+)+&'(-*-zŨdzʶɶɵʵɵɴȳɴȴdzȲȳDzƲƲƲűƯůưįŮůĮíĬí¬ì쬪~~}|||{zyxxwwvuttssrqnzPE: (%OF[OdWsdt $%'((((((('('&'%&%%%%$$$$#$####$/Fosxh"{]?% &#61oo=LϺYʶT˷TʶTʶU˷TʶSʶT˶TʶSʵSʵSʵRɶR˵RʵRɵRʵRɴQɵQɵQɵPɴPɴPȴPȵPɳNɳNdzMDzNűLïKJHFA=9w3UO0640-,1,,0/.0//0//0../..0/.0..//.0203+*,#"%GAB{ʷĮ«ϾноϽнмϼϼνμμͻͺλмѾ|pe.*-'&(+*+)(*)(*-,-f\\íɶʷʶɶʶɵɵɴȴɳɴɴdzȳDzƲƱDzưŰůƯƯůůĮííí¬ìëëª}~}|{{zyyywvuutttsrnäPF; :4]QcVscq $&(()'(((('''&&'''&%%%%$%%#$$###0Fosxh"{]?% &#61oo;1//4003213213212202102103103988"WRNð˶ððïï®®î­í®­ҿпѾоϿϾонϼϼϽʸĪ646"-+-.,.d[Z̷˸˸̹˷˶˷ʷ˷ʶʵʶɵʴȳɳȳDzȳdzDzDZƲưưưƯůůĮĮĭ¬ì«ì¬ª~}|}{{yyxyxwvutrxyh[&$(:3\P_Sm_}m}!$&(**)**)))((()'''''''&&%%%%$%%% 0Fosxh"{]?% &#61oo85/''2313424222213202213213213868!!%d^Z˻ͷDz¯ııűİİïïïî®­î®­¬­ѿѿоппомнϼϽ̺Ưs644+),+*++++%$)yo˰ȴ͸̸̹̹˷ʶ˷˶ʵʶɵɴɴȳȴȲDzȲDzƱDZŰƯưůŮįŮîĬí­«¬¬ª~~}||{{yyxxwvvutvtg/,02._R_Rn_~m|!%&(**)++**))))(()(((''&&&&&%%%%& 0Fosxh"{]?% &#61oo%%(.-.#$%LEHʸ͸˸˹̸̹˷˷ʶ˶ʶʵɵʵɳɳɳdzDzȳƲDZƲűưŰůůůŮíĭĬ«¬¬©~~|}z{{yyxxwvswre-+/2,aT`Toao~!$(**))+******)())(((''&&&'&&%&&% 1Fosxh"{]?% &#61ooмкıȵƳƳƴƳƳƳųƲƱűűűŰıűİðïî®®­­­­пѿϿоϿоɸ϶qf_112-,."ticδǵ̹ͺ͸̸̹˹˷˶˷˶ʶɶʶɶɴȳȳdzDzȳDzƱŲưŰƯůįįĮíĭí쬬~|}|{zzxyyxvuyna*(-1-bUaTqbq"&)*++*+,,*+**)()(()((''''&&&%&&&!1Fosxh"{]?% &#61oo:=+*+'')E@@ê˸ιͺͺ̹͹̸̸˷ʸ˶˷˶ʶʶʵɴɴȳDzDzȳDzDzƱűŰůŰůįïìí­ëë««©©}|}|{zyxxxu|weY$"'3.cVcVsds#&)+*+++,+++**)**)*)()(('((&&&&&'!1Fosxh"{]?% &#61oo7~Į̹ͻλͺ͹ͺ̺͸̸̹˷̷˷ʷʵʵʵʵɳȳɴȳDzƲƱDZƱŰƯưůůůíĭǥf\QsfYpeXj_Spǡŭ~~}}||{zyxvǨ]QD!<5_TfYwfu!%'**,+,,-,,,,+*+**)*)*()()(((&'&(#1Fosxh"{]?% &#61oo:986575476475465565466467792-2õɷ̺̺˹˹˸˸ʸʸ˸ʹʸ˸˹ʷʷɸɷȶȶɶȵȵȴǵȴǴǴƴŲųƳŲűİűŰİð®îî­¬­ѿʹ׾v!&h`^ӻȸϽϻμλͺκͺ̹͹̹̹˷˶˶ʶɶʵʶʴɴȳȳdzȲȲDzDzűƯƯƮŮį­odW,*+(&')&')'( =95xŬ~~|}|zyyuɪVLA""" <6cVi[xiy!%(),--,,,,-,++,**++****((()(('(((#2Fosxh"{]?% &#61oo;9;98668758757657657657979++.ldbѿ˺ͼͼ̻̼̼̻̼̻̺̺̺̺˹˹˹˹˸˸ʹ˸ʸʸɸɷɶȵɶɴǴȵȴǴdzƲŲųűŰűűŰİï®ïî­­ֿ̺JFD¬κϽνμϻͻͻ̺̹͹̸͹˹˸˷˷ʶɶɶʴɴɴɳȳdzDzƱDZƱưůĮɲMHA)()#$&%$&%#%$#%$$$$#%%%& !.,+ygƭ~~||{zyvŧSJ@#""     =7dXj^}l|#'*+-.-....,--,++,*++*))**)()())()$2Fosxh"{]?% &#61oo:=ͼ˻νμνͼͼͼμμͼ̼̻˻˻˺̺̻̺˹˹˹ʸ˹ʸ˹ɷɷɶɶɵȵǴȵȵǴȴƳdzƲƱűŰİıİİïî®í­¬ѿĭUMM))+}Ȱ̺нϽϽϽϻͻͺ͹͹ͺ̸̹˸˹˷ʶʷʵʶʶɴɴɴȳDzdzDzƱưưä]UN .,,%$%%%%%$&%$&%$%$#%$#$%#% "2/-wfǰ~~|||{wTI?"#"    >7fZm`n}#')+--..----,-,,++,,**+*)))**()(')$3Fosxh"{]?% &#61oo#"" !   !>8hYoaq#(+,-.-...--.-,,,+,,+*+*****)()))($3Fosxh"|]?% &#61oo̼ͼξξϾϿοϽννννͽͽννͼͼμͼ̻̻˺̺̺̺˸ʹʸ˹ʹ˷ɷɷȶɷȵȵȴǴǴdzųŲƲƱıİııį¯îíпưB=?QMGʹоонмϼμϻͼͻ͹̹̹͹̹̹˷˷ʷ˶ʵʵɵʴɴȳdzȲDzDzDzrg[)()&%'%%&%%&%%%%$&'%'!-*+lԺ«~}||{z~QI=#"#  !  !*'QFfXrcs %)*-...//..-.--,,,,,++++**)*))))()%3Eorxh"{\>% &#61oo9=ʵноϾннμϼλͻμͺ͹ͺ̹̹˸̸ʶ˷ʶʵʶʴɴȴȳȲdzƲDZ®¤i_V,++%&'&%'&$&%%&&&'!***|kֻª~~|}|yKD?#"#  !!" "83gYcWugu!%(,-...//-/.---,,,,+,++,+***)**()*$3Foryh"z[>$ &#61oo$#$ "!!"!"! !"!!#;5i[j^}n |$'+-.00//////...-.,,-,,,,,++*++*))+&3Eoq}l#iM3&#61oo?@@AAAAAAAAAAAAAAAAABABBBCCCCCCD@=nqr%t r[E0&#61oo9<ͿϿϿϾϾνͽνͼͼͼ˺˺̺˹ʸ˹˸ʸȷȶȵȵǵǵǴǴƴƲƲıİŰݯ®î­ѿѾпϾнϽϽϼλͻκ͹ͺ͹̸̸̹ʷʷʶʶʵʴɴȴdzDzȳDZƱDzƱưƮŮįïíìí묩~ʮm`W""'""!$"##!##!"""#$$#B@0|FzIWblu{؁ڂۃ܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄܄ۄވgw*t kP8$ &#61oo;Rӿc̺]ͺ_λ^ͻ]ͻ]λ^λ]κ]ͺ]κ]ͺ\κ\̸[ʶZϻZR..:>==;:<;9<;:;;8<99;98:668ϿϾξνμͼͼͽͼ̻˺̺˺ʸ˸ʸʸɷȶɶɵǴȴǴƴƴŲűııűİïïî­­ѿпѾпонϼνϼμͻͺ̹ͺ͹̹˸˸˷˷ʶʶʵɴɴɳȳdzdzDzDzƱƯƯįĮŮĭíĬì««ª}ѳIC;'%%#""""##!##!#$##$40\P^Rn`"}n'{+.2223333333333333333333333333333333332;9<::;;9<9:<:9<<:;669̿ϿοϾ;νμμͼͻ˺˺˹ʹʸ˹ʸɷɷȶɵȴǵǴdzdzƳƱŰİűİï¯î­ѿѿѿопоϾмμϼλͻͺͺ͹̸̸̸̷ʶ˷ʶɶʵɴɴȴȲȲDZDZDzŰůưŮŮůĮĭíìë«}çJC=&%&"#$""$"##"""$#$ nR8" &#61oo;Rdͺ_ͺ_ͺ^κ^λ]λ]κ^ͻ]ι^κ]λ\͹[˷ZмZT/0:>>=<;=;;<;9<::<;9<;:;;;<968̿пξϾϽξμν̼̻̻̻̺˹ʹ˹ʸʷɷȵɶȵǴǴǴƴƲƲűİ۰¯®­­ҿпѿпϾϾмϼνλλλ̹͹͹̸̸̹˷ʷʶɵʶʵȳɴɴȲdzƲDZƱŰƯŰįůĮìĬ¬ììªxA<7&$%####"##"$###$#$                                          sU8" &#61oo;Rdͻ_λ_ͻ^ͻ_λ_κ]κ]λ^ͺ]κ]ͺ\ͺ\˷[ϼZT55<>=<<;<;;=<9<<:<;9;::=:9;NEDϿϿξϾξͼͽͻ̻̺˻̺˺ʸ˹˸ʸȷɵɵȴȴȵǵųŲűŰıİï®îí­ҿпѿϿоннϽϼϻͻͻ͹̹͹̸̸˷ʶ˷ʶʵʵʴȳɳɳdzDzDZƲƯƯŰİůįíĬíëì©|f920"%#%$"$#"#""$##$#"# %$:+O4!6#ڟ{]w[befgghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhf”px[EuV9" &#61oo;Rӿeλ_ϼ_λ^Ϻ_Ϻ_λ^λ^λ^κ^κ^κ^̹\ʷ[ͺ[S11;?==;:<<;=<:<::=;:<;:<88:ϿпοϾξͼνͼͼ̺˺̺̹ʹ˹˸ɷɷɶȵǴȴȵǴƳŲűűıŰðî®­¬ҿпѾϾоннνμμλ̺ͺͺ͸̸̷̹˷ʶɵɶʵʴȳȳȲȳDzDZƲƯůƯůįĮĭ쬬ëͰeYQ %##$$$$$$##"$$"##%$# !<.fA V: 2 ڭf̜xբ}ܨૂᬃ⬄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄⭄ᬄ氇פ~jQ>vW:#&#61oo;Reλ_ϻ`ϻ`λ^ϻ^Ϻ_κ_λ]λ]κ^λ]͹\ʷ\ͺ[S12;>>><;=<;<;;=<;<<:<;:;759ϿϿϾξμμͽ̼ͼ˺̺̹ʸ˹˹ɷȶȵɵȴǴǵǴƳŲŲűıŰðïíí¬ѿѾϿнмνϼλμκ̹͹͹̸˸˸˶ʷʷʵʴʳȳɴɳȲȲDZƲűưưůĮŮĮìíëë«}ѵHB>('($#$##%#$%$#%#$%$ 7,d@"[=!3!ڲiəupȘuʚv˛v̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w̜w͝xƗs٥ۨjQ=wX;#&#61oo;Reκ_λ_λ_ϼ`μ`ϻ^ϻ^κ_κ^ϻ^ͺ^̸\м[VVQC;:==<=<;><;=<;=<;<;:=;:=A>@пϿϾξνͼνͻ̼̻̺˺ʹ˸˸ɷɷɷȵȵȵȵǴƳŲűİűıïï­­­поϿϾнϽϼμͻλͺͺ̸̹̹˷˶˶ʵɶʵɴȳɴdzDzDzƲƱŰƯůįŮĮíìì뫪z>95'&'#$%$$$%#%$$%%!$!,&K3 aA$_@"5"ضkΝxndcbddddddddddddddddddeeeeeeeeeefckީڧiQ=wX;#&#61oo:Rfλ_ϼ`ϻ_λ_ϻ`ϼ_μ_λ^ͻ_λ^ͺ^ʸ]Ҿ]U..<@>@=<>=;==;=<;><:=<;=<;=EA@пϿοξννͽͼͼ̻˺˺˸˹˹ɷȷȷȶǴǴǴƴƳŲŲűŰŰïîî­ҿопϾнϼϽϼμͻͺ͹͹̸˸̸˷˷˷ʵʶʵɴȴɴdzdzDzƲưƯŰưįįĭĭ¬ë묩§~o624!&%&$$%%#%%#$$$%%#%"+'K4"fC%dC#6#غmџznhϛtՠxՠw՟wԞvӝuҜtќsЛsКrΙq͘p̗p̗oʕnɕoȔmǒmƒkƑkŐjÏiÏiŽhgfeeddcblީڧiQ=wX;#&#61oo:®Rfλ_μaμaϺ_κ`κ_κ^λ_λ_λ_ͺ]̸\м]T0/?=<>=<=<;>=;>=;=<;=;:<>=<>=<>=<=<<><:=99;ϿϿννͼͼͻ̻̺̹ʸ˸˹ɸɷɷɶǵǴȴdzƲƲƲŰŰİïîí¬ҿѿоϿнмϽϻϻͼͻ̺ͺ͸̹̹˷˶˶ɵʵʶɴɳɳȳȳƲƱDZŰƯưůůĭì­ì¬ëԷHB=(''%$%%%&%$%$$%$&'& 2(]<'mI(mI(:%q֣}oiНv٤z֡y֠y՟xԞwԟuӝuѝuЛtЛsΚs͙r͘q̗pʗo˕nɕoɔmǓlǓlŒkĐjÐiÏhŽggfffebkީڧiQ=wX;#&#61oo:Rfκ`ϼaμaϻ`ϻ`λ`λ`ϼ`μ_λ_ͺ^̹]̹[S34=@??><>==>=<>=<><;=<;=88:Ͼοξνͼμμ̻˺˺ʸʸʸʸɸɶȵǵȴǴƴƳŲűİűﯮ¬¬ҿпоϿϽмϼϻμλͺ̹͹͸˹̹˷˷˷ɵʵʵɴɴdzDzDzƱDzưůƯůįĮĭì¬ë쫪q832!(&'%$'%%&%%&$%&&#% +%B-\='rM)qK);&ėrפ~piѝvڣ{סzסy֡xՠw՟wӞwҞvѝuМtЛtΚrΙr̘q˗p˖o˖nɕnȔnǓmƓlőkőjĐiiihgffckީڧiQ=wX;#&#61oo:Rgϼaϻbмaϼ`λ`ϼaϼ`ϼ`ϻ`ϼ^͹]̹^˸\Q45=A??>=?><>>=?=<==;?<:<768пϿονμͽ̻̽˺̸̺˸ʹɸɷȶȶǵǵǴƳƲƲİŰİï®®­­­ҿпоϾнϼνλλͻͺͺ͹̸̸˸ʶ˷ʶʵʶʴɳɳȳȲDZDzƱűưŰĮįĭĭíí쫪Ǭvib,).##$%&(&%&%%&%%&%&%&#& .(E/!_A)wP+uN+<'řtإpiҟwۥ{آzآzסy֡y֟xԟwԞvӞvҝuќtϛtΚrΙr͘q̘p˖pʖoɕnȔmǓlƒlőjőkĐjÏhŽhgggckީڧiQ=wX;#&#61oo:¯Sgλ`ϼbμaϼaλaϻ`ϼ`μ`ϻ`μ_˸]`X77=A@A?=@>=?>>@=?ϿξϾϽͽμͼ̻̺˺˹˸˹ɷȷȶȴȴǵƳdzųƲİİİïïí­¬ҿпооϽϼϽνλͼͻ̹͹͹̸̹˶ʷ˷ʵɶʵɴȴȳdzȱƱƲǰůƯůůĭíĭ«ì¬ټKE@ )'(&%''&&&%'&#&%''&"!4+U8"bB+}T,yQ-='ǚuڥpiӠxܥ|٣|أ{עy֢y֡yաx՟wӟvӝvҜuМsКsΙr͘q͘q̘q˖pʖoɕnȔnǔmƓkƑkŐk‘kÐiÎhhďhdkީڧiQ=wX;#&#61oo:®Shμ`нaϻaλaλ`μ`μaϼ`ϼ`ϻ_˷^`V&(;DAA==@==??=?><>=;=EBDпϿϿξͼͽνͻ˺̺̺ʹʹʸʷɵɵȵǴǴdzǴŲƲİıį®í­ҿѿϿннϽϼμμλͺ̺͹̹̹˷ʶ˷ʶɵʵɴɳɳȲȳDZƱDZŰƯƯĮįĭĬ­ì쫪}833('('&&&%'&%&%%&$ $'91#R:S7$gD-W.~T.>(Ȝvۦpjաyܦ|٤|ڤ|٣zעyסx֠xաwՠxӞwӝvѝtЛsЛtΚr͙r̘q̘pʗp˖oɔmȕnƓmƒlƑkÐkĐkÏihŐidkީڧiQ=wX;#&#61oo:ShμbϽbмaμaλaϼaϼaλaϻ`ϼ_˹^aW+,;CB@?<@>=@>=?>=@>=?=<><;>KHIѿοϾνμνͽ̻̻̺̹˹˸ʸɷɶɵȴǵƴdzƲƱŲŰŰð®­­¬ѿѾϿннνϼλͼͻ̹ͺ̸̹̹ʷ˶˶ɶɵʵɴȴȳdzDzDZƲƱưưįŮĮĭì¬ì«Ūsh`,+/$$%'''&&''%'&%'&&(&$(A5$Z>U9%mH/Z0V/?(˝wܧpkԡzܦ}ۥ|ۤ{٤|ؤzעyסyנyՠxԞvӞvҝvѝtћtКsΙrΙr̘q̘p˖pʕoȔnȔnǓmƒkőjđjÑiiǑidkީڧiQ=wX;#&#61oo:¯ShϼaнbϽbϼbϽbνaλ`ϻaϼaλ`͹_ϼ_T21>B@A?>??=@?=@>=?>=?>=@<<=PJLϿϾϾͽͼλͻ̻̺̹˸ʹɸʷȶȵȵȵǴƴƳƲİűİïï­¬ппоϾϽмϽμͼλκ̺͹̸̷̹ʶ˷˶ʵʵɴȳɳȲȲDzDZƱưůůĮĮíííìì«©ټPHC#(()&&''&'&%'&%''((&!*F8&fE Y;'sL0^0X0?( ˝xܧpk֢zߨ~ܦ}ܦ}ۤ|ڤ{أ{آyסy֡xՠwԟwӞvҝuќtЛtϚsϙr͙q̘q̘p˗oʕnɕnȔmǓlƒlőkĐkÐkǒjdkީڧiQ=wX;#&#61oo:SiϼaϽbϻcлbмaλbμbϻ`ϼ`λaκ_̹_S65>A@A>=A>>@>>@?=@>=@>=?>=?^Z[Ͽξνͽͼͼͼ˻˹̹˹˹ʸɷȶȵǴǵǴƳŲűŰıð¯­ìѿѿѾоноϼϼμλͺͺ͹͹̸̹˷˷˶ʶʶʵɳɳȳDzdzDzƲƱưưįŮíĬ¬ìëë;65!)')(&((&'&&(''('$&&-+,\D)iG!^>*wN2`2Z1 @( ̞xݨpkף{ݦ~ܦ}ܦ}ڤ|ڣ{٤zآzסy֡yՠx՟wԞvҝuҜuМtϚtϚr͙r̘q̗p˖pʖoɕnȔmǔlŔkƒkĐkȒlejީڧiQ=wX;#&#61oo:SiϼbϼcϼbϽcϼcϼaмaϽbμaλaκ`̹_S66?CB@?>??>@?>@?>@>=@?=@?@?>@?>@?>@>=??=@`^]ϿϿϾνͽμ̼̼̻̺˹˸ʸɷɶȶȵȴǴƳŲŲİűİî®­¬ѿѿѾϿонϽμλͻͺ̹̺͹̸˹̷˶˶ɶɶʴɴɳȲdzDZƲDZưưŰŮůîííì쫪ػGA="*)*(&(''('&((')())%#*J:2zU,oN$gE-U6g3^3 A) ͟yݨqkؤ}᪀ߨިݧ~ݦ}ۦ}ۥ}ڤ|٤zأzסy֠xՠx՟wӞvӜvҝuМtЛsΚs͙q̘q˗p˖oʕnʕnȔmǔmǓl˕lfjުڧiQ=wX;#&#61oo:¯TjϼbмcϽdнcϼbϼbмbϼbϼbмaλ`̹_T66?CAA??A@>A?>@?>@?>@?=?>>@a^^ϾϾνͽν̼̻̺˹˹˸ȹȷɶȶȵȵǴƳƲıİİį¯í­­ѿппϿоϽϽϻμμͺͺͺ̸̸̸ʶ˷ʶɵʶȳȳɳDzȲDzDZƱưưůůįíì¬ë¬ªs201"#%))*(&))')(&)(&((((&$'+R?5Y.tQ&lH.Y7i4_3!A) Πyݩqk٥}⪂ઁߩߨݧ~ۧ~ۦ}ۥ|ڤ{٣{آzסz֡xՠwԟvӞvӞvѝuќtϛsΚr͙r͘q̗p˖o˖nɖnȕnǓl̕ngjުڧiQ=wX;#&#61oo:°UjϼcϽdϽcмbмbнcϽbϽcϼcμaϻ`͹`S67?BAB@>@??A@>A@>A?>@>>@?=@_][ϿϾϾͼͼνͼ̻˺˹ʸʸɸȶɵȵȴǴdzŲƱıűİï®­¬­опϾнϼμλͻͺ̺̺͹͸˹˷˷˶ʵʶʴɴȳȲDzDzDZƱŰƯŰŮĮĮĭìììȰOIF%%'('*)())()''((')(()'#'+C80lL7[1zU'qL/\8k4a4!A) Πyީqkڥ}䫃ᫀ઀ߩިݨܧ~ܥ}ڤ|ڥ{٣zآzעy֠xՠwԟwԞvӝvѝuМtϛtΚrΘr͘q̘p˗oʖoɕoǓm͗nfjߪڧiQ=wX;#&#61oo:¯TjμbϽdмdнcϽcϼcϼcϼbнcϻbͻa̹`T67?CAA@>@@>B@?A@?A@?A?>A?=@WRTϾξϽͼͽͼ̻̺˹ʹ˹ʹɷɶɶȴȵǴųŲűİűİïî­Ѿооонϼϼμλ͹͹ͺ͹˸˸˶ʷʶɵʴȳȳɴdzȳƱDzƱưŰŮůĮííìëD?;!$*)*)())')(())()),+'"-N>3|W:`4Z)uN0^9m5b5"A) Πzީqkۦ~嬃⬁᫁ઁߩިާݦ~ۧ}ۤ|ڣ{٣{آzסy֠y՟y՟vԞwўvѝuМuϛsϛs͙r͘q̗q˗p˖oȔn͘pgjߪڧiQ=wX;#&#61oo:°UjλcнdϼdϼdнcмcнdмcϽbϼbμa͹`T67ACCBA@B@?B@?A@?A??A@?@?>@OJMѿϾξͼͼ̼̻˺̹ʹ˹ʸȸɶȶȴȴƳŲƲİıı°îҿѿпомϽμλͼͺ͹ͺ͹̸˹˷˶ʶɵʵɳȳȳȳȳƲDZűưưĮŮůííí묪īsg[.,,&&'*()()*((*)')))*'#%+?52jM6|Y=f6_+zR2`:o6c5"B* ϡzީqkۦ䮃ᬃ⫂᪂ੀߩިި~ݦ~ܥ}ڥ|ڤ|٣zآyסy֡y֠x՟wӞwҝuҜuМuЛtϙr͙r̘q̘q˘pɖoϙpgjߪڧiQ=wX;#&#61oo:°UjϽcмdмdнdнdнdмcнcϽbϼcλa̺aT78@CCD@@B@@AA?A@?A??A?>@>>?KGIϿοϾνͽλ˻˺˹ʺ˸ʹɸȷȵȴǵdzƲŲƱŰűðïî­ҿѿѾϿϿϼμϻλͻͺ͹͹̸˸˷ʶ˶ɵɶʵȴȳɴDzȳƱŲƱŰŮĮůîĬíë««©ؾ522 !#,**)(*))*((*)())**'$'/[D6Y9\@k8b-}S3b:q5d5"B* ϡzީqkܧ孅㭂㬂⪂᪁઀ߩߩާ~ܦ~ۦ|ۥ}ڣzآ{آzעx֡y֟w՞xӝvӝuќtЛtϚsΙr͘rΙq͙p˖oљqgjߪڧiQ=wX;#&#61op:°UkϽcϼdϼeнeϼcϼcмcϼcнbмcϻa̺aT88?EAD@?BA?A@@B@@A?>A??A?=?HCFпοϾνͽνͼ˹˹̺ʸʸ˹ɶȵȵǴǵƲŲűİűİï®­ѿопϾмϽϼλμκ͹͹͸̹ʸʶ˶ʶɵʵɴɴɳDzdzƱDzƱŰưĮŮîĭíëë«ĭzj522'%(+*+)(**)*)(*)(**,+'$0SB:]=bEp;f-V4c:r5d5"B* ϡzީqlݨ篅䭄䮄㬂ᬁᫀߪੀߨ~ܧ~ݦ|ۦ}ڤ|٤{أzסz֡z֡xՠwԟwԞvӜtНuϜuЙrϙr͚q͙q˖pћrhjߪڧiQ=wX;#&#61oo:°UkϼdѾeϾeϽdϼdϼdϽdϼcмdμcϻbͺaU78ADBCB?A@?A@?B@?BA?AA@A@>@?<=Ͽνͼνͼ̻˺˹˹˹ʷɷɵȴȵƴƲƱűűŰï®î­пѾоϽϼλλμͼͺ͹ͺ̹˹˷ʶʶʵʵʴɴȳdzdzdzDZƱƯưŮįîĮĬ­ë«ͳ<78#$&+*++)**)**)**(**),(#'-@86oR<`AhHu=j/X5d;r6e5!B* ϡzީqlݩ簅䯅宄㭃㬃⫂᪁ᩀߨި~ަ~ܦ~ۥ}ۤ{٤z٢{آy֡z֡xՠxԞwӞvҞuѝuњuКs͚r͙q˗qҜrhjߪڧiQ=wX;#&#61oo:UkϼdоfнfϽdϾdоeϽcнcϼcϽcμb̺bT89@DBCA@AA@CA?BA?BA@A@?A?>A;:;Ͽνͽνμ˻˻̹ʹʹʷɷɶȵȴȵǴųƲűŰðîî­ҿѿоппϼνϼλͽͺ̹̺͸̸˸ʷʷʶɵʵɴɴɳȲDzƱƱƯƯŰŮŮíĬ¬ìëª834%%(++,*)**)+**+)(+*--("4_I=b?dEnJz?m0Z4f;s6d5!B* ϡzީqlު鰇殄殄宄䬃㫂⫂⫂ઁ਀ާަ~ݥ}ܦ}ۥ|٤zأzآzءyנyԠwӟwӞvҝtќtКtϛtϛt͘qԜtijߪڧiQ=wX;#&#61op:¯UkϼdѾeѾeнeѽdнdϽeоdϽcϽcμb̺bT98@EDDAACB@CA@BA@BA@C@@B?>A=@>=@οϾͼͼν̻̻̺˹˹ʷɸȶɵǴǵdzŲƱıŰݯ­­¬ѿѾϾϽмϼϻλλͻ̹͹˹̹˸ʷʶɶʵɵɵȴȳȳDZDzűưƯůŮĮĮíì+++$$&,+,**++*,**+*)++--(%6eM?cBfGpIxNAq0\6g;s6d5"B) ϡzީqlߪ겇籇籇氆宅宄䭃䫃⫁᪁઀ߩާݧ~ܦ}ܥ|ۥ|٤|٣{آyءyנyԟwӞwӝvҝuќtЛsΚs՞wjiߪڧiQ=wX;#&#61op:UlнeоfѾeнeϽfоeϽdмdϽdмdнcμbV8:BECDB@CBACBABBACB@CB?CA@C@?BrddονϽννͼͻ˻˹ʸ˹ɸȶɵȴȵǴdzƳƱűİįî­¬ѿѿпомϽϼμͻͺͺ̹͹͸̷˷ʷʶʶɶʵȴȳDzDzƱDZŰůƯĮŮîìϸ\TN/..,*-**,++,*),+*+++,)!&0I=:tWAdFmKvM{QCr1\5g;t6f5"B) ϡzީplᬃ괈谇豇簆簆殅寅䭃㬂᫂᪂ߩߩߨ~ݨݦ}ܧ}ۤ|ڤ|٣zءyעyաy՟xԞvӞvӝuҜtϛs֞vjiߪڧiQ=wX;#&#61op:VmнeѽfнfоfѾeѾeнeнdϽeнdмcλbW99BFEDCACBADBABB@CA@CB@CA@CA?BVPPпϾνͼͽͻ̻̺˹˹ʷɸȶȵȴȵdzųƲŰűİî­ѿппоϽнϼμͼκͺ̺͸̸˸˷ʷʶɵʵɴɳȳȳȲƲDZŰưưįůíĬĭv$#&%%(-,.++,++,+*++*+,..)%(8jPBfEiIsN{ORDt1]5h;t7f5"B* ϡzީql⬃뵊겈겈谆豆簆寅寄䭃㬄⫂ંઁߨߨݨݧ~ܥ|ۤ|٥{ؤzآy֡y֠y՟w՟xԞxҞwМtנwjiߪڧiQ=wX;#&#61op:°VnмfѾgϽfϽfоfоeнeϽfнeϾeѾdͻcU::AFDDCBDBACBACBACB@CA@BB@CAABOMOϾμͼͽͻ̻̻˹ʸ˹ɸɶɵȵǵǴƳŲŲűݯ®í­ѿпоϿомϼλμμκͺ͹̸˸̸˷ʷʶʶɵɴȴȳȳDzƲŰƱƯůįĭ¬ζKy[EfJqNxQQSCu1]6h=t7e5"B* ϡzީpl⭄괉곉鲇豇鱅簅篅殄䭄⬂⫂᫁ੀߨߨݧ}ܧ}ܥ}ڥ|ڤ{أ{آz֡yנx֡xԠwӞvќuءxkiߪڧjQ=wX;#&"61op:VmϽfоgѾfѽeнfѾeѾeмeмdнeϼdҾdY67AFEEBBDCBDBACCACB@CAADB@BBACD@CϿνϽͽͽ̻˻˺˹˹ʸɸɶǵȵǴƳŲƲİŰï®íѿпϾмϽνμμκ͹ͺ̹˹̷˶ʷʵɵʵɵɴȳdzDzƱƱưƯůĮŮů').'(*.--,+-,+-++-+*,--.+'*;lTFgIlNwRSSTËDu1]6h=t7e5"B* ϡzީpl㭄봉괉곈鱈鱈豆簆毅䮄䭃㬃㬁᪁ੁߨިݧ~ݦ}ܦ}ۤ|ڥ{٤{עzסy֡x֡w՟wҝv٢yjhߪڧjQ=vW:#'#61op:VnоfнgѽgпgϿgоfоfнeнeѾfλee^.0?HFFCCDBACCBCBBCC@DB@DAACA@B?=@ϿξϽͼνμ̼˺˹ʸʸɸɶȶǵȵdzųƲűűİî­ѿпϾннϽϻμμͺ̺͹˸˸˶ʶɶʵʶʴȴȴDzdzDZƱŰƯŰŮíɰUMP0./-,--,-,,.,,,,+,,-.) &6UFB~_HiNtS|TUTUċDv1^7h=t7e6"B*!ϡzީpl㮆쵊쵊봉겉鱈鲇豆毆寅它䭄㫂᫂᪁ੀߩިݧݦ}ۥ}ۥ|ڣz٣zעyסy֡xՠxӞwۣzjhߪڦjQ=uW:" ($51op:VlϽfѽgѾeϿfϽeѽeѽdϾeϾdнeͻde].0AHFECBDCACCBDBADCACBACCADB@C>=@Ͽξνͼνͻ˻˺˹˹ɷɷɶǵǵȴƳƲıűݯҿпоонϼλϻλκ͹͹̸˸˷ʶ˷ʶʶɴɳɴdzdzƱDZƱŰưįͶw&&()++,,-,+.,,-,,--+-./.+(*>nVJkLpR{VUVUUŋDv1^7i=t7e7$C+!Πzީpl䯆ﶍ뵉볉겉겈鲇簇篆宄宄㬃㬂᫂ੁߪߩިݦ~ݦ~ۤ}ۤ{ڣ{آzעyסyנyԟwݤzkhߪڦkR>qT7!)$51op9IJYrkljjkkjjijѿhj`00>IFECBDCAECBDBADBADBACCACC@BB@Cpbbονμͽͻ̺̻˹˸ɸȶɶǴȵȵƳƲűİűﯭҿпϿомϼμϼλκ̺̺͹̷̹˶˶ʶɵʵɴɴȳDzDZDzưŰƯì745.-0-,.-,--+--+.,+.-./) %9VHFdNnSxVWXWTUnjEw2^7i=t7e7$E,"͠yީpm密쵊촊볉볉鲇谇鰆毅寅䭄䭃㫂᪂ીੀߩާާ~ܦ}ۥ|ڤ|٣{أzآzסzԟxݥ|lhߪ٥mT? kO461op;Qμeɷ_ʷ_ʸ_ʸ_ʷ^ʸ^ʸ^ɷ_ʷ^ɷ]ȶ^λ_W[U:CBGEBDCBECBECBDCADBBDBBDB@DDBD@@BϾϽνͼμͻ˺˺ʸʸɷȷȶǴȵǴųƱűűİîî­ѿпоннνλλͻ̺̺͸̸˸ʷ˶ʶɵʶʴȳɳDzDzƱƱŰǰѸbWS,,.,,.-,.-,.,,-,,-,,--./,'+AqXMnRuVYYYXUUŋEw2_7i=t7e9%H-#̞yީpm䰇뵋봊곉鲇豈豇毆密宄㬃㬃᫂᫁ઁᩀߨݧ~ݧ~ݥ}ܥ}٣|٤{أzآzՠyܦ|khૃפ~qWB ybG/;1oj?;99999999999989@::FFEEDBEDBECBDCBDCBDCADBBCCBEBACϿομͼνͻ̻̺˹ʹʸɷȶȶǴǴƳŲƱİıïïîѿпϾϽмϼϼμͻ͹͹͹˹˸̶ʶʶɶʵʴȴɴDzDzƱƲƱȲ--/.-/.-/--/.,/.,.-,.../+"(DmYRpVy]`baĒ_Ȓ]ɒXƏXΒG{2_7i=t7d;&K/%˝xߪpmﶋ촉겈鱇鰇谅毅殄嬃䬂㫁᫁᪀ߧ~ݦ~ݦ}ۤzmh᫄ԣ|v[Eo {gS=( :0rtмXbaaaaaaaaaaaaaaX98BHEFCCEDCEDCDDBDCBECBDCBEDCD>=@ϾϾϾϽͼμ̻˺˹ʸʸɷɶȵǴǵdzƲűıİð®í­¬ѿпонϽϼμμͺ̺͹˸˹̶˶˷ʶʶʵȴȴdzȳDZƱŰĮD>B0///./.-/.-.--/-,..-/./0&#&?pWJlNrRzUVUURON@q1\7i=t6d=(O1'ʜwߪpkݪ貈密將䯇䮆㭅㬅᭄ଂૂߪީݨܨܨܦ~ڥ٦}إ|أ|ף{֢{ա{ԡzԠyӠyҟxўwϜvآyihᬄҠzaIN cQ@0  @6ʼa؂}}}}}}}}}}~ـڀـv65BHFGECFEBFDCECBEDBECCDDBDCBDA?BϿξϾͽͽͻ̻̹ʹ˸ɷȷȶȴȵƴƳƱűűï°ïѿѿпϾнмμϼμͻ͹͹̸̹˷ʷʶʶʶɵɴȴȳȳȲȳ̷q**+/.0/-/.-/.-/.-.../.../'-Q7V6Z:e@ kE"pH#sJ%tL&wM&wN'xO(yP){Q/Z7i;s7e>(P2'ʜwީ•rga~```````aaaaaaaabbbbbcbccccccccckߩϟyhN- I9."BC:쩕2ת3ڪ3ڪ3ڪ3ڪ3ڪ3ګ3ګ3ڪ3ک2ݨ1ᥐ1墎0額0힊/-{066DHEECCFDCFDCFCBECCEDBECBDDBEEEG0+-ϿпϽμμͼ̻˺˹ʹʸɷȷȶȴȴdzŲűűİįﮬ¬пѾоϾнμμλλͺ͹͹̸̹˶ʶʶɶʵɴȳȳDzdzȲ&',1/1/./../..//-/.-/../.*.+?5(kJ,V1]5e8k;n;p;s;r;sy>y>y>y>y>z=w7e@)P1'˞xߪީުݩܩܩܨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨۨ⭄ĕrx['" B>;>614|0|k. #|aB(fJSiR:YXE1mI9)>1"7+2'1&,"0(#HFJEBEDDFECFECEDCEDBFDCEDCFEDF??@οοϽννͼ̻̺˸ʸɹɷɶȵȵƳƳƲıűįïîì­ѿоϽннνλλλͺ͹͸̸̷˷˷ɶʶʵȴȴȴ̶|--/0010.10.1./0.///.0///1-1L3P4 V:"^?#fD&jG'mH(oJ(pK(qK)rL(rL(rL(rL(rL(rL(rL)sM,xP;&I-$hwZ{]|^~_`禀a槀a槀aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`ଃcg9,! {^G`sgjjjklllnf??EHEGDCFEDEDDFEBFDCFECFDBEDCEHGIϿξνμͽ˺̺ʸ˹ɷʷȷȵȴȴųƲűıðð®î­ѿпϿнϼϼϼλͺͺͺ̹˹̸˸˶ʶɶʵɳʵͶ"$'3121/1//10/00.0//00-0,,.'%'qS5 -#pUvZqq봋଄⭅⭅⬄ᬄૃ谆țy9;?IFIEDGEDFECFEDFEDGDCEDCEEBFFEH@>AýпοϾͼͼ̼̺˸˹ʸʸȷɶǴǴƴƲűűİï¯î¬пѿпϽмϼμͻλͺ̹͹̸̷˷˶ʶɶʵɳϹ!$5450/11.2//00.1//00/0./0**,  f I 1 )>/$ [G6uZDrWCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCsXCrWBx\F_I7 -#pUvYr•qૃŖrɚuȘuȘuȘuȗuўyf LILEDFFDGEDFEDFECEECFDCEDBEEBEFDFZOQϾϾͼͼͼ̻˹˸ʸɷɷȶȵǵdzŲƲİİįѿѿϾϾоϼμμλͺ͹͹˸˸̷ʶʷɵɵк7145340011021010/10021/00/2++,RRTabejjmssvyy|~~KKLfG- -#pUvYrq密ocddddced=?DHEHEEGFDGEEGECFECFEDFDDFECEHFG559ľпϿϾͼν̻˺˺ʸʸʹȷɶǵȵǴƳƱİűİïî­­¬ҿѿоϾнмμλλκ͹͹˸˸̸˷ʷʵιŰqef.-.2130121020011/1000/.10/1A@Bzz}CCDgH- -#pUvYrq氆lh}֠xנx֟wԞuٟvoFEGHFHEDFFEGEDGFCFFDGECFEDFECFEEGDBEsjjξνͼͽ̻˺˹˹ʸɷɶȵȴǴƳƲıűðï®í­ѿѿпϿнϽϽϼλͺ̺ͺ̸̹˷˶ʶ̸ȴ}pr&'(3241031010/21020020/2101<;=llnvvxDDEgI- -#pUvYrq氆lhߧ~ԠxՠwԟwҞvנvnIFIHFHFDHEEGFDGEDFFDFEDGEDEDDFEDFHHI0/4Ͽονμμͻ̺˹ʸ˹ʸɷȵǵǴƴŲűıŰį®®¬пѿпϽϼϼϼλλͺ͹͹̹˷ʶ̹Ʊsf#&*54511210221320210210210188:WXZ__aggimmpssvxw{z{}||}}}~~~~~~~~~DDEgI. -#pUvYrq氆lh~աx֡yՠxԟw֟x̘siZBBFGFHFEGFEGFEGEDGEDFECGFDFEDEDDFFGJF7-ϿϽνμ̼̺̹ʸʹɸȶɶǵȴƳƳƱıűİî­¬«ѿѿϾооϼϼμκͺͺ̸͸˸̷̷s"545213212113202112112102))+fdgDDEgI. -#pUvYrq氆li֢yآz֡yՠxԟw٢xǗq;>DIHIGEHGEHFDGFEFGEGFDGFDGEDGEDFGFI98<пϿϾμͽͼ˻̺˸ʸʸȷȶȵȴǴƲŲŰűðïî­ѿоппнϼϼμͻͺ͹͹˸ʸ͸y&&*5363143231232121142122131.1ihjDDEgI. -#pUvYrq氆li㪀עzأzآzסxՠwܣzɗr7?D~ssϾϽͽν̻˺̹˸˹ʸȷȶȴȵƳƳűŰŰݯî­ѿѾϿннϼλͻɵðaWY3252035353344253353144232243230/0DDEgI. -#pUvYrq氆lj宂ڥ|ܥ|ڤ{٣{أzעzסz٣yʙr.6@KGKGEIGEHFEGGEHGEHGFGFDGFEHEEGFEGHCF=>FbϿϾͼν̻˺˹ʹ˸ʸȷɶǴǴƳųưűıݯѿѿѾоϾоϼ˹ȷɲ0/2869222446436324424325423324212012DDEgI. -#pUvYrq氆kj篃ۥ|ܦ}ۥ}ڥ{٣zآzעyעyڣxm:>DIHIGEHGFHFEHFDGFEGGEGFEHEEGFEFFEGHIL6/,ϿϾͼνͻ̺˺˸ʸʸȷɵǴȴƴƲƱűűᝮѿϿϿλʷƬ͸|ke99:/.0645545545435435445325434435<;=DDEgI. -#pUvYrq氆kj谄ܦ}ݦ~ܦ}ۥ|ۤ|٣{٣{עyآy٢xh\SEEHEFHFEHGEHHFGGEHGEHFEGGEHFDGFDGFFGCEHB@CϿϽννͼ̻̺ʹ˹ʸɷɶǵǵdzųŲűűİïí¬ѿпо̻ʹêǰHCC756013778535435546446445435555102-,.}}DDEgI. -#pUvYrq氆kj鱅ݧ~ި~ݧ~ܦ}ۥ|ۥ|٤|أzآz֡yʙtm^UNKLFGHHEHFFHGFIGFGFEGGEGFEHFEGFEFIGJ?=AA=?Ͽξννͼ̻˺̸˹ʸɷȶȵȴǴƲűııİïî¬ͼ̼пʹ̷TNL;9;003335757547456646546545436556435=<>~}DDEgI. -#pUvYrq氆kk벆ިߩިާ~ܦ~ۥ}ۤ|ڤ{أzעzޥz͚t*4@LIKIEHGEHGFGGEHFFHFEHFEHFEGGDGFDFJIJ<:BοϾͼͽ̻˺˹ʹʹɷȶȵǴȴŲıïο®¯ϷŲyohPJJHFE857,,01148796696576676476475576566580/1(')`_`DDEgI. -#pUvYrq氆kkੁ᫁ੀߨާݨ~ܦ}ۦ}ۥ|ڤ{٣z֡xާ{l3;CIHJIHHGFIHFIHFHGFHGEHGEGFFHGEHFDGJIK@?BIGJb[[пϾνͽͽ̸̻̺ʸ˹ɷȶȵııŰθıŷ|tXSQLIIKGG657)),102768989878668668657657657657868:89325DDFDDEgI. -#pUvYrq氆kkૂ⫂᪁઀ިߩާݦ~ۥ}ڥ|٤{٣z֡x|m9=EIHJJHIGFHGGIHEHFFIGFHFEGFEGGFGFDGHFIFDH>9:=((.-.1224868::<98;879779868768769767767657869214('*>=>vvxDDEgI. -#pUvYrq氆kl﵊᫂㬂⫂᪁᪀ߩߨݧ~ܦ}ۦ}ڥ|ڤ{أzաx|o9A((,,-1..3778?<>><=<;=;9;98::9::9;88;97::8;88:97997:87:869988<:8;99+,72/175).0/ђDDEgI. -#pUvYrq氆jl⮃宄䭄㬃㫂᫁⫁ߪߨި~ݧ~ܦ}ۤ}ڤ|٣{٢zԟy}ng;=EDEHMKJGFHGFHFFIGFIGFIGFHFEHGEGGEHFEGEDHLKNCCE,,/RPRʮyryt{tnqki@;>/.2-.1,,198:@>@><>=<=;:<:9<:9<;:<;:<98::8;98;:9;:8:98:88997:99:<::A=;769');0-1hdFW`T:98ٓDDEgI. -#pUvYrq氆jl䮄箅歅䮄㭃⫃᫁᪀ੁߩިݧ}ܦ}ۥ|٤{٣{أy֠xݥ{|h4;C7?>>@=;=;:<;9=<;;;9<::<;:;::;;:;;::;9<:8<98:98;:9;::;?=;879*,86HE<|r?p3ctyh <<9֖DDEgI. -#pUvYrq氆jl殄谆篆宄㭃㭄⫃⪂᪁઀ߩݨݧ}ܧ}ۤ|ڤ{٣{٣z֠yўw}~gr`V9=EDCHNIKHFIHFIHFIFFHGFHGFHFFGGFHGFHGEGEEGFFHJHJIGJ??C12598:LHKnghŶ}~xtVNPD@@<=>204,+016<99:A>@@>@@?A@>A==;>=;=<;=;:<;:<<;=;;<;:<::<;:;:9;:9<:9<;;<=:<@?<65;32: #6EC:}sBxoBIC:npvf=<:֗DDEgI. -#pUvYrq氆jl簆豆簆箅宅䮄䭃⬃⪁ઁੀߩާݧ~ܦ~ڤ|ۥ|ڤ{٣{أzМw~Ȗr}eACH5;CLIKKIJGGHGFIGFHFEHGEHFFGFFHGFHFEHFDHFEGFDGGFHJHKHGIDBE89<,+/=:>>>A?BBACA>@?>@><>><>=<><<><<>=;><<>=<>=;=<;=<;<;:=<;<;;<;9;=;<<;<><=@?=98<11; 7HEAF=@FLIJKGJGFHGEHGEIHEHGFHFFHGDHGDGFEGFEHFDGEEFFDGFEGHGIJIKGFIBBDCCE;;>358((,*(,=9;MGI^[\][\URQYVT_ZZc]^hbamffmffga`a[[\WWNKJVST[XY][ZMIK;6;.+/('+'%+--168:<=?==>CBCDBECBD@?A@>A?>@?=A>=?>=@>=?>><===>>;=<<=<;>=;=<;><;><;==:<@==A?=99<:9<..:!7C@=e^BphCILʴOϻPONɴRH;otzj >>;֙DDEgI. -#pUvYrq氇jm鱆겉겈豇谆毅宄䭄䭄⬂᫁ઁߩީާ~ݧ~ܦ~ۥ}ڤ{٣zآ{آz֡zΜv~Ŗr{ej[T6;D=@FNIJIGIGGIHFIGEIFEGFEGGEGGEGGEGFDHFEHEDGFDFEDGEDGECGFEGFDHGEHHFIJILJIKFFGCBD>=@>=?@AC>>A<88<67966:88<::><=@;:=;9<>=@BBCEDFGEGGEFDCECADB@B@@AA@A??@??@?>@?>A@=@>=@?>?>>?>>@>>=>>><>=<>=<=@>>@>>==><;>><>+,:%(9B@>BA>kcCxnEHMԾQκRDzPİPðQȴQȳPθSH;ot{i >>;ՙDDEgI. -#pUvYrq氇jm鲇괉겈鲇豇豇毅宆孄䬂⬂⫂᪀ߩߨިާ~ܧ}ۥ}ۥ{٣{آ{آyآyҝvӟwﰀmv`aWQ5;CBCGMKJJHIHFIGEIGFHGEHGEHGEGGEGGDHFDGFEFFEGEEGEEFEDGECGEDGDCFDDFECEECGECFEEHFDGDDFFDFFDFEDGFDFFEGFDFFDFECEDBDCADDCEDBEDCECBDC@CA?C@?AA?A@?B@?BA@A@?B?>@@?@??@@?A@?A?>A@>??=@?=A>=??>@>=@?=??=?@@@A>@A@??>?>=>01<,-;55<><>66=umEzqEIJįPTкSdzQïQİRDzRȴQʴQɵRɵQιTH>;ՙDDEgI. -#pUvYrq氇jm곈봉봉겈貉豇籆毆宅䮃㬄㬂⬁ંߪੀިݧݧ}ۥ|ڤ{ڣ{أzסyסxՠxΛvҞuh{gXZRO39C:>FBCHIGIIFHGEGGFHFEHFFHFEHFFGFEGFEGFEGEEFFEFEDFFDFEDFECFDDEECFDCFDCEDBFCBEDCDDCEDADCBDCAEBBDCBCCACC@DC@DAACBACAACB@CB@CB?BA?BA@BA@B@@B@@BA?B@?A@?A@>A??A@?@@>A@>@A@AB@BA@@A@AA@@A?@:9?/0=/0=/0<87>76>h`DvnGtH}I~vGԾSVлTϻTdzS®RŲRȴRɵSʶRɵRʶRʶR˷RʶRκVJ>;ՙDDEgI. -#pUvYrq氇jn봊촊봊鲉鲈豇谆毆䯄孄㬄⬂⫂ઁੀߩިݧ}ܥ}ۥ|ڥ{ڣ{٣zעzסy֡y՟xϛvƕoןsgyg]{fZ\SOAAIEDLPNMHGGIGIHFHFEGGFGFDGFEHGDGFEHEDGFDGEEGEDGECFEDFDDFECFDDEDCFDCEDBFDDEDBDCBECBEBBEDADCBDCBDCBDBBCCADC@CA@BBABBABA@CAACAABA@B@?AA@ACABCABCAAC@BBAACAA?=@13=33>33>23?32=44=KIAtjGqjHskG}rJ~tIİSWVѽVԿUñSïTdzTdzTȴT˶TʵS˶SʶSʶS˶S˷TʷTʶRʵRϺVJ>;ՙDDEgI. -#pUvYrq氇jn뵊촊곉곉鱈豇谆毅毅䭄㬃⬁᪂᪁઀ߩާݧ~ܦ}ڥ|ڤ|٣zأzעyסy֠x٢yȗqh˚vآxeQFHH:WQ='(5@@K<-/>>>@qiHleHnfGqiHrjHskHNWXWԿWXȴUįVŲUƲUdzT˷UʶUʶT˶T˷TʷU˵T˵UʷT˶U˶U˶T˶S˶SʶRκVI>;ՙDDEgH, .#oUvZrq氇jn쵋﷌볉곉번鱈鱆谆氆殄䭃㬃⫂⪂ઁߩߩݨݦ~ۦ}ۥ|ڣ|٣zآzעz֡y٢yȗqkĖtդ~ėr?--d[š>YV?slOogH]YJ-0C::E9:E>>E==F>?EKHHIGHHGHIHGIGGHGGGDFGEGFEFFEFGEFFCFECFEDFGEDFEEGEEFEEFDEGDDFDEFDEEDDHFE>=C67A98A98B9:B57@34@./??>Aa[GgaIf`HjcHmfId^GyMZϼXҾXZZYѼYıVŲVIJVƳUƳVɵV˶V˶V˶V˶W˷V˷V˷U˶V̷UʸV˷TʶU˶U̶T˷UʷTʶT˷SʶSϺWJ>;ՙDDEfH, /$mSwZqq氇jn쵋ﶋ쵋볊곉겉鱇籇篇殅宅䬄㬃⬂⫂᫁ߪިݧ~ݧ~ۦ}ۤ}ڤ{أ{ףzעz֢xآyȗrjƗt٧ɛtL83H@f˵JȲJV\WNpiPicPe_OicN_ZL32C88D77D77E67C78DAAH?=F=>E>=D>=D>=E==D??G66C44B46B55B55B55B45A34A66A+-?QNFfaJ_ZIa[H`ZHb\JhaJ_ZHuMW˸ZʷZҾ[[[ֿ[IJYǵXƴXǴXdzXdzXȴXʶX̷X˷X˷X̷X̸W˷W˷W˷W̷W˸W͸W˷V˷V˷U˷U̷V˷U̶T˷U˷T̶U˷TʷSʵRϺVJ;ՙDDFbE+ .$mSwZqq簇ip˜ﶊ첈벇鲇豆簆箅孂孂㬂⫁⪀ߩ~ߧ~ݧ|ߨ}ΛukŗtڧȚsM94SKξ^t­MGͺ^kgfóc̺c`^ZMibNgaNf`Mf`Ne`NYUI\XL[XK[WJZWJ[XJ[WJWTGd^Ke`Lc^Kc^Kc^Kc^Kc^Kb]JfaJROFT̺][°ZZϺ]__]ʷ\ȵ[ȵZǴZƳZǴYǵY̷Z̷Z˸Z˸Y˸X͸Y̸X̸X̸Y̸X̸Y͸Y̸X̸X˸W̸W̸W̸W̸W˸V̸U̸V̷U˷V̷U̷UʶU˷T˷U˶U˷TʶSϺWJ<ҙFFGx^@) .#jQx[pq氇jj춌ૃᬄଃ߫ުުީܨۨۨڧ٦~إ~٥}ף|֣|֢{աzԡ{ԠyӠyҟxҟwўxОwϝvΛu͛uϜuÒoiƗtڧǙsW?:ZQξ_wİLIǶ]̺f˸eͺeϼdͻdҿdhgggffP^]\][^PadcccbbaacѾ_ȶ]͸]˸\˹]ʶ]ƴ[Ǵ[ɵ[˸]̸]̹\̹\͹[̹Z̸[̹ZͺZ͹Z͹Z̹[͹ZͺY͹Z͹Y̹Y͸Z̹X̸Y̸X̸W̹W͸W̷X̸W̷W˸V̷V̸V˷U˸V˶V˷U˷U˶U̷T̶T˵SкWJ;pu|l"@?=ΘHHKnU;% ay\oq㮄od`aaaaaaaaaabcccccccccccdcdddddeiǗt٦ƘraFAf\̼^xİLIɷ^ѿhѾgоgϽfнeϻeɹcʹdʷcʸbɸb˸bfнbнcнcϼbϼbϻaнcȶ`ȵ_ȵ_ȶ^ȶ`ȶ_ȶ^ȶ^ȶ_Ƕ^˸^͹^̸]˸]̹]ι^ι^ͻ\ͻ\̺]ͺ]ͺ\͹\͹\ͺ\κ\ͺ\ͺ\κ[ͺ[ͺ[̹Z͹Z̹Z͸Y͸Z̸Y͹Y̸X̸X̸X˸X̸X̸X˷W˸V˷W̸W̷V˷V̸V̸U˶U˷T˷U˷UʷUɶTкWJ;ptn"BB?ȘNNPss^H2~_y\oq⭅˛wգ}֤~֤~֤~֣}֣}֣}֣}֣}֣}֣}֣}֣}֣}֣}֣}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}գ}ҡzҠzۧÖqoPJtiɹ]xİLHʷ^iϾfоfоgѾfѿfоgоfϾfоeнeнeλcϼdλcλcλbλbκbͻaмbϻaϼaμaϻ`ϼaϻaμ`ϼ`ϻ_Ϻ_ͻ_λ^Ϻ^κ_λ_ϻ_λ_ͻ^λ^ͺ]κ^λ^ͺ]κ\ͻ[ͺ\͹\ͺ\ͺ[͹[͹[͹[̸YθZ̹Z͹Y̸Y̸Y̸Y̹Y̹X̸X̸XͷW̷X˸V̸V̸V̷V̷U˸V̷U˶U˷V˷U̷T˶SкWJ;psq#|FECTTWV ]J9'|^{]op곉⮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅㮅宅ᬃp]VpxoǸ\xİLIɷ^ѿhоgоgѾfпhпfϽfнeнfоeнeнeнdϾeнeмcнdϽcϼdϽcϽcϼbϼcϼbϻbмaϻaμ`ϼ`ϻ`ϻ`λ_μ_ϼ^λ_λ^ͻ^ͻ_λ]ͺ]ͺ]κ^λ^ͺ]ͺ]κ\ι[ͺ\͹\̺[ι[͹Zͺ[͹[̸Z͸Z͸Z̹Y͹Y̸Y͹X̸X͸X̸W̸W˸X̸W˷W˸W˸W̷V̸V̷V˷V˷T̸U˷V˵SкXK;qrv%\LKHrrutuxttxutxuuxuuxuuxuuxuuxuuyuuzvwzwwzwwzwwzwwzwwzwwzwwzww{xx{xy|yy|yy|yy|yy|yy|yz}yz}yz}||]]^8 E5( g~`nlӡ|̜w͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝x͝xlkagcŶ[xŰMG¯TǴ[ƳYƳYƳYƳZƳYƳXųYƳXŲXųXŲXųWŲVŲVųWŲVŲWųXŲWűWųWŲVŲVŲWIJVųUŲVŲUŲUŲUŲTıTıTŲSŲTűTŲSIJSıSıSıSűSıSİSİSıSİSİSİRİRıQðRıRðQñPðQðQðQðPïPðPðPðPïOïOïOİOïOïNïNîOîNîNïNîNïM®MƱPG=pp|':SROeeg.# heTdةbcêcêbêbêbébébébébébébébébébébébébébébébébébébébébébébébébébébébébébéb©bdўpqC"dŶ[wűMCA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA?oo)^]Zoor İF/rŷZ|н[Ѿ\ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]ѿ]^͸Suo*ihdxz{}z|}{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~{|~|}xy{s++, edh`nTuYoTaJeLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLdLF 4uT؀}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}܆˽b15/ABl?;尜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찜;찛;粞>BOG#../ 223 :;; ABCPQRQQR]^`\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_\]_]]_]]_DDE                                   A@B9r-z1yk+l`&{1u/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/v/u/y0ui*x~????????(  ':DGHHHHHHHHHHHHHHHHHHHHHHHHGB4  #Jm{dB$ &^cF==??????????????<7*Mǹ^[软YWWWWWWWWWWVVVTSRQQQRTUUVWXO;4psy{{{{{{{{{{{{{{ynS.ʼ`fɷVͻZμZμZμZμZμ[μZμ[μ[ͼZ̺Z˹YǶWURPONNNPS²UǶXʹY˹X_nA9u@ɻ_ǶV'$$###""! ~umyhwfwezhnuCcNG'oqz냃끁~~~}~}~}~}~}~}~}~}~}~}}}}}||򁁄aacIʻ_ʹZ(#$"""! ~ptck\fWcU eV cUfX p`}jwEcPJ*ܘKʻ_ʹY)%%$###!!wbU?7-' ,& *% -(<4 MB XL ZM `R m]~lz@Ⱥ`NH(ے~~Kʻ_ʹY)%%$##"! qb(#        *% H= VJ YL eV ud8XKE'ݒKʻ_ɹY(%%$%$"!ND      5- PE VI ^Q {n/NFA%ߐKʻ_ʹY)&&%%$#!E=     QE SG g\'C>:!ኋKʻ_ʹY*&'&%$" G?    D6%lS7L@8!    NC [R#|s:73䄄Kʻ_ʹY*''&%##`T  s]GPN~N|OeDB4$   '" YP nf31-}}Kʻ_ʹY*((&%$v  r\DQxKxLxKxJ|KNjD6-$ JCha0,)vv}K($ʻ_ʹY*()&&#)% ^L9TyN|O{N{LzLxLwJ|L~NP@/ -)h`/)&rsyK )9ʻ_ɹY+)(&§&fY B5*V|P}Q|P{P{O{NzMzMxLxJPA7-  d].)&rqwK  Ⱥ^ʹY,)(($ |WS~S~Q}Q}Q|P{P{O{N{MxL}MkK SN)-*rrxK #7DHIIIIIIIIIIIIIIDķ\˺Z,))é(^R kXF[~TU~SS~R~Q}Q}Q|P|O{NyK~S,$ WQ*0,uu}K=e{Z̻Z,*)&)$  1+(]VWUUUT~S~R~R~Q}P{O}NyT ]W.62||K3#  ,[Xͼ[-*ī+r!  xcP^WWWVVUUTS~S|PQYL>1 {s:;6ㄅK1^-Ut4d5g5e4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d3d;%ֻS;\-*©+72 *%"^YZYXXXWUUT~RWvPC8.  1-K@;"K3b.W|:q7j6h6h6h6h6h6h6h6h6h6h6h6h6h6h6g8l=vA)ںRξ\.+*.* bTFb[\[ZYXXXWTbcQ?   ti1VHB&ݐI3b.Y{8l6cG{ExFyFyEyFyFxEyFxExFxFxEyFyEw4a:p@(ںRξ\.ɯ,|% pTb\\\[ZZYYX[F<3   ZO?ķ]MG(ܒwG$ 3b/Y{7k;===============;4%3b/Y{6k=k_ɓ[Ŏ\ŏ[ŏ\Ə\ŏ[Ə[ŏ\ŏ\ŏ\ŏ\ŏ\ŏZŎR6e:q@(ںRξ\.Ȯ.<7 G=7f`a``^^]\[aG>: VJn|CͿbPJ*kisyzzzzzzzzzzzzzzvhJ% 3b/Z{6k@mg͙bǓcȔcɔcɔcȔcȔbȔcɔcɕcȔcȕaǓ[ŎS6e:q@(ںRξ\.ȯ.2.^O>haba``__^\`<53 G>[OhZp=õ\D>KLW]\`\\a\\a\\a\\a\\a\\a\\a\\a\\a\\a\\a\\a\\a\\a\\a[[`^]cJJOh33b0Z{5jBnnϝhʘiʙjʙjʙjʙj˙j˙jʙiʙj˙hʗaǓ[ŏR6e:q@(ںRξ\/ɰ/61 cR>icdbbaa``]cXJ;  :3VJ[Nm]z3YA9<헊=옌=옌=옌=옌=옌=옌=옌=옌=옌=옌=옌=옌=옌=옌=엋=작Ayh!&Tb_]\\\\\\\\\\\\\[]:ww;3b0Z{5jDpuҢp̝q͞p͞q͞q͞p͞q͞q͞qΞo̝hʘaǓZŏR6e:q@(ںRξ\/ʰ/2.bSCjdeedcbaa`aqVD;VJYMla'AP[ʻadffggggggggggghcvG*č^z<3b0Z{4jFq}էvϡxТxТwТwУxТwТxУvϢo͝hʘaǓ[ŏS6e:q@(ںRξ\0ʰ0SJ F=7nfgeeddcba_fRE8 G>VJWLdWtev"'+------,,,,+++*)_E'ŌaJONOONNOOONONOOJ]z=3b0Z{4iHsح}Ҧ~Ҩ~ӧ~ӧҧ~ӨӨ}ѦvСo͝hʘaǓZƏR6e:q@(ںRξ\1̱1|n&  djhhgeeeddbba6-& 60SG WJ`SsbucE'ŌeSXXXXXXXXXXXXXXN^z=3b1Z{4iKu۲ӫլլլլլԫ}ѦvϢo̝hʘbȓ[ƎR6e:q@(ںRξ\0ʱ1+ gXIohihgfffddcbi(%&  "QFVJ\Om^p bE'ŌeX^^]^^]^]]^]^]YN^z=3b1[{3iMvݷ֯ױױװױׯժ|Ѧvϡo͝hʘaǓZŏR6e:q@(ںRξ\11ǭ1F?eliiihhffeecee%"!  @8WKXLhZ{j|cE'Ōf^cbbcbccbbcbb_ZN^z=3b1[{3hOwٴڶڵڶٵװԫ}Ҧvϡo͝hʘaǓ[ŏR6e:q@(ںRξ\21ʰ2*J@7qjkjihhhgfecef(%# ;4VJVKbUuexcE'Ōfdihhhhhhhhhhd_ZN^z=3b1[{2hPy۹ܹܺܺڵװԫ}ҧvϢo̝hʘaǓZƏR6e:q@(ںRξ\2ª22ë1:5o_OtklkjihhgfecfhA81 -(PEUJ^RqatbE'Ōginmmmnmnmmmjd_ZN^z=3b1[{2hS{޽޾ܹٴְԫ}ҦvТo͝hʘaǓZŏR6e:q@(ںRξ\2ª32ɰ3~*u^skmlkjihhhfded[MA MBXK\On_rbE'Ōgnssrrssssroid_ZN^z=3b1[|1hU{޾ܹٵװӫ|ѥvТo̝hʘaǓZŏR6e:qA)ػS;\2ë332ѷ4ZP# *((iplmmlljihggecpyeO =6VJ ZNl]rbE'ŋhtyxxxxxxytoid_ZN^z=A+1Y~1gW}߿ݻڶױլ}ҧwУoΝh˙aȔ[ƐS6e:qC*ӼSͽ\4«43231-*3.)sqmnlmljjhhgfbix^&! ;4VJYMl]p bE'ŋhy~}}}}}}ztoid_YN^z=   .{T1hX}ݿۻٶֲԭѨzΣt̟mʛfǖ_đYÍQ6e:pF,ȾUͽ[4«4ª433ʰ3,C;8uqonmmlljiihgdgc:3/ >6WJYMk\p bE'ŋiztoid_ZN^z= 2@FHHHHHHHHHHHHHJ;%gE9o;eNuJsIrHqGpEoDnBmAl@k>j=i;i:h8e5c:qG,U̼[4ë55ª3ª42ж4zk(  PE;voponmmlkjihgdekWI< :3THYMl]r bE'ŋjytoid_YN^z= 2[wyY<;t8q5n5o6o6p6p7p7p7p7q8q8q8q9q9q9r:s:uG-˾Uͽ[5ë6ª5ª4©443δ4uh'm_VzoqponmlkjiihfdjyeS <4WJ[Nn_v!bE'ŋjytoid_ZN^z=N %N*#T3!Q1!N1K.I-I-I-I-I-I-I-I-I-I-I-I,I,H,J.  ˹Sν[5ë6ª6ª5ª4443ī3>9 }kUxpqqpomllkihhgdku[$"' ;4TH]Pscz!bE'Ŋkztoid_ZN^z=6510XQP[YWVVUVTVTVTVTVTVTVTVTVTVTUTVTVTUSYXeZMȲW®W­VUUUUUUUUUUUUUUUUUmɸX6ì7ª6ª6ª5ª5©43ī24@;&fvqqppommlkjhhhdgi,'" J@VJaSzh!bE'Ŋlztoid_ZN^y<7587]igQPQOQOQOQOQOQOQOQOQOQOQOQOQOQORPLJsp((t_VuʺY˻Z̼Z̼Z̼Z̼[̼[̼Z̼Z̼[̼[̼[̼[̼[̼[̼[̼[̼[̼ZʸXJ9ì6ª6ª6«5ª5ª4ª43ŭ35,)50-xssrqppnmlkjihgefb(&( MCWKgYp!aE'Ŋl~ztnid_ZO_t:65;:]`_64A?@?@>@>@>@?@?@>@?@?@?@>A?@>CA21a^))t^Ul>>>>==<<<;;;::::9988;9ë7ë7ë6«6ª6ª5ª4420z*tdU}rtrqqpnmlkjihhfh}c +'UIYNp`x aE'Ŋn|vqke`ZNaj565;:]a_?=URSQSQSQSQSQTQSQSQTQSQSQSQTQVT=;c`()t_UnBȲCǰBǰBưAư@Ư@Ư@Ư?Ʈ?Ư>Ů>ŭ=Ů<Ů<ŭ<ĭ;ĭ;ĭ:ĭ:Ĭ8ì8ë8ë8ë7ª7ª6ª5441.(2/82/wvttsqqponlkjihhefqV81VK_Syh ξ`D&NJfoqnkhgda_][XVTQKab265;:]a_@>ZXYVXVYWYVYWYVYWYWXWYWYVYVWVVS<:c`))t^UnBưCŰBůBƯAŮAŮAŮ@Ů?Į>Į?ĭ>ĭ=ĭ=ĭ=ĭ=ĭ<ì;ì;ë:ì9ì9ë9ì8«7«7«6542.(F? )''syuutsrqportqmkkkjĠskZG LBYMj[uɺ^D+̐bj965<:]`^B@b__]_]_]_]`^_^_]_^_^_]`]`]YVVS<:c`))t^UnBDZCƯBưBƯAƯAŮAŮ@ů@ů?Ů?ŭ>Ů>Į=ĭ=ĭ=ĭ<Ĭ<Ĭ;Ĭ;Ĭ:ì:ì9ë8ì8«7752.(>9   UJA~xwvutssvvs[|iSWMH-(#/*&.)#1,'aSD}gMjMB: )%SG^Qxg{³ZD :yC{D|D|C|C|C|C|C|C|C|C|C|C|C|B|B|B{B+b{D65<;]`^CBhgfdfdgefegegefefdgdgefd`^XVUS;:c`))t^UnBƱDưCưBůBůBƯAů@ů@Ů@Ů?Ů?Ů?Ů>Ů=Į=ĭ<ĭ<ĭ<ĭ;ĭ;Ĭ:ì:ì9ë8853.(<7 !  E=9x|yxxvtxun^O2-*  G=2i#!"?7YMj[pR];11ꑀ1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀1鑀11閄3vd J65<;]`^EDonmkmkmknkmkmlmlmlnlmjge`^YWUS<9c`))t^UmBǰDǰDƯCưCưBƯBƯAŮAů@Ů@Ů?Į?Į?ŭ>Į=ĭ=ĭ=ĭ<Ĭ;ĭ;Ĭ;ì:ì9874/~o',)  ! vhZ~{{zyw}{e,)*   jT}hQ $"TI_SvfCŶ_dijjjjjjjjjjjjjjjkgvPL65<;]_]GFvvtrtstststrtstsussrnlge`^YWVS<9c`))t^UmBȱEǰDưDưCưCưCƯBƯAůAůAŮ@Ů?Ů?Ů?ŭ>ĭ=ĭ=ĭ=ĭ<ì<ĭ;Ĭ;«9850ui((&  !!  ! 841rƩ}}}|xmZ...SSTdddffgbbbZZZ \Nĭ=ĭ=ĭ=Ĭ<ë;961re( !"!!! "! TJDĪ~}}}r $PPQsaNqsZ(%WKcUp ! bNM65=<]^]KJ|ztsnlfe`^XWUS<9c`))t^UmCDZFưEƱEưDƱDŰDưCưBƯBƮAůAůAů@Ů?Ů?Ů?Ů>Į>ĭ=ĭ<ì<;83xj+"! !"!!"!# tfXǭ|dWI1,.oflC;5 H>_Rwg!#"##"!! bNM65=<]^\ML{ztsmlfe`^YWUS<9c`))t^UmCȲFDZFǰEDZEǰEưDưDưCůBƯBưAƯAƮAŮ@Ů?Ů?ĭ>Ů>Ů>í=«<95wj-"! """"###%$(yiʰ~?94eees\qgmr^:3[On_{!###"""!! bNM65=<]^\ON{ztsmlfe`^XVUS;9c`))t^UmCȲGDZGDZFǰFưEǰEưCƯDƯCưBůBƯAƯAů@ů@ů@Ů?Ů?ĭ=ì=;7w/! $!!#$##$$$ (%%r̳§4/*"!"raPrjlij0+($!WKeXs"#$""""!! aNM65=<]][QP{yusnlge`^YVVS<9c`))t^UmCȲGDZGDZGDZFDZFDZEưEǰDưCưCƯCƯBƯBůAŮ@ů@ů?Ů?ĭ>=9~1,*&"!$%$$%$& ,))yʱ§NEBWXX)(* gXIxnmmjpiYI MCaT|k"#$$#"""!!  aNM65>=]][SR{yurnlge`^YWVS<:c`))t^UmDȲIDZHDZGDZFǰFưEDZEDZEưDưCƯBůBĮAŮAí@í?í?ì>=;552'%&%$&$&!+))y˳Ūl_R-,..-.!  eWGyopomln~`?8_Rte"$$$$#""""!  aNM65>=]][UT{zusnlge`^YWUS;:c`))u_VmDɳHDZHDzHDzGDZFDZFǰEưEůDĮCíB¬B@??>=<;7PJ*%'&%&%&""#,*+z̴¬çu!  ggg``` #!"aTF¢|srqpnmlo2.+2-[Nm_{!%$%%#$#"!"!!  aNM65>=]\ZWV{zusnlge`^YVUS<:b`**wbYmDɳIȲIDZHDzGDZGưFůEíDCB@><:98775YQ,&'&&&%'$$$#!&ζí쬪ƪTKF###www|z{!!!ME>sttrqpolqfXJ " XLgZu!$%%%%##""!"! !aNM65>>]\ZYW{ytrnkfd_^XVUS;9a_+,|h]lDɳJȱIDzHưGůE­ECA?;852~1z.x-v-z,nb*$$('&(&%'('( vhѺ¬įĮíí쬪}(&'#""!! 1.-yxvuutrppmrlVJAeXp %%%&%$$###"!! !aNM65<;[b`A@YXUTTRRPPNOMLKKIIHHFFDDBB@@>A>42da--|kalDɳJDZIůGFCA=95|0s,zm)wj'qe$na#l_"k_ g["1/($$(('(*))g]WӼïưůůĮíììë«Ūp)') !n~xxwutsrqonj)&%F=cU{k %&&&%%$$##""!!!"aNM5432]caa`][_]`_a_b`b`bacacacbdbdbdcececcbsr%&}h^lDDzJîHFA=8~1t,vh(f[&_T#WM!?:#A;&?:%>9%@:":6#$%*)(()))!NHEȳdzƱƱƱưůŮĭíìë«ĩOGB)&%(%%82/r{zyxwutsqqoq/*%71`Svg%&&&&&%$$###"!!"aNM4321-98CA96x1.f,)[)'V(&U(&U(&U(&U(&U(&U(&U(%U(%U(%U(%U(%T)'Y 1eZiC®ID?82{m,eZ)IC)A<(,+,-,-.--%%,$$+$%*#$+$#***+*)*(()&&'411кDZȳDzƲƱưůůĮĭ쬫¨¨~}|}{yyxvutsqosA:5+']Psc%'''&&%%%###"!! #aNMðA˼SO㻭LKKKKKKKKKKKKKJN]i@D=4ui.TL,:7,,+-((/++0,,.$$'#+*+-+,0.-/,-,+, #'&(,+, #]VQӾDzɴȴȳDzDzƱƱưůĮĮí쬪~}|{yywvutroutcV&#\Oo`~%''''&&%%%$##"" "aNMõ]jɸZͼ]ͽ]ͽ^ν^ν^ν^ν^ν^ν^ν^ν^ν^ν^ν^ͼ^̻\ɸYN<;t2OI-10.((/,+//.0,,,#"%)(+OKH|qhųŲ~ri.,/#$&,,, #vkƳʵɴȳȳDzƲƱưůįĮì쬪~}}{zxwvttqvjR%"[Ol^|%(((''&&&%$$$##!#aNMƸ]ʷWD¯MKKJJJIIIIHHHGFEB=7dZ1310**0.-/311...#$&635ne^ʱĬҾѾѿǭ>:9##%+*+""%ӾǴɵɴɴȳDzƲƱŰůůĮĭìì«~}|zyywutrwnXOEm^z%((((''&&%%$%$#"#aNMƸ]ʹYŰOϻZ͹W͹W͹W͸V̸U̸U̷T̷T̷T̷R˷R˶RʵPƲOKD:MG2**1/.1201312&')0.2xngòɳƯпͼνϽϽϼλʹī<87&&($%'GBA˷˷ɶɵɴɴȳDzDzƱưưůĮíí¬«ª~}|zywvtrwpWH?l^w%())(((''&%%%#$"$aNMƸ]ʹYîN͹Y˷V˷V̷U˶U˶T˷T˶TʶS˶RʵRɵQɴPƱOKFx9542**2212213//0"#'^XU˵Űопѿппонϼ˹Ī0.0)() #sɵʶʶʵɴɳȳDzƲưƯůĮíìëª~}|yyxvtxsZH@j\u%)))))('('&%%%$#%aNMƸ]ʹYįNκZ˷W̸V̸V˸U˷U˷U˷T˷T˶S˶RʵRǴQMFxl7642..3422424+,.323{ɴɴ­­ѿѿпоϽн˹Ǯ}%%($%&JDCϺ˸˷ʷʵʵɴɳDzȲƲưƯůįĭ¬ì}|{yxwuw~e!H?i[u%)***((('''&%%%#%aNMƸ]ʹYįOκZ̸W̸V̷W̸V̷U˷U˷U˶T˷TʶSɴQ¯OJx=-,1104323435**-=:<һð¯İįî®î­­ппн̺ȯypf #'')ʷ˷˶ʶʶɴȳȳDzƱưưůĮĭ¬ëª~}|zyxvvn&$(E>j\t%)***)))(('&&&%$%aNMƸ]ʹYïOλ[̷X̷X̷W̸W̷V̷V̷U˷T˶TʶSűQM@334325434536++.MHHƸϻ°ŲŲűıŰİïî®­¬пϾѿ̹A=< i`[êʷ̹˸˷ʶʵɵɳȳDzƱűưůŮĭ쫪~}|zywxl#"&F>m^w'**++*)))('&&&&$%aNMƸ]ʸYİPϻ[̸X̸Y̸W̸W˸W̷V̷V˷VʶTdzSŰPF:86105545657,,.IDEοϻIJȵȵǴdzƲŲűűŰİïî­­ѿѿνƮ!!%977òн̸̹̹˷ʶɶɵɴȳDzDzƱůįĮíì«~}|ywyi!#G>n`y!'+++++*))(((''&$&aNMƸ]ʹYįOλ\̸X̹X̹X˸X̷W˷W˷V˷UʶTŰRM^X<+,47666560/1978ѾƴɶȵȶȵǴǴƴƳŲűİıİïî­ѿνȱjc]Ĭ˸͹͹˸˷ʶʶʵɳȳDzDzƱůůĭíìʲ˲ʱȰ}|zx{}eI@pa|!(+,,+++**))((((%'aNMƸ]ʸYİPϻ\͸Y͹X̸Y̸Y̸X̸W̸W̷VDzT˶RuB,,5976557334868ȶ˹ʸʷɷȷȵȵȴȴǴƳŲűűŰðî­¬­оĭ""%k`UƮ̹ͺͺ̸̹˶ʶʶɴɴȳDzDZưŰůìƯoHB<;77999;558DAAõϿϿξννμͼͻ̺˹˹˹ʸȶȵȵǴƳƱűİî­Į|μϾмϼλκ͹̸̹˶ʶɵɴȳŰйzi$#%~m϶}A:7#!#"-*i\t!).////..-,,,++**))aOzCƸ]ʸYűSн_κ]ͺ\ͺ\͹[ͺ[ʶYӾZ{I119;:;;:<-,0{snϾνμμͼ̻̹˹˹ʸɷȵǴǴƳűŰİïîоѿѿонϼλͻͺ̹˷˶ʶʵɴȲƱѺ}msѹ¬«©~940#"""4/i[u!(,--,,,+****))(('&μ]Qb3Ƹ]ʸYűSм`ͺ]κ]ͺ\ͺ[͹\˷ZʶWc]C21:<:;:9;435ϾϾξͼͼͼ˺˹ʸʷɶȵǴƳƲűİïî¬понϼλͺ̸̹˸ʶʶʴɳȳŰϹ̶ííììª{52/ $#$!B>'yo3ANųTɷVʸWʸW˸WʸWʸWʸWʸW˸W˸WʸW˸W˸WʸW˸XǴSkTqK" Ƹ]ʸYűTн`ͻ]κ^κ]κ\͹\κ[T=;<:8;<;<335_YYϿξνͼͼ̺˹˹ʸɷȶǵƴƳűİï®ѿпонμλͺͺ̸˷ʶʵɴȳDzŰůůĮĭì«Ĩ}h%$$$"#"NH(xo7GTYZZZZZZZZZZZZZZZY\>sCƸ]ʸYűTϽaͻ^λ^κ]κ]̹\Ҿ[L55;<;<>=?,,/|οξμͼ̻˺˹ʸɷȵǵǴƳűݯ­¬ѿпϾϼμͺ̸̺̹ʷʵʵɳȳDzƱưůįìì«ĩ|l[%%%##$!!                  EƸ]ʸXŲTоbͺ^κ^κ^κ^ʷ\\qjH01:>==<;<647Ͽξνͼͻ̺˹˸ɷȵȴƴŲűİî­­ѿооϼλͺ͹͸˸˷ɵɳȳDzDZưŰįĭì«ĩYME%$%# ##)&K2!(|`qŖtƗtŗtŗtŗtŗtŗtŗtŗtŗtŗtŗtŗtŗtƗtĖs̜xrXHƸ]ʸXŲUѽbλ_λ_λ^λ^κ]ɶZ^YD66<>==98;CACϾνͽͼ̺ʹ˸ɷȵǵƳŲűİîíпϾϽϼμͺ͹̸˷ʶʵɴȳDzƱƯůĮíìª521 !%%%$ ##6,_>$+oǘtpĖrĖrĖrĖrĖrĖrĖrĖrĖrĖrĖrĖrĖrŖroݩ}`HƸ]ʸXƲUоcλ`λ_λ_ͺ^Ҿ^V98==<>>@?@003{yϿξͼͼ̺˸ʸɷȵǴƳŲİð­ѿпϽϼϼͻ̷̹̹ʶɵɴȳDzƱưůĮìì«Ƭyj\('(%%'#!#L4lG)2#ɕspӟwڣz֠x՟wҝuќtϙs͘p̖oɕnǔmőkĐiŽhgbҡ{|_HƸ]ʸXƲUѾdλ`μ`ϼ`ͺ_`Q88>?>?A?A.-1ξμͼ˺˹ʹȷȵǴƳűݯ­­поϽϼλͺ͹̸˷ʶʵȴȲDzƱůĮĭíëīIB? "'''&$&")& Z<#tL+5%̘upӟwڣ{֡yՠwӟvќuϛsΙq̘pʖoȔmƒkđjiÎhcҡ{|_HƸ]ʸXƲVѿdλaμaϼ`̹_aleI33=A?@A?A103Ͽνμͻ̺˹ʸɶȴǴdzűİî­пнϽμͻ̺̹ʷʶɵɴȳDzƱƯŮĭìì«êz*)+%$&'&(&"%$B4#fC&}R,8'Кvqաyۥ}أz֡xՠxӞwќtϛs͙q̘pʕoȔnƒlđkĐidҡ{|_HƸ]ʸXƳWҿeϼbϼbϻaλ`Ҿ`keI66>@?A@?B335Ͽνͼ̻̹˹ʷȵǴƴƲŰİ®¬понϼͼͺ̸̹ʷʶɴɳDzDzưůĮììëɯpb!*))&%'''((V>'nI(X-9)ћwqעzާ~ڤ{أz֡xՠwӞuќtϚsΙq̗pʕoȔmƓkǒkeѠ{|_HƸ]ʸXƳWѿeϼbϽbϼbλaн`hbI77>A@A@?B647ξνͼ̻̹ʸɷȵȴƳűİï­ѿоϽϼκͺ̹˸ʷʶɴdzDzƱưůĮ­ìªĪGA>!!$)(*'#&(60,mL*uO+^/;)Ҝxrؤ|ߩܦ}ڤ|أz֢yՠxӞvѝuЛt͙r̗pʖoȔnɔmfѠ{|_HƸ]ʸXdzXҿfϼbϼbϼbλbѾ`icJ78?A@AA@B547Ͽνͼ̺˹ʸȶȵǴŲıİï­ѿпоϼλͺͺ̸˶ʶɴȳDzDZưƯįíì«ǯv&&((())()'!%,J;2{U-U-a/;*ҝx•rڥ}᪁ݨ~ܦ}ۥ|أ{סyՠwӟwҝuϛsΙr̗pɖo˖ngѠ{|_HƸ]ɸXdzXҿgϼcϽcϼcλbѽajcK88@BABBAC436Ͼν̼˺˹ʸɶȵƳűűð®¬поϼμλ͹̹˷ʶɵɳȳDzƱŰŮîì«˲lbU",*+)')(+*3mP7^0Z/d/<*ӝy•rܧ~㬃ߩިݦ}ڥ|٣{֡yՠxӟvҝuЛtΘr̘q͗phѠ{|_HƸ]ɸXƴXҿgϼdнdмcμbҾbjdK99ABAABBD314Ͽξμ̻˹˹ɷȵǴƲűİï­ѿпϽϼͼ͹͹˷˶ʶɴȳDzƲưůĮí«ŭ0..(')**+(#'+>5;`aItEv6e0h0<+ӝy•r᫂鲇宄䬄⫂઀ިܦ~ۥ|٣{ءyՠxӞvќtӜtlѠ{|_HƸ]ɸXǴZiнeоfнdϼdӿckeL::ADBCCAD=>@MKMξͽ̻˺˸ʷȵǴƳƲİ®ѿϾмμλ͹̸˷ʶʵȴdzDzưŮư832))+--.*&)0B:EgNwTJ|6e1h0=+ӝyÕr䮅鱈谆毅㭄⬂᪀ߨݧ}ۥ}٤{עyՠxנxēnПz}_Hƹ]ʸXɶ]mhiҿhϽgitmQ88AEDECBD@?AHFHϿνμ̻˹ʸɶȵǴŲı¯онϼλͺ͹˷ʶʶʴȴƲǰ®Ϸujb#$(/./,,-+(*>oVNtTVK~6f1i0=,ӝyÖr密겉鱈簆寅䭃⪂ੀިݦ~ۤ|أz֠yآyŔoПz}`Fǹ]ȶUS̹aɷ]ʶ]ɶ]Ƴ\ѽ]~tH;:BEDECBDEDF869ξμͻ˺ʸɷȵǵŲűį®пнμλͺ͹̸˶ʵʴȳDzİ̶-,.,+---.+'+6I@PrY[ZǏM7g1i2?-ӜyÖs곊﷌촉곈豆箅䭃⬂᪀ߨݦ}ڤ{ݥ|ȗqϞybt>ǹ]gŲRǵVǵUǵUȶUɶVϼWTDBFDBEDCDFEG446Ͼνͼ̺˹ɸȵǴƳűð®ѿонϼͻ͹̸˷ʶʵȴdzƱͶYRM&&)0/1--.+'*ArYQuVUSFw5d1h5C0Ҝypު籈㮅⬄ૃުݨۧڥ~إ}ע{աzӟyўwӟxl˛wfgT,Kɻ_ʼ`ʼ`˽`̾`Ȼ^[Y羽S@?CEDFCCEEDE>=@^[[Ͼͼ̻˹ʸȶȵǴŲŰï­онϼλͺ̸˷ʶʵɴŰк|m%%)1/0.-/0*.*N<(zP0\3d5f5g6g@Ͽνͼ̺ʸɷɶǴŲıįî­онϼλ͹͹̸˷ʶdz͹203.-/0/01.0(4/ a@)yP.Z0^0_1`1`2`&V2?-jqƘtșușușușușușușușușușușușușușușuƘti׮jʛw˛wșvԡztaV:=CGEGECFHFH759ϿϾͼ̺˸ɸȶǴƳűİ®¬ѿомμͻ͹̸˷ȵ̶įLHD++-1020/0,+. T$ R?/곈oԢ|o“q˙toX@@DGEHEDGECFCADMJLϾͼ˻˹ɸȷȵdzűİî­ѿоϽμλ͹̸ʶɵԽf\X$%)323102,+-NNOyx|$$$V!⭄oɚunӞvМtƕqMIJDDGFDGEDGGGH88;Ͽμͻ˹ʹɷȵǴƲűï­пϽϼλͺ˸ɵӽyme))-423213-,.>>@nnp$$%X" 㮄oʛvɗrܥ|՟xءwm]T=@EHFHFDFGDGDDFD@@Ͽνͼ̹ʸɸȵǴƲűð­ѿпнϼλ̸˸§vj'&*323324/.0;:<|z}$$$X"㮄oʛvɘrܦ}Ԡxߦ{h>@EHFIFEGFEGHFI<;>rooпνͼ̺˹ʸȶȵƳŰİîпоϽ˹ϼzq**-435425203/./rrs$$$X"㮄oʚvʙsߨ~أz֠yަ{o_U=?EIFHGEHFDGHGI::?Ͼν̺˹ʹȶǴƳƱݯ­оͼμīƴe^Z,+0435536324/.0ooq$$$X"㮄oʚv̛tڤ{آzۤz˚tNKKEEGHFHGEHFEGGGI;88Ͼμͻ˹ʸȷǴƳűű­ппȰ«IDC)+.766667324-+.tsu$$$X"㮄pɚv͜v㬁ܦ}ܥ}עzަ|l>AFHFHHFHFEHGFHFEH>=?ξν̻˺˸ɷǴıðİȳ˵Ȳɷ_XU//2103878768/.0757}|~$$$X"㮄pɚvΜw孃ިݧ~ۥ|ףz|yc<@EHGIHFIFEHGFHGEG96:Ͽν˻ɷɷȶ˷мθdz~le_DAA/.1./2878868546.-/IHJ$$$X"㮄pɚuϞx篅ߩߩݧ~ڥ|עz}~f>AEGFHIGIFEHGFHIHK97;\WXϿξ̻ѿҿϼȹ{tPLK?=>*+0003446:9;;9:879769=;>SSU$$$X"㮄pɚuПy鱆᫁᪁ߨݧ}ۥ|֡z}hHGJCDGKHJFEHFFHIIK@>B>=AtppɻzSONIFG-,0113436779<;<<;;;9;8790/8659#!aac환$$$X"㮄pəuҠy번㬃⬂ઁߨݦ~ۥ|עzާ{ĕr\TP9>DJHIIGIGEHIGIGFI;:=BAChefŸmeb`\ZJGH//3225547879>=?=<==<<=;<:9;349//965:ZS9W4- deo曚$$%X"㮄pșuӡz宅䭄⫂ઁިݧ~ۥ}עzߧ|ќvl]@AGBBHJHIHFHGEHIHJGEH==?:9=B?Bd`a~{yĽƼȾƽ~wrrmj`\[ECD88:33655854899@?>??=>>=>=<<:9;44;01:86:OK=xDJCl;3efp瞝$$%X"㮄pșuգ|ﶋ簆篅䮄⬂ઁީݧ~ܦ}آz٣{|jcXR>AFDDHJHIGEHGEHHGIIGIFEH>=@<:><;>77:;9;MJLOMNOLMTQQWSTSOQKHJMKMKIK;8;43655977:768769=>::=55<55<22;===RN?zpEK®O͸Q͸QFk:3 fgq柞$$%X"㮄pșu֣}鱈豇毆䭄⬂ઁߩާ~ܦ}٣{ՠyަ{סw}dVPM>@EGEJIGJIGHHFHHFGIGIGGHGEHHFIFFHBADA@CB@C?>B>=@?>@@?B?>A@?ADCDECDDCDDBCDCBDBCCAA=;?87?88?77>45>44=EC?_YCg`DLOɴRкSιSɵRȴRʵSGl;3fgq柞$$%X"㮄pșuפ}겉鲈谆毅䮃᫂ઁߩݧ~ۥ}٣{ՠyסyןunjXOF>>?==HA@GAAFB@FFEHIGGHFGGFFGFFGFGFEFGFFHFFGEEFEEFEEDBD==B<>BUQFROFSPF^YGOQPUλY͹YлYҾYӾXκWɵVʶWʶVʶU˷U˷U˶U˶T˶S˷TGl;3fhq枞$$%U!ڧpǘtϟz곉⬄ᬄ߫ީܨۧ٥}ؤ|֢{աzԟyўwўwƖppəxeS.g̸QѼ`Ѿf˹c]XZT}SS|RRWVUUVǴ\ðZ͸\м\Ҿ]Կ\\ϻZ˷Z̸Y˷X˷YʶY˷X̸W̸W̷W˸V̷V˷U˷U˶T˶T˷UGl<5his㝝((({L将oգ|”qÕrÕrÕrÕrÕrÕrÖrĕrĕrĖrĖsĖrĖsĖsÕrϞx͜zze6c¯Q˹bjhiihgffeeedddcмaѽ`ϻ`λ_κ_ͺ^ͺ^λ]ϻ]λ]κ\Ϻ[κ[κZͺZͺYιY͹X͹X͹X͹W̸V͸VιVHkC:lmwڜ002V8ӡ{kԢ|֤}פ}פ}פ}פ}פ}פ}פ}֤}֤}֤}֤}֤}֤}֤}֤}ץ}Ɩv{CcMïUȵ\ǴZƳZŲZŲYŲYųXŲXŲXŲXıWıWıVñVűUŲUűTƲTŲTűTƲTűSűSűSŰRűRıQİPİQİPİPİOįOİOïNįNïMįMįMChTJstȩFFGj&  feDcdb^a``````````````````````````````b~iU>SgϾ^ǵTȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶUȶVȶUȶUȶUȶUȶUȶVȶVȶVȶVȶVȶVȶUȶVȶVȶVǶVʸXl|mbst昘蘘蘘蘘蘘蘘蘘蘘蘘蘘蘘蘘蘘蘘蘘藗獍bbdD A96U˾b˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a˽a̾cĵX8L     //0ehjlnnnnnnnnnnnnnnmpͶZX7  A*vn4|}@????????????????????????????????(0` $  }q1? E@#^(&(&(&(&(&*(*(+(*()' 6%('''(!Ǹ[Ǹ]UñNACBB?:79;ųLga<34?>>=;;<<<=<<=>>?::;ɺ]ɻeV: ZM5-:1 SG tb'k񠠩ɺ\ȻcV=!%&" /( l_uqX򪪱ɺ\ȺcV>"$,' nW:qHdN3;5_[HA}C|EEEiŹcX>ǫ%aU eQ7V|NQrH SO?^feeg[rj8ʴA#0*$[~S}RzNYG9+ WSD.W/Z0]*zQ)xP)xP)xP+yPtOZuF׺@wh|eI^WVWcO8 3/{uW0]${Nc{Ag4Vmu 0]r@FuzѥxУyФsΟf˖;x\MնA=9""hfcf~gL OEs%.ì2ì2ë1ë0ĭ16bldfffik V9l9KxزװլuΠf˖;x[MعBwi$|hOpfeikYE>6 m]0^a]^]^Y` 1]l4P{ݺ֮uϡg̖i:e8d7c7b'_aNͱD2ͳ5pc(E=4tolhkc;3+(#^Q 2]yj]c PNEDCBCBCBCADC@>q穝BꮡLIJJJIPîB45ȯ5^T' aTExomhilI?2 /)j[3^zk\d } ]_QOPNTQSQSPTQNLNK¯C˳EʲCɲAɱ@Ȱ>Ȱ>Ʈ;ª8ë76ȯ4{)muqwrikA8- >7q1Yzwpkdab m SQc`feecfdcaPNJG꽫BưDůBĮ@ĭ?ĭ>ì<ì;Ĭ:«9ë6v*"!TJ@yysaRA+$+&!bRA [N:awsuuty~eUTtrxwxwtsdbOMJH뾬CȱFƯCƯBůAŮ?ĭ>ĭ<«;Ʈ9|n,{lZ¦~y4/*%',xy{25:5-%tbL81v é0ũ*ũ*Ũ)Ĩ(ç'ȫ'A XW܄utcaOMJH뾬CȲHưEưCůBŮ@Į?ì>ɲ8421.'$}ηéC;5-/4#eWHĦpsqW A:&$#"!C VTVTPNPNOMNLMKNLvIůG<{n0QI$9440*( &rҼ­ů쪩[PDl]Nxttg/+x'&%#"!D ĴSĴRIPJKJJINIxl653'$$(KGH{rlzh`Z!!$ѻƱƱůí«ʯƫ~{xuq-)($!q''&%$"D ɺ]ZTɶWιV͸V͸U̶SιRGWP4'MIJƯʱǯ˲zpf301ɶ˶ȳƱůí«~zwt3.+{k))'&%#D Ǹ[WSȶV̸X˷VʶU̷TMPK8 *xphɴ̷­пϾνʲUPK{oĩȴɴDzůĭĬ¨}yy>74zj**)(&%D ȹ[VTɶW͸Y̸XʶVϺTkc@ +|ulȵŲƳıįƯbZTӿ˷ʶɴDzįɲ|z:41o++*)(§'E ȹ[VTɶX͹Z˷XӾYM''/`[W˺ʸʸɷȵƳıʳu˸ʶDzͷ~ "852~{51/! u!..,+)¨)E ȹ[UTɷXͺ\̸ZлY\W@--5ͽξͼ̻˹ɷǴűDz³ͺ̸ȴѻy""$ziŭy,*,,*#¨.¨-¨+*)ĩ(F ȹ[UTɷY͹]ҿ]U//3idaϾν̺ʸȵƲŰѿϽͺ˸ɵʴʳ«q#=6!5B@@@??J \ȹ[UTɷZ̹^_O%&0ξͻʹȶƳİпϼͺ˷ɴʴĮìƫwc!-"|eGܔwUpPrQrQqQxW]L3O  ȹ[TTʷZͺ``ogH109żϿͼ˹ȶƲïоλ̹ʶDzưĮ«ȮeYN!K5iء{ќvΙs˖qĐlКt~_JRȹ[TTʸ[ϼbн`VQC?>DϿͼʸȵűîϽͺ˷ɴDzůì<54-('bBiۥ|ԟvϚrʖnhʖox\GRȹ[TTʸ\ѽd̺aOLBCBGϿͻʸǴİ­пμ͹ʶȳư¬ɱs!",P>-yQkઁ٤{՟wЛtɕnЛsy\GQȹ[TTʸ\ѾeͺbSODBAFξ˺ɶƲïϽͺ˷ɴDz­̴]UL":\2Yk毄ިڤ{ՠxΚrӞvy\GQȹ[SSʹ^h̺dTQH;:?ͼʹȴű­пμ̸ʶƱ˴)#'2H=Iz3Zk볉䭃ߩڤ|ԟwעzx\FRȹ\UTɸ\ͻbbc^L218Ͼ̺ɶƲîϽͺʶƱϹ]UO&%)RqVō5]m︌貇㭃ߨ٣{٤{}_IH³VT1ǷXVL^XE33:ͼʸǴİϽκǴԾw%!'"@1.Z/`(yN浈hРz̜w˛vʚvət˚v}` ’sqYŒrm[;EB?Aξͼϼл˵̻|867002zz|t-'"vZEiiigɚumgբ{᪁}o^;>D?>A̺ic_=;B$%-BAC|{~tɚumgפ}殄ݧ~|eJHJ24:RPSüɾù¹kfdKIN009'(2444b\@{>wuq||sɚukfܩ宄ੀ嬀ƖsyfZFCC44;00:65?::C:9C77A33<017657DA:YT@xoHMRԿUIsro||~uʛvng֤}ᬄۧؤ}ӠzףzȖsP꬞][{TvRzQ}QTWYɶZѼZYտWϺU͸UGutqdĕrp?ǘtŗsŗsƗtƘtƙtsƳZѿ\^]ҿ\\\ѾZнZͺYʷXǵWƴVƴVǵUȶV±P鄂|םМћњϚ،`_`ɽfS/VFSATBUBUBUBVBVBWB´XBĵYBĶYBĶYBĶZBƷ[CõX=v(( @ "A=>>>?7Tɺ])Aܓ4뙉6隊5v/t.阉5nf6'(277644699:''()BŸb=ì6Ǭ""RH#! 81 lWmlo?UΗxƷYƹc;6!/+) _J3`[=rqt<  LM͵:i[TTP 87,ssu>-90Tk(H] -W/[3$jF ]>"`?Z>NnBū8#!w`H[UiHYV?xx{68j3c`NXƎXČK^_.#!^`vS NDXqqre_b` d+/}U0`_eyҤuΠT][/%" gd]5/ t,7886MW\Z\W aqn?m1``}ʡݷ~ѤVÏVZǩ9('s`NogwX raåJ^ffc]^8p(a`̫ۺo͡KN\ӳƪCɬAɬ?ȮA:ŭ6ƭ6 H?9ztlbH=4 pLmnbZTSRfdkikiNLnhs̷?îCį?î=:Ʈ:7KD !t^¤tbM83.DB@K@4# ";4 :bbac\ eYW“~trMLohrͷAĮEůBŮAǰ?ĭGdzѽıðDZ}q°κdzʴsbħ]QH1-),*&7kT9ɶYҾ\S435ʹ̺ɷƳȳѾȴվoeZHB<ŬũSJD@:-ƭ/ê,ǭ(:gT9ȶZa{rCYV[ν˹ȵƲоͺ̷®ƯĬ§?97D?!B쥓AAB? AS9ʷ\cVQ;Ͽ̺ȵűϽ̹˶Ʊ«ê%))AM:qlhkdO8R9̺^ϼbFC:Ͽ̺ȵİλ˷ȳí˲|i)%UsQ|٣yϚqњqpT9R9ͻ_ͺdDB:ξʸƳ­н̹ɵį˵WFCP=\`|ۧ~Ҟv՟voT9R9ͺ`hGE<ͼȶİλɵθ~0/1Dt^c驂籆ܦ}ߧ}pU;T)ɸ[XKG;wuxϾʸƲͻʷѼODB$I76nU~Wڟ{֥~џyӠyblUSS̘t|fW?AFʹŲǬqg]66:w|{|QSR+ jR~bh lpfG աyʚw>=?poqԿ˴ijld];;=dcfjiU@Ϟy筂oB?A`ae¿ö|zXUXA>:GFCaacN<.omjM=-֤}鲇讂̜wm\P=>>\%%%5QQSIJMɹ]%.fXA5bZ/WWY8%&iDD N7xaD}o%mUAmH:6.bcjnstȧR}_Ócn_R'f]L5PK!sih~z?Fy!((ʴjxԲ^wq'saNkC9*\Q à n^.964{]喨RMҸ:SKycl<31fT |]/:6ZYRywYY^ݽ<۽A-\S?iyqe]W905JD,,>igK[Y]4zn-_WGĭojfqn\Jyhϯ!1/AY'TPpg>wu̶ĮŨm[i]ͱ+,/-@S'\EѺ̷{jrapd̴*,31 ?ɹ_'ǴVzs`̼ʷ͹ͳodUpb;œ\J 'g'UvϾǴпʷαFVHhꨃ~b&iTvrjʸ­ȭt%aHt뫂h֡wowcVŷebaVVSrۧu֢{l_xyXxqPWVX|ɛvEܨӟtHH̝HȮKɵMdiikD?pgmodeler-0.9.4/apps/pgmodeler/res/windows_ico.qrc000066400000000000000000000002061416010000600222310ustar00rootroot00000000000000 IDI_ICON1 ICON DISCARDABLE "windows_ico.ico" IDI_ICON2 ICON DISCARDABLE "windows_ico1.ico"pgmodeler-0.9.4/apps/pgmodeler/res/windows_ico1.ico000066400000000000000000012615361416010000600223170ustar00rootroot00000000000000 ( V (~ 00 %(  NN h^(        !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  #((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("  ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&   *///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*   !##$$$.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333.$$$##!  "#%'(())26666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666662))(('%#"  ***':::G<<>>N''' ===&IIILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKHHH999,???,JJJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLJJJ===3<<<JJJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLJJJ999""""IIILLLLLLLLLLLLLLLJJJLLLOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPOOOMMMJJJKKKLLLLLLLLLLLLIII!!! HHH7LLLLLLLLLLLLLLLOOOjjjoooPPPKKKLLLLLLLLLLLLAAA6JJJ~LLLLLLLLLLLLMMMPPPLLLLLLLLLLLLIIIAAAKKKLLLLLLLLLLLL^^^aaaKKKLLLLLLLLLKKK+++FFF&KKKLLLLLLLLLKKKvvvxxxLLLLLLLLLLLLKKK===%HHH+KKKLLLLLLLLLKKK}}}MMMLLLLLLLLLKKK???.GGG,KKKLLLLLLLLLKKK~~~MMMLLLLLLLLLKKK???.GGG,KKKLLLLLLLLLKKK~~~MMMLLLLLLLLLKKK>>>/GGG,KKKLLLLLLLLLKKK~~~MMMLLLLLLLLLKKK>>>/GGG,KKKLLLLLLLLLKKK~~~MMMLLLLLLLLLKKK???.HHH+KKKLLLLLLLLLKKK~~~MMMLLLLLLLLLKKK@@@.HHH+KKKLLLLLLLLLKKK~~~MMMLLLLLLLLLKKK@@@-KKK*LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLKKKBBB,KKK*LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLKKKDDD+KKK)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLKKKDDD+KKK)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLKKKFFF*LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLIII(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~uuugggbbbaaa```````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabbbbbbbbbbbbbbbbbbcbbcbbcbbcbbcccdgggnnn}}}MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~~ffbUTQONKMLILLHLLHLLHLLHLLHLLHLLHLLHLLHMLIMLIMLIMLIMLIMLIMLIMLIMLIMLIMLIMLIMLIMLIMLIMMIMMINMIMMINMINMJNMJNMJNMJNMJPOLRROVVUddd|||MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ϲù|m\O|GyCyCyCyCyCyCyCyCyCyCyDyDyCyCyCyCxCwCwBvB~uB~uA~uA~uA~uA~uAvBwBwCwCxCyCyCyCyCyD{CwoBUSFVVVkkkMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~˿ʽaljlllllllllllllmmllkkiige˾eɽdɻdɻdȼdɽd̿efghjkkllnlP]XAPPQcccuuu|||zzzsssnnnjjjiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkknnnuuuMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ÎndɶUɷXɸXɸXɸXɸXɸXɸXɸXɸXɸXɸXɸXɸXɸXɷXȷWǵWŴWñUSRPMLKJJJJLNPQS²VƴWǵXȵVͻZlWZV@NOPbbbooorrriii^^^UUUQQQOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPSSSZZZmmmMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐkȶX7211100000000///.-,+(&~$x#u"s"q!p!q!s!v"z#$%'())-BdVXT>XY]ppruuvuuwoopiijcdebbc``a``a``a``a``a``a``a``a``a``a``a``a``a``a``a``a``a``a``abbc]]_QQQ```MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷZ1"""!! ~umygtcq`o^n^n_q`tcygnt|>fUWS=ppwQQR]]]}}}MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷZ1#$$##"""!!! zpygp`jZfWdVcUaS`R `RbT fWk\tc}kt~<οcTVQ6  ("D: RF UI [N eWxk*LFMI7klrNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷZ2%&&&%%$#"" r;2 5.PF UH ZMk_%Dz@IF4iioNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷY3&''%&%$##! zj)#  2+OC RG_U }u=vn9C@0efkNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷY3&&&&&%$$"!}.( ([H3_J3J<10' 4,OD XNrj7kc4>;,aafNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷY3''&&&%%##=5  C6)lG}O|NyLvLeD[H40&  ?6 VLjc2c\/:8)\]aNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷY3'(''&%%$ MC K=0xRP{L{M{L}M}M|NrJlU;9." OFg_1\V-63'YY]NNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ĐlɷY4'(((&%$#n_E8,xSR{L{MzMzMxLyK{L|LPtKaL4! <5e]/XS+31%UVYNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ÏlɷY4())'&%$+& 7,#rOR|N|O{N{N{MzLzMyLyKyK}L~N}a?.%$ ^W,XQ*1.#SSVNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ÏlɷY4())'&&$TI gHT}P|P|P|P{N{N{MzMzMzLyLyL{LOiG*" QL(ZS+0.#QQVNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~lɷY4()('&&r kV>UR~Q}Q}P|P|O|O{O{N{MzMzMyLxLzLOqY= C?"YQ*1/$QQVNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ƽlɷY4)*)'(#B9I;-VT~SS~R~R~Q~P}Q|Q|P|O{N{N{MzMyL}NyPC6)53UO)30%RRVNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~lɷY4*)('(n& pRXTT~T~S~S~R~Q}Q}P}P|P|O|O{N{M{M{MUfQ; 41WQ*52%STXNNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~qmȷX4**()&PF aO<\UUTUTTS~S~R~Q}Q}Q}P|P|O{N{N|NSlT5 63[T,74'VV[NNOZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~yyytttrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssxxx`mȷX4**))! 3+%yUYWVUUTTTT~S~S~R~Q}Q}Q}P|O{O|OWdP; 95aZ/;8*ZZ_NNNZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~kkk\\\UUUSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTUTUYXY___RmȷX5**)(dW mYE^YXWVVUUUTTTS~R~Q~Q}Q}P}PUvQ6,#B?#kc4@<,__dNNNZZZ{{{MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~ewnPbYDVL>OG;NE;MD;NE;NE;NEBHE4iioOOO\\\|||MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~p8l5d6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f5e5d;p6f4NBsAnȶX5,ª,)>6C7-d]\\\[[ZZYYXXXXWYs\D*"'" s/XNQN:mnt[[\hhhMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~=o6h9gExG|G{G{G{G{G{G{G{G{G{G{G{G{G{G{G{G{G{G{H|Cv6e8m5f3NBtAnȶW6,Ƭ-#&! `O=b_^]\]\\\[ZYYYX[s]E o`8´]QTP;oovgggtttMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~=o6i>nRUƌTċTċTċTċTċTċTċSċTċTċTċTċTċTċTċTċTċTċUƌM9i8m5f3NBtAnȶW6-ʰ/o oTd`_^^]\]\\\[ZY[sS' k[;ɻaTTO;novqqq}}}MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~=o6i@oWZǏYŎYŎYŎYŎYŎYŎYŎXŎYŎYŎYŎYĎYŎYŎYŎYŎYŎYōXƍN9i8m5f3NBtAnȶW6-ū/dW3*!`c```_^]]]]\\[Z\`N; .(iZy<̾cSRN9nnurrs}}}MMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~=o6iBpZ^Ȓ]Ƒ]Ƒ]Ƒ]Ǒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ]Ƒ[ŏWŎN9i8m5f3NBtAnȶW6ƭ/+C:J>5ccaa```_^^^]]\\[E:0 4- \Oter;ɺaQQL7lmskkkqrr}}~yzzvwwuvvuvvuvvuvvuvvuvvtuutuutuutuutuutuutuutuutuutuutuusttstttuuxxxMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLLLLKKK~~~=o7iEr_đcʖbȔbȔbȔbɔbȔbȔbȔbȔbȔbȔbȔbȔbȔbȔbȔbȔaǓ[ƏWƍN9i8m5f3NBtAnȶW6Ǯ/*=5YJ9edcbbaa```__^]^[@6-/( VJ]PgYxgv7\OLH5NOXjksmmsnntnovnovnovnovnovnovnovnovnovnovnovnovnovnovnovoovoovoovoovoovoovoovoovoowdejYYZdeestt|}}z{|pqqcde\]]XYYVWWVWWVWWVWWVWWVWWVWWVWWVWWVWWVWWVWWUVWUVWUVWUVWUVWUVVUVVWXXZ[[bccuuuMMMLLLLLLLLLLLLJJJ(LLL)LLLLLLLLLMMMLLL~~~=o6iFtdƔh̙fʗfʗgʗgʗgʗgʗfʗgʗgʗgʗfʗgʗfʗfʗgʗdɖ`Ǔ[ŏWōN9i8m5f3NBtAnȶW6Ȯ0*?7 `N9fedccbbaaa``_^^^MA5+%QGVJ^Pl\zi2UIYR/FB2LH6OJ9PL:RNUe>Ue>Ue>Ue>Ue>Ue>Ue>Ue>Ue>Ue>Ue=Ud=Ud=Ud=Ud=Ud=Ud=Ud=Ue@WgEU_PSUfffMMMLLLLLLLLLLLLJJJ(LLL)MMMMMMMMMMMMLLL~~~=o6iHuiǖnΜl̚l˚k˚l˚k˚k˚l˚l˚l̚k̚l̚l˚l̚l˚iʙdɖ_ǒ[ŏWōN9i8m5f3NBtAnȶW6Ȯ0+?7 gU?gfdddccbba`a``_anZD B9 THVK_Sj\|o+LTMNPSTUUUUUUUUUUUUUUUUUUUUUVVT=KURNmssrqppppppppppppppppppppqiNHU]__^MMMLLLLLLLLLLLLJJJ(LLL)MMMMMMMMMMMMLLL=o6iIvmɚrϠq͞q͞p͞p͞p͝p͞q͞q͞q͞p͞q͞p͞p͞n̜jʙeɖ`ǒ[ŏWōN9i8m5f3NBtAnȶW6Ȯ1+=6 `P>hgeeeddccbaaa`_bxX(! J@SHVJ]Qk_$y SHVK_Rk\zix$FnKFQM_lo~zvsolhd`\XQj^DR\\\[~~~MMMLLLLLLLLLLLLJJJ(UUU)UUUUUUUUUUUUTTT|h=g=g=g;g:f:e9e9d8c7c7c6c6b4`3`8n:kMh\RmȶX9«555©44ª33ª3ͳ5'# F;0lsqpponmmmmlkjiihhgfeghzeQ% D;RGVJ_Rm^m}%FnKFQM_mt~zwrnkhd`\XRj^DR\\\[~~~MMMLLLLLLLLLLLLJJJ(UUU)UUUUUUVVVVVVUUU|||zzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{||||||||||||||||||\qttppponnmmllkjiiiigfegiuX90(D;SGVJaSp`o%EnKFQM_mu~zwrnkgd`\XQj^DR\\\[~~~MMMLLLLLLLLLLLLJJJ(UUU)VVVVVVVVVVVVUUUqqrddc]]\ZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ^^]_a`Kq_9eWM{HmȶX:«6ª6ª5454433Ʈ4ʱ4vg  gXGusqppponmlllkjjiihggfej_N@3  I? SHXLcVscr%EnKFQM_mx~zwrnkhd`\XQj^DR\\\[~~~MMMLLLLLLLLLLLLJJJ(UUU)VVVWWWWWWWWWVVVss{YYaIIQBAJ?>G>>F>>F>>F>>F>>F>>F>>F>>F>>F??G??G??G??G??G??G??G??G??G??GBBKHILOXPUfVZj\Zj\ScTIYKBQD=M?;K??B@>@>@>@>@>@>@>@=@>@>@>@>@>@=@=@>@>@>A>?=53VTcb76[tl9cϽ[B@AAA@@@@?????>?>>>>=======<<=;ë8«7ë7ê7ê6ª6ª6«6ª6ª54422Ĭ3t#% f{uttsrqqpponmlllkjiihgfghaRD I@ XL\NhYziy%DmLFPN_n{xtqlhea\XQjeXfoponMMMLLLLLLLLLLLLJJJ(XXX)YYYYYYYYYYYYXXXfeXV:8LJOMNLNLNLNLNLNLNLNKNLNLNLNLNLNKNKNLNLNLOMMJ97VTba66[tl9cϽ\Bí@ůAůAŮAŮ@Ů@Į@Į@Į?Į?Į?Į>ĭ>ĭ=ĭ=ĭ=ì<í<í<ì;ì;ì;ì:ì:ì:ë9ë9ë9ë8¬8«8«7¬7ê7ª6ê6ª6«6ª5ª544200,E=bTDzwtutsrqpppoommmlkjihhgfhiYK= '#RGWK_Rn_n$DmKEOM_ly~zxurolifc`]ZWSNhicpz{zyMMMLLLLLLLLLLLLJJJ(YYY)YYYYYYYYYZZZYYYfeXV;:ROURTQSQSQTQTQTQSQSQTQTQTQTQTQTQSQSQTQTQTROL98VTba66[tl9cϽ\CĮAưBƯAƯAƯAƯAƯ@ƮAů?ů@Ů?Ů?Į?ĭ>ŭ=Ů=ŭ>Į<í=ĭ<Ĭ<ì<ì;ĭ:ĭ;Ĭ:Ĭ:ì9ì9ë8ì9¬8«7ë7«7ë7ª6«654531/-*J@<3,pzuuttssqqpppnmllllkjhiigidE:04- UIYMdVuew$ClJCMK]thomlkjjjigggffdccbbaa_]ukgu~~MMMLLLLLLLLLLLLJJJ(YYY)ZZZZZZZZZZZZYYYfeXV=;WUYWXVXVXVXVXVYVXVXVXVXVXVXVXVXVXVXVYVXVUSOL98VTba66[tl9cϽ\CĮAưBŰBůBƯBƯAůAŮAů@ů@Ů@Ů@Į>ĭ>ĭ>ŭ>Ů>Į=ĭ=ĭ=ĭ<ĭ;í;ì;í:Ĭ:ĭ:ì:ì:ī9ì8ë9ë8¬7ë7«7ë7ê65442/-~&UK/)%n|vvttttrqqqpppoprsrtuspmkl}_.'"D;WK]Pk\}l~#BkI@LJZgcq{xwwMMMLLLLLLLLLLLLJJJ(YYY)ZZZZZZZZZZZZZZZfdWU><[Y]\][][][]Z]Z][][][][][][][][]Z]Z][\[YWVSOL98VTba66[tl9cϽ\CĮAưCƯCŰBƯBƯBůBůAƮAƯ@ů@ů?Ư?Ʈ?Ů>Į>ŭ>ĭ=Į=Ů=ĭ<ĭ<Į<ĭ;ì;í;Ĭ;ī:ë9ì9ì9ë8ë9¬9«7ë7ª7ª65420.x%:3 E;0t|wwuuutssqqstvtg{_nUydKwcOtcTubOzeKmR{]krlS'"SGYLbTsdu!@jJ@EDG|hnnooooooooooooooooooooonohQVclkjjMMMLLLLLLLLLLLLJJJ(ZZZ)[[[[[[[[[[[[ZZZfdVU?>`]c`a`a`b`b_b_b`b`b`b_b`b_b`b`b_b_a^^[YWUSOL98VTba66[tl9cϽ\CůBǰDƯCƯBůCŰBŰAưAƮ@ůAŮAŮ@ů@Ů?Į?Į?ĭ>Ů=Ů=ŭ=Ů=Į=ĭ<Ĭ<Ĭ;ì;í;ĭ;í;ī9Ĭ9ì9ë9ì9¬8«766430-v%70r]~zxxwvvuttvxvgvdPRF96.%$  +$J=1zdMigUC  =5 WK[Oi\}l|>iKD@45ET8Qb;Qc=Se>Uf>Uf>Uf>Uf>Uf>Uf>Tf>Tf>Tf>Tf>Tf>Tf>Tf>Tf>Tf>Tf>Tf>Tf>Te>Te>Te>Te>Teĭ>ĭ>Ů=ĭ=ĭ=ĭ=ĭ<ĭ<Ĭ<Ĭ;ì;Ĭ;ì:Ĭ:ì9ì9«9«876530.u%60tcT~|yyyxwwvuzyg[N?+$  mZDd<2(NDYMbUtdt:ȻfV@@?ABBBBBBBBBBBBBBBBBBBBBBBB@|>\WCTTUsssMMMLLLLLLLLLLLLJJJ([[[)\\\\\\\\\\\\[[[fdVTBAihlkkikikikikjkilikikikikjkjljkigfb`]\YWUROL98VTba66[tl9cϽ\CůCǰDƯDǰCůBưBưBůBƯAƯAƯ@ůAŮ@ů@Ů?Ů@Ů?Į>Ů>ĭ>Ů>ĭ=ĭ=ĭ<ĭ=Ĭ<ĭ;ì;Ĭ;ĭ;Ĭ:Ĭ:ì9ì977631-qc-(  =5.zd~}{{zyxxxw}tbTF"w]oW91 WK]Pk\|l7^mmpqqqqqqqqqqqqqqqqqqqqqqqqrptǸ]gaARRTqqqMMMLLLLLLLLLLLLJJJ([[[)\\\\\\\\\\\\\\\fdVTCBmlqppnpnpnpnpnpnpnpnpnpnpopoonljgfb`]\YWUSOL98VTba66[tl9cϽ\CůCǰDǰDǰDưCǯBƯCƯCůAƯAůAůAůAŮ@Ů@ů@Į?Į?Į?ĭ>ŭ>ĭ=ĭ=ŭ=Į<Ĭ;Ĭ;í;ĭ;í;ĭ:Ĭ:ì9ë88742.na`SFy~|||{zyxy}jF<2 bRBnRC7NDYNdVte{2CLOQðRðRñRðRðRðRðRðRðRðRðRñRñRñRñRñRñRñRñRñRñRñRñRñRðRİPjŸbd^@PPRpppMMMLLLLLLLLLLLLJJJ(\\\)]]]]]]]]]]]]\\\fdVSECsqwtususututusustsusususvstrqoljgeca^\YWUSOL98VTba66[tl9cϽ\CůCDZEƱDƱDǰDƯDưDưCŰCŰCŰBƯBƯAůAƯAƯ@Ů@Ů@Ů@Ů?Į?ĭ>Į>Ů=Į=ŭ<ĭ<ĭ<ĭ<ĭ<ĭ;ì:«:8742,_T-&!q^§~~}}}|{z~i90( $$$CBB[[[sssxxxssstttnnn///QD6m{]'!80 VK_Rn_p!&(*++,,+,++****)))))((((((('(9eƹbd^@OPQoooMMMLLLLLLLLLLLLJJJ(]]])]]]]]]]]]^^^]]]fdUSFEvu{yzxzxzxzxzxzxyxzxzxzxywvuqomjgec`^[YWUSOM98VTba66[tl9cϽ\DůDDZFǰEDZEǰEǰDưCưCƯCưCưCŰBůAƯAů@ů@Ů@ů?ů?ů?ů?ĭ?Ů?ĭ>Ů>ĭ=Į=ĭ=ĭ=Ĭ;Ĭ;«;:852,MC E<4pĩ~~}||~xI>5III@@@ eUElnhWCQFZNgY{j}9gƹbd^@OPQoooMMMLLLLLLLLLLLLJJJ(]]])^^^^^^^^^^^^]]]fdUSGF{z~~}~|~|~}~}~}~}~}~}~|{yvtqoljgec`^[YWUSOM98VTba66[tl9cϽ\DůEDZFưFƱEDZEDZDǰDưDưCƯBƯCưCƯBůAůAƯAů@Ů@ů@Ů@į?Ů>Į?Ů?ŭ>Į>Į=ŭ=ŭ=í;ì;«;964.KC cVJū~~}~{hT 999ppp!v[kma0) A8 YMbTsdx """"""!!! :gƹbd^@OPQoooMMMLLLLLLLLLLLLJJJ(]]])^^^^^^^^^^^^^^^fdTSIH~{yvtqnkjgeb`^\YWUSNL98VTba66[tl9cϽ\DůEDZFDZFǰFƱDDZDDZEưDưDǯCưCƯCưBůBŮAƯBů@Ů@Ů@Ů?į@ů?į?Į?ĭ>Į>Ů>Ů=ŭ=í;¬;:650NC  xiWĪ~LB8III^OAljjnfUD  ,% WK^Qm_q "#""#"!!! ! :gƹbd^@OPQoooMMMLLLLLLLLLLLLJJJ(^^^)____________^^^fdTRKI}zyvtqokjgec`^[YVUSOL98VTba66[tl9cϽ\DŰEDZFƱFƱFǰFDZEƱDDZEǰDưCưDưCưBƯCưBŰAƯBƮAŮ@Ů@Ʈ@ů@į@Ů?Ů?ĭ>Ů>Ů=ĭ=«<;960OF )$ yfūīv3,'"""3+$gojil~b*$ J@[OhZ|k"""####""!! ! :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(___)_______________fdTRLK}zyutqokjgec`][YVUSNL98VTba66[tl9cϽ\DŰEDzGƱGDZFƱFưEưEƱEưDưCưDǰCƯCưCŰBŰBƯBůAƯAƯ@Ư@Ů@Į?į@Ů?Į?Ů>ĭ>ì=<984[P /)%pȮêi& III#sYqklkkkTG8 =4 [NcUufz"####"#"""!! ! :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(___)___`````````___fdSQML}zyutqoljgeb`^[YWUSOL98VTba66[tl9cϽ\DŰFȲGDzFDzFƱFDZFDZFǰEƱEƱDưCǰDưDƯCƯBŰBůAƯAůAůAƯ@Ů@Ů@ů@Į@ŭ?Į>ĭ>=;:7vh% ;3-sɰêl("HGH{iVvnmlljmpU,& UJ_Spat!#####""""!"!! :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(___)```````````````fdSQNM}zyvtqoljgeba^\YWUSOM98VTba66[tl9cϽ\EŰGȲGȲGDzGDZGƱFƱEưFDZEDZEǰDưDǰCǰCưCƯCưBůBƯBůAƮAůAů@ů@ů@Ů?ĭ>í==;7~o'" D;3~ʱª{81+)))!!!saNuqnnmljmh90'MC]Qk\o!##$$####"""" ! :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(```)``````aaaaaa```fdSQPO}zxvtqoljheb`]\YWUSOL98VTba66[tl9cϽ\EŰGȲHȲHȱGDzFDZFDZFǰEǰEDZDDZEDZDǰCưCưCƯCưCƯBƯAƯBŮAů@Ů@Ů?Ů?ĭ?í>><:z+'" A92ʲëJ@7---n]KtrponmmljllZG D: \OfYzj} #$#$$$#""#"!!!!  :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(aaa)aaaaaaaaabbbaaafdSQPO}zyvtqokjgeb`^\YWUSOM98VTca66[tl9cϽ\EűGȳHȱHDZHȲGDzGDZFDZFƱEǰFDZEDZEưDưCƯCůBĮBĮBĭBŭAĭ@ì@ì?ì?ì?«>><<2?8<5-~̴Ĭª¨k[M RRR999 jZHuuqqqpnmlkow[3- XLcVufy #$$$$$$###""!"!!   :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(aaa)aaabbbbbbbbbaaafdRPRQ}zyutqokjgeb`^\YWUSOL98VTca77[vn:cν\EƱGȲHDzHȲHȱHȲGDZGDZFDZFDZFưEưEůDůCįCĮB¬BAA@@?>>><<;8YN 2,'z͵Į¬««ªèq&!SSS dUFvwsrqqqonmlmg;3,$SH`Spau"$%%%%$#$##""!"!!  :gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(aaa)bbbbbbbbbbbbbbbfdRPSR}zyvtqokjgeb`^\YWTSNM98VTcb::^yq=cν\EƱGȲIDzIDzHȱHȲHDzGDZGDZFưEůEįEíDCBA@?>=<;:::998ma#.(&y͵Ưìí¬ì««ªTI?###zyy  ZNDxxutsrqqponmlq`Q@OD^Rm^q#$$%%%$#####"""" ! !:gƹbd^@OOQnnnMMMLLLLLLLLLLLLJJJ(aaa)bbbbbbccccccbbbfdQPVU|{wvrpmlhfca_]ZXVSOM98VTcb@@dvCdν[FűHȲIȲHȲIȲHDZGƱGƱGůEĮE­DCBA?=;:987555434{m( "tζȱĮĮĭì¬ë«ªĩq)%! FFFG=6v|vuttsrqpponlr|hQ B9 \Oi[~m#$%$%%%$$$#"##"!!!! !:gƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(bbb)cccccccccccccccfdQOWV}{xvsqnligda_\ZXVSOM97VTcbGFk}Jdͽ[FƱHȳJȲIDzHƱHưGİFĮEDCB@><97431~0{/y.w-w-v,y-q*1+rb̶ɳůůŮĮîííìì««¨wgX /)$l}xwwuutsrpqpomo{_*# 7/ ZNfYzj~"$%&&%&$$$###"##"!"!! ":gƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(ccc)cccdddddddddcccfdTR??gfhgedcba_^]\\ZYXWVTTSRPPNMLLJJHHFEDCBA@@><:20UScbKKpNdͽ[FƱHȲIDzIDZHůGîGFDB?=:852{/u-q,}o+zl)wi(tg'sf&re&re%sf&E> g\RDz̶ŰƯůůůĮĮĭí¬ì¬«©¨dVI s^zxxxvuutsqqqpnnnB8.*# YLcUvf{!$%%&&&%%$#$###""""!! ":gƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(ccc)ddddddddddddccchffeIHHFIGIGIGJHJIKIKIKIKJLJLJLJLKMKMKMKMLNLNLNLNLMKfdfeJJoLdͽ[FưHȲJƱIįHFEC@<963{0s.|n+xl*sg(k`%cX"aV!_U ]S\R\QaV!MDMD>ϹƲƲŰưưůůĮĮĭíì¬ë¨n_RtdV}zyyxwvutsrqqqonqWI;!VKaSscx!$%%&'&%%%$$$###"""!! ":gƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(ccc)dddddddddeeedddUTgfdbfdfefegfgfhfgfgfgfgfgfgfgfgfgfgfgfgfgfgfgfgfgelkUUA@jyFdͽ[EŰHŰJ®HFD@=:5~2w0~q,re)cW"VLH@D=72'#%! &! %! %! %! -( 60,ѺȳDzDzƱưŰůůůĮĮĭí쬫«ªziJ@9&""@70t_~|{zyxwvuutsrqqpopl[I KA_Roat!$&&&&&%&%%%$#####""! !":gƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(eee)eeeeeeeeeeeeeeettddSSFF{>>s::o88m88n88n88n88n88n88n88n88n88n88n88n88n88n88n88n88n88o33n88Owo@;cͻ[E­GHEB>:7}3s.vi*[Q B;0* sѼʵȳdzȲDzƲƲƱŰƯůůĮįĮíí¬¬«ªrzdm~~}||{zzxxwvutsrqqqrkS C:^Rm^r!$&'''''&%%&%$$$#"""""! #;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(fff)eeefffffffffeeeſu]vpKkd?e_9c\7c\7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7c]7d^9d]:D̾d˹ZDFEA<95~p-fZ%C;*%aUJιкɴɳȳȳȲDzDzDzƱŰŰůŮįĮĮĭì¬ë«~~}||{zyxxwvttsrqqrf'! <3 ^Qj\p $&&''''&&&%%%%%####""" #;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(fff)ffffffffffffeeeŝƹd̿gʽeȻbƸ`ķ^Ķ^Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ]Ķ^Ķ]µ\ǹakIJVAB?:6xk-XN -) %!/+&<6093.,'#\RIıмɵʴɴɴȳȳȲDzDzƲƱưůůůįĭíì¬ì«ª~|||{yxyxwuttsqqsm1)!2* ^QhZ~n $&'''''&&&%%%$%$$####"!$;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(fff)fffffffffgggfff˜iiп__`````````````a``aaa```п_̽]ŴXH=>:u1WN (#  *&#QIBth^yðȵǵyXOG mbWɵкʵʵɵɴɳȳdzDzƲƱƱưƯůůĮĭíìì뫪}}}|zyxxxvuttrqsm9/%0* ]QgY}l $&('(('''&&&&%%$$$$"##!$;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(fff)fffgggggggggfffÛkͽ\HJKKJJJJJJJJJJJJIIIIIHHGFDA<:~5bW%1, NGAwjϼŮĭŭŭĬĬĬŭͺu0+(|oҽ͹ɶʶɴɳɳȳDzDzDzƲűưƯůůĮĭĭì«ë«ª~}}}{zyxxwvutsrrpL@8)$ XLfY|k $'(()((('&&&%&%%%$####!$;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(fff)gggggghhhhhhgggÛjʺZHƲPȵSȴRȴRȴQȳQdzPȳQȳPdzODzODzODzODzOƱODzNƱNƱNűMƱLŰLİK®JHEA75/+ԿʷʶʶʵɵɴȳȳȳdzƲƲƱŰŰůůĮĮìì¬ì}}|{zyxxwvttssr\OD PFgYzi~ $'((()((''&&'&%%%%$#$#"$;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(fff)ggghhhhhhhhhgggÛj˺ZKʶU͹X̸W̸W̸V̷V̸U̷U̷U̷T˷T˷T˶S˷S˷S˶R˶R˶RʶR˶PɴPdzO®MIF?oc+)$VNHμɳǰ«ϾϾпϾоϽнϼϽλѿɰC<6cYO͹лʶʶʵɵʵɴɳȳȳDzDzƲƱưƯůůĮíí쬫ªª~~}|{zyywvutttrbQ? NDfYxh} $()())(((('''&&&%%$$$#"%;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(hhh)hhhhhhhhhhhhhhhÛj˺ZKɵU̸W˸W˸V̷V˷U˷U˷U˷U̶T˷S˷SʶSʶS˶S˶R˵QʶRʵQɴOdzO¯NJF8}ϽʴDz­ѿппопоϾнϽϼλѿɰ2,)!̸ʶʶʶʵʴɴɴȳȳDzDzDZƱŰůůįĮĭìì쫪~}}|{zyxwvutusfU@ ODeXvg| %')())()('(''&&&%%%$$$"%;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(hhh)hhhiiiiiiiiihhhÛj˺ZKɶU̸X̷W̸V˸V̷V̷U̷V̷U̷U˶T˷TʶSʶSʶS˶R˶RʶRʵQȳOŰNKH>NE"vlcó˵ȲîѿѿѿпопоϾϽϼμƯ{^TLλѽ˷˷˷ʶɵʵɴɴȳȲȲDzƲŰưůůĮĮĭì¬ë«ª}}|{zxyxwuttvq_K NDdWuez$')))*)((('('''&%%%$$$#%;fƹbc^@NOPnnnMMMLLLLLLLLLLLLJJJ(hhh)iiiiiijjjjjjiiiÛj˺ZKʶV͹X̸W̷W̸W̸V˸V̸U̷V̷U˷U˶U˶T˷T˷TʶSʶRʵRȴQűOLJ?KB @:6dz˷Ű®­­­­ѿѿппϾонϼª«yma $ ͹˸˷˷ʶʶɵʵɴȴȳȳȳƲƱưŰůįĮĮí¬ìì~}}}|zyxxvuuwyfS MCdWtez $(*****)(()'''''&%%%%$$&;fƹbd^@NNPmmmMMMLLLLLLLLLLLLJJJ(hhh)iiijjjjjjjjjiiiÛj˺ZKʶV͹Y̸X̷X̷W̸W̷V˸V˷U˷V̷U˷T˶U˶T˷S˶SʶRʵRƲQOLDNF  ZSM͸ɴŰİİİïïî®î­ѿппϾонĭ˸WOH uj^ϼ̸̹˷ʶʶʶɶɵɴɳȳȳDzDZƱưŰůůĮíììì«~}||{zyywvuxlX E=eXte{ %(***+))))((('(&&&&%%%$&;fƹbd^@NNPmmmMMMLLLLLLLLLLLLJJJ(jjj)jjjjjjjjjjjjjjjÛj˺ZKʶV͹Y̹X̸W̷W̷X̷W˸V˷V˷V̷U̷U˷T˷T̷T˶SʵSȳRðPOGYO# of]̼ϻȴűűıűŰİİðïï®­­­¬ѿппоϽоȰ.*%@:4͹̹˸˷˷ʷʶʵʴɴȴȳdzDzƱƱŰƯůĮĮĭ쬫ªª~}}{zyywvuymZA9gYuf{!&(***+****))(((&''&&&%$&;fƹbd^@NNPmmmMMMLLLLLLLLLLLLJJJ(jjj)jjjkkkkkkkkkjjjÛj˺ZKʶV͹Y̹X̸X̷X̷X̷V˷V˸W̸V̷V̷U˷U˷U˷UʶSɵSŲQðOH]T& wmǴϺdzƳƳŲŲűűűıİİİïî®®­¬¬ппоϾsgwĬͻ̸̸̹˷˷ʶɵʵɵɴȴȳȲDzDzűŰůůĮĭííë««~}|{zyxwvy}kXB9h[xi}!&)+*+++**)*())(''&&&&%$&;fƹbd^@NNPmmmLLLLLLLLLLLLLLLJJJ(jjj)kkkkkkkkklllkkkÛi˺ZLʶW͹Z̸X̸Y̸X̸W̸X̸W˸W˸W˸V˷V̷U̸UʷUʵSdzRűQNod.{qʸκǵǴȵȵǴƴƳƳƲŲűűıİİİðï®­­­ѿѿϾ«ñKC=cZQͺҿ͹̸̸̸̺˷˷ʶʶʵʵȳȳDzDzDZƱưưůįĮĮì¬ì«~}|{zxxwy{hU C:i\zk"'*+++,****)*))(('('&&&%' sjbɷѾɸɷɷȶɶɶȵȵȵȴǵǴƴƳƳƲűűŰŰİïï®­­­ѿооi_V~Ĭϼͻ̺̹͹̸˸˷ʶʶɶʵɴɳȳDzDzDzƱưůůįíììɲʲǯǮ}}|{yyyzudP NCj\}l$'*,,,,,++*+**))((((('&&(6-s_Ǯ~}}|zyzyjYF RGj]~m$(+,,,-++++*+***(((('''&(a]NlgVlfUd^MZUCTO=RL;QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:QL:SNT8F2;61v]Оyӡ{إ~٦ۧܨܨܨܨܨܨܨܨܨܨܨܨܨܨܨܨܨܨܨܨݩߪqZIHH```LLLLLLLLLLLLLLLJJJ(ttt)tttttttttttttttši˺ZN̹^ϼaμ_μ_λ_λ_κ^λ^̹]ѽ_S=7Ͽξνͽͽͼ̺˺˹ʸʷȷȶȵǴǴƳŲűİðîîѾϾϽϼμλͻͺ̸̹˸˷ʶʵɵɴȴȳDzƲƱŰůůĮĭ¬ì«ª§u.)% Z=H5<82y_ΝxnmoonnnonnnnooooooooooonʚvۨoYGFF^^^LLLLLLLLLLLLLLLJJJ(ttt)ttttttuuuuuutttši˺ZN̹]ϼaϻ`ϼ`ϼ`μ_κ_λ^͹]Կ`L!*'%ƻϿξννͼ̻̻˹˸˸ɷȶȶȵǴƳƲűıİįî­ѿоϾнϼμλͺ͹̸˸˸˷ʶɵɵɴȳDzDzDzƱůůĮĮì«««Īj /!aAL7>;4}aΝxi‘nɘrƖqŕpŔoēnÓm’l‘lkkjiihggfeedcc•rۧoYGFE]]]LLLLLLLLLLLLLLLJJJ(ttt)uuuuuuuuuuuuuuuši˺ZN̹]ϼaλ`ϻ`ϻ_λ_λ_ͻ^λ^м^{= B=;ʾϿϾξͽͼ̻̺˹ʸʸɷɶȶǴǴƳŲűŰİï®­ѿпϿϾнϼλλͺ̸̹̹˷ʶʶʵɴɴȳDzDzƱƯůůĮí¬ì«rbT?*$iFO9A=6dПzkЛvڣ{סy֠x՟vӞuќtЛsϚrΙq̗q˖oʕnȔmǓlőjđjÏiŽgfedcÕrڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(ttt)uuuvvvvvvvvvuuu™i˺ZN̹^ϼbϻaϼ`λ`ϻ`ϼ_λ_ϼ_˸\od2 [TRϿϾνμͼ̻˹ʸʹʸɷȵǵȵǴŲűŰİ¯í­¬ѿппϾϼϼμͻ͹͹̹˸˷ʶʶɵʴȳȳDzDzŰưůůíí¬ìE<4 J2&oK"Tkפ~mաzߩۥ}ڤ|٤{أz֡yՠxԟwӞvќuЛtϚsΚr͙q˗pʖoɕnȔmƒlŒkŐjg•rڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(www)wwwxxxxxxxxxxxx™i˺ZOͺ`нcмbнbϽbϽbϼaϻ`ҿb|@ Ͼνͼͼ̻̺˹˸ʸɷȵǵǴǴŲıűİ®¬ѿонϽμλͺ̹͹̸˸˷ʶʵɴɳȳDzDzƱŰůįĮĭ¬ì«ªȯqcT  I3+lK)sM1_*gKIF?kפ~m֢z᪀ݦ~ۥ}ڤ|٣{עy֡yՠxԟwҝuќuЛtϚsΙs̘q˗pʖoɕnǓmƓlƒkg”rڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(www)xxxxxxxxxxxxxxx™i˺ZOͺ`нdнcнcϼbнbϼaλaҿb~A пϾνͽͼ̻˹ʹʸɸȶȵȵǴŲűŰݯ­­ѿоϾнϼλλͺ͹̹˹˷˶ʶɵɴȳDzDzƱưŰįůĮí쫪ƮE<5 +dG-rO+zQ3b+jMJG?kפ~mף{⫁ިݧ}ۦ}ۤ|٣zעyסyՠx՞vӝvќuМtϛs͙r̘q˗pʖoȔnǓmǓlh”qڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(www)xxxxxxyyyyyyxxx™i˺ZOͺaнdϽdϼcнbнbϼbϼbcB ξνμͼ˺˹˹ʸɶɶȵǴƳŲűűİ®­ѿпϿϾϼμλͻ̹͹̹˸˶ʶɵɴɴȳDzDzƱŰůůĮ쬫«˳n/!3wU0yU-V5e-mNJG?kפ~mף|㬂ߩާ~ܧ~ܦ}ڤ{٣{آz֡yԟwԞwҝvѝuМtϚr͙r̘q̗pʕoȔnȓmh”qڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(xxx)yyyyyyyyyyyyyyy™i˺ZOͺaоdнdмdϼcнbϼbϼbӿcB  Ͼνμͼ̻˺˹˹ɷȶȵȵƳƲűűðî­­пооϼϼλλͺ͹͹̸ʶʶʶɵɴȳDzƲƱƯůįĮí¬ì«Ŭŭg[M &W>8^3Y.Z6h-nOJH?lפ~mؤ|䭃઀ߨިݧ}ۥ|٤|أ{עyՠy՟wԞwҝvќuЛsΚr͙r͘q˖oɕoɔnh”qڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(yyy)yyyzzzzzzzzzyyyi˺ZOͺaѾeнdмdϽdнcнcϼbӿcB ϾϽνͼ̻˺˹ʸɷȶȶȴƳŲűŰïî­¬ѿѿонϽϼμͺ̺͹̹˸ʶʶʵɵȳȳDzDzŰƯůĮíììëªʱ.)#$3qQ=d5^0\7j.pQKH@lפ~mڦ~殅⫂᪁઀ߩݧ}ۦ}ڥ|٣{ףyסy֠xԟwӞvќuМtϚsΙr̘q˗p˖oi”qڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(yyy)zzzzzzzzzzzzzzzi˺Z®PͻbоeмeнdнcϼcнcмcӿdB ξνͼ̼̺˺˹ʸɷɶȵǴƳŲŰİï®­ѿпϾнϽϼͻͺ͹̸̹˶ʶʶɵȳȳdzƲƱưůůíĭì«Ŭɰ|l^  F2;^@j9d2`8l.qRKH@lפ~mۦ~诅㬃⬂᪁઀ިݧ~ܦ}ڤ|ؤ{آz֡yՠxԟwӝuѝuЛtКsΙr͘q̘pj”qڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(yyy)zzzzzz{{{{{{zzzi˺Z®PͻbоfнeнdϽdϽcнcмcdC ~zϿϾͼͼ̻˺˹˹ʸɶȵǵǴƲűİïî­ѿϾнϼμλͺ̹͹˸˷ʶʶʵɳȳDzDzƱŰưůĮĭí¬ɱ?72 .dI@gDq;i3b8m.qRKH@lפ}mܧ鰆䭄㬃⫂᪁ߩިܧ}ۥ}٥|٣{آz֡y֠xԞvӞvҝuќtϚrΙqΙqjqڧoYGFE]]]LLLLLLLLLLLLLLLJJJ(zzz)zzz{{{{{{{{{{{{i˺ZPͻbѾfѾeоeоeоdнcмcdC qmiονμͼ̻˹ʸʸɷȵȴǵƳƲİİï®ѿпоϽϼμͻ͹͹̹˷˶ʶʵɴȳȳDzƱŰƯůĮíìŮʹzh;+>^DlIw>m4d9n.qRKH@lפ}mܩ겇宄䭄㬃⫂઀ߩިܧ~ۥ|ڤ|٣zآzסy֟wԞwӞvќuЛsϚrϚrkrڧoYGFE]]]LLLLLLLLLLLLLLLJJJ({{{){{{{{{||||||{{{i˺ZPμcѿgнfоfоeнeоcнceC [WTϾννͼ̺˹ʸʸɶȵȵǴųűİïîпонϼμλͻ̺͹̸˷ʶɶɵɴȳȳDzƱŰƯŮĮíɳJ@8 1dKDiHtL|@o5f9o.rRKH@lפ}mު봉簆毅宅䭄⬂᫁઀ީܧ~ۥ~ۥ|ڤ{٣{סyՠxԟwӞwҜuќtМslrڦoYGFE]]]LLLLLLLLLLLLLLLJJJ({{{){{{||||||||||||i˺Z®PλcѾgнeнfоfнeϽdϽdfC D??ονͽν̻˺˹ʸɷȵȵȴdzűİİï­­ѿпϾнμμͻͺͺ̸˷˶ʶʵɴȳȲDzƱưƯįĮůͶ|i:,AbHoLyOAr5f9o.rRKH@lפ}m߫쵊籇簆毅宄㬃⫂᫁઀ިݧ~ۦ}ۥ}ڤ|آzסy֠x՟wӝvӜuҝtmrڦoYGFE]]]LLLLLLLLLLLLLLLJJJ({{{)|||||||||}}}|||i˺Z®PλdѾgѽfѽfѽeоfнeнef~B -+*Ͽξνͽ̻˺˹˸ɷɶȵȵǴŲŰűį®­поϾнϼλͻͺ̹̹˷˷ʶʵɴɳȳDzDZƱŰůĮ̴G>4 5iOHmLvPPBs5f9o/rRKH@lפ}mૃ貇籇氅毅䭄㬃⫁᫁ߩި~ܧ~ܥ}ۤ|٤zآyסyՠxӞwӝvӞumrڦoYFFE\\\~~~LLLLLLLLLLLLLLLJJJ({{{)||||||}}}}}}|||i˺Z®QμdѿgѾgѾfѾeнfѾdнdgI!Ͽξνͻ˺˹˹ʸɷȶȵƴƲűűİî­ѿппϾϼμͻͺ̸̹˷˷ʶʵɴɴȳDzƲƱŰůưϷxi<-FfMsQ}SRBs5f:o.rRKH@lפ}mᬃ﷋鳈鲈豇簆宅䭄㬃⬂ઁߩިݧ~ۦ}ڤ|ڣz٢zסy՟w՞v՞vmrڦoYGFE]]]LLLLLLLLLLLLLLLJJJ(|||)}}}}}}}}}~~~}}}i˺Z®QϽeiѿhѿgѿgѿgѾfѾfg\62Ͽξͼͼ̻˹ʸɷȶȶȵƳŲııï®ѿпоϽϼλͻ͹͹̸˷˷ɶʵɴȴDzDzƱƱŰ̶A94 9mRNrR{UUSCt6g:p0sTMJBl֤}m⮅봊곉賈貈氆毅宅䭄⬂᫁઀ީݧ~ܦ}ۥ|ڤ{أzסy֠xՠxnrڦo[JIH___LLLLLLLLLLLLLLLJJJ(}}})}}}}}}~~~~~~}}}iʺZ®QνfjѿhѿgѿhѾhѾgѾghƵa<7 xsoϿϾνͼ̻˺˸ʸɷȵȵƳŲűŰï®­­понϼμλͺ̹̹˸˷ɶʵɴɳȳDzDzűɳζvh\ %E5JkSyVXWTŠCu6g:p2uUROGn֤}m㮅쵋뵊볉鳈籇氆毅宅㭃⬂᫁઀ߨݧ~ۦ~ۥ|٤{آzءyסy’o”r٦s]RRQgggLLLLLLLLLLLLLLLJJJ(}}})~~~~~~~~~~~~ši˺YJðVƳXŲXŲWƲWŲWŲWŲWȴXSOG!TQPϿνͼͼ̻˹ʸɷȶȵdzƲűűï®­¬ппнϼμλͻ̸̹̹˷ɶɵɴɳȳDzDzDZй,'%%E|`V{Y\\ZŎUŌDv6g9o6yZ[WPo֣}n汇︍︍ﶌ봉鳈貇豆毅宄䭃㬂᫂ੀߨާ~ܦ}ڥ{ڤ{ڣ{Ĕp”rإydcbbuuuLLLLLLLLLLLLLLLJJJ(}}})~~~~~~~~~™jbƲQųRųSųSųRųRųRƳSƴSȵTǵSsi1 865Ͽννͼ̻˹ʸɸȷȶǴƳƲűİïî­ѿоϽϼμμͻ͹̸̹˷ʶɶʵɴȳȲDzͷDZZOE*Mk>l=l1Q@1RA2RB2SB2SB2SB2SB1RA2SC9PESRO{mbwƶͽϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϿϾϿͼLLLLLLLLLLLLLLLJJJ()ƀx٦إ~פ~٥٦密tY ea`пϾξν̻̺˹ʹʸȶȵǴƳűűİîоϾнϽλͻ͹̸̹˷ʶɵʵϹs 667JIKQNQWTWZWZ\Y\]Y]]Y]]Y]]Y]]Y]]Y]^Y]^[_TRTJIJ___LLLLLLLLLLLLLLLJJJ()Ɓ›|գ|pkmmÕrw[%ϿϾνͼ̻˹˸ʸȶȵǴǴŲıİï­¬поϽмϼͻͺ͹̹˷˷ʶѼ2-'AAAzx{trvIII[[[|||LLLLLLLLLLLLLLLJJJ()ƁÛ|ҡ{lŕpΛu̙s͚sŔnT>0lhgϾνͼ̻˺˹ɸɷȵǵǴŲűİï­­ппϾнϻͻͺ̹̹˷ʶҼ=72(((ggiuuxFFGXXXyyy~~~LLLLLLLLLLLLLLLJJJ()ƂÛ|ҡ{nМvۥ|آy֠xߦ{wYBϿϽͼ̻˺˹ɸɶȵȵǴƲűŰį­поϾнϼͻͺ̹̹˷ҽG@7 bacyy{tsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƂÛ|ҡ{nϜuڤ{סyՠxܥ{pS XSPϿξͼ̼̺̹˹ɷȶȵǴƲűűİ®­¬ѿоϾϽϼλͺ͹͹ҿSLCa_btsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƃÛ|ҡ{nѝwܦ}٣{סyڤ{i<,!Ͽξμͼ̻˺˹ɷɶȵǴųűİİî­­ппϾϽλͺκԿKC< POPtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƃÛ|Ҡ{nўwܧ~٤|آz٢zڤzlQ2//Ͼμͼ̻˺˹ɷɶȵǵƳŲűİ®­­ѿпоϾϽλѽ?94 GGHtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƃ›|Ҡ{nӟxިۥ|٣{آzܥ|ՠxcJ8LHFϾνͽ̼˹˸ɸɶȵȵƳƲűŰï®пооҿŭλr0+' IIJtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()Ƅ›|Ҡ{nӠyީۦ}ڤ{٤{٣zާ}e5(e`]Ͽνͽ̼˺˸ʸɶȵȴƳƲűűï­¬«ưĭf\SCBCtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()Ƅ›|Ҡ{nԡy઀ݧ~ۥ|ڤ{٣{ڤ{ާ}uX& lihϿνͼͼ̻˹ʸɷȵȵƳŲűŰïįįůDZʳíuj72- A@AtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƅ›|Ҡ{nբz⬁ީݧ~ܦ}ڤ|٤{ۥ|ާ}eL  ]ZXϿνͼͼ̺˹ʸɷȶǵdzƲƲȴʵʴ˵ȳ~nd[940 VUVtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƅ›|Ҡ{n֢|㭃ߪިݧ~ۦ}ڥ|٤{ާ}МtgM9 GDBξͽͼ̺˹ʸʸɷʸͺлιɵ®tf]T?95"!!mlmtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƅ›|Ҡ{nפ|䮄ુߩިܧ~ۦ}ڥ|أ{ߨ}ΜtgM9 '%$ξͼͼͼμнмðvldKE?+'$ 223tsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()ƅ›|Ҡ{n٥}宅᫂઀ߩݨܧ~ۦ|ڤ|٣{ި~̚thO;  SPN˺{p[TM4/, WWYtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()Ɔ›|Ҡzoڦ~籆㭄⬂᫁ߪީݨܦ}ۤ}أ{ݧ}ўwhO$^ZX|r`XR=84  $$#ggjtsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()Ɔ›|Ҡzoڧ貇䮅㬃⫂ઁߪݩݧ~ܦ}ڥ|٣{ݦ}ݦ}uX4'KIG¿ʻun^WPA<7%!  ZU/qh5GE?yytsvFFGWWWxxx~~~LLLLLLLLLLLLLLLJJJ()Ƈ›|Ҡzoۨ鳈寅䭄㬃᫂ઁުިݧ~ۦ}ڥ}أ{ڤ{~fN;,  #!!QMKɼŻxpaXQC>;($!  '#^T";̿fKFD>wxtsvFFFVVVwww~~~LLLLLLLLLLLLLLLJJJ()Ƈ›|Ҡzoݩ봉簆宅䭄㬃⬂᫂ߩިݧ~ۦ~ڥ|أ{ڤ|Λt~^G'2//SPNjdc|yƿżǿûŽyrjf`ZUNID4/-  $ LEt4HHıLnKFD>xztsvFFFVVVwww~~~LLLLLLLLLLLLLLLJJJ()ƈ›|Ҡzoޫ鲈簆毅宅䭃㭁᫁ઁߩݨܧ~ۥ}ڣ{٣zާ}ݦ|b[D2  ,)(31/853>;9A=@=:97421.0/,*'& %!OG |o3@İP͸SлTïKImMGE?z{tsvFFFVVVwww~~~LLLLLLLLLLLLLLLJJJ()ƈ›|Ҡzo߫鳉豇簆寅宅䬄㬂᫂઀ީݧ~ݦ}ۥ}٤{آyۤ{ҝuhM>-"   3.^T(x8DNѽUкUθS˷R˶S­JKnMGE?z{tsvFFFVVVwww~~~LLLLLLLLLLLLLLLJJJ()ƈ›|Ѡzo᫃︌괉鲈豇氆密䮅㬃㬂᫁ߪިݧ~ܦ}ڥ}ڤ{٢zآzܥ|ڤ{Òm}^G5(   ($A:bX){o4ENƱSѻWӽXιU˶S˶SʵR˶R̷S­KKnMGE?z{tsvFFFVVVwww~~~LLLLLLLLLLLLLLLJJJ()Ɖ›|Ѡzp⬄쵊곉鲈豇簆密䭄䭃ᬃૂߩިݧ~ܦ~ڥ|ڣ{أz֡y٣{ަ}˙sflR?1'  #!/+IB]T)nc0>HűT͸WͺVҾXҽXϺW̷U˷T˶T˶SʶS˶S˶S̸T®KJnMGE?z{tsvFFFVVVwww~~~LLLLLLLLLLLLLLLJJJ()Ɖš|Ѡ{p⭅촊볉鲈豇识毅宄㭃ᬂઁߩިܧ~ۥ}ڤ|٤{أz֡yآyƖqɚv宆r]FC4c\0GB"   # >8H@ [Q(r7x;FKSӿ[ҽZҽZҽZѼYϻYκX̸V˶U˷U˷U˷U˷U˷U˷U˶SʶT̸T®KJnMGE?z{ttvGGHXXXwww~~~LLLLLLLLLLLLLLLJJJ()Ɖ›}џzp將﷌쵊봊겉鲇谆篅宅㭃⬂᫁ߪݨ~ݦ~ܥ}ڥ|٣{ڤ{ĔpÕqܨwdlhN]ô[At;e\2HB#51'#         $!4/3-:4aX,i_/}q8GLRSƲW__]Կ\ѽ[ϻZϻZͺX͸X˷X˷W˷X̸W̸W̸V̷V̷U̷U˶U˶T˶U˷T̸U®KJnMHFAz{wvxMMM^^^{{{~~~LLLLLLLLLLLLLLLJJJ()Ɗ›|Ҡzo٧粉㯆⭅ᬄଃ߫ުݩܨۧڦ٥}٤}أ|ע{աzԠyӟxҟxНvўvmqإ~~lzu^bd̸Sϼaнgʷbij`R}By@{Bx@g^4QJ(PI&PI%PI&]U/}sy>y>x=y>KXXXʷ\˸\л^``Կ^Ҿ^Ѿ]λ\λ\κZͺZ͹Z͹Z͸Z͹Z͹Y͹X̸X̸X̷W̸W˸V˷W̸U̷V˷UʶU˷U˶T͸UîKJnOLJE}|{{}XXXiii~~~LLLLLLLLLLLLLLLJJJ()Ɗ|ӡ{pqŗtŖsĖsĖsĖsĕsÕrÕrÕr”q”r”qqqqppppopmǗtף}xuea®Oͻ`jiihhhgfffeҿdҾdҿddccccbbbbbԿaѾ`Ѿ_м_λ]λ]ͺ\ͺ\κ[κ[ͺ\ͺ[̹[ͺZ͹Z͸Z̹Z͹X͹X̹Y̹X̸W̷W˸W˸W˸U̸U̷U˷U˷U˶U͸VîLKmQVTNnnn~~~~~~LLLLLLLLLLLLLLLJJJ()Ɗ™{֣ۧ~Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{Ѡ{ѡ{ҡ{ҡ{ҡ|ҡ|ҡ|ҡ|ҡ|ҡ|ҡ|٦إ}Ĺj`®P͹akhhiihhhggggffҿeѾdҿdҾdѿcѾcѾcѽbмaн`м`ϼ`м`ϼ_ϼ_м_ϼ_ϼ_ϻ]ϻ]ϻ]ϻ]λ\λ\λ\κ[κ[κ[κZκZκZιYιY͹Y͹X͹W͹X͸W͸W͸W͹VκWįNKlVhf`~~~LLLLLLLLLLLLLLLJJJ()ƋuϞxҠ{џzџzџzџzџzџzџzџzџzџzџzџzџzѠzѠzѠzѠzѠzѠzѠzѠzѠzѠzѡ{ʚvȼnο`K¯UǴ[ƳZƴZƳZƳYdzYƳYƳYųXųXƳXŲXųWųWƳWŲVƳVƲVųVŲUŲUŲUŲUŲTŲTűTŲTŲSıSűSıSıSİSİSİSİRİRİRİQİQİQİPİPİPİPįOįOïOïOïNïNîNîNïNïMİNFIk^y~~~LLLLLLLLLLLLLLLJJJ()Ƌ®¬¬¬¬¬¬¬¬ǹīʾodİNIKKKKJJJJJJJJJJJJJJJKKKKKKKJJJJJJJJJJJJJJJJJJJJJJJJJJKKJKHƲPlf~~~LLLLLLLLLLLLLLLJJJ()Ƌǫƹfkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgkmb~~~LLLLLLLLLLLLLLLJJJ()Ƌ͸övĸoźqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqŹqƹrƹrƹrƹrƹrƹrƹrƹrƹrƹrƹrƹrƻrķnx}}}LLLLLLLLLLLLLLLJJJ()ƌ}}}LLLLLLLLLLLLLLLJJJ()ƌ}}}LLLLLLLLLLLLLLLJJJ()ƌ}}}LLLLLLLLLLLLLLLJJJ()ƍ}}}LLLLLLLLLLLLLLLJJJ()ƍ}}}LLLLLLLLLLLLLLLJJJ()ƍ}}}LLLLLLLLLLLLLLLJJJ()ƍ}}}LLLLLLLLLLLLLLLJJJ()Ǝ}}}LLLLLLLLLLLLLLLJJJ()Ǝ}}}LLLLLLLLLLLLLLLJJJ()Ǝ}}}LLLLLLLLLLLLLLLJJJ()Ǝ}}}LLLLLLLLLLLLLLLJJJ()Ə}}}LLLLLLLLLLLLLLLJJJ()Ə}}}LLLLLLLLLLLLLLLJJJ()Ə}}}LLLLLLLLLLLLLLLJJJ()Ə}}}LLLLLLLLLLLLLLLJJJ()Ə}}}LLLLLLLLLLLLLLLJJJ()Ə}}}LLLLLLLLLLLLLLLJJJ()Ɛ}}}LLLLLLLLLLLLLLLJJJ()Ɛ}}}LLLLLLLLLLLLLLLJJJ()Ɛ}}}LLLLLLLLLLLLLLLJJJ()Ɛ}}}LLLLLLLLLLLLLLLJJJ()Ɛ}}}LLLLLLLLLLLLLLLJJJ()Ɛ}}}LLLLLLLLLLLLLLLJJJ('Ð|||LLLLLLLLLLLLLLLLLL'oooLLLLLLLLLLLLLLLNNNYYYKKKLLLLLLLLLLLLUUUc𑑑rrrMMMLLLLLLLLLLLLKKKjaaaLLLLLLLLLLLLLLLKKKLLLT鑑~~~~~~}}}||||||{{{{{{zzzyyyyyyxxxwwwwwwvvvvvvuuuttttttsssrrrrrrqqqqqqpppoooooonnnnnnmmmllllllkkkjjjjjjiiihhhggggggffffffeeeddddddccccccbbbaaaaaa```______^^^^^^]]]\\\\\\\\\\\\[[[ZZZZZZYYYXXXXXXWWWWWWVVVUUUUUUTTTSSSSSSRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPJJJJJJLLLLLLLLLLLLKKKJJJZIIIx~~~}}}}}}|||{{{{{{zzzzzzyyyxxxxxxwwwwwwvvvuuuuuutttssssssrrrrrrqqqppppppooonnnnnnmmmmmmlllkkkkkkjjjjjjiiihhhhhhgggffffffeeedddccccccbbbbbbaaa``````______^^^]]]]]]\\\[[[[[[ZZZZZZYYYXXXXXXWWWWWWVVVUUUUUUTTTSSSSSSRRRRRRQQQPPPPPPOOONNNNNNMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKIII z哓~~~}}}}}}|||{{{{{{zzzzzzyyyxxxxxxwwwwwwvvvuuuuuutttssssssrrrrrrqqqppppppooonnnnnnmmmmmmlllkkkkkkjjjjjjiiihhhhhhgggffffffeeedddccccccbbbbbbaaa``````______^^^]]]]]]\\\[[[[[[ZZZZZZYYYXXXXXXWWWWWWVVVUUUUUUTTTSSSSSSRRRRRRQQQPPPPPPOOONNNNNNMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL Q~~~}}}}}}|||{{{{{{zzzzzzyyyxxxxxxwwwwwwvvvuuuuuutttssssssrrrrrrqqqppppppooonnnnnnmmmmmmlllkkkkkkjjjjjjhhhhhhggggggfffeeeeeedddccccccbbbbbbaaa``````______^^^]]]]]]\\\[[[[[[ZZZZZZYYYXXXXXXWWWWWWVVVUUUUUUTTTSSSSSSRRRRRRQQQPPPPPPOOONNNNNNMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKKKLLLWLLLV˕䕕䖖䗗䗗䘘䘘䚚䚚䛛䛛䜜䜜䜜䝝䝝䞞䟟䟟䟟䠠䠠䠠䠠䟟䟟䞞䞞䝝䜜䜜䜜䜜䛛䚚䚚䙙䘘䗗䗗䖖䕕䕕䕕䕕䔔䓓䓓䒒䑑䐐䏏䏏䎎䎎䍍䍍䌌䌌䋋䋋䉉䈈䇇䇇䆆䆆䆆䅅䅅䄄䃃䂂䁁䁁䀀~~~}}}}}}|||{{{zzzyyyyyyxxxxxxxxxwwwwwwvvvuuutttsssrrrrrrqqqqqqpppppppppooonnnnnnllllllkkkjjjjjjiiiiiihhhhhhgggfffeeeddddddcccbbbbbbbbbbbbaaa``````___^^^]]]\\\\\\[[[[[[[[[ZZZZZZYYYXXXXXXVVVVVVUUUTTTTTTSSSSSSSSSRRRRRRQQQPPPOOONNNMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKJJJ_KKK!LLL??(       }}}&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&|||  ppp%-------------------------------------------------------------------------------ooo$  $&(fff.6666666666666666666666666666666666666666666666666666666666666666666666666666666eee.(&$  ,,,BBBQGGGGGGFFFEEEDDDDDDBBBOOO]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]NNNBBBDDDDDDEEEFFFFFFDDDw8880AAAJJJLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLKKKEEEV>>>JJJLLLKKKMMMQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRPPPKKKLLLKKKEEE@III>LLLKKKdddPPPLLLKKK000 KKKtLLLLLLkkkJJJKKKBBB KKKLLLOOOwwwJJJKKKBBB*KKKLLLOOOwwwJJJKKKBBB+KKKLLLOOOwwwJJJLLLCCC*KKKLLLOOOwwwJJJLLLDDD)LLLLLLOOOwwwJJJLLLHHH(LLLLLLOOOwwwJJJLLLJJJ&LLLLLLOOOwwwJJJLLLKKK&LLLLLLOOOwwwJJJLLLKKK&LLLLLLOOOwwwJJJLLLKKK&LLLLLLOOOwwwJJJLLLKKK&LLLLLLOOOĿed_[ZU[ZT[ZT[ZU[ZU[ZU[ZU[ZU\ZU[ZU\[U\[V\[V\[V\[V]\V][V][W``\tttwwwJJJLLLKKK&LLLLLLOOOҰǼwgZWWWWWXWVUSRQRSUWWX}KYYV{{|||{||{||||}||}||}||}||}||}|}}}wwwJJJLLLKKK&LLLLLLOOOУ̻ZïFİFŰEŰEİEŰEİEïDCA=9777:=@A̺UT\[Yuuwppqccd________`__`__`__`__`__`__`__`[[[pppwwwJJJLLLKKK&LLLLLLOOOѥƵT'#""! lo_iYgXiZp`~l|AQwvwttwdddwwwJJJLLLKKK&LLLLLLOOOѥǵT($##"!nLA +%! '":2QE _Q m]o;NyxywwycccwwwJJJLLLKKK&LLLLLLOOOѥǵU)%$$"!fX:2TH cU z1zEuuuwwycccwwwJJJLLLKKK&LLLLLLOOOѥǵU*&%$#ZM $ NC mb'ng:popwwycccwwwJJJLLLKKK&LLLLLLOOOѥǵU+&&%"dV-$qW9oV9M<)!& [R [U1gfgwwycccwwwJJJLLLKKK&LLLLLLOOOѥǵU+'&%n2(qK}N|M{MpG`J2D>RL+___wwycccwwwJJJLLLKKK&LLLLLLOOOХǵU,('!.( !mI~Q{N{NzMzL|Md@"&#MG(ZZ[wwycccwwwJJJLLLKKK&LLLLLLOOO͡ǶU,('eX t\@T~Q}P|P{O{NzM}NrY;  FA%ZZZwvycccwwwJJJLLLKKK&LLLLLLOOOȶU-)##G:+WTS~R}R}Q|P|O|NtK FA&^^^wvybccwwwJJJLLLKKK&LLLLLLOOOnnncccccccccccccccdddddddddddddddhgifɸV-)xhoOXVUTTS~Q}PRjH  QL,fefwvybbbwwwJJJLLLKKK&LLLLLLOOOvXpAsY:mS:mS:mS:mS:mS:mS:mS:mS:mS:nT8aOQʸW.(?6I;+[YXWVVTTUkH2(*'le9onowwyccdwwwJJJLLLKKK&LLLLLLOOO9l7i8j8j8j8j8j8j8j8j8j8j8k4`}|M˸V/% hL^[ZYXXW|T[I5 h_+Gutu{{}lllwwwJJJLLLKKK&LLLLLLOOO¯:kExMLLLLLLLLL=o3_}|LʸV0r$\_]]\[YYQA0LA >Nxwx}}}wwwJJJLLLKKK&LLLLLLOOO¯:kQ\Ǒ[Ɛ[Ɛ[Ɛ[Ɛ[Ɛ[Ɛ[Ɛ[ƐWČ@s3_}|L˸V0_SE9,ca`_^]]tR E; rANttuyxywwwJJJLLLKKK&LLLLLLOOO¯;lXe˗eɕeɕdɕeɕdɕdɕdɕ`ǓWÌ@s3_}|L˸V1QGXH5fca``__rR,&\Osc9IZXJkh]mj^mj_mj_mj_mj_mj_mk_mk_nk_nk_nk_ok_`_X^ksncs}ScnO_jO_jO_jO_jO_jO_jN_iN_iN_iN_jU]czzzwwwJJJLLLKKK&MMMMMMPPP¯;l_oΝn̜n̜n̜n̜n͜n̜j˙aȓWÌ@r3_}|L˸V1QG\L8gedcba`\/&H? ]Pxl,KPUYYZZZZZZZZZõ\Na{yyyyyyyyyy{TzjjjwwwJJJLLLKKK&NNNNNNPPP¯ [Oob z)/34555444333ͺSUjnZ\\[[\\[[[[z\hhiwwwJJJLLLKKK&OOOOOOQQQ¯miihgfddbOA3.( SHcUyiɵLUil_aaaaaaaa_Vs[hhiwwwJJJLLLKKK&QQQQQQSSS>m|Ơܸڶ۶ٴ֮~ҧtΠj˚aǓWÌ@r3_}|L˸V31bUuZnjiihfeecSE5$MC^Rsc{ɵLUhnfhhhhhihf_Vs[hhiwwwJJJLLLKKK&RRRRRRTTT>nɥ޽ݺٴ֮~ҧtΠj˙aȓWÌ@r3_}|L˸W4ë3*0)!gnlkjihffdgT@ C: [Om^wɵMUhomppppppmg_Vs[hhhwwwJJJLLLKKK&RRRSSSUUU®?n̫ݻٵ֮}ҧtϠj˙aǓWÌ@r4`~~M˸W4©3ê3rdI>1mnlkjihgff|fL ;3 XLk\uɵMUhquxwwwwung_Vs[hhhwwwJJJLLLKKK&TTTTTTVVV?oϱ޽۶ׯӨuСk̛aɔXč@s7cSʸW5©4ê30E<ZL=oommkjihggvX1)  7/ WKiZtɵMUht}|vng_Vs[hhhwwwJJJLLLKKK&UUUUUUWWW===<;«8ë7ª6ª6ª543/=6tbOxtrqpnlkjhghr^H QEgYwƲLTg{|voib[Tsj}~~wwwJJJLLLKKK&ZZZZZZ\\\ZXLIWUVTVTVTVTVTVTVTVTTRGESRoiPʹX­BưBƯAƯAƯ@Ů?Ů?ŭ=Ů=ĭ<ĭ<ĭ;ĭ:Ĭ:ì9ë9ë8«7«7541(5.G<2xutsqpppommkkaP>,& ZMtdJRf||zzyxwvutslwwwJJJLLLKKK&ZZZ[[[]]]ZXRP`^_]_]_]_]_]_]_]][VTFESRoiPʹXíCưCůBůAƯAŮ@ů@Ů>Į>Į=ŭ=ĭ<Ĭ;ì;ì:ì9ì9«8ª752|'-( gXG{wvtutg{gPZLŭ>ĭ=ĭ<Ĭ;Ĭ;Ĭ:ì9862s$)$ ZM@v{ywxm\M>#t`J!XKscB\UWXXXXXXXXXXXX}Ka`_wwwJJJLLLKKK&\\\]]]___ZX_]trrprqrprprppnhf_]VTFESRoiPʹXîDưDưDưCƯBƯBƯAů@ů@Ů?Ů?ĭ=ĭ<ĭ<í;í;ì:73yk##r]}|{{g0)!+++AABEEF666hVCcR?A8 fX{*=A­B­A¬A¬A¬A­@­@¬@¬@¬@??ͺVU^]\wwwJJJLLLKKK&]]]]]]```YXed}||z|{|{|{zxrphf_]VTFESRoiPʹXîEƱEưEưDưCưCưBůAƯ@Ů@Į?Į?Ů>Į=ĭ<ì;94ma ?7.r~~x;3) ]]]zeMd' #[O|k űHU^]\wwwJJJLLLKKK&^^^^^^aaaYXlj{zrphf_]VTFESRoiPʺXîEƱFưEDZEDZDưCưCůBƯAŮ@Ů@ů?Ů>Ů>ĭ=;7rd"WL@g ~~~90&glgVB LBpa"##"!! ƲIU]][wwwJJJLLLKKK&______bbbYWrq{zrphf_\VSFDSRoiPʺXĮFDZFƱFƱEDZEưDưCưBƯBƯAů@Ů@Ů?ŭ>«=:u) dXJr[#|_nl_80 gYz"###"!! ƲJU]][wwwJJJLLLKKK&``````cccYWxw{zrpif_]VSFDSRoiPʺXĮGȲHȲGDZFDZFDZEǰDưCưBƯBůAŮ@Ů?ĭ>=/# obSªj !!!u[rnllI=/#^Rq!$$##"!! ƲJU]][wwwJJJLLLKKK&aaaaaadddYW~}{zrphf_]VTFESRoiQʺYįGȲHȲGDZFDZFDZEưDůCĮB¬A@?>=681i]Níì|+% OOO///rZuqonnxdMRHyi $$$##"!! ƲJU]][wwwJJJLLLKKK&bbbbbbeeeYW}|trjh`^WUGETStnVʺYįHȲIȲHƱGưFîEC@>;9775QG^TI¬Ů쫪n_P___JII }kWxtsqonaF<qb$%%$$#"!! ƲJU]\[wwwJJJLLLKKK&ccccccfffZXpozytrmkfe`^YWRPLJBAWV~x_ʺYįHȲIưHîFC?;62y/s,~p*p*\Q F?7DZůĮí¬«D;2dUF{wvtrqok6.$6/ j\$&&%$##""! ƳJU]\[wwwJJJLLLKKK&ddddddgggb`WUUTTSSRSRSRSRTRSRSRSRVTVUys\ʺYĮHŰIE@:3|n,g[$WMF?@9?8@9,'#ʵƱŰůĮíì«|WLA\OAy|ywutrppSE7)$ eWz$&&%%$##"!! ƳJU]\[wwwJJJLLLKKK&eeeeeehhh{wc_g[W_ZV_ZV_ZV_ZW_ZW_ZW_ZW_ZW_VRZzMȸYFC:5ɵűİïî®поtg\SJϼ̸˷ʶɵɴȳDZưůĮììª~|zxwlE=|l&***)(('&&&$ƳKU\\ZwwwJJJLLLKKK&kkkkkkmmm̮ʺ_dzS͹Y̸X̷W˸W̷V˷U˷UɵSMSK"ID>Ķ˸dzƳƲűŰİï®­ѿȶD>7"ϼ̸˷ʶɶɴȲDzưůĮĭ¬ª}|yxlE<o'+++*))(''&%ƳKU\\ZvvvJJJLLLKKK&kkklllnnn̮ʺ_dzS͹Z̸X̸X̸W˷W˷V˶UȴS|o3 A<8Ÿ̺ȶȶȵǴdzƲŲűİï®ѿrӿ̹̹˷ʶʵɴȲDZƱůĮíƯê~|zykJAr(+,+***)(''&ƳKU\\ZvvvJJJLLLKKK&mmmmmmooo̮ʺ_ǴTͺ[̹Y̸Y̸X̸W̷W̷VG!'$!ϽʸʸʸʷɶȵȴǴƳŲűİï­п]TL\SIҿλͺ̹˸ʶɵɴdzDzưůƯwc/)"2+$xc~|{g QGt ),,,++*))(''ƳKU\[ZvvvJJJLLLKKK&mmmnnnppp̮ʺ_ǴTͺ[̹Z̹Y̸X͸X̸WdzTYP% ̻̻̻˺˹ʸʸɶȵǴǴƲűİį®­íMG@ijϽͻ͹̸˷ʶɵȳDzƱɳvx©}|~e SIx"*---,++*))('ƳKU\[ZvvvJJJLLLKKK&ooooooqqq˭ʺ_ȴUκ\͹[͹Z̹Y̸Y͹XE WQLξϿξννͽͼ̺˺˹ʸɷȶȵǴŲűİï­ujaϼͻͺ̹˷ʶɵɴȲ˶}o^eXI~~v^ \P}$,..--,,+**)(ƳKU]\[vvvJJJLLLKKK&oooooorrr˭ʺ_ȴUκ]͹\͹[͹Z̹Z˷X_U)Ͽξνμͼ̻̺˹ʸɷȵǵdzŲİîůнϼμͺ̹˷ʶɵȳ˵wg[L«ëxgTh[&-//.--,,+**)ƳLXedcvvvJJJLLLKKK&pppqqqsss˭ʺ_ȵVλ^κ\ͺ[ͺ[κZO%"WQLϿϾνͼ̻˹˸ʸɶȵǴƲİïȶпнϽλ͹̸˷ʶɴȳȳwdocS¬ĭª`RDna*12322000/..-ƲLa~}vvvJJJLLLKKK&qqqqqqsss˭ʺ_ȵVϻ^κ]κ\ͺ\л[~= Ͽξνͼ̺˹ʸɶȵǴƲűįîпнϼͺ̹˸˷ʵɴȳʵɳůì«F<20+u7I²SȷUȷUȷUȷUȷUȷUȷUȷUɷUɷUȷUϿ]gvvvJJJLLLKKK&rrrsssuuu˭ʺ_ȵWλ_κ^ͺ]ͺ\̹[XO'-)'öϿξͼ̻˺˸ɷȵǴƲűï®пϽμͺ̸̹ʶʵɳDzƱůĮí«x*%&&^X8{RYQ{LzLzLzLzLzLzLzLzLzL|LyYvvvJJJLLLKKK&ssssssuuu˭ʺ_ȵWϼ_λ^κ^λ]U0+UPKϾν̻̺˸ɷȵǴƲŰï­поϽμ̹̹˷ʶɴȳDzưŮĭ¬«m5&PJ>jpmlllllllllmzbZWUvvvJJJLLLKKK&ttttttvvvˬʺ_ȵXϼaλ_λ^м^M }wϿνͼ̺˸ɷȵǴƲİï­пϾϼͻ͹˸˷ɵɴDzƱůĮì«yiW L5]UEÔqŕqȘsǗrƖqƕpĔpÓo“nmllŕqnYURvvvJJJLLLKKK&uuuuuuwwwˬʺ_ȵXϼaλ`λ_Ѿ`@ Ͽνͼ˺ʸɷȵǴŲİî­пϽμͻ̹˷ʶɵȳDzŰůí¬PF;  [>b[IĕrΛu֠xӞvЛsΙr˖oȔmŒkÐigekmXURvvvJJJLLLKKK&vvvvvvxxxˬʺ_ȵYϼbλaλ`Ҿ`qf4Ͽνͼ˺ʹɶȵƳűį®ѿоϼλ̸̹ʶʵɳDzƱůĮì«|% 6%%gGf_MƗsНwآzՠxҝuЛt͙q˗pȔnƒlÐiglmXURvvvJJJLLLKKK&wwwwwwyyyˬʺ_ɵYнcϼaϼaϼ`\S*ȿϿνͻ̺ʸɶȵƳűį­поϼκ̹˸ʶɴȳDzưůí¬ªêyd  V:)rNicPȘtӠxۦ|أzՠxӞvЛtΙr˗pɕnƒlÐjmmXURvvvJJJLLLKKK&wwwxxxzzzˬʺ_ɶZнcϽbϼaɷ^D> "!Ͽνͻ˹ʸȶǴƲŰîоϽλͺ̸˷ʵɳDzƱůĮì«©RH=&+pM,{UkdQəuբzި~ڥ|آzՠxӝvЛt͙r˗pɔnƒl’nmXURvvvJJJLLLKKK&yyyyyy{{{ˬʺ_ɶZнdϼcнbʷ_D> !Ͼμ̻˹ɷȵdzűï­поϼλ͹̸ʶɵȳDzưŮí¬ì~!L62Y/ZlfRʙvף|᪁ݧ~ڥ|آzՠxӞvЛtΚr̗pɔnÓnmXURvvvJJJLLLKKK&yyyzzz{{{ʬʺ_ɶZоeнcнcʷ_D> ȿξͼ˺ʸɶȵƳİîѿоϽλͺ̸ʶʵȳDzƱůĭ¬ǯwiX 4vT7c1^lgSəv٥}㭂઀ݧ~ڥ|עzՠxӝvМtΙr˗pĔomXURvvvJJJLLLKKK&zzz{{{}}}ʬʺ_ɷ[оfоdнdʸ`D> νͼ˺ʸȵǴŲİ®ѿоϼͺ͹˷ʶɴȳƱŰĮĮ4.(;+Bj Ͼͽ̺ʸɶȵƲİîоϼλͺ̸ʶɵȳDzưĮȱvc  7qSKx?p2algSʙuݩ豇宄⬂ੀݧ~ۥ}آz֠xӞvќtƕqmXURvvvJJJLLLKKK&||||||~~~ʬʺ_ʷ]ѿgѾfоe̺cIB#ξͻ˹ʷȶdzűİ­пнμͺ̸˷ʵɴDzưǰ70*<-JpQ@s3blgSʙvު곉籆宄㬂઀ݧ~ڥ|أz֠xӞvǖrmXURvvvJJJLLLKKK&}}}}}}ʬɺ_ɶ\оgнfϽeӿfd[0mheϿͽ̻ʸȶǴŲİ®ѿоϼͺ̹˷ʶɴDzƱʴ}o_ ?y\UUBt4cpjWʙvᬄ곉籆寅㭃ઁݧ~ܥ}٣z֡xȗsn_[XvvvJJJLLLKKK&~~~~~~ʫ̼`ƳTǵWȵWȵWͺZ~r7CA?νͼ˹ɷȵƳűï­оϼλ͹̸ʶɵȳʴ'#&F6RxXT@r7eyt`əvޫ괊籈䯅⭄ંީܦ~٤|ףzԡxǗrt}zwvvvJJJLLLKKK&˲˿wu˿tɾsk_~D Ͼͼ̺ʸȶǴűð­пϽμͺ̸ʶʵɴDZYOE +pM:g=mIPǴV͹XмYϻXιW̷V˷U˷U˷TűNĶZmiWWWXvvvJJJLLLKKK&ɮətԢ|֤~ԣ|Ӣ{ҠzџzϞxΝw͛v̚uȘsȘtugμZʸb±_SPJCCJMLMV¯Yɶ[м^ҿ^Ҿ]ѽ]ϼ\κ[͹Y͹Y̹X̸W̸V̸U˷U̷UƱOŶ\so^onovvvJJJLLLKKK&ǭϟz͞z͞{͞{͞{͞{͞{͟{Ο{Ο{Ο{Ο{Ѡ|xǴUʸ^ͺ`ϼ`λ`ϼ_н_ϼ_λ]͹]κ\͹\˸Z˷ZʶYɵWɵWɵVɴVȴVȴUȴUȴTȴSȳSdzRdzRdzQdzPîKǸ^tvvvJJJLLLKKK&˽̾̾̾̾̾̾̾ͿͿͿͿͿú̼[ȷXȸYȸXȸXȸXȸXȸXȸXȸXȷXȷXȷXȷXȷXȷXȷXȷXȷXȷXȷXȷXȷXȷXȷWȷWȷXȷXȷXɸX̾evvvJJJLLLKKK&ʬƚƛƛƛƛƛƛǜǜǜǜǜǜǜǜǜǜȜȜȝȝȝȝȝȝȝȝȝȝȝǞuuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&uuuJJJLLLKKK&yqqqJJJLLLLLL!PWWWKKKLLLMMM xxxXXXKKKLLLKKK`4ʓ~~~}}}|||{{{yyyxxxwwwvvvtttsssrrrqqqpppnnnmmmlllkkkiiihhhgggfffdddcccaaa```___^^^\\\[[[ZZZYYYWWWVVVUUUTTTSSSQQQPPPOOONNNLLLKKKJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKLLLLLLJJJ *򖖖󘘘󙙙󚚚󜜜󝝝󞞞󟟟󠠠󠠠󠠠󠠠󟟟󞞞󝝝󜜜󛛛󙙙󘘘󗗗󖖖󕕕󔔔󒒒󑑑󐐐󏏏󍍍󌌌󋋋󉉉󈈈󇇇󅅅󄄄󃃃󂂂󀀀~~~}}}{{{zzzyyyxxxvvvuuutttsssrrrpppooonnnmmmkkkjjjhhhgggfffeeecccbbbaaa```^^^]]]\\\[[[YYYXXXWWWVVVUUUSSSRRRQQQPPPNNNMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLfLLL ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????(0` $ %%%!!!'YYY0:::::::::::::::::::::::::::::YYY0'GGGKKKOOOOOOSSSYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZSSSPPPOOOIII}AAA FFFbwwwhhhCCC@EEEz}}}BBBTFFFy}}}CCCSFFFy}}}CCCRFFFy}}}CCCRFFFyŸp@@>9w46A~d}}~}}}CCCRFFFyȶX"!n^)#=4yjl}}}CCCRFFFyȶZ$l] VC-H7$ ,' pm]}}}CCCRFFFyǵXdO6R}OlS6 ^\S}}}CCCRFFFyk|Z|k[}l[~mhkHaT0&~UV}RfP5 nl_}}}CCCRFFFyFyKKI~IeB6/ bO:_\eP8 WMm}}}CCCRGGGy©am͜l̛_ǒNjA+% u`GebXG4 aUEUVVVbogeees}}}CCCRJJJyªvɞ֭zѥ`ǓMjDB:OA2if~Z1(TI!!Oj____o}}}CCCRLLLyìҮݹ}ӧaȔMjFw" jPli}[;0$ A8 uOpqqk`o}}}CCCROOOyykl\L}LgI2XMy\nkbRC2 91 uPxn`o}}}CCCRQQQyxwQPPOPOPNrviTQQQQFë51?7/'iplifT> B9 Pm`s}}}CCCRTTTy`^VSWUWTML~pɲDȰBǯ@Ʈ?Ʈ=ì:ì73TJ sZwjpS~gLE9+cUJx}wqny}}}CCCRWWWylkpnqohfQO}pDzDưBůAŮ?ĭ=Ů;5SI cUExfB:1NLKAA@6.$)",&.FGFEHc}}}CCCRYYYyxwkiQO}pȳFDZEưCƯAƯ?;SIq^^QA{||SRQjXCr^Gqb!!&]}}}CCCR\\\yihPNrɴHDZFíC?;l_"zgĬueR[[[aaaXK;pbQF"$" (]}}}CCCR___y~pnfd^\WTmîG9pc&UKG> xl]ȲĮ«[OAXL=tvo7.$81 "&$!)]}}}CCCRaaayżWVVUJaW$)$KE;uhxj71,n˶ƱĮ«~yuMA3)$"(&$+]}}}CCCRdddyÅ̷T͸U͸SJF?'$ {ξĮíXOFʵDzů¬ª|yZL<"")(%,]}}}CCCRgggyÆ˷V̸WɴT[R%&# ˸dzİî­~pκɵDzů}v|ZL="$+*'.]|||CCCRiiiyÆ̸XϻZBп̻ʸɶƳűóϼ˸ʵA:1XM@PD7*% '-+(/^|||CCCRlllyÆ̹Y͹[VN$A=:̽Ͼͻʸȵı˻оλ˸Dzn<4*93:><;>q|||CCCRnnnyÇκ\V($ysν˹ȵűоͺ˶ʵư«z#6:)bdbb_{|||CCCRqqqyÆϼ^Nξ˹ȵİϽ̹ɵƱíëi @U?Ŗsҝv˗qőli{|||CCCRsssyÇѽ`HνʹǴîѿλ˷ȳůĭbTF $NtT̛wڥ|Ҟv̘pk{|||CCCRvvvyÇҾbH ͼɷűϽ̹ɴDZ($$Z?Wbϟy᫁٤{Ӟvnz|||CCCRxxxy…н`K Ͽ˺ǴîоͺʶʴtfW$DpZhӡ|篅ߩ٣zŔp|||CCCR{{{y̩̾Y hfdͼȶİλ͹"(O&\gF1(upR[[[gggän͝j͜Zvzt0UF0f{cH$ qf,HIL|ffg[[[jjjǭزsТWv:B8wYhfS=% fX'kha[[[nnnwufvdeCu"A8$ekzdJ)"aT(rb[[[qqqTRSQOMeDDCì<292jYGq{[aP<# }n vn[[[tttqprqYWfɲBưAǯ>8YNJ@1oyhUspmMHC>3'C;9A?J[[[xxxzyWUiʴEA:eZ!TJ=k`T}}~qbQx[0)!4[[[{{{}wvpZw/bW+XN.<5*Ư«uxhUto;1 q&"6[[[~~~ȷ^ȵRKXP&_XK|qdʵįì©wE:+vf)%8[[[̺a̸Wla-g`WijɶƱ²̸ɴwb|F<,yi+'9[[[ͼdLGB1ǼͼʸƲƶμ͹wd~=5&v):6F[[[оf{1Jk{ݱ׬¥[[[ɾb,'"Ͼʶ~B>:z}~[[[Ǿ֥~wYB@=:ǺzbZMGD=[[[ǽޫۥ|kPC9)KG9XTHZUFUO9TM-eZ+~6t[[[ӸԸӸ²gdfkȹpϿrq[[[[[[[[[ZZZg|||PPPQ(  333bbb-555555555aaa-000໻߼߾߽ᑑ  QfX*ogH zo7y^=[R< ɧdok6oPYL,3zm''' £xxtZ2p^>tYQCd|221 ™gdZ6~o3{bsfbUErf':<<< ¾puK^}jĭymn^& uFFF ̖Dɷ²ȵ~wo`00}PPP Ɣ}X˹ȴvleH×gZZZ ş}tYɶ͹qr_wiתǶccc t]Źpkkk үrih]urrr lll pgmodeler-0.9.4/apps/pgmodeler/src/000077500000000000000000000000001416010000600171765ustar00rootroot00000000000000pgmodeler-0.9.4/apps/pgmodeler/src/main.cpp000066400000000000000000000101031416010000600206210ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "pgmodelerapp.h" #include "mainwindow.h" #ifndef Q_OS_WIN #include "execinfo.h" #endif void startCrashHandler(int signal) { QFile output; QString lin, cmd; /** At the moment the backtrace function does not exists on MingW (Windows) this way the code that generates the stacktrace is available only on Linux/Unix systems */ #ifndef Q_OS_WIN void *stack[30]; size_t stack_size; char **symbols=nullptr; stack_size = backtrace(stack, 30); symbols = backtrace_symbols(stack, stack_size); #endif cmd=QString("\"%1\"").arg(GlobalAttributes::getPgModelerCHandlerPath()) + QString(" -style ") + GlobalAttributes::DefaultQtStyle; //Creates the stacktrace file output.setFileName(GlobalAttributes::getTemporaryFilePath(GlobalAttributes::StacktraceFile)); output.open(QFile::WriteOnly); if(output.isOpen()) { lin=QString("** pgModeler crashed after receive signal: %1 **\n\nDate/Time: %2 \nVersion: %3 \nBuild: %4 \n") .arg(signal) .arg(QDateTime::currentDateTime().toString(QString("yyyy-MM-dd hh:mm:ss"))) .arg(GlobalAttributes::PgModelerVersion) .arg(GlobalAttributes::PgModelerBuildNumber); lin+=QString("Compilation Qt version: %1\nRunning Qt version: %2\n\n") .arg(QT_VERSION_STR) .arg(qVersion()); output.write(lin.toStdString().c_str(), lin.size()); #ifndef Q_OS_WIN for(size_t i=0; i < stack_size; i++) { lin=QString("[%1] ").arg(stack_size-1-i) + QString(symbols[i]) + QString("\n"); output.write(lin.toStdString().c_str(), lin.size()); } free(symbols); #else lin=QString("** Stack trace unavailable on Windows system **"); output.write(lin.toStdString().c_str(), lin.size()); #endif output.close(); } /* Changing the working dir to the main executable in order to call the crash handler if the PGMODELER_CHANDLER_PATH isn't set */ QDir dir; dir.cd(QApplication::applicationDirPath()); exit(1 + system(cmd.toStdString().c_str())); } int main(int argc, char **argv) { try { /* Registering the below classes as metatypes in order to make * them liable to be sent through signal parameters */ qRegisterMetaType("ObjectType"); qRegisterMetaType("Exception"); qRegisterMetaType("ValidationInfo"); qRegisterMetaType("ObjectsDiffInfo"); //Install a signal handler to start crashhandler when SIGSEGV or SIGABRT is emitted signal(SIGSEGV, startCrashHandler); signal(SIGABRT, startCrashHandler); PgModelerApp::setAttribute(Qt::AA_UseHighDpiPixmaps); PgModelerApp::setAttribute(Qt::AA_EnableHighDpiScaling); PgModelerApp app(argc,argv); int res=0; //Loading the application splash screen QSplashScreen splash; QPixmap pix(QPixmap(QString(":images/images/pgmodeler_splash.png"))); splash.setPixmap(pix); splash.setMask(pix.mask()); splash.show(); app.processEvents(); //Creates the main form MainWindow fmain; fmain.show(); splash.finish(&fmain); //Loading models via command line on MacOSX are disabled until the file association work correclty on that system #ifndef Q_OS_MAC QStringList params=app.arguments(); params.pop_front(); //If the user specifies a list of files to be loaded if(!params.isEmpty()) fmain.loadModels(params); #endif res = app.exec(); app.closeAllWindows(); return res; } catch(Exception &e) { QTextStream ts(stdout); ts << e.getExceptionsText(); return enum_cast(e.getErrorCode()); } } pgmodeler-0.9.4/apps/pgmodeler/src/pgmodelerapp.cpp000066400000000000000000000122631416010000600223650ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ #include "pgmodelerapp.h" #include "globalattributes.h" #include "messagebox.h" #include "attributes.h" PgModelerApp::PgModelerApp(int &argc, char **argv) : Application(argc,argv) { QTranslator *main_translator=nullptr, *plugin_translator=nullptr; QFile ui_style(GlobalAttributes::getTmplConfigurationFilePath("", GlobalAttributes::UiStyleConf + GlobalAttributes::ConfigurationExt)); QString plugin_name, plug_lang_dir, plug_lang_file; QStringList dir_list; QDir dir; try { //Creating the initial user's configuration createUserConfiguration(true); } catch(Exception &e) { Messagebox msgbox; msgbox.show(e); } //Checking if the user specified another widget style using the -style param bool using_style=false; for(int i=0; i < argc && !using_style; i++) using_style=QString(argv[i]).contains("-style"); //If no custom style is specified we force the usage of Fusion (the default for Qt and pgModeler) if(!using_style) setStyle(GlobalAttributes::DefaultQtStyle); //Changing the current working dir to the executable's directory in QDir::setCurrent(this->applicationDirPath()); //Adding paths which executable will find plugins and it's dependecies this->addLibraryPath(this->applicationDirPath()); //If pgModeler bundles plugins, add the root plugins path to lib search paths if(dir.exists(GlobalAttributes::getPluginsDir())) this->addLibraryPath(GlobalAttributes::getPluginsDir()); //Check if the temporary dir exists, if not, creates it. if(!dir.exists(GlobalAttributes::getTemporaryDir())) { if(!dir.mkdir(GlobalAttributes::getTemporaryDir())) { Messagebox msg; msg.show(Exception(Exception::getErrorMessage(ErrorCode::FileDirectoryNotWritten).arg(GlobalAttributes::getTemporaryDir()), ErrorCode::FileDirectoryNotWritten, __PRETTY_FUNCTION__,__FILE__,__LINE__)); } } //Trying to identify if the user defined a custom UI language in the pgmodeler.conf file QString conf_file = GlobalAttributes::getConfigurationFilePath(GlobalAttributes::GeneralConf); QFile input; QString lang_id = QLocale::system().name(); input.setFileName(conf_file); if(input.open(QFile::ReadOnly)) { QString buf = QString(input.readAll()); QRegExp regexp = QRegExp(QString("(%1)(.*)(=)(\\\")(.)+(\\\")(\\\n)").arg(Attributes::UiLanguage)); int idx = regexp.indexIn(QString(buf)); //Extract the value of the ui-language attribute in the conf file lang_id = buf.mid(idx, regexp.matchedLength()); lang_id.remove(Attributes::UiLanguage); lang_id.remove(QChar('"')).remove(QChar('=')).remove(QChar('\n')); } //Tries to load the main ui translation according to the system's locale main_translator=new QTranslator(this); main_translator->load(lang_id, GlobalAttributes::getLanguagesDir()); this->installTranslator(main_translator); //Trying to load plugins translations dir_list=QDir(GlobalAttributes::getPluginsDir() + GlobalAttributes::DirSeparator, QString("*"), QDir::Name, QDir::AllDirs | QDir::NoDotAndDotDot).entryList(); while(!dir_list.isEmpty()) { plugin_name=dir_list.front(); dir_list.pop_front(); //Configure the path to "lang" subdir at current plugin directory plug_lang_dir=GlobalAttributes::getPluginsDir() + GlobalAttributes::DirSeparator + plugin_name + GlobalAttributes::DirSeparator + QString("lang") + GlobalAttributes::DirSeparator; plug_lang_file=plugin_name + QString(".") + lang_id; //Check if the .qm file exists for the current plugin. If so create and install a translator if(QFileInfo(plug_lang_dir + plug_lang_file + QString(".qm")).exists()) { plugin_translator=new QTranslator(this); plugin_translator->load(plug_lang_file, plug_lang_dir); this->installTranslator(plugin_translator); } } //Loading app style sheet ui_style.open(QFile::ReadOnly); //Raises an error if ui style is not found if(!ui_style.isOpen()) { Messagebox msg; msg.show(Exception(Exception::getErrorMessage(ErrorCode::FileDirectoryNotAccessed).arg(ui_style.fileName()), ErrorCode::FileDirectoryNotAccessed,__PRETTY_FUNCTION__,__FILE__,__LINE__)); } else this->setStyleSheet(ui_style.readAll()); } bool PgModelerApp::notify(QObject *receiver, QEvent *event) { try { return QApplication::notify(receiver,event); } catch(Exception &e) { Messagebox msg_box; msg_box.show(e); return false; } catch(...) { Messagebox msg_box; msg_box.show(tr("Unknown exception caught!"), Messagebox::ErrorIcon); return false; } } pgmodeler-0.9.4/apps/pgmodeler/src/pgmodelerapp.h000066400000000000000000000022651416010000600220330ustar00rootroot00000000000000/* # PostgreSQL Database Modeler (pgModeler) # # Copyright 2006-2021 - Raphael Araújo e Silva # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # The complete text of GPLv3 is at LICENSE file on source code root directory. # Also, you can get the complete GNU General Public License at */ /** \ingroup pgmodeler \class PgModelerApp \brief This class inherits from QApplication and has the notify() method modified to treat the exceptions raised by pgModeler components. */ #ifndef PGMODELER_APP_H #define PGMODELER_APP_H #include "application.h" #include #include #include class PgModelerApp: public Application { public: PgModelerApp(int & argc, char ** argv); bool notify(QObject * receiver, QEvent * event); }; #endif pgmodeler-0.9.4/assets/000077500000000000000000000000001416010000600147705ustar00rootroot00000000000000pgmodeler-0.9.4/assets/conf/000077500000000000000000000000001416010000600157155ustar00rootroot00000000000000pgmodeler-0.9.4/assets/conf/connections.conf000066400000000000000000000006751416010000600211160ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/conf/defaults/000077500000000000000000000000001416010000600175245ustar00rootroot00000000000000pgmodeler-0.9.4/assets/conf/defaults/connections.conf000066400000000000000000000007221416010000600227160ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/conf/defaults/diff-presets.conf000066400000000000000000000015141416010000600227670ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/conf/defaults/example.dbm000066400000000000000000000200201416010000600216350ustar00rootroot00000000000000

Waiting process to start...

 ModelFixForm<html><head/><body><p>[pgmodeler-cli not found error]</p></body></html>G

[pgmodeler-cli not found error]

 ModelFixForm@Rechercher l'outil pgmodeler-cliBrowse for pgmodeler-cli tool ModelFixFormImpossible de localiser l'outil <strong>%1</strong> sur <strong>%2</strong>. Le processus de rparation ne peut continuer ! Vrifiez votre installation de pgModeler ou spcifiez manuellement la commande ci-dessous.Could not locate %1 tool on %2. The fix process can't continue! Please check pgModeler installation or try to manually specify the command below. ModelFixFormTentatives : Fix tries: ModelFixFormDans certains cas, le processus de rparation peut chouer restaurer et rcuprer tous les objets du modle, ce qui peut rclamer des modifications manuelles dans le fichier partir d'un diteur de texte. <strong>REMARQUE :</strong> les associations peuvent perdre leur configuration graphique tels que des points placs manuellement par l'utilisateur ou la couleur.In some cases the fix process will fail to restore all objects within the model demanding manual fixes by changing the file on a text editor. NOTE: relationships may lost their graphical configuration like custom points and line color. ModelFixForm Fichier source : Input file: ModelFixFormlCharger le modle rpar une fois l'opration termineLoad fixed model when finish ModelFixForm2Rparer un fichier modleModel file fix ModelFixFormFichier cible : Output file: ModelFixForm@Slectionner le modle rparerSelect input file ModelFixFormBSlectionner un fichier de sortieSelect output file ModelFixFormCe fichier n'est pas l'outil en ligne de commande de pgModeler (pgmodeler-cli).JThe specified file is not the pgModeler command line tool (pgmodeler-cli). ModelFixFormHProcessus en attente de lancement...Waiting process to start... ModelFixFormXOutil en ligne de commande de pgModeler (%1) pgModeler command line tool (%1) ModelFixFormpgmodeler-cli :pgmodeler-cli: ModelFixForm<(modle pas encore enregistr)(model not saved yet)ModelNavigationWidget......ModelNavigationWidgetAlt+CModelNavigationWidget Fermer Close modelModelNavigationWidgetCtrl+Gauche Ctrl+LeftModelNavigationWidgetCtrl+Droite Ctrl+RightModelNavigationWidgetFormulaireFormModelNavigationWidgetModle suivant Next modelModelNavigationWidget Modle prcdentPrevious modelModelNavigationWidget......ModelObjectsWidget11ModelObjectsWidgetPar identifiantBy IDModelObjectsWidgetAnnulerCancelModelObjectsWidgetTout effacer Clear AllModelObjectsWidget2Replier tous les lmentsCollapses all itemsModelObjectsWidget chapEscModelObjectsWidget8Dvelopper tous les lmentsExpands all itemsModelObjectsWidgetFiltrer :Filter:ModelObjectsWidget Cacher ce widgetHide this widgetModelObjectsWidgetIdentifiantIDModelObjectsWidgetVue en liste List viewModelObjectsWidget Objets du modle Model ObjectsModelObjectsWidget Objets de modle Model objectsModelObjectsWidgetNouveauNewModelObjectsWidget ObjetObjectModelObjectsWidget<Filtres d'affichage des objetsObjects view configurationModelObjectsWidgetObjet parent Parent ObjectModelObjectsWidgetType parent Parent TypeModelObjectsWidget RetourReturnModelObjectsWidgetSlectionnerSelectModelObjectsWidget"Tout slectionner Select AllModelObjectsWidgetVue en arbre Tree viewModelObjectsWidgetTypeTypeModelObjectsWidget.Types d'objets visiblesVisible object typesModelObjectsWidget Impossible de gnrer l'aperu de l'image. La taille demande%1 x%2 tait trop grande et il n'y avait pas assez de mmoire allouer !zFailed to generate the overview image. The requested size %1 x %2 was too big and there was not enough memory to allocate!ModelOverviewWidget,Vue gnrale du modleModel overviewModelOverviewWidgetA&nnuler&CancelModelRestorationForm&Restaurer&RestoreModelRestorationFormBase de donnesDatabaseModelRestorationFormFichierFileModelRestorationFormConserver les modles temporaires en cas d'chec de la restauration4Keep temporary models in case of restoration failureModelRestorationForm,Restauration de modleModel restorationModelRestorationFormModifiModifiedModelRestorationForm TailleSizeModelRestorationFormpgModeler n'a pas t ferm correctement lors d'une prcdente excution et certains modles taient encore en cours d'dition. Cliquez sur <strong>Restaurer</strong> pour rouvrir les modles ou sur <strong>Annuler</strong> pour abandonner la restauration.pgModeler was not closed properly in a previous execution and some models were still being edited. Click Restore to reopen the models or Cancel to abort the restoration.ModelRestorationFormHOpration annule par l'utilisateur.Operation canceled by the user.ModelValidationHelperIl y a des erreurs en attente ! La validation SQL ne sera pas excute.>There are pending errors! SQL validation will not be executed.ModelValidationHelper......ModelValidationWidget00ModelValidationWidget(<em>L'objet ci-dessus a t cr par une relation. Changer le motif du nom sur sa relation de gnrateur. La correction ne sera pas applique !</Em>The above object was created by a relationship. Change the name pattern on it's generator relationship. Fix will not be applied!ModelValidationWidget<strong>CONSEIL :</strong> essayer d'changer la relation par une autre qui est lie celle-ci via des colonnes gnres ou des contraintes pour rsoudre ce problme. Noter que d'autres objets peuvent tre perdus dans le processus d'change.HINT: try to swap the relationship by another ones that somehow are linked to it through generated columns or constraints to solve this issue. Note that other objects may be lost in the swap process.ModelValidationWidgetAuto dtection AutodetectModelValidationWidgetAnnulerCancelModelValidationWidget`Annuler le processus de validation SQL en cours.&Cancel the SQL validation in progress.ModelValidationWidgetModifie l'ordre de cration de deux objets en changeant leurs numros d'identification?Change the creation order for two objects by swapping their idsModelValidationWidgetEffacerClearModelValidationWidgetHEffacer le rsultat de la validationClear validation resultsModelValidationWidgetjObjet en conflit : <strong>%1</strong> <em>(%2)</em>.6Conflicting object: %1 (%2).ModelValidationWidgetVConnexion utiliser dans la validation SQL+Connection to be used in the SQL validationModelValidationWidget Ctrl+SCtrl+SModelValidationWidgetZModle de base de donnes valid avec succs.&Database model successfully validated.ModelValidationWidgetErreurs : le modle ne peut tre sauvegard tant que des erreurs de validation subsistent.BErrors: model will not be saved while there are validation errors.ModelValidationWidget chapEscModelValidationWidgetFormulaireFormModelValidationWidget Fermer ce widgetHide this widgetModelValidationWidgetOptionsOptionsModelValidationWidget*Version de PostgreSQLPostgreSQL versionModelValidationWidget4Traitement de l'objet : %1Processing object: %1ModelValidationWidgetxObjet rferent : <strong>%1</strong> <em>(%2)</em> [id: %3].%1 (%2) [id: %3].ModelValidationWidgetRRelation : <strong>%1</strong> [id : %2].+Relationship: %1 [id: %2].ModelValidationWidgetZExcution des commandes SQL sur le serveur...!Running SQL commands on server...ModelValidationWidget Validation SQL :SQL Validation:ModelValidationWidgetLa validation SQL n'est pas excute ! Aucune connexion dfinie.3SQL validation not executed! No connection defined.ModelValidationWidget*changer identifiantsSwap idsModelValidationWidgetL'objet <strong>%1</strong> <em>(%2)</em> [id: %3] est rfrenc par <strong>%4</strong> objet(s) avant sa cration.The object %1 (%2) [id: %3] is being referenced by %4 object(s) before its creation.ModelValidationWidget*L'objet <strong>%1</strong> <em>(%2)</em> [id : %3]%4 rfrence des colonnes cres par <strong>%5</strong> association(s) mais a t cr avant eux.The object %1 (%2) [id: %3]%4 is referencing columns created by %5 relationship(s) but is created before them.ModelValidationWidgetLa relation <strong>%1</strong> [id : %2] est dans un tat d'invalidation permanent et a besoin d'tre dplac.mThe relationship %1 [id: %2] is in a permanent invalidation state and needs to be relocated.ModelValidationWidgetvEssayer d'appliquer le correctif sur l lment slectionn.3Try to apply a fix on the selected validation info.ModelValidationWidgetZEssayer de rsoudre les problmes rencontrs.#Try to resolve the reported issues.ModelValidationWidgetUtiliser des noms temporaires uniques pour les objets de niveau cluster4Use unique temporary names for cluster level objectsModelValidationWidgetVa&lider Va&lidateModelValidationWidgetxAvertissements : n'empche de pouvoir sauvegarder le modle..Warnings: does not prevents model to be saved.ModelValidationWidget(aucun objet) (no objects) ModelWidget90° (horizontal) ModelWidget90° (vertical) ModelWidget90° + 90° (horizontal) ModelWidget90° + 90° (vertical) ModelWidget<strong>ATTENTION :</strong> Le modle de base de donnes est protg ! Les oprations qui pourraient le modifier sont dsactives !jATTENTION: The database model is protected! Operations that could modify it are disabled! ModelWidget<strong>ATTENTION :</strong> Supprimer une association peut entraner des invalidations irrversibles d'autres objets dans le modle, entranant galement la suppression de ces objets invalides. Voulez-vous vraiment poursuivre ?CAUTION: Remove a relationship can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? ModelWidget<strong>ATTENTION :</strong> Supprimer plusieurs objets la fois peut entraner des invalidations irrversibles sur d'autres objets du modle, entranant galement la suppression de ces objets invalides. Voulez-vous vraiment poursuivre ?CAUTION: Remove multiple objects at once can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? ModelWidget<strong>ATTENTION :</strong> Vous tes sur le point de supprimer des objets en mode cascade, ce qui signifie que des objets non slectionns seront galement supprims. Souhaitez-vous vraiment poursuivre ?CAUTION: You are about to delete objects in cascade mode which means more objects than the selected will be dropped too. Do you really want to proceed? ModelWidgetLAjouter un nouvel objet dans le modleAdd a new object in the model ModelWidget$Tous les attributsAll attributes ModelWidgetTous les objets All objects ModelWidget8Copier galement les dpendences des objets slectionns ? Cela minimise la casse des rfrences lorsque les objets copis sont colls dans un autre modle.Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. ModelWidgetAlt+Q ModelWidgetAlt+S ModelWidget Cassure de ligne Break line ModelWidget.Ramener au premier planBring to front ModelWidget.Changer le propritaire Change owner ModelWidgetReplierCollapse ModelWidgetContraintes Constraints ModelWidgetConvertirConvert ModelWidget*Convertir en squenceConvert to sequence ModelWidget$Convertir en srieConvert to serial ModelWidget CopierCopy ModelWidgetCtrl+A ModelWidgetCtrl+C ModelWidgetCtrl+D ModelWidgetCtrl+E ModelWidgetCtrl+V ModelWidgetCtrl+X ModelWidget*Code SQL personnalis Custom SQL ModelWidget CouperCut ModelWidget0Objet de base de donnesDatabase object ModelWidget SupprDel ModelWidget(Supprimer en cascade Del. cascade ModelWidgetSupprimerDelete ModelWidgetLVoir les dpendances && les rfrencesDeps && Referrers ModelWidgetDsactiverDisable ModelWidget,Dsactiver le code SQL Disable SQL ModelWidgetVoulez-vous vraiment convertir les associations en une table intermdiaire ?JDo you really want to convert the relationship into an intermediate table? ModelWidgetrSouhaitez-vous rellement supprimer l'objet slectionn ?1Do you really want to delete the selected object? ModelWidgetSouhaitez vous galement %1 l'objet enfant du schma <strong>%2</strong> ?EDo you want to %1 the children of the schema %2 too? ModelWidgetDupliquer Duplicate ModelWidget(Modifier les donnes Edit data ModelWidget0Modifier les permissionsEdit permissions ModelWidgetDModifier les proprits de l'objetEdit the object properties ModelWidgetModifier l'ordre de cration des objets en changeant leurs identifiants5Edit the objects creation order by swapping their ids ModelWidgetActiverEnable ModelWidget&Activer le code SQL Enable SQL ModelWidget8Attributs tendus uniquementExtended attributes ModelWidgetF2 ModelWidgetAccentuerFade in ModelWidgetTransparence Fade in/out ModelWidgetEstomperFade out ModelWidget Tables distantesForeign Tables ModelWidgetNGnration du code XML pour : `%1' (%2)Generating XML for: `%1' (%2) ModelWidgetMasquerHide ModelWidget Aller la table Jump to table ModelWidgetLOuverture du modle de base de donnesLoading database model ModelWidget.Dplacer vers la couche Move to layer ModelWidget.Dplacer vers le schemaMove to schema ModelWidgetNouveauNew ModelWidget AucunNone ModelWidgetDTous les objets n'ont pas t colls dans le modle car des erreurs ont t retournes durant le processus ! Se rfrer la pile d'erreurs pour plus de dtails !zNot all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! ModelWidget@Aucun repliement (tout afficher) Not collapsed ModelWidget(Ouvrir les relationsOpen relationship ModelWidget0Pagination des attributs Pagination ModelWidget CollerPaste ModelWidget<Collage de l'objet : `%1' (%2)Pasting object: `%1' (%2) ModelWidget*Collage des objets...Pasting objects... ModelWidgetProprits Properties ModelWidgetVrrouillerProtect ModelWidgetREmpcher la modification du ou des objets%Protects object(s) from modifications ModelWidgetActions rapidesQuick ModelWidgetLAction rapide pour l'objet slectionn$Quick action for the selected object ModelWidget6Renommage rapide de l'objetQuick rename the object ModelWidgetAssociations Relationships ModelWidget(Supprimer des points Remove points ModelWidgetRenommerRename ModelWidgetVEnregistrement du modle de base de donnesSaving database model ModelWidgetObjet de schma Schema object ModelWidgetSchmasSchemas ModelWidget,Rectangles des schmasSchemas rectangles ModelWidgetSlectionnerSelect ModelWidget"Tout slectionner Select all ModelWidget0Slectionner les enfantsSelect children ModelWidget"Slction balise Select tagged ModelWidgetbSlectionner tous les objets graphiques du modle.Selects all the graphical objects in the model ModelWidget0Envoyer l'arrire plan Send to back ModelWidget&Affecter une baliseSet tag ModelWidgetShift+Suppr Shift+Del ModelWidgetAfficherShow ModelWidgetDAfficher le code source de l'objetShow object source code ModelWidgetSource ModelWidgetCode source Source code ModelWidget EspaceSpace ModelWidgetPositionnementStacking ModelWidget2changer les identifiantsSwap ids ModelWidget2Table && ses associationsTable && Relationships ModelWidget TablesTables ModelWidget Botes de textes Textboxes ModelWidgetLa suppression en cascade a rencontr des problmes lors de son excution ! Certains objets n'ont pas pu tre supprims ou enregistrs dans l'historique des oprations ! Veuillez vous reporter la pile d'erreurs pour plus de dtails.The cascade deletion found some problems when running! Some objects could not be deleted or registered in the operation's history! Please, refer to error stack for more details. ModelWidgetDverrouiller Unprotect ModelWidgetBValidation de l'objet : `%1' (%2)Validating object: `%1' (%2) ModelWidgetVuesViews ModelWidgetZoom : %1% Zoom: %1% ModelWidgetprotgerprotect ModelWidgetdprotger unprotect ModelWidgetpAucune diffrence entre le modle et la base de donnes..No differences between the model and database.ModelsDiffHelperJPrparation du code de comparaison...Preparing diff code...ModelsDiffHelperfTraitement de l'info `%1' pour l'objet `%2' (%3)...,Processing `%1' info for object `%2' (%3)...ModelsDiffHelper>Comparaison des informations...Processing diff infos...ModelsDiffHelperDTraitement de l'objet `%1' (%2)...Processing object `%1' (%2)...ModelsDiffHelper@Omission de l'objet `%1' (%2)...Skipping object `%1' (%2)...ModelsDiffHelper0NewObjectOverlayWidget1NewObjectOverlayWidget2NewObjectOverlayWidget3NewObjectOverlayWidget4NewObjectOverlayWidget5NewObjectOverlayWidget66NewObjectOverlayWidget77NewObjectOverlayWidget8NewObjectOverlayWidget9NewObjectOverlayWidgetANewObjectOverlayWidgetAgrgat AggregateNewObjectOverlayWidgetBNewObjectOverlayWidgetCNewObjectOverlayWidget$Conversion de typeCastNewObjectOverlayWidget CollationNewObjectOverlayWidgetColonneColumnNewObjectOverlayWidgetContrainte ConstraintNewObjectOverlayWidgetConversion ConversionNewObjectOverlayWidget CopieCopyNewObjectOverlayWidgetDNewObjectOverlayWidget$Wrapper de donnes Data WrapperNewObjectOverlayWidget2Objets de base de donnesDatabase objectsNewObjectOverlayWidgetDomaineDomainNewObjectOverlayWidgetENewObjectOverlayWidget2Dclencheur sur vnement Event TriggerNewObjectOverlayWidget ExtensionNewObjectOverlayWidgetFNewObjectOverlayWidgetTable distante Foreign TableNewObjectOverlayWidgetFormulaireFormNewObjectOverlayWidgetFonctionFunctionNewObjectOverlayWidgetGNewObjectOverlayWidgetSQL gnrique Generic SQLNewObjectOverlayWidgetHNewObjectOverlayWidgetINewObjectOverlayWidgetIndexNewObjectOverlayWidgetHritage InheritanceNewObjectOverlayWidgetJNewObjectOverlayWidgetKNewObjectOverlayWidgetLNewObjectOverlayWidgetLangageLanguageNewObjectOverlayWidgetMNewObjectOverlayWidget*Plusieurs--plusieurs Many-to-manyNewObjectOverlayWidgetONewObjectOverlayWidgetUn--plusieurs One-to-manyNewObjectOverlayWidgetUn--un One-to-oneNewObjectOverlayWidgetClasse d'op. Op. ClassNewObjectOverlayWidgetFamille d'op. Op. FamilyNewObjectOverlayWidgetOprateurOperatorNewObjectOverlayWidgetPNewObjectOverlayWidgetPartionnement PartitioningNewObjectOverlayWidget PermissionsNewObjectOverlayWidgetPolitiquePolicyNewObjectOverlayWidgetQNewObjectOverlayWidgetRNewObjectOverlayWidgetAssociations RelationshipsNewObjectOverlayWidgetRleRoleNewObjectOverlayWidget RgleRuleNewObjectOverlayWidgetSNewObjectOverlayWidget SchmaSchemaNewObjectOverlayWidget Objets de schmaSchema objectsNewObjectOverlayWidgetSquenceSequenceNewObjectOverlayWidgetServeurServerNewObjectOverlayWidgetTNewObjectOverlayWidgetTableNewObjectOverlayWidgetObjets de table Table objectsNewObjectOverlayWidgetTablespace TablespaceNewObjectOverlayWidgetTagTagNewObjectOverlayWidgetZone de texteTextboxNewObjectOverlayWidgetDclencheurTriggerNewObjectOverlayWidgetTypeNewObjectOverlayWidgetUNewObjectOverlayWidget8Correspondance d'utilisateur User mappingNewObjectOverlayWidgetVNewObjectOverlayWidgetVueViewNewObjectOverlayWidgetWNewObjectOverlayWidgetXNewObjectOverlayWidgetYNewObjectOverlayWidgetZNewObjectOverlayWidgetEffacerClearNumberedTextEditorModifierEditNumberedTextEditor`Modifier le code source avec son diteur prfr5Edit the source code in the preferred external editorNumberedTextEditorImpossible Failed to the source code editor %1! Make to sure that the source editor path points to a valid executable and the current user has permission to run the application. Error message returned: %2NumberedTextEditorIdent gauche Ident leftNumberedTextEditorIdent droit Ident rightNumberedTextEditorChargerLoadNumberedTextEditor$Charger un fichier Load fileNumberedTextEditorvCharger le code source de l'objet depuis un fichier externe3Load the object's source code from an external fileNumberedTextEditorMinuscule Lower caseNumberedTextEditorXFichier SQL (*.sql);;Tous les fichiers (*.*)!SQL file (*.sql);;All files (*.*)NumberedTextEditordL'diteur de source `%1' s'excute sur pid : `%2'./The source editor `%1' is running on `pid: %2'.NumberedTextEditorMajuscule Upper caseNumberedTextEditorDpendances DependenciesObjectDepsRefsWidgetDExclure les dpendances indirectesExclude indirect dependenciesObjectDepsRefsWidgetIDIDObjectDepsRefsWidgetBInclure les rfrences indirectesInclude indirect referencesObjectDepsRefsWidget ObjetObjectObjectDepsRefsWidgetHDpendances et rfrences d'un objet"Object's dependencies & referencesObjectDepsRefsWidgetObjet parent Parent ObjectObjectDepsRefsWidgetType parent Parent TypeObjectDepsRefsWidgetRfrences ReferencesObjectDepsRefsWidgetCet objet n'existe plus. L'affichage de ses dpendances et rfrences est dsactiv.ZThis object does not exists anymore. The dependencies and references listing are disabled.ObjectDepsRefsWidgetTypeTypeObjectDepsRefsWidget(Ds)slectionner les objets graphiques dans la grille des rsultats5(Un)selects the graphical objects in the results gridObjectFinderWidget......ObjectFinderWidget&Sensible la casseCase SensitiveObjectFinderWidgetEffacerClearObjectFinderWidgetTout effacer Clear AllObjectFinderWidget*Effacer les rsultatsClears the search resultsObjectFinderWidgetCommentaireCommentObjectFinderWidgetType de donne Data typeObjectFinderWidget:Dfini le filtre de rechercheDefines the search filterObjectFinderWidget*Correspondance exacte Exact MatchObjectFinderWidgetEstomperFade outObjectFinderWidgetFiltrerFilterObjectFinderWidgetChercherFindObjectFinderWidgetFormulaireFormObjectFinderWidgetN<strong>%1</strong> objet(s) trouv(s).$Found %1 object(s).ObjectFinderWidget Cacher ce widgetHide this widgetObjectFinderWidgetIdentifiantIDObjectFinderWidget ListListedObjectFinderWidgetNomNameObjectFinderWidget&Aucun objet trouv.No objects found.ObjectFinderWidgetNon list Not listedObjectFinderWidget ObjetObjectObjectFinderWidgetPropritaireOwnerObjectFinderWidgetObjet parent Parent ObjectObjectFinderWidgetType parent Parent TypeObjectFinderWidgetMotif :Pattern:ObjectFinderWidget*Expression rguliresRegular ExpressionObjectFinderWidgetType de retour Return typeObjectFinderWidget SchmaSchemaObjectFinderWidgetSlectionnerSelectObjectFinderWidget"Tout slectionner Select AllObjectFinderWidgetSignature SignatureObjectFinderWidgetTablespace TablespaceObjectFinderWidgetTypeTypeObjectFinderWidget........ObjectRenameWidget<strong>ATTENTION :<strong>Vous allez renommer plusieurs objets la fois ! Cette opration peut entriner des changements irrversibles sur des objets non slectionns. Souhaitez-vous continuer ?CAUTION: You're about to rename multiple objects at once! This operation may cause irreversible changes to other objects not necessarily selected. Do you really want to proceed?ObjectRenameWidgetAnnulerCancelObjectRenameWidgetFormulaireFormObjectRenameWidgetRenommerRenameObjectRenameWidgetTRenommer <strong>%1</strong> objet(s) en :(Rename %1 object(s) to:ObjectRenameWidgeten :to:ObjectRenameWidget Effacer le champ Clear fieldObjectSelectorWidgetFormulaireFormObjectSelectorWidgetSlectionner %1 Select %1ObjectSelectorWidget*Slectionner un objet Select ObjectObjectSelectorWidget"Couche par dfaut Default layer ObjectsScene$Ajouter un lmentAdd ItemObjectsTableWidgetAlt+RObjectsTableWidget ConfirmationObjectsTableWidgetCtrl+DObjectsTableWidgetCtrl+Bas Ctrl+DownObjectsTableWidget Ctrl+Fin, Ctrl+SCtrl+End, Ctrl+SObjectsTableWidgetCtrl+dbut Ctrl+HomeObjectsTableWidgetCtrl+HautCtrl+UpObjectsTableWidget SupprDelObjectsTableWidgetnSouhaitez-vous rellement supprimer tous les lments ?+Do you really want to remove all the items?ObjectsTableWidgetvSouhaitez-vous rellement supprimer l'lment slectionn ?/Do you really want to remove the selected item?ObjectsTableWidget&Dupliquer l'lmentDuplicate itemObjectsTableWidget$Modifier l'lment Edit ItemObjectsTableWidgetFormulaireFormObjectsTableWidgetInsrerInsObjectsTableWidget(Dplacer vers le bas Move DownObjectsTableWidget*Dplacer vers le hautMove UpObjectsTableWidget"Dplacer la fin Move to endObjectsTableWidget"Dplacer au dbut Move to startObjectsTableWidgetTout supprimer Remove AllObjectsTableWidget(Supprimer un lment Remove ItemObjectsTableWidget`Retailler la largeur des colonnes leur contenuResize columns to fit contentsObjectsTableWidgetMaj+Suppr Shift+DelObjectsTableWidget EspaceSpaceObjectsTableWidget(Actualiser l'lment Update ItemObjectsTableWidget (objet invalide)(invalid object) OperationList......OperationListWidget00OperationListWidget11OperationListWidgetJSupprimer l'historique des oprationsDelete operation historyOperationListWidgetEffacer l'historique des oprations excutes est une action irrversible, souhaitez-vous continuer ?ZDelete the executed operations history is an irreversible action, do you want to continue?OperationListWidget(Oprations excutesExecuted OperationsOperationListWidget Cacher ce widgetHide this widgetOperationListWidgetFExclure l'historique des oprationsOperation history exclusionOperationListWidgetOprations : Operations:OperationListWidgetPosition : Position:OperationListWidgetRtablirRedoOperationListWidgetAnnulerUndoOperationListWidgetcrcreatedOperationListWidgetmodifimodifiedOperationListWidgetdplacmovedOperationListWidgetsupprimremovedOperationListWidget&Classe par dfaut :Default Class:OperatorClassWidget Type d'lment : Element Type:OperatorClassWidgetlmentsElementsOperatorClassWidgetFonctionFunctionOperatorClassWidgetFonction : Function:OperatorClassWidgetIndexation : Indexing:OperatorClassWidget ObjetObjectOperatorClassWidget,Famille d'oprateurs : Op. Family:OperatorClassWidgetOprateurOperatorOperatorClassWidget(Famille d'oprateursOperator FamilyOperatorClassWidgetOprateur : Operator:OperatorClassWidgetStockageStorageOperatorClassWidget Type de Stockage Storage TypeOperatorClassWidget"Support/StratgieSupport/StrategyOperatorClassWidget&Support/Stratgie :Support/Strategy:OperatorClassWidgetTypeOperatorClassWidgetIndexation : Indexing:OperatorFamilyWidget AvancAdvancedOperatorWidgetArguments ArgumentsOperatorWidgetCommutateur : Commutator:OperatorWidget HASHESHASHESOperatorWidgetJointure :Join:OperatorWidget2Type d'argument de gaucheLeft Argument TypeOperatorWidget MERGESMERGESOperatorWidgetNgateur :Negator:OperatorWidget2Fonction de l'oprateur :Operator Func.:OperatorWidgetOptions :Options:OperatorWidgetRestriction : Restrict:OperatorWidget2Type d'argument de droiteRight Argument TypeOperatorWidgetDPour crer un oprateur unitaire, il est ncessaire de spcifier <strong><em>'any'</em></strong> comme l'un de ses arguments. De plus, la fonction qui dfinit l'oprateur doit avoir seulement un paramtre et celui-ci doit avoir le mme type de donne que l'argument de l'oprateur unitaire.To create a unary operator it is necessary to specify as 'any' one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator.OperatorWidget&Valeur par dfaut :Default Value:ParameterWidgetININParameterWidget Mode :Mode:ParameterWidgetOUTOUTParameterWidgetVARIADICVARIADICParameterWidgetAcco&rder&GrantPermissionWidgetZ-- Aucune permission dfinie pour cet objet !3-- No permissions defined for the specified object!PermissionWidget/* Impossible de gnrer la prvisualisation du code SQL pour les permissions !;/* Could not generate the SQL code preview for permissions!PermissionWidget$Ajouter permissionAdd PermissionPermissionWidget&Annuler l'oprationCancel OperationPermissionWidgetCascadeCascadePermissionWidget0Prvisualisation du code Code PreviewPermissionWidget,Dsactiver le code SQLDisable SQL codePermissionWidget0Modifier les permissionsEdit permissionsPermissionWidgetGRANT OPTION GRANT OPTIONPermissionWidgetIdentifiant :ID:PermissionWidgetIdPermissionWidgetLaissez la grille <em><strong>Rles</strong></em> vide afin de crer un %1 applicable <strong><em>PUBLIC</em></strong>.|Leave the Roles grid empty in order to create a %1 applicable to PUBLIC.PermissionWidgetNomNamePermissionWidgetPermissions PermissionsPermissionWidgetPrivilge PrivilegePermissionWidgetPrivilges PrivilegesPermissionWidgetR&voquerRe&vokePermissionWidget RlesRolesPermissionWidget*Actualiser permissionUpdate PermissionPermissionWidget0Impossible de crer les fichiers de configuration initiaux dans `%1' ! Vrifiez que le dossier existe et que vous ayez la permission d'crire dans `%2'.Failed to create initial configuration in `%1'! Check if the current user has write permission over that path and at least read permission over `%2'. PgModelerApp>Exception inconnue rencontre !Unknown exception caught! PgModelerAppT ** Ces objets ne peuvent tre corrigs : # ** Object(s) that couldn't fixed: PgModelerCliApp> %1, %2=[CODES] Ignore les erreurs supplmentaires par leurs codes. Une liste de codes alphanumriques spars par des virgules doit tre fournie. {1,?} {2 ?}{ %1, %2 [CODES] Ignores additional errors by their codes. A comma-separated list of alphanumeric codes should be provided.PgModelerCliApp@ interface en ligne de commande. command line interface.PgModelerCliAppImpossible d'effacer le fichier %1 ! Vrifiez si l'utilisateur actuel dispose des autorisations pour le supprimer et si le fichier existe.gCan't erase the file %1! Check if the current user has permissions to delete it and if the file exists.PgModelerCliAppVOptions d'export directe dans un serveur : DBMS export options: PgModelerCliAppLes fichiers de modle de bases de donnes (.dbm) sont dj associs pgModeler !@Database model files (.dbm) are already associated to pgModeler!PgModelerCliApp8Extraction des objets XML...Extracting objects' XML...PgModelerCliApp(Options gnrales : General options: PgModelerCliApp`Les informations de connexion sont incompltes !"Incomplete connection information!PgModelerCliAppxLe fichier source doit tre diffrent du fichier de sortie !)Input file must be different from output!PgModelerCliAppxAction spcifie invalide pour mettre jour l'option mime !/Invalid action specified to update mime option!PgModelerCliAppFichier d'entre invalide ! Il semble que ce ne soit pas un modle gnr par pgModeler ou que le fichier soit corrompu !^Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted!PgModelerCliApp0Zoom spcifi invalide !Invalid zoom specified!PgModelerCliAppLOpration de base de donnes mime : %1Mime database operation: %1PgModelerCliApp&Options diverses : Miscellaneous options: PgModelerCliApp2Modle fix avec succs !Model successfully fixed!PgModelerCliAppLL'option '%1' n'accepte pas de valeur.#Option '%1' does not accept values.PgModelerCliAppBOptions d'export en PNG et SVG : PNG and SVG export options: PgModelerCliApp0Recration des objets...Recreating objects...PgModelerCliApp`Excution de la commande update-mime-database...'Running update-mime-database command...PgModelerCliAppLLancement de la mise jour du mime...Starting mime update...PgModelerCliApp<Dbut de l'export du modle...Starting model export...PgModelerCliAppJLancement de la fixation du modle...Starting model fixing...PgModelerCliAppJIl n'y a aucune connexion configure.$There are no connections configured.PgModelerCliAppIl n'y a pas d'association entre pgModeler et .les fichiers dbm !AThere is no file association related to pgModeler and .dbm files!PgModelerCliApp2Option '%1' non reconnue.Unrecognized option '%1'.PgModelerCliAppJUtilisation : pgmodeler-cli [OPTIONS]Usage: pgmodeler-cli [OPTIONS]PgModelerCliAppHValeur pour l'option '%1' manquante.$Value not specified for option '%1'.PgModelerCliAppAVERTISSEMENT : Certains objets ne peuvent peut-tre pas tre corrigs. Nouvel essai... (%1/%2)SWARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2)PgModelerCliAppAuteur : %1 Author: %1PgModelerPlugin.Information d'extensionPlugin InformationPgModelerPluginVersion : %1 Version: %1PgModelerPlugin%1 autre erreur(s) ont t supprims en raison de la limite de taille de la pile d'appels.BAnother %1 error(s) were suppressed due to stacktrace size limits. PgModelerUiNsfSouhaitez-vous appliquer le statut SQL <strong>%1</strong> aux rfrences de l'objet galement ? Cela permet d'viter des problmes lors de l'export ou de la validation du modle.Do you want to apply the SQL %1 status to the object's references too? This will avoid problems when exporting or validating the model. PgModelerUiNsdsactiv disabling PgModelerUiNs activenabling PgModelerUiNsType de donne Data TypePgSQLTypeWidgetDimension DimensionPgSQLTypeWidgetFormulaireFormPgSQLTypeWidgetFormat :Format:PgSQLTypeWidgetIntervalle : Interval:PgSQLTypeWidgetL :L:PgSQLTypeWidgetLongueurLengthPgSQLTypeWidgetMMPgSQLTypeWidget AUCUNNONEPgSQLTypeWidgetP :P:PgSQLTypeWidgetPrcision PrecisionPgSQLTypeWidget SRID :SRID:PgSQLTypeWidgetSpatial :Spatial:PgSQLTypeWidget Fuseau horaire : Timezone:PgSQLTypeWidget Type :Type:PgSQLTypeWidgetVariation : Variation:PgSQLTypeWidgetZZPgSQLTypeWidget [ ] :[ ]:PgSQLTypeWidgetrDans la version de dmonstration, les tables ne peuvent contenir que `%1' instance(s) de chaque type d'objet enfant ou table anctre ! Vous avez atteint cette limite pour le type : `%2'In demonstration version tables can have only `%1' instances of each child object type or ancestor tables! You've reach this limit for the type: `%2' PhysicalTableFormulaireFormPluginsConfigWidgetBibliothqueLibraryPluginsConfigWidget&Extensions chargesLoaded plug-insPluginsConfigWidgetLOuvrir dans le gestionnaire de fichierOpen in file managerPluginsConfigWidgetDRpertoire racine des extensions :Plug-ins root directory:PluginsConfigWidgetExtensionPluginPluginsConfigWidgetVersionPluginsConfigWidgetNotions de baseBasics PolicyWidgetCHECK :CHECK: PolicyWidgetCommande :Command: PolicyWidget Expressions PolicyWidgetLaissez la grille <em><strong>Rles</strong></em> vide afin de crer un %1 applicable <strong><em>PUBLIC</em></strong>.|Leave the Roles grid empty in order to create a %1 applicable to PUBLIC. PolicyWidgetNomName PolicyWidgetPermissif Permissive PolicyWidget RlesRoles PolicyWidgetUSING :USING: PolicyWidget%1 (ligne : %2) %1 (line: %2)QObject0nouvelle_base_de_donnes new_databaseQObjectColonnesColumnsReferenceWidgetExpression ExpressionReferenceWidgetExpression : Expression:ReferenceWidgetNomNameReferenceWidget Nom :Name:ReferenceWidgetProprits PropertiesReferenceWidget$Tables rfrencesReferenced tablesReferenceWidget SchmaSchemaReferenceWidgetTable :Table:ReferenceWidgetTypeTypeReferenceWidgetUtilis dans :Used in:ReferenceWidget(Dfinition de la vueView DefinitionReferenceWidgetH<p>Mode optimis. La liaison s'effectue entre les tables en un point optimal sur les bords des tables. Ce mode utilise la notation classique Entit-Association.</p>

This mode determines the optimal point where the relationship is connected on the tables' edges taking their position into account. It implies the usage of the classical ER notation.

RelationshipConfigWidget

This mode is the classical one. It connects the relationship to tables through their central points. It implies the usage of the classical ER notation.

RelationshipConfigWidget<p>Mode en patte de corbeau. La liaison s'effectue entre les tables avec cette notation pour une meilleure lisibilit.</p>

This mode renders the relationships in crow's foot notation which has a better semantics and readability. It also determines the optimal point where the relationship is connected on the tables' edges taking their position into account.

RelationshipConfigWidget$Colonne (Source) :Column (Source):RelationshipConfigWidget"Colonne (Cible) :Column (Target):RelationshipConfigWidgetzRelier via les colonnes des cls trangres et cls primairesConnect FK to PK columnsRelationshipConfigWidget4Relier en un point centralConnect tables' center pointsRelationshipConfigWidget>Relier par les bords des tablesConnect tables' edgesRelationshipConfigWidgetAffichageConnection ModeRelationshipConfigWidgetPRelier en patte de corbeau (Crow's foot)Crow's foot notationRelationshipConfigWidget DfautDefaultRelationshipConfigWidgetReportable : Deferrable:RelationshipConfigWidgetReport : Deferral:RelationshipConfigWidget4Cls trangres && nommageFK Settings && PatternsRelationshipConfigWidget0Cl trangre (Source) :Foreign Key (Source):RelationshipConfigWidget.Cl trangre (Cible) :Foreign Key (Target):RelationshipConfigWidgetCls trangresForeign key settingsRelationshipConfigWidgetFormulaireFormRelationshipConfigWidget"Rgles de nommage Name patternsRelationshipConfigWidgetON DELETE : ON DELETE:RelationshipConfigWidgetON UPDATE : ON UPDATE:RelationshipConfigWidgetHMotif pour les noms de colonnes gnres qui sont bases sur la cl primaire d'une table rfrence (1 :1 et 1 :n) ou sur la cl primaire de la table source (n :n).rPattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipConfigWidgetMotif pour les noms de colonnes gnres qui sont bases sur la cl primaire de la table cible (n :n).APattern for columns generated based upon target table's pk (n-n).RelationshipConfigWidgetVMotif pour les noms de cls trangres gnres qui sont bases sur la cl primaire d'une table rfrence (1 :1 et 1 :n) ou sur la cl primaire de la table source (n :n).vPattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipConfigWidgetMotif pour les noms de cls trangres gnres qui sont bases sur une cl primaire de la table cible (n :n).EPattern for foreign key generated based upon target table's pk (n-n).RelationshipConfigWidgetMotif pour les noms de cls primaires qui sont gnres par une relation.=Pattern for primary key generated by identifier relationship.RelationshipConfigWidgetMotif pour les noms de cls uniques qui sont gnres par une association.5Pattern for unique key generated by the relationship.RelationshipConfigWidget4Nom colonne cl primaire :Primary Key Column:RelationshipConfigWidget:Nom contrainte cl primaire :Primary Key Name:RelationshipConfigWidget$Type de relation :Relationship type:RelationshipConfigWidgetCe mode d'affichage est disponible uniquement pour les associations de type <strong>un--un</strong>, <strong>un--plusieurs</strong> et <strong>les associations aux cls trangres</strong> mais fournit une meilleure smantique lors de l'association de tables en plaant les lignes sur le point exact o l'association se produit. Cela implique l'utilisation de la notation ER classique.-This mode is available only for one-to-one, one-to-many and fk relationships but provides a better semantics when linking tables by placing the lines on the exact point where the relationship occurs. It implies the usage of the classical ER notation.RelationshipConfigWidget.Nom contrainte unique :Unique Key Name:RelationshipConfigWidget est requis is requiredRelationshipWidgetTOUTALLRelationshipWidget AvancAdvancedRelationshipWidgetAttribut AttributeRelationshipWidgetAttributs AttributesRelationshipWidgettFormes disponibles pour dfinir les modles de noms : <br/> <strong>%1</strong> = Nom de la colonne de cl primaire de rfrence (source). <em>(Ignor sur les modles de contrainte)</em><br/> <strong>%2</strong> = Nom de la table de rfrence (source).<br/> <strong>%3</strong> = Nom de la table rfrence (ou de dstination). <br/> <strong>%4</strong> = Nom de la table gnre. <em>(Seulement pour les relations n:n)</em>|Available tokens to define name patterns:
%1 = Reference (source) primary key column name. (Ignored on constraint patterns)
%2 = Reference (source) table name.
%3 = Receiver (destination) table name.
%4 = Generated table name. (Only for n:n relationships)RelationshipWidgetCOMMENTAIRESCOMMENTSRelationshipWidgetCONTRAINTES CONSTRAINTSRelationshipWidgetCardinalit : Cardinality:RelationshipWidget$Colonne (Source) :Column (Source):RelationshipWidget"Colonne (Cible) :Column (Target):RelationshipWidgetContrainte ConstraintRelationshipWidgetContraintes ConstraintsRelationshipWidget Options de copie Copy OptionsRelationshipWidget.Couleur personnalise : Custom Color:RelationshipWidgetDEFAUTSDEFAULTSRelationshipWidget DfautDefaultRelationshipWidgetReportable : Deferrable:RelationshipWidgetReport : Deferral:RelationshipWidgetE&XCLUSION E&XCLUDINGRelationshipWidget0Cl trangre (Source) :Foreign Key (Source):RelationshipWidget.Cl trangre (Cible) :Foreign Key (Target):RelationshipWidgetRProprits par dfaut des cls trangresForeign key SettingsRelationshipWidget(Nom nouvelle table :Gen. Table Name:RelationshipWidgetGnralGeneralRelationshipWidgetINCLURE INCLUDINGRelationshipWidget INDEXINDEXESRelationshipWidgetIdentifiant IdentifierRelationshipWidget AUCUNNONERelationshipWidgetNomNameRelationshipWidget"Rgles de nommage Name PatternsRelationshipWidget|Nom de la table gnre par une relation plusieurs plusieurs:Name of the table generated from many to many relationshipRelationshipWidgetON DELETE : ON DELETE:RelationshipWidgetON UPDATE : ON UPDATE:RelationshipWidgetHMotif pour les noms de colonnes gnres qui sont bases sur la cl primaire d'une table rfrence (1 :1 et 1 :n) ou sur la cl primaire de la table source (n :n).rPattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipWidgetMotif pour les noms de colonnes gnres qui sont bases sur la cl primaire de la table cible (n :n).APattern for columns generated based upon target table's pk (n-n).RelationshipWidgetVMotif pour les noms de cls trangres gnres qui sont bases sur la cl primaire d'une table rfrence (1 :1 et 1 :n) ou sur la cl primaire de la table source (n :n).vPattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipWidgetMotif pour les noms de cls trangres gnres qui sont bases sur une cl primaire de la table cible (n :n).EPattern for foreign key generated based upon target table's pk (n-n).RelationshipWidgetMotif pour les noms de cls primaires qui sont gnres par une association.=Pattern for primary key generated by identifier relationship.RelationshipWidgetMotif pour les noms de cls uniques qui sont gnres par une association.5Pattern for unique key generated by the relationship.RelationshipWidget*Nom de cl primaire :Primary Key Name:RelationshipWidgetCl primaire Primary keyRelationshipWidget2Colonne de cl primaire :Primay Key Column:RelationshipWidget,Table de destination :Receiver Table:RelationshipWidget"Table rfrente :Reference Table:RelationshipWidget$Table rfrence :Referenced Table:RelationshipWidget"Table rfrente :Referer Table:RelationshipWidgetVue rfrente : Referer View:RelationshipWidget$Type de relation : Rel. Type:RelationshipWidgetSTOCKAGESTORAGERelationshipWidgetParamtresSettingsRelationshipWidget6Colonne cl primaire simpleSingle PK columnRelationshipWidgetTable n1 :Table 1:RelationshipWidgetTable n2 :Table 2:RelationshipWidgetTCet onglet avanc montre les objets (colonnes ou tables) gnrs automatiquement par la relation ainsi que les cls trangres qui forment le(s) lien(s) entre les tables.This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables.RelationshipWidgetTypeRelationshipWidget Nom cl unique :Unique Key Name:RelationshipWidget@Utiliser les valeurs par dfauts Use defaultsRelationshipWidgetXUtiliser les paramtres globaux de pgModeler$Use global settings for these fieldsRelationshipWidgetUtilisez la cl primaire spciale si vous souhaitez inclure une cl primaire contenant des colonnes gnres dans la table de destination. <strong>Important :</strong> s'il s'agit d'une nouvelle relation, il est ncessaire de terminer sa cration et de rouvrir cette bote de dialogue pour crer la cl primaire spciale.Use the special primary key if you want to include a primary key containing generated columns to the receiver table. Important: if this is a new relationship there is a need to finish its creation and reopen this dialog to create the special primary key.RelationshipWidget~Utiliser les paramtres de pgModeler pour les champs ci-dessous?Use the values defined on settings dialogs for the fields belowRelationshipWidget [DST] est requis[DST] is requiredRelationshipWidget [SRC] est requis[SRC] is requiredRelationshipWidget$[donnes binaires] [binary data]ResultSetModelL'affectation de <strong><em>-1</em></strong> <strong><em>Connexions</em></strong> cre un rle sans limite de connexion.<br/> Dcocher <strong><em>Validit</em></strong> cre un rle qui n'expire jamais.Assigning -1 to Connections creates a role without connection limit.
Unchecking Validity creates an role that never expires. RoleWidgetAttributs Attributes RoleWidget"Contournement RLS Bypass RLS RoleWidget>Peut crer des bases de donnesCan create database RoleWidget(Peut crer des rlesCan create role RoleWidgetPeut se loguer Can login RoleWidget8Peut utiliser la rplicationCan use replication RoleWidgetConnexions : Connections: RoleWidgetEncrypt Encrypted RoleWidget.Hriter des permissionsInherit permissions RoleWidgetMembre de Member of RoleWidgetMembresMembers RoleWidget Membres (Admin.)Members (Admin.) RoleWidgetMot de passe : Password: RoleWidgetRleRole RoleWidget"Super utilisateur Superuser RoleWidgetValiditValidity RoleWidget,aaaa-MMM-jj hh :mm :ssyyyy-MMM-dd hh:mm:ss RoleWidgetCommandesCommands RuleWidget,Expr. conditionnelle :Conditional Expr.: RuleWidgetvnement :Event: RuleWidget$Type d'excution :Execution Type: RuleWidgetCommandes SQL : SQL Command: RuleWidgetCommande SQL SQL command RuleWidgetPour crer une rgle qui n'xcute aucune action (<strong>DO NOTHING</strong>), ne spcifiez aucune commandes dans le champs des commandes SQL.To create a rule that does not perform any action (DO NOTHING) simply do not specify commands in the SQL commands table. RuleWidgetS&ortie&OutputSQLExecutionWidget&ScriptSQLExecutionWidget (non enregistr) (not saved)SQLExecutionWidget......SQLExecutionWidget Alt+FAlt+FSQLExecutionWidget Alt+IAlt+ISQLExecutionWidget Alt+OAlt+OSQLExecutionWidgetAlt+TSQLExecutionWidgetAlt+XSQLExecutionWidgetFormat CVS CVS formatSQLExecutionWidget^Annuler l'excution de la commande SQL courante/Cancel the execution of the current SQL commandSQLExecutionWidget$Respecter la casseCase sensitiveSQLExecutionWidgetEffacer Clear AllSQLExecutionWidget*Nettoyer l'historique Clear historySQLExecutionWidgetXEffacer le code SQL et la grille de rsultat!Clear sql input field and resultsSQLExecutionWidget6Fermer le script SQL actuelClose the current SQL scriptSQLExecutionWidgetFichiers CSV avec champs spars par des virgules (*.csv);;Tous les fichiers (*.*)4Comma-separated values file (*.csv);;All files (*.*)SQLExecutionWidget(La commande a chouCommand failedSQLExecutionWidget&Copier la slectionCopy selectionSQLExecutionWidget Ctrl+FCtrl+FSQLExecutionWidgetFBase de donnes de travail actuelleCurrent working databaseSQLExecutionWidgetE&xporterE&xportSQLExecutionWidget chapEscSQLExecutionWidget*Correspondance exacte Exact matchSQLExecutionWidgetExcut  Executed atSQLExecutionWidgetTExporter les rsultats dans un fichier CSVExport results to a CSV fileSQLExecutionWidgetF&iltrerF&ilterSQLExecutionWidgetF5F5SQLExecutionWidget&RechercherFi&ndSQLExecutionWidgetHFiltrer parmis les rsultats obtenusFilter the retrived resultsSQLExecutionWidget8Rechercher dans l'historiqueFind in historySQLExecutionWidgetFormulaireFormSQLExecutionWidget6Grer le script SQL externeHandle external SQL scriptSQLExecutionWidget8Masquer l'outil de rechercheHide find toolSQLExecutionWidget"Masquer ce widgetHide this widgetSQLExecutionWidgetHistoriqueHistorySQLExecutionWidgetChargerLoadSQLExecutionWidget*Charger commandes SQLLoad SQL commandsSQLExecutionWidgetMessagesSQLExecutionWidget Messages (%1)SQLExecutionWidgetAucun resultat retourn ou aucun changement effectu en raison de l'erreur ci-dessus. Relancer la commande.SNo results retrieved or changes done due to the error above! Run the command again.SQLExecutionWidgetFormat simple Plain formatSQLExecutionWidget(Expression rgulireRegular expressionSQLExecutionWidget,Recharger l'historiqueReload historySQLExecutionWidgetRsultatsResultsSQLExecutionWidgetResultats (%1) Results (%1)SQLExecutionWidget Lignes affectes Rows affectedSQLExecutionWidget"Lignes rcupresRows retrievedSQLExecutionWidgetLignes :Rows:SQLExecutionWidget LancerRunSQLExecutionWidget>Excuter la commande SQL entreRun the specified SQL commandSQLExecutionWidgetXFichier SQL (*.sql);;Tous les fichiers (*.*)!SQL file (*.sql);;All files (*.*)SQLExecutionWidget8Script SQL actuellement grSQL script currently handledSQLExecutionWidgetEnregistrerSaveSQLExecutionWidget.Sauvegarder fichier CSV Save CSV fileSQLExecutionWidget2Sauvegarder commandes SQLSave SQL commandsSQLExecutionWidget Enregistrer sousSave asSQLExecutionWidget0Enregistrer l'historique Save historySQLExecutionWidget6Rechercher dans le code SQLSearch in SQL codeSQLExecutionWidget"Extrai&ts de code Snippe&tsSQLExecutionWidgetArrterStopSQLExecutionWidgetLe champ d'entre SQL ainsi que la grille des rsultats vont tre purgs ! Voulez-vous poursuivre ?JThe SQL input field and the results grid will be cleared! Want to proceed?SQLExecutionWidgetCette action effacera tout l'historique des commandes SQL pour toutes les connexions ! Voulez-vous vraiment poursuivre ?jThis action will wipe out all the SQL commands history for all connections! Do you really want to proceed?SQLExecutionWidgetCette action effacera tout l'historique des commandes SQL pour la connexion en cours ! Voulez-vous vraiment poursuivre ?qThis action will wipe out all the SQL commands history for the current connection! Do you really want to proceed?SQLExecutionWidget<(Ds)active le volet de sortieToggles the output paneSQLExecutionWidgetT[%1]: Commande SQL en cours d'xcution...[%1]: SQL command is running...SQLExecutionWidget[%1]: Commande SQL excute avec succs en <em><strong>%2</strong></em>. <em>%3 <strong>%4</strong></em>h[%1]: SQL command successfully executed in %2. %3 %4SQLExecutionWidget$[donnes binaires] [binary data]SQLExecutionWidget...... SQLToolWidget<strong>ATTENTION:</strong> La fermeture de la connexion la base de donnes en cours de consultation provoquera la fermeture de tous les onglets ouverts associs ! Souhaitez-vous vraiment poursuivre ?ATTENTION: Close the database being browsed will close any opened SQL execution pane related to it! Do you really want to proceed? SQLToolWidget6<strong>ATTENTION :</strong> Se dconnecter de toutes les bases de donnes fermera tout onglet ouvert dans cette vue ! Souhaitez-vous vraiment poursuivre ?ATTENTION: Disconnect from all databases will close any opened tab in this view! Do you really want to proceed? SQLToolWidgetdOuvrir un nouvel onglet pour la base courante (%1)5Add a new execution tab for the current database (%1) SQLToolWidget Alt+RAlt+R SQLToolWidgetAttributs Attributes SQLToolWidget>Explorateur de bases de donnesDatabase explorer SQLToolWidgetZSe dconnecter de toutes les bases de donnesDisconnect from all databases SQLToolWidgetEchec du chargement du fichier `%1' dans l'outil SQL car la connexion `%2 n'existe pas !VFailed to load the file `%1' in SQL tool because the connection ID `%2' was not found! SQLToolWidgetFormulaireForm SQLToolWidget*Excuteur de code SQL SQL execution SQLToolWidgetCode source Source code SQLToolWidget^(Ds)active l'affichage du volet du code source&Toggle the display of source code pane SQLToolWidget\(Ds)active la grille des attributs de l'objet#Toggle the object's attributes grid SQLToolWidgetRActualiser la liste des bases disponiblesUpdate the database list SQLToolWidgetAvertissementWarning SQLToolWidget-SceneInfoWidget\Position actuelle de la souris dans le canevas+Current position of the mouse in the canvasSceneInfoWidget,Facteur de zoom actuelCurrent zoom factorSceneInfoWidgetHObjet(s) actuellement slectionn(s)Currently selected object(s)SceneInfoWidgetTDimensions de(s) l'objet(s) slectionn(s)$Dimensions of the selected object(s)SceneInfoWidgetFormulaireFormSceneInfoWidgetInconnuN/ASceneInfoWidget Aucune slction No selectionSceneInfoWidget&Objets select. : %1Sel. objects: %1SceneInfoWidget0Couleur de remplissage : Fill color: SchemaWidget*Afficher le rectangleShow rectangle SchemaWidgetCache :Cache:SequenceWidgetCyclique :Cyclic:SequenceWidget(Valeurs par dfaut :Defualt values:SequenceWidgetIncrment : Increment:SequenceWidgetMaximum :Maximum:SequenceWidgetMinimum :Minimum:SequenceWidgetProprio. Col. : Owner Col.:SequenceWidgetDbut :Start:SequenceWidget$Utilisateur dfini User definedSequenceWidgetl/* Erreur lors de l'analyse de l'extrait '%1': %2 */*/* Error parsing the snippet '%1': %2 */SnippetsConfigWidgetAjouterAddSnippetsConfigWidget"Tous les extraits All snippetsSnippetsConfigWidgetS'applique : Applies to:SnippetsConfigWidget"Annuler l'ditionCancel editionSnippetsConfigWidget8Crer une nouvelle connexionCreate new connectionSnippetsConfigWidgetFSupprimer la connexion slectionneDelete selected connectionSnippetsConfigWidgetdVoulez-vous vraiment supprimer tous les extraits ?*Do you really want to remove all snippets?SnippetsConfigWidgetIdentifiant <strong>%1</strong> d'extrait dupliqu dtct. Merci d'en choisir un autre !TDuplicated snippet id %1 detected. Please, specify a different one!SnippetsConfigWidgetDModifier la connexion slectionneEdit selected connectionSnippetsConfigWidgetCode vide pour l'extrait <strong>%1</strong>. Merci de lui spcifier une valeur !KEmpty code for snippet %1. Please, specify a value for it!SnippetsConfigWidgetLabel vide pour l'extrait <strong>%1</strong>. Merci de lui spcifier une valeur !LEmpty label for snippet %1. Please, specify a value for it!SnippetsConfigWidgetFiltrer :Filter:SnippetsConfigWidgetFormulaireFormSnippetsConfigWidgetGnralGeneralSnippetsConfigWidgetUsage gnralGeneral purposeSnippetsConfigWidgetIdentifiant :ID:SnippetsConfigWidgetZMotif d'identification <strong>%1</strong> incorrect dtect. Celui-ci doit commencer par au moins une lettre et tre compos de lettres, de chiffres et/ou de tirets bas _ !Invalid ID pattern detected %1. This one must start with at leat one letter and be composed by letters, numbers and/or underscore!SnippetsConfigWidgettiquette :Label:SnippetsConfigWidgetbAucune erreur de syntax retrouve dans l'extrait.&No syntax errors found in the snippet.SnippetsConfigWidgetAnalysableParsableSnippetsConfigWidgetBLes extraits de code analysables ou dynamiques sont crits dans la syntaxe <strong>schema micro language</strong>. Lorsque vous utilisez un extrait de code analys, les attributs entours par des <strong>{}</strong> seront remplacs par les attributs correspondants de l'objet slectionn.Parsable or dynamic snippets are written in the schema micro language syntax. When using a parsable snippet the attributes surrounded in {} will be replaced by the selected object's matching attributes.SnippetsConfigWidgetAnalyserParseSnippetsConfigWidgetAnalyser l'extrait de code afin de vrifier s'il existe des erreurs de syntaxe.?Parse the snippet in order to check if there are syntax errors.SnippetsConfigWidget.lment de substitution PlaceholdersSnippetsConfigWidgetTout supprimer Remove AllSnippetsConfigWidgetMaj+Suppr Shift+DelSnippetsConfigWidgetExtraits : Snippets:SnippetsConfigWidgetL'extrait dynamique contient des erreurs de syntax. Plus d'informations : <br/><em>%1</em>OThe dynamic snippet contains syntax error(s). Additional info:
%1SnippetsConfigWidgetMettre jourUpdateSnippetsConfigWidgetLors de la manipulation d'extraits de code analysables, les attributs vides seront remplacs par une valeur au format <strong>{attribut}</strong>. Noter que cette option peut affecter la smantique de l'extrait rsultant.When handling parsable snippets empty attributes will be replaced by a value in the format {attribute}. Note that this option can affect the semantics of the resulting snippet.SnippetsConfigWidget -- Le code SQL est volontairement tronqu ce stade dans la version dmo !@ -- SQL code purposely truncated at this point in demo version!SourceCodeWidget<-- NOTE: le code ci-dessous contient le code SQL de l'objet slectionn -- ainsi que de ses dpendances et enfants (le cas chant). -- -- Cette fonctionnalit n'est qu'une commodit vous permettant de tester -- la dfinition SQL de l'objet entier. -- -- Lors de l'export ou de la gnration du code SQL pour l'ensemble du modle de base de donnes, -- tous les objets seront placs leurs positions d'origine. |-- NOTE: the code below contains the SQL for the selected object -- as well for its dependencies and children (if applicable). -- -- This feature is only a convinience in order to permit you to test -- the whole object's SQL definition at once. -- -- When exporting or generating the SQL for the whole database model -- all objects will be placed at their original positions. SourceCodeWidgetf-- Code SQL non disponible pour ce type d'objet. --2-- SQL code unavailable for this type of object --SourceCodeWidget< !-- L'aperu du code XML est dsactiv dans la version de dmonstration -->;SourceCodeWidget<strong>Original :</strong>restitue uniquement the code SQL de l'objet.<br/><br/><strong>Dpendances :</strong>restitue le code original de l'objet en y incluant toutes les dpendances ncessaires sa bonne cration.<br/><br/><strong>Enfants :</strong>restitue le code original de l'objet en incluant tous les objets enfants. Cette option n'est utilise que par les schmas, les tables et les vues.uOriginal: displays only the original object's SQL code.

Dependencies: displays the original code including all dependencies needed to properly create the selected object.

Children: displays the original code including all object's children SQL code. This option is used only by schemas, tables and views.SourceCodeWidget&Affichage du code : Code display:SourceCodeWidget8Gnration du code source...Generating source code...SourceCodeWidgetOriginalSourceCodeWidget,Original + enfants SQLOriginal + children's SQLSourceCodeWidget4Original + dpendances SQLOriginal + depedencies' SQLSourceCodeWidgetPostgreSQL PostgreSQLSourceCodeWidgetSQLSQLSourceCodeWidgetRCode SQL (*.sql);;Tous les fichiers (*.*)!SQL code (*.sql);;All files (*.*)SourceCodeWidget.Enregistrer le code SQLSave SQLSourceCodeWidget>Enregistrer le code SQL sous...Save SQL code as...SourceCodeWidgetPEnregistrer le code SQL dans un fichier.Save the SQL code to a file.SourceCodeWidget8Visualisation du code sourceSource code visualizationSourceCodeWidgetVersion :Version:SourceCodeWidgetXMLXMLSourceCodeWidget icne iconecodigoSourceCodeWidgetAvant :Before:SwapObjectsIdsWidgetLChanger l'ordre de cration des objetsChange objects creation orderSwapObjectsIdsWidgetModifier l'ordre de cration des objets est une opration irrversible qui entrane l'effacement automatique de l'historique des oprations. Noter que l'ordre de cration configur dans ce formulaire n'est pas dfinitif et peut changer aprs la validation d'un modle.Change the objects creation order is an irreversible operation and cause the operations history to be automatically erased. Note that the creation order configured in this form is not definitive and may change after a model validation.SwapObjectsIdsWidgetCrer :Create:SwapObjectsIdsWidget<Dfinir un filtre de rechercheDefines the search filterSwapObjectsIdsWidgetFiltrerFilterSwapObjectsIdsWidgetFiltrer par nomFilter by nameSwapObjectsIdsWidget*Masquer les relationsHide relationshipsSwapObjectsIdsWidget4Masquer les objets systmeHide system objectsSwapObjectsIdsWidgetIdentifiantIDSwapObjectsIdsWidgetIdentifiant :ID:SwapObjectsIdsWidget ObjetObjectSwapObjectsIdsWidgetObjet parent Parent ObjectSwapObjectsIdsWidgetType parent Parent TypeSwapObjectsIdsWidget&Procde l'changeSwap the values of the fieldsSwapObjectsIdsWidgetchanger Swap valuesSwapObjectsIdsWidgetTypeSwapObjectsIdsWidgetnouvelle_table new_tableTable<html><head/><body><p>Les valeurs vides sont supposes tre <span style="font-weight :600;">DEFAULT</span>. Pour utiliser des valeurs spciales comme <span style="font-weight :600;">NULL</span>, un appel de fonction comme <span style="font-weight :600;">now()</span> ou un chappement des donnes spcifiques, entourer les valeurs de barres obliques, par exemple <span style="font-weight :600;">/valeur/</span>. Pour utiliser une barre oblique dans le cadre de la valeur, ajouter le caractre barre oblique inverse, par exemple <span style="font-weight :600;">\/</span>.</p></body></html>

Empty values are assumed as DEFAULT. To use special values like NULL, a function call like now() or a specific data escaping, enclose values in two slashes, e.g., /value/. To use a slash as part of the value prepend the backslash character, e.g., \/.

TableDataWidgetv<html><head/><body><p>Des colonnes invalides ou en double ont t dtectes. Pour solutionner la chose vous pouvez double-cliquer sur l'entte de chaque colonne mise en surbrillance pour lui associer un nom afin d'y rattacher les donnes ou sinon vous pouvez simplement supprimer ces colonnes. Les colonnes invalides sont ignores lors de la gnration des commandes SQL de type <span style=" font-weight:600;">INSERT</span> </p></body></html>

Some invalid or duplicated columns were detected. In order to solve this issue double-click the header of the highlighted ones in order to define the correct name in which the data belongs to or delete the entire column. Note that these columns are completely ignored when generating the INSERT commands.

TableDataWidget0Ajouter une colonne videAdd an empty columnTableDataWidget&Ajouter une colonne Add columnTableDataWidget0Ajouter des lignes videsAdd empty rowsTableDataWidget"Ajouter une ligneAdd rowTableDataWidget@Modification de donnes en masseBulk data editTableDataWidgetnModifier la valeur de toutes les cellules slectionnes/Change the values of all selected cells at onceTableDataWidget CopierCopyTableDataWidget>Copier les valeurs de la grilleCopy items on the gridTableDataWidgetCtrl+DTableDataWidget Ctrl+ECtrl+ETableDataWidgetCtrl+Maj+SupprCtrl+Shift+DelTableDataWidget Ctrl+VCtrl+VTableDataWidget SupprDelTableDataWidget:Supprimer toutes les colonnesDelete all columnsTableDataWidget6Supprimer toutes les lignesDelete all rowsTableDataWidget*Supprimer une colonne Delete columnTableDataWidgetEffacer des colonnes est une action irrversible ! Souhaitez-vous continuer ?HDelete columns is an irreversible action! Do you really want to proceed?TableDataWidget(Supprimer des lignes Delete rowsTableDataWidgetHSupprimer les colonnes slectionnesDelete the selected columnsTableDataWidgetDSupprimer les lignes slectionnesDelete the selected rowsTableDataWidget(Dupliquer des lignesDuplicate rowsTableDataWidgetDDupliquer les lignes slectionnesDuplicate the selected rowsTableDataWidget"Colonne dupliqueDuplicated columnTableDataWidget@Modifier les donnes de la tableEdit table dataTableDataWidgetZRemplit la grille en utilisant un fichier CSVFills the grid using a CSV fileTableDataWidgetInsrerInsTableDataWidget CollerPasteTableDataWidget@Coller les valeurs sur la grillePaste items on the gridTableDataWidgetjSupprimer toutes les lignes et les colonnes galement+Remove all columns (and rows) from the gridTableDataWidgetSupprimer toutes les colonnes est une action irrversible ! Voulez-vous vraiment poursuivre ?LRemove all columns is an irreversible action! Do you really want to proceed?TableDataWidgetlSupprimer toutes les lignes en prservant les colonnes0Remove all rows from the grid preserving columnsTableDataWidgetSupprimer toutes les lignes est une action irrversible ! Souhaitez-vous continuer ?IRemove all rows is an irreversible action! Do you really want to proceed?TableDataWidgetMaj+Suppr Shift+DelTableDataWidget Colonne inconnueUnknown columnTableDataWidget Relations : %1 Relationship: %1TableObjectViewPartition Partition TableViewPartitionne Partitioned TableView&Colonnes&Columns TableWidget &Index&Indexes TableWidget&Politiques &Policies TableWidget&Rgles&Rules TableWidget&Tables&Tables TableWidget AliasAlias TableWidgetAttribut(s) Attribute(s) TableWidgetAttributs Attributes TableWidget expression CHECKCHECK expression TableWidgetCo&ntraintes Co&nstraints TableWidgetCommandeCommand TableWidgetCommentaireComment TableWidget CopieCopy TableWidget"Valeur par dfaut Default Value TableWidgetRDfinir les donnes initiales de la table!Define initial data for the table TableWidget Modifier donnes Edit data TableWidgetRActiver la scurit au niveau de la ligneEnable row level security TableWidgetEvnementEvent TableWidgetEvnementsEvents TableWidgetExcution Execution TableWidgetDclencheurFiring TableWidget>Forcer RLS pour le propritaireForce RLS for owner TableWidgetXUtiliser ALTER pour les colonnes/contraintes&Generate ALTER for columns/constraints TableWidgetIndexationIndexing TableWidgetIl n'est pas possible de marquer une colonne comme cl primaire quand la table a dj une cl primaire qui a t cre par une relation ! Cette action doit tre effectue dans la section <strong>Cl primaire</strong> du formulaire d'dition de la relation.It is not possible to mark a column as primary key when the table already has a primary key which was created by a relationship! This action should be done in the section Primary key of the relationship's editing form. TableWidgetIl n'est pas possible de marquer une colonne cre par une relation comme cl primaire ! Cette action doit tre effectue dans la section <strong>Cl primaire</strong> du formulaire d'dition de la relation.It is not possible to mark a column created by a relationship as primary key! This action should be done in the section Primary key of the relationship's editing form. TableWidgetNomName TableWidgetNonNo TableWidget AucunNone TableWidget la suppression ON DELETE TableWidget la mise jour ON UPDATE TableWidget OptionOption TableWidgetOptionsOptions TableWidgetPKPK TableWidgetParent TableWidgetPartition Partition TableWidget$Cls de &partitionPartition &keys TableWidgetPartitionne Partitioned TableWidget"Partitionnement : Partitioning: TableWidgetPERMISSIVE Permissive TableWidget Table rfrence Refer. Table TableWidget RlesRoles TableWidget SchmaSchema TableWidgetServeur :Server: TableWidgetBalise :Tag: TableWidgetDcl&encheurs Tri&ggers TableWidgetType TableWidget expression USINGUSING expression TableWidgetUnloggedUnlogged TableWidget ValeurValue TableWidgetAvec OIDWith OID TableWidgetOuiYes TableWidgetDossier : Directory:TablespaceWidgetFormulaireFormTablespaceWidgetCorps :Body: TagWidgetCouleursColors TagWidgetCorps tendu :Extended body: TagWidgetNom du schma : Schema name: TagWidget"Nom de la table : Table name: TagWidgetTitre :Title: TagWidget(Excution des tchesExecuting tasksTaskProgressWidgetNEn attente du dmarrage de la tche ...Waiting task to start...TaskProgressWidgetGrasBold TextboxWidgetCouleur :Color: TextboxWidgetPolice :Font: TextboxWidgetItaliqueItalic TextboxWidget@Slection de la couleur du texteSelect text color TextboxWidget TexteText TextboxWidgetSoulign Underline TextboxWidgetptpt TextboxWidgetArgument : Argument: TriggerWidgetArguments Arguments TriggerWidgetColonneColumn TriggerWidgetColonne :Column: TriggerWidgetColonnesColumns TriggerWidgetCondition : Condition: TriggerWidgetContrainte Constraint TriggerWidget,Cclencheur contrainteConstraint trigger TriggerWidget DELETEDELETE TriggerWidgetReportable : Deferrable: TriggerWidgetEvnements :Events: TriggerWidgetExcution : Excution: TriggerWidget"Pour chaque ligne FOR EACH ROW TriggerWidgetFonction : Function: TriggerWidget INSERTINSERT TriggerWidgetNEW:NEW: TriggerWidgetOLD:OLD: TriggerWidgetOptions :Options: TriggerWidget*Dclencheur ordinaireOrdinary trigger TriggerWidgetTable rfr. : Refer. Table: TriggerWidgetTRUNCATETRUNCATE TriggerWidget:Noms des tables de transitionTransition tables names TriggerWidgetTypeType TriggerWidget Type :Type: TriggerWidget UPDATEUPDATE TriggerWidgetANALYZE :ANALYZE: TypeWidgetAlignement : Alignment: TypeWidgetAttributs Attributes TypeWidgetType de base Base Type TypeWidgetPar valeurBy value TypeWidget(Fonction canonique :Canonical Func.: TypeWidgetCatgorie : Category: TypeWidgetCo&mposite Co&mposite TypeWidgetAssemblable Collatable TypeWidget Collation TypeWidgetCollation : Collation: TypeWidgetConfiguration :Configuration: TypeWidget&Valeur par dfaut :Default Value: TypeWidgetDlimiteur : Delimiter: TypeWidgetType d'lement Element Type TypeWidgetnumration Enumeration TypeWidgetnumration : Enumeration: TypeWidgetnumrations Enumerations TypeWidgetFonctions Functions TypeWidgetINPUT :INPUT: TypeWidgetLong. interne :Internal Length: TypeWidgetType de like Like Type TypeWidgetNomName TypeWidget Nom :Name: TypeWidgetOUTPUT :OUTPUT: TypeWidget*Classe d'oprateurs :Operator Class: TypeWidgetOptions :Options: TypeWidgetPrfr Preferred TypeWidget RECV :RECV: TypeWidgetIntervalleRange TypeWidget SEND :SEND: TypeWidgetStockage :Storage: TypeWidgetSous-typeSubtype TypeWidgetJFonction de diffrence du sous-type :Subtype Diff Func.: TypeWidgetTPMOD_IN : TPMOD_IN: TypeWidgetTPMOD_OUT : TPMOD_OUT: TypeWidgetLes fonction assignables au type plage (RANGE) doivent avoir la signature suivante :<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em>The functions to be assigned to a range type should have the following signatures:

Canonical: any function(any)
Subtype Diff: double precision function(subtype, subtype) TypeWidgetLes fonctions assignes un type devraient tre crites en langage C et possder, les signatures suivantes :<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table>The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:
INPUT: any function(cstring, oid, integer) OUTPUT: cstring function(any)
SEND: byta function(any) RECV: any function(internal, oid, integer)
TPMOD_IN: integer function(cstring[]) TPMOD_OUT: cstring function(integer)
ANALYZE: boolean function(internal)
 TypeWidgetType TypeWidgetcharchar TypeWidget double prcisiondouble precision TypeWidgetintegerinteger TypeWidgetsmallintsmallint TypeWidget......UpdateNotifierWidget 0.0.00.0.0UpdateNotifierWidget2Journal des modifications ChangelogUpdateNotifierWidgetbImpossible de vrifier la prsence de mise jourFailed to check updatesUpdateNotifierWidgetDTlcharger l'application compileGet binary packageUpdateNotifierWidget4Tlcharger le code sourceGet source codeUpdateNotifierWidget Cacher ce widgetHide this widgetUpdateNotifierWidget$Nouvelle version : New version:UpdateNotifierWidget:Aucune mise jour disponibleNo updates foundUpdateNotifierWidgetTRedirige vers la page web du dpt GitHub.&Redirects to GitHub source repository.UpdateNotifierWidgetNRedirige vers la page web pour acheter.Redirects to purchase page.UpdateNotifierWidget Date de sortie : Released in:UpdateNotifierWidgetLe vrificateur de mise jour n'a pas pu vrifier la prsence de nouvelles versions ! Code retour HTTP reu : <strong>%1</strong>jThe update notifier failed to check for new versions! A HTTP status code was returned: %1UpdateNotifierWidgetLe notificateur de mise jour n'a pas pu vrifier les nouvelles versions ! Merci de vrifier votre connexion internet et de ressayer ! Erreur de connexion renvoye : <em>%1</em> - <strong>%2</strong>.The update notifier failed to check for new versions! Please, verify your internet connectivity and try again! Connection error returned: %1 - %2.UpdateNotifierWidget6Vrificateur de mise jourUpdate NotifierUpdateNotifierWidget0Mise jour disponible !Update available!UpdateNotifierWidgetVous utilisez dj la version de pgModeler la plus rcente ! Aucune mise jour requise.DYou are running the most recent pgModeler version! No update needed.UpdateNotifierWidgetjj mmm aaaa mmm dd, yyyyUpdateNotifierWidget OptionOptionUserMappingWidgetOptionsOptionsUserMappingWidgetServeur :Server:UserMappingWidget ValeurValueUserMappingWidget&Matrialiser &Materialized ViewWidget/* Le code SQL ne peut tre gnr. Vrifiez que les champs sont correctement remplis ! S/* Could not generate the SQL code. Make sure all attributes are correctly filled!  ViewWidgetAlias ViewWidget0Prvisualisation du code Code Preview ViewWidget Col./Expr. ViewWidget Alias de colonne Column alias ViewWidgetCommentaireComment ViewWidgetEvnementEvent ViewWidgetEvnementsEvents ViewWidgetExcution Execution ViewWidgetDclencheFiring ViewWidget0Marques : SF FW AW EX VDFlags: SF FW AW EX VD ViewWidgetIndexes ViewWidgetIndexationIndexing ViewWidget Mode :Mode: ViewWidgetNomName ViewWidgetOptionsOptions ViewWidgetOrdinaireOrdinary ViewWidgetRcursi&f Recursi&ve ViewWidget$Table de rfrence Refer. Table ViewWidget$Alias de rfrenceReference alias ViewWidgetRfrences References ViewWidget RglesRules ViewWidgetCTETable Expression ViewWidgetAlias de table Table alias ViewWidgetBalise :Tag: ViewWidgetDclencheurTriggers ViewWidgetSans donnes With no data ViewWidgetFormulaireForm WelcomeWidget Dernire session Last session WelcomeWidgetNouveau modle New model WelcomeWidgetOuvrir modle Open model WelcomeWidgetModles rcents Recent models WelcomeWidgetModles de dmo Sample models WelcomeWidgetSupportSupport WelcomeWidgetpgmodeler-0.9.4/assets/lang/fr_FR.ts000066400000000000000000023237361416010000600172770ustar00rootroot00000000000000 AboutWidget About pgModeler À propos de pgModeler 0.0.0 Version is replaced at runtime 0.0.0 build: Anglicisme accepté (jargon) build: PostgreSQL Database Modeler Modeleur de base de données PostgreSQL Open source data modeling tool designed for PostgreSQL. No more DDL commands written by hand, let pgModeler do the job for you! This software reunites the concepts of entity-relationship diagrams and the features that PostgreSQL implements as extensions of SQL standards. Outil open source de modélisation de bases de données PostgreSQL. Plus aucun ordre LDD à saisir à la main, laissez pgModeler le faire pour vous ! Ce logiciel fusionne le concept de modélisation entité-association et toutes les fonctionnalités étendues que propose PostgreSQL en plus des standards SQL. <html><head/><body><p>Copyright 2006-2019 - Raphael Araújo e Silva &lt;<a href="mailto:raphael@pgmodeler.com.br"><span style=" text-decoration: underline; color:#0057ae;">raphael@pgmodeler.io</span></a>&gt;</p></body></html> Même chose <html><head/><body><p>Copyright 2006-2019 - Raphael Araújo e Silva &lt;<a href="mailto:raphael@pgmodeler.com.br"><span style=" text-decoration: underline; color:#0057ae;">raphael@pgmodeler.io</span></a>&gt;</p></body></html> pgModeler is proudly a brazilian software! pgModeler est un logiciel brésilien et fier de l'être ! <html><head/><body><p><a href="http://pgmodeler.com.br"><span style=" text-decoration: underline; color:#2980b9;">https://pgmodeler.io</span></a></p></body></html> ... ... (BUILD_NUM) License Hide this widget Cacher ce widget AggregateWidget Final Function: Fonction finale : Sort Operator: Opérateur de tri : Initial Condition: Condition initiale : Funtion Inputs Entrées de la fonction Function State État de la fonction Transition Func.: Fonction de transition : Input Data Type Type de donnée en entrée State Data Type Type de donnée d'état An aggregate function that accepts the types <em><strong>typeA</strong></em> and <em><strong>typeB</strong></em> as input types and which type of state is <em><strong>state_type</strong></em>, must obey the following rules: <br/><br/> <strong> &nbsp;&nbsp;&nbsp;• Final Function:</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp;• Transition Function:</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em> Une fonction d'agrégat qui accepte les types <em><strong>typeA</strong></em> et <em><strong>typeB</strong></em> en types d'entrée et dont le type d'état est <em><strong>state_type</strong></em>, vous devez respecter les règles suivantes : <br/> <strong>&nbsp;&nbsp;&nbsp;• Fonction finale : </strong><em>void final_function (<strong>state_type</strong>)</em><br/> <strong>&nbsp;&nbsp;&nbsp;• Fonction de transition: </strong><em><strong>state_type</strong> transition_function(<strong>state_type</strong>,<strong>typeA</strong>, <strong>typeB</strong>)</em> AppearanceConfigWidget Form Formulaire Element: Élément : Global: Font style Global : Style de police Global: Constraints descriptor Global : Marqueurs de contraintes Global: Object selection Global : Sélection d'objet Global: Position hint text Global : Texte de la boite de coordonnées Global: Position hint box Global : Fond de la boite de coordonnées Global: Objects type Global : Type de colonne Global: Lock arc Global : Cadenas (objet verrouillé, couleur de l'arceau) Global: Lock body Global : Cadenas (objet verrouillé, couleur du corps) Table: Schema name Table : Nom du schéma Table: Columns box Table : Zone des colonnes Table: Extended attributes box Table : Zone d'attributs étendus Table: Title box Table : Zone de titre Rule: Name Règle : Nom Rule: Descriptor Règle : Couleur de l'icône Index: Name Index : Nom Index: Descriptor Index : Couleur de l'icône Trigger: Name Déclencheur : Nom Trigger: Descriptor Déclencheur : Couleur de l'icône Policy: Name Politique : Nom Policy: Descriptor Politique : Couleur de l'icône View: Schema name Vue : Nom du schéma View: References box Vue : Couleur d'arrière plan View: Extended attributes box Vue : Dialogue des attributs étendus View: Title box Vue : Couleur d'arrière plan de la barre de titre View: Table / columns alias Vue : Alias de table / colonne View: Referenced column Vue : Colonne référencée View: Referenced table Vue : Table référencée View: Reference descriptor Vue : Couleur de l'icône des références Textbox: Body Zone de texte : Corps Column: Column name Colonne : Nom de la colonne Column: Descriptor Colonne : Couleur de l'icône Column: Included / Inherited by relationship Colonne : Incluses / Héritées par associations Column: Protected Colonne : Protégée Column (pk): Descriptor Colonne (pk) : Couleur de l'icône Column (fk): Descriptor Colonne (fk) : Couleur de l'icône Column (uq): Descriptor Colonne (uq) : Couleur de l'icône Column (nn): Descriptor Colonne (nn) : Couleur de l'icône Relationship: Descriptor Associations : Couleur de l'icône Relationship: Label text Associations : Texte de l'étiquette Relationship: Label box Relations : Arrière plan de l'étiquette Relationship: Attribute text Relations : Texte des attributs Relationship: Attribute descriptor Relations : Couleur de l'icône des attributs Tag: Name Tag : Nom Tag: Body Tag : Corps Foreign table: Schema name Table distante: Nom du schéma Foreign table: Name Table distante : Nom Foreign table: Attributes box Table distante : Dialogue des attributs Foreign table: Extended attributes box Table distante : Dialogue des attributs étendus Foreign table: Title box Table distante: Zone de titre Font: Police : pt pt Bold Gras Italic Italique Table: Name Table : Nom View: Name Vue : Nom Column (pk): Name Colonne (pk): Nom Column (fk): Name Colonne (fk): Nom Column (uq): Name Colonne (uq): Nom Column (nn): Name Colonne (nn): Nom Colors: Couleurs : Underline Souligné Placeholder: Body Placeholder : Corps Constraint: Name Contrainte : Nom Constraint: Descriptor Contrainte : Descripteur AttributesTogglerItem Expands the currently collapsed section of the object Développer Collapses the currently expanded section of the object Replier Displays the next attributes page Page suivante des attributs Displays the previous attributes page Page précédente des attributs Displays the next extended attributes page Page suivante des attributs étendus Displays the previous extended attributes page Page précédente des attributs étendus Toggles the attributes pagination on the object Activer/Désactiver la pagination des attributs BaseConfigWidget A backup of the previous settings was saved into <strong>%1</strong>! Une sauvegarde des paramètres précédents a été enregistrée dans <strong>%1</strong> ! BaseForm Dialog Dialogue &Apply &Appliquer &Ok &Ok &Cancel A&nnuler %1 properties %1 propriétés BaseObject Column Colonne Constraint Contrainte Function Fonction Trigger Déclencheur Index Index Rule Règle Table Table View Vue Domain Domaine Schema Schéma Aggregate Fonction d'agrégat Operator Opérateur Sequence Séquence Role Rôle Conversion Convertion Cast Convertion de type Language Langage Type Type Operator Family Famille d'opérateurs Operator Class Classe d'opérateurs Database Base de données Extension Extension Foreign Data Wrapper Wrapper de données distantes Foreign Server Serveur distant Foreign Table Table distante User Mapping Correspondance d'utilisateurs Relationship Relation Collation Collation Textbox Boite de texte Event Trigger Déclencheur sur évènement Policy Politique Permission Permission Parameter Paramètre Type Attribute Attribut de type Basic Relationship Relation simple Tag Balise Generic SQL SQL générique new_object nouvel_objet nouveaux_objets Tablespace Tablespace BaseObjectView SQL off SQL désactivé BaseObjectWidget Name: Nom : ID: Identifiant : icone icône Comment: Commentaire : This is the name of the object in the PostgreSQL database. Ceci est le nom de l'objet dans la base de données PostgreSQL. Tablespace: Tablespace : Edit object's permissions Modifier les permissions de l'objet Disables the generated SQL code using comment tokens (--). This will disable the code of all child and referrer objects. Désactivez le code SQL généré en utilisant les marqueurs de commentaire (--). Ceci désactivera également le code SQL pour ses objets enfants. Append or prepend a set of SQL commands to the object's definition. Ajouter des commandes SQL avant ou après la définition de cet objet. Custom SQL Code SQL Libre Owner: Propriétaire : <p>This is a more friendly name for the object. When displaying the model in compact view this is the name shown for the object instead of its real name. If this field is empty the real name will be displayed anyway.</p> <p>Entrez ici un nom plus convivial pour cet objet (optionnel). Ce nom remplace le nom réel lorsque le modèle est affiché en mode Vue compacte" . Si ce champ est vide le nom réel est utilisé.</p> Alias: Alias : Schema: Schéma : Disable SQL code Désactiver le code SQL Collation: Collation : Edit permissions Modifier les permissions This object is protected thus no change in form will be applied to it. L'objet est verrouillé, par conséquent aucun changement dans cette fenêtre ne peut lui être apporté. Required field. Leaving this empty will raise errors! Champ requis. Laisser ce champ vide génèrera une erreur ! Value(s) Valeur(s) Version Version The <em style='color: %1'><strong>highlighted</strong></em> fields in the form or one of their values are available only on specific PostgreSQL versions. Generating SQL code for versions other than those specified in the fields' tooltips may create incompatible code. Les champs <em style='color:%1'><strong>en surbrillance</strong></em> dans le formulaire ou de l'une des valeurs ne sont disponibles que sur des versions spécifiques de PostgreSQL. La génération de code SQL pour des versions autres que celles spécifiées dans les info-bulles des champs peut créer un code incompatible. BaseRelationship rel_%1_%2 rel_%1_%2 One-to-one Un-à-un One-to-many Un-à-plusieurs Many-to-many Plusieurs-à-plusieurs Inheritance Héritage Partitioning Partitionnement FK relationship Association clé étrangère Dependency Dépendance Copy Copie BaseTableView Connected rels: %1 Nombre d'associations : %1 BugReportForm Bug Report Signaler un bug Bug report Signaler un bug Create Créer &Cancel A&nnuler Use the form below to generate a complete bug report. Please, try to be as clear as possible when describing the actions that can reproduce the bug. Additionally, it's important to attach a sample database model so that the bug can be quickly discovered and fixed! Utilisez le formulaire ci-dessous pour générer un rapport d'erreur complet. Merci d'être le plus clair possible dans la description de vos actions afin que le bug puisse être reproduit. De plus, il est important de joindre un modèle de base dans lequel le bug puisse être rapidement découvert, et par la même occasion rapidement corrigé ! Report Rapport Issue details Détails du problème Output: Sortie : Select the report's output folder Sélectionnez un dossier de sortie pour écrire le rapport d'erreur ... ... <html><head/><body><p>If you prefer it's possible to report this issue anytime on pgModeler's project repository at <a href="http://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration: underline; color:#0057ae;">GitHub</span></a>. </p></body></html> <html><head/><body><p>Il vous est également possible de signaler un bug à tout moment via le dépôt du projet pgModeler sur <a href="http ://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration : underline; color :#0057ae;">GitHub</span></a>. </p></body></html> Database Model Modèle de base Attach the below database model file to be debugged. Joindre le fichier modèle ci-dessous pour débogage. Attach a different database model Joindre un autre modèle de base Bug report successfuly generated! Please, send the file <strong>%1</strong> to <em>%2</em> in order be analyzed. Thank you for the collaboration! Le rapport de bug a été généré avec succès ! S'il vous plait, veuillez envoyer le fichier <strong>%1</strong> à <em>%2</em> pour expertise. Merci de votre collaboration ! Load model Charger un modèle Database model (*.dbm);;All files (*.*) Modèle de base de données (*.dbm);; Tous les fichiers (*.*) Select report output folder Sélectionner le dossier de sortie du rapport BulkDataEditWidget Bulk data edit Modification de données en masse CastWidget Conversion Func.: Fonction de conversion : Cast Type: Conversion de type : Assignment Affectation Input / Output Entrée / Sortie Source data type Type de donnée source Target data type Type de donnée cible The function to be assigned to a cast from <em><strong>typeA</strong></em> to <em><strong>typeB</strong></em> must have the following signature: <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>. La fonction convertissant de <em><strong>typeA</strong></em> vers <em><strong>typeB</strong></em> doit avoir la signature suivante : <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>. I&mplicit I&mplicite E&xplicit E&xplicite Catalog Object type: %1 Type d'objet : %1 Types d'objets : %1 The catalog query returned more than one OID! La requête sur le catalogue retourne plusieurs OID ! Les requêtes sur le catalogue retournent plusieurs OID ! Object type: server Type d'objet : serveur CodeCompletionWidget Make &persistent Rendre &persistant Makes the widget closable only by ESC key or mouse click on other controls. Rendre ce widget refermable uniquement par la touche Échap ou par un clic sur les autres contrôles. SQL Keyword Mot-clé SQL (no items found.) (aucun élément trouvé.) CollationWidget Locale: Locale : Encoding: Encodage : LC_COLLATE: LC_COLLATE : LC_CTYPE: LC_CTYPE : The fields <strong><em>Collation</em></strong>, <strong><em>Locale</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> are mutually exclusive, so you have to set only one of them in order to properly handle a collation. Les champs <strong><em>Collation</em></strong>, <strong><em>Locale</em></strong> et <strong><em>LC_COLLATE & LC_CTYPE</em></strong> sont mutuellement exclusifs, vous ne devez en définir qu'un seul de manière à gérer correctement la collation. Not defined Non défini ColorPickerWidget Form Formulaire Generate random color(s) Génération aléatoire de couleur(s) Alt+R Alt+R Select color Sélectionner une couleur ColumnWidget Default Value: Valeur par défaut : E&xpression: E&xpression : &NOT NULL &NON NULL Se&quence: Sé&quence : Edit the underlying sequence's attributes Modifier les propriétés sous-jacentes de la séquence Edit sequence Modifier la séquence Identity: Identité : ConfigurationForm pgModeler Configuration Paramètres de pgModeler Relationships Associations Appearance Apparence Connections Connexions Snippets Extraits de code &Apply &Appliquer &Cancel A&nnuler Defaults Défauts General Général Plug-ins Extensions In some cases restore the default settings related to it may solve the problem. Would like to do that? Dans certains cas, restaurer les paramètres liés par défaut peut résoudre le problème. Voulez-vous le faire ? Restore Restaurer Any modification made until now in the current section will be lost! Do you really want to restore default settings? Toutes les modifications réalisées jusqu'à maintenant dans la section actuelle seront perdues ! Souhaitez-vous réellement restaurer les paramètres par défaut ? Connection ERROR: trying to open an already stablished connection. ERREUR : Tentative d'ouverture d' une connexion déjà établie. ConnectionsConfigWidget Connections: Connexions : Create new connection Créer une nouvelle connexion Cancel edition Annuler l'édition Duplicate the selected connection Dupliquer la connexion sélectionnée Edit selected connection Modifier la connexion sélectionnée Delete selected connection Supprimer la connexion sélectionnée <p>Indicates in which operations (diff, export, import or validation) the connection is used if none is explicitly specified by the user.</p> <p>Indique pour quelles opérations (diff, export, import ou validation) cette connexion sera utilisée par défaut si aucune autre n'est choisie par l'utilisateur.</p> Connection Alias: Alias de la connexion : Connection DB: Nom de la base : Host/Port: Hôte/Port : User: Utilisateur : Password: Mot de passe : Timeout: Délai d'expiration : second(s) seconde(s) SSL Mode: Mode SSL : Disable Désactivé Allow Autorisé Require Requis AC verification Vérification des AC Full verification Vérification complète Client Certificate: Certificat client : ~/.postgresql/postgresql.crt ~/.postgresql/postgresql.crt Automatically browses the named database when using this connection to manage databases on <strong>Manage</strong> view. Parcourt automatiquement la base de données nommée lors de l'utilisation de cette connexion pour gérer les bases de données dans la vue <strong>Gérer</strong>. Auto browse Toujours montrer Client Key: Clé client : ~/.postgresql/postgresql.key ~/.postgresql/postgresql.key Root Certificate: Certificat racine : ~/.postgresql/root.crt ~/.postgresql/root.crt Revoked Certs.: Liste de révocations : ~/.postgresql/root.crl ~/.postgresql/root.crl Force GSSAPI Forcer GSSAPI Add Ajouter Update Mettre à jour Test Tester Success Succès Edit database connections Modifier les connexions de la base de données General Général Other params: Autres paramètres : Specify additional connection parameters in the form [param]=[value]. These parameters are described in the <strong>libpq</strong> chapter at PostgreSQL docs. Spécifier des paramètres de connexion supplémentaires sous la forme [param]=[valeur]. Ces paramètres sont décrits dans le chapitre <strong>libpq</strong> de la doc de PostgreSQL. Default for: Par défaut pour : Diff Comparer Export Exporter Import Importer Validation Validation Security Sécurité Kerberos Server: Serveur Kerberos : Connection successfully established! Server details: PID: `%1' Protocol: `%2' Version: `%3' Connexion établie avec succès ! Détails du serveur : PID : `%1' Protocole : `%2' Version : `%3' There is a connection being created or edited! Do you want to save it? Une connexion est en cours de création ou d'édition ! Voulez-vous la sauvegarder ? Found %1 connection(s) %1 connexion(s) trouvée(s) No connections found Aucune connexion trouvée Edit connections Modifier les connexions ConstraintWidget Constraint Type: Type de contrainte : Fill Factor: Taux de remplissage : Match: Comparaison : This attribute cannot be changed once the object is created. Cet attribut ne peut pas être modifié une fois l'objet créé. Expression: Expression : Deferrable: Reportable : Deferral: Report : ON DELETE: ON DELETE : ON UPDATE: ON UPDATE : Columns Colonnes Column: Colonne : Referenced Columns Colonnes référencées Table: Table : Indexing: Indexation : Exclude Elements Éléments exclus No inherit: Pas d'héritage : Column Colonne Type Type Columns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form. Les colonnes inclues dans la relation ne peuvent être ajoutées/retirées manuellement de la clé primaire sous peine d’erreur. Pour créer une clé primaire utilisant des colonnes contenues dans une relation, veuillez utiliser une des options suivantes: champ identifiant, l'onglet attributs et contraintes ou l'onglet clé primaire du formulaire de la relation. ConversionWidget Source Encoding: Encodage de la source : Target Encoding: Encodage de la destination : Conversion Func.: Fonction de conversion : Default Conversion: Conversion par défaut : The function to be assigned to an encoding conversion must have the following signature: <em>void function(integer, integer, cstring, internal, integer)</em>. La fonction de convertion d'encodage doit avoir la signature suivante : <em>void function(integer, integer, cstring, internal, integer)</em>. CrashHandlerForm Crash Handler Gestionnaire d'incident Stack trace Pile d'exécution Input: Entrée : Load report file for analysis Charger un rapport d'erreur pour analyse Save the attached model file on the filesystem Enregistrer le modèle joint sur le système de fichiers pgModeler bug report (*.bug);;All files (*.*) Rapport de bug pgModeler (*.bug);;Tous les fichiers (*.*) Load report Charger un rapport Save model Enregistrer le modèle Database model (*.dbm);;All files (*.*) Modèle de base de données (*.dbm);; Tous les fichiers (*.*) Crash handler Gestionnaire d'incident Bug report analysis mode activated. Mode d'analyse de rapport d'erreur activé. Oops! pgModeler just crashed! Oups ! pgModeler a planté ! We apologize for what happened! It is clear that a nasty bug caused that. Please fill out the form below describing your actions before pgModeler quit unexpectedly. This will help on bug extermination and improve the software. Veuillez nous excuser pour ce qui vient de se passer ! Il est clair qu'un vilain bug est à l'origine de tout cela. Veuillez renseigner le formulaire ci-dessous en décrivant les actions que vous avez faites avant que pgModeler ne sombre de manière inopinée. Cela nous aidera à exterminer ce bug et ainsi, à améliorer le logiciel. CsvLoadWidget Form Formulaire Load CSV Charger un fichier CSV CSV File: Fichier CSV : Select output file Sélectionner un fichier de sortie ... ... Separator: Séparateur : <p>Use the first row as column names in the CSV file. By unchecking this option the first row is used as data.</p> <p>La première ligne du fichier CSV sera utilisée pour les noms des colonnes. En décochant cette option la première ligne sera utilisée comme source de données.</p> Columns in the first row Nom des colonnes sur 1ère ligne Load Charger Semicolon (;) Point virgule (;) Comma (,) Virgule (,) Space Espace Tabulation Other Autre ; ; Text delimiter: Délimiteur : " " Load CSV file Charger un fichier CSV Comma-separted values (*.csv);;All files (*.*) Valeurs séparées par une virgule (*.csv);;Tous les fichiers (*.*) CustomSQLWidget SQL code Code SQL Puts an SELECT command template at current cursor position. Insère une commande SELECT à la position courante du curseur. &SELECT &SELECT Puts an INSERT command template at current cursor position. Insère une commande INSERT à la position courante du curseur. &INSERT &INSERT Puts an UPDATE command template at current cursor position. Insère une commande UPDATE à la position courante du curseur. Puts an DELETE command template at current cursor position. Insère une commande DELETE à la position courante du curseur. &DELETE &DELETE &Clear E&ffacer Append SQL Code SQL suffixé Append the SQL code at the very end of model definition. Unchecking this will cause the SQL to be appended at the end of CREATE DATABASE command. Ajouter le code SQL à la toute fin de la définition du modèle Sinon (décoché) pgModeler ajoutera ce code après la commande SQL CREATE DATABASE. Append at end of model definition. Suffixer à la fin de la définition du modèle. Prepend SQL Code SQL préfixé Prepend at beginning of model definition. Préfixer au tout début de la définition du modèle. <html><head/><body><p>Use custom commands with extreme caution because you can change the semantics of the entire model when running SQL validation or export processes. Additionally, depending on the amount of commands, those processes can have their performance sensibly degradated.</p></body></html> <html><head/><body><p>Utilisez cet espace pour y inscrire vos commandes SQL personnalisées avec précaution. Vous pourriez créer des incohérences qui peuvent interférer avec les fonctionnalités de validation et d'export du modèle. De plus, selon la nature des commandes entrées ces fonctionnalités peuvent être ralenties.</p></body></html> Generic INSERT INSERT générique Include serial columns Inclure les colonnes en série Exclude serial columns Exclure les colonnes de type séries Generic SELECT Faut-il le traduire ? SELECT générique Table SELECT Faut-il le traduire ? SELECT table Generic UPDATE Faut-il le traduire ? UPDATE générique Table UPDATE Faut-il le traduire ? UPDATE table Generic DELETE Faut-il le traduire ? DELETE générique Table DELETE Faut-il le traduire ? DELETE table &UPDATE Faut-il le traduire ? &UPDATE Add custom SQL code Ajouter un code SQL personnalisé DataManipulationForm Data Manipulation Édition des données Refresh Actualiser Truncate the browsed table Vide la table Truncate Vider &Close &Fermer Refresh listing Actualiser la liste F5 F5 Save changes Enregistrer les changements Ctrl+F Ctrl+F Delete Effacer Open a new data manipulation window Ouvre une nouvelle fenêtre d'édition des données New Nouvelle fenêtre Ctrl+N Ctrl+N Paste Coller Save Enregistrer Ctrl+S Ctrl+S Undo Annuler Export results to CSV file Exporter les résultats vers un fichier CSV Export Exporter Ctrl+X Ctrl+X Undo modifications Annuler les modifications Ctrl+Z Ctrl+Z Ins Ins Mark the selected rows to be deleted Marquer les lignes sélectionner pour suppression Del Suppr Filter the result set Filtrer les résultats Table: Table : Schema: Schéma : Hide views Masquer les vues Order && Limit Ordre && Limite Column: Colonne : Limit in: Limite : Add Item Ajouter un élément Filter Filtrer Expression Expression Remove Item Supprimer un élément Clear the order by columns list Effacer la liste Move selected item up Déplacer vers le haut Move selected item down Déplacer vers le bas Copy as CSV Copier au format CSV Copy as text Copier au format texte simple Copy items Copier les valeurs Pase items Coller les éléments Clear items Effacer les valeurs Browse tables Navigateur de tables Duplicate row(s) Dupliquer ligne(s) Delete row(s) Effacer ligne(s) Edit cell(s) Modifier en masse la valeur des cellules sélectionnées dans la grille <em>(Limit: <strong>%1</strong>)</em> <em>(Limite : <strong>%1</strong>)</em> Paste as text Coller depuis format texte simple Paste as CSV Coller depuis format CSV Truncate cascade Vide la table avec clause CASCADE Column Colonne No objects found Aucun objet trouvé Found %1 object(s) %1 objet(s) trouvé(s) Views can't have their data handled through this grid, this way, all operations are disabled. Les données des vues ne sont pas modifiables via cette grille, de ce fait, toutes les opérations sont désactivées. The selected table doesn't owns a primary key! Updates and deletes will be performed by considering all columns as primary key. <strong>WARNING:</strong> those operations can affect more than one row. La table sélectionnée n'a pas sa propre clé primaire ! Les mises à jour et les suppressions seront réalisées en considérant que l'ensemble des colonnes constitue une clé primaire. <strong>ATTENTION :</strong> ces opérations peuvent affecter plus d'une ligne. Referenced tables Tables référencées (none) (aucun) Referrer tables Tables de référence This row is marked to be %1 Cette ligne est marquée pour être %1 deleted supprimé updated mise à jour inserted inséré [binary data] [données binaires] Warning Avertissement You're running a demonstration version! The save feature of the data manipulation form is available only in the full version! Vous utilisez une version de démonstration ! La fonctionnalité de sauvegarde des changements n'est disponible que dans la version complète ! <strong>WARNING:</strong> Once commited its not possible to undo the changes! Proceed with saving? <strong>ATTENTION :</strong> Une fois validés, il ne sera plus possible d'annuler les changements ! Sauvegarder les changements ? delete effacer update mettre à jour insert inserer ASC ASC DESC DESC Columns Colonnes Select all Tout sélectionner Clear all Effacer tout Add empty rows Ajouter des lignes vides Add Ajouter Clears the items selected on the grid Effacer les valeurs sélectionnées sur la grille Clear Effacer Ctrl+R Ctrl+R Edit Modifier Browse Naviguer Load CSV Charger un fichier CSV Ctrl+L Ctrl+L Copy Copier Duplicate the selected rows Dupliquer les lignes sélectionnées Duplicate Dupliquer Ctrl+D Ctrl+D results (Use <strong>0</strong> for no limit) résultats (Utiliser <strong>0</strong> pour ne pas limiter) <strong>WARNING: </strong> There are some changed rows waiting the commit! Do you really want to discard them and retrieve the data now? <strong>ALERTE :</strong> Des lignes modifiées attendent d'être soumises ! Voulez-vous vraiment les jeter et récupérer les données maintenant ? Rows returned: <strong>%1</strong>&nbsp;&nbsp;&nbsp; Lignes retournées : <strong>%1</strong>&nbsp;&nbsp;&nbsp; none aucun <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> <html><head/><body><p>Les valeurs vides sont supposées être <span style="font-weight :600;">DEFAULT</span>. Pour utiliser des valeurs spéciales comme <span style="font-weight :600;">NULL</span>, un appel de fonction comme <span style="font-weight :600;">now()</span> ou un échappement des données spécifiques, entourer les valeurs de deux barres obliques, par exemple <span style="font-weight :600;">/valeur/</span>. Pour utiliser une barre oblique dans le cadre de la valeur, ajouter le caractère barre oblique inverse, par exemple <span style="font-weight :600;">/</span>.</p></body></html> Copy items on the grid Copier les valeurs de la grille Paste items on the grid Copier les éléments sur la grille Browse referenced tables Parcourir les tables référencées Add new rows from a CSV file Ajouter de nouvelles lignes depuis un fichier CSV Change the values of all selected cells at once Modifier les valeurs de toutes les cellules sélectionnées Ctrl+E Ctrl+E DatabaseExplorerWidget Form Formulaire Filter Filtrer Data &Grid &Grille des données Alt+G Alt+G Add a new SQL execution tab for the current database Nouvel onglet d'exécution SQL pour la base courante ... ... Ctrl+T Ctrl+T Expands all items Développer tous les éléments Collapses all items Ferme tous les nœuds de l'arborescence Filter: Filtrer : By OID Par OID Attribute Attribut Value Valeur (not found, OID: %1) (OID: %1 non trouvé) Source code not generated! Hit F7 or middle-click the item to load it. Code source non généré ! Appuyez sur F7 ou faire un clic central sur l'élément pour le charger. By value Par valeur Collatable Assemblable Constraint Contrainte Default Défaut Definition Définition Element Élément Encrypted Chiffré Enumerations Énumérations Function Fonction Language Langage Length Longueur Library Bibliothèque Materialized Matérialisée Name Nom Precision Précision Preferred Préféré Schema Schéma Storage Stockage Superuser Superutilisateur Tablespace Jargon Tablespace Unlogged Jargon Unlogged Validity Validité Subtype Sous-type Columns Colonnes Event Évènement Client encoding Codage du client Configuration file Fichier de configuration Data directory Dossier de données Dynamic library path Chemin des bibliothèques dynamiques Dynamic shared memory Mémoire partagée dynamique Hba file Fichier hba Listen addresses Adresses d'écoute Max. connections Connexions max. Listen port Port d'écoute Server encoding Encodage serveur SSL ca file Fichier ca SSL SSL cert file Fichier cert SSL SSL crl file Fichier crl SSL SSL key file Fichier clé SSL Server version Version serveur Ident file Fichier d'identité Password encryption Mot de passe de chiffrement Connection ID ID connexion Server PID PID serveur Server protocol Protocole serveur Identity Identité Command Commande Roles Rôles Last analyze Denière analyse Last autovacuum Dernier autovacuum Last vacuum Dernier vacuum Tuples deleted Lignes supprimées Tuples updated Lignes mises à jour Tuples inserted Lignes insérées Partitioned Partitionnée Partition of Partition de Partition bound expr. Expr. de bornage de la partition Dead rows amount Quantité de lignes mortes Partition keys Clés de partitionnement Partitioning Partionnement Options Options Foreign data wrapper Wrapper de données distantes Server Serveur Bypass RLS Contournement RLS Show objects filter Afficher le filtrage Show system objects Afficher les objets système Show extension objects Afficher les objets d'extension Snippets Bouts de code Drop object Supprimer l'objet Drop cascade Supprimer en cascade Truncate Vider Trunc. cascade Vider en cascade Show data Afficher les données Reload properties Recharger les propriétés Update Mettre à jour -- Source code unavailable for this kind of object -- -- Code source indisponible pour ce type d'objet -- Do you really want to drop the object <strong>%1</strong> <em>(%2)</em>? Voulez-vous vraiment supprimer l'objet <strong>%1</strong> <em>(%2)</em> ? <strong>CAUTION:</strong> You are about to drop the entire database <strong>%1</strong> from the server <strong>%2</strong>! All data will be completely wiped out. Do you really want to proceed? <strong>AVERTISSEMENT :</strong>Vous êtes sur le point de supprimer entièrement la base de données <strong>%1</strong> du serveur <strong>%2</strong> ! Toutes les données seront supprimées. Souhaitez-vous continuer ? Admin. roles Rôles admin. Alignment Alignement Analyze func. Fonc. d'analyse Arg. count Nombre d'arg. Arg. default count Nombre d'arg. par défaut Arg. defaults Arg. par défaut Arg. modes Modes des arg. Arg. names Noms des arg. Arg. types Types des arg. Behavior type Type de comportement Cast type Type de conversion Category Catégorie Comment Commentaire Commutator Op. Commutateur Op. Collation Conn. limit Limite conn. Configuration Create DB Créer DB Create role Créer rôle Curr. version Version courante Default value Valeur par défaut Delimiter Délimiteur Dest. type Type de dest. Dimension Directory Répertoire Dest. encoding Encodage de dest. Encoding Encodage Exec. cost Coût d'exécution Op. family Famille d'op. Expression Final func. Fonc. finale Func. type Type de fonc. Handler func. Handles type Hashes Jargon Hashes Index type Type d'index Inherit Hérité Ini. condition Condition ini. Inline func. Func. en ligne Input func. Fonc. d'entrée Internal length Longueur interne Interval type Type d'interval I/O cast Conversion E/S Join func. Fonc. de jointure LC COLLATE Faut-il le traduire ? LC COLLATE LC CTYPE Faut-il le traduire ? LC CTYPE Leak proof Étanche Left type Type gauche Can login Peut se connecter Member roles Rôles des membres Merges Fusionne Negator op. Négateur op. Not null Non nul Object type Type d'objet With OIDs Avec OIDs Old version Ancienne version OID Faut-il le traduire ? OID Operator Opérateur Operator func. Fonc. de l'opérateur Output func. Func. de sortie Owner Propriétaire Owner column Colonne propriétaire Parents Password Mot de passe Permissions Range attributes Attributs de plage Receive func. Fonc. de réception Ref. roles Rôles de ref. Replication Reproduction Restriction func. Fonc. de restriction Return type Type de retour Returns SETOF Retours SETOF Right type Type droit Rows amount Montant des lignes Security type Type de sécurité Send func. Fonc. d'envoi Sort op. Opér. de tri Source type Type de la source Src. encoding Encodage de la src. State type Type d'état Type mod. in func. Type de mod. dans la fonc. Type mod. out func. Type de mod. hors fonc. Transition func. Fonc. de transition Trusted Jargon Trusted Type attribute Attribut de type Type Types Types Validator func. Fonct. de validation Windows func. Fonct. de fenêtrage false faux true vrai Cache value Valeur du cache Increment Incrément Cycle Max. value Valeur max Min. value Valeur min Start value Valeur de départ Last value Dernière valeure Op. class Classe d'opérateur Canonical func. Fonct. canonique Subtype diff func. Fonc de comparaison de sous-type Deferrable Reportable For each row Pour chaque ligne Firing Déclencheur On insert Jargon SQL On delete Jargon SQL On update Jargon SQL On truncate Jargon SQL Arguments Table Table Trigger func. Fonc. de déclenchement Condition Deferment Ajournement Execution mode Mode d'exécution Commands Commandes Comparison type Type de comparaison Position Ref. columns Colonnes de ref. Expressions Fill factor Facteur de remplissage No inherit Non hérité Op. classes Classes d'opérateur Operators Opérateurs Ref. table Table de ref. Unique Unique Predicate Prédicat Inherited Hérité Collations SSL SSL Referrers Référents USING expr. expr. USING CHECK expr. expr. CHECK RLS enabled RLS activé RLS forced RLS forcé Do you really want to truncate the table <strong>%1.%2</strong>? Voulez-vous vraiment vider la table <strong>%1.%2</strong> ? Do you really want to truncate in <strong>cascade</strong> mode the table <strong>%1.%2</strong>? This action will truncate all the tables that depends on it? Souhaitez-vous réellement vider en mode <strong>CASCADE</strong> la table <strong>%1.%2</strong> ? Cette action poura entraîner des suppressions de lignes dans les tables dépendantes. Also restart sequences Remettre également les séquences à zéro ? Source code genaration for built-in and base types currently unavailable. La génération du code source pour les objets intégrés et les types n'est pas possible pour le moment. Source code unavailable for the object %1 (%2). Code source indisponible pour l'objet %1 (%2). Warning Avertissement Open the grid to visualize or edit data Ouvrir la grille pour visualiser ou modifier les données Update the objects tree Actualiser l'arbre des objets Drop this database Supprimer cette base de données Filters the currently loaded items in the tree by using a pattern and matching their names. If <strong>By OID</strong> is checked the pattern is interpreted as an integer value that represents the object id (OID). <br><br/><strong>HINT:</strong> if you need to search the entire database use the full refresh (<strong>Ctrl+F5</strong>) prior the filtering. Filtre les éléments actuellement chargés dans l'arborescence en utilisant un motif et en faisant correspondre leurs noms. Si <strong>Par OID</strong> est coché, le motif est interprété comme une valeur entière qui représente l'identifiant de l'objet (OID).<br><br/><strong>ASTUCE :</strong> si vous devez effectuer une recherche dans toute la base de données, utilisez l'actualisation complète (<strong>Ctrl+F5</strong>) avant le filtrage. Show raw attributes Noms bruts pour les attributs Rename Renommer Source code Code source Quick refresh Actualisation rapide Full refresh Actualisation complète Do you really want to <strong>cascade</strong> drop the object <strong>%1</strong> <em>(%2)</em>? This action will drop all the other objects that depends on it. Voulez-vous vraiment supprimer en <strong>cascade</strong> l'objet <strong>%1</strong><em> (%2)</em> ? Cette action supprimera tous les autres objets qui en dépendent. Src. table: %1 Src. column(s): %2 Table src. : %1 Colonne(s) src. : %2 Ref. table: %1 Ref. column(s): %2 Table de ref. : %1 Colonne(s) de ref. : %2 Toggle the display of filter widget as well the system/extension objects. Afficher le widget de filtre ainsi que les objets système/extension. Sort items alphabetically. When unchecked, items are sorted by OID. Trier les éléments par ordre alphabétique. Lorsque ce n'est pas coché, les éléments sont triés par OID. Sort alphabetically Trier par ordre alphabétique DatabaseImportForm &Import &Importer &Close &Fermer Options Options Import extension objects Importer les objets des extensions Connection: Connexion : Ignore import errors Ignorer les erreurs Import system objects Importer les objets système Automatically resolve dependencies Résoudre automatiquement les dépendances ... ... Debug mode Activer le mode debug Settings Paramètres Random colors for relationships Coloriser les relations de manière aléatoire Database Base de données Select all objects Tout cocher Clear object selection Tout décocher Expands all items Développer tous les éléments Collapses all items Replier tous les éléments Filter: Filtrer : <p>Resolve some of the object's dependencies by querying the catalog when a needed object does not exists on the loaded set. In some cases it's necessary to combine this option with others below. This option does not applies to database level objects like role, tablespace and language as well for data types, extensions.</p> <p>Résoudre les dépendances de certains objets en intérrogeant le catalogue lorsqu'un objet nécessaire n'existe pas dans le jeu chargé. Dans certains cas il est nécessaire de combiner cette option avec d'autres ci-dessous. Cette option ne s'applique pas aux roles, aux tablespaces, aux langages aux extensions ainsi qu'au types de données.</p> <p>All catalog queries as well the created objects' source code are printed to standard output (stdout).</p> <p>Toutes les requêtes sur le catalogue ainsi que les codes SQL des objets générés seront affichés sur la sortie standard (stdout).</p> <p>Create all imported objects in the current working model instead of create a new one.</p> <p>Créer les objets importés dans le modèle en cours plutôt que dans créer un nouveau.</p> <p>Enables the import of system built-in objects. It's recommend to select only those objects that are directly referenced by the ones to be imported. WARNING: Try to import a huge set of system objects can bloat the resultant model or even crash pgModeler due to memory/cpu overuse.</p> <p>Active l'importation des objets système. Il est recommandé de les sélectionner seulement ci ces objets sont directement référencés par ceux importés. ATTENTION : Importer un nombre important d'objets système peut saturer le modèle voire même faire planter pgModeler en cas de surconsommation CPU ou mémoire.</p> <p>Enables the import of objects created by extensions. Generally there is no need to check this option but if there are objects in the database that directly references this category of objects this mode must be enabled.</p> <p>Active l'importation des objets créés par les extensions. Générallement il n'y a pas lieu d'activer cette option mais s'il existe des objets dans la base de cette catégorie alors ce mode doit être activé.</p> <p> pgModeler ignores import errors and will try to create as many as possible objects. By checking this option the import operation will not be aborted but an incomplete model will be constructed. This option generates a log file on pgModeler's temp directory.</p> <p>pgModeler ignorera les erreurs lors de l'importation et tentera de créer le maximum d'objets possible. En activant cette option l'opération d'importation ne sera pas annulée mais pourra générer un modèle incomplet. Cette option génère un fichier journal dans le répertoire temporaire de pgModeler.</p> <p>Random colors will be assigned to imported relationships facilitating the identification of links between tables mainly in large models.</p> <p>Des couleurs aléatoires seront utilisées pour les relations afin de faciliter l'identification des liens entre les tables pour les gros modèles.</p> Filter object by it's OID Filtrer un objet par son OID By OID Par OID Output Sortie Progress label... Indicateur de progression... Cancel Annuler Retrieving objects from database... Récupération des objets depuis la base de données... Importing process aborted! Processus d'import abandonnée ! <strong>Low verbosity is set:</strong> only key informations and errors will be displayed. <strong>Le mode verbeux n'est pas activé :</strong> seules quelques informations clés et les erreurs seront affichées. Importing process canceled by user! Processus d'import interrompu par l'utilisateur ! Importing process sucessfuly ended! Processus d'import terminé avec succès ! No databases found Aucune base de données trouvée Found %1 database(s) %1 base(s) de données trouvée(s) Retrieving cluster level objects... Récupération des objets du cluster... Retrieving objects of schema `%1'... Récupération des objets du schéma `%1'... Retrieving objects of `%1' (%2)... Réccupération des objets de `%1' (%2)... This is a PostgreSQL built-in data type and cannot be imported. C'est un type de données nativement intégré à PostgreSQL. Il ne peut être importé. This is a pgModeler's built-in object. It will be ignored if checked by user. C'est un objet nativement intégré à pgModeler. Il sera ignoré s'il est coché par l'utilisateur. Import objects to the working model Importer les objets dans le modèle en cours <strong>ATTENTION:</strong> You are about to import objects to the current working model! This action will cause irreversible changes to it even in case of critical errors during the process. Do you want to proceed? <strong>ATTENTION :</strong> Vous êtes sur le point d'importer des objets dans le modèle actuel ! Cette action entraînera des modifications irréversibles même en cas d'erreurs critiques au cours du processus. Souhaitez-vous poursuivre ? Import database Importer une base de données DatabaseImportHelper Retrieving system objects... `%1' Récupération des objets système... `%1' Retrieving objects... `%1' Récupération des objets... `%1' Creating table inheritances... Création des tables héritées... Creating object `%1' (%2)... Création de l'objet `%1' (%2)... Creating columns permissions... Création des permissions sur les champs... Destroying unused detached columns... Destruction des colonnes détachées inutilisées... The database import ended but some errors were generated and saved into the log file `%1'. This file will last until pgModeler quit. L'import de la base de données est términée mais des erreurs ont été générées et sauvegardées dans le journal `%1'. Ce fichier sera disponible jusqu'à la fermeture de pgModeler. Retrieving columns of table `%1.%2', oid `%3'... Récupération des colonnes de la table `%1.%2', oid `%3'... Creating object `%1' (%2), oid `%3'... Création de l'objet `%1' (%2), oid `%3'... Trying to recreate object `%1' (%2), oid `%3'... Tentative de création de l'objet `%1' (%2), oid `%3'... Import failed to recreate some objects in `%1' tries. L'import a échoué à recréer certains objets à `%1' reprise(s). Creating permissions for object `%1' (%2)... Création des autorisations pour l'objet `%1' (%2)... Updating relationships of `%1' (%2)... Mise à jour des relations de `%1' (%2)... Validating relationships... Validation des relations... Creating table partitionings... Création des tables partitionnées... Assigning sequences to columns... Affectation des séquences aux colonnes... DatabaseModel The demonstration version can create only `%1' instances of each object type! You've reach this limit for the type: `%2' Cette version de démonstration peut seulement créer `%1' instances pour chaque type d'objet ! Cette limite a été atteinte pour les objets de type : `%2' Loading: `%1' (%2) Chargement : `%1' (%2) Validating relationships... Validation des relations... Rendering database model... Création du rendu du modèle... Generating %1 code: `%2' (%3) Génération du code %1 : `%2' (%3) Saving object `%1' (%2) Enregistrement de l'objet `%1' (%2) Saving metadata of the object `%1' (%2) Enregistrement des métadonnées de l'objet `%1' (%2) Metadata file successfully saved! Fichier de métadonnées enregistré avec succès ! Process successfully ended but no metadata was saved! Le processus s'est terminé avec succès mais aucune métadonnée n'a été enregistrée ! Creating object `%1' (%2) Création de l'objet `%1' (%2) Object `%1' (%2) already exists. Ignoring. L'objet `%1' (%2) existe déjà et a été ignoré. Loading metadata for object `%1' (%2) Chargement des métadonnées de l'objet `%1' (%2) Object `%1' (%2) not found. Ignoring metadata. Objet`%1' (%2) introuvable. Métadonnée ignorée. Metadata file successfully loaded! Fichier de métadonnées chargé avec succès ! DatabaseWidget Attributes Attributs Template DB: Modèle de BDD : Model Author: Auteur du modèle : Encoding: Encodage : Default Objects Attributs par défaut des objets Tablespace: Tablespace : Schema: Schéma : Collation: Collation : Owner: Propriétaire : LC_COLLATE: LC_COLLATE : Connections: Connexions : LC_CTYPE: LC_CTYPE : The fields <strong>LC_COLLATE</strong> and <strong>LC_CTYPE</strong> have pre-configured values based upon the running system. You can freely modify those values if you intend to export the model to another host. Les champs <strong>LC_COLLATE</strong> et <strong>LC_CTYPE</strong> ont déjà des valeurs pré-configurées basées sur le système. Vous pouvez librement les modifier si vous devez exporter le modèle vers une autre machine hôte. Use the above fields to specify the default attributes assigned to new objects created on the database model. Leaving a field empty will cause PostgreSQL to use the default values when exporting the model. Utilisez les champs ci-dessus pour spécifier les attributs par défaut à assigner aux nouveaux objets créés dans le modèle. Laisser un champ vide fera que PostgreSQL utilisera ses valeurs par défaut lors de l'export du modèle. Default Défaut Options: Options : Allow connections Autoriser les connexions Is template Est le modèle DomainWidget Name: Nom : Default Value: Valeur par défaut : Attributes Attributs Not null Non nulle Check constraints Vérifier les contraintes Expression: Expression : Name Nom Expression DonateWidget Form Formulaire Donate to pgModeler Faire un don à pgModeler Hide this widget Cacher ce widget ... ... <html><head/><body><p>pgModeler is brought to you thanks to a <span style=" font-style:italic;">great effort to create and distribute a quality product</span>. This project is reaching out levels of maturity never imagined. All this is the result of a joint work between its author and the <span style=" font-weight:600;">Open Source community</span>. <br/><br/>This software has a long way to go yet and with your help we'll keep maintaining the good job and bringing new improvements on each release. If you did like pgModeler and thinks it deserves a contribution please make a donation!</p></body></html> <html><head/><body><p>pgModeler vous est offert grâce à un <span style=" font-style :italic;">gros effort pour créer et distribuer un produit de qualité </span>. Ce projet atteint un niveau de maturité jamais imaginé. Tout ceci est le résultat d'un travail conjoint entre son auteur et la <span style="font-weight :600;">Communauté Open Source</span>.<br/><br/>Ce logiciel a encore un long chemin à parcourir mais avec votre aide, nous continuerons à faire du bon travail et à apporter de nouvelles améliorations à chaque version. Si vous avez aimé pgModeler et pensez qu'il mérite une contribution, faites un don ! </p></body></html> I want to help! Je veux aider ! ElementWidget Element properties Propriétés de l'élément Operator Class: Classe d'opérateur : Sorting: Tri : Ascending Ascendant Descending Descendant Nulls first Null en premier Column: Colonne : Operator: Opérateur : Expression: Expression : Collation: Collation : Index element properties Propriétés de l'élément de l'index Exclude element properties Propriétés de l'élément d'exclusion Partition key properties Propriétés de clé de partition ElementsTableWidget Element Élément Type Type Operator Opérateur Operator Class Classe d'opérateurs Collation Collation Sorting Tri Nulls First Vides en premier Expression Expression Ascending Ascendant Descending Descendant Yes Oui No Non EventTriggerWidget Event: Évènement : Function: Fonction : Filter Filtrer Tag: Étiquette : Tag command Balise de la commande Exception Assignment of a pseudo-type to the type of the column! Utilisation d'un pseudo-type comme type de la colonne ! Assignment of a precision greater than the length of the type! Utilisation d'une précision est plus grande que la longueur du type ! Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! Utilisation d'une précision de type time, timestamp ou interval invalide. La précision de ces types doit être inférieure ou égale à 6 ! Reference to a column which index is out of the capacity of the column list! Référence à une colonne dont l'index dépasse la capacité de la liste des colonnes ! Assignment of not allocated object! Utilisation d'un objet non référencé ! Assigning object of an invalid type! Assignation d'un objet dont le type est invalide ! Removing an object of an invalid type! Suppression d'un objet dont le type est invalide ! Obtaining an object of an invalid type! L'objet obtenu est de type invalide ! Assignment of empty name to table return type! Affectation d'un nom vide au type retourné par la table ! Reference to an event which does not belongs to trigger! Référence à un évènement qui n'appartient pas au déclencheur ! Assignment of a function which language is invalid! Définition d'une fonction dont le langage est invalide ! Assignment of empty name to an object! Affectation d'un nom vide à l'objet ! Assignment of schema object which type is invalid! Affectation d'un schema dont le type est invalide ! Assignment of tablespace object with invalid type! Utilisation d'un espace logique dont le type est invalide ! Assignment of tablespace to an invalid object! Affectation d'un espace logique à un objet invalide ! Assignment of tablespace to a constraint which type is invalid! To belong to a tablespace the constraint must be a primary key or unique! Affectation d'un espace logique à une contrainte dont le type est invalide ! Pour appartenir à un espace logique une contrainte doit être une clé primaire ou unique ! Assignment of owner object which type is invalid! Affectation d'un propiétaire dont le type est invalide ! Assignment of owner to an invalid object! Affectation d'un propriétaire à un objet invalide ! Reference to a function with invalid type! Référence à une fonction dont le type est invalide ! Reference to an argument of the operator with invalid type! Référence à un argument de l'opérateur dont le type est invalide ! Reference to an operator with invalid type! Référence à un opérateur dont le type est invalide ! Assignment of value to an invalid option type on role! Utilisation d'un attribut invalide pour un rôle ! Reference to an invalid role type! Référence à un type de rôle invalide ! Insertion of empty command to the rule! Insertion d'une commande vide dans cette règle ! Assignment of an object that already belongs to another table! Utilisation d'un objet appartenant déjà à une autre table ! Assignment of a schema to the sequence which differs from the schema of the owner table! Affectation d'un schéma à la séquence diffèrent du schéma de la table ! Assignment of an invalid value to one of the sequence attributes! Utilisation d'une valeur invalide comme attribut de séquence ! Assignment of a minimum value to the sequence which is greater than the maximum value! La valeur minimale de la séquence est supérieure à la valeur maximale ! Assignment of a null increment value to the sequence! La valeur de l'incrément de la séquence est nulle ! Assignment of null cache value to the sequence! La valeur cache de la séquence est nulle ! Assignment of not allocated language! Utilisation d'un langage inconnu ! Assignment of language object which type is invalid! Définition d'un objet langage dont le type est invalide ! Reference to data type with an index outside the capacity of data types list! Référence à un type de donnée dont l'index est en dehors de la capacité de la liste des types de données ! Assignment of invalid type to the object! Affectation d'un type invalide à l'objet ! Obtaining types with invalid quantity! Utilisation d'une quantité de types invalide ! Insertion of item which already exists in the attributes list of the type! Insertion d'un attribut déjà présent dans la définition de ce type ! Insertion of invalid item in the attributes list of the type! Insertion d'un attribut invalide à la liste des attributs de ce type ! Insertion of item which already exists in the enumarations list of the type! Insertion d'un élément déjà existant dans l'énumeration ! Insertion of invalid item in the enumerations list of the type! Insertion d'un élément invlaide dans l'énumeration ! Assignment of invalid configuration to the type! La configuration assigné au type est invalide ! Assignment of an operator which input type count is invalid to aggregate function! Utilisation d'un opérateur dont le nombre d'argument est invalide avec une fonction d'agrégation ! Assignment of an operator which types of arguments is invalid! Utilisation d'un opérateur dont le type des arguments est invalide ! There is already a relationship between `%1' (%2) and `%3' (%4) in the model! When using relationships of the type generalization, copy and one-to-one there can't be other relationships linked to the pair of tables. Il y a déjà une relation entre `%1 '(%2) et `%3' (%4) dans le modèle ! Lors de l'utilisation de relations de type généralisation, copie et un-à-un, il ne peut y avoir d'autres relations liées à la paire de tables. Unable to load the configuration file `%1'! Please check if file exists in its folder and/or if it is not corrupted! Impossible de charger le fichier de configuration `%1'! Merci de vérifier que le fichier existe dans son dossier et / ou s'il n'est pas corrompu ! Could not find the default settings file `%1'! To restore default settings check the existence of the file and try again! Impossible de trouver le fichier des préférences par défaut `%1' ! Pour restaurer les préférences par défaut veuillez vérifier l'existance de ce fichier et réessayez ! Could not load the plugin `%1' from the library `%2'! Message returned by plugin manager: `%3' Impossible de charger l'extension `%1' depuis la bibliothèque`%2' ! Message retourné par le gestionnaire d'extension : `%3' Failed to drop the database `%1' because it is defined as the default database for the connection `%2'! Impossible de supprimer la base de données `%1 'car elle est définie comme base de données par défaut pour la connexion`%2' ! The column `%1' must be `NOT NULL' because it composes the primary key of the table `%2'. You need to remove the column from the mentioned contraint in order to disable the `NOT NULL' on it! La colonne `%1' doit être `NOT NULL' car elle compose la clé primaire de la table `%2'. Vous devez supprimer la colonne de la contrainte mentionnée afin de désactiver le `NOT NULL' dessus ! The identity column `%1' has an invalid data type! The data type must be `smallint', `integer' or `bigint'. La colonne d'identité `%1' a un type de données invalide ! Le type de données doit être `smallint', `integer' ou `bigint'. Reference to an invalid affected command in policy `%1'! Référence à une commande affectée invalide dans la règle `%1' ! Reference to an invalid special role in policy `%1'! Référence à un rôle spécial invalide dans la politique `%1' ! Assignment of a second definition expression to the view! Assignation d'une seconde expression à la vue ! Assignment of collation object which type is invalid! Utilisation d'un objet collation invalide ! Collations must be created at least with attributes LC_COLLATE and LC_CTYPE defined! Les collations doivent être définies avec les attributs LC_COLLATE et LC_CTYPE renseignés ! Reference to an invalid copy table option! Référence à une option invalide de copie de table ! The INSTEAD OF mode cannot be used on triggers that belongs to tables! This is available only for view triggers! Le mode AU LIEU DE (INSTEAD OF) ne peut être utilisé comme déclencheur de table ! Ce n'est valable que pour les déclencheurs de vue ! The TRUNCATE event can only be used when the trigger executes for each statement and belongs to a table! L'événement TRUNCATE ne peut être utilisé que lors d'un déclencheur sur chaque ligne et que s'il appartient à une table ! The INSTEAD OF mode cannot be used on view triggers that executes for each statement! Le mode AU LIEU DE (INSTEAD OF) ne peut être utilisé avec des déclencheurs de vues qui s’exécutent à chaque requête ! Constraint triggers can only be executed on AFTER events and for each row! Les déclencheurs de contraintes ne peuvent être exécutés qu'APRÈS les événements et pour chaque ligne ! A view trigger cannot be AFTER/BEFORE when it executes for each row! Les déclencheurs de vues ne peuvent être AFTER/BEFORE quand il sont configurés pour une exécution sur chaque ligne ! A trigger cannot make reference to columns when using INSTEAD OF mode and UPDATE event! Un déclencheur ne peut faire référence aux colonnes quand il est utilisé en mode INSTEAD OF sur un événement de type UPDATE ! Only constraint triggers can be deferrable or reference another table! Seuls les déclencheurs de contraintes peuvent être déférés ou référencer une autre table ! The validation process failed due to an error triggered by the validation helper. For more details about the error check the exception stack! La procédure de validation a échouée à cause d'une erreur levée par l'assistant de validation. Pour de plus d'informations, referez-vous à la pile des exceptions ! Assignment of an invalid strategy/support number to an operator class element! Affectation d'un numéro de stratégie/support invalide à un élément de la classe 'operator' ! Insertion of element which already exists in the element list! Insertion d'un élément déjà existant dans la liste des éléments ! Reference to a parameter which index is out of the parameter list bounds! Référence un paramètre dont l'index est hors des limites de la liste de ces derniers ! Reference to an argument which index is out of argument list bounds! Référence un argument dont l'index est hors des limites de la liste de ces derniers ! Assignment of a name which contains invalid characters! Utilisation de caractères invalides dans le nom ! Assignment of a name which length exceeds the maximum of 63 characters! Utilisation de plus de 63 caractères dans le nom ! Reference to a role which index is out of role list bounds! Référence un rôle dont l'index est hors des limites de la liste de ces derniers ! Reference to a command which index is out of the command list bounds! Référence une commande dont l'index est hors des limites de la liste de ces dernières ! Assignment of a start value to the sequence which is extrapolating the range defined by minimum and maximum values! Affectation de la valeur de départ de la séquence en dehors de la plage de cette dernière définie par les valeurs min et max ! Reference to a label which index is out of labels list bounds! Référence un label dont l'index est hors des limites de la liste de ces derniers ! Reference to an attribute which index is out of the attributes list bounds! Référence un attribut dont l'index est hors des limites de la liste de ces derniers ! Reference to an enumeration which index is out of the enumerations list bounds! Référence une énumération dont l'index est hors des limites de la liste de ces dernières ! Reference to an element which index is out of element list bounds! Référence un élément dont l'index est hors des limites de la liste de ces derniers ! Reference to an object which index is out of object list bounds! Référence un objet dont l'index est hors des limites de la liste de ces derniers ! Removal of an object not allocated! Suppression d'un objet non alloué ! The object `%1' (%2) can not be manipulated because it is reserved to PostgreSQL! This object is present in the database model only as a reference! L'objet `%1' (%2) ne peut être modifié car il est est réservé à PostgreSQL ! Cet objet apparaît dans le modèle uniquement comme référence ! Operation with object(s) which type(s) is invalid! Opérations sur un ou des objets dont les types sont invalides ! Reference to object with invalid type! Référence à un objet ayant un type invalide ! Operation with object not allocated! Opération sur des objets non alloués ! The relationship of the type 1-1 where both tables are mandatory participation is not implemented because it requires fusion between the tables that breaks the modeling done by the user! Une association de type 1-1, quand les deux tables sont obligatoires, n'est pas implémentée car cela requiert la fusion des tables, ce qui casse le modèle réalisé par l'utilisateur ! Assignment of an invalid expression to the object! Affectation d'une expression invalide à l'objet ! Assignment of a primary key to a table which already has one! Impossible de définir une clé primaire à une table qui en possède déjà une ! Identifier relationship can not be created for a self relationship, relationships of the type n-n, copy or generalization! La relation d'identifiant ne peut pas être créée pour une relation vers elle même, pour les relations de type n-n, pour la copie ou pour la généralisation! A foreign key can not be added to a relationship because is created automatically when this is connected! Une clé étrangère ne peut être ajoutée à une relation car elle est créée automatiquement lors de la mise en relation ! Reference to an user-defined data type that not exists in the model! Référence à un type de donné défini par l'utilisateur qui n'existe pas dans le modèle ! Assignment of invalid maximum size to operation list! La taille maximum affectée à la liste d'opérations est invalide ! One or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! Un ou plusieurs objets ont été invalidés et automatiquement supprimés car ils référençaient des colonnes qui étaient incluses dans des associations et qui n'existaient plus du fait de la suppression de l'associations ou de l'exclusion de ces colonnes ! Reference to an invalid privilege type! Référence à un type de privilège invalide ! Insertion of a role which already exists in the role list of the permission! Insertion d'un rôle déjà existant dans la liste de cette permission ! Assignment of privilege incompatible with the type of object referenced by permission! Utilisation d'un privilège incompatible avec le type d'objet référencé par la permission ! Assignment of invalid name to the table generated from N-N relationship! Le nom de la table générée par la relation N-N est invalide ! Reference to a column of the objects table with invalid index! Référence à une colonne de la table ayant un index invalide ! Reference to a row of the objects table with invalid index! Référence à une ligne de la table ayant un index invalide ! Constraints like primary key, foreign key or unique must have at least one column related to them! For foreign keys must be selected, in addition, the referenced columns! Les contraintes telles que clé primaire, clé étrangère ou unicité doivent avoir au moins une colonne associée ! Pour les clés étrangères, les colonnes référencées doivent également être sélectionnées ! The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 Le process d'exportat a échoué suite à une erreur déclenchée par le serveur PostgreSQL lors de la tentative d'exécution d'une commande SQL. Pour plus de détails concernant l'erreur vérifiez la pile d'exceptions ! ** Commande SQL exécutée: ** %1 One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. Une ou plusieurs extensions n'ont pas été activées suite à la survenue d'erreurs lors du chargement. Pour plus de détails, consultez la pile d'exceptions. Assignment of empty XML buffer to parser! Passage d'un tampon XML vide à l'analyseur ! Assignment of empty DTD file name! Le nom du fichier DTD est vide ! Assignment of empty name to the DTD declaration! Le nom de la déclaration DTD est vide ! Operation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! Opération sur l'arbre d'élément non alloué ! Il est nécessaire de charger le tampon d'analyseur XML et de l'interpréter pour que l'arbre soit généré ! Operation with unallocated tree element! Opération avec un élément de l'arbre non alloué ! Operation with element which does not exists in the element tree currently loaded! Opération avec un élément inexistant dans l'arbre des éléments actullement chargé ! Assignment of a value to an invalid connection parameter! Affectation d'une valeur à un paramètre de connexion invalide ! Operation on connection not established! Opération sur une connexion non établie ! Attempt to connect without define configuration parameters! Tentative de connexion sans paramètre de configuration défini ! Assignment of not allocated SQL command result! Affectation d'un résultat de commande SQL non alloué ! Unable to allocate the result of the SQL command because the response from the DBMS was not understood by the client! Impossible de retourner le résultat de la commande SQL car la réponse du SGBD n'a pas été comprise par le client ! Reference to a column of tuple with invalid index! Référence à une colonne de tuple dont l'index est invalide ! Reference to a column of tuple with invalid name! Référence à une colonne de tuple dont le nom est invalide ! Assignment of a not allocated column to object `%1' (%2)! Affectation d'une colonne non allouée à l'objet `%1 '(%2) ! Assignment of a not allocated schema to object `%1' (%2)! Affectation d'un schéma non allouée à l'objet `%1 '(%2) ! The object `%1' (%2) has inconsistent SQL or XML definition! L'objet `%1 '(%2) a une définition SQL ou XML incohérente ! The object `%1' (%2) already exists on `%3' (%4)! L'objet `%1 '(%2) existe déjà sur `%3' (%4) ! The object `%1' (%2) cannot be assigned because there is already exists in the container object `%3'! L'objet `%1 '(%2) ne peut être assigné car il existe déjà dans l'objet conteneur `%3' ! The insertion of the parameter `%1' will not be possible because there is another parameter with same name in the function `%2'! L'insertion du paramètre `%1' ne sera pas possible car il existe un autre paramètre avec le même nom dans la fonction `%2' ! The insertion of the table return type `%1' will not be possible because there is another return type with the same name in the `%2'! L'insertion du type de retour de la table `%1' ne sera pas possible car il existe un autre type de retour avec le même nom dans le`%2' ! The column `%1' cannot be assigned to the trigger `%2' because they belongs to different parent tables! La colonne `%1' ne peut pas être affectée au déclencheur `%2' car ils appartiennent à des tables parentes différentes ! Assignment of a not allocated function to object `%1' (%2)! Affectation d'une fonction non allouée à l'objet `%1' (%2) ! Assignment of a function which return type is different from `%1'! Affectation d'une fonction dont le type de retour est différent de `%1' ! Assignment of a function which parameter count is invalid to the object `%1' (%2)! Affectation d'une fonction dont le nombre de paramètres n'est pas valide pour l'objet `%1' (%2) ! Event trigger function must be coded in any language other than SQL! La fonction de déclenchement d'événement doit être codée dans n'importe quelle langue autre que SQL ! Assignment of not allocated table to object `%1' (%2)! Affectation de la table non allouée à l'objet `%1' (%2) ! Assignment of appended or prepended SQL to an invalid object! Affectation de code SQL ajouté ou préfixé à un objet invalide ! The insertion of the role `%1' is not possible because this is already being referenced by role `%2'! L'insertion du rôle `%1 n'est pas possible car il est déjà référencé par le rôle `%2' ! Reference redundancy detected by having the role `%1' referencing the role `%2'! Redondance de références détectée en ayant le rôle `%1' référençant le rôle `%2' ! The role `%1' can not be listed as a member of itself! Le rôle `%1' ne peut pas être listé comme un membre de lui-même ! It's not possible to create a self generalization/copy/partition relationship! The table can not inherit or copy its own attributes or be a partition of itself! Assignment of owner table which is not in the same schema as the sequence `%1'! Affectation de la table propriétaire qui n'est pas dans le même schéma que la séquence `%1' ! Assignment of owner table which does not belong to the same owner of the sequence `%1'! Affectation de la table propriétaire qui n'appartient pas au même propriétaire de la séquence `%1' ! Assignment of a nonexistent owner column to the sequence `%1'! Affectation d'une colonne propriétaire inexistante à la séquence `%1' ! Assignment of an owner column to the sequence `%1' that is not related to any table! Affectation d'une colonne propriétaire à la séquence `%1' qui n'est liée à aucune table ! Allocation of an object with invalid type! Assignment of a function with invalid return type to object `%1' (%2)! Affectation d'une fonction avec un type de retour invalide à l'objet `%1' (%2) ! Assignment of a function with invalid parameter(s) type(s) to object `%1' (%2)! Affectation d'une fonction avec un (des) paramètre(s) non valide(s) à l'objet `%1' (%2) ! Assignment of an empty directory to object `%1' (%2)! Affectation d'un répertoire vide à l'objet `%1' (%2) ! Assignment of system reserved name to the object `%1' (%2)! Affectation du nom réservé au système à l'objet `%1' (%2) ! One function with invalid configuration is been used by the object `%1' (%2)! Une fonction avec une configuration invalide est utilisée par l'objet `%1' (%2) ! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4)! L'objet `%1' (%2) ne peut pas être supprimé car il est référencé par l'objet `%3' (%4) ! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4) that belongs to `%5' (%6)! L'objet `%1' (%2) ne peut pas être supprimé car il est référencé par l'objet `%3' (%4) appartenant à `%5' (%6) ! The creation of the relationship `%1' between the table `%2' and `%3' can not be done because one does not have a primary key. If the relationship is of the type n-n both tables must have primary keys! La création de la relation `%1' entre la table `%2' et `%3' ne peut pas être effectuée car il n'y a pas de clé primaire. Si la relation est du type n-n, les deux tables doivent avoir des clés primaires ! Unable to create a copy relationship because the column `%1' in table `%2' already exists in table `%3'! Impossible de créer une relation de copie car la colonne `%1' de la table `%2' existe déjà dans la table `%3' ! Unable to create the generalization relationship because the column `%1' in table `%2' can not be merged with the column `%3' of table `%4' because they have incompatible types! Impossible de créer la relation de généralisation car la colonne `%1' de la table `%2' ne peut pas être fusionnée avec la colonne `%3' de la table `%4' car ils ont des types incompatibles ! An attribute can not be added to a copy, generalization or partitioning relationship! The object `%1' (%2) is referencing the object `%3' (%4) which was not found in the model! L'objet `%1' (%2) fait référence à l'objet `%3' (%4) qui n'a pas été trouvé dans le modèle ! The primary key `%1' can only be allocated if declared within a block of code that defines a table or relationship! La clé primaire `%1' ne peut être allouée que si elle est déclarée dans un bloc de code qui définit une table ou une relation ! There is already a permission on object `%1' (%2) which has one or more equal roles from those present on permission to be assigned to the object! Il y a déjà une permission sur l'objet `%1' (%2) qui a un ou plusieurs rôles égaux à ceux présents dans l'autorisation à assigner à l'objet ! A permission is referencing the object `%1' (%2) which was not found in the model! Une permission fait référence à l'objet `%1' (%2) qui n'a pas été trouvé dans le modèle ! The object `%1' (%2) can not be created because its not being assigned to any schema! L'objet `%1' (%2) ne peut pas être créé car il n'est affecté à aucun schéma ! The tablespace `%1' can not be inserted into the model because it points to the same directory as the tablespace `%2'! L'espace de stockage `%1' ne peut pas être inséré dans le modèle car il pointe sur le même répertoire que l'espace de table `%2' ! The function `%1' can not get a source code as a definition because its language is set to C. Use the attributes symbol and dynamic library instead! La fonction `%1' ne peut pas obtenir un code source en tant que définition car sa langue est définie sur C. Utilisez plutôt le symbole d'attributs et la bibliothèque dynamique ! The function `%1' can have the attributes symbol and dynamic library configured only if the language is set to C. For all other cases you must specify a source code that defines it in the DBMS! La fonction `%1' peut avoir le symbole des attributs et la bibliothèque dynamique configurés uniquement si la langue est définie sur C. Dans tous les autres cas, il faut spécifier un code source qui le définit dans le SGBD ! The operator `%1' can not be assigned as negator of operator `%2' because it has incompatible settings! L'opérateur `%1' ne peut pas être affecté en tant que négateur de l'opérateur `%2' car il a des paramètres incompatibles ! The type `%1' can not self refer in the attributes `element' or `copy type' or be used as a data type of an attribute in the configuration of a composite type! Le type `%1' ne peut pas se référer à lui-même dans les attributs `element' ou `copy type' ou être utilisé comme type de données d'un attribut dans la configuration d'un type composite ! Assignment of invalid element to type `%1'! Affectation d'un élément invalide de type `%1' ! Assignment of invalid alignment to type `%1'! Affectation de l'alignement invalide de type `%1' ! The relationship `%1' can not make use of the special primary key because it is marked as identifier or it is a self relationship! La relation `%1' ne peut pas utiliser la clé primaire spéciale car elle est marquée comme identifiant ou c'est une association d'elle-même ! The object `%1' (%2) can not be edited or deleted because it was automatically included through a relationship! If the object is an attribute or constraint the modifications must be done on the relationship editing form. L'objet `%1' (%2) ne peut pas être modifié ou supprimé car il a été automatiquement inclus dans une association ! Si l'objet est un attribut ou une contrainte, les modifications doivent être effectuées sur le formulaire d'édition de la relation. The object `%1' (%2) can not be deleted because it is protected! L'objet `%1' (%2) ne peut pas être supprimé car il est protégé ! The group `%1' has already been declared earlier! Le groupe `%1' a déjà été déclaré ! The group `%1' can not be built in the groups declaration block (%2)! Le groupe `%1' ne peut pas être construit dans le bloc de déclaration de groupe (%2) ! The group `%1' was built but not declared in the groups declaration block (%2)! Le groupe `%1' a été construit mais pas déclaré dans le bloc de déclaration de groupe (%2) ! The group `%1' can not be built without possessing child elements! Le groupe `%1' ne peut pas être construit sans posséder d'éléments enfants ! The group `%1' can not be built once more because this was done in previous blocks! Le groupe `%1' ne peut pas être construit une fois de plus car cela a été fait dans les blocs précédents ! The group `%1' has been declared but not built! Le groupe `%1' a été déclaré mais pas construit ! The new configuration of the function invalidates the object `%1' (%2)! In this case it is needed to undo the relationship between the affected object and function in order to the new configuration to take effect! La nouvelle configuration de la fonction invalide l'objet `%1' (%2) ! Dans ce cas, il est nécessaire d'annuler la relation entre l'objet affecté et la fonction afin que la nouvelle configuration prenne effet ! Error while interpreting XML buffer at line %1 column %2. Message generated by the parser: %3. %4 Erreur lors de l'interprétation du tampon XML à la ligne %1, colonne %2. Message généré par l'analyseur : %3. %4 Attempt to start a connection already stablished! Tentative de lancement d'une connexion déjà établie ! Could not connect to the database. Message returned: `%1' Impossible de se connecter à la base de données. Message renvoyé : `%1' Unable to allocate command result for the SQL because the server has generated a fatal error! Message returned by the DBMS: `%1' Impossible d'allouer le résultat de la commande SQL car le serveur a généré une erreur fatale ! Message renvoyé par le SGBD : `%1' Reference to a column of a tuple which was not yet initialized (tuple navigation not started)! Référence à une colonne d'un tuple qui n'a pas encore été initialisé (navigation en tuple non démarrée) ! Could not execute the SQL command. Message returned: `%1' Impossible d'exécuter la commande SQL. Message renvoyé : `%1' It is not possible mix ordinary references (SELECT-FROM, FROM-WHERE, After WHERE) with references used as view SQL definition! Il n'est pas possible de mélanger des références ordinaires (SELECT-FROM, FROM-WHERE, Après WHERE) avec des références utilisées comme vue de définition SQL ! The object `%1' (%2) cannot reference itself! This operation is not permitted for this kind of object! L'objet `%1' (%2) ne peut pas se référencer lui-même ! Cette opération n'est pas autorisée pour ce genre d'objet ! Only operator families which uses `btree' as indexing method are accepted by operator class elements! Seules les familles d'opérateurs qui utilisent `btree 'comme méthode d'indexation sont acceptées par les éléments de classe d'opérateur ! Assignment of a column which has no parent table to the object `%1' (%2)! Affectation d'une colonne qui n'a pas de table parent à l'objet `%1' (%2) ! The operator class assigned to the object `%1' (%2) must use `btree' as indexing method! La classe d'opérateur affectée à l'objet `%1' (%2) doit utiliser` btree' comme méthode d'indexation ! The extension `%1' is registered as a data type and cannot have the attribute `handles datatype' modified! L'extension `%1' est enregistrée en tant que type de données et ne peut pas avoir l'attribut `handle datatype' modifié ! The fk relationship `%1' cannot be created because the foreign-key that represents it was not created on table `%2'! L'association clé étrangère `%1' ne peut pas être créée car la clé étrangère qui la représente n'a pas été créée sur la table `%2' ! Assignement of an invalid object name pattern to the relationship `%1'! Affectation d'un modèle de nom d'objet invalide à la relation `%1' ! Reference to an invalid object name pattern id on the relationship `%1'! Référence à un identifiant de modèle de nom d'objet invalide sur la relation `%1' ! Mixing incompatibles DBMS export modes: `ignore object duplications', `drop database' or `drop objects' cannot be used with `simulate export'! Mélange incompatibles des modes d'export du SGBD : `ignore object duplications', `drop database' ou `drop objects' ne peuvent être utilisés avec `simulate export' ! Mixing incompatibles DROP options: `drop database' and `drop objects' cannot be used at the same time! Mixage incompatible des options DROP : `drop database' et `drop objects' ne peuvent pas être utilisés en même temps ! Invalid object id swapping operation! The objects involved are the same! Opération d'échange d'identifiant d'objet invalide ! Les objets impliqués sont les mêmes ! Invalid object id swapping operation! The database itself, tablespaces or roles cannot have the ids swapped! Opération d'échange d'identifiant d'objet invalide ! La base de données elle-même, les espaces de stockage ou les rôles ne peuvent pas échanger leurs identifiants ! The widget already has a parent and cannot be assigned to a different object! Le widget a déjà un parent et ne peut pas être assigné à un objet différent ! Could not load the database model file `%1'. Check the error stack to see details. Try to run `pgmodeler-cli --fix-model' in order to correct the structure of the file if that is the case. Impossible de charger le fichier de modèle de base de données `%1'. Vérifiez la pile d'erreurs pour plus de détails. Essayez d'exécuter `pgmodeler-cli --fix-model' afin de corriger la structure du fichier si besoin. The column `%1' cannot reference it's parent table `%2' as data type! La colonne `%1' ne peut pas référencer sa table parent `%2' comme type de données ! Operation with an invalid element id `%1'! Opération avec un identifiant d'élément invalide `%1' ! Reference to an invalid color id `%1' for element `%2'! Référence à un identifiant de couleur invalide `%1' pour l'élément `%2' ! The sequence `%1' can't be assigned to the column `%2' because the data type of the latter is incompatible. The type used must be an integer one! La séquence `%1' ne peut pas être affectée à la colonne `%2' car le type de données de cette dernière est incompatible. Le type utilisé doit être un entier ! The option to generate temporary object names can only be used in simulation mode! L'option de génération de noms d'objets temporaires ne peut être utilisée qu'en mode simulation ! Could not assign the variable `%1' to event trigger's filter. Currently, PostgreSQL supports only the `TAG' variable! Impossible d'affecter la variable `%1 'au filtre du déclencheur d'événement. Actuellement, PostgreSQL supporte uniquement la variable `TAG' ! Malformed unescaped value on row `%1' column `%2'! Valeur non echappée malformée à la ligne `%1', colonne `%2' ! The object `%1' (%2) can't be handled because some needed fields are not set! Please, make sure to fill at least the requires fields in order to properly create or update the object. L'objet `%1' (%2) ne peut pas être manipulé car certains champs nécessaires ne sont pas définis ! Merci de vous assurer de remplir au moins les champs requis afin de créer ou de mettre à jour correctement l'objet. A relationship can only be swapped by other object of the same kind! Une association ne peut être permutée que par un autre objet du même genre ! Assignment of a null type to object `%1' (%2)! Affectation d'un type nul à l'objet `%1' (%2) ! Unable to create the generalization relationship because the constraint `%1' in table `%2' can not be merged with the constraint `%3' of table `%4' due to their incompatible composition! Impossible de créer l'association de généralisation car la contrainte `%1' de la table `%2' ne peut pas être fusionnée avec la contrainte `%3' de la table `%4' en raison de leurs compositions incompatibles ! Unable to write the file or directory `%1'! Make sure that the path exists and the user has write permissions over it! Unable to write the file `%1' due to one or more errors in the definition generation process! Impossible d'écrire le fichier `%1' en raison d'une ou de plusieurs erreurs dans le processus de génération de définition ! The configuration of the relationship `%1' generates a redundancy between the relationships `%2'. Redundancy on identifier or generalization/copy relationships are not accepted since they result in incorrect column spreading making the model inconsistent! La configuration de la relation `%1' génère une redondance entre les associations `%2 . La redondance sur l'identificateur ou les relations de généralisation/copie de l'association ne sont pas acceptées car elles entraînent une répartition incorrecte des colonnes, ce qui rend le modèle incohérent ! It is not possible to create arrays sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! The operator `%1' can not be assigned as a commutator of operator `%2' because it has incompatible settings! A view reference should be used in at least one of these SQL scopes: View Definition, SELECT, FROM, WHERE or GROUP/HAVING! Invalid syntax in file `%1', line %2, column %3! Syntaxe non valide dans le fichier `%1', ligne %2, colonne %3! Invalid instruction `%1' on file `%2', line %3, column %4! Instruction invalide `%1' dans le fichier `%2', ligne `%3', colonne `%4' ! Unknown attribute `%1' in file `%2', line %3, column %4! Attribut inconnu `%1' dans le fichier `%2', ligne `%3', colonne `%4' ! Invalid metacharacter `%1' in file `%2', line %3, column %4! Métacaractère invalide `%1' dans le fichier `%2', ligne `%3', colonne `%4' ! Invalid operator `%1' in comparison expression, file `%2', line %3, column %4! Opérateur invalide `%1' dans l'expression de comparaison, fichier `%2', ligne`%3', colonne `%4' ! Attribute `%1' with an undefined value in file `%2', line %3, column %4! L'attribut `%1' a une valeur non définie dans le fichier `%2', ligne`%3', colonne `%4' ! Attribute `%1' with an invalid name in file `%2', line %3, column %4! L'attribut `%1' a un nom invalide dans le fichier `%2', ligne`%3', colonne `%4' ! Could not access the file or directory `%1'! Make sure that it exists or if the user has access permissions on it! Impossible d'acceder au fichier ou fossier `%1' ! Vérifiez qu'il existe et que l'utilisateur à les droits d'écritures ! Could not load file `%1'. The same appears to be inconsistent or one of its dependencies (DTD files) has errors or is missing! Impossible de charger le fichier `%1'. La même chose semble être incohérente ou l'une de ses dépendances (fichiers DTD) a des erreurs ou est manquante ! Reference to a tuple with an invalid index or the result is empty (no tuples)! Référence à un tuple avec un index invalide ou le résultat est vide (pas de tuple) ! Invalid use of a view reference as whole SQL definition! The assigned reference must be an expression! Utilisation invalide d'une référence de vue comme définition SQL entière ! La référence affectée doit être une expression ! At the moment pgModeler does not support the creation of primary keys which some columns were generated by relationship connection. To create primary keys with this feature you can use the field `Identifier' or the tab `Primary key' on relationship editing form! Actuellement pgModeler ne supporte pas la création de clés primaires dont certaines colonnes ont été générées par la connection d'associations. Pour créer des clés primaires avec cette fonctionnalité, vous pouvez utiliser le champ `Identifier' ou l'onglet `Primary key' sur le formulaire d'édition de relation ! The copy relationship between the tables `%1' and `%2' cannot be done because the first one already copies attributes from `%3'! Tables can have only one copy table! The paritioning relationship between the tables `%1' and `%2' cannot be done because the first one is already a partition of the table `%3'! Partition tables can be participating of only one partition hierarchy at a time! The relationship between the tables `%1' and `%2' can't be created because one of the entities is part of a partitioning hierachy! The table `%3' can't be used in `generalization', `copy' and `one-to-one' relationships. In `one-to-many' and `many-to-many' relationships the mentioned table can't be referenced by the generated foreign key(s). Reference to a function id which is incompatible with the user define type configuration! Référence à un identifiant de fonction incompatible avec la configuration du type de définition de l'utilisateur ! Unsupported PostgreSQL version (%1) detected! Valid versions are between %2 and %3. Version PostgreSQL non prise en charge (%1) détectée! Les versions valides sont comprises entre %2 et %3. Invalid use of variadic parameter mode! This mode can be used only with an array or "any" data type! Utilisation invalide du mode paramètre variadique ! Ce mode ne peut être utilisé qu'avec un tableau ou un type de données "any" ! The object `%1' (%2), oid `%3', could not be imported due to one or more errors! Check the exception stack for more details. `HINT:' if the object somehow references objects in `pg_catalog' or `information_schema' consider enable the importing of system objects. L'objet `%1 '(%2), oid `%3', n'a pu être importé en raison d'au moins une erreur ! Vérifiez la pile d'exceptions pour plus de détails. `REMARQUE : 'Si l'objet référence d'une manière ou d'une autre les objets dans` pg_catalog' ou `information_schema ', envisagez d'importer les objets système. Assignment of an invalid object to `%1' (%2)! The assigned object must be of type `%3'. Affectation d'un objet invalide à `%1' (%2) ! L'objet affecté doit être de type `%3'. It's not possible convert the type of the column `%1' to serial! It must have an `integer' based type and its default value must be a call to `nextval(seq_name::regclass)' function or a sequence object must be directly assigned to the column! Il n'est pas possible de convertir le type de la colonne `%1' en série ! Il doit avoir un type basé sur `integer' et sa valeur par défaut doit être un appel à la fonction `nextval (seq_name::regclass)' ou un objet séquence doit être directement assigné à la colonne ! Could not perform the `%1' operation on `%2' using the data on row `%3'! All changes were rolled back. ** Returned error ** %4 Impossible d'exécuter l'opération `%1 'sur `%2' en utilisant les données de la ligne `%3 '! Tous les changements ont été annulés. ** Erreur retournée ** %4 Trying to undo/redo an invalid operation over an object that does not exists anymore or can't be handled! The operation history will be cleaned up. Tentative d'annulation/de rétablissement d'une opération invalide sur un objet qui n'existe plus ou ne peut plus être géré ! L'historique des opérations sera nettoyé. A parent table of `%1' which OID is `%2' was not found in the set of imported objects! Une table parente de `%1' dont l'OID est `%2' n'a pas été trouvée dans l'ensemble des objets importés ! The enumeration `%1' can't be assigned to the type `%2' because contains invalid characters! L'énumération `%1' ne peut pas être affectée au type `%2' car elle contient des caractères non valides ! The enumeration `%1' can't be assigned to the type `%2' because is too long! L'énumération `%1' ne peut pas être affectée au type `%2' car elle est trop longue ! The connection was idle for too long and was automatically closed! La connexion était inactive depuis trop longtemps et a été automatiquement fermée ! The connection was unexpectedly closed by the database server `%1' at port `%2'! La connexion a été fermée de manière inattendue par le serveur de la base de données `%1' sur le port `%2' ! Unable to create a partition relationship because the partion table `%1' is not empty or has columns that are not present on the partitioned table `%2'! Unable to create a partition relationship between the tables `%1' (partition) and `%2' (partitioned) because no partitioning type is defined on the latter! Invalid amount of partition keys being assinged to the table `%1'! Multiples partition keys are allowed only on `HASH' and `RANGE' partitioning strategies. A partition key of the table `%1' is referencing the object `%3' (%4) which was not found in the model! The column `%1' can't be assigned to a partition key because it was created by a relatinship and this kind of operation is not yet supported! HINT: create the column manually on the table and then create the partition key using it. The column `%1' on the table `%2' can't be removed because it is being referenced by one or more patition keys! Assignment of an option to the object with an invalid name! Assignment of an invalid name to the object reference! Assignment of a not allocated object to the object reference! The object reference name `%1' is already defined! A zero-byte file was detected while saving to `%1'. In order to avoid data loss the original contents of the file prior to the last saving was restored and a security copy kept on `%2'. You can copy that backup file to a safe place as a last resort to avoid the complete data loss! Note that the backup file will be erased when the application is closed. The object `%1' (%2) can't be assigned to the foreign table `%3' because it's unsupported! Foreign tables only accepts columns, check constraints and triggers. The creation of the relationship `%1' between the tables `%2' and `%3' can't be done because one of the entities is a foreign table. Foreign tables can only be part of a inheritance, copy or partitioning relationship! The creation of the copy relationship `%1' between the tables `%2' and `%3' can't be done because a foreign table is not allowed to copy table columns! Failed to save the data dictionary into `%1'! Make sure that the provided path points to a directory or if the user has write permissions over it! ** Another %1 error(s) were suppressed due to stacktrace size limits. ExtensionWidget Version: Version : Old Version: Ancienne version : This attribute cannot be changed once the object is created. Cet attribut ne peut être modifié une fois l'objet créé. Handles data type Gérer les types de données FindReplaceWidget Form Formulaire Hide this widget ... ... Replace one occurrence Remplace une occurrence Replace Remplacer Replace all occurrences Remplace toutes les occurrences Replace All Remplacer tout Replace the selection and find the next one Remplacer l'occurrence courante et trouver le suivant Replace && Find Remplacer && Suivant Replace: Remplacer par : Find: Recherche : Find previous Précédent Shift+F3 Maj+F3 Find next Suivant F3 F3 Case sensitive Respecter la casse Regular expression Expression régulière Whole words Mots entier ForeignDataWrapperWidget Validator: Handler: Options Options The handler function must have the following signature: <strong>fdw_handler</strong> <em>function_name</em>() The validator function must have the following signature: <em>function_name</em>(<strong>text[]</strong>,<strong>oid</strong>). The return type of ths function is ignored. Option Value Valeur ForeignServerWidget Version: Version : FDW: Type: Type : Options Options Option Value Valeur ForeignTable new_foreign_table FunctionWidget Attributes Attributs Function Type: Type de fonction : Execution Cost: Coût d'exécution : Rows Returned: Lignes retournées : Behavior: Comportement : Security: Sécurité : Return Method: Type de retour : Set Multiple Return Table Table de retour Windown Func. Fonct. fenêtrage. Leakproof Leakproof Parameters Arguments Definition Définition Dynamic Library: Bibliothèque dynamique : Symbol: Symbole : Library: Bibliothèque : Source code: Code source : Column Colonne Type Name Nom Mode Default Value Valeur par défaut Si&mple Si&mple Tab&le Tab&le Language: Langage : GeneralConfigWidget Form Formulaire Milimeters Millimètres Pixels Pixels Inches Pouces Centimeter Centimètres A0 (841 x 1189 mm) A0 (841 x 1189 mm) General && Design Général && modélisation Check if there is a new version on server Vérifier la présence d'une nouvelle version au lancement Design Modélisation Save and restore last position and zoom Sauvegarder la position et le zoom Disable render smoothness Désactiver l'anticrénelage Hide the object that represents the relationship name Masque l'étiquette indiquant le nom de chaque association. Validate before save, export or diff Validation du modèle exigée pour sauvegarder, exporter ou comparer Hide the object which represents the tag assigned to the table Masquer l'objet qui représente la balise affectée à la table. Enable SQL code completion Activer la complétion du code SQL Printing && Code Impression && édition Size: Taille : pt pt Font: Police : Hide relationship name Masquer le nom des associations Hide table extended attributes Masquer les attributs étendus des tables Paper: Papier : Orientation: Orientation : General Général Hide table tags Masquer les balises des tables Printing Impression Options: Options : Attributes per page: <p>These spinners define the minimum amount of attributes visible per page in each section of tables and views when the pagination is enabled on them. The first one controls the amount of columns per page. The second defines the amount of extended attributes (constraints, indexes, trigger, rules, policies) displayed per page.</p> <p>Defines the minimum amount of attributes visible per page on tables and view when the pagination is enabled on these objects.</p> <p>Defines the minimum opacity percentage applied to the objects when using the fade out feature. A zero opacity causes the object to be completely hidden not being possible to interact with it in the canvas area.</p> <p>Defines the period when the opened models will be saved automatically. The temporary models saving period will be defined as the half of the value defined here. If the autosave is disabled the temporary models saving will occur in a period of 5 minutes.</p> Operation history size: <p>Defines the maximum amount of elements held in the operation history. Once reached the maximum number the history is automatically cleaned.</p> <p>Defines the vertical and horizontal grid size. This value affects the spacing of objects when using the feature that aligns the objects on the grid. </p> <p>Graphical objects (table, views and textboxes) will be created in a single step without the need to click on canvas </p> Simplify the creation of graphical objects <p>When enabled this option creates a placeholder object at the previous table's position when starting to move it. This will cause graphical updates on relationship lines to be performed only when the drag & drop action is done improving the performance. Disabling placeholders will cause those updates to be executed every time the table's position changes a single pixel (classical behavior).</p> <p>After loading the model the last zoom and position on canvas will be restored</p> <p>By default the range selection is triggered with Shift + left click. By checking this option range selection will be activated only with a single click and move.</p> Hide the portion of table which represents triggers, indexes and rules. <p>Triggers a dialog asking the user to validate the model before a save, export or diff operation.</p> Move canvas by keeping the mouse on corners <p> Disable the antialiasing for lines and texts improving performance when handling huge models.</p> <p>Forces the escaping of line breaks and tabulations in objects' comments during SQL code generation. This option produces a more compact SQL code since all comments will be presented in one line. Despite changing the presentation this option doesn't affect the final semantics of multilined comments.</p> Escape objects' comments in SQL code Save/restore dialogs sizes Reset the dialogs sizes and positions to their default values. Reset sizes <p>Reduces the verbosity of the export, import and diff process causing only key info messages and errors to be displayed. This option causes less rendering operations to be performed when displaying progress messages and, as a consequence, it makes these processes run faster.</p> Low verbosity for the export, import and diff processes Print grid Imprimer la grille A1 (594 x 841 mm) A2 (420 x 594 mm) A3 (297 x 420 mm) A4 (210 x 297 mm) A5 (148 x 210 mm) A6 (105 x 148 mm) A7 (74 x 105 mm) A8 (52 x 74 mm) A9 (37 x 52 mm) B0 (1030 x 1456 mm) B1 (728 x 1030 mm) B10 (32 x 45 mm) B2 (515 x 728 mm) B3 (364 x 515 mm) B4 (257 x 364 mm) B5 (182 x 257 mm) B6 (128 x 182 mm) B7 (91 x 128 mm) B8 (64 x 91 mm) B9 (45 x 64 mm) C5E (163 x 229 mm) Comm10E (105 x 241 mm) DLE (110 x 220 mm) Executive (191 x 254 mm) Folio (210 x 330 mm) Ledger (432 x 279 mm) Legal (216 x 356 mm) Letter (216 x 279 mm) Tabloid (279 x 432 mm) Custom Personnalisé Unity: Unité : Custom Size: Taille papier : Width: Largeur : Height: Hauteur : Page Margins: Marges : Left: Gauche : Left margin Marge de gauche Top: Haut : Top margin Marge du haut Right: Droite : Right margin Marge de droite Bottom: Bas : Bottom margin Marge du bas Landscape Paysage Portrait Portrait Print page numbers Imprimer les numéros de page Start move the canvas when the cursor is on the canvas edges Commencer à déplacer le canevas lorsque le curseur se trouve sur les bords de celui-ci. Use placeholders when moving tables Utiliser des espaces réservés lors du déplacement de tables Toggles the code completion in all fields that accepts the input of SQL commands. (Dés)active l'achèvement du code dans tous les champs qui acceptent les commandes SQL en entrée. Code style Style du code Colors: Couleurs : Display line numbers Afficher les numéros de ligne Highlight lines at cursor's position Surligner les lignes à la position du curseur Custom tab width: Largeur d'onglet personnalisé : Line numbers' font color Couleur de la police des numéros de ligne Line numbers' background color Couleur d'arrière-plan des numéros de ligne Highlighted line color Couleur de la ligne en surbrillance The little brown fox jumps over the lazy dog Le petit renard brun saute par-dessus le chien paresseux System default Défaillance du système All files (*.*) Tous les fichiers (*.*) Load file Charger un fichier This action will reset all dialogs to their default size and positions on the screen! Do you really want to proceed? Minimum object opacity (%): Opacité min. des objets (%) : Canvas grid size: Taille de grille du canevas : Trigger range selection with a single click Déclenchement de la sélection en un clic Autosave interval (minutes): Intervalle sauv. auto : Replaces any straight line in relationship by curved ones in order to improve the model's visualization. Remplace les lignes droites des relations par des courbes pour améliorer la lisibilité du modèle. Use curved lines for relationships Utiliser des lignes courbes pour les associations SQL history max. length: Longueur max. de l'historique SQL : Souce code editor: Éditeur de code source : lines lignes Clear the entire SQL comand history. Nettoyer complètement l'historique des commandes SQL. Clear history Nettoyer l'historique Configurations directory: Dossier de configuration : Browse the source code editor application Rechercher l'éditeur de code source Open in file manager Ouvrir dans le gestionnaire de fichier Check updates at startup Vérifier MAJ au démarrage Souce code editor args: Arg. pour l'éditeur de code source : User interface language: Langue de l'interface graphique : Overrides the default user interface language defined by the system. Requires restarting the program. <strong>NOTE:</strong> UI translations are third party collaborations thus any typo or mistake should be reported directly to their respective maintainers. Remplace la langue de l'interface utilisateur définie par défaut par le système. Nécessite de redémarrer le programme. <strong>REMARQUE :</strong> les traductions de l'interface utilisateur sont des collaborations avec des tiers; par conséquent, toute faute de frappe ou erreur doit être signalée directement à leurs responsables respectifs. GenericSQLWidget SQL code Code SQL References Référence Object: Objet : Ref. name: <p>The name of the reference to an object. All occurences of the reference enclosed by <strong>{}</strong> are replaced by the referenced object's name or signature in the generic SQL object's code.</p> <p>Use the referenced object's signature instead of its name. For some objects like functions, casts, operators and some others the signature will include parameters types and some other information.</p> Use signature <p>The referenced object's name or signature will be automatically quoted when special characters are found. Additionally, for schema qualified objects, the name of the parent schema is prepended to the referenced object's name or signature. This will avoid common SQL syntax errors or loss of semantics.</p> Format name Preview Ref. name Object Objet Type Type Signature Signature Yes Oui No object name, SQL code or references defined! Preview unavailable. No Non HintTextWidget Form Formulaire IndexWidget Attributes Attributs Indexing: Indexation : Fill Factor: Taux de remplissage : Options: Options : Concurrent Concurrent Unique Unique Fast update Mise à jour rapide Elements Éléments Buffering Mémoire tampon Predicate: Prédicat : LanguageWidget Trusted: De confiance : The functions to be assigned to the language should have, respectively, the following signatures:<br/><br/> <strong>Handler Function:</strong> <em>language_handler function()</em><br/> <strong>Validator Function:</strong> <em>void function(oid)</em><br/> <strong>Inline Function:</strong> <em>void function(internal)</em> Les fonctions attribuées au langage doivent avoir respectivement les signatures suivantes :<br/><br/> <strong>Fonction de gestion :</strong> <em>language_handler function()</em><br/> <strong>Fonction de validation :</strong> <em>void function(oid)</em><br/> <strong>Fonction sur une ligne :</strong> <em>void function(internal)</em> Validator Func.: Fonc. de validation : Handler Func.: Fonc. gestionnaire : Inline Func.: Fonc. en ligne : LayersWidget Form Formulaire Remove all layers Effacer toutes les couches Delete all Effacer tout Shift+Del Shift+Del Hide this widget Fermer ce widget ... ... Add a new layer Ajouter une nouvelle couche Add Ajouter Ins Ins Remove the selected layer Efface la couche sélectionnée Delete Effacer This action will delete all layers (except the default one) and the objects in them will be moved to the default layer. Do you want to proceed? Cette opération supprimera toutes les couches (à l'exception de celle par défaut) et tous leurs objets seront déplacés dans celle-ci. Souhaitez-vous continuer ? Delete the selected layer will cause objects in it to be moved to the default layer. Do you want to proceed? Supprimer la couche sélectionnée provoquera le déplacement de ses objets dans la couche par défaut. Souhaitez-vous continuer ? New layer Nouvelle couche MainWindow pgModeler - PostgreSQL Database Modeler pgModeler – Modeleur de bases de données PostgreSQL &Validation Alt+V Ctrl+F Alt+O Alt+B &File &Fichier &Edit Édit&ion &Show &Affichage Plugins Extensions New Nouveau Controls Contrôles General Général Ctrl+N Ctrl+N Ctrl+S Ctrl+S Zoom in Zoom + Ctrl+= Ctrl+= Zoom out Zoom - Zoom - Zoom - Find objects Rechercher des objets Layers Couches Ctrl+- Ctrl+- Ctrl+O Ctrl+O Ctrl+Q Ctrl+Q Export the current opened model in different modes Exporter le modèle courant sous différentes formes Close current model Fermer le modèle courant Ctrl+H Ctrl+H Edit pgModeler settings Configurer pgModeler F10 F10 Access the list of loaded plugins Accéder à la liste des extensions chargées Load recently opened model Charger des modèles ouverts récemment Import existing database to new model (reverse engineering) Importer une base de données existante vers un modèle (reverse engineering) Ctrl+Shift+I Ctrl+Maj+I &Model's structure Réparer un m&odèle Performs the model structure fix routine Routine de récupération des fichiers modèles corrompus New version found! Nouvelle version disponible ! Update for the current version is available on project's site Une mise à jour pour votre version est disponible sur le site de pgModeler Main menu Menu principal Show expanded Afficher la barre de menus Hide main menu Cacher la barre de menus Hides the main menu bar and put the action on a separated action Masque la barre de menu (le menu reste accessible via un bouton dans la barre d'outils) Ctrl+Shift+H Ctrl+Maj+H Welcome Accueil Welcome screen Écran d'accueil Design Modéliser Manage Administrer Manage existent databases Administrer des bases existantes O&bjects O&bjets &Operations &Opérations Ctrl+Shift+S Ctrl+Maj+S Show grid Afficher la grille Align objects position to grid Aligner les objets sur la grille Show the page delimiters Afficher les délimiteurs de page Save all Tout enregistrer Show the model overview Afficher la vue d'ensemble du modèle Clear Menu Vider le menu The demonstration version can create only `one' instance of database model! La version de démonstration ne peut gérer qu'une seule instance de modèle de base de données ! Save model Enregistrer le modèle Warning Avertissement Save '%1' as... Enregistrer '%1' sous... Database model (*.dbm);;All files (*.*) Modèle de base de données (*.dbm);; Tous les fichiers (*.*) Database model printing Impression du modèle de base de données Save anyway Sauvegarder quand même Validate Valider Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. Des modifications ont été détectées dans les définitions du papier ou des marges du modèle ce qui pourrait causer une mauvaise impression des objets. Souhaitez-vous continuer l'impression avec les nouveaux paramètres ? Pour utiliser les paramètres par défaut cliquez sur 'Non' ou sur 'Annuler' pour interrompre l'impression. Load model Charger un modèle Could not load the database model file `%1'. Check the error stack to see details. You can try to fix it in order to make it loadable again. Impossible de charger le ficher modèle de base de données `%1'. Consultez la pile d'appel pour plus de détails. Essayez de réparer le modèle pour tenter de l'ouvrir à nouveau. Fix model Réparer un modèle Cancel Annuler Toggle the model objects widget (Dés)activer le widget des objets du modèle Toogle the model validation widgets (Dés)activer le widget de validation du modèle Toggle the operation history widget (Dés)activer le widget de l'historique des opérations Toggle the object finder (Dés)activer le chercheur d'objet action_main_menu action_menu_principal Expands the main menu bar in classical mode Développe la barre de menus principale en mode classique Saving temp. models Sauvegarde temp. des modèles Grid Grille Hierarchical Hiérarchique Scattered Dispersé (Demo) (Démo) You're running a demonstration version! The model saving feature is available only in the full version! Vous utilisez une version de démonstration ! La fonctionnalité d'enregistrement du modèle est uniquement disponible dans la version complète ! Confirmation <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! It's recommended to validate it before save in order to create a consistent model otherwise the generated file will be broken demanding manual fixes to be loadable again! <strong>AVERTISSEMENT :</strong> Le modèle <strong>%1</strong> n'a pas été validé ! Il est recommandé de le valider avant de l'enregistrer afin de créer un modèle cohérent, sinon il peut en résulter un fichier cassé nécessitant une réparation manuelle pour être chargé à nouveau chargeable ! <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the export process it's recommended to validate in order to correctly create the objects on database server! <strong>AVERTISSEMENT :</strong> Le modèle <strong>%1</strong> n'a pas été validé ! Avant de procéder à un export il est recommandé de le valider afin de s'assurer de correctement créer les objets sur le serveur de base de données ! Export anyway Exporter quand même <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the diff process it's recommended to validate in order to correctly analyze and generate the difference between the model and a database! <strong>AVERTISSEMENT :</strong> Le modèle <strong>%1</strong> n'a pas été validé ! Avant de procéder à une comparaison il est recommandé de le valider afin de s'assurer que l'analyse entre celui-ci de la base de donnée se fasse correctement ! Diff anyway Comparer quand même (no samples found) (aucun exemple trouvé) You're running a demonstration version! Note that you'll be able to create only <strong>%1</strong> instances of each type of object and some key features will be disabled or limited!<br/><br/>You can purchase a full binary copy or get the source code at <a href='https://pgmodeler.io'>https://pgmodeler.io</a>. <strong>NOTE:</strong> pgModeler is an open source software, but purchasing binary copies or providing some donations will support the project and keep the development alive and at full speed!<br/><br/> <strong>HINT:</strong> in order to test all features it's recommended to use the <strong>demo.dbm</strong> model located in </strong>Sample models</strong> at <strong>Welcome</strong> view.<br/><br/><br/><br/> Vous utilisez une version de démonstration ! Vous ne pouvez créer uniquement que <strong>%1</strong> instances de chaque type d'objet et certaines fonctionnalités sont bridées ou désactivées !<br/><br/>Vous pouvez acheter une copie exécutable de ce logiciel ou obtenir son code source sur <a href='https://pgmodeler.io'>https://pgmodeler.io</a>. <strong>REMARQUE:</strong> pgModeler est un logiciel libre, mais acheter une copie binaire ou faire un don permet de soutenir ce projet et de continuer son développement actif.<br/><br/> <strong>CONSEIL:</strong>pour avoir un aperçu de toutes les fonctionnalités, ouvrez le modèle <strong>demo.dbm</strong> situé dans le dossier </strong>Modèles de démo</strong> à l'écran d' <strong>Accueil</strong> du logiciel.<br/><br/><br/><br/> save sauvegarde export exporter diff comparer Executing pending <strong>%1</strong> operation... Exécution de l'opération <strong>%1</strong> en attente... Rearrange objects over the canvas is an irreversible operation! Would like to proceed? Réorganiser les objets sur le canvas est une opération irréversible ! Voulez-vous poursuivre ? He&lp Ai&de Pl&ugins Mod&ules &New &Nouveau New model Nouveau modèle &Save E&nregistrer &Zoom in &Zoomer Zoo&m out Dézoo&mer &Load C&harger Sa&ve as Enre&gistrer sous E&xit Qui&tter Exit pgModeler Quitter pgModeler &About pgModeler &À propos de pgModeler F4 &Print Im&primer Print model Imprimer le modèle Ctrl+P &Undo Ann&uler Undo operation Annuler l'opération Ctrl+Z &Redo &Rétablir Redo operation Rétablir l'opération Ctrl+Y &Export &Exporter Ctrl+Shift+E Ctrl+Maj+E &Show grid A&fficher la grille Ctrl+G &Close &Fermer Ctrl+W &Normal zoom Zoom &normal Ctrl+0 &Align to grid &Aligner sur la grille Show &delimiters Afficher les &délimiteurs Ctrl+L &Settings Paramètre&s F12 &Overview &Vue d'ensemble &Support Access the support page Accéder à la page du support F1 New object Nouvel objet &Recent Models Modèles &récents &Import &Importer Rest&ore Session Restaurer la sessi&on Compact view Vue compacte Toggle the compact view on the model(s) Activer la vue compacte More Plus Addition action over the model Plus d'actions concernant le modèle Fix Réparer &Check for update Re&chercher une mise à jour &Diff &Comparer Ctrl+Shift+D Ctrl+Maj+D Shift+W Maj+W Design database models Conception de modèles de base de données Shift+D Maj+D Shift+M Maj+M &Bug report Rapport de &bug Report a bug Rapporter un bug Donate Faire un don Help pgModeler by donating! Aider pgModeler en faisant un don ! Objects me&tadata Mé&tadonnées des objets Save modified model(s) Enregistrer le(s) modèle(s) modifié(s) The following models were modified but not saved: %1. Do you really want to quit pgModeler? Les modèles suivants ont été modifiés mais non enregistrés : %1. Voulez-vous vraiment quitter pgModeler ? The model <strong>%1</strong> was modified! Do you really want to close without save it? Le modèle <strong>%1</strong> a été modifié ! Êtes-vous certain de vouloir quitter sans l'enregistrer ? Determine the changes between model/database and another database Déterminer les changements entre le modèle/la base de données et une autre base de données Perform the objects metadata handling Manipulation des métadonnées des objets Arrange objects Organiser des objets Rearrange objects over the canvas Réorganiser les objets sur le canevas Messagebox Dialog Boîte de dialogue msg message Exceptions Exceptions Show/hide exceptions stack. Afficher/cacher la pile d'exceptions. ... ... &Yes &Oui &No &Non Information Confirmation Cancel Annuler Error Erreur Alert Alerte &Ok &Ok &Cancel A&nnuler Show raw text errors or information. Afficher le texte brute des erreurs ou des informations. MetadataHandlingForm Handle metadata Gérer les métadonnées &Apply &Appliquer &Cancel A&nnuler Settings Paramètres Extract from: Extraction depuis : Loading a metadata file to the current model is an irreversible operation so be sure to specify a backup file before proceed. Le chargement d'un fichier de métadonnées dans le modèle actuel est une opération irréversible, assurez-vous de spécifier un fichier de sauvegarde avant de continuer. Database model metadata Métadonnées du modèle de base de données Handles the objects' positioning in the metadata file. Gère le positionnement des objets dans le fichier de métadonnées. Options Objects' positioning Positionnement des objets Custom object's colors Couleurs de l'objet personnalisé Handles the objects' protection status in the metadata file. Gère l'état de protection des objets dans le fichier de métadonnées. Objects' protection status Statut de protection des objets Handles the objects' SQL disabled status in the metadata file. Gère le statut désactivé du code SQL des objets dans le fichier de métadonnées. Objects' SQL disabled status Statut désactivé du code SQL des objets Handles the objects' custom SQL commands in the metadata file. Gère les commandes SQL personnalisées des objets dans le fichier de métadonnées. Custom SQL commands Commandes SQL personnalisées Textbox objects Objets de zone de texte <p>Handles the objects' aliases in the metadata file. Only for graphical objects and table's children objects.</p> Objects' aliases <p>Handles the objects' custom colors in the metadata file. Currently available only for relationships and schemas.</p> <p>Handles the following database model attributes in the metadata file: author, zoom factor, last position and default objects.</p> <p>Save tags to the output file when extracting metadata. When loading the file, the tags are recreated and duplicated ones are ignored.</p> Tag objects Balises des objets <p>Save textboxes to the output file when extracting metadata. When loading the file, the textboxes are recreated and duplicated ones are ignored.</p> Handles the tables' and views' collapsing mode in the metadata file. Tables and views collpsing mode <p>Save generic SQL objects to the output file when extracting metadata. When loading the file, the objects are recreated and duplicated ones are ignored.</p> Select all Tout sélectionner Clear all Backup file: Fichier de sauvegarde : Select file Sélectionner un fichier <p>Extracts the objects' metadata from the loaded models and apply to the current focused model. A backup file can be specified to where the focused model's current metadata will be saved.</p> <p>Extracts the objects metadata from one of the loaded models saving the info to a backup file.</p> <p>Reads the objects' metadata from a previously saved backup file and apply to the current model.</p> Apply to: Appliquer à : Operation: Opération : Output Sortie Progress label... Indicateur de progression... model not saved yet modèle pas encore enregistré The backup file cannot be the same as the input model! Le fichier de sauvegarde ne peut être le même que le modèle d'entrée ! Extracting metadata to file `%1' Extraction des métadonnées vers le fichier `%1' Saving backup metadata to file `%1' Enregistrement des métadonnées de sauvegarde vers le fichier `%1' Applying metadata from file `%1' Application des métadonnées depuis le fichier `%1' Metadata processing aborted! Traitement des métadonnées abandonné ! Objects metadata file (*.omf);;All files (*.*) Fichiers de métadonnées d'objets (*.omf);;Tous les fichiers (*.*) Handles the objects' fade out status in the metadata file. Gère l'estompement des objets dans le fichier de métadonnées. Objects' fade out status Effet d'estompement des objets Generic SQL objects Objets SQL génériques ... &Extract and restore &Extraction et restauration Extract &only Extracti&on seule &Restore a backup file &Restaurer une sauvegarde ModelDatabaseDiffForm Settings Paramètres Connection: Connexion : Ignore import errors Ignorer les erreurs d'import Import system objects Importer les objets système Import extension objects Importer les objets des extensions File: Fichier : Presets Add new preset Ins Edit preset name Ctrl+E Ctrl+E Save preset Ctrl+S Ctrl+S Cancel operation on the preset Esc Échap Delete the selected preset Del Suppr Restore the default presets Ctrl+R Input <p>Override the PostgreSQL version when generating the diff code. The default is to use the same version as the input database (detected automatically).</p> <p>Compares the model and the input database storing the diff in a SQL file for later usage.</p> Select output file Sélectionner un fichier de sortie <p>Compares the model and the input database generating a diff and applying it directly to the latter. <strong>WARNING:</strong> this mode causes irreversible changes on the database and in case of failure the original structure is not restored, so make sure to have a backup before proceed.</p> <p>Database cluster level objects like roles and tablespaces will not be dropped.</p> <p>Permissions already set on database objects will be kept. The ones configured on the model will be applied to the database.</p> <p>Avoid the generation of DROP commands for objects that exists in database but not in the model. This is useful when diff a partial model against the complete database.</p> <p>Force the generation of DROP commands for columns and constraints that exist in database but not in the model. This is useful when diff a partial model against the complete database and the user needs to drop columns and constraint but preserve the rest of the objects.</p> <p>No command to rename the destination database will be generated even the model's name differ from database name.</p> <p>For DROP command, the objects that depends on an object to be dropped will be deleted as well. For TRUNCATE command, tables that are linked to a table to be truncated will be truncate too. <strong>NOTE:</strong> this option can affect more objects than listed in the output or diff preview.</p> <p>Clears the data of all tables which will have columns modified. This is useful to avoid errors related to type casting. <strong>WARNING:</strong> DO NOT use this option on production servers and always make a backup before use it.</p> <p>Serial columns are converted to integer and having the default value changed to <strong>nextval(sequence)</strong> function call. By default, a new sequence is created for each serial column but checking this option sequences matching the name on column's default value will be reused and will not be dropped.</p> <p>Instead of use an ALTER command to modify certain kind of objects a DROP and CREATE will be used in order to do a full modification. This option does not affects the database object.</p> Recreates only objects that can't be changed through ALTER commands according to pgModeler implementation not the PostgreSQL one. <br/>Currently, these objects are:<br/><br/>aggregate, cast, constraint, collation, conversion, language, operator, operator class, operator family, rule, trigger and view. <p>Import system (built-in) objects. Use this if the import step is returning errors related to missing objects.</p> <p>Import objects created by extensions. Use this if the import step is returning errors even importing built in ones.</p> <p>Ignores as many as possible errors on import step. This option generates an incomplete diff.</p> <p>Ignores errors generated by duplicated objects when exporting the diff to database.</p> <p>This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result.</p> Cancel Annuler Progress label... Indicateur de progression... Loads the generated diff code in the destination server for manual applying. Open in SQL Tool &Close &Fermer Waiting process to start... En attente du démarrage de la tâche... Step %1/%2: Exporting diff to database <strong>%3@%4</strong>... Étape %1/%2 : Export de la comparaison de la base de données <strong>%3</strong>... {1/%2:?} {3@%4<?} SQL code (*.sql);;All files (*.*) Code SQL (*.sql);;Tous les fichiers (*.*) Database: Base de données : Drop or truncate in cascade mode Supprimer ou tronquer en mode cascade Keep object's permissions Conserver les permissions des objets Keep cluster objects Conserver les objets de cluster Recreate only unmodifiable objects Recréer uniquement des objets non modifiables Force recreation of objects Forcer la recréation d'objets Ignore duplicity errors Ignorer les erreurs de duplicité Reuse sequences on serial columns Réutiliser des séquences sur des colonnes de séries Diff mode Mode comparaison Use PostgreSQL: Utiliser PostgreSQL : ... Output Sortie Changes: Modifications : Step label... Étiquette étape... <html><head/><body><p>Objects marked with an <span style=" font-weight:600;">ALTER</span> may not be effectively changed unless that the differences detected are in attributes that can be modified through ALTER commands otherwise no operation will be performed or, if the force recreation is checked, the object will be dropped and created again.</p></body></html> <html><head/><body><p>Les objets marqués d'un <span style="font-weight : 600;">ALTER</span> ne peuvent être modifiés efficacement que si les différences détectées sont dans les attributs qui peuvent être modifié à l'aide des commandes ALTER. Dans le cas contraire, aucune opération ne sera effectuée ou, si la recréation de force est vérifiée, l'objet sera supprimé et créé à nouveau.</p></body></html> Objects to be created Objets à créer 0 Objects to be dropped Objets à supprimer Possible objects to be changed Objets possiblement modifiables Ignored objects (system ones or with sql disabled) Objets ignorés (ceux du système ou avec code SQL désactivé) Diff Preview Aperçu de la comparaison &Apply diff &Appliquer la comparaison &Generate &Générer <strong>WARNING:</strong> The generated diff is ready to be exported! Once started this process will cause irreversible changes on the database. Do you really want to proceed? <strong>AVERTISSEMENT :</strong> La comparaison générée est prête à être exportée ! Une fois démarré, ce processus entraînera des changements irréversibles dans la base de données. Voulez-vous vraiment poursuivre ? Apply diff Appliquer la comparaison Preview diff Aperçu de la comparaison model not saved yet modèle pas encore enregistré (none) (aucun) <strong>Low verbosity is set:</strong> only key informations and errors will be displayed. Step %1/%2: Importing database <strong>%3</strong>... Étape %1/%2 : Import de la base de données <strong>%3</strong>... Step %1/%2: Comparing <strong>%3</strong> and <strong>%4</strong>... Étape %1/%2 : Comparaison de <strong>%3</strong> et de <strong>%4</strong>... Confirmation Diff process paused. Waiting user action... Comparaison mise en pause. En attente d'une action utilisateur... Saving diff to file <strong>%1</strong> Enregistrement de la comparaison vers le fichier <strong>%1</strong> Diff process sucessfully ended! Comparaison términée avec succès ! No operations left. Aucune opération restante. Operation cancelled by the user. Opération annulée par l'utilisateur. Process aborted due to errors! Processus abandonné en raison d'erreurs ! -- No differences were detected between model and database. -- -- Aucune différence détectée entre le modèle et la base de données. -- Error code <strong>%1</strong> found and ignored. Proceeding with export. Code erreur <strong>%1</strong> reçu et ignoré. Poursuite de l'export. Save diff as... Enregistrer la comparaison sous... In some cases restore the default settings related to it may solve the problem. Would like to do that? Dans certains cas, restaurer les paramètres liés par défaut peut résoudre le problème. Voulez-vous le faire ? Restore Restaurer Do you really want to restore the default settings? Are you sure do you want to remove the selected diff preset? Preserve database name Conserver le nom de la base de données Do not drop missing objects Ne pas supprimer les objets manquants Store in S&QL file Stocker dans un fichier S&QL Appl&y on server Appliquer sur le serveur -- SQL code purposely truncated at this point in demo version! -- Le code SQL est volontairement tronqué à ce stade dans la version démo ! Diff tool Outil de comparaison Current model: Modèle courant : (model) (modèle) Compare to Comparer à Diff Comparaison Import && Export Import && Export Import Export Ignore error codes Ignorer les codes d'erreur Drop missing columns and constraints Supprimer colonnes/contraintes manquantes Truncate tables before alter columns Tronquer les tables avant de modifier les colonnes ModelExportForm File: Fichier : Select target file Sélectionner le fichier cible ... ... Zoom: Zoom : Export model Export d'un modèle Settings Paramètres Database server Serveur de base de données PostgreSQL version in which the SQL code should be generated. It is recommended to select this option only when the version of the DBMS, somehow, is not identifiable or if you need to generate a specific version of SQL code for test purposes. Version de PostgreSQL pour laquelle le code SQL sera généré. Il est recommandé d'activer cette option uniquement si la version du SGBD n'est pas identifiable ou pour une raison spécifique par exemple pour des essais. Drop: Suppr. : DB BDD Show delimiters Afficher les délimiteurs de page Exporting the model page by page will generate files with a <strong>_p[n]</strong> suffix where <strong>n</strong> is the page id. Check if the current user has write permission on output folder. Exporter le modèle page par page générera des fichiers avec un suffixe de type <strong>_p[n]</strong> où <strong>n</strong> est le numéro de la page. Vérifiez que vous avez bien le droit d'écriture dans le dossier de sortie. Page by page Une image par page PostgreSQL: PostgreSQL : PostgreSQL version in which the SQL code should be generated Version de PostgreSQL pour laquelle le code SQL doit être généré Cancel Annuler Show grid Afficher la grille Connection: Connexion : <p>pgModeler ignores errors generated by duplicated objects and creates only that ones which does not exists in the database. This option may be used when an object was created after a previous model export.</p> Ignore object duplicity Ignorer les objets dupliqués If <strong>DB</strong> is checked pgModeler will destroy the database if already exists on the server. When <strong>Objects</strong> is checked pgModeler will execute the DROP command attached to SQL-enabled objects. <strong>WARNING:</strong> this option leads to data loss so make sure to have a backup before exporting. SQL file Fichier texte SQL I&mage (PNG) Data dictionary <strong>Standalone:</strong> pgModeler will generate a single HTML file containing the data dictionaries of all tables in the database model. Standalone <strong>Splitted:</strong> the data dictionaries are generated in separated files inside the selected directory. In this mode the files are named <em>schema.table.html</em>. Splitted Mode: Mode : pgModeler will generate an index to help navigate through the data dictionary. If splitted mode is set then a separated file named <em>index.html</em> will be saved into the destination folder. Include index Output: Sortie : Output Progression Progress label... Indicateur de progression... &Export &Exporter &Close &Fermer Initializing model export... Initialisation de l'export du modèle... <strong>Low verbosity is set:</strong> only key informations and errors will be displayed. Saving file '%1' Enregistrement du fichier '%1' Exporting process aborted! Export abandonnée ! HTML file (*.html);;All files (*.*) Exporting process canceled by user! Export annulée par l'utilisateur ! Exporting process sucessfully ended! Export model as... Exporter le modèle sous... Error code <strong>%1</strong> found and ignored. Proceeding with export. Code erreur <strong>%1</strong> reçu et ignoré. Poursuite de l'export. Ob&jects Ob&jets Graphics file Fichier graphique Type: Type : SQL script (*.sql);;All files (*.*) Script SQL (*.sql);;Tous les fichiers (*.*) Portable Network Graphics (*.png);;All files (*.*) Portable Network Graphics (*.png);;Tous les fichiers (*.*) Scalable Vector Graphics (*.svg);;All files (*.*) Scalable Vector Graphics (*.svg);;Tous les fichiers (*.*) This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Cette option avancée oblige pgModeler à ignorer les erreurs supplémentaires par leurs codes numériques. Ces erreurs doivent être renseignées dans l'entrée ci-dessous et séparées par des espaces. Pour la liste complète des codes d'erreur, consulter les documents PostgreSQL, section <strong>Annexe A. Codes d'erreur PostgreSQL</strong>. <strong>AVERTISSEMENT :</strong> utiliser cette option avec un soin extrême, car elle peut interférer dans le résultat de l'export finale. Ignore error codes Ignorer les codes d'erreur &Vectorial (SVG) &Vectoriel (SVG) ModelExportHelper Generating SQL code for PostgreSQL `%1' Génération du code SQL pour PostgreSQL `%1' Output SQL file `%1' successfully written. Fichier SQL de sortie `%1' écrit avec succès. Rendering objects to page %1/%2. Rendu des objets de la page %1/%2. Output image `%1' successfully written. Fichier image de sortie `%1' écrit avec succès. Starting export to DBMS. Lancement de l'export vers le SGBD. PostgreSQL version detection overridden. Using version `%1'. Détection de version dépassée de PostgreSQL. Utilisation de la version `%1'. PostgreSQL `%1' server detected. Serveur PostgreSQL `%1' détecté. Generating temporary names for database, roles and tablespaces. Génération de noms, de rôles et d'espace de stockage temporaires pour la base de données. Enabling the SQL code for database `%1' to avoid errors. Activation du code SQL de la base de données `%1' pour éviter les erreurs. Ignoring object duplication errors. Omission des erreurs de duplication d'objet. Ignoring the following error code(s): `%1'. Omission des codes erreur suivants : `%1'. Trying to drop database `%1'. Tentative de suppression de la base de données `%1'. Simulation mode activated. Mode simulation activé. Generating SQL for `%1' objects... Génération de code SQL pour `%1' objets... Starting data dictionary generation... Début de la génération du dictionnaire des données... Data dictionary successfully saved into `%1'. Le dictionnaire des données à été sauvegardé avec succès dans `%1'. Destroying objects created on the server. Destruction des objets créés sur le server. Restoring original names of database, roles and tablespaces. Restauration des noms, des rôles et des espaces de stockage originaux de la base de données. Creating object `%1' (%2) Création de l'objet `%1' (%2) Dropping object `%1' (%2) Suppression de l'objet `%1' (%2) Changing object `%1' (%2) Modification de l'objet `%1' (%2) Running auxiliary `%1' command... Exécution de la commande auxiliaire `%1'... Running auxiliary command. Exécution de la commande auxiliaire. Exporting model to SVG file. Export du modèle vers un fichier SVG. SVG representation of database model Représentation SVG d'un modèle de base de données SVG file generated by pgModeler Fichier SVG généré par pgModeler Output file `%1' successfully written. Fichier de sortie `%1' écrit avec succès. Creating database `%1' Création de la base de données `%1' Connecting to database `%1' Connexion à la base de données `%1' Renaming `%1' (%2) to `%3' Renommage de `%1' (%2) en `%3' ModelFixForm Model file fix Réparer un fichier modèle &Fix &Réparer &Close &Fermer <html><head/><body><p>[pgmodeler-cli not found error]</p></body></html> <html><head/><body><p>[pgmodeler-cli not found error]</p></body></html> pgmodeler-cli: pgmodeler-cli : Browse for pgmodeler-cli tool Rechercher l'outil pgmodeler-cli ... ... The specified file is not the pgModeler command line tool (pgmodeler-cli). Ce fichier n'est pas l'outil en ligne de commande de pgModeler (pgmodeler-cli). Input file: Fichier source : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Monospace'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Waiting process to start...</span></p></body></html> < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http ://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Monospace'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">En attente du lancement du processus...</span></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {11p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} {9p?} Output file: Fichier cible : Fix tries: Tentatives : Select input file Sélectionner le modèle à réparer Select output file Sélectionner un fichier de sortie Load fixed model when finish Charger le modèle réparé une fois l'opération terminée In some cases the fix process will fail to restore all objects within the model demanding manual fixes by changing the file on a text editor. <strong>NOTE:</strong> relationships may lost their graphical configuration like custom points and line color. Dans certains cas, le processus de réparation peut échouer à restaurer et récupérer tous les objets du modèle, ce qui peut réclamer des modifications manuelles dans le fichier à partir d'un éditeur de texte. <strong>REMARQUE :</strong> les associations peuvent perdre leur configuration graphique tels que des points placés manuellement par l'utilisateur ou la couleur. Waiting process to start... Processus en attente de lancement... Could not locate <strong>%1</strong> tool on <strong>%2</strong>. The fix process can't continue! Please check pgModeler installation or try to manually specify the command below. Impossible de localiser l'outil <strong>%1</strong> sur <strong>%2</strong>. Le processus de réparation ne peut continuer ! Vérifiez votre installation de pgModeler ou spécifiez manuellement la commande ci-dessous. pgModeler command line tool (%1) Outil en ligne de commande de pgModeler (%1) ModelNavigationWidget Form Formulaire Previous model Modèle précédent Alt+C Next model Modèle suivant Close model Fermer ... ... (model not saved yet) (modèle pas encore enregistré) Ctrl+Left Ctrl+Gauche Ctrl+Right Ctrl+Droite ModelObjectsWidget Model Objects Objets du modèle Hide this widget Cacher ce widget 1 1 Object Objet Type Type Parent Object Objet parent Parent Type Type parent Select All Tout sélectionner Clear All Tout effacer Select Sélectionner Return Retour Cancel Annuler Esc Échap Objects view configuration Filtres d'affichage des objets Expands all items Développer tous les éléments Collapses all items Replier tous les éléments Filter: Filtrer : ... ... Tree view Vue en arbre List view Vue en liste New Nouveau ID Identifiant By ID Par identifiant Visible object types Types d'objets visibles Model objects Objets de modèle ModelOverviewWidget Model overview Vue générale du modèle Failed to generate the overview image. The requested size %1 x %2 was too big and there was not enough memory to allocate! Impossible de générer l'aperçu de l'image. La taille demandée%1 x%2 était trop grande et il n'y avait pas assez de mémoire à allouer ! ModelRestorationForm Model restoration Restauration de modèle &Restore &Restaurer <p>pgModeler will try to recover the selected models but will not destroy them in case of loading failure. This option serves as a last resort in order to try to recover the database model. Temporary models will last until the application is closed so the user must try to manually recover the files before exit pgModeler.</p> &Cancel A&nnuler pgModeler was not closed properly in a previous execution and some models were still being edited. Click <strong>Restore</strong> to reopen the models or <strong>Cancel</strong> to abort the restoration. pgModeler n'a pas été fermé correctement lors d'une précédente exécution et certains modèles étaient encore en cours d'édition. Cliquez sur <strong>Restaurer</strong> pour rouvrir les modèles ou sur <strong>Annuler</strong> pour abandonner la restauration. Keep temporary models in case of restoration failure Conserver les modèles temporaires en cas d'échec de la restauration Database Base de données File Fichier Modified Modifié Size Taille ModelValidationHelper There are pending errors! SQL validation will not be executed. Il y a des erreurs en attente ! La validation SQL ne sera pas exécutée. Operation canceled by the user. Opération annulée par l'utilisateur. ModelValidationWidget Form Formulaire 0 0 Try to apply a fix on the selected validation info. Essayer d'appliquer le correctif sur l’élément sélectionné. Clear validation results Effacer le résultat de la validation Va&lidate Va&lider Warnings: does not prevents model to be saved. Avertissements : n'empêche de pouvoir sauvegarder le modèle. Errors: model will not be saved while there are validation errors. Erreurs : le modèle ne peut être sauvegardé tant que des erreurs de validation subsistent. SQL Validation: Validation SQL : PostgreSQL version Version de PostgreSQL Try to resolve the reported issues. Essayer de résoudre les problèmes rencontrés. Ctrl+S Ctrl+S Clear Effacer Options Options <p>pgModeler will generate unique and temporary names for database, role and tablespace objects. This option avoids object duplication errors when running the SQL validation.</p> <p>Enables the validation of SQL code in DBMS. This process requires the use of a pre-configured connection. SQL validation will occur only in the last step (when all objects were validated) or when there are no warnings.</p> Cancel the SQL validation in progress. Annuler le processus de validation SQL en cours. Cancel Annuler Esc Échap Apply fixes Change the creation order for two objects by swapping their ids Modifie l'ordre de création de deux objets en échangeant leurs numéros d'identification Swap ids Échanger identifiants Hide this widget Fermer ce widget ... ... The object <strong>%1</strong> <em>(%2)</em> [id: %3] is being referenced by <strong>%4</strong> object(s) before its creation. L'objet <strong>%1</strong> <em>(%2)</em> [id: %3] est référencé par <strong>%4</strong> objet(s) avant sa création. Autodetect Auto détection The object <strong>%1</strong> <em>(%2)</em> [id: %3]%4 is referencing columns created by <strong>%5</strong> relationship(s) but is created before them. L'objet <strong>%1</strong> <em>(%2)</em> [id : %3]%4 référence des colonnes créées par <strong>%5</strong> association(s) mais a été créé avant eux. Processing object: %1 Traitement de l'objet : %1 Conflicting object: <strong>%1</strong> <em>(%2)</em>. Objet en conflit : <strong>%1</strong> <em>(%2)</em>. The object <strong>%1</strong> <em>(%2)</em> has a name that conflicts with <strong>%3</strong> object name(s). Referrer object: <strong>%1</strong> <em>(%2)</em> [id: %3]. Objet réferent : <strong>%1</strong> <em>(%2)</em> [id: %3]. The column <strong>%1</strong> on <strong>%2</strong> <em>(%3)</em> is referencing the geospatial data type <strong>%4</strong> but the <strong>postgis</strong> extension is not present in the model! <strong>HINT:</strong> Create the extension in the model or let it be created by applying the needed fixes. <em>The above object was created by a relationship. Change the name pattern on it's generator relationship. Fix will not be applied!</em> <em>L'objet ci-dessus a été créé par une relation. Changer le motif du nom sur sa relation de générateur. La correction ne sera pas appliquée !</Em> Relationship: <strong>%1</strong> [id: %2]. Relation : <strong>%1</strong> [id : %2]. Running SQL commands on server... Exécution des commandes SQL sur le serveur... Connection to be used in the SQL validation Connexion à utiliser dans la validation SQL Use unique temporary names for cluster level objects Utiliser des noms temporaires uniques pour les objets de niveau cluster The relationship <strong>%1</strong> [id: %2] is in a permanent invalidation state and needs to be relocated. La relation <strong>%1</strong> [id : %2] est dans un état d'invalidation permanent et a besoin d'être déplacé. SQL validation failed due to the error(s) below. <strong>NOTE:</strong><em> Errors during SQL validation don't invalidate the model but may affect operations like <strong>export</strong> and <strong>diff</strong>.</em> <strong>HINT:</strong> try to swap the relationship by another ones that somehow are linked to it through generated columns or constraints to solve this issue. Note that other objects may be lost in the swap process. <strong>CONSEIL :</strong> essayer d'échanger la relation par une autre qui est liée à celle-ci via des colonnes générées ou des contraintes pour résoudre ce problème. Noter que d'autres objets peuvent être perdus dans le processus d'échange. SQL validation not executed! No connection defined. La validation SQL n'est pas exécutée ! Aucune connexion définie. Database model successfully validated. Modèle de base de données validé avec succès. ModelWidget Copy Copier Convert Convertir New Nouveau Quick Actions rapides Source code Code source Show object source code Afficher le code source de l'objet Properties Propriétés Space Espace Edit the object properties Modifier les propriétés de l'objet Protect Vérrouiller Unprotect Déverrouiller Protects object(s) from modifications Empêcher la modification du ou des objets Delete Supprimer Shift+Del Shift+Suppr Select all Tout sélectionner Selects all the graphical objects in the model Sélectionner tous les objets graphiques du modèle Paste Coller Cut Couper Deps && Referrers Voir les dépendances && les références Add a new object in the model Ajouter un nouvel objet dans le modèle Rename Renommer Quick rename the object Renommage rapide de l'objet Move to schema Déplacer vers le schema Edit permissions Modifier les permissions Change owner Changer le propriétaire Select children Sélectionner les enfants Del Suppr Custom SQL Code SQL personnalisé Stacking Positionnement Send to back Envoyer à l'arrière plan Bring to front Ramener au premier plan Loading database model Ouverture du modèle de base de données Saving database model Enregistrement du modèle de base de données Do you want to %1 the children of the schema <strong>%2</strong> too? Souhaitez vous également %1 l'objet enfant du schéma <strong>%2</strong> ? Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. Copier également les dépendences des objets sélectionnés ? Cela minimise la casse des références lorsque les objets copiés sont collés dans un autre modèle. Pasting objects... Collage des objets... Not all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! Tous les objets n'ont pas été collés dans le modèle car des erreurs ont été retournées durant le processus ! Se référer à la pile d'erreurs pour plus de détails ! Do you really want to delete the selected object? Souhaitez-vous réellement supprimer l'objet sélectionné ? (no objects) (aucun objet) None Aucun Table && Relationships Table && ses associations Constraints Contraintes <strong>ATTENTION:</strong> The database model is protected! Operations that could modify it are disabled! <strong>ATTENTION :</strong> Le modèle de base de données est protégé ! Les opérations qui pourraient le modifier sont désactivées ! Edit data Modifier les données Source Alt+S Del. cascade Supprimer en cascade Ctrl+C Ctrl+V Ctrl+X Quick action for the selected object Action rapide pour l'objet sélectionné F2 Move to layer Déplacer vers la couche Set tag Affecter une balise Ctrl+E Select tagged Séléction balisée Select Sélectionner Open relationship Ouvrir les relations Alt+Q Convert to sequence Convertir en séquence Convert to serial Convertir en série Break line Cassure de ligne Remove points Supprimer des points Enable SQL Activer le code SQL Disable SQL Désactiver le code SQL Duplicate Dupliquer Ctrl+D Pagination Pagination des attributs Enable Activer Disable Désactiver Collapse Replier Not collapsed Aucun repliement (tout afficher) Extended attributes Attributs étendus uniquement All attributes Tous les attributs Show Afficher Hide Masquer Jump to table Aller à la table Schemas rectangles Rectangles des schémas Fade in/out Transparence Fade in Accentuer Fade out Estomper Relationships Associations Swap ids Échanger les identifiants Edit the objects creation order by swapping their ids Modifier l'ordre de création des objets en échangeant leurs identifiants 90° (vertical) 90° (horizontal) 90° + 90° (vertical) 90° + 90° (horizontal) Database object Objet de base de données Schema object Objet de schéma All objects Tous les objets Schemas Schémas Foreign Tables Tables distantes Views Vues Textboxes Boîtes de textes Tables Tables Ctrl+A Zoom: %1% Zoom : %1% Do you really want to convert the relationship into an intermediate table? Voulez-vous vraiment convertir les associations en une table intermédiaire ? Validating object: `%1' (%2) Validation de l'objet : `%1' (%2) Generating XML for: `%1' (%2) Génération du code XML pour : `%1' (%2) Pasting object: `%1' (%2) Collage de l'objet : `%1' (%2) <strong>CAUTION:</strong> You are about to delete objects in cascade mode which means more objects than the selected will be dropped too. Do you really want to proceed? <strong>ATTENTION :</strong> Vous êtes sur le point de supprimer des objets en mode cascade, ce qui signifie que des objets non sélectionnés seront également supprimés. Souhaitez-vous vraiment poursuivre ? <strong>CAUTION:</strong> Remove multiple objects at once can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? <strong>ATTENTION :</strong> Supprimer plusieurs objets à la fois peut entraîner des invalidations irréversibles sur d'autres objets du modèle, entraînant également la suppression de ces objets invalides. Voulez-vous vraiment poursuivre ? <strong>CAUTION:</strong> Remove a relationship can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? <strong>ATTENTION :</strong> Supprimer une association peut entraîner des invalidations irréversibles d'autres objets dans le modèle, entraînant également la suppression de ces objets invalides. Voulez-vous vraiment poursuivre ? The cascade deletion found some problems when running! Some objects could not be deleted or registered in the operation's history! Please, refer to error stack for more details. La suppression en cascade a rencontré des problèmes lors de son exécution ! Certains objets n'ont pas pu être supprimés ou enregistrés dans l'historique des opérations ! Veuillez vous reporter à la pile d'erreurs pour plus de détails. protect protéger unprotect déprotéger ModelsDiffHelper Processing object `%1' (%2)... Traitement de l'objet `%1' (%2)... Skipping object `%1' (%2)... Omission de l'objet `%1' (%2)... Processing diff infos... Comparaison des informations... Processing `%1' info for object `%2' (%3)... Traitement de l'info `%1' pour l'objet `%2' (%3)... No differences between the model and database. Aucune différence entre le modèle et la base de données. Preparing diff code... Préparation du code de comparaison... NewObjectOverlayWidget Form Formulaire Role Rôle Tag Tag Cast Conversion de type Language Langage Textbox Zone de texte Event Trigger Déclencheur sur évènement Tablespace Tablespace Schema Schéma Domain Domaine Conversion Conversion Extension Type Aggregate Agrégat Collation Sequence Séquence Table Function Fonction View Vue Database objects Objets de base de données Data Wrapper Wrapper de données Permissions Server Serveur User mapping Correspondance d'utilisateur Schema objects Objets de schéma Foreign Table Table distante Table objects Objets de table Index Rule Règle Partitioning Partionnement Column Colonne Constraint Contrainte Trigger Déclencheur Copy Copie A G K H J D E F L O U I R S Q T P M Y W 9 Z X C V B 8 7 7 6 6 1 2 3 5 4 0 Op. Family Famille d'op. Op. Class Classe d'op. Operator Opérateur Relationships Associations Many-to-many Plusieurs-à-plusieurs One-to-many Un-à-plusieurs One-to-one Un-à-un Inheritance Héritage Generic SQL SQL générique Policy Politique NumberedTextEditor Load Charger Load the object's source code from an external file Charger le code source de l'objet depuis un fichier externe Edit Modifier Edit the source code in the preferred external editor Modifier le code source avec son éditeur préféré Clear Effacer Upper case Majuscule Lower case Minuscule Ident right Ident droit Ident left Ident gauche SQL file (*.sql);;All files (*.*) Fichier SQL (*.sql);;Tous les fichiers (*.*) Load file Charger un fichier The source editor `%1' is running on `pid: %2'. L'éditeur de source `%1' s'exécute sur pid : `%2'. Failed to the source code editor <strong>%1</strong>! Make to sure that the source editor path points to a valid executable and the current user has permission to run the application. Error message returned: <strong>%2</strong> Impossible ObjectDepsRefsWidget Dependencies Dépendances Object Objet Type Type Parent Object Objet parent Parent Type Type parent References Références ID ID Exclude indirect dependencies Exclure les dépendances indirectes Include indirect references Inclure les références indirectes This object does not exists anymore. The dependencies and references listing are disabled. Cet objet n'existe plus. L'affichage de ses dépendances et références est désactivé. Object's dependencies & references Dépendances et références d'un objet ObjectFinderWidget Form Formulaire Pattern: Motif : Hide this widget Cacher ce widget ... ... Find Chercher Clears the search results Effacer les résultats Clear Effacer (Un)selects the graphical objects in the results grid (Dés)sélectionner les objets graphiques dans la grille des résultats Regular Expression Expression régulières Exact Match Correspondance exacte Select All Tout sélectionner Clear All Tout effacer Comment Commentaire The attribute of the objects in which the search will occur Case Sensitive Sensible à la casse Object Objet Type Type Parent Object Objet parent Parent Type Type parent Fades outs all the graphical objects in the results grid (or those not listed). The current fade in/out state of all objects is modified. Defines the search filter Défini le filtre de recherche Filter Filtrer Name Nom Signature Signature Schema Schéma Owner Propriétaire Tablespace Jargon Tablespace Data type Type de donnée Return type Type de retour Listed Listé Not listed Non listé Found <strong>%1</strong> object(s). <strong>%1</strong> objet(s) trouvé(s). No objects found. Aucun objet trouvé. ID Identifiant Select Sélectionner Fade out Estomper ObjectRenameWidget Form Formulaire .... .... to: en : Rename Renommer Cancel Annuler Rename <strong>%1</strong> object(s) to: Renommer <strong>%1</strong> objet(s) en : <strong>CAUTION:</strong> You're about to rename multiple objects at once! This operation may cause irreversible changes to other objects not necessarily selected. Do you really want to proceed? <strong>ATTENTION :<strong>Vous allez renommer plusieurs objets à la fois ! Cette opération peut entrâiner des changements irréversibles sur des objets non sélectionnés. Souhaitez-vous continuer ? ObjectSelectorWidget Form Formulaire Clear field Effacer le champ Select Object Sélectionner un objet Select %1 Sélectionner %1 ObjectsScene Default layer Couche par défaut ObjectsTableWidget Form Formulaire Add Item Ajouter un élément Ins Insérer Remove Item Supprimer un élément Del Suppr Update Item Actualiser l'élément Alt+R Remove All Tout supprimer Shift+Del Maj+Suppr Duplicate item Dupliquer l'élément Ctrl+D Edit Item Modifier l'élément Space Espace Move Up Déplacer vers le haut Ctrl+Up Ctrl+Haut Move Down Déplacer vers le bas Ctrl+Down Ctrl+Bas Move to start Déplacer au début Ctrl+Home Ctrl+début Move to end Déplacer à la fin Ctrl+End, Ctrl+S Ctrl+Fin, Ctrl+S Resize columns to fit contents Retailler la largeur des colonnes à leur contenu Do you really want to remove the selected item? Souhaitez-vous réellement supprimer l'élément sélectionné ? Confirmation Do you really want to remove all the items? Souhaitez-vous réellement supprimer tous les éléments ? OperationList (invalid object) (objet invalide) OperationListWidget Executed Operations Opérations exécutées Hide this widget Cacher ce widget ... ... 1 1 Operations: Opérations : 0 0 Position: Position : Delete operation history Supprimer l'historique des opérations Undo Annuler Redo Rétablir created créé removed supprimé modified modifié moved déplacé Operation history exclusion Exclure l'historique des opérations Delete the executed operations history is an irreversible action, do you want to continue? Effacer l'historique des opérations exécutées est une action irréversible, souhaitez-vous continuer ? OperatorClassWidget Default Class: Classe par défaut : Indexing: Indexation : Elements Éléments Element Type: Type d'élément : Operator Opérateur Function Fonction Storage Stockage Function: Fonction : Operator: Opérateur : Support/Strategy: Support/Stratégie : Op. Family: Famille d'opérateurs : Storage Type Type de Stockage Object Objet Type Support/Strategy Support/Stratégie Operator Family Famille d'opérateurs OperatorFamilyWidget Indexing: Indexation : OperatorWidget Options: Options : MERGES MERGES HASHES HASHES Arguments Arguments Advanced Avancé Restrict: Restriction : Commutator: Commutateur : Negator: Négateur : Operator Func.: Fonction de l'opérateur : Join: Jointure : Right Argument Type Type d'argument de droite Left Argument Type Type d'argument de gauche To create a unary operator it is necessary to specify as <strong><em>'any'</em></strong> one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator. Pour créer un opérateur unitaire, il est nécessaire de spécifier <strong><em>'any'</em></strong> comme l'un de ses arguments. De plus, la fonction qui définit l'opérateur doit avoir seulement un paramètre et celui-ci doit avoir le même type de donnée que l'argument de l'opérateur unitaire. ParameterWidget Default Value: Valeur par défaut : Mode: Mode : IN IN OUT OUT VARIADIC VARIADIC PermissionWidget Roles Rôles ID: Identifiant : Permissions Permissions Add Permission Ajouter permission Update Permission Actualiser permission Cancel Operation Annuler l'opération Privileges Privilèges Disable SQL code Désactiver le code SQL Cascade Cascade Privilege Privilège GRANT OPTION GRANT OPTION Code Preview Prévisualisation du code Name Nom Id Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. Laissez la grille <em><strong>Rôles</strong></em> vide afin de créer un %1 applicable à <strong><em>PUBLIC</em></strong>. -- No permissions defined for the specified object! -- Aucune permission définie pour cet objet ! /* Could not generate the SQL code preview for permissions! /* Impossible de générer la prévisualisation du code SQL pour les permissions ! Edit permissions Modifier les permissions &Grant Acco&rder Re&voke Ré&voquer PgModelerApp Unknown exception caught! Exception inconnue rencontrée ! Failed to create initial configuration in `%1'! Check if the current user has write permission over that path and at least read permission over `%2'. Impossible de créer les fichiers de configuration initiaux dans `%1' ! Vérifiez que le dossier existe et que vous ayez la permission d'écrire dans `%2'. PgModelerCliApp Database model files (.dbm) are already associated to pgModeler! Les fichiers de modèle de bases de données (.dbm) sont déjà associés à pgModeler ! There is no file association related to pgModeler and .dbm files! Il n'y a pas d'association entre pgModeler et .les fichiers dbm ! Unrecognized option '%1'. Option '%1' non reconnue. Value not specified for option '%1'. Valeur pour l'option '%1' manquante. Option '%1' does not accept values. L'option '%1' n'accepte pas de valeur. Connection aliased as '%1' was not found in the configuration file. command line interface. interface en ligne de commande. PostgreSQL Database Modeler Project - pgmodeler.io Copyright 2006-2019 Raphael A. Silva <raphael@pgmodeler.io> Usage: pgmodeler-cli [OPTIONS] Utilisation : pgmodeler-cli [OPTIONS] This CLI tool provides several operations over models and databases without the need to perform them in pgModeler's graphical interface. All available options are described below. General options: Options générales : %1, %2 [FILE] Input model file (.dbm). This is mandatory for fix, export operations. %1, %2 [DBNAME] Input database name. This is mandatory for import operation. %1, %2 [FILE] Output file. This is mandatory for fixing model or exporting to file, png or svg. %1, %2 Try to fix the structure of the input model file in order to make it loadable again. %1, %2 [NUMBER] Model fix tries. When reaching the maximum count the invalid objects will be discarded. %1, %2 Export the input model to a sql script file. %1, %2 Export the input model to a png image. %1, %2 Export the input model to a svg file. %1, %2 Export the input model directly to a PostgreSQL server. %1, %2 Export the input model to a data directory in HTML format. %1, %2 Import a database to an output file. %1, %2 Compares a model and a database or two databases generating the SQL script to synch the latter in relation to the first. %1, %2 Force the PostgreSQL version of generated SQL code. %1, %2 Silent execution. Only critical messages and errors are shown during process. %1, %2 Show this help menu. Connection options: %1, %2 List available connections in file %3. %1, %2 [ALIAS] Connection configuration alias to be used. %1, %2 [HOST] PostgreSQL host in which a task will operate. %1, %2 [PORT] PostgreSQL host listening port. %1, %2 [USER] PostgreSQL username. %1, %2 [PASSWORD] PostgreSQL user password. %1, %2 [DBNAME] Connection's initial database. PNG and SVG export options: Options d'export en PNG et SVG : %1, %2 Draws the grid in the exported image. %1, %2 Draws the page delimiters in the exported image. %1, %2 Each page will be exported in a separated png image. (Only for PNG images) %1, %2 [FACTOR] Applies a zoom (in percent) before export to png image. Accepted zoom interval: %3-%4 (Only for PNG images) DBMS export options: Options d'export directe dans un serveur : %1, %2 Ignores errors related to duplicated objects that eventually exist in the server. %1, %2 [CODES] Ignores additional errors by their codes. A comma-separated list of alphanumeric codes should be provided. %1, %2=[CODES] Ignore les erreurs supplémentaires par leurs codes. Une liste de codes alphanumériques séparés par des virgules doit être fournie. {1,?} {2 ?} %1, %2 Drop the database before execute a export process. %1, %2 Runs the DROP commands attached to SQL-enabled objects. %1, %2 Simulates an export process by executing all steps but undoing any modification in the end. %1, %2 Generates temporary names for database, roles and tablespaces when in simulation mode. Data dictionary export options: %1, %2 The data dictionaries are generated in separated files inside the selected output directory. %1, %2 Avoids the generation of the index that is used to help navigating through the data dictionary. Database import options: %1, %2 Ignore all errors and try to create as many as possible objects. %1, %2 Import system built-in objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Import extension objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Run import in debug mode printing all queries executed in the server. Diff options: %1, %2 [DBNAME] The database used in the comparison. All the SQL code generated is applied to it. %1, %2 Save the generated diff code to output file. %1, %2 Apply the generated diff code on the database server. %1, %2 Don't preview the generated diff code when applying it to the server. %1, %2 Drop cluster level objects like roles and tablespaces. %1, %2 Revoke permissions already set on the database. New permissions configured in the input model are still applied. %1, %2 Drop missing objects. Generates DROP commands for objects that are present in the input model but not in the compared database. %1, %2 Force the drop of missing columns and constraints. Causes only columns and constraints to be dropped, other missing objects aren't removed. %1, %2 Rename the destination database when the names of the involved databases are different. %1, %2 Don't drop or truncate objects in cascade mode. %1, %2 Truncate tables prior to alter columns. Avoids errors related to type casting when the new type of a column isn't compatible to the old one. %1, %2 Don't reuse sequences on serial columns. Drop the old sequence assigned to a serial column and creates a new one. %1, %2 Don't force the recreation of objects. Avoids the usage of a DROP and CREATE commands to create a new version of the objects. %1, %2 Don't recreate the unmodifiable objects. These objects are the ones which can't be changed via ALTER command. Miscellaneous options: Options diverses : %1, %2 [ACTION] Handles the file association to .dbm files. The ACTION can be [%3 | %4]. %1, %2 The file association to .dbm files will be applied in a system wide level instead of to the current user. ** The diff process allows the usage of the following options related to import and export operations: * Export: * Import: ** When running the diff using two databases (%1 and %2) there's the need to specify two connections/aliases. If only one connection is set it will be used to import the input database as well to retrieve database used in the comparison. A second connection can be specified by appending a 1 on any connection configuration parameter listed above. There are no connections configured. Il n'y a aucune connexion configurée. Available connections (alias : connection string) No operation mode was specified! Export, fix model, import database, diff and update mime operations can't be used at the same time! Multiple export mode was specified! No input file was specified! No input database was specified! No output file was specified! Input file must be different from output! Le fichier source doit être différent du fichier de sortie ! Incomplete connection information! Les informations de connexion sont incomplètes ! Invalid zoom specified! Zoom spécifié invalide ! Invalid action specified to update mime option! Action spécifiée invalide pour mettre à jour l'option mime ! No input file or database was specified! The input file and database can't be used at the same time! No database to be compared was specified! No diff action (save or apply) was specified! No output file for the diff code was specified! command line interface. ** Error code `%1' found and ignored. Proceeding with export. ** Command: %1 Extracting objects' XML... Extraction des objets XML... Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted! Fichier d'entrée invalide ! Il semble que ce ne soit pas un modèle généré par pgModeler ou que le fichier soit corrompu ! Recreating objects... Recréation des objets... ** Object(s) that couldn't fixed: ** Ces objets ne peuvent être corrigés : WARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2) AVERTISSEMENT : Certains objets ne peuvent peut-être pas être corrigés. Nouvel essai... (%1/%2) Starting model fixing... Lancement de la fixation du modèle... Loading input file: %1 Fixed model file: %1 Model successfully fixed! Modèle fixé avec succès ! Starting model export... Début de l'export du modèle... Export to PNG image: %1 Export to SVG file: %1 Export to SQL script file: %1 Export to data dictionary: %1 Export to DBMS: %1 Export successfully ended! Starting database import... Input database: %1 Saving the imported database to file... Import successfully ended! Starting diff process... Input model: %1 Compare to: %1 Loading input model... Importing the database `%1'... Comparing the generated models... No differences were detected. Saving diff to file `%1' ** WARNING: You are about to apply the generated diff code to the server. Data can be lost in the process! ** Proceed with the diff applying? (yes/no) > yes no Diff code not applied to the server. Applying diff to the database `%1'... Diff successfully ended! Starting mime update... Lancement de la mise à jour du mime... Mime database successfully updated! Mime database operation: %1 Opération de base de données mime : %1 Can't erase the file %1! Check if the current user has permissions to delete it and if the file exists. Impossible d'effacer le fichier %1 ! Vérifiez si l'utilisateur actuel dispose des autorisations pour le supprimer et si le fichier existe. Running update-mime-database command... Exécution de la commande update-mime-database... PgModelerPlugin Plugin Information Information d'extension Version: %1 Version : %1 Author: %1 Auteur : %1 PgModelerUiNs Do you want to apply the <strong>SQL %1 status</strong> to the object's references too? This will avoid problems when exporting or validating the model. Souhaitez-vous appliquer le statut SQL <strong>%1</strong> aux références de l'objet également ? Cela permet d'éviter des problèmes lors de l'export ou de la validation du modèle. disabling désactivé enabling activé Another %1 error(s) were suppressed due to stacktrace size limits. %1 autre erreur(s) ont été supprimés en raison de la limite de taille de la pile d'appels. PgSQLTypeWidget Form Formulaire Data Type Type de donnée SRID: SRID : Variation: Variation : Z Z M M Precision Précision Spatial: Spatial : Dimension Dimension Format: Format : Timezone: Fuseau horaire : Type: Type : P: P : Length Longueur L: L : Interval: Intervalle : [ ]: [ ] : NONE AUCUN PhysicalTable In demonstration version tables can have only `%1' instances of each child object type or ancestor tables! You've reach this limit for the type: `%2' Dans la version de démonstration, les tables ne peuvent contenir que `%1' instance(s) de chaque type d'objet enfant ou table ancêtre ! Vous avez atteint cette limite pour le type : `%2' PluginsConfigWidget Form Formulaire Plug-ins root directory: Répertoire racine des extensions : Open in file manager Ouvrir dans le gestionnaire de fichier Loaded plug-ins Extensions chargées Plugin Extension Version Library Bibliothèque PolicyWidget Basics Notions de base Command: Commande : Permissive Permissif Roles Rôles Expressions USING: Anglicisme a conserver (SQL) USING : CHECK: Anglicisme a conserver (SQL) CHECK : Name Nom Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. Laissez la grille <em><strong>Rôles</strong></em> vide afin de créer un %1 applicable à <strong><em>PUBLIC</em></strong>. QObject new_database nouvelle_base_de_données %1 (line: %2) %1 (ligne : %2) ReferenceWidget Reference properties Properties Propriétés Ref. type: <p>The reference will be used as part of the WHERE clause in form of conditional expression. </p> WHERE <p>The reference is used in the FROM portion of the command in order to reference tables or construct JOIN statements.</p> FROM <p>The reference will be appended to the very end of the view's definition. This is useful when using GROUP BY/HAVING statements.</p> GROUP/HAVING <p>The reference's expression is used exclusively as the view's definition.</p> View Definition Définition de la vue <p>The reference will be used as part of the SELECT statement to retrieve columns or expressions that will compose the view's columns.</p> SELECT View's references can point to a table, column or expression. Table / Column Expression Expression Ref. alias: <p>This is a more friendly description for the reference. When displaying the model in compact view this is the text shown for the reference instead of its real description. If this field is empty the real description will be displayed anyway.</p> Used in: Utilisé dans : Ref. object: Table alias: Column alias: Expression: Expression : Expr. alias: Columns Colonnes This is the name of the object in the PostgreSQL database. Name: Nom : <p>This is a more friendly name for the column. When displaying the model in compact view this is the name shown for the column instead of its real name. If this field is empty the real name will be displayed anyway.</p> Alias: Referenced tables Tables référencées Table: Table : To reference all columns of a table select only a table in the object selector, this is the same as write <em><strong>[schema].[table].*</strong></em>. In order to reference a only a single column of a table select a column object in the selector. Name Nom Type Type Alias This tab can be used to inform the columns that the view owns. This is just a convenience to make the visualization of this kind of object more intuitive. If no column is specified here the columns of the view displayed in the canvas will be a fragment of the expression defined in the previous tab. Schema Schéma This tab can be used to inform the tables that the view references. This is just a convenience to make the visualization of this kind of object more intuitive. If no table is specified here no relationship will be displayed in the canvas. Note that no validation will be done to check if the provided tables are really referenced by the view. Relationship %1_has_one_%2 Faut-il le traduire ? %1_has_many_%2 Faut-il le traduire ? many_%1_has_many_%2 Faut-il le traduire ? %1_inherits_%2 Faut-il le traduire ? %1_is_partition_of_%2 %1_copies_%2 Faut-il le traduire ? RelationshipConfigWidget Form Formulaire <p>This mode renders the relationships in crow's foot notation which has a better semantics and readability. It also determines the optimal point where the relationship is connected on the tables' edges taking their position into account.</p> <p>Mode en patte de corbeau. La liaison s'effectue entre les tables avec cette notation pour une meilleure lisibilité.</p> <p>This mode determines the optimal point where the relationship is connected on the tables' edges taking their position into account. It implies the usage of the classical ER notation.</p> <p>Mode optimisé. La liaison s'effectue entre les tables en un point optimal sur les bords des tables. Ce mode utilise la notation classique Entité-Association.</p> Connect FK to PK columns Relier via les colonnes des clés étrangères et clés primaires <p>This mode is the classical one. It connects the relationship to tables through their central points. It implies the usage of the classical ER notation.</p> <p>Mode classique. La liaison s'effectue entre les tables en leur point central. Ce mode utilise la notation classique Entité-Association.</p> Connect tables' center points Relier en un point central Foreign key settings Clés étrangères Deferral: Report : Deferrable: Reportable : ON DELETE: ON DELETE : ON UPDATE: ON UPDATE : Name patterns Règles de nommage Relationship type: Type de relation : Foreign Key (Target): Clé étrangère (Cible) : Unique Key Name: Nom contrainte unique : Primary Key Name: Nom contrainte clé primaire : Primary Key Column: Nom colonne clé primaire : Column (Target): Colonne (Cible) : Foreign Key (Source): Clé étrangère (Source) : Column (Source): Colonne (Source) : Connection Mode Affichage FK Settings && Patterns Clés étrangères && nommage Default Défaut Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Motif pour les noms de clés étrangères générées qui sont basées sur la clé primaire d'une table référencée (1 :1 et 1 :n) ou sur la clé primaire de la table source (n :n). Pattern for columns generated based upon target table's pk (n-n). Motif pour les noms de colonnes générées qui sont basées sur la clé primaire de la table cible (n :n). Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Motif pour les noms de colonnes générées qui sont basées sur la clé primaire d'une table référencée (1 :1 et 1 :n) ou sur la clé primaire de la table source (n :n). Pattern for foreign key generated based upon target table's pk (n-n). Motif pour les noms de clés étrangères générées qui sont basées sur une clé primaire de la table cible (n :n). Pattern for unique key generated by the relationship. Motif pour les noms de clés uniques qui sont générées par une association. Pattern for primary key generated by identifier relationship. Motif pour les noms de clés primaires qui sont générées par une relation. Crow's foot notation Relier en patte de corbeau (Crow's foot) Connect tables' edges Relier par les bords des tables This mode is available only for <strong>one-to-one</strong>, <strong>one-to-many</strong> and <strong>fk relationships</strong> but provides a better semantics when linking tables by placing the lines on the exact point where the relationship occurs. It implies the usage of the classical ER notation. Ce mode d'affichage est disponible uniquement pour les associations de type <strong>un-à-un</strong>, <strong>un-à-plusieurs</strong> et <strong>les associations aux clés étrangères</strong> mais fournit une meilleure sémantique lors de l'association de tables en plaçant les lignes sur le point exact où l'association se produit. Cela implique l'utilisation de la notation ER classique. RelationshipWidget General Général Identifier Identifiant Rel. Type: Type de relation : Table 1: Table n°1 : Table 2: Table n°2 : Foreign key Settings Propriétés par défaut des clés étrangères Use the values defined on settings dialogs for the fields below Utiliser les paramètres de pgModeler pour les champs ci-dessous Use global settings for these fields Utiliser les paramètres globaux de pgModeler ON DELETE: ON DELETE : ON UPDATE: ON UPDATE : Name Patterns Règles de nommage Column (Source): Colonne (Source) : Column (Target): Colonne (Cible) : Foreign Key (Source): Clé étrangère (Source) : Foreign Key (Target): Clé étrangère (Cible) : Cardinality: Cardinalité : [SRC] is required [SRC] est requis [DST] is required [DST] est requis Name of the table generated from many to many relationship Nom de la table générée par une relation plusieurs à plusieurs rel_type <p>The receiver's primary key will be composed by the generated foreign key columns.</p> <p>Instead of create a multi-valued primary key with the generated foreign keys columns a single column is created and used as primary key.</p> Bounding expression Partitioning type: NONE AUCUN <p>Default partitions are only supported on <strong>PostgreSQL 11+</strong>. Using this option and exporting the code to PostgreSQL 10 syntax errors will be raised.</p> Default partition Generate the partition bounding expression based upon the partitioning type in use. Generate expression Settings Paramètres Deferrable: Reportable : Deferral: Report : Copy Options Options de copie INDEXES INDEX COMMENTS COMMENTAIRES INCLUDING INCLURE DEFAULTS DEFAUTS CONSTRAINTS CONTRAINTES Use defaults Utiliser les valeurs par défauts ALL TOUT STORAGE STOCKAGE Gen. Table Name: Nom nouvelle table : STATISTICS IDENTITY Attributes Attributs Constraints Contraintes Primary key Clé primaire Advanced Avancé Attribute Attribut Type Constraint Contrainte Name Nom This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables. Cet onglet avancé montre les objets (colonnes ou tables) générés automatiquement par la relation ainsi que les clés étrangères qui forment le(s) lien(s) entre les tables. <p>Referer view references one or more columns of a table to construct it's own columns.</p> <p>Referenced table has its columns referenced by a view in order to construct the columns of this latter.</p> <p>Referer table references one or more columns of a table through foreign keys. This is the (n) side of relationship.</p> <p>Referenced table has its columns referenced by a table's foreign key. This is the (1) side of relationship.</p> Partitioned Table: <p>Partitioned table is the one which is splitted into smaller pieces (partitions). This table is where the partitioning strategy or type is defined.</p> Partition Table: <p>Partition table is the one attached to a partitioned table in which operations over data will be routed (according to the paritionig rule) when trying to handle the partitioned table.</p> <p>Reference table has the columns from its primary key will copied to the receiver table in order to represent the linking between them. This is the (1) side of relationship.</p> <p>Receiver (or referer) table will receive the generated columns and the foreign key in order to represent the linking between them. This is the (n) side of relationship.</p> <p>In many-to-many relationships both tables are used as reference to generate the table that represents the linking. Columns from both tables are copied to the resultant table and two foreign keys are created as well in order to reference each participant table.</p> is required est requis Reference Table: Table référente : Default Défaut Receiver Table: Table de destination : Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Motif pour les noms de colonnes générées qui sont basées sur la clé primaire d'une table référencée (1 :1 et 1 :n) ou sur la clé primaire de la table source (n :n). Pattern for columns generated based upon target table's pk (n-n). Motif pour les noms de colonnes générées qui sont basées sur la clé primaire de la table cible (n :n). Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Motif pour les noms de clés étrangères générées qui sont basées sur la clé primaire d'une table référencée (1 :1 et 1 :n) ou sur la clé primaire de la table source (n :n). Pattern for foreign key generated based upon target table's pk (n-n). Motif pour les noms de clés étrangères générées qui sont basées sur une clé primaire de la table cible (n :n). Pattern for primary key generated by identifier relationship. Motif pour les noms de clés primaires qui sont générées par une association. Primary Key Name: Nom de clé primaire : Pattern for unique key generated by the relationship. Motif pour les noms de clés uniques qui sont générées par une association. Unique Key Name: Nom clé unique : Primay Key Column: Colonne de clé primaire : Single PK column Colonne clé primaire simple Custom Color: Couleur personnalisée : Use the special primary key if you want to include a primary key containing generated columns to the receiver table. <strong>Important:</strong> if this is a new relationship there is a need to finish its creation and reopen this dialog to create the special primary key. Utilisez la clé primaire spéciale si vous souhaitez inclure une clé primaire contenant des colonnes générées dans la table de destination. <strong>Important :</strong> s'il s'agit d'une nouvelle relation, il est nécessaire de terminer sa création et de réouvrir cette boîte de dialogue pour créer la clé primaire spéciale. Referer View: Vue référente : Referer Table: Table référente : Referenced Table: Table référencée : E&XCLUDING E&XCLUSION Available tokens to define name patterns:<br/> <strong>%1</strong> = Reference (source) primary key column name. <em>(Ignored on constraint patterns)</em><br/> <strong>%2</strong> = Reference (source) table name.<br/> <strong>%3</strong> = Receiver (destination) table name.<br/> <strong>%4</strong> = Generated table name. <em>(Only for n:n relationships)</em> Formes disponibles pour définir les modèles de noms : <br/> <strong>%1</strong> = Nom de la colonne de clé primaire de référence (source). <em>(Ignoré sur les modèles de contrainte)</em><br/> <strong>%2</strong> = Nom de la table de référence (source).<br/> <strong>%3</strong> = Nom de la table référencée (ou de déstination). <br/> <strong>%4</strong> = Nom de la table générée. <em>(Seulement pour les relations n:n)</em> ResultSetModel [binary data] [données binaires] RoleWidget Password: Mot de passe : Connections: Connexions : Attributes Attributs Superuser Super utilisateur Inherit permissions Hériter des permissions Can create database Peut créer des bases de données Can use replication Peut utiliser la réplication Can login Peut se loguer Encrypted Encrypté Members Membres Member of Membre de Members (Admin.) Membres (Admin.) Role Rôle Validity Validité yyyy-MMM-dd hh:mm:ss aaaa-MMM-jj hh :mm :ss Assigning <strong><em>-1</em></strong> to <strong><em>Connections</em></strong> creates a role without connection limit.<br/> Unchecking <strong><em>Validity</em></strong> creates an role that never expires. L'affectation de <strong><em>-1</em></strong> à <strong><em>Connexions</em></strong> crée un rôle sans limite de connexion.<br/> Décocher <strong><em>Validité</em></strong> crée un rôle qui n'expire jamais. Bypass RLS Contournement RLS Can create role Peut créer des rôles RuleWidget Event: Évènement : Execution Type: Type d'exécution : Conditional Expr.: Expr. conditionnelle : Commands Commandes SQL Command: Commandes SQL : SQL command Commande SQL To create a rule that does not perform any action (<strong>DO NOTHING</strong>) simply do not specify commands in the SQL commands table. Pour créer une règle qui n'éxécute aucune action (<strong>DO NOTHING</strong>), ne spécifiez aucune commandes dans le champs des commandes SQL. SQLExecutionWidget Form Formulaire Save SQL commands Sauvegarder commandes SQL Alt+F Alt+F Run the specified SQL command Exécuter la commande SQL entrée Clear sql input field and results Effacer le code SQL et la grille de résultat Clear All Effacer Export results to a CSV file Exporter les résultats dans un fichier CSV Snippe&ts Extrai&ts de code Alt+T E&xport E&xporter ... ... SQL file (*.sql);;All files (*.*) Fichier SQL (*.sql);;Tous les fichiers (*.*) Load Charger Save Enregistrer Save as Enregistrer sous [binary data] [données binaires] No results retrieved or changes done due to the error above! Run the command again. Aucun resultat retourné ou aucun changement effectué en raison de l'erreur ci-dessus. Relancer la commande. Messages (%1) [%1]: SQL command successfully executed in <em><strong>%2</strong></em>. <em>%3 <strong>%4</strong></em> [%1]: Commande SQL exécutée avec succès en <em><strong>%2</strong></em>. <em>%3 <strong>%4</strong></em> Executed at Exécuté à Command failed La commande a échoué Rows: Lignes : [%1]: SQL command is running... [%1]: Commande SQL en cours d'éxécution... Save CSV file Sauvegarder fichier CSV Comma-separated values file (*.csv);;All files (*.*) Fichiers CSV avec champs séparés par des virgules (*.csv);;Tous les fichiers (*.*) The SQL input field and the results grid will be cleared! Want to proceed? Le champ d'entrée SQL ainsi que la grille des résultats vont être purgés ! Voulez-vous poursuivre ? Save history Enregistrer l'historique Reload history Recharger l'historique Find in history Rechercher dans l'historique Hide find tool Masquer l'outil de recherche This action will wipe out all the SQL commands history for the current connection! Do you really want to proceed? Cette action effacera tout l'historique des commandes SQL pour la connexion en cours ! Voulez-vous vraiment poursuivre ? Load SQL commands Charger commandes SQL Copy selection Copier la sélection Search in SQL code Rechercher dans le code SQL Toggles the output pane (Dés)active le volet de sortie &Output S&ortie Alt+O Alt+O Results Résultats Case sensitive Respecter la casse Regular expression Expression régulière Exact match Correspondance exacte Hide this widget Masquer ce widget Messages History Historique Results (%1) Resultats (%1) Rows affected Lignes affectées Rows retrieved Lignes récupérées Plain format Format simple CVS format Format CVS This action will wipe out all the SQL commands history for all connections! Do you really want to proceed? Cette action effacera tout l'historique des commandes SQL pour toutes les connexions ! Voulez-vous vraiment poursuivre ? Clear history Nettoyer l'historique Close the current SQL script Fermer le script SQL actuel SQL script currently handled Script SQL actuellement géré (not saved) (non enregistré) Run Lancer F5 F5 Cancel the execution of the current SQL command Annuler l'exécution de la commande SQL courante Stop Arrêter Esc Échap Handle external SQL script Gérer le script SQL externe &Script Fi&nd &Rechercher Ctrl+F Ctrl+F Alt+X Filter the retrived results Filtrer parmis les résultats obtenus F&ilter F&iltrer Alt+I Alt+I Current working database Base de données de travail actuelle SQLToolWidget Form Formulaire Database explorer Explorateur de bases de données SQL execution Exécuteur de code SQL ... ... Add a new execution tab for the current database (%1) Ouvrir un nouvel onglet pour la base courante (%1) Warning Avertissement Failed to load the file `%1' in SQL tool because the connection ID `%2' was not found! Echec du chargement du fichier `%1' dans l'outil SQL car la connexion `%2 n'existe pas ! <strong>ATTENTION:</strong> Close the database being browsed will close any opened SQL execution pane related to it! Do you really want to proceed? <strong>ATTENTION:</strong> La fermeture de la connexion à la base de données en cours de consultation provoquera la fermeture de tous les onglets ouverts associés ! Souhaitez-vous vraiment poursuivre ? Disconnect from all databases Se déconnecter de toutes les bases de données Update the database list Actualiser la liste des bases disponibles Toggle the object's attributes grid (Dés)active la grille des attributs de l'objet Attributes Attributs Alt+R Alt+R Toggle the display of source code pane (Dés)active l'affichage du volet du code source Source code Code source <strong>ATTENTION:</strong> Disconnect from all databases will close any opened tab in this view! Do you really want to proceed? <strong>ATTENTION :</strong> Se déconnecter de toutes les bases de données fermera tout onglet ouvert dans cette vue ! Souhaitez-vous vraiment poursuivre ? SceneInfoWidget Form Formulaire Current position of the mouse in the canvas Position actuelle de la souris dans le canevas - Current zoom factor Facteur de zoom actuel Currently selected object(s) Objet(s) actuellement sélectionné(s) Dimensions of the selected object(s) Dimensions de(s) l'objet(s) sélectionné(s) No selection Aucune séléction N/A Inconnu Sel. objects: %1 Objets select. : %1 SchemaWidget Show rectangle Afficher le rectangle Fill color: Couleur de remplissage : SequenceWidget Cyclic: Cyclique : Start: Début : Maximum: Maximum : Minimum: Minimum : Defualt values: Valeurs par défaut : Increment: Incrément : Cache: Cache : Owner Col.: Proprio. Col. : User defined Utilisateur défini SnippetsConfigWidget Form Formulaire Create new connection Créer une nouvelle connexion Cancel edition Annuler l'édition Edit selected connection Modifier la connexion sélectionnée Delete selected connection Supprimer la connexion sélectionnée Remove All Tout supprimer Shift+Del Maj+Suppr Filter: Filtrer : ID: Identifiant : Add Ajouter Update Mettre à jour General Général Label: Étiquette : Applies to: S'applique à : Parsable or dynamic snippets are written in the <strong>schema micro language</strong> syntax. When using a parsable snippet the attributes surrounded in <strong>{}</strong> will be replaced by the selected object's matching attributes. Les extraits de code analysables ou dynamiques sont écrits dans la syntaxe <strong>schema micro language</strong>. Lorsque vous utilisez un extrait de code analysé, les attributs entourés par des <strong>{}</strong> seront remplacés par les attributs correspondants de l'objet sélectionné. Parsable Analysable When handling parsable snippets empty attributes will be replaced by a value in the format <strong>{attribute}</strong>. Note that this option can affect the semantics of the resulting snippet. Lors de la manipulation d'extraits de code analysables, les attributs vides seront remplacés par une valeur au format <strong>{attribut}</strong>. Noter que cette option peut affecter la sémantique de l'extrait résultant. Placeholders Élément de substitution Parse the snippet in order to check if there are syntax errors. Analyser l'extrait de code afin de vérifier s'il existe des erreurs de syntaxe. Parse Analyser Snippets: Extraits : General purpose Usage général All snippets Tous les extraits /* Error parsing the snippet '%1': %2 */ /* Erreur lors de l'analyse de l'extrait '%1': %2 */ Duplicated snippet id <strong>%1</strong> detected. Please, specify a different one! Identifiant <strong>%1</strong> d'extrait dupliqué détécté. Merci d'en choisir un autre ! Invalid ID pattern detected <strong>%1</strong>. This one must start with at leat one letter and be composed by letters, numbers and/or underscore! Motif d'identification <strong>%1</strong> incorrect détecté. Celui-ci doit commencer par au moins une lettre et être composé de lettres, de chiffres et/ou de tirets bas _ ! Empty label for snippet <strong>%1</strong>. Please, specify a value for it! Label vide pour l'extrait <strong>%1</strong>. Merci de lui spécifier une valeur ! Empty code for snippet <strong>%1</strong>. Please, specify a value for it! Code vide pour l'extrait <strong>%1</strong>. Merci de lui spécifier une valeur ! The dynamic snippet contains syntax error(s). Additional info: <br/><em>%1</em> L'extrait dynamique contient des erreurs de syntax. Plus d'informations : <br/><em>%1</em> Do you really want to remove all snippets? Voulez-vous vraiment supprimer tous les extraits ? No syntax errors found in the snippet. Aucune erreur de syntax retrouvée dans l'extrait. SourceCodeWidget Version: Version : PostgreSQL PostgreSQL iconecodigo icône SQL SQL <strong>Original:</strong> displays only the original object's SQL code.<br/><br/><strong>Dependencies:</strong> displays the original code including all dependencies needed to properly create the selected object.<br/><br/><strong>Children:</strong> displays the original code including all object's children SQL code. This option is used only by schemas, tables and views. <strong>Original :</strong>restitue uniquement the code SQL de l'objet.<br/><br/><strong>Dépendances :</strong>restitue le code original de l'objet en y incluant toutes les dépendances nécessaires à sa bonne création.<br/><br/><strong>Enfants :</strong>restitue le code original de l'objet en incluant tous les objets enfants. Cette option n'est utilisée que par les schémas, les tables et les vues. Original XML XML Source code visualization Visualisation du code source SQL code (*.sql);;All files (*.*) Code SQL (*.sql);;Tous les fichiers (*.*) Generating source code... Génération du code source... -- NOTE: the code below contains the SQL for the selected object -- as well for its dependencies and children (if applicable). -- -- This feature is only a convinience in order to permit you to test -- the whole object's SQL definition at once. -- -- When exporting or generating the SQL for the whole database model -- all objects will be placed at their original positions. -- NOTE: le code ci-dessous contient le code SQL de l'objet sélectionné -- ainsi que de ses dépendances et enfants (le cas échéant). -- -- Cette fonctionnalité n'est qu'une commodité vous permettant de tester -- la définition SQL de l'objet entier. -- -- Lors de l'export ou de la génération du code SQL pour l'ensemble du modèle de base de données, -- tous les objets seront placés à leurs positions d'origine. -- SQL code unavailable for this type of object -- -- Code SQL non disponible pour ce type d'objet. -- Code display: Affichage du code : Original + depedencies' SQL Original + dépendances SQL Original + children's SQL Original + enfants SQL Save the SQL code to a file. Enregistrer le code SQL dans un fichier. Save SQL Enregistrer le code SQL Save SQL code as... Enregistrer le code SQL sous... <!-- XML code preview disabled in demonstration version --> < !-- L'aperçu du code XML est désactivé dans la version de démonstration --> -- SQL code purposely truncated at this point in demo version! -- Le code SQL est volontairement tronqué à ce stade dans la version démo ! SwapObjectsIdsWidget Create: Créer : ID: Identifiant : Before: Avant : Swap the values of the fields Procède à l'échange Swap values Échanger Filter by name Filtrer par nom Hide system objects Masquer les objets système Hide relationships Masquer les relations Defines the search filter Définir un filtre de recherche Filter Filtrer Change objects creation order Changer l'ordre de création des objets Change the objects creation order is an irreversible operation and cause the operations history to be automatically erased. Note that the creation order configured in this form is not definitive and may change after a model validation. Modifier l'ordre de création des objets est une opération irréversible qui entraîne l'effacement automatique de l'historique des opérations. Noter que l'ordre de création configuré dans ce formulaire n'est pas définitif et peut changer après la validation d'un modèle. ID Identifiant Object Objet Type Parent Object Objet parent Parent Type Type parent Table new_table nouvelle_table TableDataWidget Edit table data Modifier les données de la table Copy items on the grid Copier les valeurs de la grille Copy Copier Add empty rows Ajouter des lignes vides Add row Ajouter une ligne Ins Insérer Ctrl+D Add an empty column Ajouter une colonne vide Delete rows Supprimer des lignes Remove all rows from the grid preserving columns Supprimer toutes les lignes en préservant les colonnes Shift+Del Maj+Suppr Delete the selected rows Supprimer les lignes sélectionnées Del Suppr Duplicate the selected rows Dupliquer les lignes sélectionnées Delete the selected columns Supprimer les colonnes sélectionnées Delete column Supprimer une colonne Paste items on the grid Coller les valeurs sur la grille Paste Coller Ctrl+V Ctrl+V <html><head/><body><p>Some invalid or duplicated columns were detected. In order to solve this issue double-click the header of the highlighted ones in order to define the correct name in which the data belongs to or delete the entire column. Note that these columns are completely ignored when generating the <span style=" font-weight:600;">INSERT</span> commands.</p></body></html> <html><head/><body><p>Des colonnes invalides ou en double ont été détectées. Pour solutionner la chose vous pouvez double-cliquer sur l'entête de chaque colonne mise en surbrillance pour lui associer un nom afin d'y rattacher les données ou sinon vous pouvez simplement supprimer ces colonnes. Les colonnes invalides sont ignorées lors de la génération des commandes SQL de type <span style=" font-weight:600;">INSERT</span> </p></body></html> Add column Ajouter une colonne Duplicate rows Dupliquer des lignes Change the values of all selected cells at once Modifier la valeur de toutes les cellules sélectionnées Bulk data edit Modification de données en masse Ctrl+E Ctrl+E Remove all columns (and rows) from the grid Supprimer toutes les lignes et les colonnes également Delete all columns Supprimer toutes les colonnes Ctrl+Shift+Del Ctrl+Maj+Suppr Delete all rows Supprimer toutes les lignes Delete columns is an irreversible action! Do you really want to proceed? Effacer des colonnes est une action irréversible ! Souhaitez-vous continuer ? Remove all rows is an irreversible action! Do you really want to proceed? Supprimer toutes les lignes est une action irréversible ! Souhaitez-vous continuer ? Remove all columns is an irreversible action! Do you really want to proceed? Supprimer toutes les colonnes est une action irréversible ! Voulez-vous vraiment poursuivre ? Unknown column Colonne inconnue Duplicated column Colonne dupliquée Fills the grid using a CSV file Remplit la grille en utilisant un fichier CSV <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> <html><head/><body><p>Les valeurs vides sont supposées être <span style="font-weight :600;">DEFAULT</span>. Pour utiliser des valeurs spéciales comme <span style="font-weight :600;">NULL</span>, un appel de fonction comme <span style="font-weight :600;">now()</span> ou un échappement des données spécifiques, entourer les valeurs de barres obliques, par exemple <span style="font-weight :600;">/valeur/</span>. Pour utiliser une barre oblique dans le cadre de la valeur, ajouter le caractère barre oblique inverse, par exemple <span style="font-weight :600;">\/</span>.</p></body></html> TableObjectView Relationship: %1 Relations : %1 TableView Partitioned Partitionnée Partition Partition TableWidget Options Options Tag: Balise : Attributes Attributs With OID Avec OID Generate ALTER for columns/constraints Utiliser ALTER pour les colonnes/contraintes Unlogged Unlogged Name Nom Schema Schéma Type Option Option Value Valeur PK Faut-il le traduire ? Non, jargon DB accepté PK Default Value Valeur par défaut Attribute(s) Attribut(s) Alias Alias Comment Commentaire It is not possible to mark a column as primary key when the table already has a primary key which was created by a relationship! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. Il n'est pas possible de marquer une colonne comme clé primaire quand la table a déjà une clé primaire qui a été créée par une relation ! Cette action doit être effectuée dans la section <strong>Clé primaire</strong> du formulaire d'édition de la relation. It is not possible to mark a column created by a relationship as primary key! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. Il n'est pas possible de marquer une colonne créée par une relation comme clé primaire ! Cette action doit être effectuée dans la section <strong>Clé primaire</strong> du formulaire d'édition de la relation. ON DELETE Faut-il le traduire ? À la suppression ON UPDATE Faut-il le traduire ? À la mise à jour Refer. Table Table référencée Firing Déclencheur Events Evènements Execution Exécution Event Evènement Indexing Indexation Command Commande Permissive Jargon commande SQL PERMISSIVE USING expression Faut-il le traduire ? expression USING CHECK expression Faut-il le traduire ? expression CHECK Roles Rôles None Aucun Parent Copy Copie Partitioned Partitionnée Partition Partition Yes Oui No Non &Columns &Colonnes Co&nstraints Co&ntraintes Tri&ggers Décl&encheurs &Rules &Régles &Indexes &Index Partition &keys Clés de &partition Partitioning: Partitionnement : &Tables &Tables Edit data Modifier données Define initial data for the table Définir les données initiales de la table Enable row level security Activer la sécurité au niveau de la ligne Force RLS for owner Forcer RLS pour le propriétaire Server: Serveur : &Policies &Politiques TablespaceWidget Form Formulaire Directory: Dossier : TagWidget Colors Couleurs Extended body: Corps étendu : Body: Corps : Title: Titre : Schema name: Nom du schéma : Table name: Nom de la table : TaskProgressWidget Executing tasks Exécution des tâches Waiting task to start... En attente du démarrage de la tâche ... TextboxWidget Font: Police : Text Texte pt pt Color: Couleur : Bold Gras Italic Italique Underline Souligné Select text color Sélection de la couleur du texte TriggerWidget INSERT INSERT DELETE DELETE UPDATE UPDATE TRUNCATE TRUNCATE Deferrable: Reportable : Events: Evènements : Type: Type : Columns Colonnes Column: Colonne : Transition tables names Noms des tables de transition OLD: Pas à traduire OLD: NEW: Pas à traduire NEW: Arguments Arguments Constraint Contrainte Ordinary trigger Déclencheur ordinaire Constraint trigger Céclencheur contrainte FOR EACH ROW Pour chaque ligne Refer. Table: Table référ. : Condition: Condition : Argument: Argument : Function: Fonction : Options: Options : Excution: Exécution : Column Colonne Type Type TypeWidget Configuration: Configuration : Base Type Type de base Enumeration Énumération Enumerations Énumérations Enumeration: Énumération : Attributes Attributs Internal Length: Long. interne : Storage: Stockage : Category: Catégorie : Delimiter: Délimiteur : Alignment: Alignement : char char smallint smallint integer integer double precision double précision Default Value: Valeur par défaut : Range Intervalle Options: Options : By value Par valeur Preferred Préféré Collatable Assemblable Functions Fonctions INPUT: INPUT : OUTPUT: OUTPUT : RECV: RECV : SEND: SEND : TPMOD_IN: TPMOD_IN : TPMOD_OUT: TPMOD_OUT : ANALYZE: ANALYZE : Name: Nom : Collation: Collation : Subtype Diff Func.: Fonction de différence du sous-type : Operator Class: Classe d'opérateurs : Canonical Func.: Fonction canonique : Like Type Type de like Element Type Type d'élement Subtype Sous-type Name Nom Type Collation The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table> Les fonctions assignées à un type devraient être écrites en langage C et possèder, les signatures suivantes :<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table> The functions to be assigned to a range type should have the following signatures:<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em> Les fonction assignables au type plage (RANGE) doivent avoir la signature suivante :<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em> Co&mposite Co&mposite UpdateNotifierWidget Update Notifier Vérificateur de mise à jour Update available! Mise à jour disponible ! Hide this widget Cacher ce widget ... ... Released in: Date de sortie : mmm dd, yyyy jj mmm aaaa 0.0.0 0.0.0 Changelog Journal des modifications Redirects to purchase page. Redirige vers la page web pour acheter. Get binary package Télécharger l'application compilée Redirects to GitHub source repository. Redirige vers la page web du dépôt GitHub. Get source code Télécharger le code source Failed to check updates Impossible de vérifier la présence de mise à jour The update notifier failed to check for new versions! Please, verify your internet connectivity and try again! Connection error returned: <em>%1</em> - <strong>%2</strong>. Le notificateur de mise à jour n'a pas pu vérifier les nouvelles versions ! Merci de vérifier votre connexion internet et de réessayer ! Erreur de connexion renvoyée : <em>%1</em> - <strong>%2</strong>. No updates found Aucune mise à jour disponible You are running the most recent pgModeler version! No update needed. Vous utilisez déjà la version de pgModeler la plus récente ! Aucune mise à jour requise. The update notifier failed to check for new versions! A HTTP status code was returned: <strong>%1</strong> Le vérificateur de mise à jour n'a pas pu vérifier la présence de nouvelles versions ! Code retour HTTP reçu : <strong>%1</strong> New version: Nouvelle version : UserMappingWidget Server: Serveur : Options Options Option Option Value Valeur ViewWidget References Références Options Options Tag: Balise : Mode: Mode : Ordinary Ordinaire With no data Sans données Triggers Déclencheur Rules Règles Indexes Table Expression CTE Code Preview Prévisualisation du code Col./Expr. Table alias Alias de table Column alias Alias de colonne Reference alias Alias de référence Alias Flags: SF FW AW EX VD Marques : SF FW AW EX VD Name Nom Refer. Table Table de référence Firing Déclenche Events Evènements Comment Commentaire Indexing Indexation Execution Exécution Event Evènement /* Could not generate the SQL code. Make sure all attributes are correctly filled! /* Le code SQL ne peut être généré. Vérifiez que les champs sont correctement remplis ! Recursi&ve Récursi&f &Materialized &Matérialiser WelcomeWidget Form Formulaire Support Support New model Nouveau modèle Open model Ouvrir modèle Sample models Modèles de démo Recent models Modèles récents Last session Dernière session pgmodeler-0.9.4/assets/lang/nl_NL.qm000066400000000000000000011127171416010000600172640ustar00rootroot00000000000000GJHKIKFJKKL&LLTMLMOM:PNQOORO}SPTPURiVRWRXS*YSXZSZr2k"As;U]TczRX9:O">O#t*'t7't,+O+[( +[1+19W1}%11P11!1U1P1111"1511J1Yh1h1w1%1D4>gF FsGXGaI@rIBrJ;J-JckJ 4J-LL ]Mz4Mz*MzKMzPSPSdPS aSɓTzTx TT4X\Y+Zw.*ZwQz]K_$_&jXpq>t.{*`,`Gs$k$((Gy,TyHyy!O]bD[֍֍R֍}P֍֍N֍" ֍#0֍8֍M֍֍ ֍Jl֍\%֍`֍aw֍d֍֍֍֍%֍1֍&֍~֍&p֍S4%5t}5tS5t^E)H5xH5=H5*H5H5,H5PH5#nH544H5P m)%,%O%$3%-(%O%%BRWc*:Lqe.epee$e,UeeR2eY3e_es$e0ege%ne.eBįmm/2R Cyiw5o y.^Y !E9_Sw*_*%`+5t`J+`+g`2r$3N3D46v"8_9B:4 ;H5$2TT(*TZz|TZOT5TjT4_VV7pV V5|V͡Wz5XmzWX5X9YbYbYbYYb$YuYQjZHZg~Zg>ZggIZy%-Zy%Zy%PZC\+\ \A\\Ze]._z֖`^}af ^dJd[eA dghS)6h^~jB)j~˃k lrn o-q`oE8Fp>q crV.Lr"As~s~ntln:v'jv: w<|T>xc-yC-y[J~S kcI^a` n a[^b! 6<=U_ 444#h44 4\4k4Fh^cV4%w̠+y1PZ!9a@1A{ Tǭ%~tϋy-@|E C1ߛᬱw@cMνMOM95@ 0qQ l <glOnl g m;p.P!$!U!B~Ӗ!a2!$2|'4)5,q/2/6ks!8RL8מhAHCEzǕP^la45_.N`uQNb}Ce4egegl!s=ue3w2xHn{x{y1zQ2d|{y.%}A7k~^~I&~J&MZ`!.MtcJ2CMe6o[Jdŀy0ƅ-Ơ<:ɀ1.c-5&3jQnCֳѴQFZFZ3;.CLA Q  A  5GqCOc)B8z Q'~KDJO22ZQg%0w*$4؎:eJ6lЁB$AJZZJ7O9teQKS2S2PT*Xky1\a/f>"Hh3kPo{ekp`1p`~sX9x?+#,SA ROd*0d* d* d*15dck0K0/E0i4^̯%HBw9'w9SZ+~K666_q6k66bYMf,,bRk_nCHßsNsoa0ėŖ^Ŗ**qV+,9U-Q1В+ ;n( pًo0bܟ1W[y-[SQ9S@ƫ3ARTUJ=t# #Ne%@8p9 6 C1HKE/c>qA!1##C1V(R?(>) (>(> ^(>G(>0)h})hL.@Th2i̓3bM6n?Z?\gBSL?tQ!}S.+VYNTZAZy1jJ,m^BIp Q:t1Ct1xZ)CZVVm/N'5AXzzg(ٴ4p~='\Z7a}(aN;#VqWw2j|ÌkuFǤ^^L<>ϸ`y'cѥ~؁ΔΔWΔ^ Δ? ;'y\L;y-AeRZF"=JJcv`* . x~, Vd~Nc H !&Ѥa'(]9=_;zb[@NkAЮKM!Y` M`  g"ilueduN xy*{<~RfB:P ,M^#4W#0bIIcRIII^I)II`@nISSys6Z)6&<>)Z<>gC<><>'<>H<>++<>M3\b@Z*4ɓ3D%Qo-{jjGjx,,,jjk k<kmkkkl% q-m8-N mP s m,.n6Rn]5~G#2GOsW(1W+>bM7*87I7HoARG2zn@HSnk!hT7~]9NE|teY_ȤTMZMZz$zz,ų!ųNv_?vL:%:[АG3АG"fАGO8Jq3k|c#|c b =Ig,Zz3|zt-YnRA+17ڐP?JvaCv@|zv;^iWiհ# * ) Ht HuK8/as5Дfvdku)yʔ"i~!&Vv$p1'],Nn,Nc/3 [L2B~}A3H$3HWc3H^l3HM5tܶ5t%8Gwo8ng9'!k:ʔ";I<F]CHEI/K hM2PێSUfY $Y V;Y ]Y piY `ُ%bߎcEewghlZE@hT$kiklll?l-nLZ5MnLZp3E|sw!eL{y6 =,3QmH5H5;H5``Gbr~5vBjzG~c/ jr1-U1Ԋ1PG1%++}{y3RoR&?'zI5XQgnPZ_Fm'^2U{P` Lƨeaƨƨ sȡ"ȼ[q1ѵu$ѵuPҵWŵ*:A޽q4ߺM%{%M1=c˥?@=W/=Wnh|% IUB [ i77@_-fm8[a#JP$Qw&%*  * +^^-3.f58>T9^:D%;<;8=ÆCCCQh C1P oDUV~dYZ>:&[g_p`Gt/]`*Gdg_|Ng_|gxh8m]szr7&wLwoBwovxxmykŎ{U{{ *{$8{P7|hM!>8JYZcjA${+s{uQjsB61L $GtE}. 9N,tz]GgIU8y}K>(]Q“Q^lfbl `]9ĩSȐ+ȐlȐ"ȐNȐpAɓؒɓM|*BR֣8μEvϾ٢ѥX&nv&n4D,ے4ے1Cے~@%4\:a>L%ީ\,i#ʔʥ '\Ȕf/fw?MN6!&"O>%*1,'|2…3c5U5jJ5 !7n:l,h;y(=;L/C*iCIC`N.WN'N)aRDn]c7iA j0@k5%rsUtvjw%w|ww|zxC\~4> >="O&p$hvvB8A ړoP+1!s.k(iQ ` z` Di` O` u` -` 5ra{,^F>,ƨ; -ρ $KӸ*Avtv!(.TC pQ)SeHnNc;@9YAJaW@w-~`M"9')c*z/+J#{+J4+ɳ,/er/yݜ/y4{|t58k_9*B;z7 Eet ln{ƁV'$]cybHЮ׮)\ʴ5JkQ.Q.Q.!Q.Nq`Dώ=Ͻlҥө|mli2r c)O:ʁ|8 >)3IlnvnFAs ?As2As',AsN1AsNAs1As!As/}#RB Fr 7F Tm  )g $: J^ 5 dz F " - % - -ֈ 0F 6 7p C_k Hde IJyT' IJy Oy Oy Rn Ty~/ ZJU3, ZJUK _ b+ e! h> kJ3 lQ,/ t|x8 t|S v/ yEG |~r^ n } v& *T r ۠7' 6V    ; 1  kR ZQ g% 1B ! X  ĝ]  " ' z'= !C m ʮU NJl NJo NJ NJ, (A  կ Hh ݳ 1C  V U c6< ^ !   J 1Ǎ  ^y m zl _!X h9)  Z\ . O$%  j$ 9 #N )`=g *pa +X 0l 1 1ױ 20 6  6=>G =J Am F M(o! M(f M( MJql` O T#N\^ T82 ZM Z [4 _1R `A ci* ci*5 cg cG c+ cZgx cZK cZ cZ+] cZM de d< e9 eb e+U f"C< gh h z i$ o^| qL r*j r3] r3! tsu x:o x  | ~ ~  m z zi l 1 + &%f & dq I' I9 IS I I x , QY 6 6 c޷ Y )q :b : :B G1 yX e ֭ >a > _Cѓ ׳ q v& c 5 56= Q t t t) tz )  H<  , J0 S E šd š Ԯ* ԮI Ǭ Lu= Rz+j t t*D ɗ , .N δn# δO δp" δsX v_ v Ϡ6 ϩ8.R ϩ8Q Ϭ5 ϼ %~ zT~   N ꚅ } %EF / NVV /* "   :P" ^:| w 1 $~2 T ~ , v" 3 % V3  ye] dZ+ nv nߕ .8> .Y 0ȯ 2; 2 ;l @+ AUN BR E.y OA VMh [1a [- \) er!+ g! hx*6 ia m{ʣ r%/ s t! w  Ui n  ݒ. ݒQ F 5 P  ڠ ? Enx L  k  _  ]1Q zj ll A- !  Y W." Oo O   ! x "g. "xs[ &A5 'y '~y -ɣO -ˣ .*+! /F /m 0D 1 @ N D+^ DYlV DYl DZl FM~ Y GH- N^ V E9 Zp [*5 ] g$ i8: j  nO r& { P P P 69e q b6Y ^g ^ ^X ^b 1 ] 8A t;[ Y ? / ¦e %h#+ <VD <` <8 <s <] < ǁA˯ u t S Sn S إT Y _2 @ 0<v 43 SK +MN]]>/` \V    s.JS JqJzJ1u .!<*Mb#'A1(o(T1Y225J3FG3 rI,KOL N|PTcCWG/>W>D\28diGjkJmS3pqn<rwsAHsD%<7u(puFJ'mP>$[y1H{zVz:a9&D`1'-C:; 3& 3s 3* * z1rCZyZŽ}l4!*֊،R?Zϝ3{r DB2LK_4j& . ǓU  ED i!2H1M55505Psj=NAVs.ϓ#סxv&3Q4&#62B;1?,^B7I9tJKPnQHtVvXN]A(`E$~`~ia*(aN!bOӳhhг-jMnkQ(mSv>tv*|uKmUh~a"7F N@`.)oT~P2,eeY*[$] f gHn] a%Љu;5A\+1Azzi~[V^ky-zԄwֈґ֣\=֣\g֣\ ֣\ +xG'JDyٶtt1]5"a,֌@iU (BUILD_NUM) AboutWidget... AboutWidget 0.0.00.0.0 AboutWidgetOver pgModelerAbout pgModeler AboutWidget$Verberg dit widgetHide this widget AboutWidgetLicensieLicense AboutWidget|Een Open Source data modeleer tool ontworpen voor PostgreSQL. Met pgModeler hoef je niet langer zelf je DDL commando's schrijven, laat dit over aan pgModeler! Deze software brengt de concepten van Entity-Relationship diagrammen samen met de features die PostgreSQL implementeerd als uitbreidingen van de SQL standaard.Open source data modeling tool designed for PostgreSQL. No more DDL commands written by hand, let pgModeler do the job for you! This software reunites the concepts of entity-relationship diagrams and the features that PostgreSQL implements as extensions of SQL standards.  AboutWidget6PostgreSQL Database ModelerPostgreSQL Database Modeler AboutWidgetTpgModeler is trotse braziliaanse software!*pgModeler is proudly a brazilian software! AboutWidgetJEen aggregatie-funtie die de types <em><strong>typeA</strong></em> en <em><strong>typeB</strong></em> als invoer aanvaardt en waarvan het status-type <em><strong>status_type</strong></em> is. De volgende regels moeten voldaan zijn: <br/><br/> <strong>&nbsp;&nbsp;&nbsp; " Finale Functie:</strong> <em>void finale_functie(<strong>status_type</strong>)</em><br/> <strong>&nbsp;&nbsp;&nbsp; " Overgangsfunctie:</strong> <em><strong>status_type</strong> transitie_functie(<strong>status_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em>%An aggregate function that accepts the types typeA and typeB as input types and which type of state is state_type, must obey the following rules:

   • Final Function: void final_function(state_type)
   • Transition Function: state_type transition_function(state_type, typeA, typeB)AggregateWidgetFinale functie:Final Function:AggregateWidgetFunctie StaatFunction StateAggregateWidgetFunctie InvoerFuntion InputsAggregateWidget$Initile Vereiste:Initial Condition:AggregateWidget Invoer Data TypeInput Data TypeAggregateWidget"Sorteer-operator:Sort Operator:AggregateWidget Status Data TypeState Data TypeAggregateWidget"Overgangsfunctie:Transition Func.:AggregateWidget pt ptAppearanceConfigWidgetVetBoldAppearanceConfigWidgetKleuren:Colors:AppearanceConfigWidget,Kolom (fk): Kolom naamColumn (fk): Column nameAppearanceConfigWidget0Kolom (fk): BeschrijvingColumn (fk): DescriptorAppearanceConfigWidget,Kolom (nn): Kolom naamColumn (nn): Column nameAppearanceConfigWidget0Kolom (nn): BeschrijvingColumn (nn): DescriptorAppearanceConfigWidget,Kolom (pk): Kolom naamColumn (pk): Column nameAppearanceConfigWidget0Kolom (pk): BeschrijvingColumn (pk): DescriptorAppearanceConfigWidget,Kolom (uq): Kolom naamColumn (uq): Column nameAppearanceConfigWidget0Kolom (uq): BeschrijvingColumn (uq): DescriptorAppearanceConfigWidget"Kolom: Kolom naamColumn: Column nameAppearanceConfigWidget&Kolom: BeschrijvingColumn: DescriptorAppearanceConfigWidgetTKolom: Ingesloten / Overgerfd via relatie,Column: Included / Inherited by relationshipAppearanceConfigWidget Kolom: BeschermdColumn: ProtectedAppearanceConfigWidgetElement:Element:AppearanceConfigWidgetLettertype:Font:AppearanceConfigWidgetVensterFormAppearanceConfigWidgetDAlgemeen: Constraints beschrijvingGlobal: Constraints descriptorAppearanceConfigWidget(Algemeen: LettertypeGlobal: Font styleAppearanceConfigWidget$Algemeen: Lock arcGlobal: Lock arcAppearanceConfigWidget&Algemeen: Lock bodyGlobal: Lock bodyAppearanceConfigWidget2Algemeen: Object selectieGlobal: Object selectionAppearanceConfigWidget*Algemeen: Object-typeGlobal: Objects typeAppearanceConfigWidget4Algemeen: Positie hint boxGlobal: Position hint boxAppearanceConfigWidget8Algemeen: Positie hint tekstGlobal: Position hint textAppearanceConfigWidget&Index: BeschrijvingIndex: DescriptorAppearanceConfigWidgetIndex: Naam Index: NameAppearanceConfigWidgetCursiefItalicAppearanceConfigWidget>Relatie: Attribuut beschrijving"Relationship: Attribute descriptorAppearanceConfigWidget0Relatie: Attribuut tekstRelationship: Attribute textAppearanceConfigWidget*Relatie: BeschrijvingRelationship: DescriptorAppearanceConfigWidget$Relatie: Label boxRelationship: Label boxAppearanceConfigWidget(Relatie: Label tekstRelationship: Label textAppearanceConfigWidget&Regel: BeschrijvingRule: DescriptorAppearanceConfigWidgetRegel: Naam Rule: NameAppearanceConfigWidget Tabel: Kolom boxTable: Columns boxAppearanceConfigWidgetBTabel: Uitgebreide attributen boxTable: Extended attributes boxAppearanceConfigWidget"Tabel: SchemanaamTable: Schema nameAppearanceConfigWidget Tabel: TabelnaamTable: Table nameAppearanceConfigWidget Tabel: Titel boxTable: Title boxAppearanceConfigWidgetTag: Inhoud Tag: BodyAppearanceConfigWidgetTag: Naam Tag: NameAppearanceConfigWidget"Tekst box: Inhoud Textbox: BodyAppearanceConfigWidget*Trigger: BeschrijvingTrigger: DescriptorAppearanceConfigWidgetTrigger: Naam Trigger: NameAppearanceConfigWidgetOnderstrepen UnderlineAppearanceConfigWidget@View: Uitgebreide attributen boxView: Extended attributes boxAppearanceConfigWidget8View: ReferentiebeschrijvingView: Reference descriptorAppearanceConfigWidget0View: Gerefereerde kolomView: Referenced columnAppearanceConfigWidget0View: Gerefereerde tabelView: Referenced tableAppearanceConfigWidget*View: Referenties boxView: References boxAppearanceConfigWidget View: SchemanaamView: Schema nameAppearanceConfigWidget2View: Tabel / Kolom aliasView: Table / columns aliasAppearanceConfigWidgetView: Titel boxView: Title boxAppearanceConfigWidgetView: View-naamView: View nameAppearanceConfigWidgetPDe initile configuratie kon niet worden gecreerd in `%1'! Kijk na of de huidige gebruiker schrijf-machtigingen heeft op dit pad en minstens lees-machtigingen op '%2'.Failed to create initial configuration in `%1'! Check if the current user has write permission over that path and at least read permission over `%2'. ApplicationFEen onbekende uitzondering trad op!Unknown exception caught! Application&Toepassen&ApplyBaseForm&Annuleren&CancelBaseForm&Ok&OkBaseFormDialoogvensterDialogBaseFormAggregator Aggregate BaseObjectBasisrelatieBasic Relationship BaseObjectCastCast BaseObjectSortering Collation BaseObject KolomColumn BaseObjectConstraint Constraint BaseObjectConversie Conversion BaseObjectDatabaseDatabase BaseObject DomeinDomain BaseObjectEvent Trigger Event Trigger BaseObjectUitbreiding Extension BaseObjectFunctieFunction BaseObject IndexIndex BaseObjectTaalLanguage BaseObjectOperatorOperator BaseObjectOperator KlasseOperator Class BaseObject Operator FamilieOperator Family BaseObjectParameter Parameter BaseObjectMachtiging Permission BaseObjectRelatie Relationship BaseObjectRolRole BaseObject RegelRule BaseObject SchemaSchema BaseObjectSequentieSequence BaseObject TabelTable BaseObjectTablespace Tablespace BaseObjectTagTag BaseObjectTekst boxTextbox BaseObjectTriggerTrigger BaseObjectTypeType BaseObjectType AttribuutType Attribute BaseObjectViewView BaseObjectnieuw_objectnieuwe_objecten new_object BaseObjectSQL uitSQL offBaseObjectViewzVoeg SQL commando toe voor of na de definitie van het object.CAppend or prepend a set of SQL commands to the object's definition.BaseObjectWidgetSortering: Collation:BaseObjectWidgetCommentaar:Comment:BaseObjectWidgetAangepaste SQL Custom SQLBaseObjectWidget2Niet-uitvoerbare SQL codeDisable SQL codeBaseObjectWidgetRMaakt de gegenereerde SQL code onuitvoerbaar via comment-tokens (--). Dit zorgt ervoor dat de code voor alle kinder-objecten en refererende objecten wordt uitgeschakeld.xDisables the generated SQL code using comment tokens (--). This will disable the code of all child and referrer objects.BaseObjectWidgetJMachtiginen voor dit object aanpassenEdit object's permissionsBaseObjectWidget,Machtigingen aanpassenEdit permissionsBaseObjectWidgetID:ID:BaseObjectWidget Naam:Name:BaseObjectWidgetEigenaar:Owner:BaseObjectWidgetrVereist veld. Dit veld leeglaten leidt tot foutmeldingen!5Required field. Leaving this empty will raise errors!BaseObjectWidgetSchema:Schema:BaseObjectWidgetTablespace: Tablespace:BaseObjectWidgetDit object is beschermd en dus worden vorm-aanpassingen niet toegepast.FThis object is protected thus no change in form will be applied to it.BaseObjectWidgetWaarde(s)Value(s)BaseObjectWidget VersieVersionBaseObjectWidget iconeiconeBaseObjectWidgetrel_%1_%2 rel_%1_%2BaseRelationship,Verbonden relaties: %1Connected rels: %1 BaseTableView&Annuleren&Cancel BugReportForm...... BugReportForm<html><head/><body><p>Indien u wenst kan u bugs ook rapporten via pgModeler's project repository op <a href="http://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration: underline; color:#0057ae;">GitHub</span></a>. </p></body></html>
 BugReportFormBVoeg een ander database model toe!Attach a different database model BugReportForm~Voeg het database model waarmee het probleem zich voordoet toe.4Attach the below database model file to be debugged. BugReportFormBug Rapport Bug Report BugReportFormBug rapport Bug report BugReportFormfHet bug rapport werd gegeneerd! Gelieve het bestand <strong>%1</strong> naar <em>%2</em> te sturen zodat het kan worden gebruikt bij het debuggen. Hartelijk dank voor je bijdrage!Bug report successfuly generated! Please, send the file %1 to %2 in order be analyzed. Thank you for the collaboration! BugReportFormVersturenCreate BugReportFormDatabase ModelDatabase Model BugReportFormXDatabase model (*.dbm);;Alle bestanden (*.*)'Database model (*.dbm);;All files (*.*) BugReportForm$Probleeminformatie Issue details BugReportFormLaad model Load model BugReportFormOutput:Output: BugReportFormRapportReport BugReportForm@Selecteer de rapport-uitvoer mapSelect report output folder BugReportFormPSelecteer de output-map voor het rapport!Select the report's output folder BugReportForm.Gebruik dit formulier om een volledig bug rapport aan te maken. Gelieve zo volledig en duidelijk mogelijk de actie die tot de bug leidden, te beschrijven. Indien mogelijk, voeg een voorbeeld database model toe aan dit rapport zodat de bug snel gevonden en gecorigeerd kan worden!Use the form below to generate a complete bug report. Please, try to be as clear as possible when describing the actions that can reproduce the bug. Additionally, it's important to attach a sample database model so that the bug can be quickly discovered and fixed! BugReportFormToewijzing Assignment CastWidgetCast Type: Cast Type: CastWidget$Conversie-functie:Conversion Func.: CastWidget Invoer / UitvoerInput / Output CastWidgetBron data typeSource data type CastWidgetDoel data typeTarget data type CastWidgetDe functie die wordt gebruikt bij den cast van <em><strong>typeA</strong></em> naar <em><strong>typeB</strong></em> moet de volgende signature hebben:: <em><strong>typeB</strong> functie(<strong>typeA</strong>, integer, boolean)</em>.The function to be assigned to a cast from typeA to typeB must have the following signature: typeB function(typeA, integer, boolean). CastWidget,(geen items gevonden.)(no items found.)CodeCompletionWidgetZorgt ervoor dat widgets enkel kunnen worden gesloten via de ESC toets of via een muisklik op andere controls.KMakes the widget closable only by ESC key or mouse click on other controls.CodeCompletionWidget SQL Sleutelwoord SQL KeywordCodeCompletionWidgetCodering: Encoding:CollationWidget LC_COLLATE:CollationWidget LC_CTYPE:CollationWidgetLocale:Locale:CollationWidget"Niet gedefinieerd Not definedCollationWidgetDe velden <strong><em>Sortering</em></strong>, <strong><em>Locale</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> zijn onderling uitsluitend, om een sortering correct te gebruiken hoeft u slechts n van deze velden in te stellen.The fields Collation, Locale, LC_COLLATE & LC_CTYPE are mutually exclusive, so you have to set only one of them in order to properly handle a collation.CollationWidget Alt+RAlt+RColorPickerWidgetVensterFormColorPickerWidget>Genereer willekeurige kleur(en)Generate random color(s)ColorPickerWidgetSelecteer kleur Select colorColorPickerWidget Standaardwaarde:Default Value: ColumnWidget&Toepassen&ApplyConfigurationForm&Annuleren&CancelConfigurationFormDe waarden in de huidige sectie zullen worden overschreven! Bent u er zeker van dat u de standaard waarden wilt instellen?tAny modification made until now in the current section will be lost! Do you really want to restore default settings?ConfigurationFormVoorkomen AppearanceConfigurationFormVerbindingen ConnectionsConfigurationForm"Standaard waardenDefaultsConfigurationFormAlgemeenGeneralConfigurationFormPlug-insPlug-insConfigurationFormRelaties RelationshipsConfigurationFormSnippetsSnippetsConfigurationForm,pgModeler ConfiguratiepgModeler ConfigurationConfigurationFormAC verificatieAC verificationConnectionsConfigWidgetToevoegenAddConnectionsConfigWidgetToegelatenAllowConnectionsConfigWidget Auto browseConnectionsConfigWidget"Bladert automatisch door de genoemde database wanneer deze verbinding wordt gebruikt om databases te beheren via de <strong>Beheer</strong> view.xAutomatically browses the named database when using this connection to manage databases on Manage view.ConnectionsConfigWidget*Annuleer aanpassingenCancel editionConnectionsConfigWidget&Client Certificaat:Client Certificate:ConnectionsConfigWidgetClient Sleutel: Client Key:ConnectionsConfigWidget"Verbindingsalias:Connection Alias:ConnectionsConfigWidgetVerbinding DB:Connection DB:ConnectionsConfigWidgetVerbindingen: Connections:ConnectionsConfigWidget4Maak een nieuwe verbindingCreate new connectionConnectionsConfigWidgetJVerwijder de geselecteerde verbindingDelete selected connectionConnectionsConfigWidgetDiffDiffConnectionsConfigWidgetUitDisableConnectionsConfigWidgetJDupliceer de geselecteerde verbinding!Duplicate the selected connectionConnectionsConfigWidgetFPas de geselecteerde verbinding aanEdit selected connectionConnectionsConfigWidgetExporteerExportConnectionsConfigWidgetForceer GSSAPI Force GSSAPIConnectionsConfigWidget4%1 verbinding(en) gevondenFound %1 connection(s)ConnectionsConfigWidget*Volledige verificatieFull verificationConnectionsConfigWidgetAlgemeenGeneralConnectionsConfigWidgetHost/Poort: Host/Port:ConnectionsConfigWidgetImporterenImportConnectionsConfigWidget4Geen verbindingen gevondenNo connections foundConnectionsConfigWidgetWachtwoord: Password:ConnectionsConfigWidgetVereistRequireConnectionsConfigWidget Herroepen Certs:Revoked Certs.:ConnectionsConfigWidget"Root Certificaat:Root Certificate:ConnectionsConfigWidgetSSL Modus: SSL Mode:ConnectionsConfigWidgetSuccessSuccessConnectionsConfigWidgetTestTestConnectionsConfigWidgetWenst u de nieuwe of aan te passen verbinding op te slaan vooraleer verder te gaan?FThere is a connection being created or edited! Do you want to save it?ConnectionsConfigWidgetTimeout:Timeout:ConnectionsConfigWidgetUpdatenUpdateConnectionsConfigWidgetGebruiker:User:ConnectionsConfigWidgetSecond(en) second(s)ConnectionsConfigWidget~/.postgresql/postgresql.crtConnectionsConfigWidget~/.postgresql/postgresql.keyConnectionsConfigWidget~/.postgresql/root.crlConnectionsConfigWidget~/.postgresql/root.crtConnectionsConfigWidget KolomColumnConstraintWidget Kolom:Column:ConstraintWidgetKolommenColumnsConstraintWidget Kolommen die werden ingesloten via relaties kunnen niet manueel worden toegevoegd aan of verwijderd uit de primaire sleutel. Dit soort aanpassingen kan tot fouten leiden. Om een primaire sleutel aan te maken via kolommen die werden ingesloten door relaties, gebruik de volgende opties: identifier veld, attributen & constraints tab-blad of primaire sleutel tab=blad in het relatie-venster.EColumns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form.ConstraintWidget Constraint Type:Constraint Type:ConstraintWidgetUitstelbaar: Deferrable:ConstraintWidgetUitstel: Deferral:ConstraintWidget(Elementen UitsluitenExclude ElementsConstraintWidgetExpressie: Expression:ConstraintWidgetVul-factor: Fill Factor:ConstraintWidgetIndexering: Indexing:ConstraintWidgetEvenaar:Match:ConstraintWidget Geen overerving: No inherit:ConstraintWidget ON DELETE:ConstraintWidget ON UPDATE:ConstraintWidget*Gerefereerde KolommenReferenced ColumnsConstraintWidget Tabel:Table:ConstraintWidgetDit attribuut kan niet worden aangepast eens het object is aangemaakt.void functie(integer, integer, cstring, internal, integet)</em>.The function to be assigned to an encoding conversion must have the following signature: void function(integer, integer, cstring, internal, integer).ConversionWidgetRBug rapport analyze modus is geactiveerd.#Bug report analysis mode activated.CrashHandlerFormCrash Handler Crash HandlerCrashHandlerFormCrash Handler Crash handlerCrashHandlerFormXDatabase model (*.dbm);;Alle bestanden (*.*)'Database model (*.dbm);;All files (*.*)CrashHandlerFormInvoer:Input:CrashHandlerFormLaad rapport Load reportCrashHandlerFormBLaad rapport bestand voor analyzeLoad report file for analysisCrashHandlerForm0Oeps! pgModeler crashte!Oops! pgModeler just crashed!CrashHandlerFormBewaar model Save modelCrashHandlerFormvBewaar het ingevoegde model bestaand op het bestandssysteem.Save the attached model file on the filesystemCrashHandlerFormStack trace Stack traceCrashHandlerForm^We verontschuldigen ons voor wat net gebeurde! Het is overduidelijk dat een ernstige bug dit veroorzaakte. Gelieve het formuleer hieronder in te vullen met een beschrijving van wat u deed vooraleer pgModeler onverwachts afsloot. Dit zal ons helpen om deze bug te corrigeren en de software te verbeteren.We apologize for what happened! It is clear that a nasty bug caused that. Please fill out the form below describing your actions before pgModeler quit unexpectedly. This will help on bug extermination and improve the software.CrashHandlerFormfpgModeler bug rapport (*.bug);;Alle bestanden (*.*)-pgModeler bug report (*.bug);;All files (*.*)CrashHandlerForm...... CsvLoadWidgetVensterForm CsvLoadWidget LadenLoad CsvLoadWidget0Selecteer uitvoerbestandSelect output file CsvLoadWidget SpatieSpace CsvLoadWidget&Leegmaken&ClearCustomSQLWidget&DELETE&DELETECustomSQLWidget&INSERT&INSERTCustomSQLWidget&SELECT&SELECTCustomSQLWidget&UPDATE&UPDATECustomSQLWidget<html><head/><body><p>Wees voorzichtig bij het gebruik van aangepaste SQL. Dit kan leiden tot een verandering van de betekenis van het volledige model wanneer SQL validatie wordt uigevoerd of wanneer het model wordt gexporteerd. Het is ook mogelijk, afhankelijk van de hoeveelheid commando's, dat de prestaties van deze processen voelbaar en negatief kunnen worden benvloed.</p></body></html>-

Use custom commands with extreme caution because you can change the semantics of the entire model when running SQL validation or export processes. Additionally, depending on the amount of commands, those processes can have their performance sensibly degradated.

CustomSQLWidgetNagevoegde SQL Append SQLCustomSQLWidgetZVoeg toe aan het einde van de modeldefinitie."Append at end of model definition.CustomSQLWidget&Plaats de SQL code op het einde van de modeldefinitie. Deze optie afvinken zorgt ervoor dat de SQL wordt ingevoegd na het CREATE DATABASE commando.Append the SQL code at the very end of model definition. Unchecking this will cause the SQL to be appended at the end of CREATE DATABASE command.CustomSQLWidget4Sluit serile kolommen uitExclude serial columnsCustomSQLWidget"Generische DELETEGeneric DELETECustomSQLWidget"Generische INSERTGeneric INSERTCustomSQLWidget"Generische SELECTGeneric SELECTCustomSQLWidget"Generische UPDATEGeneric UPDATECustomSQLWidget2Sluit serile kolommen inInclude serial columnsCustomSQLWidget Voorgevoegde SQL Prepend SQLCustomSQLWidgetZVoeg toe aan het begin van de modeldefinitie.)Prepend at beginning of model definition.CustomSQLWidgetPlaatst een DELETE commando-sjabloon op de huidige positie van de cursor.;Puts an DELETE command template at current cursor position.CustomSQLWidgetPlaatst een INSERT commando-sjabloon op de huidige positie van de cursor.;Puts an INSERT command template at current cursor position.CustomSQLWidgetPlaatst een SELECT commando-sjabloon op de huidige positie van de cursor.;Puts an SELECT command template at current cursor position.CustomSQLWidgetPlaatst een UPDATE commando-sjabloon op de huidige positie van de cursor.;Puts an UPDATE command template at current cursor position.CustomSQLWidgetSQL codeSQL codeCustomSQLWidgetTabel DELETE Table DELETECustomSQLWidgetTabel SELECT Table SELECTCustomSQLWidgetTabel UPDATE Table UPDATECustomSQLWidget&Sluiten&CloseDataManipulationFormL<em>(Limiet: <strong>%1</strong>)</em>%(Limit: %1)DataManipulationForm<strong>OPGEPAST: </strong> Eens toegepast is het niet langer mogelijk om aanpassingen ongedaan te maken! Bent u zeker dat u wilt opslaan?bWARNING: Once commited its not possible to undo the changes! Proceed with saving?DataManipulationFormASCASCDataManipulationFormItem ToevoegenAdd ItemDataManipulationFormDMaak de sorterings-kolomlijst leegClear the order by columns listDataManipulationForm KolomColumnDataManipulationForm Kolom:Column:DataManipulationForm Ctrl+ECtrl+EDataManipulationForm Ctrl+SCtrl+SDataManipulationForm Ctrl+VCtrl+VDataManipulationForm Ctrl+XCtrl+XDataManipulationForm Ctrl+ZCtrl+ZDataManipulationFormDESCDESCDataManipulationFormDatamanipulatieData ManipulationDataManipulationFormDelDelDataManipulationFormXExporteer de resultaten naar een CSV bestandExport results to CSV fileDataManipulationFormF5F5DataManipulationFormFilterexpressieFilter expressionDataManipulationForm(Filter de resultatenFilter the result setDataManipulationForm,%1 object(en) gevondenFound %1 object(s)DataManipulationFormVerberg views Hide viewsDataManipulationFormInsInsDataManipulationFormLimiet in: Limit in:DataManipulationFormbMarkeer de geselecteerde rij als 'te verwijderen'$Mark the selected rows to be deletedDataManipulationFormZVerplaats het geselecteerde item naar benedenMove selected item downDataManipulationFormVVerplaats het geselecteerde item naar bovenMove selected item upDataManipulationForm,Geen objecten gevondenNo objects foundDataManipulationForm&Sortering && LimietOrder && LimitDataManipulationForm0De lijst wordt vernieuwdRefresh listingDataManipulationForm Item Verwijderen Remove ItemDataManipulationForm(Aanpassingen opslaan Save changesDataManipulationFormSchema:Schema:DataManipulationForm Tabel:Table:DataManipulationFormDe geselecteerde tabel bevat geen primary key! Update en delete commando's worden uitgevoerd door alle kolommen als primary key te beschouwen. <strong>OPGEPAST</strong> deze acties kunnen meer dan n rij benvloeden.The selected table doesn't owns a primary key! Updates and deletes will be performed by considering all columns as primary key. WARNING: those operations can affect more than one row.DataManipulationForm<Deze rij is als %1 gemarkeerd.This row is marked to be %1DataManipulationForm6Aanpassingen ongedaan makenUndo modificationsDataManipulationFormData van views kan niet worden aangepast via dit raster, alle operaties zijn uitgeschakeld.]Views can't have their data handled through this grid, this way, all operations are disabled.DataManipulationForm[binaire data] [binary data]DataManipulationForm deletedeleteDataManipulationFormverwijderddeletedDataManipulationForminin DataManipulationForm insertinsertDataManipulationFormingevoegdinsertedDataManipulationForm updateupdateDataManipulationFormaangepastupdatedDataManipulationForm0(niet gevonden, OID: %1)(not found, OID: %1)DatabaseExplorerWidget......DatabaseExplorerWidgetV<strong>PAS OP:</strong> U staat op het punt om de volledige database <strong>%1</strong> te verwijderen! Alle data zal verloren gaan. Bent u zeker dat u verder wilt gaan?CAUTION: You are about to drop the entire database %1! All data will be completely wiped out. Do you really want to proceed?DatabaseExplorerWidgetAdmin. rollen Admin. rolesDatabaseExplorerWidgetUitlijning AlignmentDatabaseExplorerWidget Alt+GAlt+GDatabaseExplorerWidgetAnalyzeer func. Analyze func.DatabaseExplorerWidget"Aantal Argumenten Arg. countDatabaseExplorerWidget2Standaard aantal argumentArg. default countDatabaseExplorerWidget&Standaardargumenten Arg. defaultsDatabaseExplorerWidgetArgumentenmodus Arg. modesDatabaseExplorerWidgetArgumentennamen Arg. namesDatabaseExplorerWidgetArgumententypes Arg. typesDatabaseExplorerWidgetArgumenten ArgumentsDatabaseExplorerWidgetAttribuut AttributeDatabaseExplorerWidgetGedragstype Behavior typeDatabaseExplorerWidgetPer OIDBy OIDDatabaseExplorerWidgetPer waardeBy valueDatabaseExplorerWidgetCachewaarde Cache valueDatabaseExplorerWidgetKan inloggen Can loginDatabaseExplorerWidget Canonische func.Canonical func.DatabaseExplorerWidgetCast type Cast typeDatabaseExplorerWidgetCategorieCategoryDatabaseExplorerWidget(Alle items inklappenCollapses all itemsDatabaseExplorerWidgetSorteerbaar CollatableDatabaseExplorerWidgetSortering CollationDatabaseExplorerWidgetSorteringen CollationsDatabaseExplorerWidgetKolommenColumnsDatabaseExplorerWidgetCommando'sCommandsDatabaseExplorerWidgetCommentaarCommentDatabaseExplorerWidgetCommutator Op.Commutator Op.DatabaseExplorerWidget"VergelijkingstypeComparison typeDatabaseExplorerWidgetVoorwaarde ConditionDatabaseExplorerWidgetConfiguratie ConfigurationDatabaseExplorerWidget"Verbindingslimiet Conn. limitDatabaseExplorerWidgetConstraint ConstraintDatabaseExplorerWidgetMaak DB aan Create DBDatabaseExplorerWidgetMaak rol aan Create roleDatabaseExplorerWidgetCtrl+F6Ctrl+F6DatabaseExplorerWidgetHuidige versie Curr. versionDatabaseExplorerWidget CyclusCycleDatabaseExplorerWidgetData &Grid Data &GridDatabaseExplorerWidgetStandaardDefaultDatabaseExplorerWidgetStandaardwaarde Default valueDatabaseExplorerWidgetUitstel DefermentDatabaseExplorerWidgetUitstelbaar DeferrableDatabaseExplorerWidgetDefinitie DefinitionDatabaseExplorerWidgetDelimiter DelimiterDatabaseExplorerWidgetDoelcoderingDest. encodingDatabaseExplorerWidgetDoeltype Dest. typeDatabaseExplorerWidgetDimensie DimensionDatabaseExplorerWidgetMap DirectoryDatabaseExplorerWidgetBent u er zeker van dat u het object &lt;strong&gt;%1&lt;/strong&gt; &lt;em&gt;(%2)&lt;/em&gt; via &lt;strong&gt;cascade&lt;/strong&gt; wilt verwijderen? Deze actie verwijdert ook alle objecten die afhankelijk zijn van dit object.Do you really want to cascade drop the object %1 (%2)? This action will drop all the other objects that depends on it.DatabaseExplorerWidgetBent u er zeker van dat u de tabel <strong>%1</strong> <em>(%2)</em> via <strong>cascade</strong> wilt verwijderen? Deze actie verwijdert ook alle tabellen die afhankelijk zijn van deze tabel.Do you really want to cascade truncate the table %1? This action will truncate all the tables that depends on it?DatabaseExplorerWidgetBent u zeker dat u het object <strong>%1</strong> <em>%2</em> wilt verwijderen?HDo you really want to drop the object %1 (%2)?DatabaseExplorerWidget|Bent u zeker dat u de tabel <strong>%1</strong> wil truncaten?=Do you really want to truncate the table %1?DatabaseExplorerWidget"Verwijder cascade Drop cascadeDatabaseExplorerWidget Verwijder object Drop objectDatabaseExplorerWidget.Verwijder deze databaseDrop this databaseDatabaseExplorerWidgetElementElementDatabaseExplorerWidgetCoderingEncodingDatabaseExplorerWidgetGencrypteerd EncryptedDatabaseExplorerWidgetEnumeraties EnumerationsDatabaseExplorerWidget EventEventDatabaseExplorerWidgetUitvoeringskost Exec. costDatabaseExplorerWidget UitvoeringsmodusExecution modeDatabaseExplorerWidget*Alle items uitklappenExpands all itemsDatabaseExplorerWidgetExpressie ExpressionDatabaseExplorerWidgetExpressies ExpressionsDatabaseExplorerWidgetVulfactor Fill factorDatabaseExplorerWidgetFilter:Filter:DatabaseExplorerWidgetFinale functie Final func.DatabaseExplorerWidgetAfvuringFiringDatabaseExplorerWidgetVoor elke rij For each rowDatabaseExplorerWidgetVensterFormDatabaseExplorerWidgetFunctietype Func. typeDatabaseExplorerWidgetFunctieFunctionDatabaseExplorerWidget(Behandelende Functie Handler func.DatabaseExplorerWidgetBehandelt type Handles typeDatabaseExplorerWidget HashesHashesDatabaseExplorerWidgetI/O castI/O castDatabaseExplorerWidgetToename IncrementDatabaseExplorerWidgetIndextype Index typeDatabaseExplorerWidgetErft overInheritDatabaseExplorerWidgetOvergerfd InheritedDatabaseExplorerWidget$Initile Vereiste:Ini. conditionDatabaseExplorerWidgetInline Functie Inline func.DatabaseExplorerWidgetInvoerfunctie Input func.DatabaseExplorerWidgetInterne lengteInternal lengthDatabaseExplorerWidgetIntervalstype Interval typeDatabaseExplorerWidgetJoin func. Join func.DatabaseExplorerWidgetLC COLLATE LC COLLATEDatabaseExplorerWidgetLC CTYPELC CTYPEDatabaseExplorerWidgetTaalLanguageDatabaseExplorerWidgetLaatste waarde Last valueDatabaseExplorerWidgetLekdicht Leak proofDatabaseExplorerWidgetLinkse type Left typeDatabaseExplorerWidget LengteLengthDatabaseExplorerWidgetBibliotheekLibraryDatabaseExplorerWidget Gematerialiseerd MaterializedDatabaseExplorerWidgetMax. waarde Max. valueDatabaseExplorerWidgetLid-rollen Member rolesDatabaseExplorerWidgetSamenvoegingenMergesDatabaseExplorerWidgetMin. waarde Min. valueDatabaseExplorerWidgetNaamNameDatabaseExplorerWidgetNegator op. Negator op.DatabaseExplorerWidgetGeen overerving No inheritDatabaseExplorerWidgetNiet nullNot nullDatabaseExplorerWidgetOIDOIDDatabaseExplorerWidgetObjecttype Object typeDatabaseExplorerWidgetOude versie Old versionDatabaseExplorerWidgetBij delete On deleteDatabaseExplorerWidgetBij insert On insertDatabaseExplorerWidgetBij truncate On truncateDatabaseExplorerWidgetBij update On updateDatabaseExplorerWidgetOp. klasse Op. classDatabaseExplorerWidgetOp. klasses Op. classesDatabaseExplorerWidget Operator Familie Op. familyDatabaseExplorerWidgetOperatorOperatorDatabaseExplorerWidget Operator functieOperator func.DatabaseExplorerWidgetOperators OperatorsDatabaseExplorerWidgetUitvoerfunctie Output func.DatabaseExplorerWidgetEigenaarOwnerDatabaseExplorerWidget Bezittende kolom Owner columnDatabaseExplorerWidget OudersParentsDatabaseExplorerWidgetWachtwoordPasswordDatabaseExplorerWidgetMachtigingen PermissionsDatabaseExplorerWidgetPositiePositionDatabaseExplorerWidgetPrecisie PrecisionDatabaseExplorerWidgetPredicaat PredicateDatabaseExplorerWidgetVoorkeur PreferredDatabaseExplorerWidget"OmvangsattributenRange attributesDatabaseExplorerWidget"Ontvangersfunctie Receive func.DatabaseExplorerWidgetRef. columns Ref. columnsDatabaseExplorerWidgetRef. rollen Ref. rolesDatabaseExplorerWidgetRef. tabel Ref. tableDatabaseExplorerWidget,Eigenschappen herladenReload propertiesDatabaseExplorerWidgetHernoemRenameDatabaseExplorerWidgetReplicatie ReplicationDatabaseExplorerWidget&BelemmeringsfunctieRestriction func.DatabaseExplorerWidgetResultaatstype Return typeDatabaseExplorerWidget"Geeft SETOF terug Returns SETOFDatabaseExplorerWidgetRechtse type Right typeDatabaseExplorerWidget RollenRolesDatabaseExplorerWidgetAantal rijen Rows amountDatabaseExplorerWidget SchemaSchemaDatabaseExplorerWidget Beveiligingstype Security typeDatabaseExplorerWidgetZendfunctie Send func.DatabaseExplorerWidgetToon data Show dataDatabaseExplorerWidgetSnippetsSnippetsDatabaseExplorerWidgetSorteeroperatoSort op.DatabaseExplorerWidgetBroncode Source codeDatabaseExplorerWidgetBrontype Source typeDatabaseExplorerWidgetBroncodering Src. encodingDatabaseExplorerWidgetStartwaarde Start valueDatabaseExplorerWidgetStatustype State typeDatabaseExplorerWidget OpslagStorageDatabaseExplorerWidgetSubtypeSubtypeDatabaseExplorerWidget$Subtype diff func.Subtype diff func.DatabaseExplorerWidgetSuperuser SuperuserDatabaseExplorerWidget TabelTableDatabaseExplorerWidgetTablespace TablespaceDatabaseExplorerWidget TransitiefunctieTransition func.DatabaseExplorerWidgetTrigger func. Trigger func.DatabaseExplorerWidgetTrunc. cascadeTrunc. cascadeDatabaseExplorerWidgetTruncateTruncateDatabaseExplorerWidgetVertrouwdTrustedDatabaseExplorerWidgetTypeTypeDatabaseExplorerWidgetTypeattribuutType attributeDatabaseExplorerWidget(Type mod. in functieType mod. in func.DatabaseExplorerWidget0Type mod. buiten functieType mod. out func.DatabaseExplorerWidget TypesTypesDatabaseExplorerWidget UniekUniqueDatabaseExplorerWidgetNiet geloggedUnloggedDatabaseExplorerWidgetUpdatenUpdateDatabaseExplorerWidget ValidatiefunctieValidator func.DatabaseExplorerWidgetGeldigheidValidityDatabaseExplorerWidget WaardeValueDatabaseExplorerWidgetOpgepastWarningDatabaseExplorerWidgetWindowing func. Windows func.DatabaseExplorerWidgetMet OIDs With OIDsDatabaseExplorerWidgetDit is een demonstratie-versie. De data manipulatie functionaliteit is enkel beschikbaar in de volledige versie!lYou're running a demonstration version! The data manipulation feature is available only in the full version!DatabaseExplorerWidget onwaarfalseDatabaseExplorerWidgetwaartrueDatabaseExplorerWidget&Sluiten&CloseDatabaseImportForm&ImportDatabaseImportForm......DatabaseImportForm<strong>OPGEPAST:</strong> U staat op het punt om objecten te importeren in het huidige model! Deze actie zal onherroepbare verandering teweegbrengen, zelfs wanneer kritische problemen opduiken gedurende dit proces. Bent u zeker dat u verder wilt gaan?ATTENTION: You are about to import objects to the current working model! This action will cause irreversible changes to it even in case of critical errors during the process. Do you want to proceed?DatabaseImportFormAlle catalogusqueries plus the broncode van de aangemaakte objecten wordt naar de standaard output (stdout) geprint.eAll catalog queries as well the created objects' source code are printed to standard output (stdout).DatabaseImportFormFLos afhankelijkheden automatisch op"Automatically resolve dependenciesDatabaseImportFormPer OIDBy OIDDatabaseImportFormAnnulerenCancelDatabaseImportForm>Maak de objectselectie ongedaanClear object selectionDatabaseImportForm(Alle items inklappenCollapses all itemsDatabaseImportFormVerbinding: Connection:DatabaseImportFormMaak alle gemporteerde objecten aan in het huidige model en maak geen nieuw model aan.UCreate all imported objects in the current working model instead of create a new one.DatabaseImportFormDatabaseDatabaseDatabaseImportFormDebugmodus Debug modeDatabaseImportFormActiveert het importeren van objecten die werden aangemaakt door uitbreidingen. Algemeen gezien is er geen nood om deze optie aan te vinken tenzij er objecten in de databse leven die onmiddellijk naar objecten van deze categorie refereren.Enables the import of objects created by extensions. Generally there is no need to check this option but if there are objects in the database that directly references this category of objects this mode must be enabled.DatabaseImportFormActiveert het importeren van ingebouwde systeemobjecten. Het is aangeraden om enkel objecten te importeren waarnaar onmiddellijk worden gerefereerd. PAS OP: grote hoeveelheden systeemobjecten importeren kan leiden tot een opgezwollen resultaatsmodel of kan zelfs pgModeler tot een crash leiden omwillen van geheugen- of processor-uitputting.Enables the import of system built-in objects. It's recommend to select only those objects that are directly referenced by the ones to be imported. WARNING: Try to import a huge set of system objects can bloat the resultant model or even crash pgModeler due to memory/cpu overuse.DatabaseImportForm*Alle items uitklappenExpands all itemsDatabaseImportForm6Filter objecten per hun OIDFilter object by it's OIDDatabaseImportFormFilter:Filter:DatabaseImportFormFEr werd(en) %1 database(s) gevondenFound %1 database(s)DatabaseImportForm,Negeer importeerfoutenIgnore import errorsDatabaseImportForm<Importeer uitbreidingsobjectenImport extension objectsDatabaseImportFormTImporteer de objecten in het huidige model#Import objects to the working modelDatabaseImportForm2Importeer systeemobjectenImport system objectsDatabaseImportFormDHet import proces werd afgebroken!Importing process aborted!DatabaseImportFormjHet import proces werd geannuleerd door de gebruiker!#Importing process canceled by user!DatabaseImportFormVHet import proces werd succesvol beindigt!#Importing process sucessfuly ended!DatabaseImportForm2Er werd database gevondenNo databases foundDatabaseImportForm OptiesOptionsDatabaseImportFormUitvoerOutputDatabaseImportForm(Vooruitgangslabel...Progress label...DatabaseImportFormDWillekeurige kleuren voor relatiesRandom colors for relationshipsDatabaseImportForm^Om de identificatie van de links tussen tabellen in grote modellen makkelijker te maken zullen willekeurige kleuren worden gebruikt om de gemporteerde relaties aan te duiden.Random colors will be assigned to imported relationships facilitating the identification of links between tables mainly in large models.DatabaseImportFormbDe objecten op cluster-niveau worden opgehaald...#Retrieving cluster level objects...DatabaseImportForm^De objecten worden van de database opgehaald...#Retrieving objects from database...DatabaseImportForm^De objecten uit schema `%1' worden opgehaald...$Retrieving objects of schema `%1'...DatabaseImportForm.Selecteer alle objectenSelect all objectsDatabaseImportFormInstellingenSettingsDatabaseImportFormDit is een ingebouwd type van PostgreSQL en kan niet worden gemporteerd.?This is a PostgreSQL built-in data type and cannot be imported.DatabaseImportFormDit is een ingebouwd object van pgModeler. Dit object wordt genegeerd indien aangevinkt door de gebruiker.MThis is a pgModeler's built-in object. It will be ignored if checked by user.DatabaseImportForm@pgModeler negeert importeerfouten en zal pogen om zoveel mogelijk objecten aan te maken. Door deze optie aan te vinken zal de importeer-taak niet afbreken bij een fout maar zal een onvolledig model worden aangemaakt. Deze optie creert een log bestand in de tijdelijke map voor pgModeler.pgModeler ignores import errors and will try to create as many as possible objects. By checking this option the import operation will be not aborted but an incomplete model will be constructed. This option generates a log file on pgModeler's temp directory.DatabaseImportForm:Kolommachtigingen aanmaken...Creating columns permissions...DatabaseImportHelper8Object aanmaken `%1' (%2)...Creating object `%1' (%2)...DatabaseImportHelper\Machtigingen aanmaken voor object `%1' (%2)...,Creating permissions for object `%1' (%2)...DatabaseImportHelperNTabel-overervingen worden aangemaakt...Creating table inheritances...DatabaseImportHelperXDe vrijstaande kolommen worden verwijderd...%Destroying unused detached columns...DatabaseImportHelperHet importeren faalde na `%1' pogingen om sommige objecten te her-creeren.5Import failed to recreate some objects in `%1' tries.DatabaseImportHelper0Objecten ophalen... `%1'Retrieving objects... `%1'DatabaseImportHelper>Systeemobjecten ophalen... `%1'!Retrieving system objects... `%1'DatabaseImportHelperHet importeren van de database is voltooid maar er werden enkele fouten gegenereerd, deze werden opgeslagen in het log-bestand `%1'. Dit bestand zal worden verwijderd wanneer u pgModeler afsluit.The database import ended but some errors were generated and saved into the log file `%1'. This file will last until pgModeler quit.DatabaseImportHelperRUpdaten van de relaties voor `%1' (%2)...&Updating relationships of `%1' (%2)...DatabaseImportHelperDObject `%1' (%2) wordt aangemaakt.Creating object `%1' (%2) DatabaseModel4Bezig met laden: `%1' (%2)Loading: `%1' (%2) DatabaseModelU kan slechts `%1' instancies per object type aanmaken in demonstratie-versies! U heeft deze limiet bereikt voor het type `%2'xThe demonstration version can create only `%1' instances of each object type! You've reach this limit for the type: `%2' DatabaseModelAttributen AttributesDatabaseWidgetSortering: Collation:DatabaseWidgetVerbindingen: Connections:DatabaseWidgetStandaardDefaultDatabaseWidget"StandaardobjectenDefault ObjectsDatabaseWidgetCodering: Encoding:DatabaseWidget LC_COLLATE:DatabaseWidget LC_CTYPE:DatabaseWidgetModelauteur: Model Author:DatabaseWidgetOpties:Options:DatabaseWidgetEigenaar:Owner:DatabaseWidgetSchema:Schema:DatabaseWidgetTablespace: Tablespace:DatabaseWidgetSjabloon DB: Template DB:DatabaseWidgetDe velden <strong>LC_COLLATE</strong> en <strong>LC_CTYPE</strong> hebben voorgedefinieerde waarden gebasseerd op het lopende systeem. Deze waarden kunnen vrij worden aangepast indien u dit model naar een andere host wenst te exporteren.The fields LC_COLLATE and LC_CTYPE have pre-configured values based upon the running system. You can freely modify those values if you intend to export the model to another host.DatabaseWidgetGebruik de velden hierboven om de waarden voor standaard attributen die aan nieuwe objecten worden toegewezen, te specifieren. Het veld leeglaten zorgt ervoor dat PostgreSQL zijn standaardwaarden gebruikt bij het exporteren.Use the above fields to specify the default attributes assigned to new objects created on the database model. Leaving a field empty will cause PostgreSQL to use the default values when exporting the model.DatabaseWidgetAttributen Attributes DomainWidget Standaardwaarde:Default Value: DomainWidgetExpressie Expression DomainWidgetExpressie: Expression: DomainWidgetNaamName DomainWidget Naam:Name: DomainWidgetNiet nullNot null DomainWidget...... DonateWidgetr<html><head/><body><p>pgModeler komt tot stand dankzij <span style=" font-style:italic;">een grote inzet om een kwaliteitsvol product te bezorgen</span>. Dit project heeft een niveau van volwassenheid bereikt die nooit was voorzien. Dit alles is het resultaat van de samenwerken tussen de auteur(s) en de <span style=" font-weight:600;">Open Source gemeenschap</span>. <br/><br/>Dit product heeft nog een lange weg af te leggen; met uw hulp kunnen we deze uitdaging aan en kunnen we nieuwe verbeteringen en toevoegingen aan dit product blijven publiceren bij elke release. Als u vertrouwd op pgMOdeler en denkt dat u kan bijdragen, gelieve dan een donatie te maken aan pgModeler!</p></body></html>`

pgModeler is brought to you thanks to a great effort to create and distribute a quality product. This project is reaching out levels of maturity never imagined. All this is the result of a joint work between its author and the Open Source community.

This software has a long way to go yet and with your help we'll keep maintaining the good job and bringing new improvements on each release. If you did like pgModeler and thinks it deserves a contribution please make a donation!

 DonateWidget(Doneer aan pgModelerDonate to pgModeler DonateWidgetVensterForm DonateWidget$Verberg dit widgetHide this widget DonateWidgetIk wil helpen!I want to help! DonateWidgetStijgend AscendingElementsWidgetSortering CollationElementsWidgetSortering: Collation:ElementsWidget Kolom:Column:ElementsWidgetAfdalend DescendingElementsWidgetElementElementElementsWidgetExpressie ExpressionElementsWidgetExpressie: Expression:ElementsWidgetVensterFormElementsWidgetNeeNoElementsWidgetNulls eerst Nulls FirstElementsWidgetNulls eerst Nulls firstElementsWidgetOperatorOperatorElementsWidgetOperator KlasseOperator ClassElementsWidget Operator Klasse:Operator Class:ElementsWidgetOperator: Operator:ElementsWidgetSorteringSortingElementsWidgetSortering:Sorting:ElementsWidgetTypeTypeElementsWidgetJaYesElementsWidget Event:Event:EventTriggerWidget FilterFilterEventTriggerWidgetFunctie: Function:EventTriggerWidgetTag commando Tag commandEventTriggerWidgetTag:Tag:EventTriggerWidgetEen foreign key kan niet worden toegevoegd aan een relatie omdat deze automatisch wordt aangemaakt wanneer deze wordt verbonden!iA foreign key can not be added to a relationship because is created automatically when this is connected! ExceptionEen machtiging refereert naar object `%1' (%2) dat niet in het model kon worden teruggevonden!RA permission is referencing the object `%1' (%2) which was not found in the model! ExceptionDe relatie kan enkel worden omgewisseld door een ander object van dezelfde soort!DA relationship can only be swapped by other object of the same kind! ExceptionEen trigger kan niet naar kolommen refereren wanneer deze gebruikt maakt van de INSTEAD OF modus binnen een UPDATE event!WA trigger cannot make reference to columns when using INSTEAD OF mode and UPDATE event! ExceptionEen viewreferentie moet minstens in een van de volgende SQL scopes worden gebruikt: View Definitie, SELECT-FROM, FROM_WHERE of Na WHERE!xA view reference must be used in at least one these SQL scopes: View Definition, SELECT-FROM, FROM-WHERE or After WHERE! ExceptionEen view trigger kan niet AFTER/BEFORE zijn wanneer deze voor elke rij wordt uitgevoerd!DA view trigger cannot be AFTER/BEFORE when it executes for each row! ExceptionVAllocatie van een object met ongeldig type!'Allocation of object with invalid type! ExceptionEen attribuut kan niet worden toegevoegd aan een kopie of een generalisatierelatie!GAn attribute can not be added to a copy or generalization relationship! ExceptionToewijzijng van een ongeldig objectnaamspatroon aan de relatie `%1'!GAssignement of an invalid object name pattern to the relationship `%1'! Exception`Toewijzing van een object van een ongeldig type!$Assigning object of an invalid type! ExceptionToewijzing van een kolom aan object `%1' (%2) die geen ouder-tabel heeft!IAssignment of a column which has no parent table to the object `%1' (%2)! ExceptionnToewijzing van een functie waarvan de taal ongeldig is!3Assignment of a function which language is invalid! ExceptionToewijzing van een functie waarvan het aantal parameters ongeldig is voor het object `%1' (%2)!RAssignment of a function which parameter count is invalid to the object `%1' (%2)! ExceptionToewijzing van een functie waarvan het terugkeertype verschilt van `%1'!BAssignment of a function which return type is different from `%1'! ExceptionToewijzing van een functie met ongeldige parametertype(s) aan object `%1' (%2)!OAssignment of a function with invalid parameter(s) type(s) to object `%1' (%2)! ExceptionToewijzing van een functie met een ongeldige terugkeerwaarde aan object `%1' (%2)!FAssignment of a function with invalid return type to object `%1' (%2)! ExceptionToewijzing van een minimumwaarde die groter is dan de maximumwaarde van de sequentie!VAssignment of a minimum value to the sequence which is greater than the maximum value! ExceptionjToewijzen van een naam die ongeldige karakters bevat!7Assignment of a name which contains invalid characters! ExceptionToewijzing van een naam die de maximumlengte van 63 karakters overtreed!GAssignment of a name which length exceeds the maximum of 63 characters! ExceptionToewijzing van een niet-bestaande eigenaarskolom aan de sequentie `%1'!>Assignment of a nonexistent owner column to the sequence `%1'! ExceptionToewijzing van een niet-gealloceerde kolom aan het object `%1' (%2)!9Assignment of a not allocated column to object `%1' (%2)! ExceptionToewijzing van een niet-gealloceerde functie aan het object `%1' (%2)!;Assignment of a not allocated function to object `%1' (%2)! ExceptionToewijzing van een niet-gealloceerde schema aan het object `%1' (%2)!9Assignment of a not allocated schema to object `%1' (%2)! ExceptionnToewijzing van een null-vermeerdering aan de sequentie!5Assignment of a null increment value to the sequence! ExceptionlToewijzing van een null type aan het object `%1' (%2)!.Assignment of a null type to object `%1' (%2)! ExceptionToewijzing van een waarde met grotere precisie dan de toegewezen locatie!>Assignment of a precision greater than the length of the type! ExceptionToewijzing van een primary key aan een tabel die reeds over een primary key beschikt!=Assignment of a primary key to a table which already has one! ExceptionPoging to toewijzing van een pseudo-type als het type van een kolom!6Assignment of a pseudo-type to the type of the column! ExceptionToewijzing van een schema aan de sequentie die verschilt van het schema van de eigenaars-tabel!XAssignment of a schema to the sequence which differs from the schema of the owner table! ExceptiontToewijzing van een tweede definitie-expressie aan de view!9Assignment of a second definition expression to the view! ExceptionToewijzing van een startwaarde aan de sequentie die de omvang extrapoleerd als gedefinieerd door de minimum- en maximumwaarden!sAssignment of a start value to the sequence which is extrapolating the range defined by minimum and maximum values! ExceptionToewijzing van een waarde aan een ongeldige verbindingsparameter!9Assignment of a value to an invalid connection parameter! ExceptionbToewijzing van een lege map aan object `%1' (%2)!5Assignment of an empty directory to object `%1' (%2)! ExceptionlToewijzing van een ongeldige expressie aan het object!2Assignment of an invalid expression to the object! ExceptionToewijzing van een ongeldig object aan `%1' (%2)! Het toegewezen object moet van het type `%3' zijn.WAssignment of an invalid object to `%1' (%2)! The assigned object must be of type `%3'. ExceptionToewijzing van een ongeldige precisie aan het type time, timestamp of interval. De precisie moet in dit geval kleiner dan of gelijk zijn aan 6!Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! ExceptionToewijzing van een ongeldig strategy- of supportnummer aan een operatorklasse element!NAssignment of an invalid strategy/support number to an operator class element! ExceptionToewijzing van een ongeldige waarde aan een van de sequentie-attributen!AAssignment of an invalid value to one of the sequence attributes! ExceptionToewijzing van een object dat reeds aan een andere tabel toehoort!>Assignment of an object that already belongs to another table! ExceptionToewijzing van een operatie wiens inputtypehoeveelheid ongeldig is voor een aggregatiefunctie!RAssignment of an operator which input type count is invalid to aggregate function! ExceptionToewijzing van een operator wiens argumententypes ongeldig zijn!>Assignment of an operator which types of arguments is invalid! ExceptionToewijzing van een eigenaarskolom aan de sequentie `%1' die aan geen enkele tabel gerelateerd is!TAssignment of an owner column to the sequence `%1' that is not related to any table! ExceptionToewijzing van toegevoegde of voorgevoegde SQL aan een ongeldig object!=Assignment of appended or prepended SQL to an invalid object! ExceptionvToewijzing van een sorteringsobject wiens type ongeldig is!5Assignment of collation object which type is invalid! ExceptionRToewijzing van een lege DTD bestandsnaam!"Assignment of empty DTD file name! ExceptionfToewijzingen van een lege XML buffer aan de parser!)Assignment of empty XML buffer to parser! ExceptionXToewijzing van een lege naam aan een object!&Assignment of empty name to an object! ExceptionrToewijzing van een lege naam aan een tabel-terugkeertype!.Assignment of empty name to table return type! ExceptionfToewijzing van een lege naam aan de DTD declaratie!0Assignment of empty name to the DTD declaration! ExceptionjToewijzing van een ongeldig uitlijning aan type `%1'!-Assignment of invalid alignment to type `%1'! ExceptionnToewijzing van een ongeldige configuratie aan het type!0Assignment of invalid configuration to the type! ExceptiondToewijzing van een ongeldig element aan type `%1'!+Assignment of invalid element to type `%1'! ExceptionToewijzing van een ongeldige maximumwaarde aan de operatielijst!5Assignment of invalid maximum size to operation list! ExceptionEen ongeldige naam werd toegewezen aan de tabel gegenereerd op basis van een N-N relatie!HAssignment of invalid name to the table generated from N-N relationship! Exception`Toewijzing van een ongeldig type aan het object!)Assignment of invalid type to the object! ExceptionjToewijzing van een taalobject wiens type ongeldig is!4Assignment of language object which type is invalid! ExceptionvToewijzing van een niet-gealloceerde SQL commandoresultaat!/Assignment of not allocated SQL command result! ExceptionTToewijzing van een niet-gealloceerde taal!%Assignment of not allocated language! ExceptionVToewijzing van een niet-gealloceerd object!#Assignment of not allocated object! ExceptionToewijzing van een niet-gealloceerde tabel aan object `%1' (%2)!6Assignment of not allocated table to object `%1' (%2)! ExceptiondToewijzing van null-cachewaarden aan de sequentie!/Assignment of null cache value to the sequence! ExceptiontToewijzing van een eigenaarsobject wiens type ongeldig is!1Assignment of owner object which type is invalid! ExceptionToewijzing van een eigenaarstabel die niet tot dezelfde eigenaar behoort als de sequentie `%1'!WAssignment of owner table which does not belong to the same owner of the sequence `%1'! ExceptionToewijzing van een eigenaarstabel die zich niet in hetzelfde schema bevindt als de sequentie `%1'!OAssignment of owner table which is not in the same schema as the sequence `%1'! ExceptionhToewijzing van een eigenaar aan een ongeldig object!)Assignment of owner to an invalid object! ExceptionToewijzing van een machtiging die niet compatibel is met het type waarnaar wordt verwezen door de machtiging!VAssignment of privilege incompatible with the type of object referenced by permission! ExceptionnToewijzing van een schemaobject wiens type ongeldig is!2Assignment of schema object which type is invalid! ExceptionToewijzing van een systeem-gereserveerde naam aan het object `%1' (%2)!;Assignment of system reserved name to the object `%1' (%2)! ExceptiontToewijzing van een tablespaceobject met een ongeldig type!2Assignment of tablespace object with invalid type! ExceptionRToewijzing van een tablespace aan een constraint wiens type ongeldig is! Om tot een tablespace te behoren moet een constraint een primary key of een unieke sleutel zijn!Assignment of tablespace to a constraint which type is invalid! To belong to a tablespace the constraint must be a primary key or unique! ExceptionlToewijzing van een tablespace aan een ongeldig object!.Assignment of tablespace to an invalid object! ExceptionToewijzing van een waarde aan een ongeldig optietype van een rol!6Assignment of value to an invalid option type on role! ExceptionROp dit moment ondersteunt pgModeler de aanmaak van primary keys waarvan sommige kolomen door relatie-verbindingen worden gegenereerd nog niet. Om primary keys met dit feature aan te maken kan u gebruik maken van het veld 'Identifier' of het 'Primary key' tab-blad in het relatie-bewerkingsvenster!At the moment pgModeler does not support the creation of primary keys which some columns were generated by relationship connection. To create primary keys with this feature you can use the field `Identifier' or the tab `Primary key' on relationship editing form! ExceptionPoging tot verbinden zonder dat de configuratieparameters zijn gedefinieerd!;Attempt to connect without define configuration parameters! ExceptionPoging tot het starten van een verbinding die reeds verbonden is!1Attempt to start a connection already stablished! ExceptionSorteringsmethodes moeten worden aangemaakt en minstens LC_COLLATE en LC_CTYPE gedefinieerd hebben!TCollations must be created at least with attributes LC_COLLATE and LC_CTYPE defined! ExceptionConstraint triggers kunnen enkel worden uitgevoerd NA events en voor elke rij!JConstraint triggers can only be executed on AFTER events and for each row! ExceptionNConstraints zoals primary key, foreign key of unique key moeten minstens een kolom bevatten! Voor foreign keys moeten ook de gerefereerde kolommen worden geselecteerd!Constraints like primary key, foreign key or unique must have at least one column related to them! For foreign keys must be selected, in addition, the referenced columns! ExceptionjDe kopie-relatie tussen tabellen `%1' en `%2' kan niet worden aangemaakt omdat de eerste reeds attributen kopieert van `%3'! Tabellen kunnen over slechts een kopie-tabel beschikken!Copy relationship between tables `%1' and `%2' cannot be done because the first one already copies attributes from `%3'! Tables can have only one copy table! ExceptionDe variabele `%1' kon niet worden toegewezen aan de filter van de event trigger! Op dit moment ondersteunt PostgreSQL enkel de `TAG' variabele!uCould not assign the variable `%1' to event trigger's filter. Currently, PostgreSQL supports only the `TAG' variable! ExceptionEr kon geen verbinding worden gemaakt met de database. Het bericht is: `%1'9Could not connect to the database. Message returned: `%1' ExceptionHet SQL commando kon niet worden uitgevoerd. Het teruggekeerde bericht is: `%1':Could not execute the SQL command. Message returned: `%1' Exception:Het standaardinstellingsbestand `%1' kon niet worden gevonden. Kijk na of dit bestand bestaat om de standaardinstellingen terug te zetten en probeer opnieuw!yCould not find the default settings file `%1'! To restore default settings check the existence of the file and try again! ExceptionHet datababase modelbestand `%1' kon niet worden geladen. Kijk de foutenstack na voor meer details. Probeer `pgmodeler-cli --fix-model' uit te voeren op het model om de bestandsstructuur te corigeren indien dit nodig zou zijn.Could not load the database model file `%1'. Check the error stack to see details. Try to run `pgmodeler-cli --fix-model' in order to correct the structure of the file if that is the case. ExceptionDe plugin `%1' kon niet worden geladen van de bibliotheek `%2'! De plugin manager antwoordde met: `%3'^Could not load the plugin `%1' from the library `%2'! Message returned by plugin manager: `%3' Exception,De operatie `%1' op `%2' kon niet worden voltooid met de data op rij `%3'! Alle aanpassingen werden ongedaan gemaakt. ** Gerapporteerde fout ** %4Could not perform the `%1' operation on `%2' using the data on row `%3'! All changes were rolled back. ** Returned error ** %4 ExceptionEr trad een fout op tijdens het interpreteren van de XML buffer op lijn %1, kolom %2. De parser antwoordde met: %3. %4aError while interpreting XML buffer at line %1 column %2. Message generated by the parser: %3. %4 ExceptionEvent triggerfunctie moet geschreven zijn in een taal die verschilt van SQL!DEvent trigger function must be coded in any language other than SQL! ExceptionDe identifier-relatie kan niet worden aangemaakt voor een zelf-relatie, relaties van het type n-n, kopie or generalisatie!zIdentifier relationship can not be created for a self relationship, relationships of the type n-n, copy or generalization! ExceptionInvoegen van een rol die reeds in de rollenlijst van de machtiging aanwezig is!LInsertion of a role which already exists in the role list of the permission! ExceptionInvoegen van een element dat reeds bestaat in de elementenlijst!>Insertion of element which already exists in the element list! ExceptionZInvoeging van een leeg commando aan de regel!'Insertion of empty command to the rule! ExceptionInvoegen van een ongeldig item in de attributenlijst van het type!=Insertion of invalid item in the attributes list of the type! ExceptionInvoegen van een ongeldig item in de enumeratielijst van het type!?Insertion of invalid item in the enumerations list of the type! ExceptionInvoegen van een item dat reeds bestaat in de attributenlijst van het type!JInsertion of item which already exists in the attributes list of the type! ExceptionInvoegen van een item dat reeds bestaat in de enumeratielijst van het type!LInsertion of item which already exists in the enumarations list of the type! ExceptionOngeldige object id wissel-operatie! De database zelf, tablespaces en rollen kunnen geen ids omwisselen!lInvalid object id swapping operation! The database itself, tablespaces or roles cannot have the ids swapped! ExceptionOngeldige object id wissel-operatie! De betrokken objecten zijn dezelfde!HInvalid object id swapping operation! The objects involved are the same! ExceptionOngeldig gebruik van een view-referentie als volledige SQL definitie! De toegewezen referentie moet een expressie zijn!fInvalid use of a view reference as whole SQL definition! The assigned reference must be an expression! Exception"Het is onmodelijk om een zelf-generalisatie/kopieer-relatie aan te maken! De tabel kan niet van zichzelf erven of zijn eigen attributen kopieren!zIs not possible to create a self generalization/copy relationship! The table can not inherit or copy their own attributes! ExceptionGewone referenties (SELECT-FROM, FROM-WHERE, Na WHERE) kunnen niet worden gemixt met referenties die gebruikt worden als SQL definitie!~It is not possible mix ordinary references (SELECT-FROM, FROM-WHERE, After WHERE) with references used as view SQL definition! ExceptionHet is niet mogelijk om arrays van domeinen of sequenties (dimensie >= 1) aan te maken! Dit feature is nog niet aanwezig in PostgreSQL!}It is not possible to create arrays of domains or sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! ExceptionxIncorrect gevormde un-escape waarde op rij `%1', kolom `%2'!2Malformed unescaped value on row `%1' column `%2'! Exception^Mixen van niet-compatibele DBMS export-modussen: `negeer object duplicaten', `verwijder database' of `verwijder objecten' kan niet samen worden gebruikt met `simuleer export'!Mixing incompatibles DBMS export modes: `ignore object duplications', `drop database' or `drop objects' cannot be used with `simulate export'! ExceptionMixen van niet-compatibele DROP opties: `verwijder database' en `verwijder objecten' kunnen niet samen worden gebruikt!fMixing incompatibles DROP options: `drop database' and `drop objects' cannot be used at the same time! Exception\Het verkregen object is van een ongeldig type!'Obtaining an object of an invalid type! ExceptionTTypes met ongeldige hoeveelheid verkregen!&Obtaining types with invalid quantity! ExceptionEen functie met ongeldige configuratie wordt gebruikt door het object `%1' (%2)!MOne function with invalid configuration is been used by the object `%1' (%2)! Exception,Een of meerdere objecten werden als ongeldig gemarkeerd en werde automatisch verwijderd omdat deze naar kolommen refereerden die werden ingesloten door relaties die niet langer bestaan omwille van het ontkoppelen van de relatie of het uitsluiten van zulke gegenereerde kolommen!One or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! ExceptionEen of meerdere plugin werden niet geactiveerd omwille van fouten gedurende het laadproces! Kijk de exception stack na voor meer details.|One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. ExceptionEnkel constraint triggers kunnen uitstelbaar zijn of naar andere tabellen refereren!FOnly constraint triggers can be deferrable or reference another table! ExceptionEnkel operator-families die gebruik maken van `btree' als indexeringsmethod kunnen worden aanvaard als operatorklasse element!eOnly operator families which uses `btree' as indexing method are accepted by operator class elements! ExceptionEr werd een operatie uitgevoerd op een niet-verbonden verbinding!(Operation on connection not established! ExceptionEen operatie werd uitgevoerd op een niet-gealloceerd element in de boomstructuur! De XML parser buffer moet eerst worden geladen en geinterpreteerd zodat deze boomstructuur kan worden gegenereerd!Operation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! ExceptionVOperatie met een ongeldige olement id `%1'!*Operation with an invalid element id `%1'! ExceptionEr werd een operatie uitgevoerd op een element dat niet bestaat in de huidig geladen elementen-boomstructuur!ROperation with element which does not exists in the element tree currently loaded! ExceptionPOperatie op een niet-gealloceerd object!$Operation with object not allocated! Exception\Operatie met object(en) van een ongeldig type!2Operation with object(s) which type(s) is invalid! ExceptionROperatie met een niet-gealloceerd object!(Operation with unallocated tree element! ExceptionReferentieredundantie gedetecteerd doordat de rol `%1' refereert naar rol `%2'!PReference redundancy detected by having the role `%1' referencing the role `%2'! ExceptionReferentie naar een kolom van een tuple dat nog niet werd geinitializeerd (tuple-navigatie nog niet gestart)!^Reference to a column of a tuple which was not yet initialized (tuple navigation not started)! ExceptionEen referentie naar een kolom in de objectentabel met een ongeldige index!>Reference to a column of the objects table with invalid index! ExceptionReferentie naar een kolom van een tuple met een ongeldige index!2Reference to a column of tuple with invalid index! Exception~Referentie naar een kolom van een tuple met een ongeldige naam!1Reference to a column of tuple with invalid name! ExceptionReferentie naar een kolom wiens index buiten de capaciteit van de kolomlijst ligt!LReference to a column which index is out of the capacity of the column list! ExceptionReferentie naar een commando wiens index buiten de limieten van de commandolijst ligt!EReference to a command which index is out of the command list bounds! ExceptionEen referentie naar een functie id die niet compatibel is met de configuratie van het gebruiker gedefinieerde type!YReference to a function id which is incompatible with the user define type configuration! ExceptiondReferentie naar een functie met een ongeldig type!*Reference to a function with invalid type! ExceptionReferentie naar een label wiens index buiten de limieten ligt van de label-lijst!>Reference to a label which index is out of labels list bounds! ExceptionEen referentie naar een parameter met een index die buiten de limieten ligt van de parameterlijst!IReference to a parameter which index is out of the parameter list bounds! ExceptionReferentie naar een rol wiens index buiten de limieten van de rollelijst ligt!;Reference to a role which index is out of role list bounds! ExceptionEen referentie naar een rij in de objectentabel met een ongeldige index!;Reference to a row of the objects table with invalid index! ExceptionReferentie naar een tuple met een ongeldige index of het resultaat is leeg (geen tuples)!NReference to a tuple with an invalid index or the result is empty (no tuples)! ExceptionReferentie naar een argument van de operator met een ongeldig type!;Reference to an argument of the operator with invalid type! ExceptionReferentie naar een argument met een index die buiten de limieten ligt van de argumentenlijst!DReference to an argument which index is out of argument list bounds! ExceptionReferentie naar een attribuut met een index die buiten de limieten van de attributenlijst ligt!KReference to an attribute which index is out of the attributes list bounds! ExceptionReferentie naar een element wiens index buiten de limiet van de elementenlijst valt!BReference to an element which index is out of element list bounds! ExceptionReferentie naar een enumeratie met een index buiten de limieten van de enumeratielijst!OReference to an enumeration which index is out of the enumerations list bounds! Exception|Een referentie naar een event die niet tot de trigger behoort!8Reference to an event which does not belongs to trigger! ExceptionReferentie naar een ongeldige kleuren-id `%1' voor element `%2'!7Reference to an invalid color id `%1' for element `%2'! Exception`Referentie naar een ongeldige kopie-tabel optie!*Reference to an invalid copy table option! ExceptionReferentie naar een ongeldige id van objectnaamspatronen voor de relatie `%1'!HReference to an invalid object name pattern id on the relationship `%1'! ExceptionZReferentie naar een ongeldig machtigingstype!'Reference to an invalid privilege type! ExceptionLReferentie naar een ongeldig rol-type!"Reference to an invalid role type! ExceptionReferentie anar een object wiens index buiten de limiet van de objectenlijst valt!@Reference to an object which index is out of object list bounds! ExceptionfReferentie naar een operator met een ongeldig type!+Reference to an operator with invalid type! ExceptionReferentie naar een gebruikersgedefinieerd type dat niet in het model bestaat!DReference to an user-defined data type that not exists in the model! ExceptionReferentie naar een datatype met een index die buiten de capaciteit van de datatype lijst ligt!MReference to data type with an index outside the capacity of data types list! ExceptionbVerwijzing naar een object van een ongeldig type!&Reference to object with invalid type! ExceptionZVerwijdering van een niet-gealloceerd object!#Removal of an object not allocated! ExceptiondVerwijdering van een object van een ongeldig type!&Removing an object of an invalid type! Exception(De INSTEAD OF modus kan niet worden gebruikt voor triggers die aan tabellen toehoren! Dit is enkel beschikbaar voor triggers die aan views toehoren!pThe INSTEAD OF mode cannot be used on triggers that belongs to tables! This is available only for view triggers! ExceptionDe INSTEAD OF modus kan niet worden gebruikt voor view triggers die voor elk statement worden uitgevoerd!UThe INSTEAD OF mode cannot be used on view triggers that executes for each statement! ExceptionHet TRUNCATE event kan enkel worden gebruikt wanneer de trigger uitvoert voor elk statement en aan een tabel toebehoort!hThe TRUNCATE event can only be used when the trigger executes for each statement and belongs to a table! ExceptionDe kolom `%1' kan niet toegewezen worden aan de trigger `%2' omdat deze tot verschillende ouder-tabellen behoren!gThe column `%1' cannot be assigned to the trigger `%2' because they belongs to different parent tables! ExceptionDe kolom `%1' kan niet naar de oudertabel `%2' als data type verwijzen!EThe column `%1' cannot reference it's parent table `%2' as data type! ExceptionDe configuratie van de relatie `%1' creeert een redundantie tussen de relaties `%2'. Redundanties van identifiers of generalisatie/kopie-relaties zijn niet geldig omdat deze kunnen leiden tot het incorrect verspreiden van kolommen en dit kan het model inconsistent maken!The configuration of the relationship `%1' generates a redundancy between the relationships `%2'. Redundancy on identifier or generalization/copy relationships are not accepted since they result in incorrect column spreading making the model inconsistent! ExceptionHet aanmaken van de relatie `%1' tussen de tabellen `%2' en `%3' kan niet worden voltooid omdat deze geen primary key bevatten. Indien de relatie van het type n-n is, moeten beide tabellen over een primary key beschikken!The creation of the relationship `%1' between the table `%2' and `%3' can not be done because one does not have a primary key. If the relationship is of the type n-n both tables must have primary keys! ExceptionHet exportproces faalde door een fout die werd gegenereerd door PostgreSQL tijdens het uitvoeren van een SQL commando. Voor meer informatie over de fout, gelieve de exception stack na te kijken! ** Uitgevoerde SQL commando: ** %1The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 ExceptionDe uitbreiding `%1' is geregistreerd als een data type, het 'behandeld data type' attribuut kan niet worden aangepast!jThe extension `%1' is registered as a data type and cannot have the attribute `handles datatype' modified! ExceptionDe fk relatie `%1' kan niet worden aangemaakt omdat de foreign key die deze relatie weergeeft niet werd aangemaakt op tabel `%2'!tThe fk relationship `%1' cannot be created because the foreign-key that represents it was not created on table `%2'! ExceptionDe functie `%1' kan enkel symboolattributen en een dynamische bibliotheek configureren waneer de taal is ingesteld als zijnde 'C'. In alle andere gevallen moet u broncode specifieren die de functie definieert in het DBMS!The function `%1' can have the attributes symbol and dynamic library configured only if the language is set to C. For all other cases you must specify a source code that defines it in the DBMS! ExceptionDDe functie `%1' kan geen broncode bevatten als definitie omdat de taal is ingesteld als 'C'. Gebruik het attributensymbool en dynamische bibliotheek in de plaats!The function `%1' can not get a source code as a definition because its language is set to C. Use the attributes symbol and dynamic library instead! ExceptionDe groep `%1' kan niet worden opgebouwd in de groependeclaratie-block (%2)!EThe group `%1' can not be built in the groups declaration block (%2)! ExceptionDe groep `%1' kan niet worden opgebouwd omdat dit reeds werd uitgevoerd in een vorige block!SThe group `%1' can not be built once more because this was done in previous blocks! Exception|De groep `%1' kan niet worden opgebouwd zonder kind-elementen!BThe group `%1' can not be built without possessing child elements! ExceptionZDe groep `%1' werd reeds eerder gedeclareerd!1The group `%1' has already been declared earlier! ExceptionhDe groep `%1' werd gedeclareerd maar niet opgebouwd!/The group `%1' has been declared but not built! ExceptionDe groep `%1' werd opgebouwd maar is niet gedeclareerd in de groependeclaratie-block (%2)!OThe group `%1' was built but not declared in the groups declaration block (%2)! ExceptionHet toevoegen van parameter `%1' is niet mogelijk omdat de functie `%2' reeds een parameter met deze naam bevat!The insertion of the parameter `%1' will not be possible because there is another parameter with same name in the function `%2'! ExceptionHet invoegen van de rol `%1' is onmogelijk omdat deze reeds wordt gerefereerd door rol `%2'!eThe insertion of the role `%1' is not possible because this is already being referenced by role `%2'! ExceptionHet invoegen van tabel-terugkeertype `%1' is niet mogelijk omdat er reeds een terugkeer-type met deze naam bestaat in `%2'!The insertion of the table return type `%1' will not be possible because there is another return type with the same name in the `%2'! ExceptionDe nieuwe configuratie van de functie maakt het object `%1' (%2) niet langer gevalideerd! Om de nieuwe configuratie in voege te doen treden moet u de relatie tussen het beinvloedde object en de functie ongedaan maken.The new configuration of the function invalidates the object `%1' (%2)! In this case it is needed to undo the relationship between the affected object and function in order to the new configuration to take effect! Exception`Het object `%1' (%2) bestaat reeds op `%3' (%4)!1The object `%1' (%2) already exists on `%3' (%4)! ExceptionHet object `%1' (%2) kan niet worden aangemaakt omdat het niet aan een schema is toegewezen!UThe object `%1' (%2) can not be created because its not being assigned to any schema! ExceptionHet object `%1' (%2) kan niet worden verwijderd omdat het beschermd is!@The object `%1' (%2) can not be deleted because it is protected! ExceptionHet object `%1' (%2) kan niet worden bewerkt of verwijderd omdat het automatisch werd ingesloten via een relatie! Indien het object een attribuut of een constraint is moeten de bewerkingen worden uitgevoerd via het Relatie bewerk-venster.The object `%1' (%2) can not be edited or deleted because it was automatically included through a relationship! If the object is an attribute or constraint the modifications must be done on the relationship editing form. ExceptionHHet object `%1' (%2) kan niet worden gemanipuleerd omdat dit een gereserveerd object is in PostgreSQL! Dit object bestaat enkel als referentie in het databasemodel!The object `%1' (%2) can not be manipulated because it is reserved to PostgreSQL! This object is present in the database model only as a reference! ExceptionHet object `%1' (%2) kan niet worden verwijderd omdat object `%3' (%4), dat aan `%5' (%6) toehoort, ernaar verwijst!uThe object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4) that belongs to `%5' (%6)! ExceptionHet object `%1' (%2) kan niet worden verwijderd omdat object `%3' (%4) ernaar verwijst![The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4)! ExceptionHet object `%1' (%2) kan niet worden behandeld omdat sommige nodige velden niet werden ingesteld! Gelieve de verplichte velden in te voeren om het object correct aan te kunnen maken of passen.The object `%1' (%2) can't be handled because some needed fields are not set! Please, make sure to fill at least the requires fields in order to properly create or update the object. ExceptionHet object `%1' (%2) kan niet worden toegewezen omdat het reeds bestaat in het container-object `%3'!eThe object `%1' (%2) cannot be assigned because there is already exists in the container object `%3'! ExceptionHet object `%1' (%2) kan niet naar zichzelf verwijzen! Deze operatie is niet toegelaten voor dit type object!fThe object `%1' (%2) cannot reference itself! This operation is not permitted for this kind of object! Exceptionhet object `%1' (%2) heeft een inconsistente SQL of XML definitie!Hide the object which represents the tag assigned to the tableGeneralConfigWidgetVerberg het tabel-gedeelte dat triggers, indexes en regels voorsteltEHide the portion of table which represent triggers, indexes and rulesGeneralConfigWidgetPLicht de huidige lijn onder de cursor op$Highlight lines at cursor's positionGeneralConfigWidgetUitlichtkleurHighlighted line colorGeneralConfigWidget InchesInchesGeneralConfigWidgetLandschap LandscapeGeneralConfigWidgetLedger (432 x 279 mm)GeneralConfigWidgetLinkermarge Left marginGeneralConfigWidget Links:Left:GeneralConfigWidgetLegal (216 x 356 mm)GeneralConfigWidgetLetter (216 x 279 mm)GeneralConfigWidget@Achtergrondkleur van lijnnummersLine numbers' background colorGeneralConfigWidget>Lettertypekleur van lijnnummersLine numbers' font colorGeneralConfigWidgetMilimeters MilimetersGeneralConfigWidgetLVerplaats canvas bij muis in de hoeken$Move canvas by keep mouse on cornersGeneralConfigWidget,Open in bestandsbeheerOpen in file managerGeneralConfigWidget"Taakgeschiedenis:Operation history:GeneralConfigWidgetOpties:Options:GeneralConfigWidgetOrintatie: Orientation:GeneralConfigWidgetPaginamarges: Page Margins:GeneralConfigWidgetPapier:Paper:GeneralConfigWidget PixelsPixelsGeneralConfigWidgetPortretPortraitGeneralConfigWidgetPrint raster Print gridGeneralConfigWidget&Print paginanummersPrint page numbersGeneralConfigWidgetPrintenPrintingGeneralConfigWidgetPrinten && CodePrinting && CodeGeneralConfigWidgetRechtermarge Right marginGeneralConfigWidgetRechts:Right:GeneralConfigWidgetBBehoud de laatste positie en zoom'Save and restore last position and zoomGeneralConfigWidgetPVersimpel creatie van grafische objecten&Simplify creation of graphical objectsGeneralConfigWidgetGrootte:Size:GeneralConfigWidgetVerplaatst het canvas wanneer de cursor zich op de rand van het canvas bevindt<br/> <strong>Handler Functie:</strong> <em>taal_handler_functie()</em><br/> <strong>Validatie Functie:</strong> <em>void functie(oid)</em><br/> <strong>Inline Functie:</strong> <em>void functie(internal)</em>DThe functions to be assigned to the language should have, respectively, the following signatures:

Handler Function: language_handler function()
Validator Function: void function(oid)
Inline Function: void function(internal)LanguageWidgetVertrouwd:Trusted:LanguageWidget"Validatiefunctie:Validator Func.:LanguageWidget (Demo) (Demo) MainWindow <strong>PAS OP:</strong> Het model <strong>%1</strong> is niet gevalideerd! Het is aangeradem om het model te valideren vooraleer u het diff process start. Dit zorgt voor een correcte analyse en het correct genereren van de diff tussen het model en de database! WARNING: The model %1 is invalidated! Before run the diff process it's recommended to validate in order to correctly analyze and generate the difference between the model and a database! MainWindow <strong>PAS OP:</strong> Het model <strong>%1</strong> is niet gevalideerd! Vooraleer u het export proces start is het aangeraden om de validatie uit te voeren. Dit zorgt ervoor dat de objecten correct op de database server kunnen worden aangemaakt! WARNING: The model %1 is invalidated! Before run the export process it's recommended to validate in order to correctly create the objects on database server! MainWindow <strong>PAS OP: </strong> Het model <strong>%1</strong> is niet gevalideerd! Het is aangeraden om het model te valideren vooraleer dit op te slaan om ervoor te zorgen dat u een consistent model behoudt, anders is het modelijk dat het gegenereerde bestand onvolledig is en manuele correcties zal vereissen om het opnieuw te kunnen laden! WARNING: The model %1 is invalidated! It's recommended to validate it before save in order to create a consistent model otherwise the generated file will be broken demanding manual fixes to be loadable again! MainWindow&Sluiten&Close MainWindow&Bewerken&Edit MainWindow&Exporteer&Export MainWindow&Bestand&File MainWindow &Laden&Load MainWindow&Operaties &Operations MainWindowOp&slaan&Save MainWindow&Weergave&Show MainWindow&Validatie &Validation MainWindow6(geen voorbeelden gevonden)(no samples found) MainWindowFBekijk de lijst van geladen plugins!Access the list of loaded plugins MainWindow>Lijn objecten uit op het rasterAlign objects position to grid MainWindow Alt+BAlt+B MainWindow Alt+OAlt+O MainWindow Alt+VAlt+V MainWindowAnnulerenCancel MainWindowdEr werden veranderingen gedetecteerd tussen de papier- en margedefinities van het model die ertoe kunnen leiden dat de objectenn foutief worden geprint. Wenst u te printen met deze nieuwe instellingen? Om de standaardinstellingen te gebruiken, klik op 'Nee' of klik 'Annuleren' om het printen af te breken.Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. MainWindowMenu leegmaken Clear Menu MainWindowSluit dit modelClose current model MainWindowBevestiging Confirmation MainWindowControlsControls MainWindowZHet database modelbestand `%1' kon niet worden geladen. Kijk de error stack na voor details. U kan proberen het probleem te corrigeren om het bestand weer laadbaar te maken.Could not load the database model file `%1'. Check the error stack to see details. You can try to fix it in order to make it loadable again. MainWindow Ctrl+-Ctrl+- MainWindow Ctrl+0Ctrl+0 MainWindow Ctrl+=Ctrl+= MainWindow Ctrl+FCtrl+F MainWindow Ctrl+GCtrl+G MainWindow Ctrl+HCtrl+H MainWindow Ctrl+LCtrl+L MainWindowCtrl+N MainWindow Ctrl+OCtrl+O MainWindow Ctrl+PCtrl+P MainWindow Ctrl+QCtrl+Q MainWindow Ctrl+SCtrl+S MainWindowCtrl+Shift+H Ctrl+Shift+H MainWindowCtrl+Shift+I Ctrl+Shift+I MainWindowCtrl+Shift+S Ctrl+Shift+S MainWindow Ctrl+WCtrl+W MainWindow Ctrl+YCtrl+Y MainWindow Ctrl+ZCtrl+Z MainWindowXDatabase model (*.dbm);;Alle bestanden (*.*)'Database model (*.dbm);;All files (*.*) MainWindow*Databasemodel printenDatabase model printing MainWindow DesignDesign MainWindow.Design databasemodellenDesign database models MainWindow$Voer diff toch uit Diff anyway MainWindow DoneerDonate MainWindow@Bewerk de pgModeler instellingenEdit pgModeler settings MainWindow^De uitvoer wacht op <strong>%1</strong> taak...2Executing pending %1 operation... MainWindowTKlapt het hoofdmenu uit in klassieke modus+Expands the main menu bar in classical mode MainWindowToch exporteren Export anyway MainWindowzExporteer het huidig geopende model in verschillende modussen2Export the current opened model in different modes MainWindowF1F1 MainWindowF10F10 MainWindowF12F12 MainWindowF4F4 MainWindowZoek Object Find Object MainWindowCorrigeer model Fix model MainWindowAlgemeenGeneral MainWindow8Help pgModeler via donering!Help pgModeler by donating! MainWindow"Verberg hoofdmenuHide main menu MainWindowVerbergt de hoofdmenu en verplaats de actie naar een afgescheiden actie@Hides the main menu bar and put the action on a separated action MainWindowImporteert een bestaande database in een nieuw model (Reverse Engineering);Import existing database to new model (reverse engineering) MainWindowLaad model Load model MainWindow2Laad recent geopend modelLoad recently opened model MainWindowHoofdmenu Main menu MainWindow BeheerManage MainWindow4Beheer bestaande databasesManage existent databases MainWindow NieuwNew MainWindowNieuw model New model MainWindowHEr is een nieuwe versie beschikbaar!New version found! MainWindowO&bjectenO&bjects MainWindowPluginsPlugins MainWindow$Rapporteer een bug Report a bug MainWindow$Sla '%1' op als...Save '%1' as... MainWindowAlles opslaanSave all MainWindowToch opslaan Save anyway MainWindowModel opslaan Save model MainWindow6Tijdelijke modellen opslaanSaving temp. models MainWindowToon uitgeklapt Show expanded MainWindowRaster tonen Show grid MainWindow&Toon modeloverzichtShow the model overview MainWindow,Toon pagina-delimitersShow the page delimiters MainWindowDe demonstratieversie kan slechts n databasemodel instantie aanmaken!KThe demonstration version can create only `one' instance of database model! MainWindownDeze actie opent een browservenster! Wilt u verdergaan?PAS OP:</strong> De gegenereerde diff is klaar om gexporteerd te worden! Eens gestart zal dit proces onherroepelijke veranderingen aanbrengen aan de database. Bent u zeker dat u wilt verdergaan? WARNING: The generated diff is ready to be exported! Once started this process will cause irreversible changes on the database. Do you really want to proceed?ModelDatabaseDiffFormDiff &Toepassen &Apply diffModelDatabaseDiffForm&Sluiten&CloseModelDatabaseDiffForm&Genereer &GenerateModelDatabaseDiffForm-- Er werden geen verschillen gedetecteerd tussen het model en de database. -->-- No differences were detected between model and database. --ModelDatabaseDiffForm......ModelDatabaseDiffForm00ModelDatabaseDiffFormx<html><head/><body><p>Objecten die zijn aangeduid met <span style=" font-weight:600;">ALTER</span> kunnen mogelijkerwijs niet worden aangepast tenzij de gedetecteerde verschillen in de attribute liggen die kunnen worden aangepast via een ALTER commando; in alle andere gevallen zal geen actie worden ondernomen of, indien 'Forceer het heraanmaken van objecten' is aangevinkt, zal het object worden verwijderd en heraangemaakt.</p></body></html>k

Objects marked with an ALTER may not be effectively changed unless that the differences detected are in attributes that can be modified through ALTER commands otherwise no operationwill be performed or, if the force recreation is checked, the object will be dropped and created again.

ModelDatabaseDiffFormDiff toepassen Apply diffModelDatabaseDiffFormAnnulerenCancelModelDatabaseDiffFormAanpassingen:Changes:ModelDatabaseDiffFormzVergelijkt het model met de invoerdatabase en genereerd een diff die op die laatste wordt toegepast. <strong>PAS OP:</strong> deze modus veroorzaakt onherroepelijke veranderingen in de database en in geval van falen wordt de originele structuur niet hersteld, zorg ervoor dat u een backup hebt vooraleer u verdergaat. Compares the model and the input database generating a diff and applying it directly to the latter. WARNING: this mode causes irreversible changes on the database and in case of failure the original structure is not restored, so make sure to have a backup before proceed.ModelDatabaseDiffFormVergelijkt het model en de invoerdatabase en slaat het verschil op in een SQL bestand voor later gebruik.YCompares the model and the input database storing the diff in a SQL file for later usage.ModelDatabaseDiffFormBevestiging ConfirmationModelDatabaseDiffFormVerbinding: Connection:ModelDatabaseDiffFormDatabase cluster-niveau objecten zoals rollen en tablespaces zullen niet worden verwijderd.NDatabase cluster level objects like roles and tablespaces will not be dropped.ModelDatabaseDiffFormDatabase: Database:ModelDatabaseDiffFormDiffDiffModelDatabaseDiffFormDiff voorbeeld Diff PreviewModelDatabaseDiffFormDiff modus Diff modeModelDatabaseDiffFormHet diff proces is gepauzeerd. Wachten op een actie van de gebruiker...+Diff process paused. Waiting user action...ModelDatabaseDiffFormRHet diff proces werd succesvol beindigd!Diff process sucessfully ended!ModelDatabaseDiffFormBDrop of trunceer in cascade modus Drop or truncate in cascade modeModelDatabaseDiffFormFoutencode <strong>%1</strong> trad op en werd genegeerd. De export gaat voort.IError code %1 found and ignored. Proceeding with export.ModelDatabaseDiffFormExporteerExportModelDatabaseDiffFormBestand:File:ModelDatabaseDiffFormVoor DROP commando's worden objecten die afhankelijk zijn van het object dat verwijderd wordt, ook verwijderd. Voor het TRUNCATE commando worden tabellen die gelinkt zijn aan de te trunceren tabel ook getrunceerd. <strong>LET OP:</strong> deze optie kan objecten benvloeden die niet in het uitvoer- of diff-voorbeeld opgenomen zijn."For DROP command, the objects that depends on an object to be dropped will be deleted as well. For TRUNCATE command, tables that are linked to a table to be truncated will be truncate too. NOTE: this option can affect more objects than listed in the output or diff preview.ModelDatabaseDiffFormHForceer het heraanmaken van objectenForce recreation of objectsModelDatabaseDiffFormHNegeer fouten omwille van duplicatenIgnore duplicity errorsModelDatabaseDiffForm,Negeer importeerfoutenIgnore import errorsModelDatabaseDiffFormGenegeerde objecten (systeemobjecten of objecten waarvan SQL is uitgeschakeld)2Ignored objects (system ones or with sql disabled)ModelDatabaseDiffFormNegeer fouten die worden gegenereerd door duplicate objecten gedurende het exporteren van de diff naar de database.SIgnores errors generated by duplicated objects when exporting the diff to database.ModelDatabaseDiffFormImporterenImportModelDatabaseDiffForm<Importeer uitbreidingsobjectenImport extension objectsModelDatabaseDiffForm2Importeer systeemobjectenImport system objectsModelDatabaseDiffForm.Behoudt clusterobjectenKeep cluster objectsModelDatabaseDiffFormLBehoudt de machtigingen van het objectKeep object's permissionsModelDatabaseDiffFormBehoudt de naam van de doeldatabase wanneer deze verschilt van de databasenaam in het model.pNo command to rename the destination database will be generated even the model's name differ from database name.ModelDatabaseDiffForm8Er zijn geen operaties meer.No operations left.ModelDatabaseDiffFormJObjecten die aangemaakt moeten wordenObjects to be createdModelDatabaseDiffFormJObjecten die verwijderd moeten wordenObjects to be droppedModelDatabaseDiffForm`De operatie werd geannulleerd door de gebruiker. Operation cancelled by the user.ModelDatabaseDiffFormUitvoerOutputModelDatabaseDiffFormZet de versie waarvoor de diff wordt gegenereerd expliciet zelf. Standaard wordt dezelfde versie gebruikt als de invoerdatabase.wOverride the PostgreSQL version when generating the diff. The default is to use the same version as the input database.ModelDatabaseDiffFormdMachtigingen die reeds op databaseobjecten zijn toegepast zullen behouden blijven. De machtigingen die door het model worden gespecifieerd zullen worden toegepast op de database.zPermissions already set on database objects will be kept.The ones configured on the model will be applied to the database.ModelDatabaseDiffFormfObjecten die mogelijkerwijs aangepast moeten wordenPossible objects to be changedModelDatabaseDiffForm(Behoudt databasenaamPreserve database nameModelDatabaseDiffFormDiff belijken Preview diffModelDatabaseDiffForm\Het proces werd afgebroken omwille van fouten!Process aborted due to errors!ModelDatabaseDiffForm(Vooruitgangslabel...Progress label...ModelDatabaseDiffFormPHercreeer enkel niet-aanpasbare objecten"Recreate only unmodifiable objectsModelDatabaseDiffFormRHergebruik sequenties op serile kolommen!Reuse sequences on serial columnsModelDatabaseDiffFormLSQL Code (*.sql);;Alle bestanden (*.*)!SQL code (*.sql);;All files (*.*)ModelDatabaseDiffForm$Sla diff op als...Save diff as...ModelDatabaseDiffFormvDe diff wordt opgeslagen in het bestand <strong>%1</strong>'Saving diff to file %1ModelDatabaseDiffForm0Selecteer uitvoerbestandSelect output fileModelDatabaseDiffFormSerile kolommen worden geconverteerd naar integers en hun standaardwaarde wordt ingesteld als een functieaanroep naar <strong>nextval(sequentie)</strong>. Normaal gezien wordt een nieuwe sequentie aangemaakt voor elke serile kolom maar deze optie aanvinken zorgt ervoor dat sequenties die de naam van de kolom gebruiken worden hergebruikt in plaats van verwijderd.6Serial columns are converted to integer and having the default value changed to nextval(sequence) function call. By default, a new sequence is created for each serial column but checking this option sequences matching the name on column's default value will be reused and will not be dropped.ModelDatabaseDiffFormInstellingenSettingsModelDatabaseDiffFormStaplabel... Step label...ModelDatabaseDiffForm(Gebruikt PostgreSQL:Use PostgreSQL:ModelDatabaseDiffFormJWachten op het starten van de taak...Waiting process to start...ModelDatabaseDiffForm&Sluiten&CloseModelExportForm&Exporteer&ExportModelExportForm......ModelExportFormAnnulerenCancelModelExportFormVerbinding: Connection:ModelExportFormDBDBModelExportFormDatabase serverDatabase serverModelExportFormVerwijder:Drop:ModelExportFormFoutencode <strong>%1</strong> trad op en werd genegeerd. De export gaat voort.IError code %1 found and ignored. Proceeding with export.ModelExportFormExporteer model Export modelModelExportForm,Exporteer model als...Export model as...ModelExportFormDHet export proces werd afgebroken!Exporting process aborted!ModelExportFormjHet export proces werd geannuleerd door de gebruiker!#Exporting process canceled by user!ModelExportFormVHet export proces werd succesvol beindigt!#Exporting process sucessfuly ended!ModelExportFormHet model pagina per pagina exportern genereert bestanden met de suffix <strong>_p[n]</strong> waarbij <strong>n</strong> de pagina id is. Zorg ervoor dat de huidige gebruiker schrijf-machtiging heeft in de uitvoermap.Exporting the model page by page will generate files with a _p[n] suffix where n is the page id. Check if the current user has write permission on output folder.ModelExportFormBestand:File:ModelExportFormIndien <strong>DB</strong> aangevinkt is, zal pgModeler de database verwijderen indien deze reeds in de server bestaat. Indien <strong>Objecten</string> is aangevinkt zal pgModeler DROP commando's toevoegen aan de objecten waarvoor SQL is ingeschakeld. <strong>PAS OP:</strong> deze optie kan tot dataverlies leiden, zorg ervoor dat u een recente backup kan terugplaatsen.6If DB is checked pgModeler will destroy the database if already exists on the server. When Objects is checked pgModeler will execute the DROP command attached to SQL-enabled objects. WARNING: this option leads to data loss so make sure to have a backup first.ModelExportForm0Negeer object-duplicatenIgnore object duplicityModelExportFormJModel export wordt genitialiseerd...Initializing model export...ModelExportFormUitvoerOutputModelExportForm"Pagina per pagina Page by pageModelExportForm|De PostgreSQL versie waarvoor SQL code moet worden gegenereerdPostgreSQL `%1' server ontdekt. PostgreSQL `%1' server detected.ModelExportHelperPostgreSQL versie-detectie werd overschreven. Versie `%1' wordt gebruikt.De export naar het DBMS begint.Starting export to DBMS.ModelExportHelperRProberen om database `%1' te verwijderen.Trying to drop database `%1'.ModelExportHelper&Sluiten&Close ModelFixForm&Correctie&Fix ModelFixForm...... ModelFixForm<html><head/><body><p>[pgmodeler-cli kon niet worden gevonden]</p></body></html>G

[pgmodeler-cli not found error]

 ModelFixForm<Blader naar pgmodeler-cli toolBrowse for pgmodeler-cli tool ModelFixFormHet tool <strong>%1</strong> kon niet worden gevonden in <strong>%2</strong>. Het correctieprocess kan niet verder gaan! Gelieve uw pgModeler installatie na te kijken of het pad naar het tool manueel in te stellen.Could not locate %1 tool on %2. The fix process can't continue! Please check pgModeler installation or try to manually specify the command below. ModelFixForm,Corrigeer modelbestandFix model file ModelFixForm$Correctiepogingen: Fix tries: ModelFixFormIn sommige gevallen kan het correctieproces niet alle objecten herstellen en zijn manuele correcties via een tekstverwerker vereist. <strong>LET OP:</strong> relaties kunnen mogelijkerwijs hun configuratie verliezen, zoals aangepaste punten- en lijn-kleur.In some cases the fix process will fail to restore all objects within the model demanding manual fixes by changing the file on a text editor. NOTE: relationships may lost their graphical configuration like custom points and line color. ModelFixFormInvoerbestand: Input file: ModelFixFormJLaad gecorrigeerde model na voltoongLoad fixed model when finish ModelFixForm*ModelcorrectiebestandModel file fix ModelFixFormUitvoerbestand: Output file: ModelFixForm.Selecteer invoerbestandSelect input file ModelFixForm0Selecteer uitvoerbestandSelect output file ModelFixFormHet gespecifieerde bestand is niet het pgModeler command line tool (pgmodeler-cli).JThe specified file is not the pgModeler command line tool (pgmodeler-cli). ModelFixFormJWachten op het starten van de taak...Waiting process to start... ModelFixForm@pgModeler command line tool (%1) pgModeler command line tool (%1) ModelFixFormpgmodeler-cli:pgmodeler-cli: ModelFixFormH(het model werd nog niet opgeslagen)(model not saved yet)ModelNavigationWidget......ModelNavigationWidgetSluit model Close modelModelNavigationWidgetVensterFormModelNavigationWidgetVolgende model Next modelModelNavigationWidgetVorige modelPrevious modelModelNavigationWidget......ModelObjectsWidget11ModelObjectsWidgetVolgens IDBy IDModelObjectsWidgetAnnulerenCancelModelObjectsWidgetAlles Wissen Clear AllModelObjectsWidget(Alle items inklappenCollapses all itemsModelObjectsWidgetEscEscModelObjectsWidget*Alle items uitklappenExpands all itemsModelObjectsWidgetFilter:Filter:ModelObjectsWidget$Verberg dit widgetHide this widgetModelObjectsWidgetIDIDModelObjectsWidget Lijst List viewModelObjectsWidgetModelobjecten Model ObjectsModelObjectsWidget NieuwNewModelObjectsWidget ObjectObjectModelObjectsWidget:Object-overzichtsconfiguratieObjects view configurationModelObjectsWidgetOuder Object Parent ObjectModelObjectsWidgetOuder Type Parent TypeModelObjectsWidgetKeer terugReturnModelObjectsWidgetSelecteerSelectModelObjectsWidgetSelecteer Alles Select AllModelObjectsWidgetBoomstructuur Tree viewModelObjectsWidgetTypeTypeModelObjectsWidgetModeloverzichtModel overviewModelOverviewWidget&Annuleer&CancelModelRestorationForm&Herstel&RestoreModelRestorationFormDatabaseDatabaseModelRestorationFormrHoudt de tijdelijke modellen bij indien recuperatie faalt4Keep temporary models in case of restoration failureModelRestorationFormModelherstelModel restorationModelRestorationFormpgModeler werd niet correct afgesloten en sommige modellen waren nog steeds geladen. Klik op <strong>Herstel</strong> om deze mogellen te heropenen of <strong>Annuleer</strong> om het herstel af te breken.pgModeler was not closed properly in a previous execution and some models were still being edited. Click Restore to reopen the models or Cancel to abort the restoration.ModelRestorationFormpgModeler zal proberen om de geselecteerde modellen te herstellen. Indien dit niet lukt blijven deze staan. Deze optie dient als laatste redmiddel om een database model te recupereren. Tijdelijke modellen zullen blijven staan totdat de applicatie wordt afgesloten. Dit betekent dat de gebruiker moet proberen deze manueel te recupereren vooraleer pgModeler af te sluiten.?pgModeler will try to recover the selected models but will not destroy them in case of loading failure. This option serves as a last resort in order to try to recover the database model. Temporary models will last until the application is closed so the user must try to manually recover the files before exit pgModeler.ModelRestorationForm^De operatie werd geannuleerd door de gebruiker.Operation canceled by the user.ModelValidationHelperrEr zijn fouten! SQL validatie zal niet worden uitgevoerd.>There are pending errors! SQL validation will not be executed.ModelValidationHelper......ModelValidationWidget00ModelValidationWidgetf<em>Het hierboven vermeldde object werd aangemaakt door een relatie. Verander het naamspatroon van de genererende relatie. Dit probleem kan niet automatisch worden verholpen!</em>The above object was created by a relationship. Change the name pattern on it's generator relationship. Fix will not be applied!ModelValidationWidgetAutodetecteer AutodetectModelValidationWidgetAnnulerenCancelModelValidationWidgetDAnnuleer de lopende SQL validatie.&Cancel the SQL validation in progress.ModelValidationWidgetWijzig de aanmaak-volgorde voor twee objecten door hun ids om te wisselen?Change the creation order for two objects by swapping their idsModelValidationWidgetLeegmakenClearModelValidationWidget:Validatieresultaten leegmakenClear validation resultsModelValidationWidgetrConflicterende object: <strong>%1</strong> <em>(%2)</em>.6Conflicting object: %1 (%2).ModelValidationWidget Ctrl+SCtrl+SModelValidationWidget\Het database model werd succesvol gevalideerd.&Database model successfully validated.ModelValidationWidgetFouten: het model zal niet worden opgeslagen zolang er validatiefouten zijn.BErrors: model will not be saved while there are validation errors.ModelValidationWidgetEscEscModelValidationWidgetVensterFormModelValidationWidget$Verberg dit widgetHide this widgetModelValidationWidget OptiesOptionsModelValidationWidget"PostgreSQL versiePostgreSQL versionModelValidationWidgetLBezig met het verwerken van object: %1Processing object: %1ModelValidationWidget~Refererende object: <strong>%1</strong> <em>(%2)</em> [id: %3].%1 (%2) [id: %3].ModelValidationWidgetLRelatie: <strong>%1</strong> [id: %2].+Relationship: %1 [id: %2].ModelValidationWidgetfDe SQL commando's worden uitgevoerd op de server...!Running SQL commands on server...ModelValidationWidgetSQL Validatie:SQL Validation:ModelValidationWidgetSQL validatie faalde omwille van de volgende fouten. <strong>LET OP:</strong><em> Deze fouten ontkrachten het model niet maar kunnen <strong>export</strong> en <strong>diff</strong> benvloeden.</em>SQL validation failed due to error(s) below. NOTE: These errors does not invalidates the model but may affect operations like export and diff.ModelValidationWidgetHet object <strong>%1</strong> <em>(%2)</em> [id: %3] wordt door <strong>%4</strong> object(en) gerefereerd vr zijn aanmaak.The object %1 (%2) [id: %3] is being referenced by %4 object(s) before its creation.ModelValidationWidget>Het object <strong>%1</strong> <em>(%2)</em> [id: %3]%4 refereerd naar kolommen aangemaakt door <strong>%5</strong> relatie(s) maar wordt vr deze aangemaakt.The object %1 (%2) [id: %3]%4 is referencing columns created by %5 relationship(s) but is created before them.ModelValidationWidgetHet object <strong>%1</strong> <em>(%2)</em> heeft een naam die conflicteerd met de naam van <strong>%3</strong> andere objecten.qThe object %1 (%2) has a name that conflicts with %3 object's name(s).ModelValidationWidgetDe relatie <strong>%1</strong> [id: %2] is in een permanente ongeldige staat en moet worden herplaats.mThe relationship %1 [id: %2] is in a permanent invalidation state and needs to be relocated.ModelValidationWidgetXProbeer de validatieinformatie te verhelpen.3Try to apply a fix on the selected validation info.ModelValidationWidgethProbeer om de gerapporteerde problemen te verhelpen.#Try to resolve the reported issues.ModelValidationWidgetVa&lideer Va&lidateModelValidationWidget|Let op: dit voorkomt niet dat het model kan worden opgeslagen..Warnings: does not prevents model to be saved.ModelValidationWidget(geen objecten) (no objects) ModelWidget"90 (horizontaal)90° (horizontal) ModelWidget90 (vertikaal)90° (vertical) ModelWidget.90 + 90 (horizontaal)90° + 90° (horizontal) ModelWidget*90 + 90 (vertikaal)90° + 90° (vertical) ModelWidget<strong>OPGELET:</strong> Het databasemodel is beschermd! Operaties die het zouden kunnen aanpassen zijn uitgeschakeld!jATTENTION: The database model is protected! Operations that could modify it are disabled! ModelWidget<strong>PAS OP:</strong> Een relatie verwijderen kan onherroepbare ongeldigheden veroorzaken in andere objecten en ervoor zorgen dat deze objecten ook worden verwijderd. Bent u er zeker van dat u wenst verder te gaan?CAUTION: Remove a relationship can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? ModelWidget<strong>PAS OP:</strong> Meerdere objecten in n keer verwijderen kan onherroepbare ongeldigheden veroorzaken in andere objecten binnen het model en ervoor zorgen dat deze objecten ook worden verwijderd. Bent u zeker dat u verder wenst te gaan?CAUTION: Remove multiple objects at once can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? ModelWidget<strong>PAS OP:<strong> U staat op het punt om objecten te verwijderen in cascade modus, dit betekent dat ook objecten die niet geselecteerd zijn verwijderd kunnen worden. Bent u zeker dat u wilt verdergaan?CAUTION: You are about to delete objects in cascade mode which means more objects than the selected will be dropped too. Do you really want to proceed? ModelWidgetNVoeg een nieuw object toe aan het modelAdd a new object in the model ModelWidgetrWenst u alle afhankelijken van de geselecteerde objecten ook te kopiren? Dit minimalizeert het verbreken van referenties wanneer gekopieerde objecten in een ander model worden geplakt.Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. ModelWidget Alt+QAlt+Q ModelWidget Alt+SAlt+S ModelWidgetNieuw lijn Break line ModelWidget&Eigenaar veranderen Change owner ModelWidgetConstraints Constraints ModelWidgetConverteerConvert ModelWidget2Converteer naar sequentieConvert to sequence ModelWidget.Converteer naar serieelConvert to serial ModelWidgetKopieerCopy ModelWidget Ctrl+ACtrl+A ModelWidget Ctrl+CCtrl+C ModelWidget Ctrl+ECtrl+E ModelWidget Ctrl+VCtrl+V ModelWidget Ctrl+XCtrl+X ModelWidgetAangepaste SQL Custom SQL ModelWidgetKnippenCut ModelWidgetDelDel ModelWidget"Verwijder cascade Del. cascade ModelWidgetVerwijderenDelete ModelWidget<Afhankelijkheden && VerwijzersDeps && Referrers ModelWidgetSchakel SQL uit Disable SQL ModelWidgetBent u zeker dat u de relatie wilt converteren naar een intermediaire tabel?JDo you really want to convert the relationship into an intermediate table? ModelWidgetBent u er zeker van dat u het geselecteerde object wenst te verwijderen?1Do you really want to delete the selected object? ModelWidget,Machtigingen aanpassenEdit permissions ModelWidgetLBewerk de eigenschappen van het objectEdit the object properties ModelWidgetSchakel SQL in Enable SQL ModelWidgetF2F2 ModelWidget^Bezig met het genereren van XML voor: `%1' (%2)Generating XML for: `%1' (%2) ModelWidgetOvererving Inheritance ModelWidget>Het databasemodel wordt geladenLoading database model ModelWidget$Meer op meer (n-n)Many to Many (n-n) ModelWidget*Verplaats naar schemaMove to schema ModelWidget NieuwNew ModelWidget0Niet alle objecten werden in het model geplakt omwille van fouten die werden gegenereerd gedurende dit proces. Kijk de error-stack na voor meer details!zNot all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! ModelWidget"Een op meer (1-n)One to Many (1-n) ModelWidget Een-op-een (1-1)One to One (1-1) ModelWidgetOpen relatieOpen relationship ModelWidgetPlakkenPaste ModelWidgetVBezig met het plakken van object: `%1' (%2)Pasting object: `%1' (%2) ModelWidgetJBezig met het plakken van objecten...Pasting objects... ModelWidgetEigenschappen Properties ModelWidgetBeschermProtect ModelWidgetNBeschermt object(en) tegen aanpassingen%Protects object(s) from modifications ModelWidgetSnelQuick ModelWidgetTSnelle actie voor het geselecteerde object$Quick action for the selected object ModelWidget@Snelle hernoeming van het objectQuick rename the object ModelWidgetRelaties Relationships ModelWidget Verwijder punten Remove points ModelWidgetHernoemRename ModelWidgetDHet databasemodel wordt opgeslagenSaving database model ModelWidgetSelecteerSelect ModelWidgetSelecteer Alles Select all ModelWidget$Selecteer kinderenSelect children ModelWidget^Selecteert alle grafische objecten in het model.Selects all the graphical objects in the model ModelWidgetZet tagSet tag ModelWidgetShift+Del Shift+Del ModelWidget(Toon object broncodeShow object source code ModelWidgetBronSource ModelWidgetBroncode Source code ModelWidget SpatieSpace ModelWidgetTabellenTables ModelWidgetHet cascade verwijderen kwam enkele problemenen tegen tijdens het uitvoeren! Sommige objecten konden niet worden verwijderd of geregistreerd in de actie-geschiedenis! Gelieve de error-stack na te kijken voor meer details.The cascade deletion found some problems when running! Some objects could not be deleted or registered in the operation's history! Please, refer to error stack for more details. ModelWidgetBescherming af Unprotect ModelWidgetZBezig met het valideren van object: `%1' (%2)Validating object: `%1' (%2) ModelWidgetZoom: %1% Zoom: %1% ModelWidgetn`%1' informatie voor object `%2' wordt verwerkt (%3)...,Processing `%1' info for object `%2' (%3)...ModelsDiffHelperBDiff informatie wordt verwerkt...Processing diff infos...ModelsDiffHelperFObject `%1' wordt behandeld (%2)...Processing object `%1' (%2)...ModelsDiffHelperLObject `%1' wordt overgeslagen (%2)...Skipping object `%1' (%2)...ModelsDiffHelper00NewObjectOverlayWidget11NewObjectOverlayWidget22NewObjectOverlayWidget33NewObjectOverlayWidget44NewObjectOverlayWidget55NewObjectOverlayWidget88NewObjectOverlayWidget99NewObjectOverlayWidgetAANewObjectOverlayWidgetAggregator AggregateNewObjectOverlayWidgetBBNewObjectOverlayWidgetCCNewObjectOverlayWidgetCastCastNewObjectOverlayWidgetSortering CollationNewObjectOverlayWidget KolomColumnNewObjectOverlayWidgetConstraint ConstraintNewObjectOverlayWidgetConversie ConversionNewObjectOverlayWidgetKopieerCopyNewObjectOverlayWidgetDDNewObjectOverlayWidget DomeinDomainNewObjectOverlayWidgetEENewObjectOverlayWidgetEvent Trigger Event TriggerNewObjectOverlayWidgetUitbreiding ExtensionNewObjectOverlayWidgetFFNewObjectOverlayWidgetVensterFormNewObjectOverlayWidgetFunctieFunctionNewObjectOverlayWidgetGGNewObjectOverlayWidgetHHNewObjectOverlayWidgetIINewObjectOverlayWidget IndexIndexNewObjectOverlayWidgetOvererving InheritanceNewObjectOverlayWidgetJJNewObjectOverlayWidgetKKNewObjectOverlayWidgetLLNewObjectOverlayWidgetTaalLanguageNewObjectOverlayWidgetMMNewObjectOverlayWidgetMeer-op-meer Many-to-manyNewObjectOverlayWidgetOONewObjectOverlayWidgetEen-op-meer One-to-manyNewObjectOverlayWidgetEen-op-een One-to-oneNewObjectOverlayWidgetOp. Klasse Op. ClassNewObjectOverlayWidgetOp. Familie Op. FamilyNewObjectOverlayWidgetOperatorOperatorNewObjectOverlayWidgetPPNewObjectOverlayWidgetMachtigingen PermissionsNewObjectOverlayWidgetQQNewObjectOverlayWidgetRRNewObjectOverlayWidgetRolRoleNewObjectOverlayWidget RegelRuleNewObjectOverlayWidgetSSNewObjectOverlayWidget SchemaSchemaNewObjectOverlayWidgetSequentieSequenceNewObjectOverlayWidgetTTNewObjectOverlayWidget TabelTableNewObjectOverlayWidgetTablespace TablespaceNewObjectOverlayWidgetTagTagNewObjectOverlayWidgetTekst boxTextboxNewObjectOverlayWidgetTriggerTriggerNewObjectOverlayWidgetTypeTypeNewObjectOverlayWidgetUUNewObjectOverlayWidgetVVNewObjectOverlayWidgetViewViewNewObjectOverlayWidgetWWNewObjectOverlayWidgetXXNewObjectOverlayWidgetYYNewObjectOverlayWidgetZZNewObjectOverlayWidgetLeegmakenClearNumberedTextEditor LadenLoadNumberedTextEditorLSQL Code (*.sql);;Alle bestanden (*.*)!SQL file (*.sql);;All files (*.*)NumberedTextEditorAfhankelijken DependenciesObjectDepsRefsWidgetBSluit indirecte afhankelijken uitExclude indirect dependenciesObjectDepsRefsWidgetIDIDObjectDepsRefsWidget6Neem indirecte afhankele opInclude indirect referencesObjectDepsRefsWidget ObjectObjectObjectDepsRefsWidgetTAfhankelijken & referenties van het object"Object's dependencies & referencesObjectDepsRefsWidgetOuder Object Parent ObjectObjectDepsRefsWidgetOuder Type Parent TypeObjectDepsRefsWidgetReferenties ReferencesObjectDepsRefsWidgetDit object bestaat niet langer. Het lijsten van afhankelijken en referenties is uitgeschakeld.ZThis object does not exists anymore. The dependencies and references listing are disabled.ObjectDepsRefsWidgetTypeTypeObjectDepsRefsWidget......ObjectFinderWidget&HoofdlettergevoeligCase SensitiveObjectFinderWidgetLeegmakenClearObjectFinderWidgetAlles Wissen Clear AllObjectFinderWidget8Maakt de zoekresultaten leegClears the search resultsObjectFinderWidget0Definieert de zoekfilterDefines the search filterObjectFinderWidget&Exacte Overeenkomst Exact MatchObjectFinderWidget FilterFilterObjectFinderWidgetZoekFindObjectFinderWidgetVensterFormObjectFinderWidgetP<strong>%1</strong> object(en) gevonden.$Found %1 object(s).ObjectFinderWidget$Verberg dit widgetHide this widgetObjectFinderWidgetIDIDObjectFinderWidget.Geen objecten gevonden.No objects found.ObjectFinderWidget ObjectObjectObjectFinderWidgetOuder Object Parent ObjectObjectFinderWidgetOuder Type Parent TypeObjectFinderWidgetPatroon:Pattern:ObjectFinderWidget$Regular expressionRegular ExpressionObjectFinderWidgetSelecteerSelectObjectFinderWidgetSelecteer Alles Select AllObjectFinderWidgetTypeTypeObjectFinderWidget.......ObjectRenameWidgetAnnulerenCancelObjectRenameWidgetVensterFormObjectRenameWidgetHernoemRenameObjectRenameWidget naar:to:ObjectRenameWidgetVeld leegmaken Clear fieldObjectSelectorWidgetVensterFormObjectSelectorWidget Selecteer Object Select ObjectObjectSelectorWidgetItem ToevoegenAdd ItemObjectsTableWidget Alt+RAlt+RObjectsTableWidgetBevestiging ConfirmationObjectsTableWidget Ctrl+End, Ctrl+SCtrl+End, Ctrl+SObjectsTableWidgetCtrl+Home Ctrl+HomeObjectsTableWidgetDelDelObjectsTableWidgetvBent u zeker dat u het geselecteerde item wilt verwijderen?/Do you really want to remove the selected item?ObjectsTableWidgetItem Aanpassen Edit ItemObjectsTableWidgetVensterFormObjectsTableWidgetInsInsObjectsTableWidgetNaar Beneden Move DownObjectsTableWidgetNaar BovenMove UpObjectsTableWidget,Naar de laatste plaats Move to endObjectsTableWidget*Naar de eerste plaats Move to startObjectsTableWidget"Alles Verwijderen Remove AllObjectsTableWidget Item Verwijderen Remove ItemObjectsTableWidgetShift+Del Shift+DelObjectsTableWidget SpatieSpaceObjectsTableWidgetItem Updaten Update ItemObjectsTableWidget"(ongeldig object)(invalid object) OperationList......OperationListWidget00OperationListWidget11OperationListWidget6Verwijder actiegeschiedenisDelete operation historyOperationListWidgetHet verwijderen van de geschiedenis van de uitgevoerde acties kan niet worden ongedaan gemaakt, bent u zeker dat u wilt verdergaan?ZDelete the executed operations history is an irreversible action, do you want to continue?OperationListWidget$Uitgevoerde ActiesExecuted OperationsOperationListWidget$Verberg dit widgetHide this widgetOperationListWidgetNaam: %1Name: %1OperationListWidgetObject: %1 Object: %1OperationListWidget8ActiegeschiedenisuitsluitingOperation history exclusionOperationListWidgetActie: %1 Operation: %1OperationListWidgetActies: Operations:OperationListWidgetPositie: Position:OperationListWidgetOpnieuw doenRedoOperationListWidgetOngedaan makenUndoOperationListWidgetaangemaaktcreatedOperationListWidgetaangepastmodifiedOperationListWidgetverplaatstmovedOperationListWidgetverwijderdremovedOperationListWidget Standaardklasse:Default Class:OperatorClassWidgetElementtype: Element Type:OperatorClassWidgetElementenElementsOperatorClassWidgetFunctieFunctionOperatorClassWidgetFunctie: Function:OperatorClassWidgetIndexering: Indexing:OperatorClassWidget ObjectObjectOperatorClassWidget"Operator Familie: Op. Family:OperatorClassWidgetOperatorOperatorOperatorClassWidget Operator FamilieOperator FamilyOperatorClassWidgetOperator: Operator:OperatorClassWidget OpslagStorageOperatorClassWidgetOpslagtype Storage TypeOperatorClassWidget.Ondersteuning/StrategieSupport/StrategyOperatorClassWidget0Ondersteuning/Strategie:Support/Strategy:OperatorClassWidgetTypeTypeOperatorClassWidgetIndexering: Indexing:OperatorFamilyWidgetGeavanceerdAdvancedOperatorWidgetArgumenten ArgumentsOperatorWidgetCommutator: Commutator:OperatorWidget HASHESHASHESOperatorWidget Join:Join:OperatorWidget(Linkse Argument TypeLeft Argument TypeOperatorWidget MERGESMERGESOperatorWidgetNegator:Negator:OperatorWidget"Operator functie:Operator Func.:OperatorWidgetOpties:Options:OperatorWidgetRestrict: Restrict:OperatorWidget*Rechtse Argument TypeRight Argument TypeOperatorWidgetOm een unaire operator aan te maken moet u <strong><em>'any'</em></strong> als een van zijn argumenten specifiren. Daarenboven mag de functie die de operator definieert slechts n parameter bezitten die van hetzelfde type moet zijn als de unaire operator.To create a unary operator it is necessary to specify as 'any' one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator.OperatorWidget Standaardwaarde:Default Value:ParameterWidgetININParameterWidget Modus:Mode:ParameterWidgetOUTOUTParameterWidgetVARIADICParameterWidget-- Er zijn geen machtigingen gedefinieerd voor het gespecifieerde object!3-- No permissions defined for the specified object!PermissionWidget/* Er kon geen SQL Codevoorbeeld worden gegenereerd voor de machtigingen!;/* Could not generate the SQL code preview for permissions!PermissionWidget(Machtiging toekennenAdd PermissionPermissionWidgetActie annulerenCancel OperationPermissionWidgetCascadeCascadePermissionWidgetCodevoorbeeld Code PreviewPermissionWidget2Niet-uitvoerbare SQL codeDisable SQL codePermissionWidget,Machtigingen aanpassenEdit permissionsPermissionWidgetGRANT OPTION GRANT OPTIONPermissionWidgetID:ID:PermissionWidgetIdIdPermissionWidgetNaamNamePermissionWidgetMachtigingen PermissionsPermissionWidgetMachtiging PrivilegePermissionWidgetMachtiginen PrivilegesPermissionWidget RollenRolesPermissionWidget(Machtiging aanpassenUpdate PermissionPermissionWidgetj** Object(en) die niet kon(den) worden gecorrigeerd: # ** Object(s) that couldn't fixed:  PgModelerCLI0 commandolijn interface. command line interface. PgModelerCLI@Het bestand %1 kan niet worden verwijderd! Kijk na of de huidige gebruiker voldoende machtigingen heeft om het bestand te verwijderen en of het bestand bestaat.gCan't erase the file %1! Check if the current user has permissions to delete it and if the file exists. PgModelerCLI2DBMS exporteringsopties: DBMS export options:  PgModelerCLIDatabase modelbestanden (.dbm) zijn reeds geassocieerd met pgModeler!@Database model files (.dbm) are already associated to pgModeler! PgModelerCLIVDe XML van de objecten word geextraheerd...Extracting objects' XML... PgModelerCLI"Algemene opties: General options:  PgModelerCLIDOnvolledige verbindingsinformatie!"Incomplete connection information! PgModelerCLIHet invoerbestand mag niet hetzelfde zijn als het uitvoerbestand!)Input file must be different from output! PgModelerCLIfThe actie om de mime optie the updaten is ongeldig!/Invalid action specified to update mime option! PgModelerCLIHet invoerbestand is ongeldig! Kijk na of dit bestand door pgModeler werd gegenereerd ofdat het bestand gecorrupteerd raakte!^Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted! PgModelerCLIBEen ongeldige zoom gespecifieerd!Invalid zoom specified! PgModelerCLI2Mime databaseoperatie: %1Mime database operation: %1 PgModelerCLIAndere opties: Miscellaneous options:  PgModelerCLILHet model werd succesvol gecorrigeerd!Model successfully fixed! PgModelerCLIDOptie '%1' aanvaardt geen waardes.#Option '%1' does not accept values. PgModelerCLIFDe objecten worden heraangemaakt...Recreating objects... PgModelerCLIjHet update-mime-database commando wordt uitgevoerd...'Running update-mime-database command... PgModelerCLI*Mime update begint...Starting mime update... PgModelerCLI,Model export begint...Starting model export... PgModelerCLI0Modelcorrectie begint...Starting model fixing... PgModelerCLIREr zijn geen verbindingen geconfigureerd.$There are no connections configured. PgModelerCLIEr is geen bestandsassociatie tussen pgModeler and .dbm bestanden!AThere is no file association related to pgModeler and .dbm files! PgModelerCLI2Niet-herkende optie '%1'.Unrecognized option '%1'. PgModelerCLI>Gebruik: pgmodeler-cli [OPTIES]Usage: pgmodeler-cli [OPTIONS] PgModelerCLI`Er is geen waarde gespecifieerd voor optie '%1'.$Value not specified for option '%1'. PgModelerCLIOPGEPAST: Er zijn objecten die niet konden worden gecorrigeerd. We proberen opnieuw... (poging %1 van %2)SWARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2) PgModelerCLIAuteur: %1 Author: %1PgModelerPlugin"Plugin InformatiePlugin InformationPgModelerPluginVersie: %1 Version: %1PgModelerPluginHWenst u de <strong> SQL %1 status</strong> ook toe te passen op de referenties van het object? Dit vermijdt problemen bij het exporteren of valideren van het model.Do you want to apply the SQL %1 status to the object's references too? This will avoid problems when exporting or validating the model. PgModelerUiNSuitschakelen disabling PgModelerUiNSinschakelenenabling PgModelerUiNSData Type Data TypePgSQLTypeWidgetDimensie DimensionPgSQLTypeWidgetVensterFormPgSQLTypeWidgetFormaat:Format:PgSQLTypeWidgetInterval: Interval:PgSQLTypeWidgetL:L:PgSQLTypeWidget LengteLengthPgSQLTypeWidgetMMPgSQLTypeWidgetGEENNONEPgSQLTypeWidgetP:P:PgSQLTypeWidgetPrecisie PrecisionPgSQLTypeWidget SRID:SRID:PgSQLTypeWidgetRuimtelijk:Spatial:PgSQLTypeWidgetTijdszone: Timezone:PgSQLTypeWidget Type:Type:PgSQLTypeWidgetVariatie: Variation:PgSQLTypeWidgetZZPgSQLTypeWidget[ ]:[ ]:PgSQLTypeWidgetVensterFormPluginsConfigWidgetBibliotheekLibraryPluginsConfigWidget Geladen plug-insLoaded plug-insPluginsConfigWidget,Open in bestandsbeheerOpen in file managerPluginsConfigWidget"Plug-in startmap:Plug-ins root directory:PluginsConfigWidget PluginPluginPluginsConfigWidget VersieVersionPluginsConfigWidgetExpressies Expressions PolicyWidgetNaamName PolicyWidget RollenRoles PolicyWidget%1 (lijn %2) %1 (line: %2)QObjectnieuwe_database new_databaseQObject%1_kopieert_%2 %1_copies_%2 Relationship(%1_heeft_meerdere_%2%1_has_many_%2 Relationship*%1_heeft_exact_een_%2 %1_has_one_%2 Relationship%1_erft_van_%2%1_inherits_%2 Relationship:meerdere_%1_heeft_meerdere_%2many_%1_has_many_%2 RelationshipKolom (Bron):Column (Source):RelationshipConfigWidgetKolom (Doel):Column (Target):RelationshipConfigWidget8Verbindt FK naar PK kolommenConnect FK to PK columnsRelationshipConfigWidgetVVerbindt de centrale punten van de tabellenConnect tables' center pointsRelationshipConfigWidget VerbindingsmodusConnection ModeRelationshipConfigWidgetKopieerCopyRelationshipConfigWidgetStandaardDefaultRelationshipConfigWidgetUitstelbaar: Deferrable:RelationshipConfigWidgetUitstel: Deferral:RelationshipConfigWidget6FK instellingen && PatronenFK Settings && PatternsRelationshipConfigWidget&Foreign Key (Bron):Foreign Key (Source):RelationshipConfigWidget&Foreign Key (Doel):Foreign Key (Target):RelationshipConfigWidget0Foreign key instellingenForeign key settingsRelationshipConfigWidgetVensterFormRelationshipConfigWidgetGeneralisatieGeneralizationRelationshipConfigWidget4Meerdere op meerdere (n:n)Many to many (n:n)RelationshipConfigWidgetNaamspatronen Name patternsRelationshipConfigWidgetON DELETE: ON DELETE:RelationshipConfigWidgetON UPDATE: ON UPDATE:RelationshipConfigWidget*Een op meerdere (1:n)One to many (1:n)RelationshipConfigWidget Een-op-een (1:1)One to one (1:1)RelationshipConfigWidget,Het patroon voor de kolommen wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n).rPattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipConfigWidgetHet patroon voor kolommen die worden gegenereerd op basis van de pk van de doeltabel (n-n).APattern for columns generated based upon target table's pk (n-n).RelationshipConfigWidget2Het patroon voor de foreign key wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n).vPattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipConfigWidgetHet patroon voor de foreign key wordt gegenereerd op basis van de pk van de doeltabel (n-n).EPattern for foreign key generated based upon target table's pk (n-n).RelationshipConfigWidgetHet patroon voor de primary key wordt gegenereerd op basis van de relatie met de identifier.=Pattern for primary key generated by identifier relationship.RelationshipConfigWidgetHet patroon voor de unieke sleutel wordt gegenereerd op basis van de relatie.5Pattern for unique key generated by the relationship.RelationshipConfigWidget$Primary Key Kolom:Primary Key Column:RelationshipConfigWidget0Naam van de Primary Key:Primary Key Name:RelationshipConfigWidgetRelatietype:Relationship type:RelationshipConfigWidget6Naam van de unieke sleutel:Unique Key Name:RelationshipConfigWidget is vereist is requiredRelationshipWidget1-n1-nRelationshipWidgetALLALLRelationshipWidgetGeavanceerdAdvancedRelationshipWidgetAttribuut AttributeRelationshipWidgetAttributen AttributesRelationshipWidgetCOMMENTSCOMMENTSRelationshipWidgetCONSTRAINTS CONSTRAINTSRelationshipWidgetCardinaliteit: Cardinality:RelationshipWidgetKolom (Bron):Column (Source):RelationshipWidgetKolom (Doel):Column (Target):RelationshipWidgetConstraint ConstraintRelationshipWidgetConstraints ConstraintsRelationshipWidgetKopieeropties Copy OptionsRelationshipWidget"Aangepaste kleur: Custom Color:RelationshipWidgetDEFAULTSDEFAULTSRelationshipWidgetStandaardDefaultRelationshipWidgetUitstelbaar: Deferrable:RelationshipWidgetUitstel: Deferral:RelationshipWidgetHAfhankelijkheid / Kopieer de relatieDependency / Copy relationshipRelationshipWidget&Foreign Key (Bron):Foreign Key (Source):RelationshipWidget&Foreign Key (Doel):Foreign Key (Target):RelationshipWidget0Foreign key instellingenForeign key SettingsRelationshipWidget&Algemene Tabelnaam:Gen. Table Name:RelationshipWidgetAlgemeenGeneralRelationshipWidgetBGeneralisatierelatie (overerving))Generalization relationship (inheritance)RelationshipWidgetINCLUDING INCLUDINGRelationshipWidgetINDEXESINDEXESRelationshipWidgetIdentifier IdentifierRelationshipWidgetIn meer-op-meer relaties worden beide tabellen als referentie gebruikt om de link-tabel te representeren. Kolommen van beide tabellen worden gekopieerd naar de resulterende link-tabel en foreign keys naar elke deelnemende tabel worden aangemaakt.In many-to-many relationships both tables are used as reference to generate the table that represents the linking. Columns from both tables are copied to the resultant table and two foreign keys are created as well in order to reference each participant table.RelationshipWidget2In plaats van een multi-kolom primary key te creeren op basis van de foreign key kolommen, wordt een enkele kolom aangemaakt en gebruikt als primary key.Instead of create a multi-valued primary key with the generated foreign keys columns a single column is created and used as primary key.RelationshipWidget(Meer-op-meer relatieMany to many relationshipRelationshipWidgetNaamNameRelationshipWidgetNaamspatronen Name PatternsRelationshipWidgetDe naam van de tabel die is gegenereerd op basis van de meer-op-meer relatie:Name of the table generated from many to many relationshipRelationshipWidgetON DELETE: ON DELETE:RelationshipWidgetON UPDATE: ON UPDATE:RelationshipWidget&Een-op-meer relatieOne to many relationshipRelationshipWidget$Een-op-een relatieOne to one relationshipRelationshipWidget,Het patroon voor de kolommen wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n).rPattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipWidgetHet patroon voor kolommen die worden gegenereerd op basis van de pk van de doeltabel (n-n).APattern for columns generated based upon target table's pk (n-n).RelationshipWidget2Het patroon voor de foreign key wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n).vPattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n).RelationshipWidgetHet patroon voor de foreign key wordt gegenereerd op basis van de pk van de doeltabel (n-n).EPattern for foreign key generated based upon target table's pk (n-n).RelationshipWidgetHet patroon voor de primary key wordt gegenereerd op basis van de relatie met de identifier.=Pattern for primary key generated by identifier relationship.RelationshipWidgetHet patroon voor de unieke sleutel wordt gegenereerd op basis van de relatie.5Pattern for unique key generated by the relationship.RelationshipWidget0Naam van de Primary Key:Primary Key Name:RelationshipWidgetPrimary key Primary keyRelationshipWidget$Primary Key Kolom:Primay Key Column:RelationshipWidget\De ontvanger (of gerefereerde) tabel zal de gegenereerde kolommen en de foreign key ontvangen om de link tussen beiden te bewerkstelligen. Dit is de (n) zijde van de relatie.Receiver (or referer) table will receive the generated columns and the foreign key in order to represent the linking between them. This is the (n) side of relationship.RelationshipWidget$Ontvangende Tabel:Receiver Table:RelationshipWidget Referentietabel:Reference Table:RelationshipWidgetvDe referentietabel heeft kolommen in zijn primary key die gekopieerd zullen worden naar de ontvangende tabel om de link tussen deze te bewerkstelligen. Dit is de (1) zijde van de relatie.Reference table has the columns from its primary key will copied to the receiver table in order to represent the linking between them. This is the (1) side of relationship.RelationshipWidget&Gerefereerde Tabel:Referenced Table:RelationshipWidgetDe gerefereerde tabel heeft kolommen waarnaar wordt gerefereerd door een foreign key in een andere tabel. Dit is de (1) zijde van de relatie.kReferenced table has its columns referenced by a table's foreign key. This is the (1) side of relationship.RelationshipWidgetDe gerefereerde tabel heeft kolommen waarnaar wordt gerefereerd door een view die deze kolommen gebruikt om zijn eigen kolommen aan te maken.gReferenced table has its columns referenced by a view in order to construct the columns of this latter.RelationshipWidget$Refererende Tabel:Referer Table:RelationshipWidget"Refererende View: Referer View:RelationshipWidgetDe refererende tabel refereert naar een of meerdere kolommen in een andere tabel via foreign keys. Dit is the (n)-zijde van de relatie.sReferer table references one or more columns of a table through foreign keys. This is the (n) side of relationship.RelationshipWidgetDe refererende view refereert naar een of meerdere kolommen van een tabel om zijn eigen kolommen aan te maken.UReferer view references one or more columns of a table to construct it's own columns.RelationshipWidgetRelatietype: Rel. Type:RelationshipWidgetFRelatie gegenereerd via foreign key&Relationship generated via foreign keyRelationshipWidgetSTORAGESTORAGERelationshipWidgetEnkele PK kolomSingle PK columnRelationshipWidgetTabel 1:Table 1:RelationshipWidgetTabel 2:Table 2:RelationshipWidgetDe ontvanger's primary key wordt samengesteld door de gegenereerde foreign key kolommen.QThe receiver's primary key will be composed by the generated foreign key columns.RelationshipWidgetDit geavanceerde tab-blad toont de objecten (kolommen of tabellen) die automatisch worden aangemaakt door de verbindingen van de relatie alsook de foreign keys die de link tussen de deelnemende tabellen voorstelt.This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables.RelationshipWidgetTypeTypeRelationshipWidget6Naam van de unieke sleutel:Unique Key Name:RelationshipWidget0Gebruik standaardwaarden Use defaultsRelationshipWidgetZGebruik globale instellingen voor deze velden$Use global settings for these fieldsRelationshipWidgetGebruik de speciale primary key wanneer u een primary key samengesteld uit gegenereerde kolommen van de ontvangende tabel wilt insluiten. <strong>Belangrijk:</strong> indien dit een nieuwe relatie is moet u de creatie van deze relatie voltooien en dit dialoogvenster daarna opnieuw openen om de speciale primary key aan te maken.Use the special primary key if you want to include a primary key containing generated columns to the receiver table. Important: if this is a new relationship there is a need to finish its creation and reopen this dialog to create the special primary key.RelationshipWidgetGebruik de waarden ingesteld in het instellingsvenster voor de velden hieronder?Use the values defined on settings dialogs for the fields belowRelationshipWidget"[DOEL] is vereist[DST] is requiredRelationshipWidget"[BRON] is vereist[SRC] is requiredRelationshipWidgetdepdepRelationshipWidgetfkfkRelationshipWidgetn-nn-nRelationshipWidget[binaire data] [binary data]ResultSetModelAttributen Attributes RoleWidgetKan inloggen Can login RoleWidgetVerbindingen: Connections: RoleWidgetGencrypteerd Encrypted RoleWidgetLid van Member of RoleWidget LedenMembers RoleWidgetLeden (Admin.)Members (Admin.) RoleWidgetWachtwoord: Password: RoleWidgetRolRole RoleWidgetSuperuser Superuser RoleWidgetGeldigheidValidity RoleWidget(yyyy-MMM-dd hh:mm:ssyyyy-MMM-dd hh:mm:ss RoleWidgetCommando'sCommands RuleWidget4Voorwaardelijke Expressie:Conditional Expr.: RuleWidget Event:Event: RuleWidget Uitvoeringstype:Execution Type: RuleWidgetSQL Commando: SQL Command: RuleWidgetSQL commando SQL command RuleWidget Om een regel aan te maken die niets doet (<strong>DO NOTHING</strong>), laat eenvoudigweg de commando's in de SQL commando tabel leeg.To create a rule that does not perform any action (DO NOTHING) simply do not specify commands in the SQL commands table. RuleWidget......SQLExecutionWidget Alt+ZAlt+FSQLExecutionWidget Alt+OAlt+OSQLExecutionWidgetAlles Wissen Clear AllSQLExecutionWidget@Wis SQL invoerveld en resultaten!Clear sql input field and resultsSQLExecutionWidgetBestand met komma-gesepareerde waarden (*.csv);;Alle bestanden (*.*)4Comma-separated values file (*.csv);;All files (*.*)SQLExecutionWidget&Kopier de selectieCopy selectionSQLExecutionWidgetE&xporterenE&xportSQLExecutionWidgetPExporteer de resultaten naar CSV bestandExport results to a CSV fileSQLExecutionWidgetF6F6SQLExecutionWidgetVensterFormSQLExecutionWidget LadenLoadSQLExecutionWidget&Laad SQL commando'sLoad SQL commandsSQLExecutionWidgetUitvoerenRun SQLSQLExecutionWidget*Voer het commando uitRun the specified SQL commandSQLExecutionWidgetLSQL Code (*.sql);;Alle bestanden (*.*)!SQL file (*.sql);;All files (*.*)SQLExecutionWidgetOpslaanSaveSQLExecutionWidget$Sla CSV bestand op Save CSV fileSQLExecutionWidget*Sla SQL commando's opSave SQL commandsSQLExecutionWidgetOpslaan alsSave asSQLExecutionWidgetSnippe&ts Snippe&tsSQLExecutionWidgetHet SQL invoerveld en de resultaten-lijst zullen worden leeggemaakt! Wenst u verder te gaan?JThe SQL input field and the results grid will be cleared! Want to proceed?SQLExecutionWidget[binaire data] [binary data]SQLExecutionWidget... SQLToolWidget<strong>LET OP:</strong> Van alle databases ontkoppelen sluit alle tab-bladen in dit venster! Bent u zeker dat u verder wilt gaan?ATTENTION: Disconnect from all databases will close any opened tab in this view! Do you really want to proceed? SQLToolWidget Alt+RAlt+R SQLToolWidgetAttributen Attributes SQLToolWidget"DatabaseverkennerDatabase explorer SQLToolWidget<Van alle databases ontkoppelenDisconnect from all databases SQLToolWidgetVensterForm SQLToolWidgetSQL uitvoering SQL execution SQLToolWidgetBroncode Source code SQLToolWidgetOpgepastWarning SQLToolWidgetVensterFormSceneInfoWidgetVulkleur: Fill color: SchemaWidgetToon rechthoekShow rectangle SchemaWidget Cache:Cache:SequenceWidgetCyclisch:Cyclic:SequenceWidgetToename: Increment:SequenceWidgetMaximum:Maximum:SequenceWidgetMinimum:SequenceWidget"Bezittende kolom: Owner Col.:SequenceWidget Start:Start:SequenceWidget/* Er trad een fout op tijdens het onleden van het snippet '%1': %2 */*/* Error parsing the snippet '%1': %2 */SnippetsConfigWidgetToevoegenAddSnippetsConfigWidgetAlle snippets All snippetsSnippetsConfigWidget$Van toepassing op: Applies to:SnippetsConfigWidget*Annuleer aanpassingenCancel editionSnippetsConfigWidget<Maak een nieuwe verbinding aanCreate new connectionSnippetsConfigWidgetJVerwijder de geselecteerde verbindingDelete selected connectionSnippetsConfigWidgetdBent u zeker dat u alle snippets wilt verwijderen?*Do you really want to remove all snippets?SnippetsConfigWidgetGelieve een andere snippet id te selecteren, de id <strong>%1</strong> is reeds in gebruik!TDuplicated snippet id %1 detected. Please, specify a different one!SnippetsConfigWidgetFPas de geselecteerde verbinding aanEdit selected connectionSnippetsConfigWidgetGelieve een waarde in te vullen voor de code van snippet <strong>%1</strong>!KEmpty code for snippet %1. Please, specify a value for it!SnippetsConfigWidgetGelieve een waarde in te vullen voor het label van snippet <strong>%1</strong>!LEmpty label for snippet %1. Please, specify a value for it!SnippetsConfigWidgetFilter:Filter:SnippetsConfigWidgetVensterFormSnippetsConfigWidgetAlgemeenGeneralSnippetsConfigWidgetAlgemeen doelGeneral purposeSnippetsConfigWidgetID:ID:SnippetsConfigWidget$Een ongeldig ID patroon werd gedetecteerd. Deze moet starten met minstens n letter en worden gevormed door letters, nummer en/or een underscore!Invalid ID pattern detected %1. This one must start with at leat one letter and be composed by letters, numbers and/or underscore!SnippetsConfigWidget Label:Label:SnippetsConfigWidgetVHet snippet bevat geen syntactische fouten.&No syntax errors found in the snippet.SnippetsConfigWidgetOntleedbaarParsableSnippetsConfigWidget>Ontleedbare of dynamische snippets worden in de <strong>schema micro language</strong> syntax geschreven. Wanneer een ontleedbaar snippet wordt gebruikt worden attributen die met <strong>{}</strong> zijn omringd, vervangen door de attributen van het overeenkomstige geselecteerde object.Parsable or dynamic snippets are written in the schema micro language syntax. When using a parsable snippet the attributes surrounded in {} will be replaced by the selected object's matching attributes.SnippetsConfigWidgetOntleedParseSnippetsConfigWidgetOntleed het snippet om zeker te zijn dat het geen syntactische fouten bevat.?Parse the snippet in order to check if there are syntax errors.SnippetsConfigWidgetPlaatshouder PlaceholdersSnippetsConfigWidget"Alles Verwijderen Remove AllSnippetsConfigWidgetShift+Del Shift+DelSnippetsConfigWidgetSnippets: Snippets:SnippetsConfigWidgetHet dynamische snippet bevat n of meer syntactische fouten. Bijkomende info: <br/><em>%1</em>OThe dynamic snippet contains syntax error(s). Additional info:
%1SnippetsConfigWidgetUpdatenUpdateSnippetsConfigWidgethBij ontleedbare snippets worden lege attributen vervangen door een waarde volgens het formaat <strong>{attribuut}</strong>. Deze optie kan de betekenis van het snippet benvloeden.When handling parsable snippets empty attributes will be replaced by a value in the format {attribute}. Note that this option can affect the semantics of the resulting snippet.SnippetsConfigWidget&-- LET OP: de volgende code bevat SQL voor zowel het geselecteerde object -- alsook zijn afhankelijken kinderen (indien zo aangevinkt). -- -- Dit feature bestaat enkel zodat u op een eenvoudige manier de volledige -- SQL definitie van het object kan testen. -- -- Bij het exporteren of genereren van de SQL code voor de volledige database -- worden alle objecten in hun originele positie geplaatst. |-- NOTE: the code below contains the SQL for the selected object -- as well for its dependencies and children (if applicable). -- -- This feature is only a convinience in order to permit you to test -- the whole object's SQL definition at once. -- -- When exporting or generating the SQL for the whole database model -- all objects will be placed at their original positions. SourceCodeWidgett-- Er is geen SQL code beschikbaar voor dit type object --2-- SQL code unavailable for this type of object --SourceCodeWidget<!-- XML codevoorbeelden zijn niet beschikbaar in de demo-versie -->;SourceCodeWidgetCodeweergave: Code display:SourceCodeWidget<De broncode wordt gegeneerd...Generating source code...SourceCodeWidgetOrigineelOriginalSourceCodeWidget:Origineel + SQL voor kinderenOriginal + children's SQLSourceCodeWidgetDOrigineel + SQL voor afhankelijkenOriginal + depedencies' SQLSourceCodeWidgetPostgreSQL PostgreSQLSourceCodeWidgetSQLSQLSourceCodeWidgetLSQL Code (*.sql);;Alle bestanden (*.*)!SQL code (*.sql);;All files (*.*)SourceCodeWidgetSla SQL OpSave SQLSourceCodeWidget,Sla SQL code op als...Save SQL code as...SourceCodeWidgetDSla de SQL code op in een bestand.Save the SQL code to a file.SourceCodeWidget(BroncodevisualisatieSource code visualizationSourceCodeWidgetVersie:Version:SourceCodeWidgetXMLXMLSourceCodeWidget iconecodigoSourceCodeWidget Voor:Before:SwapObjectsIdsWidgetAanmaken:Create:SwapObjectsIdsWidgetFilter:Filter:SwapObjectsIdsWidgetIDIDSwapObjectsIdsWidgetID:ID:SwapObjectsIdsWidget ObjectObjectSwapObjectsIdsWidgetOuder Object Parent ObjectSwapObjectsIdsWidgetOuder Type Parent TypeSwapObjectsIdsWidget0Wissel de veldwaarden omSwap the values of the fieldsSwapObjectsIdsWidget(Wissel de waarden om Swap valuesSwapObjectsIdsWidgetTypeTypeSwapObjectsIdsWidgetBTabellen kunnen slechts `%1' instancies per kind-object type of voorouder-tabellen hebben in demonstratie-versies! U heeft deze limiet bereikt voor het type `%2'In demonstration version tables can have only `%1' instances of each child object type or ancestor tables! You've reach this limit for the type: `%2'Tablenieuwe_tabel new_tableTable Ctrl+ECtrl+ETableDataWidget Ctrl+VCtrl+VTableDataWidgetDelDelTableDataWidgetInsInsTableDataWidgetPlakkenPasteTableDataWidgetShift+Del Shift+DelTableDataWidgetRelatie: %1 Relationship: %1TableObjectView KopieCopy TableWidgetStandaardwaarde Default Value TableWidget EventEvent TableWidget EventsEvents TableWidgetUitvoering Execution TableWidgetAfvuringFiring TableWidgetPGenereer ALTER voor kolommen/constraints&Generate ALTER for columns/constraints TableWidgetIndexeringIndexing TableWidgetNaamName TableWidgetNeeNo TableWidgetON DELETE ON DELETE TableWidgetON UPDATE ON UPDATE TableWidget OptiesOptions TableWidget OuderParent TableWidgetRefer. Tabel Refer. Table TableWidget RollenRoles TableWidget SchemaSchema TableWidgetTag:Tag: TableWidgetTypeType TableWidgetNiet geloggedUnlogged TableWidgetMet OIDWith OID TableWidgetJaYes TableWidgetMap: Directory:TablespaceWidgetVensterFormTablespaceWidgetInhoud:Body: TagWidgetKleurenColors TagWidget&Uitgebreide inhoud:Extended body: TagWidgetSchemanaam: Schema name: TagWidgetTabelnaam: Table name: TagWidget Titel:Title: TagWidgetTaken uitvoerenExecuting tasksTaskProgressWidgetJWachten op het starten van de taak...Waiting task to start...TaskProgressWidgetVetBold TextboxWidget Kleur:Color: TextboxWidgetLettertype:Font: TextboxWidgetCursiefItalic TextboxWidget(Selecteer tekstkleurSelect text color TextboxWidget TekstText TextboxWidgetOnderstrepen Underline TextboxWidgetptpt TextboxWidgetArgument: Argument: TriggerWidgetArgumenten Arguments TriggerWidget KolomColumn TriggerWidget Kolom:Column: TriggerWidgetKolommenColumns TriggerWidgetVoorwaarde: Condition: TriggerWidgetConstraint Constraint TriggerWidget DELETEDELETE TriggerWidgetUitstelbaar: Deferrable: TriggerWidget Event:Event: TriggerWidgetUitvoer: Excution: TriggerWidgetFOR EACH ROW FOR EACH ROW TriggerWidgetFunctie: Function: TriggerWidget INSERTINSERT TriggerWidgetOpties:Options: TriggerWidgetRefer. Tabel: Refer. Table: TriggerWidgetTRUNCATETRUNCATE TriggerWidgetTypeType TriggerWidget UPDATEUPDATE TriggerWidgetANALYZE:ANALYZE: TypeWidgetUitlijning: Alignment: TypeWidgetAttributen Attributes TypeWidgetBasistype Base Type TypeWidgetPer waardeBy value TypeWidget"Canonische Func.:Canonical Func.: TypeWidgetCategorie: Category: TypeWidgetSorteerbaar Collatable TypeWidgetSortering Collation TypeWidgetSortering: Collation: TypeWidgetConfiguratie:Configuration: TypeWidget Standaardwaarde:Default Value: TypeWidgetDelimiter: Delimiter: TypeWidgetElementtype Element Type TypeWidgetEnumeratie Enumeration TypeWidgetEnumeratie: Enumeration: TypeWidgetEnumeraties Enumerations TypeWidgetFuncties Functions TypeWidget INPUT:INPUT: TypeWidgetInterne lengte:Internal Length: TypeWidgetLike type Like Type TypeWidgetNaamName TypeWidget Naam:Name: TypeWidgetOUTPUT:OUTPUT: TypeWidget Operator Klasse:Operator Class: TypeWidgetOpties:Options: TypeWidgetVoorkeur Preferred TypeWidget RECV:RECV: TypeWidget OmvangRange TypeWidget SEND:SEND: TypeWidgetOpslag:Storage: TypeWidgetSubtypeSubtype TypeWidget&Subtype Diff Func.:Subtype Diff Func.: TypeWidgetTPMOD_IN: TPMOD_IN: TypeWidgetTPMOD_OUT: TPMOD_OUT: TypeWidgetDe functies die aan een omvang worden toegewezen moeten de volgende signatures bezitten:<br/><br/><strong>Canonish:</strong> <em>any functie(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision functie(subtype, subtype)</em>The functions to be assigned to a range type should have the following signatures:

Canonical: any function(any)
Subtype Diff: double precision function(subtype, subtype) TypeWidgetDe functies die worden toegewezen aan een type moeten in de C programmeertaal zijn geschreven en moeten, respectievelijk de volgende signatures bezitten:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any functie(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring functie(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta functie(any)</em></td> <td><strong>RECV:</strong> <em>any functie(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer functie(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring functie(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean functie(internal)</em></td> <tr> </table>The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:
INPUT: any function(cstring, oid, integer) OUTPUT: cstring function(any)
SEND: byta function(any) RECV: any function(internal, oid, integer)
TPMOD_IN: integer function(cstring[]) TPMOD_OUT: cstring function(integer)
ANALYZE: boolean function(internal)
 TypeWidgetTypeType TypeWidgetcharchar TypeWidget double precisiondouble precision TypeWidgetintegerinteger TypeWidgetsmallintsmallint TypeWidget......UpdateNotifierWidget 0.0.00.0.0UpdateNotifierWidgetAanpassingen ChangelogUpdateNotifierWidgetPHet ophalen van update informatie faaldeFailed to check updatesUpdateNotifierWidget4Verkrijg een binair pakketGet binary packageUpdateNotifierWidget(Verkrijg de broncodeGet source codeUpdateNotifierWidget$Verberg dit widgetHide this widgetUpdateNotifierWidget&Geen nieuwe updatesNo updates foundUpdateNotifierWidgetBLeidt naar de broncode op GitHub.&Redirects to GitHub source repository.UpdateNotifierWidget8Leidt naar de aankooppagina.Redirects to purchase page.UpdateNotifierWidgetReleasedatum: Released in:UpdateNotifierWidgetHet ophalen van nieuwe versie informatie faalde! De volgende HTTP status code werd gegenereerd: <strong>%1</strong>jThe update notifier failed to check for new versions! A HTTP status code was returned: %1UpdateNotifierWidget&Update AankondigingUpdate NotifierUpdateNotifierWidgetZDit is de meest recente versie van pgModeler!DYou are running the most recent pgModeler version! No update needed.UpdateNotifierWidgetmmm dd, yyyy mmm dd, yyyyUpdateNotifierWidget/* De SQL code kon niet worden gegenereerd. Kijk na of alle attributen correct zijn ingevuld! S/* Could not generate the SQL code. Make sure all attributes are correctly filled!  ViewWidget AliasAlias ViewWidgetAlias Kol. Alias Col. ViewWidgetCodevoorbeeld Code Preview ViewWidgetKol./Expr. Col./Expr. ViewWidget KolomColumn ViewWidgetKolomalias: Column Alias: ViewWidget Kolom:Column: ViewWidget EventEvent ViewWidget EventsEvents ViewWidgetUitvoering Execution ViewWidgetExpressie Expression ViewWidgetExpressiealias:Expression Alias: ViewWidgetExpressie: Expression: ViewWidgetAfvuringFiring ViewWidgetIndexenIndexes ViewWidgetIndexeringIndexing ViewWidget Modus:Mode: ViewWidgetNaamName ViewWidget OptiesOptions ViewWidget GewoonOrdinary ViewWidgetRefer. Tabel Refer. Table ViewWidgetReferentietype:Reference Type: ViewWidgetReferenties References ViewWidget RegelsRules ViewWidgetTabelalias: Table Alias: ViewWidgetTabelexpressieTable Expression ViewWidget Tabel:Table: ViewWidgetTag:Tag: ViewWidgetTriggersTriggers ViewWidgetGebruikt in:Used in: ViewWidgetViewdefinitieView Definition ViewWidgetZonder data With no data ViewWidgetVensterForm WelcomeWidgetVorige sessie Last session WelcomeWidgetNieuw model New model WelcomeWidgetOpen model Open model WelcomeWidget Recente modellen Recent models WelcomeWidget"Voorbeeldmodellen Sample models WelcomeWidgetpgmodeler-0.9.4/assets/lang/nl_NL.ts000066400000000000000000024756071416010000600173100ustar00rootroot00000000000000 AboutWidget About pgModeler Over pgModeler 0.0.0 0.0.0 build: PostgreSQL Database Modeler PostgreSQL Database Modeler Open source data modeling tool designed for PostgreSQL. No more DDL commands written by hand, let pgModeler do the job for you! This software reunites the concepts of entity-relationship diagrams and the features that PostgreSQL implements as extensions of SQL standards. Een Open Source data modeleer tool ontworpen voor PostgreSQL. Met pgModeler hoef je niet langer zelf je DDL commando's schrijven, laat dit over aan pgModeler! Deze software brengt de concepten van Entity-Relationship diagrammen samen met de features die PostgreSQL implementeerd als uitbreidingen van de SQL standaard. <html><head/><body><p><a href="http://pgmodeler.com.br"><span style=" text-decoration: underline; color:#2980b9;">https://pgmodeler.io</span></a></p></body></html> <html><head/><body><p>Copyright 2006-2018 - Raphael Araújo e Silva &lt;<a href="mailto:raphael@pgmodeler.com.br"><span style=" text-decoration: underline; color:#0057ae;">raphael@pgmodeler.io</span></a>&gt;</p></body></html> pgModeler is proudly a brazilian software! pgModeler is trotse braziliaanse software! Hide this widget Verberg dit widget ... (BUILD_NUM) License Licensie AggregateWidget Final Function: Finale functie: Sort Operator: Sorteer-operator: Initial Condition: Initiële Vereiste: Funtion Inputs Functie Invoer Function State Functie Staat Transition Func.: Overgangsfunctie: Input Data Type Invoer Data Type State Data Type Status Data Type An aggregate function that accepts the types <em><strong>typeA</strong></em> and <em><strong>typeB</strong></em> as input types and which type of state is <em><strong>state_type</strong></em>, must obey the following rules: <br/><br/> <strong> &nbsp;&nbsp;&nbsp;• Final Function:</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp;• Transition Function:</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em> Een aggregatie-funtie die de types <em><strong>typeA</strong></em> en <em><strong>typeB</strong></em> als invoer aanvaardt en waarvan het status-type <em><strong>status_type</strong></em> is. De volgende regels moeten voldaan zijn: <br/><br/> <strong>&nbsp;&nbsp;&nbsp;• Finale Functie:</strong> <em>void finale_functie(<strong>status_type</strong>)</em><br/> <strong>&nbsp;&nbsp;&nbsp;• Overgangsfunctie:</strong> <em><strong>status_type</strong> transitie_functie(<strong>status_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em> AppearanceConfigWidget Form Venster Element: Element: Global: Font style Algemeen: Lettertype Global: Constraints descriptor Algemeen: Constraints beschrijving Global: Object selection Algemeen: Object selectie Global: Position hint text Algemeen: Positie hint tekst Global: Position hint box Algemeen: Positie hint box Global: Objects type Algemeen: Object-type Global: Lock arc Algemeen: Lock arc Global: Lock body Algemeen: Lock body Table: Schema name Tabel: Schemanaam Table: Table name Tabel: Tabelnaam Table: Columns box Tabel: Kolom box Table: Extended attributes box Tabel: Uitgebreide attributen box Table: Title box Tabel: Titel box Rule: Name Regel: Naam Rule: Descriptor Regel: Beschrijving Index: Name Index: Naam Index: Descriptor Index: Beschrijving Trigger: Name Trigger: Naam Trigger: Descriptor Trigger: Beschrijving Constraint: Name Constraint: Descriptor View: Schema name View: Schemanaam View: View name View: View-naam View: References box View: Referenties box View: Extended attributes box View: Uitgebreide attributen box View: Title box View: Titel box View: Table / columns alias View: Tabel / Kolom alias View: Referenced column View: Gerefereerde kolom View: Referenced table View: Gerefereerde tabel View: Reference descriptor View: Referentiebeschrijving Textbox: Body Tekst box: Inhoud Column: Column name Kolom: Kolom naam Column: Descriptor Kolom: Beschrijving Column: Included / Inherited by relationship Kolom: Ingesloten / Overgeërfd via relatie Column: Protected Kolom: Beschermd Column (pk): Column name Kolom (pk): Kolom naam Column (pk): Descriptor Kolom (pk): Beschrijving Column (fk): Column name Kolom (fk): Kolom naam Column (fk): Descriptor Kolom (fk): Beschrijving Column (uq): Column name Kolom (uq): Kolom naam Column (uq): Descriptor Kolom (uq): Beschrijving Column (nn): Column name Kolom (nn): Kolom naam Column (nn): Descriptor Kolom (nn): Beschrijving Relationship: Descriptor Relatie: Beschrijving Relationship: Label text Relatie: Label tekst Relationship: Label box Relatie: Label box Relationship: Attribute text Relatie: Attribuut tekst Relationship: Attribute descriptor Relatie: Attribuut beschrijving Tag: Name Tag: Naam Tag: Body Tag: Inhoud Placeholder: Body Font: Lettertype: Colors: Kleuren: pt pt Underline Onderstrepen Italic Cursief Bold Vet Application Unknown exception caught! Een onbekende uitzondering trad op! Failed to create initial configuration in `%1'! Check if the current user has write permission over that path and at least read permission over `%2'. De initiële configuratie kon niet worden gecreëerd in `%1'! Kijk na of de huidige gebruiker schrijf-machtigingen heeft op dit pad en minstens lees-machtigingen op '%2'. BaseConfigWidget A backup of the previous settings was saved into <strong>%1</strong>! BaseForm Dialog Dialoogvenster &Apply &Toepassen &Cancel &Annuleren &Ok &Ok %1 properties BaseObject Column Kolom Constraint Constraint Function Functie Trigger Trigger Index Index Rule Regel Table Tabel View View Domain Domein Schema Schema Aggregate Aggregator Operator Operator Sequence Sequentie Role Rol Conversion Conversie Cast Cast Language Taal Type Type Tablespace Tablespace Operator Family Operator Familie Operator Class Operator Klasse Database Database Collation Sortering Extension Uitbreiding Event Trigger Event Trigger Relationship Relatie Policy Textbox Tekst box Permission Machtiging Parameter Parameter Type Attribute Type Attribuut Tag Tag Basic Relationship Basisrelatie Generic SQL new_object nieuw_object nieuwe_objecten BaseObjectView SQL off SQL uit BaseObjectWidget Name: Naam: Comment: Commentaar: Tablespace: Tablespace: Schema: Schema: Edit object's permissions Machtiginen voor dit object aanpassen Edit permissions Machtigingen aanpassen This object is protected thus no change in form will be applied to it. Dit object is beschermd en dus worden vorm-aanpassingen niet toegepast. Disables the generated SQL code using comment tokens (--). This will disable the code of all child and referrer objects. Maakt de gegenereerde SQL code onuitvoerbaar via comment-tokens (--). Dit zorgt ervoor dat de code voor alle kinder-objecten en refererende objecten wordt uitgeschakeld. Disable SQL code Niet-uitvoerbare SQL code Collation: Sortering: Append or prepend a set of SQL commands to the object's definition. Voeg SQL commando toe voor of na de definitie van het object. Custom SQL Aangepaste SQL Owner: Eigenaar: ID: ID: icone icone Required field. Leaving this empty will raise errors! Vereist veld. Dit veld leeglaten leidt tot foutmeldingen! Value(s) Waarde(s) Version Versie The <em style='color: %1'><strong>highlighted</strong></em> fields in the form or one of their values are available only on specific PostgreSQL versions. Generating SQL code for versions other than those specified in the fields' tooltips may create incompatible code. BaseRelationship rel_%1_%2 rel_%1_%2 BaseTableView Toggles the extended attributes display Connected rels: %1 Verbonden relaties: %1 BugReportForm Bug Report Bug Rapport Bug report Bug rapport Create Versturen &Cancel &Annuleren Use the form below to generate a complete bug report. Please, try to be as clear as possible when describing the actions that can reproduce the bug. Additionally, it's important to attach a sample database model so that the bug can be quickly discovered and fixed! Gebruik dit formulier om een volledig bug rapport aan te maken. Gelieve zo volledig en duidelijk mogelijk de actie die tot de bug leidden, te beschrijven. Indien mogelijk, voeg een voorbeeld database model toe aan dit rapport zodat de bug snel gevonden en gecorigeerd kan worden! Report Rapport Issue details Probleeminformatie Output: Output: Select the report's output folder Selecteer de output-map voor het rapport ... ... <html><head/><body><p>If you prefer it's possible to report this issue anytime on pgModeler's project repository at <a href="http://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration: underline; color:#0057ae;">GitHub</span></a>. </p></body></html> <html><head/><body><p>Indien u wenst kan u bugs ook rapporten via pgModeler's project repository op <a href="http://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration: underline; color:#0057ae;">GitHub</span></a>. </p></body></html> Database Model Database Model Attach the below database model file to be debugged. Voeg het database model waarmee het probleem zich voordoet toe. Attach a different database model Voeg een ander database model toe Bug report successfuly generated! Please, send the file <strong>%1</strong> to <em>%2</em> in order be analyzed. Thank you for the collaboration! Het bug rapport werd gegeneerd! Gelieve het bestand <strong>%1</strong> naar <em>%2</em> te sturen zodat het kan worden gebruikt bij het debuggen. Hartelijk dank voor je bijdrage! Load model Laad model Database model (*.dbm);;All files (*.*) Database model (*.dbm);;Alle bestanden (*.*) Select report output folder Selecteer de rapport-uitvoer map BulkDataEditWidget Bulk data edit CastWidget I&mplicit Assignment Toewijzing Input / Output Invoer / Uitvoer Conversion Func.: Conversie-functie: Cast Type: Cast Type: E&xplicit Source data type Bron data type Target data type Doel data type The function to be assigned to a cast from <em><strong>typeA</strong></em> to <em><strong>typeB</strong></em> must have the following signature: <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>. De functie die wordt gebruikt bij den cast van <em><strong>typeA</strong></em> naar <em><strong>typeB</strong></em> moet de volgende signature hebben:: <em><strong>typeB</strong> functie(<strong>typeA</strong>, integer, boolean)</em>. CodeCompletionWidget Make &persistent Makes the widget closable only by ESC key or mouse click on other controls. Zorgt ervoor dat widgets enkel kunnen worden gesloten via de ESC toets of via een muisklik op andere controls. SQL Keyword SQL Sleutelwoord (no items found.) (geen items gevonden.) CollationWidget Locale: Locale: Encoding: Codering: LC_COLLATE: LC_CTYPE: The fields <strong><em>Collation</em></strong>, <strong><em>Locale</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> are mutually exclusive, so you have to set only one of them in order to properly handle a collation. De velden <strong><em>Sortering</em></strong>, <strong><em>Locale</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> zijn onderling uitsluitend, om een sortering correct te gebruiken hoeft u slechts één van deze velden in te stellen. Not defined Niet gedefinieerd ColorPickerWidget Form Venster Generate random color(s) Genereer willekeurige kleur(en) Alt+R Alt+R Select color Selecteer kleur ColumnWidget Default Value: Standaardwaarde: Edit the underlying sequence's attributes Edit sequence Identity: E&xpression: &NOT NULL Se&quence: ConfigurationForm pgModeler Configuration pgModeler Configuratie General Algemeen Relationships Relaties Appearance Voorkomen Connections Verbindingen Snippets Snippets Plug-ins Plug-ins Defaults Standaard waarden &Apply &Toepassen &Cancel &Annuleren In some cases restore the default settings related to it may solve the problem. Would like to do that? Restore Any modification made until now in the current section will be lost! Do you really want to restore default settings? De waarden in de huidige sectie zullen worden overschreven! Bent u er zeker van dat u de standaard waarden wilt instellen? ConnectionsConfigWidget Password: Wachtwoord: Connection Alias: Verbindingsalias: Connection DB: Verbinding DB: Host/Port: Host/Poort: User: Gebruiker: Timeout: Timeout: SSL Mode: SSL Modus: Disable Uit Diff Diff Export Exporteer Import Importeren Validation Security Allow Toegelaten Require Vereist AC verification AC verificatie Full verification Volledige verificatie Kerberos Server: Client Certificate: Client Certificaat: Revoked Certs.: Herroepen Certs: Client Key: Client Sleutel: Root Certificate: Root Certificaat: ~/.postgresql/root.crt Connections: Verbindingen: second(s) Second(en) Force GSSAPI Forceer GSSAPI ~/.postgresql/postgresql.crt Add Toevoegen Update Updaten Test Test ~/.postgresql/root.crl ~/.postgresql/postgresql.key Create new connection Maak een nieuwe verbinding Edit database connections Cancel edition Annuleer aanpassingen Duplicate the selected connection Dupliceer de geselecteerde verbinding Edit selected connection Pas de geselecteerde verbinding aan Delete selected connection Verwijder de geselecteerde verbinding General Algemeen Other params: Specify additional connection parameters in the form [param]=[value]. These parameters are described in the <strong>libpq</strong> chapter at PostgreSQL docs. Default for: Automatically browses the named database when using this connection to manage databases on <strong>Manage</strong> view. Bladert automatisch door de genoemde database wanneer deze verbinding wordt gebruikt om databases te beheren via de <strong>Beheer</strong> view. Auto browse Indicates in which operations (diff, export, import or validation) the connection is used if none is explicitly specified by the user. Success Success Connection successfully established! Server details: PID: `%1' Protocol: `%2' Version: `%3' There is a connection being created or edited! Do you want to save it? Wenst u de nieuwe of aan te passen verbinding op te slaan vooraleer verder te gaan? Found %1 connection(s) %1 verbinding(en) gevonden No connections found Geen verbindingen gevonden Edit connections ConstraintWidget Match: Evenaar: Constraint Type: Constraint Type: This attribute cannot be changed once the object is created. Dit attribuut kan niet worden aangepast eens het object is aangemaakt. Expression: Expressie: Deferrable: Uitstelbaar: Deferral: Uitstel: ON DELETE: ON UPDATE: No inherit: Geen overerving: Exclude Elements Elementen Uitsluiten Columns Kolommen Column: Kolom: Referenced Columns Gerefereerde Kolommen Table: Tabel: Indexing: Indexering: Fill Factor: Vul-factor: Column Kolom Type Type Columns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form. Kolommen die werden ingesloten via relaties kunnen niet manueel worden toegevoegd aan of verwijderd uit de primaire sleutel. Dit soort aanpassingen kan tot fouten leiden. Om een primaire sleutel aan te maken via kolommen die werden ingesloten door relaties, gebruik de volgende opties: identifier veld, attributen & constraints tab-blad of primaire sleutel tab=blad in het relatie-venster. ConversionWidget Source Encoding: Broncodering: Target Encoding: Doelcodering: Conversion Func.: Conversie-functie: Default Conversion: Standaard Conversie: The function to be assigned to an encoding conversion must have the following signature: <em>void function(integer, integer, cstring, internal, integer)</em>. Een functie die wordt toegewezen aan een coderingsconversie met de volgende signature hebben: <em>void functie(integer, integer, cstring, internal, integet)</em>. CrashHandlerForm Crash Handler Crash Handler Stack trace Stack trace Input: Invoer: Load report file for analysis Laad rapport bestand voor analyze Save the attached model file on the filesystem Bewaar het ingevoegde model bestaand op het bestandssysteem pgModeler bug report (*.bug);;All files (*.*) pgModeler bug rapport (*.bug);;Alle bestanden (*.*) Load report Laad rapport Save model Bewaar model Database model (*.dbm);;All files (*.*) Database model (*.dbm);;Alle bestanden (*.*) Crash handler Crash Handler Bug report analysis mode activated. Bug rapport analyze modus is geactiveerd. Oops! pgModeler just crashed! Oeps! pgModeler crashte! We apologize for what happened! It is clear that a nasty bug caused that. Please fill out the form below describing your actions before pgModeler quit unexpectedly. This will help on bug extermination and improve the software. We verontschuldigen ons voor wat net gebeurde! Het is overduidelijk dat een ernstige bug dit veroorzaakte. Gelieve het formuleer hieronder in te vullen met een beschrijving van wat u deed vooraleer pgModeler onverwachts afsloot. Dit zal ons helpen om deze bug te corrigeren en de software te verbeteren. CsvLoadWidget Form Venster Load CSV CSV File: Select output file Selecteer uitvoerbestand ... ... Separator: Use the first row as column names in the CSV file. By unchecking this option the first row is used as data. Columns in the first row Load Laden Semicolon (;) Comma (,) Space Spatie Tabulation Other ; Text delimiter: " Load CSV file Comma-separted values (*.csv);;All files (*.*) CustomSQLWidget Add custom SQL code SQL code SQL code Puts an SELECT command template at current cursor position. Plaatst een SELECT commando-sjabloon op de huidige positie van de cursor. &SELECT &SELECT Puts an INSERT command template at current cursor position. Plaatst een INSERT commando-sjabloon op de huidige positie van de cursor. &INSERT &INSERT Puts an UPDATE command template at current cursor position. Plaatst een UPDATE commando-sjabloon op de huidige positie van de cursor. &UPDATE &UPDATE Puts an DELETE command template at current cursor position. Plaatst een DELETE commando-sjabloon op de huidige positie van de cursor. &DELETE &DELETE &Clear &Leegmaken Append SQL Nagevoegde SQL Append the SQL code at the very end of model definition. Unchecking this will cause the SQL to be appended at the end of CREATE DATABASE command. Plaats de SQL code op het einde van de modeldefinitie. Deze optie afvinken zorgt ervoor dat de SQL wordt ingevoegd na het CREATE DATABASE commando. Append at end of model definition. Voeg toe aan het einde van de modeldefinitie. Prepend SQL Voorgevoegde SQL Prepend at beginning of model definition. Voeg toe aan het begin van de modeldefinitie. <html><head/><body><p>Use custom commands with extreme caution because you can change the semantics of the entire model when running SQL validation or export processes. Additionally, depending on the amount of commands, those processes can have their performance sensibly degradated.</p></body></html> <html><head/><body><p>Wees voorzichtig bij het gebruik van aangepaste SQL. Dit kan leiden tot een verandering van de betekenis van het volledige model wanneer SQL validatie wordt uigevoerd of wanneer het model wordt geëxporteerd. Het is ook mogelijk, afhankelijk van de hoeveelheid commando's, dat de prestaties van deze processen voelbaar en negatief kunnen worden beïnvloed.</p></body></html> Generic INSERT Generische INSERT Include serial columns Sluit seriële kolommen in Exclude serial columns Sluit seriële kolommen uit Generic SELECT Generische SELECT Table SELECT Tabel SELECT Generic UPDATE Generische UPDATE Table UPDATE Tabel UPDATE Generic DELETE Generische DELETE Table DELETE Tabel DELETE DataManipulationForm Data Manipulation Datamanipulatie &Close &Sluiten Refresh listing De lijst wordt vernieuwd F5 F5 Save changes Aanpassingen opslaan Ctrl+S Ctrl+S Export results to CSV file Exporteer de resultaten naar een CSV bestand Ctrl+X Ctrl+X Undo modifications Aanpassingen ongedaan maken Ctrl+Z Ctrl+Z Ins Ins Mark the selected rows to be deleted Markeer de geselecteerde rij als 'te verwijderen' Del Del Duplicate the selected rows Ctrl+D Add new rows from a CSV file Filter the result set Filter de resultaten Table: Tabel: Schema: Schema: in in Hide views Verberg views Filter expression Filterexpressie Order && Limit Sortering && Limiet results (Use <strong>0</strong> for no limit) Column: Kolom: <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> Copy items on the grid Paste items on the grid Ctrl+V Ctrl+V Browse referenced tables Change the values of all selected cells at once Ctrl+E Ctrl+E ASC ASC Add empty rows DESC DESC Limit in: Limiet in: Add Item Item Toevoegen Remove Item Item Verwijderen Clear the order by columns list Maak de sorterings-kolomlijst leeg Move selected item up Verplaats het geselecteerde item naar boven Move selected item down Verplaats het geselecteerde item naar beneden Copy as CSV Copy as text Copy items Pase items Browse tables Duplicate row(s) Delete row(s) Edit cell(s) <strong>WARNING: </strong> There are some changed rows waiting the commit! Do you really want to discard them and retrieve the data now? Rows returned: <strong>%1</strong>&nbsp;&nbsp;&nbsp; <em>(Limit: <strong>%1</strong>)</em> <em>(Limiet: <strong>%1</strong>)</em> none Column Kolom No objects found Geen objecten gevonden Found %1 object(s) %1 object(en) gevonden Views can't have their data handled through this grid, this way, all operations are disabled. Data van views kan niet worden aangepast via dit raster, alle operaties zijn uitgeschakeld. The selected table doesn't owns a primary key! Updates and deletes will be performed by considering all columns as primary key. <strong>WARNING:</strong> those operations can affect more than one row. De geselecteerde tabel bevat geen primary key! Update en delete commando's worden uitgevoerd door alle kolommen als primary key te beschouwen. <strong>OPGEPAST</strong> deze acties kunnen meer dan één rij beïnvloeden. Referenced tables (none) Referrer tables This row is marked to be %1 Deze rij is als %1 gemarkeerd. deleted verwijderd updated aangepast inserted ingevoegd [binary data] [binaire data] <strong>WARNING:</strong> Once commited its not possible to undo the changes! Proceed with saving? <strong>OPGEPAST: </strong> Eens toegepast is het niet langer mogelijk om aanpassingen ongedaan te maken! Bent u zeker dat u wilt opslaan? delete delete update update insert insert DatabaseExplorerWidget Form Venster Data &Grid Data &Grid Alt+G Alt+G ... ... Open the grid to visualize or edit data Open a new SQL execution pane Ctrl+F6 Ctrl+F6 Update the objects tree Toggle the display of filter widget as well the system/extension objects. Sort items alphabetically. When unchecked, items are sorted by OID. Sort alphabetically Drop this database Verwijder deze database Expands all items Alle items uitklappen Collapses all items Alle items inklappen Filters the currently loaded items in the tree by using a pattern and matching their names. If <strong>By OID</strong> is checked the pattern is interpreted as an integer value that represents the object id (OID). <br><br/><strong>HINT:</strong> if you need to search the entire database use the full refresh (<strong>Ctrl+F5</strong>) prior the filtering. Filter: Filter: By OID Per OID Attribute Attribuut Value Waarde Show raw attributes (not found, OID: %1) (niet gevonden, OID: %1) -- Source code not generated! Hit F7 or middle-click the item to load it. -- Admin. roles Admin. rollen Alignment Uitlijning Analyze func. Analyzeer func. Arg. count Aantal Argumenten Arg. default count Standaard aantal argument Arg. defaults Standaardargumenten Arg. modes Argumentenmodus Arg. names Argumentennamen Arg. types Argumententypes Behavior type Gedragstype By value Per waarde Cast type Cast type Category Categorie Collatable Sorteerbaar Collation Sortering Comment Commentaar Commutator Op. Commutator Op. Configuration Configuratie Conn. limit Verbindingslimiet Constraint Constraint Create DB Maak DB aan Create role Maak rol aan Curr. version Huidige versie Default Standaard Default value Standaardwaarde Definition Definitie Delimiter Delimiter Dest. type Doeltype Dimension Dimensie Directory Map Dest. encoding Doelcodering Element Element Encoding Codering Encrypted Geëncrypteerd Enumerations Enumeraties Exec. cost Uitvoeringskost Expression Expressie Op. family Operator Familie Final func. Finale functie Function Functie Func. type Functietype Handler func. Behandelende Functie Handles type Behandelt type Hashes Hashes Index type Indextype Inherit Erft over Ini. condition Initiële Vereiste: Inline func. Inline Functie Input func. Invoerfunctie Internal length Interne lengte Interval type Intervalstype I/O cast I/O cast Join func. Join func. Language Taal LC COLLATE LC COLLATE LC CTYPE LC CTYPE Leak proof Lekdicht Left type Linkse type Length Lengte Library Bibliotheek Can login Kan inloggen Materialized Gematerialiseerd Member roles Lid-rollen Merges Samenvoegingen Name Naam Negator op. Negator op. Not null Niet null Object type Objecttype OID OID With OIDs Met OIDs Old version Oude versie Operator Operator Operator func. Operator functie Output func. Uitvoerfunctie Owner Eigenaar Owner column Bezittende kolom Parents Ouders Password Wachtwoord Permissions Machtigingen Precision Precisie Preferred Voorkeur Range attributes Omvangsattributen Receive func. Ontvangersfunctie Ref. roles Ref. rollen Replication Replicatie Restriction func. Belemmeringsfunctie Return type Resultaatstype Returns SETOF Geeft SETOF terug Right type Rechtse type Rows amount Aantal rijen Schema Schema Security type Beveiligingstype Send func. Zendfunctie Sort op. Sorteeroperato Source type Brontype Src. encoding Broncodering State type Statustype Storage Opslag Superuser Superuser Tablespace Tablespace Type mod. in func. Type mod. in functie Type mod. out func. Type mod. buiten functie Transition func. Transitiefunctie Trusted Vertrouwd Type Type Type attribute Typeattribuut Types Types Unlogged Niet gelogged Validator func. Validatiefunctie Validity Geldigheid Windows func. Windowing func. false onwaar true waar Cache value Cachewaarde Cycle Cyclus Increment Toename Max. value Max. waarde Min. value Min. waarde Start value Startwaarde Last value Laatste waarde Subtype Subtype Op. class Op. klasse Canonical func. Canonische func. Subtype diff func. Subtype diff func. Deferrable Uitstelbaar For each row Voor elke rij Firing Afvuring On insert Bij insert On delete Bij delete On update Bij update On truncate Bij truncate Arguments Argumenten Table Tabel Trigger func. Trigger func. Columns Kolommen Condition Voorwaarde Deferment Uitstel Event Event Execution mode Uitvoeringsmodus Commands Commando's Position Positie Comparison type Vergelijkingstype Ref. columns Ref. columns Expressions Expressies Fill factor Vulfactor No inherit Geen overerving Op. classes Op. klasses Operators Operators Ref. table Ref. tabel Unique Uniek Predicate Predicaat Collations Sorteringen Inherited Overgeërfd Client encoding Configuration file Data directory Dynamic library path Dynamic shared memory Hba file Listen addresses Max. connections Listen port Server encoding SSL SSL ca file SSL cert file SSL crl file SSL key file Server version Ident file Password encryption Connection ID Server PID Server protocol Referrers Identity Command USING expr. CHECK expr. Roles Rollen RLS enabled RLS forced Show objects filter Show system objects Show extension objects Snippets Snippets Drop object Verwijder object Drop cascade Verwijder cascade Truncate Truncate Trunc. cascade Trunc. cascade Show data Toon data Reload properties Eigenschappen herladen Update Updaten Rename Hernoem Source code Broncode Quick refresh Full refresh -- Source code unavailable for this kind of object -- Do you really want to drop the object <strong>%1</strong> <em>(%2)</em>? Bent u zeker dat u het object <strong>%1</strong> <em>%2</em> wilt verwijderen? Do you really want to <strong>cascade</strong> drop the object <strong>%1</strong> <em>(%2)</em>? This action will drop all the other objects that depends on it. Bent u er zeker van dat u het object &lt;strong&gt;%1&lt;/strong&gt; &lt;em&gt;(%2)&lt;/em&gt; via &lt;strong&gt;cascade&lt;/strong&gt; wilt verwijderen? Deze actie verwijdert ook alle objecten die afhankelijk zijn van dit object. Do you really want to truncate the table <strong>%1</strong>? Bent u zeker dat u de tabel <strong>%1</strong> wil truncaten? Do you really want to <strong>cascade</strong> truncate the table <strong>%1</strong>? This action will truncate all the tables that depends on it? Bent u er zeker van dat u de tabel <strong>%1</strong> <em>(%2)</em> via <strong>cascade</strong> wilt verwijderen? Deze actie verwijdert ook alle tabellen die afhankelijk zijn van deze tabel. Also restart sequences Src. table: %1 Src. column(s): %2 Ref. table: %1 Ref. column(s): %2 -- Source code genaration for buil-in and base types currently unavailable -- -- Source code unavailable for the object %1 (%2). -- Warning Opgepast You're running a demonstration version! The data manipulation feature is available only in the full version! Dit is een demonstratie-versie. De data manipulatie functionaliteit is enkel beschikbaar in de volledige versie! <strong>CAUTION:</strong> You are about to drop the entire database <strong>%1</strong>! All data will be completely wiped out. Do you really want to proceed? <strong>PAS OP:</strong> U staat op het punt om de volledige database <strong>%1</strong> te verwijderen! Alle data zal verloren gaan. Bent u zeker dat u verder wilt gaan? DatabaseImportForm Settings Instellingen Options Opties Connection: Verbinding: Resolve some of the object's dependencies by querying the catalog when a needed object does not exists on the loaded set. In some cases it's necessary to combine this option with others below. This option does not applies to database level objects like role, tablespace and language as well for data types, extensions. Automatically resolve dependencies Los afhankelijkheden automatisch op Random colors will be assigned to imported relationships facilitating the identification of links between tables mainly in large models. Om de identificatie van de links tussen tabellen in grote modellen makkelijker te maken zullen willekeurige kleuren worden gebruikt om de geïmporteerde relaties aan te duiden. Random colors for relationships Willekeurige kleuren voor relaties Enables the import of system built-in objects. It's recommend to select only those objects that are directly referenced by the ones to be imported. WARNING: Try to import a huge set of system objects can bloat the resultant model or even crash pgModeler due to memory/cpu overuse. Activeert het importeren van ingebouwde systeemobjecten. Het is aangeraden om enkel objecten te importeren waarnaar onmiddellijk worden gerefereerd. PAS OP: grote hoeveelheden systeemobjecten importeren kan leiden tot een opgezwollen resultaatsmodel of kan zelfs pgModeler tot een crash leiden omwillen van geheugen- of processor-uitputting. Import database Import system objects Importeer systeemobjecten Enables the import of objects created by extensions. Generally there is no need to check this option but if there are objects in the database that directly references this category of objects this mode must be enabled. Activeert het importeren van objecten die werden aangemaakt door uitbreidingen. Algemeen gezien is er geen nood om deze optie aan te vinken tenzij er objecten in de databse leven die onmiddellijk naar objecten van deze categorie refereren. Import extension objects Importeer uitbreidingsobjecten pgModeler ignores import errors and will try to create as many as possible objects. By checking this option the import operation will be not aborted but an incomplete model will be constructed. This option generates a log file on pgModeler's temp directory. pgModeler negeert importeerfouten en zal pogen om zoveel mogelijk objecten aan te maken. Door deze optie aan te vinken zal de importeer-taak niet afbreken bij een fout maar zal een onvolledig model worden aangemaakt. Deze optie creëert een log bestand in de tijdelijke map voor pgModeler. Ignore import errors Negeer importeerfouten All catalog queries as well the created objects' source code are printed to standard output (stdout). Alle catalogusqueries plus the broncode van de aangemaakte objecten wordt naar de standaard output (stdout) geprint. Debug mode Debugmodus Create all imported objects in the current working model instead of create a new one. Maak alle geïmporteerde objecten aan in het huidige model en maak geen nieuw model aan. Import objects to the working model Importeer de objecten in het huidige model Database Database Filter: Filter: Filter object by it's OID Filter objecten per hun OID By OID Per OID Select all objects Selecteer alle objecten ... ... Clear object selection Maak de objectselectie ongedaan Expands all items Alle items uitklappen Collapses all items Alle items inklappen Output Uitvoer Progress label... Vooruitgangslabel... Cancel Annuleren &Import &Close &Sluiten <strong>ATTENTION:</strong> You are about to import objects to the current working model! This action will cause irreversible changes to it even in case of critical errors during the process. Do you want to proceed? <strong>OPGEPAST:</strong> U staat op het punt om objecten te importeren in het huidige model! Deze actie zal onherroepbare verandering teweegbrengen, zelfs wanneer kritische problemen opduiken gedurende dit proces. Bent u zeker dat u verder wilt gaan? Importing process aborted! Het import proces werd afgebroken! Importing process canceled by user! Het import proces werd geannuleerd door de gebruiker! Importing process sucessfuly ended! Het import proces werd succesvol beëindigt! No databases found Er werd database gevonden Found %1 database(s) Er werd(en) %1 database(s) gevonden Retrieving objects from database... De objecten worden van de database opgehaald... Retrieving cluster level objects... De objecten op cluster-niveau worden opgehaald... Retrieving objects of schema `%1'... De objecten uit schema `%1' worden opgehaald... Retrieving objects of `%1' (%2)... This is a PostgreSQL built-in data type and cannot be imported. Dit is een ingebouwd type van PostgreSQL en kan niet worden geïmporteerd. This is a pgModeler's built-in object. It will be ignored if checked by user. Dit is een ingebouwd object van pgModeler. Dit object wordt genegeerd indien aangevinkt door de gebruiker. DatabaseImportHelper Retrieving system objects... `%1' Systeemobjecten ophalen... `%1' Retrieving objects... `%1' Objecten ophalen... `%1' Creating object `%1' (%2), oid `%3'... Trying to recreate object `%1' (%2), oid `%3'... Creating object `%1' (%2)... Object aanmaken `%1' (%2)... Import failed to recreate some objects in `%1' tries. Het importeren faalde na `%1' pogingen om sommige objecten te her-creëeren. Creating permissions for object `%1' (%2)... Machtigingen aanmaken voor object `%1' (%2)... Creating columns permissions... Kolommachtigingen aanmaken... Updating relationships of `%1' (%2)... Updaten van de relaties voor `%1' (%2)... Validating relationships... The database import ended but some errors were generated and saved into the log file `%1'. This file will last until pgModeler quit. Het importeren van de database is voltooid maar er werden enkele fouten gegenereerd, deze werden opgeslagen in het log-bestand `%1'. Dit bestand zal worden verwijderd wanneer u pgModeler afsluit. Destroying unused detached columns... De vrijstaande kolommen worden verwijderd... Assigning sequences to columns... Creating table inheritances... Tabel-overervingen worden aangemaakt... DatabaseModel The demonstration version can create only `%1' instances of each object type! You've reach this limit for the type: `%2' U kan slechts `%1' instancies per object type aanmaken in demonstratie-versies! U heeft deze limiet bereikt voor het type `%2' Loading: `%1' (%2) Bezig met laden: `%1' (%2) Validating relationships... Generating %1 code: `%2' (%3) Saving object `%1' (%2) Saving metadata of the object `%1' (%2) Metadata file successfully saved! Process successfully ended but no metadata was saved! Creating object `%1' (%2) Object `%1' (%2) wordt aangemaakt. Object `%1' (%2) already exists. Ignoring. Loading metadata for object `%1' (%2) Object `%1' (%2) not found. Ignoring metadata. Metadata file successfully loaded! DatabaseWidget Attributes Attributen LC_COLLATE: LC_CTYPE: Template DB: Sjabloon DB: Model Author: Modelauteur: Encoding: Codering: Connections: Verbindingen: Options: Opties: Allow connections Is template Default Objects Standaardobjecten Tablespace: Tablespace: Schema: Schema: Collation: Sortering: Owner: Eigenaar: The fields <strong>LC_COLLATE</strong> and <strong>LC_CTYPE</strong> have pre-configured values based upon the running system. You can freely modify those values if you intend to export the model to another host. De velden <strong>LC_COLLATE</strong> en <strong>LC_CTYPE</strong> hebben voorgedefinieerde waarden gebasseerd op het lopende systeem. Deze waarden kunnen vrij worden aangepast indien u dit model naar een andere host wenst te exporteren. Use the above fields to specify the default attributes assigned to new objects created on the database model. Leaving a field empty will cause PostgreSQL to use the default values when exporting the model. Gebruik de velden hierboven om de waarden voor standaard attributen die aan nieuwe objecten worden toegewezen, te specifieren. Het veld leeglaten zorgt ervoor dat PostgreSQL zijn standaardwaarden gebruikt bij het exporteren. Default Standaard DomainWidget Attributes Attributen Default Value: Standaardwaarde: Not null Niet null Check constraints Expression: Expressie: Name: Naam: Name Naam Expression Expressie DonateWidget Form Venster Donate to pgModeler Doneer aan pgModeler Hide this widget Verberg dit widget ... ... <html><head/><body><p>pgModeler is brought to you thanks to a <span style=" font-style:italic;">great effort to create and distribute a quality product</span>. This project is reaching out levels of maturity never imagined. All this is the result of a joint work between its author and the <span style=" font-weight:600;">Open Source community</span>. <br/><br/>This software has a long way to go yet and with your help we'll keep maintaining the good job and bringing new improvements on each release. If you did like pgModeler and thinks it deserves a contribution please make a donation!</p></body></html> <html><head/><body><p>pgModeler komt tot stand dankzij <span style=" font-style:italic;">een grote inzet om een kwaliteitsvol product te bezorgen</span>. Dit project heeft een niveau van volwassenheid bereikt die nooit was voorzien. Dit alles is het resultaat van de samenwerken tussen de auteur(s) en de <span style=" font-weight:600;">Open Source gemeenschap</span>. <br/><br/>Dit product heeft nog een lange weg af te leggen; met uw hulp kunnen we deze uitdaging aan en kunnen we nieuwe verbeteringen en toevoegingen aan dit product blijven publiceren bij elke release. Als u vertrouwd op pgMOdeler en denkt dat u kan bijdragen, gelieve dan een donatie te maken aan pgModeler!</p></body></html> I want to help! Ik wil helpen! ElementsWidget Form Venster Column: Kolom: Expression: Expressie: Collation: Sortering: Operator Class: Operator Klasse: Operator: Operator: Sorting: Sortering: Ascending Stijgend Descending Afdalend Nulls first Nulls eerst Element Element Type Type Operator Class Operator Klasse Sorting Sortering Nulls First Nulls eerst Collation Sortering Operator Operator Expression Expressie Yes Ja No Nee EventTriggerWidget Event: Event: Function: Functie: Filter Filter Tag: Tag: Tag command Tag commando Exception Assignment of a pseudo-type to the type of the column! Poging to toewijzing van een pseudo-type als het type van een kolom! Assignment of a precision greater than the length of the type! Toewijzing van een waarde met grotere precisie dan de toegewezen locatie! Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! Toewijzing van een ongeldige precisie aan het type time, timestamp of interval. De precisie moet in dit geval kleiner dan of gelijk zijn aan 6! Assignment of a not allocated column to object `%1' (%2)! Toewijzing van een niet-gealloceerde kolom aan het object `%1' (%2)! Reference to a column which index is out of the capacity of the column list! Referentie naar een kolom wiens index buiten de capaciteit van de kolomlijst ligt! Assignment of not allocated object! Toewijzing van een niet-gealloceerd object! Assignment of a not allocated schema to object `%1' (%2)! Toewijzing van een niet-gealloceerde schema aan het object `%1' (%2)! The object `%1' (%2) has inconsistent SQL or XML definition! het object `%1' (%2) heeft een inconsistente SQL of XML definitie! The object `%1' (%2) already exists on `%3' (%4)! Het object `%1' (%2) bestaat reeds op `%3' (%4)! The object `%1' (%2) cannot be assigned because there is already exists in the container object `%3'! Het object `%1' (%2) kan niet worden toegewezen omdat het reeds bestaat in het container-object `%3'! Assigning object of an invalid type! Toewijzing van een object van een ongeldig type! Removing an object of an invalid type! Verwijdering van een object van een ongeldig type! Obtaining an object of an invalid type! Het verkregen object is van een ongeldig type! Assignment of empty name to table return type! Toewijzing van een lege naam aan een tabel-terugkeertype! The insertion of the parameter `%1' will not be possible because there is another parameter with same name in the function `%2'! Het toevoegen van parameter `%1' is niet mogelijk omdat de functie `%2' reeds een parameter met deze naam bevat! The insertion of the table return type `%1' will not be possible because there is another return type with the same name in the `%2'! Het invoegen van tabel-terugkeertype `%1' is niet mogelijk omdat er reeds een terugkeer-type met deze naam bestaat in `%2'! Reference to a parameter which index is out of the parameter list bounds! Een referentie naar een parameter met een index die buiten de limieten ligt van de parameterlijst! Reference to an event which does not belongs to trigger! Een referentie naar een event die niet tot de trigger behoort! The column `%1' cannot be assigned to the trigger `%2' because they belongs to different parent tables! De kolom `%1' kan niet toegewezen worden aan de trigger `%2' omdat deze tot verschillende ouder-tabellen behoren! Assignment of a not allocated function to object `%1' (%2)! Toewijzing van een niet-gealloceerde functie aan het object `%1' (%2)! Assignment of a function which return type is different from `%1'! Toewijzing van een functie waarvan het terugkeertype verschilt van `%1'! Assignment of a function which parameter count is invalid to the object `%1' (%2)! Toewijzing van een functie waarvan het aantal parameters ongeldig is voor het object `%1' (%2)! Assignment of a function which language is invalid! Toewijzing van een functie waarvan de taal ongeldig is! Event trigger function must be coded in any language other than SQL! Event triggerfunctie moet geschreven zijn in een taal die verschilt van SQL! Assignment of not allocated table to object `%1' (%2)! Toewijzing van een niet-gealloceerde tabel aan object `%1' (%2)! Reference to an argument which index is out of argument list bounds! Referentie naar een argument met een index die buiten de limieten ligt van de argumentenlijst! Assignment of empty name to an object! Toewijzing van een lege naam aan een object! Assignment of a name which contains invalid characters! Toewijzen van een naam die ongeldige karakters bevat! Assignment of a name which length exceeds the maximum of 63 characters! Toewijzing van een naam die de maximumlengte van 63 karakters overtreed! Assignment of schema object which type is invalid! Toewijzing van een schemaobject wiens type ongeldig is! Assignment of tablespace object with invalid type! Toewijzing van een tablespaceobject met een ongeldig type! Assignment of tablespace to an invalid object! Toewijzing van een tablespace aan een ongeldig object! Assignment of tablespace to a constraint which type is invalid! To belong to a tablespace the constraint must be a primary key or unique! Toewijzing van een tablespace aan een constraint wiens type ongeldig is! Om tot een tablespace te behoren moet een constraint een primary key of een unieke sleutel zijn! Assignment of owner object which type is invalid! Toewijzing van een eigenaarsobject wiens type ongeldig is! Assignment of owner to an invalid object! Toewijzing van een eigenaar aan een ongeldig object! Assignment of appended or prepended SQL to an invalid object! Toewijzing van toegevoegde of voorgevoegde SQL aan een ongeldig object! Reference to a function with invalid type! Referentie naar een functie met een ongeldig type! Reference to an argument of the operator with invalid type! Referentie naar een argument van de operator met een ongeldig type! Reference to an operator with invalid type! Referentie naar een operator met een ongeldig type! Assignment of value to an invalid option type on role! Toewijzing van een waarde aan een ongeldig optietype van een rol! Reference to an invalid role type! Referentie naar een ongeldig rol-type! The insertion of the role `%1' is not possible because this is already being referenced by role `%2'! Het invoegen van de rol `%1' is onmogelijk omdat deze reeds wordt gerefereerd door rol `%2'! Reference redundancy detected by having the role `%1' referencing the role `%2'! Referentieredundantie gedetecteerd doordat de rol `%1' refereert naar rol `%2'! The role `%1' can not be listed as a member of itself! De rol `%1' kan geen lid zijn van zichzelf! Reference to a role which index is out of role list bounds! Referentie naar een rol wiens index buiten de limieten van de rollelijst ligt! Insertion of empty command to the rule! Invoeging van een leeg commando aan de regel! Reference to a command which index is out of the command list bounds! Referentie naar een commando wiens index buiten de limieten van de commandolijst ligt! Is not possible to create a self generalization/copy relationship! The table can not inherit or copy their own attributes! Het is onmodelijk om een zelf-generalisatie/kopieer-relatie aan te maken! De tabel kan niet van zichzelf erven of zijn eigen attributen kopieren! Assignment of an object that already belongs to another table! Toewijzing van een object dat reeds aan een andere tabel toehoort! Assignment of a schema to the sequence which differs from the schema of the owner table! Toewijzing van een schema aan de sequentie die verschilt van het schema van de eigenaars-tabel! Assignment of an invalid value to one of the sequence attributes! Toewijzing van een ongeldige waarde aan een van de sequentie-attributen! Assignment of a minimum value to the sequence which is greater than the maximum value! Toewijzing van een minimumwaarde die groter is dan de maximumwaarde van de sequentie! Assignment of a start value to the sequence which is extrapolating the range defined by minimum and maximum values! Toewijzing van een startwaarde aan de sequentie die de omvang extrapoleerd als gedefinieerd door de minimum- en maximumwaarden! Assignment of a null increment value to the sequence! Toewijzing van een null-vermeerdering aan de sequentie! Assignment of null cache value to the sequence! Toewijzing van null-cachewaarden aan de sequentie! Assignment of owner table which is not in the same schema as the sequence `%1'! Toewijzing van een eigenaarstabel die zich niet in hetzelfde schema bevindt als de sequentie `%1'! Assignment of owner table which does not belong to the same owner of the sequence `%1'! Toewijzing van een eigenaarstabel die niet tot dezelfde eigenaar behoort als de sequentie `%1'! Assignment of a nonexistent owner column to the sequence `%1'! Toewijzing van een niet-bestaande eigenaarskolom aan de sequentie `%1'! Assignment of an owner column to the sequence `%1' that is not related to any table! Toewijzing van een eigenaarskolom aan de sequentie `%1' die aan geen enkele tabel gerelateerd is! Reference to a label which index is out of labels list bounds! Referentie naar een label wiens index buiten de limieten ligt van de label-lijst! Allocation of object with invalid type! Allocatie van een object met ongeldig type! Assignment of a function with invalid return type to object `%1' (%2)! Toewijzing van een functie met een ongeldige terugkeerwaarde aan object `%1' (%2)! Assignment of a function with invalid parameter(s) type(s) to object `%1' (%2)! Toewijzing van een functie met ongeldige parametertype(s) aan object `%1' (%2)! Assignment of not allocated language! Toewijzing van een niet-gealloceerde taal! Assignment of language object which type is invalid! Toewijzing van een taalobject wiens type ongeldig is! Reference to data type with an index outside the capacity of data types list! Referentie naar een datatype met een index die buiten de capaciteit van de datatype lijst ligt! Assignment of a null type to object `%1' (%2)! Toewijzing van een null type aan het object `%1' (%2)! Assignment of invalid type to the object! Toewijzing van een ongeldig type aan het object! Assignment of an empty directory to object `%1' (%2)! Toewijzing van een lege map aan object `%1' (%2)! Obtaining types with invalid quantity! Types met ongeldige hoeveelheid verkregen! Insertion of item which already exists in the attributes list of the type! Invoegen van een item dat reeds bestaat in de attributenlijst van het type! Insertion of invalid item in the attributes list of the type! Invoegen van een ongeldig item in de attributenlijst van het type! Insertion of item which already exists in the enumarations list of the type! Invoegen van een item dat reeds bestaat in de enumeratielijst van het type! Insertion of invalid item in the enumerations list of the type! Invoegen van een ongeldig item in de enumeratielijst van het type! Reference to an attribute which index is out of the attributes list bounds! Referentie naar een attribuut met een index die buiten de limieten van de attributenlijst ligt! Reference to an enumeration which index is out of the enumerations list bounds! Referentie naar een enumeratie met een index buiten de limieten van de enumeratielijst! Assignment of invalid configuration to the type! Toewijzing van een ongeldige configuratie aan het type! There is already a relationship between `%1' (%2) and `%3' (%4) in the model! When using relationships of the type generalization, copy and one-to-one there can't be other relationships linked to the pair of tables. Unable to load the configuration file `%1'! Please check if file exists in its folder and/or if it is not corrupted! Invalid syntax in file `%1', line %2, column %3! Invalid instruction `%1' on file `%2', line %3, column %4! Unknown attribute `%1' in file `%2', line %3, column %4! Invalid metacharacter `%1' in file `%2', line %3, column %4! Invalid operator `%1' in comparison expression, file `%2', line %3, column %4! Attribute `%1' with an undefined value in file `%2', line %3, column %4! Attribute `%1' with an invalid name in file `%2', line %3, column %4! Could not access the file or directory `%1'! Make sure that it exists or if the user has access permissions on it! Could not load file `%1'. The same appears to be inconsistent or one of its dependencies (DTD files) has errors or is missing! Unsupported PostgreSQL version (%1) detected! Valid versions are between %2 and %3. Failed to drop the database `%1' because it is defined as the default database for the connection `%2'! The column `%1' must be `NOT NULL' because it composes the primary key of the table `%2'. You need to remove the column from the mentioned contraint in order to disable the `NOT NULL' on it! The identity column `%1' has an invalid data type! The data type must be `smallint', `integer' or `bigint'. Reference to an invalid affected command in policy `%1'! Reference to an invalid special role in policy `%1'! Assignment of an operator which input type count is invalid to aggregate function! Toewijzing van een operatie wiens inputtypehoeveelheid ongeldig is voor een aggregatiefunctie! Assignment of an operator which types of arguments is invalid! Toewijzing van een operator wiens argumententypes ongeldig zijn! Assignment of system reserved name to the object `%1' (%2)! Toewijzing van een systeem-gereserveerde naam aan het object `%1' (%2)! One function with invalid configuration is been used by the object `%1' (%2)! Een functie met ongeldige configuratie wordt gebruikt door het object `%1' (%2)! Assignment of an invalid strategy/support number to an operator class element! Toewijzing van een ongeldig strategy- of supportnummer aan een operatorklasse element! Insertion of element which already exists in the element list! Invoegen van een element dat reeds bestaat in de elementenlijst! Reference to an element which index is out of element list bounds! Referentie naar een element wiens index buiten de limiet van de elementenlijst valt! Reference to an object which index is out of object list bounds! Referentie anar een object wiens index buiten de limiet van de objectenlijst valt! Removal of an object not allocated! Verwijdering van een niet-gealloceerd object! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4)! Het object `%1' (%2) kan niet worden verwijderd omdat object `%3' (%4) ernaar verwijst! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4) that belongs to `%5' (%6)! Het object `%1' (%2) kan niet worden verwijderd omdat object `%3' (%4), dat aan `%5' (%6) toehoort, ernaar verwijst! Operation with object(s) which type(s) is invalid! Operatie met object(en) van een ongeldig type! Reference to object with invalid type! Verwijzing naar een object van een ongeldig type! Operation with object not allocated! Operatie op een niet-gealloceerd object! The creation of the relationship `%1' between the table `%2' and `%3' can not be done because one does not have a primary key. If the relationship is of the type n-n both tables must have primary keys! Het aanmaken van de relatie `%1' tussen de tabellen `%2' en `%3' kan niet worden voltooid omdat deze geen primary key bevatten. Indien de relatie van het type n-n is, moeten beide tabellen over een primary key beschikken! The relationship of the type 1-1 where both tables are mandatory participation is not implemented because it requires fusion between the tables that breaks the modeling done by the user! De relatie van het type 1-1 waar beide tabellen verplicht meespelen is niet geimplementeerd omdat dit een fusie tussen de tabellen vereist die het design van de gebruiker zou breken! Assignment of an invalid expression to the object! Toewijzing van een ongeldige expressie aan het object! Assignment of a primary key to a table which already has one! Toewijzing van een primary key aan een tabel die reeds over een primary key beschikt! Identifier relationship can not be created for a self relationship, relationships of the type n-n, copy or generalization! De identifier-relatie kan niet worden aangemaakt voor een zelf-relatie, relaties van het type n-n, kopie or generalisatie! Unable to create a copy relationship because the column `%1' in table `%2' already exists in table `%3'! De kopie-relatie kon niet worden aangemaakt omdat de kolom `%1' in table `%2' reeds bestaat in tabel `%3'! Unable to create the generalization relationship because the column `%1' in table `%2' can not be merged with the column `%3' of table `%4' because they have incompatible types! De generalisatierelatie kan niet worden aangemaakt omdat de kolom `%1' in tabel `%2' niet kan worden samengevoegd met kolom `%3' van tabel `%4', deze kolommen hebben incompatibele types! Unable to create the generalization relationship because the constraint `%1' in table `%2' can not be merged with the constraint `%3' of table `%4' due to their incompatible composition! De generalisatierelatie kan niet worden aangemaakt omdat de constraint `%1' in tabel `%2' niet kan worden samengevoegd met constraint `%3' van tabel `%4', deze constraints hebben een incompatibele compositie! An attribute can not be added to a copy or generalization relationship! Een attribuut kan niet worden toegevoegd aan een kopie of een generalisatierelatie! A foreign key can not be added to a relationship because is created automatically when this is connected! Een foreign key kan niet worden toegevoegd aan een relatie omdat deze automatisch wordt aangemaakt wanneer deze wordt verbonden! The object `%1' (%2) is referencing the object `%3' (%4) which was not found in the model! Het object `%1' (%2) refereert naar het object `%3' (%4), dit laatste object kon niet worden gevonden in het model! Reference to an user-defined data type that not exists in the model! Referentie naar een gebruikersgedefinieerd type dat niet in het model bestaat! Assignment of invalid maximum size to operation list! Toewijzing van een ongeldige maximumwaarde aan de operatielijst! Unable to write the file or directory `%1'! Make sure the output directory exists, or if the user has write permissions over it! Het bestand of de map `%1' kon niet worden aangemaakt! Zorg ervoor dat de uitvoermap bestaat en dat de gebruiker er schrijfmachtigingen toe heeft! Unable to write the file `%1' due to one or more errors in the definition generation process! Het bestand `%1' kan niet worden geschreven omwille van een of meerdere fouten die optraden tijdens het definitie-generatie proces! The configuration of the relationship `%1' generates a redundancy between the relationships `%2'. Redundancy on identifier or generalization/copy relationships are not accepted since they result in incorrect column spreading making the model inconsistent! De configuratie van de relatie `%1' creeert een redundantie tussen de relaties `%2'. Redundanties van identifiers of generalisatie/kopie-relaties zijn niet geldig omdat deze kunnen leiden tot het incorrect verspreiden van kolommen en dit kan het model inconsistent maken! One or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! Een of meerdere objecten werden als ongeldig gemarkeerd en werde automatisch verwijderd omdat deze naar kolommen refereerden die werden ingesloten door relaties die niet langer bestaan omwille van het ontkoppelen van de relatie of het uitsluiten van zulke gegenereerde kolommen! The primary key `%1' can only be allocated if declared within a block of code that defines a table or relationship! Een foreign key `%1' kan niet worden toegevoegd aan een relatie omdat deze automatisch wordt aangemaakt wanneer deze wordt verbonden! Reference to an invalid privilege type! Referentie naar een ongeldig machtigingstype! Insertion of a role which already exists in the role list of the permission! Invoegen van een rol die reeds in de rollenlijst van de machtiging aanwezig is! Assignment of privilege incompatible with the type of object referenced by permission! Toewijzing van een machtiging die niet compatibel is met het type waarnaar wordt verwezen door de machtiging! There is already a permission on object `%1' (%2) which has one or more equal roles from those present on permission to be assigned to the object! Er bestaat reeds een machtiging op object `%1' (%2) die een of meerdere zelfde rollen bevat als deze die onderdeel uitmaken van de nieuwe machtiging die aan het object worden toegewezen! A permission is referencing the object `%1' (%2) which was not found in the model! Een machtiging refereert naar object `%1' (%2) dat niet in het model kon worden teruggevonden! The object `%1' (%2) can not be created because its not being assigned to any schema! Het object `%1' (%2) kan niet worden aangemaakt omdat het niet aan een schema is toegewezen! The tablespace `%1' can not be inserted into the model because it points to the same directory as the tablespace `%2'! De tablespace `%1' kan niet worden ingevoegd in het model omdat het naar dezelfde map verwijst als de tablespace `%2'! It is not possible to create arrays of domains or sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! Het is niet mogelijk om arrays van domeinen of sequenties (dimensie >= 1) aan te maken! Dit feature is nog niet aanwezig in PostgreSQL! The function `%1' can not get a source code as a definition because its language is set to C. Use the attributes symbol and dynamic library instead! De functie `%1' kan geen broncode bevatten als definitie omdat de taal is ingesteld als 'C'. Gebruik het attributensymbool en dynamische bibliotheek in de plaats! The function `%1' can have the attributes symbol and dynamic library configured only if the language is set to C. For all other cases you must specify a source code that defines it in the DBMS! De functie `%1' kan enkel symboolattributen en een dynamische bibliotheek configureren waneer de taal is ingesteld als zijnde 'C'. In alle andere gevallen moet u broncode specifieren die de functie definieert in het DBMS! The operator `%1' can not be assigned as a comutator of operator `%2' because it has incompatible settings! De operator `%1' kan niet worden toegewezen als comutator van operator `%2' omdat deze incompatibele instellingen heeft! The operator `%1' can not be assigned as negator of operator `%2' because it has incompatible settings! De operator `%1' kan niet worden toegewezen als negator van operator `%2' omdat deze incompatibele instellingen heeft! The type `%1' can not self refer in the attributes `element' or `copy type' or be used as a data type of an attribute in the configuration of a composite type! Het type `%1' kan geen zelf-referentie bevatten in de attributen 'element' of 'kopie type' noch kan het worden gebruikt als het data type van een attribuut in de configuratie van een composiet-type! Assignment of invalid element to type `%1'! Toewijzing van een ongeldig element aan type `%1'! Assignment of invalid alignment to type `%1'! Toewijzing van een ongeldig uitlijning aan type `%1'! Assignment of invalid name to the table generated from N-N relationship! Een ongeldige naam werd toegewezen aan de tabel gegenereerd op basis van een N-N relatie! The relationship `%1' can not make use of the special primary key because it is marked as identifier or it is a self relationship! De relatie `%1' kan geen gebruik maken van de primary key omdat deze is aangeduid als identifier of omdat het een zelfverwijzende relatie is! The object `%1' (%2) can not be edited or deleted because it was automatically included through a relationship! If the object is an attribute or constraint the modifications must be done on the relationship editing form. Het object `%1' (%2) kan niet worden bewerkt of verwijderd omdat het automatisch werd ingesloten via een relatie! Indien het object een attribuut of een constraint is moeten de bewerkingen worden uitgevoerd via het Relatie bewerk-venster. The object `%1' (%2) can not be deleted because it is protected! Het object `%1' (%2) kan niet worden verwijderd omdat het beschermd is! The group `%1' has already been declared earlier! De groep `%1' werd reeds eerder gedeclareerd! The group `%1' can not be built in the groups declaration block (%2)! De groep `%1' kan niet worden opgebouwd in de groependeclaratie-block (%2)! The group `%1' was built but not declared in the groups declaration block (%2)! De groep `%1' werd opgebouwd maar is niet gedeclareerd in de groependeclaratie-block (%2)! The group `%1' can not be built without possessing child elements! De groep `%1' kan niet worden opgebouwd zonder kind-elementen! The group `%1' can not be built once more because this was done in previous blocks! De groep `%1' kan niet worden opgebouwd omdat dit reeds werd uitgevoerd in een vorige block! The group `%1' has been declared but not built! De groep `%1' werd gedeclareerd maar niet opgebouwd! Reference to a column of the objects table with invalid index! Een referentie naar een kolom in de objectentabel met een ongeldige index! Reference to a row of the objects table with invalid index! Een referentie naar een rij in de objectentabel met een ongeldige index! The object `%1' (%2) can not be manipulated because it is reserved to PostgreSQL! This object is present in the database model only as a reference! Het object `%1' (%2) kan niet worden gemanipuleerd omdat dit een gereserveerd object is in PostgreSQL! Dit object bestaat enkel als referentie in het databasemodel! The new configuration of the function invalidates the object `%1' (%2)! In this case it is needed to undo the relationship between the affected object and function in order to the new configuration to take effect! De nieuwe configuratie van de functie maakt het object `%1' (%2) niet langer gevalideerd! Om de nieuwe configuratie in voege te doen treden moet u de relatie tussen het beinvloedde object en de functie ongedaan maken. A view reference must be used in at least one these SQL scopes: View Definition, SELECT-FROM, FROM-WHERE or After WHERE! Een viewreferentie moet minstens in een van de volgende SQL scopes worden gebruikt: View Definitie, SELECT-FROM, FROM_WHERE of Na WHERE! Constraints like primary key, foreign key or unique must have at least one column related to them! For foreign keys must be selected, in addition, the referenced columns! Constraints zoals primary key, foreign key of unique key moeten minstens een kolom bevatten! Voor foreign keys moeten ook de gerefereerde kolommen worden geselecteerd! Could not find the default settings file `%1'! To restore default settings check the existence of the file and try again! Het standaardinstellingsbestand `%1' kon niet worden gevonden. Kijk na of dit bestand bestaat om de standaardinstellingen terug te zetten en probeer opnieuw! The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 Het exportproces faalde door een fout die werd gegenereerd door PostgreSQL tijdens het uitvoeren van een SQL commando. Voor meer informatie over de fout, gelieve de exception stack na te kijken! ** Uitgevoerde SQL commando: ** %1 Could not load the plugin `%1' from the library `%2'! Message returned by plugin manager: `%3' De plugin `%1' kon niet worden geladen van de bibliotheek `%2'! De plugin manager antwoordde met: `%3' One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. Een of meerdere plugin werden niet geactiveerd omwille van fouten gedurende het laadproces! Kijk de exception stack na voor meer details. Assignment of empty XML buffer to parser! Toewijzingen van een lege XML buffer aan de parser! Assignment of empty DTD file name! Toewijzing van een lege DTD bestandsnaam! Assignment of empty name to the DTD declaration! Toewijzing van een lege naam aan de DTD declaratie! Error while interpreting XML buffer at line %1 column %2. Message generated by the parser: %3. %4 Er trad een fout op tijdens het interpreteren van de XML buffer op lijn %1, kolom %2. De parser antwoordde met: %3. %4 Operation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! Een operatie werd uitgevoerd op een niet-gealloceerd element in de boomstructuur! De XML parser buffer moet eerst worden geladen en geinterpreteerd zodat deze boomstructuur kan worden gegenereerd! Operation with unallocated tree element! Operatie met een niet-gealloceerd object! Operation with element which does not exists in the element tree currently loaded! Er werd een operatie uitgevoerd op een element dat niet bestaat in de huidig geladen elementen-boomstructuur! Assignment of a value to an invalid connection parameter! Toewijzing van een waarde aan een ongeldige verbindingsparameter! Operation on connection not established! Er werd een operatie uitgevoerd op een niet-verbonden verbinding! Attempt to connect without define configuration parameters! Poging tot verbinden zonder dat de configuratieparameters zijn gedefinieerd! Attempt to start a connection already stablished! Poging tot het starten van een verbinding die reeds verbonden is! Could not connect to the database. Message returned: `%1' Er kon geen verbinding worden gemaakt met de database. Het bericht is: `%1' Assignment of not allocated SQL command result! Toewijzing van een niet-gealloceerde SQL commandoresultaat! Unable to allocate the result of the SQL command because the response from the DBMS was not understood by the client! Het is niet mogelijk om het resultaat van het SQL commando te allocaren omdat de client het antwoord van de DBMS niet verstond! Unable to allocate command result for the SQL because the server has generated a fatal error! Message returned by the DBMS: `%1' Het commandoresultaat voor de SQL code kan niet worden gealloceerd omdat de server een fatale fout genereerde! Het bericht dat terugkwam van de DBMS is: `%1' Reference to a column of tuple with invalid index! Referentie naar een kolom van een tuple met een ongeldige index! Reference to a column of tuple with invalid name! Referentie naar een kolom van een tuple met een ongeldige naam! Reference to a tuple with an invalid index or the result is empty (no tuples)! Referentie naar een tuple met een ongeldige index of het resultaat is leeg (geen tuples)! Reference to a column of a tuple which was not yet initialized (tuple navigation not started)! Referentie naar een kolom van een tuple dat nog niet werd geinitializeerd (tuple-navigatie nog niet gestart)! Could not execute the SQL command. Message returned: `%1' Het SQL commando kon niet worden uitgevoerd. Het teruggekeerde bericht is: `%1' Invalid use of a view reference as whole SQL definition! The assigned reference must be an expression! Ongeldig gebruik van een view-referentie als volledige SQL definitie! De toegewezen referentie moet een expressie zijn! Assignment of a second definition expression to the view! Toewijzing van een tweede definitie-expressie aan de view! It is not possible mix ordinary references (SELECT-FROM, FROM-WHERE, After WHERE) with references used as view SQL definition! Gewone referenties (SELECT-FROM, FROM-WHERE, Na WHERE) kunnen niet worden gemixt met referenties die gebruikt worden als SQL definitie! Assignment of collation object which type is invalid! Toewijzing van een sorteringsobject wiens type ongeldig is! At the moment pgModeler does not support the creation of primary keys which some columns were generated by relationship connection. To create primary keys with this feature you can use the field `Identifier' or the tab `Primary key' on relationship editing form! Op dit moment ondersteunt pgModeler de aanmaak van primary keys waarvan sommige kolomen door relatie-verbindingen worden gegenereerd nog niet. Om primary keys met dit feature aan te maken kan u gebruik maken van het veld 'Identifier' of het 'Primary key' tab-blad in het relatie-bewerkingsvenster! Collations must be created at least with attributes LC_COLLATE and LC_CTYPE defined! Sorteringsmethodes moeten worden aangemaakt en minstens LC_COLLATE en LC_CTYPE gedefinieerd hebben! The object `%1' (%2) cannot reference itself! This operation is not permitted for this kind of object! Het object `%1' (%2) kan niet naar zichzelf verwijzen! Deze operatie is niet toegelaten voor dit type object! Only operator families which uses `btree' as indexing method are accepted by operator class elements! Enkel operator-families die gebruik maken van `btree' als indexeringsmethod kunnen worden aanvaard als operatorklasse element! Reference to an invalid copy table option! Referentie naar een ongeldige kopie-tabel optie! Copy relationship between tables `%1' and `%2' cannot be done because the first one already copies attributes from `%3'! Tables can have only one copy table! De kopie-relatie tussen tabellen `%1' en `%2' kan niet worden aangemaakt omdat de eerste reeds attributen kopieert van `%3'! Tabellen kunnen over slechts een kopie-tabel beschikken! The INSTEAD OF mode cannot be used on triggers that belongs to tables! This is available only for view triggers! De INSTEAD OF modus kan niet worden gebruikt voor triggers die aan tabellen toehoren! Dit is enkel beschikbaar voor triggers die aan views toehoren! The TRUNCATE event can only be used when the trigger executes for each statement and belongs to a table! Het TRUNCATE event kan enkel worden gebruikt wanneer de trigger uitvoert voor elk statement en aan een tabel toebehoort! The INSTEAD OF mode cannot be used on view triggers that executes for each statement! De INSTEAD OF modus kan niet worden gebruikt voor view triggers die voor elk statement worden uitgevoerd! Constraint triggers can only be executed on AFTER events and for each row! Constraint triggers kunnen enkel worden uitgevoerd NA events en voor elke rij! A view trigger cannot be AFTER/BEFORE when it executes for each row! Een view trigger kan niet AFTER/BEFORE zijn wanneer deze voor elke rij wordt uitgevoerd! A trigger cannot make reference to columns when using INSTEAD OF mode and UPDATE event! Een trigger kan niet naar kolommen refereren wanneer deze gebruikt maakt van de INSTEAD OF modus binnen een UPDATE event! Assignment of a column which has no parent table to the object `%1' (%2)! Toewijzing van een kolom aan object `%1' (%2) die geen ouder-tabel heeft! Only constraint triggers can be deferrable or reference another table! Enkel constraint triggers kunnen uitstelbaar zijn of naar andere tabellen refereren! Reference to a function id which is incompatible with the user define type configuration! Een referentie naar een functie id die niet compatibel is met de configuratie van het gebruiker gedefinieerde type! The operator class assigned to the object `%1' (%2) must use `btree' as indexing method! De operatorklasse die is toegewezen aan het object `%1' (%2) moet 'btree' als indexeringsmethod gebruiken! The validation process failed due to an error triggered by the validation helper. For more details about the error check the exception stack! Het validatieproces faalde omwille van een fout in de validatie-helper. Kijk voor meer details over de fout de exception stack na! The extension `%1' is registered as a data type and cannot have the attribute `handles datatype' modified! De uitbreiding `%1' is geregistreerd als een data type, het 'behandeld data type' attribuut kan niet worden aangepast! The fk relationship `%1' cannot be created because the foreign-key that represents it was not created on table `%2'! De fk relatie `%1' kan niet worden aangemaakt omdat de foreign key die deze relatie weergeeft niet werd aangemaakt op tabel `%2'! Assignement of an invalid object name pattern to the relationship `%1'! Toewijzijng van een ongeldig objectnaamspatroon aan de relatie `%1'! Reference to an invalid object name pattern id on the relationship `%1'! Referentie naar een ongeldige id van objectnaamspatronen voor de relatie `%1'! Invalid use of variadic parameter mode! This mode can be used only with an array or "any" data type! The object `%1' (%2), oid `%3', could not be imported due to one or more errors! Check the exception stack for more details. `HINT:' if the object somehow references objects in `pg_catalog' or `information_schema' consider enable the importing of system objects. It's not possible convert the type of the column `%1' to serial! It must have an `integer' based type and its default value must be a call to `nextval(seq_name::regclass)' function or a sequence object must be directly assigned to the column! A parent table of `%1' which OID is `%2' was not found in the set of imported objects! The enumeration `%1' can't be assigned to the type `%2' because contains invalid characters! The enumeration `%1' can't be assigned to the type `%2' because is too long! The connection was idle for too long and was automatically closed! The connection was unexpectedly closed by the database server `%1' at port `%2'! Mixing incompatibles DBMS export modes: `ignore object duplications', `drop database' or `drop objects' cannot be used with `simulate export'! Mixen van niet-compatibele DBMS export-modussen: `negeer object duplicaten', `verwijder database' of `verwijder objecten' kan niet samen worden gebruikt met `simuleer export'! Mixing incompatibles DROP options: `drop database' and `drop objects' cannot be used at the same time! Mixen van niet-compatibele DROP opties: `verwijder database' en `verwijder objecten' kunnen niet samen worden gebruikt! Invalid object id swapping operation! The objects involved are the same! Ongeldige object id wissel-operatie! De betrokken objecten zijn dezelfde! Invalid object id swapping operation! The database itself, tablespaces or roles cannot have the ids swapped! Ongeldige object id wissel-operatie! De database zelf, tablespaces en rollen kunnen geen ids omwisselen! The widget already has a parent and cannot be assigned to a different object! Het widget heeft reeds een ouder en kan niet aan een ander object worden toegewezen! Could not load the database model file `%1'. Check the error stack to see details. Try to run `pgmodeler-cli --fix-model' in order to correct the structure of the file if that is the case. Het datababase modelbestand `%1' kon niet worden geladen. Kijk de foutenstack na voor meer details. Probeer `pgmodeler-cli --fix-model' uit te voeren op het model om de bestandsstructuur te corigeren indien dit nodig zou zijn. The column `%1' cannot reference it's parent table `%2' as data type! De kolom `%1' kan niet naar de oudertabel `%2' als data type verwijzen! Operation with an invalid element id `%1'! Operatie met een ongeldige olement id `%1'! Reference to an invalid color id `%1' for element `%2'! Referentie naar een ongeldige kleuren-id `%1' voor element `%2'! Assignment of an invalid object to `%1' (%2)! The assigned object must be of type `%3'. Toewijzing van een ongeldig object aan `%1' (%2)! Het toegewezen object moet van het type `%3' zijn. The sequence `%1' can't be assigned to the column `%2' because the data type of the latter is incompatible. The type used must be an integer one! De sequentie `%1' kan niet aan de kolom `%2' worden toegewezen omdat het data type van de kolom niet compatibel is. Het gebruikte type moet een integer type zijn! The option to generate temporary object names can only be used in simulation mode! De optie om tijdelijke objectnamen te genereren kan enkel worden gebruikt in simulatie-modus! Could not assign the variable `%1' to event trigger's filter. Currently, PostgreSQL supports only the `TAG' variable! De variabele `%1' kon niet worden toegewezen aan de filter van de event trigger! Op dit moment ondersteunt PostgreSQL enkel de `TAG' variabele! Could not perform the `%1' operation on `%2' using the data on row `%3'! All changes were rolled back. ** Returned error ** %4 De operatie `%1' op `%2' kon niet worden voltooid met de data op rij `%3'! Alle aanpassingen werden ongedaan gemaakt. ** Gerapporteerde fout ** %4 Malformed unescaped value on row `%1' column `%2'! Incorrect gevormde un-escape waarde op rij `%1', kolom `%2'! Trying to undo/redo an invalid operation over an object that does not exists anymore or can't be handled! The operation history will be cleaned up. Poging tot het ongedaan maken of opnieuw uitvoeren van een ongeldige operatie op een object dat niet langer bestaat of niet kan worden behandeld! De taakgeschiedenis zal worden leeggemaakt. The object `%1' (%2) can't be handled because some needed fields are not set! Please, make sure to fill at least the requires fields in order to properly create or update the object. Het object `%1' (%2) kan niet worden behandeld omdat sommige nodige velden niet werden ingesteld! Gelieve de verplichte velden in te voeren om het object correct aan te kunnen maken of passen. A relationship can only be swapped by other object of the same kind! De relatie kan enkel worden omgewisseld door een ander object van dezelfde soort! ExtensionWidget Version: Versie: Old Version: Oude Versie: This attribute cannot be changed once the object is created. Dit attribuut kan niet worden veranderd eens het object is aangemaakt. Handles data type Behandelt dit data type FindReplaceWidget Form Venster Hide this widget Verberg dit widget ... ... Replace one occurrence Vervang één voorkomen Replace Vervangen Replace all occurrences Vervang alle voorkomens Replace All Vervang Allen Replace the selection and find the next one Vervang in de selectie en vindt de volgende Replace && Find Vervang && Zoek Replace: Vervang: Find: Zoek: Find previous Zoek vorige Shift+F3 Find next Zoek volgende F3 Case sensitive Hoofdlettergevoelig Regular expression Regular expression Whole words Volledig woord FunctionWidget Attributes Attributen Security: Beveiliging: Function Type: Functietype: Rows Returned: Aantal rijen Return Method: Terugkeermethode: Behavior: Gedrag: Set Set Language: Si&mple Tab&le Return Table Terugkeertabel Execution Cost: Uitvoeringskost: Windown Func. Windowing Functie Leakproof Lekdicht Parameters Parameters Definition Definitie Dynamic Library: Dynamische Bibliotheek Symbol: Symbool: Library: Bibliotheek: Source code: Broncode: Column Kolom Type Type Name Naam Mode Modus Default Value Standaardwaarde: GeneralConfigWidget Form Venster General && Design Algemeen && Design General Algemeen Operation history: Taakgeschiedenis: Check if there is a new version on server Vink dit aan om na te kijken of een nieuwe versie beschikbaar is op de server Design Design Graphical objects (table, views and textboxes) will be created in a single step without the need to click on canvas Grafische objecten (tabellen, views en tekstvakken) worden in een enkele stap aangemaakt zonder op het canvas te hoeven klikken Simplify creation of graphical objects Should be 'Vereenvoudig de aanmaak van grafische objecten' but that's way too long for the space Versimpel creatie van grafische objecten After loading the model the last zoom and position on canvas will be restored Nadat het model geladen is wordt de laatste zoomwaarde en positie op het canvas hersteld Save and restore last position and zoom Behoud de laatste positie en zoom Disable render smoothness Schakel vlakke rendering uit Hide the object that represents the relationship name Verberg het object dat de relatienaam voorstelt Hide relationship name Verberg relatienaam Validate before save, export or diff Valideer voor opslaan, exporteren of diff Hide the object which represents the tag assigned to the table Verberg het tag object dat is toegekend aan de tabel Hide table tags Verberg tabel-tags Start move the canvas when the cursor is on the canvas edges Verplaatst het canvas wanneer de cursor zich op de rand van het canvas bevindt Move canvas by keep mouse on corners Verplaats canvas bij muis in de hoeken Hide the portion of table which represent triggers, indexes and rules Verberg het tabel-gedeelte dat triggers, indexes en regels voorstelt Hide table extended attributes Verberg uitgebreide attributen Disable antialiasing for lines and texts improving performance when handling huge models. Triggers a dialog asking the user to validate the model before a save, export or diff operation. When enabled this option creates a placeholder object at the previous table's position when starting to move it. This will cause graphical updates on relationship lines to be performed only when the drag & drop action is done improving the performance. Disabling placeholders will cause those updates to be executed every time the table's position changes a single pixel (classical behavior). Use placeholders when moving tables Toggles the code completion in all fields that accepts the input of SQL commands. Schakelt codevervollediging aan of af in alle velden die SQL commando's aanvaarden. Minimum object opacity (%): Defines the minimum opacity percentage applied to the objects when using the fade out feature. A zero opacity causes the object to be completely hidden not being possible to interact with it in the canvas area. Canvas grid size: Defines the vertical and horizontal grid size. This value affects the spacing of objects when using object grid alignment feature. By default the range selection is triggered with Shift + left click. By checking this option range selection will be activated only with a single click and move. Trigger range selection with a single click Defines the maximum amount of elements held in the operation history. Once reached the maximum number the history is automatically cleaned. Defines the period when the opened models will be saved automatically. Autosave interval (minutes): Enable SQL code completion Schakel SQL codevervollediging in Replaces any straight line in relationship by curved ones in order to improve the model's visualization. Use curved lines for relationships Souce code editor args: lines Clear the entire SQL comand history. Clear history Open in file manager Open in bestandsbeheer Overrides the default user interface language defined by the system. Requires restarting the program. <strong>NOTE:</strong> UI translations are third party collaborations thus any typo or mistake should be reported directly to their respective maintainers. SQL history max. length: Check updates at startup User interface language: Browse the source code editor application Souce code editor: Configurations directory: Printing && Code Printen && Code Code style Codestijl Size: Grootte: Font: Lettertype: Colors: Kleuren: Options: Opties: Display line numbers Geef lijnnummers weer Highlight lines at cursor's position Licht de huidige lijn onder de cursor op pt pt Custom tab width: Printing Printen Print grid Print raster Print page numbers Print paginanummers Paper: Papier: A0 (841 x 1189 mm) A1 (594 x 841 mm) A2 (420 x 594 mm) A3 (297 x 420 mm) A4 (210 x 297 mm) A5 (148 x 210 mm) A6 (105 x 148 mm) A7 (74 x 105 mm) A8 (52 x 74 mm) A9 (37 x 52 mm) B0 (1030 x 1456 mm) B1 (728 x 1030 mm) B10 (32 x 45 mm) B2 (515 x 728 mm) B3 (364 x 515 mm) B4 (257 x 364 mm) B5 (182 x 257 mm) B6 (128 x 182 mm) B7 (91 x 128 mm) B8 (64 x 91 mm) B9 (45 x 64 mm) C5E (163 x 229 mm) Comm10E (105 x 241 mm) DLE (110 x 220 mm) Executive (191 x 254 mm) Folio (210 x 330 mm) Ledger (432 x 279 mm) Legal (216 x 356 mm) Letter (216 x 279 mm) Tabloid (279 x 432 mm) Custom Aangepast Orientation: Oriëntatie: Landscape Landschap Portrait Portret Unity: Eenheid: Custom Size: Aangepaste Grootte: Width: Breedte: Height: Hoogte: Page Margins: Paginamarges: Left: Links: Left margin Linkermarge Top: Kop: Top margin Kopmarge Right: Rechts: Right margin Rechtermarge Bottom: Voet: Bottom margin Voetmarge Milimeters Milimeters Pixels Pixels Inches Inches Centimeter Centimeter Line numbers' font color Lettertypekleur van lijnnummers Line numbers' background color Achtergrondkleur van lijnnummers Highlighted line color Uitlichtkleur The little brown fox jumps over the lazy dog The little brown fox jumps over the lazy dog System default All files (*.*) Load file GenericSQLWidget SQL code SQL code HintTextWidget Form Venster IndexWidget Attributes Attributen Indexing: Indexering: Fill Factor: Vul-factor: Options: Opties: Concurrent Gelijktijdig Unique Uniek Fast update Snelle update Buffering Buffering Predicate: Predicaat: Elements Elementen LanguageWidget Trusted: Vertrouwd: Validator Func.: Validatiefunctie: Handler Func.: Behandelende Functie: Inline Func.: Inline Functie: The functions to be assigned to the language should have, respectively, the following signatures:<br/><br/> <strong>Handler Function:</strong> <em>language_handler function()</em><br/> <strong>Validator Function:</strong> <em>void function(oid)</em><br/> <strong>Inline Function:</strong> <em>void function(internal)</em> De functie die worden toegewezen aan de taal moeten de volgende signatures hebben, respectievelijk: <br/><br/> <strong>Handler Functie:</strong> <em>taal_handler_functie()</em><br/> <strong>Validatie Functie:</strong> <em>void functie(oid)</em><br/> <strong>Inline Functie:</strong> <em>void functie(internal)</em> MainWindow pgModeler - PostgreSQL Database Modeler pgModeler - PostgreSQL Database Modeler Toggle the model objects widget Schakel het modelobjecten-widget in of uit O&bjects O&bjecten Alt+B Alt+B Toogle the model validation widgets Toon of verberg het modelvalidatie-widget &Validation &Validatie Alt+V Alt+V Toggle the operation history widget Toon of verberg het commandogeschiedenis-widget &Operations &Operaties Alt+O Alt+O Toggle the object finder Toon en verberg de objectenvinder Find Object Zoek Object Ctrl+F Ctrl+F &File &Bestand &Edit &Bewerken &Show &Weergave General Algemeen Controls Controls &Load &Laden Sa&ve as E&xit Exit pgModeler &About pgModeler &Print Print model &Undo Undo operation &Redo Redo operation &Export &Exporteer Ctrl+Shift+E &Show grid &Close &Sluiten &Normal zoom &Align to grid Show &delimiters &Settings F12 F12 &Overview &Support Access the support page New Nieuw &Diff Determine the changes between model/database and another database Shift+M &Bug report Objects me&tadata Objects metadata Arrange objects Rearrange objects over the canvas Ctrl+N Ctrl+S Ctrl+S Zoom in Inzoomen Ctrl+= Ctrl+= Zoom out Uitzoomen Zoom - Zoom - He&lp Pl&ugins &New New model Nieuw model &Save Op&slaan &Zoom in Zoo&m out Ctrl+- Ctrl+- Ctrl+O Ctrl+O Ctrl+Q Ctrl+Q F4 F4 Ctrl+P Ctrl+P Ctrl+Z Ctrl+Z Ctrl+Y Ctrl+Y Export the current opened model in different modes Exporteer het huidig geopende model in verschillende modussen &Recent Models &Import Rest&ore Session &Fix a model &Check for update Ctrl+Shift+S Ctrl+Shift+S Show grid Raster tonen Ctrl+G Ctrl+G Close current model Sluit dit model Ctrl+W Ctrl+W Ctrl+0 Ctrl+0 Align objects position to grid Lijn objecten uit op het raster Ctrl+H Ctrl+H Show the page delimiters Toon pagina-delimiters Ctrl+L Ctrl+L Edit pgModeler settings Bewerk de pgModeler instellingen Save all Alles opslaan Show the model overview Toon modeloverzicht F10 F10 F1 F1 New object Plugins Plugins Access the list of loaded plugins Bekijk de lijst van geladen plugins Load recently opened model Laad recent geopend model Import existing database to new model (reverse engineering) Importeert een bestaande database in een nieuw model (Reverse Engineering) Ctrl+Shift+I Ctrl+Shift+I New version found! Er is een nieuwe versie beschikbaar! Update for the current version is available on project's site Er is een update beschikbaar voor de huidige versie op de website van het project action_main_menu Main menu Hoofdmenu Show expanded Toon uitgeklapt Expands the main menu bar in classical mode Klapt het hoofdmenu uit in klassieke modus Hide main menu Verberg hoofdmenu Hides the main menu bar and put the action on a separated action This looks like something that could use revisiting (the original EN text that is) Verbergt de hoofdmenu en verplaats de actie naar een afgescheiden actie Ctrl+Shift+H Ctrl+Shift+H Ctrl+Shift+D Welcome Welkom Welcome screen Welkomstscherm Shift+W Design Design Design database models Design databasemodellen Shift+D Manage Beheer Manage existent databases Beheer bestaande databases Report a bug Rapporteer een bug Donate Doneer Help pgModeler by donating! Help pgModeler via donering! (Demo) (Demo) Saving temp. models Tijdelijke modellen opslaan Clear Menu Menu leegmaken The demonstration version can create only `one' instance of database model! De demonstratieversie kan slechts één databasemodel instantie aanmaken! Save model Model opslaan Grid Hierarchical Scattered Save modified model(s) The following models were modified but not saved: %1. Do you really want to quit pgModeler? The model <strong>%1</strong> was modified! Do you really want to close without save it? Warning Opgepast You're running a demonstration version! The model saving feature is available only in the full version! Dit is een demonstratie-versie! Het opslaan van modellen is enkel beschikbaar in de volledige versie! Confirmation Bevestiging <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! It's recommended to validate it before save in order to create a consistent model otherwise the generated file will be broken demanding manual fixes to be loadable again! <strong>PAS OP: </strong> Het model <strong>%1</strong> is niet gevalideerd! Het is aangeraden om het model te valideren vooraleer dit op te slaan om ervoor te zorgen dat u een consistent model behoudt, anders is het modelijk dat het gegenereerde bestand onvolledig is en manuele correcties zal vereissen om het opnieuw te kunnen laden! Save anyway Toch opslaan Validate Valideer Save '%1' as... Sla '%1' op als... Database model (*.dbm);;All files (*.*) Database model (*.dbm);;Alle bestanden (*.*) Access support page You're running a demonstration version! Note that you'll be able to create only <strong>%1</strong> instances of each type of object and some key features will be disabled or limited!<br/><br/>You can purchase a full binary copy or get the source code at <a href='http://pgmodeler.com.br'>pgmodeler.com.br</a>. <strong>NOTE:</strong> pgModeler is an open source software, but purchasing binary copies or providing some donations will support the project and cover all development costs.<br/><br/> <strong>HINT:</strong> in order to test all features it's recommended to use the <strong>demo.dbm</strong> model located in </strong>Sample models</strong> at <strong>Welcome</strong> view.<br/><br/><br/><br/> Rearrange objects over the canvas is an irreversible operation! Would like to proceed? <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the export process it's recommended to validate in order to correctly create the objects on database server! <strong>PAS OP:</strong> Het model <strong>%1</strong> is niet gevalideerd! Vooraleer u het export proces start is het aangeraden om de validatie uit te voeren. Dit zorgt ervoor dat de objecten correct op de database server kunnen worden aangemaakt! Export anyway Toch exporteren <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the diff process it's recommended to validate in order to correctly analyze and generate the difference between the model and a database! <strong>PAS OP:</strong> Het model <strong>%1</strong> is niet gevalideerd! Het is aangeradem om het model te valideren vooraleer u het diff process start. Dit zorgt voor een correcte analyse en het correct genereren van de diff tussen het model en de database! Diff anyway Voer diff toch uit Database model printing Databasemodel printen Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. Er werden veranderingen gedetecteerd tussen de papier- en margedefinities van het model die ertoe kunnen leiden dat de objectenn foutief worden geprint. Wenst u te printen met deze nieuwe instellingen? Om de standaardinstellingen te gebruiken, klik op 'Nee' of klik 'Annuleren' om het printen af te breken. Load model Laad model Could not load the database model file `%1'. Check the error stack to see details. You can try to fix it in order to make it loadable again. Het database modelbestand `%1' kon niet worden geladen. Kijk de error stack na voor details. U kan proberen het probleem te corrigeren om het bestand weer laadbaar te maken. Fix model Corrigeer model Cancel Annuleren This action will open a web browser window! Want to proceed? Deze actie opent een browservenster! Wilt u verdergaan? (no samples found) (geen voorbeelden gevonden) save opslaan export exporteer diff diff Executing pending <strong>%1</strong> operation... De uitvoer wacht op <strong>%1</strong> taak... Messagebox Dialog Dialoogvenster msg Exceptions Uitzonderingen Show raw text errors or information. Toon technische error-tekst en -informatie. Show/hide exceptions stack. Toon/verberg uitzonderingsstack. ... &Yes &Ja &No &Nee Cancel Annuleren &Ok &OK &Cancel &Annuleren Error Fout Alert Waarschuwing Information Informatie Confirmation Bevestiging MetadataHandlingForm Handle metadata &Apply &Cancel Handle objects metadata Settings Instellingen Extract from: Loading a metadata file to the current model is an irreversible operation so be sure to specify a backup file before proceed. Options Opties Handles the following database model attributes in the metadata file: author, zoom factor, last position and default objects. Database model metadata Handles the objects' positioning in the metadata file. Objects' positioning Handles the objects' custom colors in the metadata file. Currently available only for relationships and schemas. Custom object's colors Handles the objects' protection status in the metadata file. Objects' protection status Handles the objects' SQL disabled status in the metadata file. Objects' SQL disabled status Handles the objects' fade out status in the metadata file. Objects' fade out status Save tags to the output file when extracting metadata. When loading the file, the tags are recreated and duplicated ones are ignored. Save textboxes to the output file when extracting metadata. When loading the file, the textboxes are recreated and duplicated ones are ignored. Handles the objects' custom SQL commands in the metadata file. Custom SQL commands Textbox objects Tag objects Handles the tables' and views' extended attributes display status in the metadata file. Tables' extended attributes display Save generic SQL objects to the output file when extracting metadata. When loading the file, the objects are recreated and duplicated ones are ignored. Generic SQL objects Backup file: Select file ... ... Extracts the objects' metadata from the loaded models and apply to the current focused model. A backup file can be specified to where the focused model's current metadata will be saved. &Extract and restore Extracts the objects metadata from one of the loaded models saving the info to a backup file. Extract &only Reads the objects' metadata from a previously saved backup file and apply to the current model. &Restore a backup file Apply to: Operation: Output Uitvoer Progress label... Vooruitgangslabel... model not saved yet The backup file cannot be the same as the input model! Extracting metadata to file `%1' Saving backup metadata to file `%1' Applying metadata from file `%1' Metadata processing aborted! Objects metadata file (*.omf);;All files (*.*) ModelDatabaseDiffForm Settings Instellingen Connection: Verbinding: Database: Database: Ignore import errors Negeer importeerfouten Import system objects Importeer systeemobjecten Import extension objects Importeer uitbreidingsobjecten For DROP command, the objects that depends on an object to be dropped will be deleted as well. For TRUNCATE command, tables that are linked to a table to be truncated will be truncate too. <strong>NOTE:</strong> this option can affect more objects than listed in the output or diff preview. Voor DROP commando's worden objecten die afhankelijk zijn van het object dat verwijderd wordt, ook verwijderd. Voor het TRUNCATE commando worden tabellen die gelinkt zijn aan de te trunceren tabel ook getrunceerd. <strong>LET OP:</strong> deze optie kan objecten beïnvloeden die niet in het uitvoer- of diff-voorbeeld opgenomen zijn. Drop or truncate in cascade mode Drop of trunceer in cascade modus Permissions already set on database objects will be kept.The ones configured on the model will be applied to the database. Machtigingen die reeds op databaseobjecten zijn toegepast zullen behouden blijven. De machtigingen die door het model worden gespecifieerd zullen worden toegepast op de database. Keep object's permissions Behoudt de machtigingen van het object Database cluster level objects like roles and tablespaces will not be dropped. Database cluster-niveau objecten zoals rollen en tablespaces zullen niet worden verwijderd. Keep cluster objects Behoudt clusterobjecten Recreate only unmodifiable objects Hercreeer enkel niet-aanpasbare objecten Force recreation of objects Forceer het heraanmaken van objecten Ignores errors generated by duplicated objects when exporting the diff to database. Negeer fouten die worden gegenereerd door duplicate objecten gedurende het exporteren van de diff naar de database. Ignore duplicity errors Negeer fouten omwille van duplicaten Serial columns are converted to integer and having the default value changed to <strong>nextval(sequence)</strong> function call. By default, a new sequence is created for each serial column but checking this option sequences matching the name on column's default value will be reused and will not be dropped. Seriële kolommen worden geconverteerd naar integers en hun standaardwaarde wordt ingesteld als een functieaanroep naar <strong>nextval(sequentie)</strong>. Normaal gezien wordt een nieuwe sequentie aangemaakt voor elke seriële kolom maar deze optie aanvinken zorgt ervoor dat sequenties die de naam van de kolom gebruiken worden hergebruikt in plaats van verwijderd. Reuse sequences on serial columns Hergebruik sequenties op seriële kolommen No command to rename the destination database will be generated even the model's name differ from database name. Behoudt de naam van de doeldatabase wanneer deze verschilt van de databasenaam in het model. Preserve database name Behoudt databasenaam Diff mode Diff modus Override the PostgreSQL version when generating the diff. The default is to use the same version as the input database. Zet de versie waarvoor de diff wordt gegenereerd expliciet zelf. Standaard wordt dezelfde versie gebruikt als de invoerdatabase. Use PostgreSQL: Gebruikt PostgreSQL: Compares the model and the input database storing the diff in a SQL file for later usage. Vergelijkt het model en de invoerdatabase en slaat het verschil op in een SQL bestand voor later gebruik. File: Bestand: Select output file Selecteer uitvoerbestand ... ... Compares the model and the input database generating a diff and applying it directly to the latter. <strong>WARNING:</strong> this mode causes irreversible changes on the database and in case of failure the original structure is not restored, so make sure to have a backup before proceed. Vergelijkt het model met de invoerdatabase en genereerd een diff die op die laatste wordt toegepast. <strong>PAS OP:</strong> deze modus veroorzaakt onherroepelijke veranderingen in de database en in geval van falen wordt de originele structuur niet hersteld, zorg ervoor dat u een backup hebt vooraleer u verdergaat. Ignores as many as possible errors on import step. This option generates an incomplete diff. Clears the data of all tables which will have columns modified. This is useful to avoid errors related to type casting. <strong>WARNING:</strong> DO NOT use this option on production servers and always make a backup before use it. Import system (built-in) objects. Use this if the import step is returning errors related to missing objects. Import objects created by extensions. Use this if the import step is returning errors even importing built in ones. Instead of use an ALTER command to modify certain kind of objects a DROP and CREATE will be used in order to do a full modification. This option does not affects the database object. Avoid the generation of DROP commands for objects that exists in database but not in the model. This is useful when diff a partial model against the complete database. Do not drop missing objects Store in S&QL file Diff tool Generate diff code Source database Current model: (model) Compare to Appl&y on server Diff Diff Froce the generation of DROP commands for columns and constraints that exist in database but not in the model. This is useful when diff a partial model against the complete database and the user needs to drop columns and constraint but preserve the rest of the objects. Drop missing columns and constraints Truncate tables before alter columns Import && Export Import Importeren Export Exporteer This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Ignore error codes Output Uitvoer Changes: Aanpassingen: Cancel Annuleren Progress label... Vooruitgangslabel... Step label... Staplabel... <html><head/><body><p>Objects marked with an <span style=" font-weight:600;">ALTER</span> may not be effectively changed unless that the differences detected are in attributes that can be modified through ALTER commands otherwise no operation will be performed or, if the force recreation is checked, the object will be dropped and created again.</p></body></html> <html><head/><body><p>Objecten die zijn aangeduid met <span style=" font-weight:600;">ALTER</span> kunnen mogelijkerwijs niet worden aangepast tenzij de gedetecteerde verschillen in de attribute liggen die kunnen worden aangepast via een ALTER commando; in alle andere gevallen zal geen actie worden ondernomen of, indien 'Forceer het heraanmaken van objecten' is aangevinkt, zal het object worden verwijderd en heraangemaakt.</p></body></html> Objects to be created Objecten die aangemaakt moeten worden 0 0 Objects to be dropped Objecten die verwijderd moeten worden Possible objects to be changed Objecten die mogelijkerwijs aangepast moeten worden Ignored objects (system ones or with sql disabled) Genegeerde objecten (systeemobjecten of objecten waarvan SQL is uitgeschakeld) Diff Preview Diff voorbeeld &Apply diff Diff &Toepassen &Generate &Genereer &Close &Sluiten Waiting process to start... Wachten op het starten van de taak... Confirmation Bevestiging <strong>WARNING:</strong> The generated diff is ready to be exported! Once started this process will cause irreversible changes on the database. Do you really want to proceed? <strong>PAS OP:</strong> De gegenereerde diff is klaar om geëxporteerd te worden! Eens gestart zal dit proces onherroepelijke veranderingen aanbrengen aan de database. Bent u zeker dat u wilt verdergaan? Apply diff Diff toepassen Preview diff Diff belijken model not saved yet (none) Step %1/%2: Importing database <strong>%3</strong>... Step %1/%2: Comparing <strong>%3</strong> and <strong>%4</strong>... Step %1/%2: Exporting diff to database <strong>%3</strong>... Diff process paused. Waiting user action... Het diff proces is gepauzeerd. Wachten op een actie van de gebruiker... Saving diff to file <strong>%1</strong> De diff wordt opgeslagen in het bestand <strong>%1</strong> Diff process sucessfully ended! Het diff proces werd succesvol beëindigd! No operations left. Er zijn geen operaties meer. Operation cancelled by the user. De operatie werd geannulleerd door de gebruiker. Process aborted due to errors! Het proces werd afgebroken omwille van fouten! -- SQL code purposely truncated at this point in demo version! -- No differences were detected between model and database. -- -- Er werden geen verschillen gedetecteerd tussen het model en de database. -- Error code <strong>%1</strong> found and ignored. Proceeding with export. Foutencode <strong>%1</strong> trad op en werd genegeerd. De export gaat voort. Save diff as... Sla diff op als... SQL code (*.sql);;All files (*.*) SQL Code (*.sql);;Alle bestanden (*.*) ModelExportForm Export model Exporteer model Settings Instellingen Database server Database server pgModeler ignores errors generated by duplicated objects and creates only that ones which does not exists in the database. This option may be used when an object was created after a previous model export. pgModeler negeert fouten die worden gegenereerd door duplicate objecten en creëert objecten die nog niet in de database bestaan. Deze optie kan worden gebruikt wanneer een object werd gecreëerd door een eerdere model export. Ignore object duplicity Negeer object-duplicaten Connection: Verbinding: PostgreSQL version in which the SQL code should be generated. It is recommended to select this option only when the version of the DBMS, somehow, is not identifiable or if you need to generate a specific version of SQL code for test purposes. De PostgreSQL versie waarvoor SQL code moet worden gegenereerd. Het is aangeraden om deze optie enkel in te stellen wanneer de versie niet automatisch kan worden bepaald of wanneer u een specifieke versie nodig hebt voor bijvoorbeeld test-doeleinden. PostgreSQL: PostgreSQL: This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Ignore error codes If <strong>DB</strong> is checked pgModeler will destroy the database if already exists on the server. When <strong>Objects</strong> is checked pgModeler will execute the DROP command attached to SQL-enabled objects. <strong>WARNING:</strong> this option leads to data loss so make sure to have a backup first. Indien <strong>DB</strong> aangevinkt is, zal pgModeler de database verwijderen indien deze reeds in de server bestaat. Indien <strong>Objecten</string> is aangevinkt zal pgModeler DROP commando's toevoegen aan de objecten waarvoor SQL is ingeschakeld. <strong>PAS OP:</strong> deze optie kan tot dataverlies leiden, zorg ervoor dat u een recente backup kan terugplaatsen. Drop: Verwijder: DB DB pgModeler will destroy the database if already exists on the server. Make sure to have a backup before use this option because all data will be lost. pgModeler zal de database verwijderen indien deze reeds in de server aanwezig is. Zorg ervoor dat u een recente backup kan terugplaatsen indien nodig want alle data zal verloren gaan. Zoom: Zoom: Show grid Raster tonen Show delimiters Delimiters tonen Exporting the model page by page will generate files with a <strong>_p[n]</strong> suffix where <strong>n</strong> is the page id. Check if the current user has write permission on output folder. Het model pagina per pagina exportern genereert bestanden met de suffix <strong>_p[n]</strong> waarbij <strong>n</strong> de pagina id is. Zorg ervoor dat de huidige gebruiker schrijf-machtiging heeft in de uitvoermap. Page by page Pagina per pagina Select target file Selecteer doelbestand ... ... SQL file SQL bestand File: Bestand: Ob&jects Graphics file Type: Type: PostgreSQL version in which the SQL code should be generated De PostgreSQL versie waarvoor SQL code moet worden gegenereerd I&mage (PNG) &Vectorial (SVG) Output Uitvoer Cancel Annuleren Progress label... Vooruitgangslabel... &Export &Exporteer &Close &Sluiten Error code <strong>%1</strong> found and ignored. Proceeding with export. Foutencode <strong>%1</strong> trad op en werd genegeerd. De export gaat voort. Initializing model export... Model export wordt geïnitialiseerd... Saving file '%1' Bestand `%1' wordt opgeslagen Exporting process aborted! Het export proces werd afgebroken! Export model as... Exporteer model als... SQL script (*.sql);;All files (*.*) Portable Network Graphics (*.png);;All files (*.*) Scalable Vector Graphics (*.svg);;All files (*.*) Exporting process canceled by user! Het export proces werd geannuleerd door de gebruiker! Exporting process sucessfuly ended! Het export proces werd succesvol beëindigt! ModelExportHelper Generating SQL code for PostgreSQL `%1' Bezig met het genereren van SQL code voor PostgreSQL `%1' Output SQL file `%1' successfully written. Het uitvoer-SQL bestand `%1' werd succesvol opgeslagen. Rendering objects to page %1/%2. Objecten worden gerendered naar pagina %1/%2. Output image `%1' successfully written. Uitvoerafbeelding `%1' werd succesvol opgeslagen. Exporting model to SVG file. SVG representation of database model SVG file generated by pgModeler Output file `%1' successfully written. Starting export to DBMS. De export naar het DBMS begint. PostgreSQL version detection overridden. Using version `%1'. PostgreSQL versie-detectie werd overschreven. Versie `%1' wordt gebruikt. PostgreSQL `%1' server detected. PostgreSQL `%1' server ontdekt. Generating temporary names for database, roles and tablespaces. De tijdelijke namen voor de database, rollen en tablespaces worden gegenereerd. Enabling the SQL code for database `%1' to avoid errors. SQL code voor de database `%1' wordt geactiveerd om fouten te vermijden. Ignoring object duplication errors. Duplicaten-fouten worden genegeerd. Ignoring the following error code(s): `%1'. De volgende foutencode(s) worden genegeerd: `%1' Trying to drop database `%1'. Proberen om database `%1' te verwijderen. Simulation mode activated. Simulatiemodus geactiveerd. Generating SQL for `%1' objects... Genereren van SQL voor `%1' objecten... Destroying objects created on the server. Objecten aangemaakt op de server worden verwijderd. Restoring original names of database, roles and tablespaces. De originele namen van de database, rollen en tablespaces worden teruggezet. Creating object `%1' (%2) Object `%1' (%2) wordt aangemaakt. Creating database `%1' Connecting to database `%1' Renaming `%1' (%2) to `%3' Dropping object `%1' (%2) Object `%1' (%2) wordt verwijderd Changing object `%1' (%2) Object `%1' (%2) wordt aangepast. Running auxiliary command. Een hulpcommando wordt uitgevoerd. ModelFixForm Model file fix Modelcorrectiebestand <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Monospace'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Waiting process to start...</span></p></body></html> &Fix &Correctie &Close &Sluiten Fix model file Corrigeer modelbestand <html><head/><body><p>[pgmodeler-cli not found error]</p></body></html> <html><head/><body><p>[pgmodeler-cli kon niet worden gevonden]</p></body></html> pgmodeler-cli: pgmodeler-cli: Browse for pgmodeler-cli tool Blader naar pgmodeler-cli tool ... ... The specified file is not the pgModeler command line tool (pgmodeler-cli). Het gespecifieerde bestand is niet het pgModeler command line tool (pgmodeler-cli). Input file: Invoerbestand: Output file: Uitvoerbestand: Fix tries: Correctiepogingen: Select input file Selecteer invoerbestand Select output file Selecteer uitvoerbestand Load fixed model when finish Laad gecorrigeerde model na voltooïng In some cases the fix process will fail to restore all objects within the model demanding manual fixes by changing the file on a text editor. <strong>NOTE:</strong> relationships may lost their graphical configuration like custom points and line color. In sommige gevallen kan het correctieproces niet alle objecten herstellen en zijn manuele correcties via een tekstverwerker vereist. <strong>LET OP:</strong> relaties kunnen mogelijkerwijs hun configuratie verliezen, zoals aangepaste punten- en lijn-kleur. Waiting process to start... Wachten op het starten van de taak... Could not locate <strong>%1</strong> tool on <strong>%2</strong>. The fix process can't continue! Please check pgModeler installation or try to manually specify the command below. Het tool <strong>%1</strong> kon niet worden gevonden in <strong>%2</strong>. Het correctieprocess kan niet verder gaan! Gelieve uw pgModeler installatie na te kijken of het pad naar het tool manueel in te stellen. pgModeler command line tool (%1) pgModeler command line tool (%1) ModelNavigationWidget Form Venster Previous model Vorige model Ctrl+Left Ctrl+Right Alt+C Next model Volgende model Close model Sluit model ... ... (model not saved yet) (het model werd nog niet opgeslagen) ModelObjectsWidget Model Objects Modelobjecten Visible object types Hide this widget Verberg dit widget ... ... 1 1 ID ID Object Object Type Type Parent Object Ouder Object Parent Type Ouder Type Select All Selecteer Alles Clear All Alles Wissen Model objects Select Selecteer Return Keer terug Cancel Annuleren Esc Esc Tree view Boomstructuur List view Lijst Objects view configuration Object-overzichtsconfiguratie Expands all items Alle items uitklappen Collapses all items Alle items inklappen Filter: Filter: By ID Volgens ID New Nieuw ModelOverviewWidget Model overview Modeloverzicht Failed to generate the overview image. The requested size %1 x %2 was too big and there was not enough memory to allocate! ModelRestorationForm Model restoration Modelherstel pgModeler was not closed properly in a previous execution and some models were still being edited. Click <strong>Restore</strong> to reopen the models or <strong>Cancel</strong> to abort the restoration. pgModeler werd niet correct afgesloten en sommige modellen waren nog steeds geladen. Klik op <strong>Herstel</strong> om deze mogellen te heropenen of <strong>Annuleer</strong> om het herstel af te breken. pgModeler will try to recover the selected models but will not destroy them in case of loading failure. This option serves as a last resort in order to try to recover the database model. Temporary models will last until the application is closed so the user must try to manually recover the files before exit pgModeler. pgModeler zal proberen om de geselecteerde modellen te herstellen. Indien dit niet lukt blijven deze staan. Deze optie dient als laatste redmiddel om een database model te recupereren. Tijdelijke modellen zullen blijven staan totdat de applicatie wordt afgesloten. Dit betekent dat de gebruiker moet proberen deze manueel te recupereren vooraleer pgModeler af te sluiten. Keep temporary models in case of restoration failure Houdt de tijdelijke modellen bij indien recuperatie faalt Database Database File Modified Size &Cancel &Annuleer &Restore &Herstel ModelValidationHelper There are pending errors! SQL validation will not be executed. Er zijn fouten! SQL validatie zal niet worden uitgevoerd. Operation canceled by the user. De operatie werd geannuleerd door de gebruiker. ModelValidationWidget Form Venster Enables the validation of SQL code in DBMS. This process requires the use of a pre-configured connection. SQL validation will occur only in the last step (when all objects were validated) or when there are no warnings. Connection to be used in the SQL validation pgModeler will generate unique and temporary names for database, role and tablespace objects. This option avoids object duplication errors when running the SQL validation. Use unique temporary names for cluster level objects Warnings: does not prevents model to be saved. Let op: dit voorkomt niet dat het model kan worden opgeslagen. 0 0 Errors: model will not be saved while there are validation errors. Fouten: het model zal niet worden opgeslagen zolang er validatiefouten zijn. Hide this widget Verberg dit widget ... ... Swap ids SQL Validation: SQL Validatie: PostgreSQL version PostgreSQL versie Try to resolve the reported issues. Probeer om de gerapporteerde problemen te verhelpen. Ctrl+S Ctrl+S Clear validation results Validatieresultaten leegmaken Clear Leegmaken Try to apply a fix on the selected validation info. Probeer de validatieinformatie te verhelpen. Options Opties Cancel the SQL validation in progress. Annuleer de lopende SQL validatie. Cancel Annuleren Esc Esc Apply fixes Change the creation order for two objects by swapping their ids Wijzig de aanmaak-volgorde voor twee objecten door hun ids om te wisselen Va&lidate Va&lideer Autodetect Autodetecteer The object <strong>%1</strong> <em>(%2)</em> [id: %3] is being referenced by <strong>%4</strong> object(s) before its creation. Het object <strong>%1</strong> <em>(%2)</em> [id: %3] wordt door <strong>%4</strong> object(en) gerefereerd vóór zijn aanmaak. The object <strong>%1</strong> <em>(%2)</em> [id: %3]%4 is referencing columns created by <strong>%5</strong> relationship(s) but is created before them. Het object <strong>%1</strong> <em>(%2)</em> [id: %3]%4 refereerd naar kolommen aangemaakt door <strong>%5</strong> relatie(s) maar wordt vóór deze aangemaakt. The object <strong>%1</strong> <em>(%2)</em> has a name that conflicts with <strong>%3</strong> object's name(s). Het object <strong>%1</strong> <em>(%2)</em> heeft een naam die conflicteerd met de naam van <strong>%3</strong> andere objecten. The relationship <strong>%1</strong> [id: %2] is in a permanent invalidation state and needs to be relocated. De relatie <strong>%1</strong> [id: %2] is in een permanente ongeldige staat en moet worden herplaats. SQL validation failed due to error(s) below. <strong>NOTE:</strong><em> These errors does not invalidates the model but may affect operations like <strong>export</strong> and <strong>diff</strong>.</em> SQL validatie faalde omwille van de volgende fouten. <strong>LET OP:</strong><em> Deze fouten ontkrachten het model niet maar kunnen <strong>export</strong> en <strong>diff</strong> beïnvloeden.</em> The column <strong>%1</strong> on <strong>%2</strong> <em>(%3)</em> is referencing the geospatial data type <strong>%4</strong> but the <strong>postgis</strong> extension is not present in the model! <strong>HINT:</strong> try to swap the relationship by another ones that somehow are linked to it through generated columns or constraints to solve this issue. Note that other objects may be lost in the swap process. <strong>HINT:</strong> Create the extension in the model or let it be created by applying the needed fixes. <em>The above object was created by a relationship. Change the name pattern on it's generator relationship. Fix will not be applied!</em> <em>Het hierboven vermeldde object werd aangemaakt door een relatie. Verander het naamspatroon van de genererende relatie. Dit probleem kan niet automatisch worden verholpen!</em> Conflicting object: <strong>%1</strong> <em>(%2)</em>. Conflicterende object: <strong>%1</strong> <em>(%2)</em>. Relationship: <strong>%1</strong> [id: %2]. Relatie: <strong>%1</strong> [id: %2]. Referrer object: <strong>%1</strong> <em>(%2)</em> [id: %3]. Refererende object: <strong>%1</strong> <em>(%2)</em> [id: %3]. SQL validation not executed! No connection defined. Database model successfully validated. Het database model werd succesvol gevalideerd. Running SQL commands on server... De SQL commando's worden uitgevoerd op de server... Processing object: %1 Bezig met het verwerken van object: %1 ModelWidget One to One (1-1) Een-op-een (1-1) One to Many (1-n) Een op meer (1-n) Many to Many (n-n) Meer op meer (n-n) Copy Kopieer Inheritance Overerving <strong>ATTENTION:</strong> The database model is protected! Operations that could modify it are disabled! <strong>OPGELET:</strong> Het databasemodel is beschermd! Operaties die het zouden kunnen aanpassen zijn uitgeschakeld! Source Bron Alt+S Alt+S Show object source code Toon object broncode Properties Eigenschappen Space Spatie Edit the object properties Bewerk de eigenschappen van het object Protect Bescherm Unprotect Bescherming af Protects object(s) from modifications Beschermt object(en) tegen aanpassingen Delete Verwijderen Del Del Del. cascade Verwijder cascade Shift+Del Shift+Del Select all Selecteer Alles Select tagged Select Selecteer Ctrl+A Ctrl+A Selects all the graphical objects in the model Selecteert alle grafische objecten in het model Edit data Convert Converteer Ctrl+C Ctrl+C Paste Plakken Ctrl+V Ctrl+V Cut Knippen Ctrl+X Ctrl+X Deps && Referrers Afhankelijkheden && Verwijzers New Nieuw Add a new object in the model Voeg een nieuw object toe aan het model Quick Snel Quick action for the selected object Snelle actie voor het geselecteerde object Rename Hernoem F2 F2 Quick rename the object Snelle hernoeming van het object Move to schema Verplaats naar schema Set tag Zet tag Edit permissions Machtigingen aanpassen Ctrl+E Ctrl+E Change owner Eigenaar veranderen Select children Selecteer kinderen Open relationship Open relatie Custom SQL Aangepaste SQL Alt+Q Alt+Q Convert to sequence Converteer naar sequentie Convert to serial Converteer naar serieel Break line Nieuw lijn Remove points Verwijder punten Enable SQL Schakel SQL in Disable SQL Schakel SQL uit Duplicate Ctrl+D Extended attributes Show Hide Jump to table Schemas rectangles Fade in/out Fade in Fade out Relationships Relaties Swap ids Edit the objects creation order by swapping their ids 90° (vertical) 90° (vertikaal) 90° (horizontal) 90° (horizontaal) 90° + 90° (vertical) 90° + 90° (vertikaal) 90° + 90° (horizontal) 90° + 90° (horizontaal) All objects Schemas Tables Tabellen Views Textboxes Zoom: %1% Zoom: %1% Do you really want to convert the relationship into an intermediate table? Bent u zeker dat u de relatie wilt converteren naar een intermediaire tabel? Loading database model Het databasemodel wordt geladen Saving database model Het databasemodel wordt opgeslagen Do you want to %1 the selected schema's children too? protect unprotect Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. Wenst u alle afhankelijken van de geselecteerde objecten ook te kopiëren? Dit minimalizeert het verbreken van referenties wanneer gekopieerde objecten in een ander model worden geplakt. Pasting objects... Bezig met het plakken van objecten... Validating object: `%1' (%2) Bezig met het valideren van object: `%1' (%2) Generating XML for: `%1' (%2) Bezig met het genereren van XML voor: `%1' (%2) Pasting object: `%1' (%2) Bezig met het plakken van object: `%1' (%2) Not all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! Niet alle objecten werden in het model geplakt omwille van fouten die werden gegenereerd gedurende dit proces. Kijk de error-stack na voor meer details! <strong>CAUTION:</strong> You are about to delete objects in cascade mode which means more objects than the selected will be dropped too. Do you really want to proceed? <strong>PAS OP:<strong> U staat op het punt om objecten te verwijderen in cascade modus, dit betekent dat ook objecten die niet geselecteerd zijn verwijderd kunnen worden. Bent u zeker dat u wilt verdergaan? <strong>CAUTION:</strong> Remove multiple objects at once can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? <strong>PAS OP:</strong> Meerdere objecten in één keer verwijderen kan onherroepbare ongeldigheden veroorzaken in andere objecten binnen het model en ervoor zorgen dat deze objecten ook worden verwijderd. Bent u zeker dat u verder wenst te gaan? <strong>CAUTION:</strong> Remove a relationship can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? <strong>PAS OP:</strong> Een relatie verwijderen kan onherroepbare ongeldigheden veroorzaken in andere objecten en ervoor zorgen dat deze objecten ook worden verwijderd. Bent u er zeker van dat u wenst verder te gaan? Do you really want to delete the selected object? Bent u er zeker van dat u het geselecteerde object wenst te verwijderen? The cascade deletion found some problems when running! Some objects could not be deleted or registered in the operation's history! Please, refer to error stack for more details. Het cascade verwijderen kwam enkele problemenen tegen tijdens het uitvoeren! Sommige objecten konden niet worden verwijderd of geregistreerd in de actie-geschiedenis! Gelieve de error-stack na te kijken voor meer details. (no objects) (geen objecten) None Source code Broncode Constraints Constraints ModelsDiffHelper Processing object `%1' (%2)... Object `%1' wordt behandeld (%2)... Skipping object `%1' (%2)... Object `%1' wordt overgeslagen (%2)... Processing diff infos... Diff informatie wordt verwerkt... Processing `%1' info for object `%2' (%3)... `%1' informatie voor object `%2' wordt verwerkt (%3)... No differences between the model and database. Preparing diff code... NewObjectOverlayWidget Form Venster Role Rol Tag Tag Cast Cast A A Language Taal Textbox Tekst box Event Trigger Event Trigger Tablespace Tablespace Schema Schema Domain Domein Conversion Conversie Aggregate Aggregator Collation Sortering Table Tabel Type Type Op. Family Op. Familie Sequence Sequentie Extension Uitbreiding Function Functie Op. Class Op. Klasse Operator Operator View View Permissions Machtigingen Rule Regel Index Index Column Kolom Constraint Constraint Generic SQL Trigger Trigger Policy Many-to-many Meer-op-meer One-to-many Een-op-meer One-to-one Een-op-een Inheritance Overerving Copy Kopieer G G K K H H J J D D E E F F L L O O U U I I R R S S Q Q T T P P M M Y Y W W 9 9 Z Z X X C C V V B B 8 8 1 1 2 2 3 3 5 5 4 4 0 0 NumberedTextEditor Load Laden Load the object's source code from an external file Edit Edit the source code in the preferred external editor Clear Leegmaken Upper case Lower case Ident right Ident left SQL file (*.sql);;All files (*.*) SQL Code (*.sql);;Alle bestanden (*.*) Load file The source editor `%1' is running on `pid: %2'. Could not start the source code editor application `%1'! Make to sure that the source editor path defined in the general settings points to a valid executable and the current user has permission to run the application. Error message returned: `%2' ObjectDepsRefsWidget Dependencies Afhankelijken ID ID Object Object Type Type Parent Object Ouder Object Parent Type Ouder Type Exclude indirect dependencies Sluit indirecte afhankelijken uit References Referenties Include indirect references Neem indirecte afhankele op This object does not exists anymore. The dependencies and references listing are disabled. Dit object bestaat niet langer. Het lijsten van afhankelijken en referenties is uitgeschakeld. Object's dependencies & references Afhankelijken & referenties van het object ObjectFinderWidget Form Venster Pattern: Patroon: Find Zoek Defines the search filter Definieert de zoekfilter Filter Filter Clears the search results Maakt de zoekresultaten leeg Clear Leegmaken ... ... Hide this widget Verberg dit widget (Un)selects the graphical objects in the results grid Select Selecteer Regular Expression Regular expression Exact Match Exacte Overeenkomst Select All Selecteer Alles Clear All Alles Wissen Case Sensitive Hoofdlettergevoelig ID ID Object Object Type Type Parent Object Ouder Object Parent Type Ouder Type Fades outs all the graphical objects in the results grid (or those not listed). The current fade in/out state of all objects is modified. Fade out Listed Not listed Found <strong>%1</strong> object(s). <strong>%1</strong> object(en) gevonden. No objects found. Geen objecten gevonden. ObjectRenameWidget Form Venster .... ... to: naar: Rename Hernoem Cancel Annuleren ObjectSelectorWidget Form Venster Clear field Veld leegmaken Select Object Selecteer Object Select %1 ObjectsTableWidget Form Venster Add Item Item Toevoegen Ins Ins Remove Item Item Verwijderen Del Del Update Item Item Updaten Alt+R Alt+R Remove All Alles Verwijderen Shift+Del Shift+Del Duplicate item Ctrl+D Edit Item Item Aanpassen Space Spatie Move Up Naar Boven Ctrl+Up Move Down Naar Beneden Ctrl+Down Move to start Naar de eerste plaats Ctrl+Home Ctrl+Home Move to end Naar de laatste plaats Ctrl+End, Ctrl+S Ctrl+End, Ctrl+S Confirmation Bevestiging Do you really want to remove the selected item? Bent u zeker dat u het geselecteerde item wilt verwijderen? Do you really want to remove all the items? OperationList (invalid object) (ongeldig object) OperationListWidget Executed Operations Uitgevoerde Acties Hide this widget Verberg dit widget ... ... 1 1 Operations: Acties: 0 0 Position: Positie: Delete operation history Verwijder actiegeschiedenis Undo Ongedaan maken Redo Opnieuw doen Object: %1 Object: %1 Name: %1 Naam: %1 created aangemaakt removed verwijderd modified aangepast moved verplaatst Operation: %1 Actie: %1 Operation history exclusion Actiegeschiedenisuitsluiting Delete the executed operations history is an irreversible action, do you want to continue? Het verwijderen van de geschiedenis van de uitgevoerde acties kan niet worden ongedaan gemaakt, bent u zeker dat u wilt verdergaan? OperatorClassWidget Default Class: Standaardklasse: Indexing: Indexering: Elements Elementen Element Type: Elementtype: Operator Operator Function Functie Storage Opslag Function: Functie: Operator: Operator: Support/Strategy: Ondersteuning/Strategie: Op. Family: Operator Familie: Storage Type Opslagtype Object Object Type Type Support/Strategy Ondersteuning/Strategie Operator Family Operator Familie OperatorFamilyWidget Indexing: Indexering: OperatorWidget MERGES MERGES HASHES HASHES Options: Opties: Arguments Argumenten Advanced Geavanceerd Join: Join: Restrict: Restrict: Commutator: Commutator: Negator: Negator: Operator Func.: Operator functie: Left Argument Type Linkse Argument Type Right Argument Type Rechtse Argument Type To create a unary operator it is necessary to specify as <strong><em>'any'</em></strong> one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator. Om een unaire operator aan te maken moet u <strong><em>'any'</em></strong> als een van zijn argumenten specifiëren. Daarenboven mag de functie die de operator definieert slechts één parameter bezitten die van hetzelfde type moet zijn als de unaire operator. ParameterWidget Default Value: Standaardwaarde: Mode: Modus: IN IN OUT OUT VARIADIC PermissionWidget Permissions Machtigingen ID: ID: Disable SQL code Niet-uitvoerbare SQL code Roles Rollen Privileges Machtiginen Edit permissions Machtigingen aanpassen &Grant Re&voke Cascade Cascade Privilege Machtiging GRANT OPTION GRANT OPTION Add Permission Machtiging toekennen Update Permission Machtiging aanpassen Cancel Operation Actie annuleren Code Preview Codevoorbeeld Id Id Name Naam Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. -- No permissions defined for the specified object! -- Er zijn geen machtigingen gedefinieerd voor het gespecifieerde object! /* Could not generate the SQL code preview for permissions! /* Er kon geen SQL Codevoorbeeld worden gegenereerd voor de machtigingen! PgModelerCLI Unrecognized option '%1'. Niet-herkende optie '%1'. Value not specified for option '%1'. Er is geen waarde gespecifieerd voor optie '%1'. Option '%1' does not accept values. Optie '%1' aanvaardt geen waardes. Usage: pgmodeler-cli [OPTIONS] Gebruik: pgmodeler-cli [OPTIES] command line interface. commandolijn interface. General options: Algemene opties: PNG and SVG export options: DBMS export options: DBMS exporteringsopties: Miscellaneous options: Andere opties: There are no connections configured. Er zijn geen verbindingen geconfigureerd. Input file must be different from output! Het invoerbestand mag niet hetzelfde zijn als het uitvoerbestand! Incomplete connection information! Onvolledige verbindingsinformatie! Invalid zoom specified! Een ongeldige zoom gespecifieerd! Invalid action specified to update mime option! The actie om de mime optie the updaten is ongeldig! Starting model fixing... Modelcorrectie begint... Starting mime update... Mime update begint... Starting model export... Model export begint... Model successfully fixed! Het model werd succesvol gecorrigeerd! Connection aliased as '%1' was not found in the configuration file. PostgreSQL Database Modeler Project - pgmodeler.io Copyright 2006-2018 Raphael A. Silva <raphael@pgmodeler.io> This CLI tool provides several operations over models and databases without the need to perform them in pgModeler's graphical interface. All available options are described below. %1, %2 [FILE] Input model file (.dbm). This is mandatory for fix, export operations. %1, %2 [DBNAME] Input database name. This is mandatory for import operation. %1, %2 [FILE] Output file. This is mandatory for fixing model or exporting to file, png or svg. %1, %2 Try to fix the structure of the input model file in order to make it loadable again. %1, %2 [NUMBER] Model fix tries. When reaching the maximum count the invalid objects will be discarded. %1, %2 Export the input model to a sql script file. %1, %2 Export the input model to a png image. %1, %2 Export the input model to a svg file. %1, %2 Export the input model directly to a PostgreSQL server. %1, %2 Import a database to an output file. %1, %2 Compares a model and a database or two databases generating the SQL script to synch the latter in relation to the first. %1, %2 Force the PostgreSQL version of generated SQL code. %1, %2 Silent execution. Only critical messages and errors are shown during process. %1, %2 Show this help menu. Connection options: %1, %2 List available connections in file %3. %1, %2 [ALIAS] Connection configuration alias to be used. %1, %2 [HOST] PostgreSQL host in which a task will operate. %1, %2 [PORT] PostgreSQL host listening port. %1, %2 [USER] PostgreSQL username. %1, %2 [PASSWORD] PostgreSQL user password. %1, %2 [DBNAME] Connection's initial database. %1, %2 Draws the grid in the exported image. %1, %2 Draws the page delimiters in the exported image. %1, %2 Each page will be exported in a separated png image. (Only for PNG images) %1, %2 [FACTOR] Applies a zoom (in percent) before export to png image. Accepted zoom interval: %3-%4 (Only for PNG images) %1, %2 Ignores errors related to duplicated objects that eventually exist in the server. %1, %2 [CODES] Ignores additional errors by their codes. A comma-separated list of alphanumeric codes should be provided. %1, %2 Drop the database before execute a export process. %1, %2 Runs the DROP commands attached to SQL-enabled objects. %1, %2 Simulates an export process by executing all steps but undoing any modification in the end. %1, %2 Generates temporary names for database, roles and tablespaces when in simulation mode. Database import options: %1, %2 Ignore all errors and try to create as many as possible objects. %1, %2 Import system built-in objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Import extension objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Run import in debug mode printing all queries executed in the server. Diff options: %1, %2 [DBNAME] The database used in the comparison. All the SQL code generated is applied to it. %1, %2 Save the generated diff code to output file. %1, %2 Apply the generated diff code on the database server. %1, %2 Don't preview the generated diff code when applying it to the server. %1, %2 Drop cluster level objects like roles and tablespaces. %1, %2 Revoke permissions already set on the database. New permissions configured in the input model are still applied. %1, %2 Drop missing objects. Generates DROP commands for objects that are present in the input model but not in the compared database. %1, %2 Force the drop of missing columns and constraints. Causes only columns and constraints to be dropped, other missing objects aren't removed. %1, %2 Rename the destination database when the names of the involved databases are different. %1, %2 Don't drop or truncate objects in cascade mode. %1, %2 Truncate tables prior to alter columns. Avoids errors related to type casting when the new type of a column isn't compatible to the old one. %1, %2 Don't reuse sequences on serial columns. Drop the old sequence assigned to a serial column and creates a new one. %1, %2 Don't force the recreation of objects. Avoids the usage of a DROP and CREATE commands to create a new version of the objects. %1, %2 Don't recreate the unmodifiable objects. These objects are the ones which can't be changed via ALTER command. %1, %2 [ACTION] Handles the file association to .dbm files. The ACTION can be [%3 | %4]. ** The diff process allows the usage of the following options related to import and export operations: * Export: * Import: ** When running the diff using two databases (%1 and %2) there's the need to specify two connections/aliases. If only one connection is set it will be used to import the input database as well to retrieve database used in the comparison. A second connection can be specified by appending a 1 on any connection configuration parameter listed above. Available connections (alias : connection string) No operation mode was specified! Export, fix model, import database, diff and update mime operations can't be used at the same time! Multiple export mode was specified! No input file was specified! No input database was specified! No output file was specified! No input file or database was specified! The input file and database can't be used at the same time! No database to be compared was specified! No diff action (save or apply) was specified! No output file for the diff code was specified! ** Error code `%1' found and ignored. Proceeding with export. ** Command: %1 Extracting objects' XML... De XML van de objecten word geextraheerd... Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted! Het invoerbestand is ongeldig! Kijk na of dit bestand door pgModeler werd gegenereerd ofdat het bestand gecorrupteerd raakte! Recreating objects... De objecten worden heraangemaakt... ** Object(s) that couldn't fixed: ** Object(en) die niet kon(den) worden gecorrigeerd: WARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2) OPGEPAST: Er zijn objecten die niet konden worden gecorrigeerd. We proberen opnieuw... (poging %1 van %2) Loading input file: %1 Fixed model file: %1 Export to PNG image: %1 Export to SVG file: %1 Export to SQL script file: %1 Export to DBMS: %1 Export successfully ended! Starting database import... Input database: %1 Saving the imported database to file... Import successfully ended! Starting diff process... Input model: %1 Compare to: %1 Loading input model... Importing the database `%1'... Comparing the generated models... No differences were detected. Saving diff to file `%1' ** WARNING: You are about to apply the generated diff code to the server. Data can be lost in the process! ** Proceed with the diff applying? (yes/no) > yes no Diff code not applied to the server. Applying diff to the database `%1'... Diff successfully ended! Mime database successfully updated! Database model files (.dbm) are already associated to pgModeler! Database modelbestanden (.dbm) zijn reeds geassocieerd met pgModeler! There is no file association related to pgModeler and .dbm files! Er is geen bestandsassociatie tussen pgModeler and .dbm bestanden! Mime database operation: %1 Mime databaseoperatie: %1 Can't erase the file %1! Check if the current user has permissions to delete it and if the file exists. Het bestand %1 kan niet worden verwijderd! Kijk na of de huidige gebruiker voldoende machtigingen heeft om het bestand te verwijderen en of het bestand bestaat. Running update-mime-database command... Het update-mime-database commando wordt uitgevoerd... PgModelerPlugin Plugin Information Plugin Informatie Version: %1 Versie: %1 Author: %1 Auteur: %1 PgModelerUiNS Do you want to apply the <strong>SQL %1 status</strong> to the object's references too? This will avoid problems when exporting or validating the model. Wenst u de <strong> SQL %1 status</strong> ook toe te passen op de referenties van het object? Dit vermijdt problemen bij het exporteren of valideren van het model. disabling uitschakelen enabling inschakelen PgSQLTypeWidget Form Venster Data Type Data Type SRID: SRID: Variation: Variatie: Z Z M M Precision Precisie Spatial: Ruimtelijk: Dimension Dimensie Format: Formaat: Timezone: Tijdszone: Type: Type: P: P: Length Lengte L: L: Interval: Interval: [ ]: [ ]: NONE GEEN PluginsConfigWidget Form Venster Open in file manager Open in bestandsbeheer Plug-ins root directory: Plug-in startmap: Loaded plug-ins Geladen plug-ins Plugin Plugin Version Versie Library Bibliotheek PolicyWidget Basics Command: Permissive Roles Rollen Expressions Expressies USING: CHECK: Name Naam Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. QObject new_database nieuwe_database %1 (line: %2) %1 (lijn %2) Relationship %1_has_one_%2 %1_heeft_exact_een_%2 %1_has_many_%2 %1_heeft_meerdere_%2 many_%1_has_many_%2 meerdere_%1_heeft_meerdere_%2 %1_inherits_%2 %1_erft_van_%2 %1_copies_%2 %1_kopieert_%2 RelationshipConfigWidget Form Venster Connection Mode Verbindingsmodus Connect FK to PK columns Verbindt FK naar PK kolommen This mode renders the relationships in crow's foot notation which has a better semantics and readability. It also determines the optimal point where the relationship is connected on the tables' edges taking their position into account. Crow's foot notation This mode determines the optimal point where the relationship is connected on the tables' edges taking their position into account. It implies the usage of the classical ER notation. Connect tables' edges This mode is available only for <strong>one-to-one</strong>, <strong>one-to-many</strong> and <strong>fk relationships</strong> but provides a better semantics when linking tables by placing the lines on the exact point where the relationship occurs. It implies the usage of the classical ER notation. This mode is the classical one. It connects the relationship to tables through their central points. It implies the usage of the classical ER notation. Connect tables' center points Verbindt de centrale punten van de tabellen FK Settings && Patterns FK instellingen && Patronen Foreign key settings Foreign key instellingen Deferral: Uitstel: Deferrable: Uitstelbaar: ON DELETE: ON DELETE: ON UPDATE: ON UPDATE: Name patterns Naamspatronen Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Het patroon voor de foreign key wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n). Foreign Key (Source): Foreign Key (Bron): Relationship type: Relatietype: Pattern for columns generated based upon target table's pk (n-n). Het patroon voor kolommen die worden gegenereerd op basis van de pk van de doeltabel (n-n). Column (Target): Kolom (Doel): One to one (1:1) Een-op-een (1:1) One to many (1:n) Een op meerdere (1:n) Many to many (n:n) Meerdere op meerdere (n:n) Generalization Generalisatie Copy Kopieer Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Het patroon voor de kolommen wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n). Column (Source): Kolom (Bron): Pattern for foreign key generated based upon target table's pk (n-n). Het patroon voor de foreign key wordt gegenereerd op basis van de pk van de doeltabel (n-n). Foreign Key (Target): Foreign Key (Doel): Pattern for unique key generated by the relationship. Het patroon voor de unieke sleutel wordt gegenereerd op basis van de relatie. Unique Key Name: Naam van de unieke sleutel: Pattern for primary key generated by identifier relationship. Het patroon voor de primary key wordt gegenereerd op basis van de relatie met de identifier. Primary Key Name: Naam van de Primary Key: Primary Key Column: Primary Key Kolom: Default Standaard RelationshipWidget General Algemeen Table 1: Tabel 1: Name Patterns Naamspatronen Use the values defined on settings dialogs for the fields below Gebruik de waarden ingesteld in het instellingsvenster voor de velden hieronder Use global settings for these fields Gebruik globale instellingen voor deze velden Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Het patroon voor de kolommen wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n). Column (Source): Kolom (Bron): Pattern for columns generated based upon target table's pk (n-n). Het patroon voor kolommen die worden gegenereerd op basis van de pk van de doeltabel (n-n). Column (Target): Kolom (Doel): Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Het patroon voor de foreign key wordt gegenereerd op basis van de pk van de gerefereerde tabel (1-1 en 1-n) of op basis van de pk van de brontabel (n-n). Foreign Key (Source): Foreign Key (Bron): Pattern for foreign key generated based upon target table's pk (n-n). Het patroon voor de foreign key wordt gegenereerd op basis van de pk van de doeltabel (n-n). Foreign Key (Target): Foreign Key (Doel): Pattern for primary key generated by identifier relationship. Het patroon voor de primary key wordt gegenereerd op basis van de relatie met de identifier. Primary Key Name: Naam van de Primary Key: Pattern for unique key generated by the relationship. Het patroon voor de unieke sleutel wordt gegenereerd op basis van de relatie. Unique Key Name: Naam van de unieke sleutel: Primay Key Column: Primary Key Kolom: Cardinality: Cardinaliteit: Name of the table generated from many to many relationship De naam van de tabel die is gegenereerd op basis van de meer-op-meer relatie Gen. Table Name: Algemene Tabelnaam: Rel. Type: Relatietype: Table 2: Tabel 2: [SRC] is required [BRON] is vereist [DST] is required [DOEL] is vereist Foreign key Settings Foreign key instellingen Deferrable: Uitstelbaar: Deferral: Uitstel: ON DELETE: ON DELETE: ON UPDATE: ON UPDATE: One to one relationship Een-op-een relatie &1-1 &gen E&XCLUDING One to many relationship Een-op-meer relatie 1-n 1-n Many to many relationship Meer-op-meer relatie n-n n-n Generalization relationship (inheritance) Generalisatierelatie (overerving) Dependency / Copy relationship Afhankelijkheid / Kopieer de relatie dep dep Relationship generated via foreign key Relatie gegenereerd via foreign key fk fk The receiver's primary key will be composed by the generated foreign key columns. De ontvanger's primary key wordt samengesteld door de gegenereerde foreign key kolommen. Identifier Identifier Instead of create a multi-valued primary key with the generated foreign keys columns a single column is created and used as primary key. In plaats van een multi-kolom primary key te creeren op basis van de foreign key kolommen, wordt een enkele kolom aangemaakt en gebruikt als primary key. Single PK column Enkele PK kolom Custom Color: Aangepaste kleur: Copy Options Kopieeropties INDEXES INDEXES COMMENTS COMMENTS INCLUDING INCLUDING DEFAULTS DEFAULTS CONSTRAINTS CONSTRAINTS Use defaults Gebruik standaardwaarden ALL ALL STORAGE STORAGE Attributes Attributen Constraints Constraints Primary key Primary key Advanced Geavanceerd Attribute Attribuut Type Type Constraint Constraint Name Naam Use the special primary key if you want to include a primary key containing generated columns to the receiver table. <strong>Important:</strong> if this is a new relationship there is a need to finish its creation and reopen this dialog to create the special primary key. Gebruik de speciale primary key wanneer u een primary key samengesteld uit gegenereerde kolommen van de ontvangende tabel wilt insluiten. <strong>Belangrijk:</strong> indien dit een nieuwe relatie is moet u de creatie van deze relatie voltooien en dit dialoogvenster daarna opnieuw openen om de speciale primary key aan te maken. This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables. Dit geavanceerde tab-blad toont de objecten (kolommen of tabellen) die automatisch worden aangemaakt door de verbindingen van de relatie alsook de foreign keys die de link tussen de deelnemende tabellen voorstelt. Available tokens to define name patterns:<br/> <strong>%1</strong> = Reference (source) primary key column name. <em>(Ignored on constraint patterns)</em><br/> <strong>%2</strong> = Reference (source) table name.<br/> <strong>%3</strong> = Receiver (destination) table name.<br/> <strong>%4</strong> = Generated table name. <em>(Only for n:n relationships)</em> Default Standaard Referer View: Refererende View: Referer view references one or more columns of a table to construct it's own columns. De refererende view refereert naar een of meerdere kolommen van een tabel om zijn eigen kolommen aan te maken. Referenced table has its columns referenced by a view in order to construct the columns of this latter. De gerefereerde tabel heeft kolommen waarnaar wordt gerefereerd door een view die deze kolommen gebruikt om zijn eigen kolommen aan te maken. Referer Table: Refererende Tabel: Referer table references one or more columns of a table through foreign keys. This is the (n) side of relationship. De refererende tabel refereert naar een of meerdere kolommen in een andere tabel via foreign keys. Dit is the (n)-zijde van de relatie. Referenced table has its columns referenced by a table's foreign key. This is the (1) side of relationship. De gerefereerde tabel heeft kolommen waarnaar wordt gerefereerd door een foreign key in een andere tabel. Dit is de (1) zijde van de relatie. Referenced Table: Gerefereerde Tabel: Reference Table: Referentietabel: Reference table has the columns from its primary key will copied to the receiver table in order to represent the linking between them. This is the (1) side of relationship. De referentietabel heeft kolommen in zijn primary key die gekopieerd zullen worden naar de ontvangende tabel om de link tussen deze te bewerkstelligen. Dit is de (1) zijde van de relatie. Receiver Table: Ontvangende Tabel: Receiver (or referer) table will receive the generated columns and the foreign key in order to represent the linking between them. This is the (n) side of relationship. De ontvanger (of gerefereerde) tabel zal de gegenereerde kolommen en de foreign key ontvangen om de link tussen beiden te bewerkstelligen. Dit is de (n) zijde van de relatie. In many-to-many relationships both tables are used as reference to generate the table that represents the linking. Columns from both tables are copied to the resultant table and two foreign keys are created as well in order to reference each participant table. In meer-op-meer relaties worden beide tabellen als referentie gebruikt om de link-tabel te representeren. Kolommen van beide tabellen worden gekopieerd naar de resulterende link-tabel en foreign keys naar elke deelnemende tabel worden aangemaakt. is required is vereist ResultSetModel [binary data] [binaire data] RoleWidget yyyy-MMM-dd hh:mm:ss yyyy-MMM-dd hh:mm:ss Validity Geldigheid Connections: Verbindingen: Attributes Attributen Superuser Superuser Inherit permissions Can create database Bypass RLS Can use replication Can login Kan inloggen Can create role Members Leden Member of Lid van Members (Admin.) Leden (Admin.) Password: Wachtwoord: Encrypted Geëncrypteerd Assigning <strong><em>-1</em></strong> to <strong><em>Connections</em></strong> creates a role without connection limit.<br/> Unchecking <strong><em>Validity</em></strong> creates an role that never expires. Role Rol RuleWidget Event: Event: Execution Type: Uitvoeringstype: Conditional Expr.: Voorwaardelijke Expressie: Commands Commando's SQL Command: SQL Commando: SQL command SQL commando To create a rule that does not perform any action (<strong>DO NOTHING</strong>) simply do not specify commands in the SQL commands table. Om een regel aan te maken die niets doet (<strong>DO NOTHING</strong>), laat eenvoudigweg de commando's in de SQL commando tabel leeg. SQLExecutionWidget Form Venster Save SQL commands Sla SQL commando's op Search in SQL code Close the current SQL script SQL script currently handled (not saved) Handle external SQL script &Script Alt+F Alt+Z Fi&nd Run the specified SQL command Voer het commando uit Run SQL Uitvoeren F6 F6 Clear sql input field and results Wis SQL invoerveld en resultaten Clear All Alles Wissen Export results to a CSV file Exporteer de resultaten naar CSV bestand Snippe&ts Snippe&ts Alt+T E&xport E&xporteren Alt+X Toggles the output pane &Output Alt+O Alt+O Current working database Results Messages History ... ... SQL file (*.sql);;All files (*.*) SQL Code (*.sql);;Alle bestanden (*.*) Load Laden Save Opslaan Save as Opslaan als [binary data] [binaire data] No results retrieved or changes done due to the error above. Messages (%1) Results (%1) [%1]: SQL command successfully executed in <em><strong>%2</strong></em>. <em>%3 <strong>%4</strong></em> Rows affected Rows retrieved Load SQL commands Laad SQL commando's Save CSV file Sla CSV bestand op Comma-separated values file (*.csv);;All files (*.*) Bestand met komma-gesepareerde waarden (*.csv);;Alle bestanden (*.*) The SQL input field and the results grid will be cleared! Want to proceed? Het SQL invoerveld en de resultaten-lijst zullen worden leeggemaakt! Wenst u verder te gaan? Copy selection Kopiëer de selectie Plain format CVS format This action will wipe out all the SQL commands history for all connections! Do you really want to proceed? Clear history Save history Reload history Find in history Hide find tool This action will wipe out all the SQL commands history for the current connection! Do you really want to proceed? SQLToolWidget Form Venster Database explorer Databaseverkenner Disconnect from all databases Van alle databases ontkoppelen ... Update the database list Toggle the object's attributes grid Attributes Attributen Alt+R Alt+R Toggle the display of source code pane Source code Broncode SQL execution SQL uitvoering Warning Opgepast <strong>ATTENTION:</strong> Disconnect from all databases will close any opened tab in this view! Do you really want to proceed? <strong>LET OP:</strong> Van alle databases ontkoppelen sluit alle tab-bladen in dit venster! Bent u zeker dat u verder wilt gaan? SceneInfoWidget Form Venster Current position of the mouse in the canvas - Current zoom factor Currently selected object(s) Dimensions of the selected object(s) No selection N/A Sel. objects: %1 SchemaWidget Fill color: Vulkleur: Show rectangle Toon rechthoek SequenceWidget Cyclic: Cyclisch: Start: Start: Maximum: Maximum: Minimum: Defualt values: Increment: Toename: Cache: Cache: Owner Col.: Bezittende kolom: User defined SnippetsConfigWidget Form Venster Label: Label: Applies to: Van toepassing op: ID: ID: Create new connection Maak een nieuwe verbinding aan Cancel edition Annuleer aanpassingen Edit selected connection Pas de geselecteerde verbinding aan Delete selected connection Verwijder de geselecteerde verbinding Remove All Alles Verwijderen Shift+Del Shift+Del Snippets: Snippets: Parse the snippet in order to check if there are syntax errors. Ontleed het snippet om zeker te zijn dat het geen syntactische fouten bevat. Parse Ontleed Add Toevoegen Update Updaten Parsable or dynamic snippets are written in the <strong>schema micro language</strong> syntax. When using a parsable snippet the attributes surrounded in <strong>{}</strong> will be replaced by the selected object's matching attributes. Ontleedbare of dynamische snippets worden in de <strong>schema micro language</strong> syntax geschreven. Wanneer een ontleedbaar snippet wordt gebruikt worden attributen die met <strong>{}</strong> zijn omringd, vervangen door de attributen van het overeenkomstige geselecteerde object. Parsable Ontleedbaar When handling parsable snippets empty attributes will be replaced by a value in the format <strong>{attribute}</strong>. Note that this option can affect the semantics of the resulting snippet. Bij ontleedbare snippets worden lege attributen vervangen door een waarde volgens het formaat <strong>{attribuut}</strong>. Deze optie kan de betekenis van het snippet beïnvloeden. Placeholders Plaatshouder Filter: Filter: General purpose Algemeen doel All snippets Alle snippets /* Error parsing the snippet '%1': %2 */ /* Er trad een fout op tijdens het onleden van het snippet '%1': %2 */ Duplicated snippet id <strong>%1</strong> detected. Please, specify a different one! Gelieve een andere snippet id te selecteren, de id <strong>%1</strong> is reeds in gebruik! Invalid ID pattern detected <strong>%1</strong>. This one must start with at leat one letter and be composed by letters, numbers and/or underscore! Een ongeldig ID patroon werd gedetecteerd. Deze moet starten met minstens één letter en worden gevormed door letters, nummer en/or een underscore! Empty label for snippet <strong>%1</strong>. Please, specify a value for it! Gelieve een waarde in te vullen voor het label van snippet <strong>%1</strong>! Empty code for snippet <strong>%1</strong>. Please, specify a value for it! Gelieve een waarde in te vullen voor de code van snippet <strong>%1</strong>! The dynamic snippet contains syntax error(s). Additional info: <br/><em>%1</em> Het dynamische snippet bevat één of meer syntactische fouten. Bijkomende info: <br/><em>%1</em> Do you really want to remove all snippets? Bent u zeker dat u alle snippets wilt verwijderen? No syntax errors found in the snippet. Het snippet bevat geen syntactische fouten. General Algemeen SourceCodeWidget Version: Versie: PostgreSQL PostgreSQL iconecodigo SQL SQL Code display: Codeweergave: Original Origineel Original + depedencies' SQL Origineel + SQL voor afhankelijken Original + children's SQL Origineel + SQL voor kinderen Save the SQL code to a file. Sla de SQL code op in een bestand. Save SQL Sla SQL Op XML XML Source code visualization Broncodevisualisatie <strong>Original:</strong> displays only the original object's SQL code.<br/><br/> <strong>Dependencies:</strong> displays the original code including all dependencies needed to properly create the selected object.<br/><br/> <strong>Children:</strong> displays the original code including all object's children SQL code. This option is used only by schemas, tables and views. Save SQL code as... Sla SQL code op als... SQL code (*.sql);;All files (*.*) SQL Code (*.sql);;Alle bestanden (*.*) Generating source code... De broncode wordt gegeneerd... -- NOTE: the code below contains the SQL for the selected object -- as well for its dependencies and children (if applicable). -- -- This feature is only a convinience in order to permit you to test -- the whole object's SQL definition at once. -- -- When exporting or generating the SQL for the whole database model -- all objects will be placed at their original positions. -- LET OP: de volgende code bevat SQL voor zowel het geselecteerde object -- alsook zijn afhankelijken kinderen (indien zo aangevinkt). -- -- Dit feature bestaat enkel zodat u op een eenvoudige manier de volledige -- SQL definitie van het object kan testen. -- -- Bij het exporteren of genereren van de SQL code voor de volledige database -- worden alle objecten in hun originele positie geplaatst. -- SQL code purposely truncated at this point in demo version! -- SQL code unavailable for this type of object -- -- Er is geen SQL code beschikbaar voor dit type object -- <!-- XML code preview disabled in demonstration version --> <!-- XML codevoorbeelden zijn niet beschikbaar in de demo-versie --> SwapObjectsIdsWidget Change objects creation order Create: Aanmaken: ID: ID: Before: Voor: Change the objects creation order is an irreversible operation and cause the operations history to be automatically erased. Note that the creation order configured in this form is not definitive and may change after a model validation. Swap the object ids changing their creation order Swap ids Filter: Filter: ID ID Object Object Type Type Parent Object Ouder Object Parent Type Ouder Type Swap the values of the fields Wissel de veldwaarden om Swap values Wissel de waarden om Table new_table nieuwe_tabel In demonstration version tables can have only `%1' instances of each child object type or ancestor tables! You've reach this limit for the type: `%2' Tabellen kunnen slechts `%1' instancies per kind-object type of voorouder-tabellen hebben in demonstratie-versies! U heeft deze limiet bereikt voor het type `%2' TableDataWidget Edit table data Add empty rows Ins Ins Add an empty column Delete rows <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> Remove all rows from the grid preserving columns Shift+Del Shift+Del Delete the selected rows Del Del Duplicate the selected rows Ctrl+D Delete the selected columns Copy items on the grid Copy Add row Delete column Paste items on the grid Paste Plakken Ctrl+V Ctrl+V Fills the grid using a CSV file <html><head/><body><p>Some invalid or duplicated columns were detected. In order to solve this issue double-click the header of the highlighted ones in order to define the correct name in which the data belongs to or delete the entire column. Note that these columns are completely ignored when generating the <span style=" font-weight:600;">INSERT</span> commands.</p></body></html> Add column Duplicate rows Change the values of all selected cells at once Bulk data edit Ctrl+E Ctrl+E Remove all columns (and rows) from the grid Delete all columns Ctrl+Shift+Del Delete all rows Delete columns is an irreversible action! Do you really want to proceed? Remove all rows is an irreversible action! Do you really want to proceed? Remove all columns is an irreversible action! Do you really want to proceed? Unknown column Duplicated column TableObjectView Relationship: %1 Relatie: %1 TableWidget Options Opties Tag: Tag: With OID Met OID Generate ALTER for columns/constraints Genereer ALTER voor kolommen/constraints Unlogged Niet gelogged Enable row level security Force RLS for owner &Columns Co&nstraints Tri&ggers &Rules &Indexes &Policies &Tables Edit data Define initial data for the table Name Naam Schema Schema Type Type PK Default Value Standaardwaarde Attribute(s) It is not possible to mark a column as primary key when the table already has a primary key which was created by a relationship! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. It is not possible to mark a column created by a relationship as primary key! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. ON DELETE ON DELETE ON UPDATE ON UPDATE Refer. Table Refer. Tabel Firing Afvuring Events Events Execution Uitvoering Event Event Indexing Indexering Command Permissive USING expression CHECK expression Roles Rollen Parent Ouder Copy Kopie Yes Ja No Nee TablespaceWidget Form Venster Directory: Map: TagWidget Colors Kleuren Extended body: Uitgebreide inhoud: Body: Inhoud: Title: Titel: Schema name: Schemanaam: Table name: Tabelnaam: TaskProgressWidget Executing tasks Taken uitvoeren Waiting task to start... Wachten op het starten van de taak... TextboxWidget Font: Lettertype: Text Tekst pt pt Color: Kleur: Bold Vet Italic Cursief Underline Onderstrepen Select text color Selecteer tekstkleur TriggerWidget Constraint Constraint Deferrable: Uitstelbaar: FOR EACH ROW FOR EACH ROW Event: Event: INSERT INSERT DELETE DELETE UPDATE UPDATE TRUNCATE TRUNCATE Refer. Table: Refer. Tabel: Condition: Voorwaarde: Arguments Argumenten Argument: Argument: Columns Kolommen Column: Kolom: Function: Functie: Options: Opties: Excution: Uitvoer: Column Kolom Type Type TypeWidget Range Omvang Functions Functies INPUT: INPUT: OUTPUT: OUTPUT: RECV: RECV: SEND: SEND: TPMOD_IN: TPMOD_IN: TPMOD_OUT: TPMOD_OUT: ANALYZE: ANALYZE: Attributes Attributen Internal Length: Interne lengte: Storage: Opslag: Options: Opties: By value Per waarde Preferred Voorkeur Collatable Sorteerbaar Category: Categorie: Delimiter: Delimiter: Default Value: Standaardwaarde: Alignment: Uitlijning: integer integer char char smallint smallint double precision double precision Configuration: Configuratie: Base Type Basistype Enumeration Enumeratie Co&mposite Enumerations Enumeraties Enumeration: Enumeratie: Name: Naam: Collation: Sortering: Subtype Diff Func.: Subtype Diff Func.: Operator Class: Operator Klasse: Canonical Func.: Canonische Func.: Like Type Like type Element Type Elementtype Subtype Subtype Name Naam Type Type Collation Sortering The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table> De functies die worden toegewezen aan een type moeten in de C programmeertaal zijn geschreven en moeten, respectievelijk de volgende signatures bezitten:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any functie(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring functie(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta functie(any)</em></td> <td><strong>RECV:</strong> <em>any functie(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer functie(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring functie(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean functie(internal)</em></td> <tr> </table> The functions to be assigned to a range type should have the following signatures:<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em> De functies die aan een omvang worden toegewezen moeten de volgende signatures bezitten:<br/><br/><strong>Canonish:</strong> <em>any functie(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision functie(subtype, subtype)</em> UpdateNotifierWidget Update Notifier Update Aankondiging Hide this widget Verberg dit widget ... ... Released in: Releasedatum: mmm dd, yyyy mmm dd, yyyy Update found! New version: 0.0.0 0.0.0 Changelog Aanpassingen Redirects to purchase page. Leidt naar de aankooppagina. Get binary package Verkrijg een binair pakket Redirects to GitHub source repository. Leidt naar de broncode op GitHub. Get source code Verkrijg de broncode Failed to check updates Het ophalen van update informatie faalde The update notifier failed to check for new versions! Please, verify your internet connectivity and try again! Connection error returned: <em>%1</em> - <strong>%2</strong>. No updates found Geen nieuwe updates You are running the most recent pgModeler version! No update needed. Dit is de meest recente versie van pgModeler! The update notifier failed to check for new versions! A HTTP status code was returned: <strong>%1</strong> Het ophalen van nieuwe versie informatie faalde! De volgende HTTP status code werd gegenereerd: <strong>%1</strong> ViewWidget References Referenties Expression Alias: Expressiealias: Column: Kolom: Table: Tabel: Table Alias: Tabelalias: Used in: Gebruikt in: Column Kolom Expression Expressie Reference Type: Referentietype: View Definition Viewdefinitie Expression: Expressie: Column Alias: Kolomalias: The element will be used as part of the SELECT statement to retrieve columns or expressions that will compose the view's columns SELECT ... The element will be used as part of the WHERE clause in form of conditional expression WHERE ... The element is used in the FROM portion of the command in order to reference tables or construct JOIN statements FROM ... The element's expression is used exclusively as the view's definition The element will be appended to the very end of the view's definition. This is useful when using GROUP BY/HAVING statements End expression Triggers Triggers Rules Regels Indexes Indexen Table Expression Tabelexpressie Code Preview Codevoorbeeld Options Opties Tag: Tag: Mode: Modus: Ordinary Gewoon Recursi&ve &Materialized With no data Zonder data Col./Expr. Kol./Expr. Alias Alias Alias Col. Alias Kol. Flags: SF FW AW EX VD To reference all columns in a table (*) just do not fill the field <strong>Column</strong>, this is the same as write <em><strong>[schema].[table].*</strong></em> Name Naam Refer. Table Refer. Tabel Firing Afvuring Events Events Indexing Indexering Execution Uitvoering Event Event /* Could not generate the SQL code. Make sure all attributes are correctly filled! /* De SQL code kon niet worden gegenereerd. Kijk na of alle attributen correct zijn ingevuld! WelcomeWidget Form Venster New model Nieuw model Open model Open model Sample models Voorbeeldmodellen Recent models Recente modellen Last session Vorige sessie pgmodeler-0.9.4/assets/lang/pt_BR.qm000066400000000000000000003107231416010000600172640ustar00rootroot00000000000000Z&$:%cOkON<{'t N+Oټ+[!11a4>-F . G<GEI@JMzWTTԩTTX\IYY]J_n>_Pj<{*$ |$Q~"^yyy+yLsyL%s֍֍8֍U@֍\֍i0֍kj֍֍֍֍֍T֍C֍֍֍֍֍$ ֍'4֍,֍B$֍CW֍C֍G9֍Pl֍r5tUz5t5tBcH5]H5hH5CH5H5)eH54H5N[H5[H5p "%&$%%>sB%&Q% gD|:e'eOweaenee eee#e e;eLeOeVoej"į \(Q ' jM y-Y"( !#[9An*˄*%+g"6vO9x;H5 |TZTTZTZoT*TiT\VvVLV] Wz]xXmz%X]DYb_YbYb)YbOoYu/YqZy%&Zy%a#Zy%Zj\\&t\ZEJeA k+5o-OoE-tl h^yau ϋy|EC]ᬱT/WM^MM9 <hGLp!aE$2)+ 28RmC^laQe)eYue[x{ydzQ|{y^&YŀyƠ?U7njqG`0)B. Q D >J%O2 WZ p*$7s4؎:eJ^ilJZ=QKXkyaVf>p`)hp`nxt3$ld*(d*e"d*id*XXXbKWE Gi2B%1w9!jw99w9ۍ6U6b6Q6t6 6>bR _njpßGsŻs8kŖ@ŖF**PX'a_В$ nPًo`ܟ0/1z[y%]'t3A|  6J C1(>"(>Y(>i(>(>X)h)hl3V?VmY5nZy+t1t1()jmW5AfR=ٴ;?FbZ^;#;Ì=Ǥ;^Z^^#<&-ΔΔΔXΔKw;y=}F `<% '!.&ѤC(!;zb*@N ` 5` f$lu{*W TW^N DtIbIIAIܲIߦIIIV<>"<>F<>V:<>F<>E<>S9<>m-\C:.Z*\3ɓZnUeЄЩ=bчѬF k Ґ,.GN!Go5W!Wڷ7#7RÒzN7|znjz?lzTųMųnvA,v݃АG\fАGMАGoPq bZz[0ztUYnr  QДk8ʔk,N]l,N$/3 ><2B~3H3H3H3HK8M9'!:ʔlI/@lUY Y Y Y :Y K<cg!ChlZ$hTOnLZ*p3^s(!{yH5_H5tH5v/z jP1&~1` 1E1O+,+!+V҅N{yO>W?qzE53BXQ-go 2+aƨEƨb&ƨG qR1D#ѵuO-ѵupIŵ:A1r n^_-(.9CQC)%Z>a_pؙ`Gt(~`*04gxwo/swob|!M!scZ%jAD mt˜U_>QȐ$Ȑ^0ȐldȐFȐɓ`ɓ>֣ے*=ے ے4C:(ȔEFN,S1,23`5jy:l,7;=;ĆCBb^G4cqj0Ow|Tw|"p +v8Dv8=ړNsVE` f` ` ƿ` t` U` \^$ e1cX 0y O ;Ya5 8 @9r;z-pO kJ vWh |~Q  vB + V g 0  krU jl ii  ʮ NJL> NJ,_ NJ0 NJT H V z _!C ht Z> j$@,  #N )`= *pa 6 # M(N MJq M T Z4 Ze _1}? ci* ci* cGY cYR cS cZG cZVu cZj4 cZSm cZm dE eU e( g im o^/ r3? x:  I! I.I I9 Iل I I Q 6Z 6=F )f :[ :d : y? >B >>? `K   D; 5` 5] q tY te t, t0 " Y  / T JX& Lu, Rz t~ tR| ɗ$ T .{ δM δƂ δ δ? v˶ vB ϩ8'c ϩ8 5 ꚅ I* N /*D $~ m V: ye@k dZS ;l3 O \\ hx*] m{ wG {. {SW {ҵ |%X |%W 9  2A~z W .s ݒ' ݒc p _ _ %  m [ M nE JP) (( M M.4 ; 4_I 4\ ͘1/ ͠ ͠/ є9 ѩ! س Zc Z> Z 掺] ( 鷠% J? J 5.  K[ ,<Z ,<j -V -7 5ӊt =h =8 @l{ Jk J# J\ J Jz OG[, OGZ OGZx XM"R X g&z6d uA ~L :mT :f ^s & b p hJf~ `Q G J { ک) nZ: u Vu ȩu u ɠ- ɠ)* JL J, J13 :#7 Ս. { M s9P M# h k( o ܊K DX  #1 Q5 , gA %4H ] zg Apr WU ! T .*Y @ 5 D+^-B DZ V v [*7 ] i8:$\ j L: ^C ^v ^ ^s 8A / %h <; <B% <X <2 <2 <Gz SXM Sc$ SF إ5! @! .;R]>" ?B ei = J98Jh JcJYm!<*m^'A)(3(L1Y2*5J[UFG3 KOL,NTCWGVdijgrw3sAx?3u"$[yPo'-! 3W| 3 3R R zY&=֊4Z*j_4-  Vt4i!q5d555YPs 4&;I9tn`~aN!"jM m}v> Hv=mUN&`fPY*> Fd F&+1ukyI/J]5* is"Sobre o pgModelerAbout pgModeler AboutWidgetLModelador de Banco de Dados PostgreSQLPostgreSQL Database Modeler AboutWidgetUma funo de agregao que aceita os tipos <em><strong>tipoA</strong></em> e <em><strong>tipoB</strong></em> como entrada e cujo tipo de estado seja <em><strong>tipo_estado</strong></em>, deve obedecer s seguintes regras:<br/><br/> <strong> &nbsp;&nbsp;&nbsp; " Funo Final:</strong> <em>void funcao_final(<strong>tipo_estado</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp; " Funo Transio:</strong> <em><strong>tipo_estado</strong> funcao_transicao(<strong>tipo_estado</strong>, <strong>tipoA</strong>, <strong>tipoB</strong>)</em>%An aggregate function that accepts the types typeA and typeB as input types and which type of state is state_type, must obey the following rules:

   • Final Function: void final_function(state_type)
   • Transition Function: state_type transition_function(state_type, typeA, typeB)AggregateWidgetFuno Final:Final Function:AggregateWidget Estado da FunoFunction StateAggregateWidget$Entradas da FunoFuntion InputsAggregateWidget"Condio Inicial:Initial Condition:AggregateWidget0Tipo de Dados de EntradaInput Data TypeAggregateWidget,Operador de Ordenao:Sort Operator:AggregateWidget,Tipo de Dado de EstadoState Data TypeAggregateWidget ptAppearanceConfigWidgetNegritoBoldAppearanceConfigWidget Cores:Colors:AppearanceConfigWidget6Coluna (fk): Nome da colunaColumn (fk): Column nameAppearanceConfigWidget,Coluna (fk): DescritorColumn (fk): DescriptorAppearanceConfigWidget6Coluna (nn): Nome da colunaColumn (nn): Column nameAppearanceConfigWidget,Coluna (nn): DescritorColumn (nn): DescriptorAppearanceConfigWidget6Coluna (pk): Nome da colunaColumn (pk): Column nameAppearanceConfigWidget,Coluna (pk): DescritorColumn (pk): DescriptorAppearanceConfigWidget6Coluna (uq): Nome da colunaColumn (uq): Column nameAppearanceConfigWidget,Coluna (uq): DescritorColumn (uq): DescriptorAppearanceConfigWidget,Coluna: Nome da colunaColumn: Column nameAppearanceConfigWidget"Coluna: DescritorColumn: DescriptorAppearanceConfigWidgetZColuna: Includa / Herdada por relacionamento,Column: Included / Inherited by relationshipAppearanceConfigWidget"Coluna: ProtegidaColumn: ProtectedAppearanceConfigWidgetElemento:Element:AppearanceConfigWidget Fonte:Font:AppearanceConfigWidgetFormulrioFormAppearanceConfigWidget>Global: Descritor de restriesGlobal: Constraints descriptorAppearanceConfigWidget.Global: Estilo de fonteGlobal: Font styleAppearanceConfigWidget.Global: Arco do cadeadoGlobal: Lock arcAppearanceConfigWidget0Global: Corpo do cadeadoGlobal: Lock bodyAppearanceConfigWidget4Global: Seleo de objetosGlobal: Object selectionAppearanceConfigWidget0Global: Tipo dos objetosGlobal: Objects typeAppearanceConfigWidgetNGlobal: Caixa do informativo de posioGlobal: Position hint boxAppearanceConfigWidgetNGlobal: Texto do informativo de posioGlobal: Position hint textAppearanceConfigWidget"ndice: DescritorIndex: DescriptorAppearanceConfigWidgetndice: Nome Index: NameAppearanceConfigWidgetItlicoItalicAppearanceConfigWidgetJRelacionamento: Descritor do atributo"Relationship: Attribute descriptorAppearanceConfigWidgetBRelacionamento: Texto do atributoRelationship: Attribute textAppearanceConfigWidget2Relacionamento: DescritorRelationship: DescriptorAppearanceConfigWidget>Relacionamento: Caixa do rtuloRelationship: Label boxAppearanceConfigWidget>Relacionamento: Texto do rtuloRelationship: Label textAppearanceConfigWidget Regra: DescritorRule: DescriptorAppearanceConfigWidgetRegra: Nome Rule: NameAppearanceConfigWidget2Tabela: Caixa das colunasTable: Columns boxAppearanceConfigWidgetLTabela: Caixa dos atributos extendidosTable: Extended attributes boxAppearanceConfigWidget.Tabela: Nome do esquemaTable: Schema nameAppearanceConfigWidget,Tabela: Nome da tabelaTable: Table nameAppearanceConfigWidget.Tabela: Caixa do ttuloTable: Title boxAppearanceConfigWidget*Caixa de Texto: Corpo Textbox: BodyAppearanceConfigWidget$Gatilho: DescritorTrigger: DescriptorAppearanceConfigWidgetGatilho: Nome Trigger: NameAppearanceConfigWidgetSublinhado UnderlineAppearanceConfigWidgetJViso: Caixa dos atributos extendidosView: Extended attributes boxAppearanceConfigWidget<Viso: Descritor da refernciaView: Reference descriptorAppearanceConfigWidget4Viso: Coluna referenciadaView: Referenced columnAppearanceConfigWidget4Viso: Tabela referenciadaView: Referenced tableAppearanceConfigWidget8Viso: Caixa das refernciasView: References boxAppearanceConfigWidget,Viso: Nome do esquemaView: Schema nameAppearanceConfigWidgetBViso: Apelido da tabela / colunaView: Table / columns aliasAppearanceConfigWidget,Viso: Caixa do ttuloView: Title boxAppearanceConfigWidget(Viso: Nome da visoView: View nameAppearanceConfigWidget>Exceo desconhecida capturada!Unknown exception caught! Application&Aplicar&ApplyBaseForm&Cancelar&CancelBaseForm&OkBaseFormDilogoDialogBaseFormAgregao Aggregate BaseObject MoldeCast BaseObjectIntercalao Collation BaseObject ColunaColumn BaseObjectRestrio Constraint BaseObjectConverso Conversion BaseObjectBanco de DadosDatabase BaseObjectDomnioDomain BaseObject FunoFunction BaseObject ndiceIndex BaseObjectLinguagemLanguage BaseObjectOperadorOperator BaseObject(Classe de OperadoresOperator Class BaseObject*Famlia de OperadoresOperator Family BaseObjectParmetro Parameter BaseObjectPermisso Permission BaseObjectRelacionamento Relationship BaseObject PapelRole BaseObject RegraRule BaseObjectEsquemaSchema BaseObjectSequnciaSequence BaseObject TabelaTable BaseObject Espao de Tabela Tablespace BaseObjectCaixa de TextoTextbox BaseObjectGatilhoTrigger BaseObjectTipoType BaseObject Atributo de TipoType Attribute BaseObject VisoView BaseObjectnovo_objetonovos_objetos new_object BaseObjectIntercalao: Collation:BaseObjectWidgetComentrio:Comment:BaseObjectWidget,Desabilitar cdigo SQLDisable SQL codeBaseObjectWidget6Editar permisses do objetoEdit object's permissionsBaseObjectWidget"Editar permissesEdit permissionsBaseObjectWidget Nome:Name:BaseObjectWidgetProprietrio:Owner:BaseObjectWidgetbCampo requerido. Deix-lo em branco gerar erros!5Required field. Leaving this empty will raise errors!BaseObjectWidgetEsquema:Schema:BaseObjectWidgetEsp. de Tabela: Tablespace:BaseObjectWidgetEste objeto est protegido, assim nenhuma alterao no formulrio ser aplicada ao mesmo.FThis object is protected thus no change in form will be applied to it.BaseObjectWidgetValor(es)Value(s)BaseObjectWidget VersoVersionBaseObjectWidget coneiconeBaseObjectWidget rel_%1_%2BaseRelationship&Cancelar&Cancel BugReportForm CriarCreate BugReportFormtModelo de banco de dados (*.dbm);; Todos os arquivos (*.*)'Database model (*.dbm);;All files (*.*) BugReportFormCarregar modelo Load model BugReportFormRelatrioReport BugReportFormAtribuio Assignment CastWidgetMolde de Tipo: Cast Type: CastWidget Funo de Conv.:Conversion Func.: CastWidgetEntrada / SadaInput / Output CastWidget Tipo dado origemSource data type CastWidget"Tipo dado destinoTarget data type CastWidgetA funo a ser atribuda uma moldagem do <em><strong>tipoA</strong></em> para o <em><strong>tipoB</strong></em> deve possuir a seguinte assinatura: <em><strong>tipoB</strong> funcao(<strong>tipoA</strong>, integer, boolean)</em>.The function to be assigned to a cast from typeA to typeB must have the following signature: typeB function(typeA, integer, boolean). CastWidgetCodificao: Encoding:CollationWidget LC_COLLATE:CollationWidget LC_CTYPE:CollationWidgetLocalidade:Locale:CollationWidgetNo definido Not definedCollationWidgetOs campos <strong><em>Intercalao</em></strong>, <strong><em>Localidade</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> so mutuamente exclusivos, ento voc tem que definir apenas um deles a fim de manipular corretamente a intercalao.The fields Collation, Locale, LC_COLLATE & LC_CTYPE are mutually exclusive, so you have to set only one of them in order to properly handle a collation.CollationWidgetFormulrioFormColorPickerWidgetValor Padro:Default Value: ColumnWidget&Aplicar&ApplyConfigurationForm&Cancelar&CancelConfigurationFormQualquer modificao feita at agora na seo atual ser perdida! Deseja realmente restaurar as configuraes padro?tAny modification made until now in the current section will be lost! Do you really want to restore default settings?ConfigurationFormPadresDefaultsConfigurationForm GeralGeneralConfigurationFormPluginsPlug-insConfigurationForm2Configurao do pgModelerpgModeler ConfigurationConfigurationForm"Verificao de ACAC verificationConnectionsConfigWidgetAdicionarAddConnectionsConfigWidgetPermitirAllowConnectionsConfigWidgetCancelar edioCancel editionConnectionsConfigWidget(Certificado Cliente:Client Certificate:ConnectionsConfigWidgetChave Cliente: Client Key:ConnectionsConfigWidget&Apelido da Conexo:Connection Alias:ConnectionsConfigWidgetBD Conexo:Connection DB:ConnectionsConfigWidgetConexes: Connections:ConnectionsConfigWidget$Criar nova conexoCreate new connectionConnectionsConfigWidget4Apagar conexo selecionadaDelete selected connectionConnectionsConfigWidgetDesabilitarDisableConnectionsConfigWidget4Editar conexo selecionadaEdit selected connectionConnectionsConfigWidgetExportarExportConnectionsConfigWidgetForar GSSAPI Force GSSAPIConnectionsConfigWidget(Verificao CompletaFull verificationConnectionsConfigWidget GeralGeneralConnectionsConfigWidgetServidor/Porta: Host/Port:ConnectionsConfigWidget Senha: Password:ConnectionsConfigWidgetRequerirRequireConnectionsConfigWidget Cert. Revogados:Revoked Certs.:ConnectionsConfigWidget"Certificado Raiz:Root Certificate:ConnectionsConfigWidgetModo SSL: SSL Mode:ConnectionsConfigWidgetSucessoSuccessConnectionsConfigWidget TestarTestConnectionsConfigWidgetTempo limite:Timeout:ConnectionsConfigWidgetAtualizarUpdateConnectionsConfigWidgetUsurio:User:ConnectionsConfigWidgetsegundo(s) second(s)ConnectionsConfigWidget~/.postgresql/postgresql.crtConnectionsConfigWidget~/.postgresql/postgresql.keyConnectionsConfigWidget~/.postgresql/root.crlConnectionsConfigWidget~/.postgresql/root.crtConnectionsConfigWidget ColunaColumnConstraintWidgetColuna:Column:ConstraintWidgetColunasColumnsConstraintWidgetColunas que foram includas por relacionamento no podem ser adicionadas / removidas manualmente da chave primria. Se tais alteraes forem feitas elas podem gerar erros. Para criar chaves primrias usando colunas includas por relacionamentos use as seguintes opes: campo identificador, aba atributos & restries ou aba chave primria no formulrio de relacionamento.EColumns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form.ConstraintWidget$Tipo de Restrio:Constraint Type:ConstraintWidgetPostergvel: Deferrable:ConstraintWidgetPostergao: Deferral:ConstraintWidget"Excluir ElementosExclude ElementsConstraintWidgetExpresso: Expression:ConstraintWidgetFator Preenc.: Fill Factor:ConstraintWidgetIndexao: Indexing:ConstraintWidgetConfrontar:Match:ConstraintWidgetSem herana: No inherit:ConstraintWidget ON DELETE:ConstraintWidget ON UPDATE:ConstraintWidget*Colunas ReferenciadasReferenced ColumnsConstraintWidgetTabela:Table:ConstraintWidgetTipoTypeConstraintWidget Funo de Conv.:Conversion Func.:ConversionWidget"Converso Padro:Default Conversion:ConversionWidget&Codificao Origem:Source Encoding:ConversionWidget(Codificao Destino:Target Encoding:ConversionWidgetA funo a ser atribuda a uma converso de codificao deve possuir a seguinte assinatura: <em>void funcao(integer, integer, cstring, internal, integer)</em>.The function to be assigned to an encoding conversion must have the following signature: void function(integer, integer, cstring, internal, integer).ConversionWidgettModelo de banco de dados (*.dbm);; Todos os arquivos (*.*)'Database model (*.dbm);;All files (*.*)CrashHandlerFormDOopa! O pgModeler acaba de travar!Oops! pgModeler just crashed!CrashHandlerFormSalvar modelo Save modelCrashHandlerForm*Rastreamento de pilha Stack traceCrashHandlerFormFormulrioForm CsvLoadWidgetCarregarLoad CsvLoadWidget&Fechar&CloseDataManipulationFormAdicionar ItemAdd ItemDataManipulationForm ColunaColumnDataManipulationFormColuna:Column:DataManipulationFormRemover Item Remove ItemDataManipulationFormEsquema:Schema:DataManipulationFormTabela:Table:DataManipulationFormArgumentos ArgumentsDatabaseExplorerWidgetAtributo AttributeDatabaseExplorerWidgetPor valorBy valueDatabaseExplorerWidget.Recolher todos os itensCollapses all itemsDatabaseExplorerWidgetIntercalvel CollatableDatabaseExplorerWidgetIntercalao CollationDatabaseExplorerWidgetColunasColumnsDatabaseExplorerWidgetRestrio ConstraintDatabaseExplorerWidget PadroDefaultDatabaseExplorerWidgetDefinio DefinitionDatabaseExplorerWidgetDimenso DimensionDatabaseExplorerWidgetElementoElementDatabaseExplorerWidgetEncriptado EncryptedDatabaseExplorerWidgetEnumeraes EnumerationsDatabaseExplorerWidget EventoEventDatabaseExplorerWidget.Expandir todos os itensExpands all itemsDatabaseExplorerWidgetExpresso ExpressionDatabaseExplorerWidgetDisparoFiringDatabaseExplorerWidgetFormulrioFormDatabaseExplorerWidget FunoFunctionDatabaseExplorerWidgetLinguagemLanguageDatabaseExplorerWidgetComprimentoLengthDatabaseExplorerWidgetBibliotecaLibraryDatabaseExplorerWidgetNomeNameDatabaseExplorerWidgetOperadorOperatorDatabaseExplorerWidgetOperadores OperatorsDatabaseExplorerWidgetPermisses PermissionsDatabaseExplorerWidgetPreciso PrecisionDatabaseExplorerWidgetPreferido PreferredDatabaseExplorerWidgetRenomearRenameDatabaseExplorerWidget PapisRolesDatabaseExplorerWidgetEsquemaSchemaDatabaseExplorerWidgetArmazenamentoStorageDatabaseExplorerWidgetSubtipoSubtypeDatabaseExplorerWidgetSuperusurio SuperuserDatabaseExplorerWidget TabelaTableDatabaseExplorerWidget Espao de Tabela TablespaceDatabaseExplorerWidgetTipoTypeDatabaseExplorerWidget nicoUniqueDatabaseExplorerWidgetAtualizarUpdateDatabaseExplorerWidgetValidadeValidityDatabaseExplorerWidget&Fechar&CloseDatabaseImportFormCancelarCancelDatabaseImportForm.Recolher todos os itensCollapses all itemsDatabaseImportFormConexo: Connection:DatabaseImportFormBanco de DadosDatabaseDatabaseImportForm.Expandir todos os itensExpands all itemsDatabaseImportForm,Rtulo de progresso...Progress label...DatabaseImportFormAtributos AttributesDatabaseWidgetIntercalao: Collation:DatabaseWidgetConexes: Connections:DatabaseWidget PadroDefaultDatabaseWidgetCodificao: Encoding:DatabaseWidget LC_COLLATE:DatabaseWidget LC_CTYPE:DatabaseWidget Autor do Modelo: Model Author:DatabaseWidgetOpes:Options:DatabaseWidgetEsquema:Schema:DatabaseWidgetEsp. de Tabela: Tablespace:DatabaseWidgetDB Modelo: Template DB:DatabaseWidgetAtributos Attributes DomainWidgetValor Padro:Default Value: DomainWidgetExpresso Expression DomainWidgetExpresso: Expression: DomainWidgetNomeName DomainWidget Nome:Name: DomainWidgetFormulrioForm DonateWidgetAscendente AscendingElementsWidgetIntercalao CollationElementsWidgetIntercalao: Collation:ElementsWidgetColuna:Column:ElementsWidgetDescendente DescendingElementsWidgetElementoElementElementsWidgetExpresso ExpressionElementsWidgetExpresso: Expression:ElementsWidgetFormulrioFormElementsWidgetNoNoElementsWidgetNulos Primeiro Nulls FirstElementsWidgetNulos primeiro Nulls firstElementsWidgetOperadorOperatorElementsWidget(Classe de OperadoresOperator ClassElementsWidget*Classe de Operadores:Operator Class:ElementsWidgetOperador: Operator:ElementsWidgetOrdenaoSortingElementsWidgetOrdenao: Sorting:ElementsWidgetTipoTypeElementsWidgetSimYesElementsWidgetEvento:Event:EventTriggerWidgetFuno: Function:EventTriggerWidgetUma chave estrangeira no pode ser adicionado a um relacionamento pois esta criada automaticamente no momento da ligao do mesmo!iA foreign key can not be added to a relationship because is created automatically when this is connected! ExceptionJAlocao de objeto com tipo invlido!'Allocation of object with invalid type! ExceptionXAtribuio de funo com linguagem invlida!3Assignment of a function which language is invalid! ExceptionAtribuio de valor mnimo da seqncia maior do que o valor mximo!VAssignment of a minimum value to the sequence which is greater than the maximum value! ExceptionjAtribuio de incremento de seqncia com valor nulo!5Assignment of a null increment value to the sequence! ExceptiontAtribuio de preciso maior do que o comprimento do tipo!>Assignment of a precision greater than the length of the type! Exception~Atribuio de chave primria uma tabela a qual j possui uma!=Assignment of a primary key to a table which already has one! Exception^Atribuio de um pseudo-tipo ao tipo da coluna!6Assignment of a pseudo-type to the type of the column! ExceptionAtribuio de esquema seqncia o qual difere do esquema da tabela possuidora!XAssignment of a schema to the sequence which differs from the schema of the owner table! ExceptionnAtribuio de valor a um parmetro de conexo invlido!9Assignment of a value to an invalid connection parameter! ExceptionVAtribuio de expresso invlida ao objeto!2Assignment of an invalid expression to the object! ExceptionAtribuio de preciso invlida a um tipo time, timestamp ou interval. A preciso neste caso deve ser igual ou inferior a 6!Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! ExceptionAtribuio de valor invlido ao nmero de estratgia/suporte do elemento de classe de operadores!NAssignment of an invalid strategy/support number to an operator class element! ExceptionzAtribuio de valor invlido a um dos atributos da seqncia!AAssignment of an invalid value to one of the sequence attributes! ExceptiontAtribuio de um objeto o qual j pertence a outra tabela!>Assignment of an object that already belongs to another table! ExceptionPAtribuio de nome de arquivo DTD vazio!"Assignment of empty DTD file name! ExceptionfAtribuio de buffer de cdigo XML vazio ao parser!)Assignment of empty XML buffer to parser! ExceptionJAtribuio de nome vazio a um objeto!&Assignment of empty name to an object! ExceptionlAtribuio de nome vazio ao tipo de retorno de tabela!.Assignment of empty name to table return type! ExceptionTAtribuio de nome vazio declarao DTD!0Assignment of empty name to the DTD declaration! ExceptionXAtribuio de configurao invlida ao tipo!0Assignment of invalid configuration to the type! ExceptionvAtribuio de tamanho mximo invlido lista de operaes!5Assignment of invalid maximum size to operation list! ExceptionAtribuio de nome invlido tabela gerada por relacionamento N-N!HAssignment of invalid name to the table generated from N-N relationship! ExceptionRAtribuio de um tipo invlido ao objeto!)Assignment of invalid type to the object! ExceptionTAtribuio de linguagem com tipo invlido!4Assignment of language object which type is invalid! ExceptionfAtribuio de resultado de comando SQL no alocado!/Assignment of not allocated SQL command result! ExceptionHAtribuio de linguagem no alocada!%Assignment of not allocated language! ExceptionHAtribuio de um objeto no alocado!#Assignment of not allocated object! Exception`Atribuio de cache de seqncia com valor nulo!/Assignment of null cache value to the sequence! Exception`Atribuio de um objeto papel com tipo invlido!1Assignment of owner object which type is invalid! ExceptionfAtribuio de um dono a um objeto de tipo invlido!)Assignment of owner to an invalid object! ExceptionAtribuio de privilgio incompatvel com o tipo do objeto referenciado pela permisso!VAssignment of privilege incompatible with the type of object referenced by permission! ExceptiondAtribuio de um objeto esquema com tipo invlido!2Assignment of schema object which type is invalid! ExceptionpAtribuio de objeto espao de tabela com tipo invlido!2Assignment of tablespace object with invalid type! ExceptionLAtribuio de um objeto espao de tabela a uma restrio de tipo invlido! A restrio deve ser uma chave-primria ou nica para pode pertencer a um espao de tabela!Assignment of tablespace to a constraint which type is invalid! To belong to a tablespace the constraint must be a primary key or unique! Exception~Atribuio de um espao de tabela a um objeto de tipo invlido!.Assignment of tablespace to an invalid object! Exception|Tentativa de conexo sem parmetros de configurao definidos!;Attempt to connect without define configuration parameters! ExceptionRestries do tipo chave-primria, chave-estrangeira ou nica devem possuir pelo menos uma coluna relacionada s mesmas! Para chaves-estrangeira devem ser selecionadas, adicionalmente, as colunas referenciadas!Constraints like primary key, foreign key or unique must have at least one column related to them! For foreign keys must be selected, in addition, the referenced columns! ExceptionpInsero de elemento j existente na lista de elementos!>Insertion of element which already exists in the element list! ExceptionnInsero de item invlido na lista de atibutos do tipo!=Insertion of invalid item in the attributes list of the type! ExceptiontInsero de item invlido na lista de emumeraes do tipo!?Insertion of invalid item in the enumerations list of the type! ExceptionvInsero de item j existente na lista de atibutos do tipo!JInsertion of item which already exists in the attributes list of the type! Exception|Insero de item j existente na lista de enumeraes do tipo!LInsertion of item which already exists in the enumarations list of the type! ExceptionNo possvel criar arrays de domnios ou sequncias (dimenso >= 1)! O PostgreSQL ainda no implementa esta funcionalidade!}It is not possible to create arrays of domains or sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! ExceptionPObteno de um objeto com tipo invlido!'Obtaining an object of an invalid type! ExceptionTObteno de tipos com quantidade invlida!&Obtaining types with invalid quantity! ExceptionUm ou mais objetos foram invalidados e automaticamente removidos pois os mesmos referenciavam colunas de tabelas as quais foram includas atravs de relacionamentos e que deixaram de existir devido a desconexo ou excluso dos relacionamentos geradores de tais colunas!One or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! ExceptionUm ou mais plugins no foram ativados devido a erros no processo de carregamento! Verifique a pilha de excees para mais detalhes.|One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. ExceptionPOperao sobre conexo no estabelecida!(Operation on connection not established! ExceptionOperao sobre rvore de elementos no alocada! necessrio carregar o buffer XML do parser e interpret-lo para que a rvore seja gerada!Operation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! ExceptionOperao com elemento o qual no faz parte da rvore de elementos carregada atualmente!ROperation with element which does not exists in the element tree currently loaded! Exception@Operao com objeto no alocado!$Operation with object not allocated! Exception\Operao com objeto(s) de tipo(s) invlido(s)!2Operation with object(s) which type(s) is invalid! ExceptionrOperao com elemento de rvore de elementos no alocado!(Operation with unallocated tree element! ExceptionjReferncia uma coluna da tupla com ndice invlido!2Reference to a column of tuple with invalid index! ExceptionfReferncia uma coluna da tupla com nome invlido!1Reference to a column of tuple with invalid name! ExceptionReferncia a uma coluna com ndice fora da capacidade da lista de colunas!LReference to a column which index is out of the capacity of the column list! ExceptionTReferncia a uma funo com tipo invlido!*Reference to a function with invalid type! ExceptionpReferncia a um argumento do operador com tipo invlido!;Reference to an argument of the operator with invalid type! ExceptionbReferncia a um evento no pertecente ao gatilho!8Reference to an event which does not belongs to trigger! ExceptionXReferncia a um tipo de privilgio invlido!'Reference to an invalid privilege type! ExceptionNReferncia a um tipo de papel invlido!"Reference to an invalid role type! ExceptionVReferncia a um operador com tipo invlido!+Reference to an operator with invalid type! ExceptionReferncia a tipo de dado definido pelo usurio o qual no existe no modelo!DReference to an user-defined data type that not exists in the model! ExceptionReferncia a tipo de dado com ndice fora da capacidade da lista de tipos de dados!MReference to data type with an index outside the capacity of data types list! ExceptionRReferncia a um objeto com tipo invlido!&Reference to object with invalid type! Exception<Remoo de objeto no alocado!#Removal of an object not allocated! ExceptionFRemoo de objeto de tipo invlido!&Removing an object of an invalid type! ExceptionO processo de exportao falhou devido a um erro disparado pelo servidor PostgreSQL na tentativa de execuo de um comando SQL. Para obter mais detalhes sobre erro cheque a pilha de excees! ** Comando SQL executado: ** %1The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 ExceptionpO relacionamento do tipo 1-1 onde ambas as tabelas so de participao obrigatria no implementado por necessitar de fuso entre tabelas o que quebra a modelagem feita pelo usurio!The relationship of the type 1-1 where both tables are mandatory participation is not implemented because it requires fusion between the tables that breaks the modeling done by the user! ExceptionNo foi possvel alocar o resultado do comando SQL pois a resposta do SGBD no foi compreendida pelo cliente!uUnable to allocate the result of the SQL command because the response from the DBMS was not understood by the client! ExceptionVerso:Version:ExtensionWidgetFormulrioFormFindReplaceWidgetAtributos AttributesFunctionWidgetComportamento: Behavior:FunctionWidget ColunaColumnFunctionWidgetValor Padro Default ValueFunctionWidgetDefinio DefinitionFunctionWidget(Biblioteca Dinmica:Dynamic Library:FunctionWidget$Custo de Execuo:Execution Cost:FunctionWidgetTipo de Funo:Function Type:FunctionWidgetBiblioteca:Library:FunctionWidgetNomeNameFunctionWidgetParmetros ParametersFunctionWidget$Mtodo de Retorno:Return Method:FunctionWidget"Tabela de Retorno Return TableFunctionWidget$Linhas Retornadas:Rows Returned:FunctionWidgetSegurana: Security:FunctionWidgetConjuntoSetFunctionWidgetCdigo fonte: Source code:FunctionWidgetSmbolo:Symbol:FunctionWidgetTipoTypeFunctionWidgetA0 (841 x 1189 mm)GeneralConfigWidgetA1 (594 x 841 mm)GeneralConfigWidgetA2 (420 x 594 mm)GeneralConfigWidgetA3 (297 x 420 mm)GeneralConfigWidgetA4 (210 x 297 mm)GeneralConfigWidgetA5 (148 x 210 mm)GeneralConfigWidgetA6 (105 x 148 mm)GeneralConfigWidgetA7 (74 x 105 mm)GeneralConfigWidgetA8 (52 x 74 mm)GeneralConfigWidgetA9 (37 x 52 mm)GeneralConfigWidgetB0 (1030 x 1456 mm)GeneralConfigWidgetB1 (728 x 1030 mm)GeneralConfigWidgetB10 (32 x 45 mm)GeneralConfigWidgetB2 (515 x 728 mm)GeneralConfigWidgetB3 (364 x 515 mm)GeneralConfigWidgetB4 (257 x 364 mm)GeneralConfigWidgetB5 (182 x 257 mm)GeneralConfigWidgetB6 (128 x 182 mm)GeneralConfigWidgetB7 (91 x 128 mm)GeneralConfigWidgetB8 (64 x 91 mm)GeneralConfigWidgetB9 (45 x 64 mm)GeneralConfigWidgetMargem base Bottom marginGeneralConfigWidget Base:Bottom:GeneralConfigWidgetC5E (163 x 229 mm)GeneralConfigWidgetCentmetro CentimeterGeneralConfigWidget Cores:Colors:GeneralConfigWidgetComm10E (105 x 241 mm)GeneralConfigWidgetDLE (110 x 220 mm)GeneralConfigWidget0Executivo (191 x 254 mm)Executive (191 x 254 mm)GeneralConfigWidgetFolio (210 x 330 mm)GeneralConfigWidget Fonte:Font:GeneralConfigWidgetFormulrioFormGeneralConfigWidget GeralGeneralGeneralConfigWidgetPolegadasInchesGeneralConfigWidgetPaisagem LandscapeGeneralConfigWidgetLedger (432 x 279 mm)GeneralConfigWidgetMargem esquerda Left marginGeneralConfigWidget Esq.:Left:GeneralConfigWidgetLegal (216 x 356 mm)GeneralConfigWidget(Carta (216 x 279 mm)Letter (216 x 279 mm)GeneralConfigWidgetMilmetros MilimetersGeneralConfigWidget:Abrir gerenciador de arquivosOpen in file managerGeneralConfigWidget.Histrico de operaes:Operation history:GeneralConfigWidgetOpes:Options:GeneralConfigWidgetOrientao: Orientation:GeneralConfigWidget Papel:Paper:GeneralConfigWidget PxeisPixelsGeneralConfigWidgetRetratoPortraitGeneralConfigWidgetImprimir grade Print gridGeneralConfigWidget4Imprimir nmero de pginasPrint page numbersGeneralConfigWidgetMargem direita Right marginGeneralConfigWidget Dir.:Right:GeneralConfigWidget.Tablide (279 x 432 mm)Tabloid (279 x 432 mm)GeneralConfigWidgetMargem topo Top marginGeneralConfigWidget Topo:Top:GeneralConfigWidgetFormulrioFormHintTextWidgetAtributos Attributes IndexWidgetConcorrente Concurrent IndexWidgetElementosElements IndexWidgetAtual. Rpida Fast update IndexWidgetFator Preenc.: Fill Factor: IndexWidgetIndexao: Indexing: IndexWidgetOpes:Options: IndexWidget nicoUnique IndexWidgetAs funes a serem atribudas linguagem devem possuir, respectivamente, as seguintes assinaturas:<br/><br/> <strong>Funo Manipuladora:</strong> <em>language_handler funcao()</em><br/> <strong>Funo Validadora:</strong> <em>void funcao(oid)</em><br/> <strong>Funo em Linha:</strong> <em>void funcao(internal)</em>DThe functions to be assigned to the language should have, respectively, the following signatures:

Handler Function: language_handler function()
Validator Function: void function(oid)
Inline Function: void function(internal)LanguageWidgetConfivel:Trusted:LanguageWidget&Fechar&Close MainWindow&Editar&Edit MainWindow&Exportar&Export MainWindow&Arquivo&File MainWindow&Mostrar&Show MainWindow.Alinhar objetos gradeAlign objects position to grid MainWindowCancelarCancel MainWindow6Foram detectadas modificaes nas definies de papel/margem do modelo que podem provocar a impresso incorreta dos objetos. Deseja prosseguir com a impresso usando as novas configuraes? Para usar as configuraes padro clique em 'No', ou em 'Cancelar' para abortar a impresso.Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. MainWindowConfirmao Confirmation MainWindowCtrl+- MainWindowCtrl+0 MainWindowCtrl+= MainWindowCtrl+G MainWindowCtrl+H MainWindowCtrl+L MainWindowCtrl+N MainWindowCtrl+O MainWindowCtrl+P MainWindowCtrl+Q MainWindowCtrl+S MainWindow Ctrl+Shift+S MainWindowCtrl+W MainWindowCtrl+Y MainWindowCtrl+Z MainWindowtModelo de banco de dados (*.dbm);; Todos os arquivos (*.*)'Database model (*.dbm);;All files (*.*) MainWindowJImpresso do modelo de banco de dadosDatabase model printing MainWindowF1 MainWindowF10 MainWindow GeralGeneral MainWindowCarregar modelo Load model MainWindowNovoNew MainWindowNovo objeto New object MainWindowPlugins MainWindow&Salvar '%1' como...Save '%1' as... MainWindowSalvar todosSave all MainWindowSalvar modelo Save model MainWindowMostrar grade Show grid MainWindow<Mostra a viso geral do modeloShow the model overview MainWindowDMostrar os delimitadores da pginaShow the page delimiters MainWindowEsta ao abrir uma janela do navegador de internet! Deseja prosseguir?Edita as propriedades do objetoEdit the object properties ModelWidgetFCarregando modelo de banco de dadosLoading database model ModelWidget(Mover para o esquemaMove to schema ModelWidgetNovoNew ModelWidget Nem todos objetos foram colados ao modelo devido a erros retornados durante o processo! Consulte a pilha de erros para mais detalhes!zNot all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! ModelWidget ColarPaste ModelWidget$Colando objetos...Pasting objects... ModelWidgetPropriedades Properties ModelWidgetProtegerProtect ModelWidgetJProtege objeto(s) contra modificaes%Protects object(s) from modifications ModelWidget:Renomear rapidamente o objetoQuick rename the object ModelWidgetRenomearRename ModelWidgetBSalvando modelo de banco de dadosSaving database model ModelWidgetSelecionarSelect ModelWidget Selecionar todos Select all ModelWidget"Selecionar filhosSelect children ModelWidgetZSeleciona todos os objetos grficos no modelo.Selects all the graphical objects in the model ModelWidget ExibirShow ModelWidget>Mostra o cdigo fonte do objetoShow object source code ModelWidgetCdigo fonte Source code ModelWidgetTabelasTables ModelWidgetDesproteger Unprotect ModelWidgetIntercalao CollationNewObjectOverlayWidget ColunaColumnNewObjectOverlayWidgetRestrio ConstraintNewObjectOverlayWidget CopiarCopyNewObjectOverlayWidgetDomnioDomainNewObjectOverlayWidgetFormulrioFormNewObjectOverlayWidget FunoFunctionNewObjectOverlayWidget ndiceIndexNewObjectOverlayWidgetLinguagemLanguageNewObjectOverlayWidgetOperadorOperatorNewObjectOverlayWidgetPermisses PermissionsNewObjectOverlayWidget PapelRoleNewObjectOverlayWidget RegraRuleNewObjectOverlayWidgetEsquemaSchemaNewObjectOverlayWidget TabelaTableNewObjectOverlayWidget Espao de Tabela TablespaceNewObjectOverlayWidgetCaixa de TextoTextboxNewObjectOverlayWidgetGatilhoTriggerNewObjectOverlayWidgetTipoTypeNewObjectOverlayWidget EditarEditNumberedTextEditorCarregarLoadNumberedTextEditorDependncias DependenciesObjectDepsRefsWidget ObjetoObjectObjectDepsRefsWidgetObjeto Pai Parent ObjectObjectDepsRefsWidgetTipo Pai Parent TypeObjectDepsRefsWidgetReferncias ReferencesObjectDepsRefsWidgetTipoTypeObjectDepsRefsWidgetFormulrioFormObjectFinderWidget ObjetoObjectObjectFinderWidgetObjeto Pai Parent ObjectObjectFinderWidgetTipo Pai Parent TypeObjectFinderWidgetSelecionarSelectObjectFinderWidgetTipoTypeObjectFinderWidgetCancelarCancelObjectRenameWidgetFormulrioFormObjectRenameWidgetRenomearRenameObjectRenameWidget para:to:ObjectRenameWidgetLimpar campo Clear fieldObjectSelectorWidgetFormulrioFormObjectSelectorWidget"Selecionar Objeto Select ObjectObjectSelectorWidgetAdicionar ItemAdd ItemObjectsTableWidgetConfirmao ConfirmationObjectsTableWidgetEditar Item Edit ItemObjectsTableWidgetFormulrioFormObjectsTableWidget Mover para baixo Move DownObjectsTableWidgetMover para cimaMove UpObjectsTableWidget&Mover para o incio Move to startObjectsTableWidgetRemover Item Remove ItemObjectsTableWidgetAtualizar Item Update ItemObjectsTableWidget0OperationListWidget1OperationListWidget:Apagar histrico de operaesDelete operation historyOperationListWidgetApagar o histrico de operaes executadas uma ao irreversvel, deseja realmente prosseguir?ZDelete the executed operations history is an irreversible action, do you want to continue?OperationListWidget(Operaes ExecutadasExecuted OperationsOperationListWidgetNome: %1Name: %1OperationListWidgetObjeto: %1 Object: %1OperationListWidgetDExcluso de histrico de operaesOperation history exclusionOperationListWidgetOperao: %1 Operation: %1OperationListWidgetOperaes: Operations:OperationListWidgetPosio: Position:OperationListWidgetRefazerRedoOperationListWidgetDesfazerUndoOperationListWidget criadocreatedOperationListWidgetmodificadomodifiedOperationListWidget movidomovedOperationListWidgetremovidoremovedOperationListWidgetClasse Padro:Default Class:OperatorClassWidget"Tipo de Elemento: Element Type:OperatorClassWidgetElementosElementsOperatorClassWidget FunoFunctionOperatorClassWidgetFuno: Function:OperatorClassWidgetIndexao: Indexing:OperatorClassWidget ObjetoObjectOperatorClassWidgetFamlia de Op.: Op. Family:OperatorClassWidgetOperadorOperatorOperatorClassWidget*Famlia de OperadoresOperator FamilyOperatorClassWidgetOperador: Operator:OperatorClassWidgetArmazenamentoStorageOperatorClassWidget*Tipo de Armazenamento Storage TypeOperatorClassWidget$Suporte/EstratgiaSupport/StrategyOperatorClassWidget&Suporte/Estratgia:Support/Strategy:OperatorClassWidgetTipoTypeOperatorClassWidgetIndexao: Indexing:OperatorFamilyWidgetAvanadoAdvancedOperatorWidgetArgumentos ArgumentsOperatorWidgetHASHESOperatorWidgetJuno:Join:OperatorWidget.Tipo Argumento EsquerdaLeft Argument TypeOperatorWidgetMERGESOperatorWidgetNegador:Negator:OperatorWidgetFun. Operador:Operator Func.:OperatorWidgetOpes:Options:OperatorWidgetRestrito: Restrict:OperatorWidget,Tipo Argumento DireitaRight Argument TypeOperatorWidgetPara criar um operador unrio necessrio especificar como <strong><em>'any'</em></strong> um de seus argumentos. Adicionalmente, a funo que define o operador deve possuir apenas um parmetro e este, por sua vez, deve ter o tipo de dado igual ao tipo de dado do argumento do operador unrio.To create a unary operator it is necessary to specify as 'any' one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator.OperatorWidgetValor Padro:Default Value:ParameterWidgetINParameterWidget Modo:Mode:ParameterWidgetOUTParameterWidget&Adicionar PermissoAdd PermissionPermissionWidget"Cancelar OperaoCancel OperationPermissionWidgetCascataCascadePermissionWidget$Previso de Cdigo Code PreviewPermissionWidget,Desabilitar cdigo SQLDisable SQL codePermissionWidget"Editar permissesEdit permissionsPermissionWidget GRANT OPTIONPermissionWidgetID:PermissionWidgetIdPermissionWidgetNomeNamePermissionWidgetPermisses PermissionsPermissionWidgetPrivilgio PrivilegePermissionWidgetPrivilgios PrivilegesPermissionWidget PapisRolesPermissionWidget&Atualizar PermissoUpdate PermissionPermissionWidget<interface da linha de comando. command line interface. PgModelerCLI6Opes da exportao SGBD: DBMS export options:  PgModelerCLIBInformao de conexo incompleta!"Incomplete connection information! PgModelerCLIdArquivo de entrada deve ser diferente do de sada!)Input file must be different from output! PgModelerCLI<Opo '%1' no aceita valores.#Option '%1' does not accept values. PgModelerCLIBIniciando exportao de modelo...Starting model export... PgModelerCLI6Opo '%1' no reconehcida.Unrecognized option '%1'. PgModelerCLI6Uso: pgmodeler-cli [OPES]Usage: pgmodeler-cli [OPTIONS] PgModelerCLIPValor no specificado para a opo '%1'.$Value not specified for option '%1'. PgModelerCLIAutor: %1 Author: %1PgModelerPlugin(Informao do PluginPlugin InformationPgModelerPluginVerso: %1 Version: %1PgModelerPluginTipo de Dado Data TypePgSQLTypeWidgetDimenso DimensionPgSQLTypeWidgetFormulrioFormPgSQLTypeWidgetFormato:Format:PgSQLTypeWidgetIntervalo: Interval:PgSQLTypeWidgetL:PgSQLTypeWidgetComprimentoLengthPgSQLTypeWidgetMPgSQLTypeWidgetP:PgSQLTypeWidgetPreciso PrecisionPgSQLTypeWidgetSRID:PgSQLTypeWidgetEspacial:Spatial:PgSQLTypeWidgetFuso horrio: Timezone:PgSQLTypeWidget Tipo:Type:PgSQLTypeWidgetVariao: Variation:PgSQLTypeWidgetZPgSQLTypeWidget[ ]:PgSQLTypeWidgetFormulrioFormPluginsConfigWidgetBibliotecaLibraryPluginsConfigWidget$Plugins carregadosLoaded plug-insPluginsConfigWidget:Abrir gerenciador de arquivosOpen in file managerPluginsConfigWidget4Diretrio raiz de plugins:Plug-ins root directory:PluginsConfigWidgetPluginPluginsConfigWidget VersoVersionPluginsConfigWidgetNomeName PolicyWidget PapisRoles PolicyWidget%1 (linha: %2) %1 (line: %2)QObject&novo_banco_de_dados new_databaseQObject%1_copia_de_%2 %1_copies_%2 Relationship %1_tem_muitos_%2%1_has_many_%2 Relationship%1_tem_um_%2 %1_has_one_%2 Relationship%1_herda_de_%2%1_inherits_%2 Relationship.muitos_%1_tem_muitos_%2many_%1_has_many_%2 Relationship CopiarCopyRelationshipConfigWidget PadroDefaultRelationshipConfigWidgetPostergvel: Deferrable:RelationshipConfigWidgetPostergao: Deferral:RelationshipConfigWidgetFormulrioFormRelationshipConfigWidgetGeneralizaoGeneralizationRelationshipConfigWidget requerido is requiredRelationshipWidget1-nRelationshipWidgetALLRelationshipWidgetAvanadoAdvancedRelationshipWidgetAtributo AttributeRelationshipWidgetAtributos AttributesRelationshipWidgetCOMMENTSRelationshipWidget CONSTRAINTSRelationshipWidgetCardinalidade: Cardinality:RelationshipWidgetRestrio ConstraintRelationshipWidgetRestries ConstraintsRelationshipWidgetOpes de Cpia Copy OptionsRelationshipWidgetDEFAULTSRelationshipWidget PadroDefaultRelationshipWidgetPostergvel: Deferrable:RelationshipWidgetPostergao: Deferral:RelationshipWidgetJRelacionamento de Dependncia / CpiaDependency / Copy relationshipRelationshipWidget GeralGeneralRelationshipWidgetRRelacionamento de generalizao (herana))Generalization relationship (inheritance)RelationshipWidget INCLUDINGRelationshipWidgetINDEXESRelationshipWidgetIdentificador IdentifierRelationshipWidgetHRelacionamento de muitos para muitosMany to many relationshipRelationshipWidgetNomeNameRelationshipWidgetxNome da tabela gerada pelo relacionamento muitos para muitos:Name of the table generated from many to many relationshipRelationshipWidget@Relacionamento de um para muitosOne to many relationshipRelationshipWidget8Relacionamento de um para umOne to one relationshipRelationshipWidgetChave primria Primary keyRelationshipWidget"Tabela Receptora:Receiver Table:RelationshipWidget$Tabela Referncia:Reference Table:RelationshipWidget$Tab. Referenciada:Referenced Table:RelationshipWidgetVRelacionamento gerado via chave estrangeira&Relationship generated via foreign keyRelationshipWidgetSTORAGERelationshipWidgetTabela 1:Table 1:RelationshipWidgetTabela 2:Table 2:RelationshipWidget|Esta aba avanada mostra os objetos (colunas ou tabela) auto criados pela conexo do relacionamento, bem como as chaves estrangeiras que representam a ligao entre as tabelas participantes.This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables.RelationshipWidgetTipoTypeRelationshipWidgetUsar padres Use defaultsRelationshipWidget"[DST] requerido[DST] is requiredRelationshipWidget"[SRC] requerido[SRC] is requiredRelationshipWidgetdepRelationshipWidgetfkRelationshipWidgetn-nRelationshipWidgetAtributos Attributes RoleWidgetConexes: Connections: RoleWidgetEncriptado Encrypted RoleWidgetMembro de Member of RoleWidgetMembrosMembers RoleWidget Membros (Admin.)Members (Admin.) RoleWidget Senha: Password: RoleWidget PapelRole RoleWidgetSuperusurio Superuser RoleWidgetValidadeValidity RoleWidget$Expr. Condicional:Conditional Expr.: RuleWidgetEvento:Event: RuleWidgetTipo Execuo:Execution Type: RuleWidgetComando SQL: SQL Command: RuleWidgetComando SQL SQL command RuleWidgetPara criar uma regra que no execute ao alguma (<strong>DO NOTHING</strong>) basta no especificar comandos na tabela de comandos SQL.To create a rule that does not perform any action (DO NOTHING) simply do not specify commands in the SQL commands table. RuleWidgetFormulrioFormSQLExecutionWidgetCarregarLoadSQLExecutionWidget SalvarSaveSQLExecutionWidgetSalvar comoSave asSQLExecutionWidgetAtributos Attributes SQLToolWidgetFormulrioForm SQLToolWidgetFormulrioFormSceneInfoWidget*Cor de preenchimento: Fill color: SchemaWidget"Mostrar retnguloShow rectangle SchemaWidget Cache:Cache:SequenceWidgetCclica:Cyclic:SequenceWidgetIncremento: Increment:SequenceWidgetMximo:Maximum:SequenceWidgetMnimo:Minimum:SequenceWidgetIncio:Start:SequenceWidgetAdicionarAddSnippetsConfigWidgetCancelar edioCancel editionSnippetsConfigWidget$Criar nova conexoCreate new connectionSnippetsConfigWidget4Editar conexo selecionadaEdit selected connectionSnippetsConfigWidgetFormulrioFormSnippetsConfigWidget GeralGeneralSnippetsConfigWidgetAtualizarUpdateSnippetsConfigWidgetr-- Cdigo SQL no disponvel para este tipo de objeto. --2-- SQL code unavailable for this type of object --SourceCodeWidget.Gerando cdigo fonte...Generating source code...SourceCodeWidget PostgreSQLSourceCodeWidgetSQLSourceCodeWidgetVCdigo SQL (*.sql);;Todos os Arquivos (*.*)!SQL code (*.sql);;All files (*.*)SourceCodeWidget8Visualizao de cdigo fonteSource code visualizationSourceCodeWidgetVerso:Version:SourceCodeWidgetXMLSourceCodeWidgetconecdigo iconecodigoSourceCodeWidget ObjetoObjectSwapObjectsIdsWidgetObjeto Pai Parent ObjectSwapObjectsIdsWidgetTipo Pai Parent TypeSwapObjectsIdsWidgetTipoTypeSwapObjectsIdsWidgetnova_tabela new_tableTable CopiarCopyTableDataWidget ColarPasteTableDataWidget CopiarCopy TableWidgetValor Padro Default Value TableWidget EventoEvent TableWidgetEventosEvents TableWidgetExecuo Execution TableWidgetDisparoFiring TableWidgetIndexaoIndexing TableWidgetNomeName TableWidgetNoNo TableWidget ON DELETE TableWidget ON UPDATE TableWidgetPaiParent TableWidgetTab. Refer. Refer. Table TableWidget PapisRoles TableWidgetEsquemaSchema TableWidgetTipoType TableWidgetSimYes TableWidgetDiretrio: Directory:TablespaceWidgetFormulrioFormTablespaceWidget$Executando tarefasExecuting tasksTaskProgressWidget<Aguardando a tarefa iniciar...Waiting task to start...TaskProgressWidgetNegritoBold TextboxWidget Fonte:Font: TextboxWidgetItlicoItalic TextboxWidget.Selecionar cor de textoSelect text color TextboxWidgetSublinhado Underline TextboxWidgetArgumento: Argument: TriggerWidgetArgumentos Arguments TriggerWidget ColunaColumn TriggerWidgetColuna:Column: TriggerWidgetColunasColumns TriggerWidgetCondio: Condition: TriggerWidgetRestrio Constraint TriggerWidgetDELETE TriggerWidgetPostergvel: Deferrable: TriggerWidgetEvento:Event: TriggerWidgetExecuo: Excution: TriggerWidget FOR EACH ROW TriggerWidgetFuno: Function: TriggerWidgetINSERT TriggerWidgetOpes:Options: TriggerWidgetTab. Refer.: Refer. Table: TriggerWidgetTRUNCATE TriggerWidgetTipoType TriggerWidgetUPDATE TriggerWidgetANALYZE: TypeWidgetAlinhamento: Alignment: TypeWidgetAtributos Attributes TypeWidgetTipo Base Base Type TypeWidgetPor valorBy value TypeWidgetFun. Cannica:Canonical Func.: TypeWidgetCategoria: Category: TypeWidgetIntercalvel Collatable TypeWidgetIntercalao Collation TypeWidgetIntercalao: Collation: TypeWidgetConfigurao:Configuration: TypeWidgetValor Padro:Default Value: TypeWidgetDelimitador: Delimiter: TypeWidgetTipo Elemento Element Type TypeWidgetEnumerao Enumeration TypeWidgetEnumerao: Enumeration: TypeWidgetEnumeraes Enumerations TypeWidgetFunes Functions TypeWidgetINPUT: TypeWidgetComp. Interno:Internal Length: TypeWidgetTipo Como Like Type TypeWidgetNomeName TypeWidget Nome:Name: TypeWidgetOUTPUT: TypeWidget*Classe de Operadores:Operator Class: TypeWidgetOpes:Options: TypeWidgetPreferido Preferred TypeWidgetRECV: TypeWidgetExtensoRange TypeWidgetSEND: TypeWidgetArmazenamento:Storage: TypeWidgetSubtipoSubtype TypeWidget$Fun. Dif. Subtipo:Subtype Diff Func.: TypeWidget TPMOD_IN: TypeWidget TPMOD_OUT: TypeWidgetAs funes para serem atribudas a um tipo extenso devem ter as seguintes assinaturas:<br/><br/><strong>Cannica:</strong> <em>any funcao(any)</em> <br/><strong>Dif. Subtipo:</strong> <em>double precision funcao(subtipo, subtipo)</em>The functions to be assigned to a range type should have the following signatures:

Canonical: any function(any)
Subtype Diff: double precision function(subtype, subtype) TypeWidgetAs funes a serem atribudas ao tipo devem ser escritas em linguagem C, e possurem respectivamente as seguintes assinaturas:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any funcao(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring funcao(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byte funcao(any)</em></td> <td><strong>RECV:</strong> <em>any funcao(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer funcao(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring funcao(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean funcao(internal)</em></td> <tr> </table>The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:
INPUT: any function(cstring, oid, integer) OUTPUT: cstring function(any)
SEND: byta function(any) RECV: any function(internal, oid, integer)
TPMOD_IN: integer function(cstring[]) TPMOD_OUT: cstring function(integer)
ANALYZE: boolean function(internal)
 TypeWidgetTipoType TypeWidgetchar TypeWidgetdouble precision TypeWidgetinteger TypeWidgetsmallint TypeWidget/* No foi possvel gerar o cdigo SQL. Certifique-se de que todos os atributos estejam corretamente preenchidos! S/* Could not generate the SQL code. Make sure all attributes are correctly filled!  ViewWidgetApelidoAlias ViewWidgetApelido Col. Alias Col. ViewWidget$Previso de Cdigo Code Preview ViewWidget Col./Expr. ViewWidget ColunaColumn ViewWidget$Apelido de Coluna: Column Alias: ViewWidgetColuna:Column: ViewWidget EventoEvent ViewWidgetEventosEvents ViewWidgetExecuo Execution ViewWidgetExpresso Expression ViewWidget*Apelido de Expresso:Expression Alias: ViewWidgetExpresso: Expression: ViewWidgetDisparoFiring ViewWidgetndicesIndexes ViewWidgetIndexaoIndexing ViewWidget Modo:Mode: ViewWidgetNomeName ViewWidgetTab. Refer. Refer. Table ViewWidget Tipo Referncia:Reference Type: ViewWidgetReferncias References ViewWidget RegrasRules ViewWidget$Apelido de Tabela: Table Alias: ViewWidget&Expresso de TabelaTable Expression ViewWidgetTabela:Table: ViewWidgetGatilhosTriggers ViewWidgetUsado em:Used in: ViewWidget$Definio da VisoView Definition ViewWidgetFormulrioForm WelcomeWidgetpgmodeler-0.9.4/assets/lang/pt_BR.ts000066400000000000000000014523701416010000600173030ustar00rootroot00000000000000 AboutWidget About pgModeler Sobre o pgModeler PostgreSQL Database Modeler Modelador de Banco de Dados PostgreSQL Open source data modeling tool designed for PostgreSQL. No more DDL commands written by hand, let pgModeler do the job for you! This software reunites the concepts of entity-relationship diagrams and the features that PostgreSQL implements as extensions of SQL standards. pgModeler is proudly a brazilian software! Hide this widget ... (BUILD_NUM) License 0.0.0 build: <html><head/><body><p><a href="http://pgmodeler.com.br"><span style=" text-decoration: underline; color:#2980b9;">https://pgmodeler.io</span></a></p></body></html> <html><head/><body><p>Copyright 2006-2018 - Raphael Araújo e Silva &lt;<a href="mailto:raphael@pgmodeler.com.br"><span style=" text-decoration: underline; color:#0057ae;">raphael@pgmodeler.io</span></a>&gt;</p></body></html> AggregateWidget Final Function: Função Final: Sort Operator: Operador de Ordenação: Initial Condition: Condição Inicial: Funtion Inputs Entradas da Função Function State Estado da Função Input Data Type Tipo de Dados de Entrada State Data Type Tipo de Dado de Estado An aggregate function that accepts the types <em><strong>typeA</strong></em> and <em><strong>typeB</strong></em> as input types and which type of state is <em><strong>state_type</strong></em>, must obey the following rules: <br/><br/> <strong> &nbsp;&nbsp;&nbsp;• Final Function:</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp;• Transition Function:</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em> Uma função de agregação que aceita os tipos <em><strong>tipoA</strong></em> e <em><strong>tipoB</strong></em> como entrada e cujo tipo de estado seja <em><strong>tipo_estado</strong></em>, deve obedecer às seguintes regras:<br/><br/> <strong> &nbsp;&nbsp;&nbsp;• Função Final:</strong> <em>void funcao_final(<strong>tipo_estado</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp;• Função Transição:</strong> <em><strong>tipo_estado</strong> funcao_transicao(<strong>tipo_estado</strong>, <strong>tipoA</strong>, <strong>tipoB</strong>)</em> Transition Func.: AppearanceConfigWidget Form Formulário Element: Elemento: Global: Font style Global: Estilo de fonte Global: Constraints descriptor Global: Descritor de restrições Global: Object selection Global: Seleção de objetos Global: Position hint text Global: Texto do informativo de posição Global: Position hint box Global: Caixa do informativo de posição Global: Objects type Global: Tipo dos objetos Global: Lock arc Global: Arco do cadeado Global: Lock body Global: Corpo do cadeado Table: Schema name Tabela: Nome do esquema Table: Table name Tabela: Nome da tabela Table: Columns box Tabela: Caixa das colunas Table: Extended attributes box Tabela: Caixa dos atributos extendidos Table: Title box Tabela: Caixa do título Rule: Name Regra: Nome Rule: Descriptor Regra: Descritor Index: Name Índice: Nome Index: Descriptor Índice: Descritor Trigger: Name Gatilho: Nome Trigger: Descriptor Gatilho: Descritor View: Schema name Visão: Nome do esquema View: View name Visão: Nome da visão View: References box Visão: Caixa das referências View: Title box Visão: Caixa do título View: Table / columns alias Visão: Apelido da tabela / coluna View: Referenced column Visão: Coluna referenciada View: Referenced table Visão: Tabela referenciada View: Reference descriptor Visão: Descritor da referência Textbox: Body Caixa de Texto: Corpo Column: Column name Coluna: Nome da coluna Column: Descriptor Coluna: Descritor Column: Included / Inherited by relationship Coluna: Incluída / Herdada por relacionamento Column: Protected Coluna: Protegida Column (pk): Column name Coluna (pk): Nome da coluna Column (pk): Descriptor Coluna (pk): Descritor Column (fk): Column name Coluna (fk): Nome da coluna Column (fk): Descriptor Coluna (fk): Descritor Column (uq): Column name Coluna (uq): Nome da coluna Column (uq): Descriptor Coluna (uq): Descritor Column (nn): Column name Coluna (nn): Nome da coluna Column (nn): Descriptor Coluna (nn): Descritor Relationship: Descriptor Relacionamento: Descritor Relationship: Label text Relacionamento: Texto do rótulo Relationship: Label box Relacionamento: Caixa do rótulo Relationship: Attribute text Relacionamento: Texto do atributo Relationship: Attribute descriptor Relacionamento: Descritor do atributo Font: Fonte: pt Bold Negrito Italic Itálico Colors: Cores: Underline Sublinhado View: Extended attributes box Visão: Caixa dos atributos extendidos Tag: Name Tag: Body Placeholder: Body Constraint: Name Constraint: Descriptor Application Unknown exception caught! Exceção desconhecida capturada! Failed to create initial configuration in `%1'! Check if the current user has write permission over that path and at least read permission over `%2'. BaseConfigWidget A backup of the previous settings was saved into <strong>%1</strong>! BaseForm Dialog Diálogo &Apply &Aplicar &Cancel &Cancelar &Ok %1 properties BaseObject Column Coluna Constraint Restrição Function Função Trigger Gatilho Index Índice Rule Regra Table Tabela View Visão Domain Domínio Schema Esquema Aggregate Agregação Operator Operador Sequence Sequência Role Papel Conversion Conversão Cast Molde Language Linguagem Type Tipo Tablespace Espaço de Tabela Operator Family Família de Operadores Operator Class Classe de Operadores Database Banco de Dados Relationship Relacionamento Textbox Caixa de Texto Permission Permissão Parameter Parâmetro Collation Intercalação Type Attribute Atributo de Tipo new_object novo_objeto novos_objetos Extension Event Trigger Tag Basic Relationship Policy Generic SQL BaseObjectView SQL off BaseObjectWidget Name: Nome: icone Versão em inglês está errada! ícone Comment: Comentário: Tablespace: Esp. de Tabela: Owner: Proprietário: Schema: Esquema: This object is protected thus no change in form will be applied to it. Este objeto está protegido, assim nenhuma alteração no formulário será aplicada ao mesmo. Value(s) Valor(es) Version Versão Edit permissions Editar permissões Disable SQL code Desabilitar código SQL Collation: Intercalação: Required field. Leaving this empty will raise errors! Campo requerido. Deixá-lo em branco gerará erros! Edit object's permissions Editar permissões do objeto Disables the generated SQL code using comment tokens (--). This will disable the code of all child and referrer objects. Append or prepend a set of SQL commands to the object's definition. Custom SQL ID: The <em style='color: %1'><strong>highlighted</strong></em> fields in the form or one of their values are available only on specific PostgreSQL versions. Generating SQL code for versions other than those specified in the fields' tooltips may create incompatible code. BaseRelationship rel_%1_%2 BaseTableView Toggles the extended attributes display Connected rels: %1 BugReportForm Bug Report Bug report &Cancel &Cancelar Create Criar Use the form below to generate a complete bug report. Please, try to be as clear as possible when describing the actions that can reproduce the bug. Additionally, it's important to attach a sample database model so that the bug can be quickly discovered and fixed! Report Relatório Issue details Output: Select the report's output folder ... <html><head/><body><p>If you prefer it's possible to report this issue anytime on pgModeler's project repository at <a href="http://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration: underline; color:#0057ae;">GitHub</span></a>. </p></body></html> Database Model Attach the below database model file to be debugged. Attach a different database model Bug report successfuly generated! Please, send the file <strong>%1</strong> to <em>%2</em> in order be analyzed. Thank you for the collaboration! Load model Carregar modelo Database model (*.dbm);;All files (*.*) Modelo de banco de dados (*.dbm);; Todos os arquivos (*.*) Select report output folder BulkDataEditWidget Bulk data edit CastWidget Cast Type: Molde de Tipo: Assignment Atribuição Input / Output Entrada / Saída Source data type Tipo dado origem Target data type Tipo dado destino The function to be assigned to a cast from <em><strong>typeA</strong></em> to <em><strong>typeB</strong></em> must have the following signature: <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>. A função a ser atribuída à uma moldagem do <em><strong>tipoA</strong></em> para o <em><strong>tipoB</strong></em> deve possuir a seguinte assinatura: <em><strong>tipoB</strong> funcao(<strong>tipoA</strong>, integer, boolean)</em>. I&mplicit Conversion Func.: Função de Conv.: E&xplicit CodeCompletionWidget Makes the widget closable only by ESC key or mouse click on other controls. SQL Keyword (no items found.) Make &persistent CollationWidget Locale: Localidade: Encoding: Codificação: LC_COLLATE: LC_CTYPE: The fields <strong><em>Collation</em></strong>, <strong><em>Locale</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> are mutually exclusive, so you have to set only one of them in order to properly handle a collation. Os campos <strong><em>Intercalação</em></strong>, <strong><em>Localidade</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> são mutuamente exclusivos, então você tem que definir apenas um deles a fim de manipular corretamente a intercalação. Not defined Não definido ColorPickerWidget Form Formulário Generate random color(s) Alt+R Select color ColumnWidget Default Value: Valor Padrão: E&xpression: &NOT NULL Se&quence: Edit the underlying sequence's attributes Edit sequence Identity: ConfigurationForm pgModeler Configuration Configuração do pgModeler &Apply &Aplicar &Cancel &Cancelar Defaults Padrões General Geral Plug-ins Plugins Any modification made until now in the current section will be lost! Do you really want to restore default settings? Qualquer modificação feita até agora na seção atual será perdida! Deseja realmente restaurar as configurações padrão? Relationships Appearance Connections Snippets In some cases restore the default settings related to it may solve the problem. Would like to do that? Restore ConnectionsConfigWidget Connections: Conexões: Create new connection Criar nova conexão Cancel edition Cancelar edição Edit selected connection Editar conexão selecionada Delete selected connection Apagar conexão selecionada Connection Alias: Apelido da Conexão: Connection DB: BD Conexão: Host/Port: Servidor/Porta: User: Usuário: Password: Senha: Timeout: Tempo limite: second(s) segundo(s) SSL Mode: Modo SSL: Disable Desabilitar Allow Permitir Require Requerir AC verification Verificação de AC Full verification Verificação Completa Client Certificate: Certificado Cliente: ~/.postgresql/postgresql.crt Client Key: Chave Cliente: ~/.postgresql/postgresql.key Root Certificate: Certificado Raiz: ~/.postgresql/root.crt Revoked Certs.: Cert. Revogados: ~/.postgresql/root.crl Force GSSAPI Forçar GSSAPI Add Adicionar Update Atualizar Test Testar Success Sucesso Edit database connections Duplicate the selected connection General Geral Other params: Specify additional connection parameters in the form [param]=[value]. These parameters are described in the <strong>libpq</strong> chapter at PostgreSQL docs. Default for: Automatically browses the named database when using this connection to manage databases on <strong>Manage</strong> view. Auto browse Diff Export Exportar Import Validation Security Kerberos Server: Indicates in which operations (diff, export, import or validation) the connection is used if none is explicitly specified by the user. There is a connection being created or edited! Do you want to save it? Found %1 connection(s) No connections found Edit connections Connection successfully established! Server details: PID: `%1' Protocol: `%2' Version: `%3' ConstraintWidget Constraint Type: Tipo de Restrição: Fill Factor: Fator Preenc.: Match: Confrontar: Deferrable: Postergável: Deferral: Postergação: ON DELETE: ON UPDATE: Columns Colunas Column: Coluna: Referenced Columns Colunas Referenciadas Table: Tabela: Column Coluna Type Tipo No inherit: Sem herança: Exclude Elements Excluir Elementos Columns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form. Colunas que foram incluídas por relacionamento não podem ser adicionadas / removidas manualmente da chave primária. Se tais alterações forem feitas elas podem gerar erros. Para criar chaves primárias usando colunas incluídas por relacionamentos use as seguintes opções: campo identificador, aba atributos & restrições ou aba chave primária no formulário de relacionamento. This attribute cannot be changed once the object is created. Expression: Expressão: Indexing: Indexação: ConversionWidget Source Encoding: Codificação Origem: Target Encoding: Codificação Destino: Default Conversion: Conversão Padrão: The function to be assigned to an encoding conversion must have the following signature: <em>void function(integer, integer, cstring, internal, integer)</em>. A função a ser atribuída a uma conversão de codificação deve possuir a seguinte assinatura: <em>void funcao(integer, integer, cstring, internal, integer)</em>. Conversion Func.: Função de Conv.: CrashHandlerForm Crash Handler Stack trace Rastreamento de pilha Input: Load report file for analysis Save the attached model file on the filesystem pgModeler bug report (*.bug);;All files (*.*) Load report Save model Salvar modelo Database model (*.dbm);;All files (*.*) Modelo de banco de dados (*.dbm);; Todos os arquivos (*.*) Crash handler Bug report analysis mode activated. Oops! pgModeler just crashed! Oopa! O pgModeler acaba de travar! We apologize for what happened! It is clear that a nasty bug caused that. Please fill out the form below describing your actions before pgModeler quit unexpectedly. This will help on bug extermination and improve the software. CsvLoadWidget Form Formulário Load CSV CSV File: Select output file ... Separator: Use the first row as column names in the CSV file. By unchecking this option the first row is used as data. Columns in the first row Load Carregar Semicolon (;) Comma (,) Space Tabulation Other ; Text delimiter: " Load CSV file Comma-separted values (*.csv);;All files (*.*) CustomSQLWidget Add custom SQL code SQL code Puts an SELECT command template at current cursor position. &SELECT Puts an INSERT command template at current cursor position. &INSERT Puts an UPDATE command template at current cursor position. &UPDATE Puts an DELETE command template at current cursor position. &DELETE &Clear Append SQL Append the SQL code at the very end of model definition. Unchecking this will cause the SQL to be appended at the end of CREATE DATABASE command. Append at end of model definition. Prepend SQL Prepend at beginning of model definition. <html><head/><body><p>Use custom commands with extreme caution because you can change the semantics of the entire model when running SQL validation or export processes. Additionally, depending on the amount of commands, those processes can have their performance sensibly degradated.</p></body></html> Generic INSERT Include serial columns Exclude serial columns Generic SELECT Table SELECT Generic UPDATE Table UPDATE Generic DELETE Table DELETE DataManipulationForm Data Manipulation &Close &Fechar Refresh listing F5 Save changes Ctrl+S Export results to CSV file Ctrl+X Undo modifications Ctrl+Z Add empty rows Ins Mark the selected rows to be deleted Del Duplicate the selected rows Ctrl+D Filter the result set Table: Tabela: Schema: Esquema: in Hide views Filter expression Order && Limit results (Use <strong>0</strong> for no limit) Limit in: Add Item Adicionar Item Remove Item Remover Item Clear the order by columns list Move selected item up Move selected item down ASC DESC Column: Coluna: <strong>WARNING: </strong> There are some changed rows waiting the commit! Do you really want to discard them and retrieve the data now? Rows returned: <strong>%1</strong>&nbsp;&nbsp;&nbsp; <em>(Limit: <strong>%1</strong>)</em> none No objects found Found %1 object(s) Views can't have their data handled through this grid, this way, all operations are disabled. The selected table doesn't owns a primary key! Updates and deletes will be performed by considering all columns as primary key. <strong>WARNING:</strong> those operations can affect more than one row. This row is marked to be %1 deleted updated inserted [binary data] <strong>WARNING:</strong> Once commited its not possible to undo the changes! Proceed with saving? delete update insert <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> Copy items on the grid Paste items on the grid Ctrl+V Browse referenced tables Change the values of all selected cells at once Ctrl+E Add new rows from a CSV file Copy as CSV Copy as text Copy items Pase items Browse tables Duplicate row(s) Delete row(s) Edit cell(s) Column Coluna Referenced tables (none) Referrer tables DatabaseExplorerWidget Form Formulário Open the grid to visualize or edit data Data &Grid Alt+G Open a new SQL execution pane ... Ctrl+F6 Update the objects tree Drop this database Expands all items Expandir todos os itens Collapses all items Recolher todos os itens Filters the currently loaded items in the tree by using a pattern and matching their names. If <strong>By OID</strong> is checked the pattern is interpreted as an integer value that represents the object id (OID). <br><br/><strong>HINT:</strong> if you need to search the entire database use the full refresh (<strong>Ctrl+F5</strong>) prior the filtering. Filter: By OID Attribute Atributo Value Show raw attributes (not found, OID: %1) -- Source code not generated! Hit F7 or middle-click the item to load it. -- Admin. roles Alignment Analyze func. Arg. count Arg. default count Arg. defaults Arg. modes Arg. names Arg. types Behavior type By value Por valor Cast type Category Collatable Intercalável Collation Intercalação Comment Commutator Op. Configuration Conn. limit Constraint Restrição Create DB Create role Curr. version Default Padrão Default value Definition Definição Delimiter Dest. type Dimension Dimensão Directory Dest. encoding Element Elemento Encoding Encrypted Encriptado Enumerations Enumerações Exec. cost Expression Expressão Op. family Final func. Function Função Func. type Handler func. Handles type Hashes Index type Inherit Ini. condition Inline func. Input func. Internal length Interval type I/O cast Join func. Language Linguagem LC COLLATE LC CTYPE Leak proof Left type Length Comprimento Library Biblioteca Can login Materialized Member roles Merges Name Nome Negator op. Not null Object type OID With OIDs Old version Operator Operador Operator func. Output func. Owner Owner column Parents Password Permissions Permissões Precision Precisão Preferred Preferido Range attributes Receive func. Ref. roles Replication Restriction func. Return type Returns SETOF Right type Rows amount Schema Esquema Security type Send func. Sort op. Source type Src. encoding State type Storage Armazenamento Superuser Superusuário Tablespace Espaço de Tabela Type mod. in func. Type mod. out func. Transition func. Trusted Type Tipo Type attribute Types Unlogged Validator func. Validity Validade Windows func. false true Cache value Cycle Increment Max. value Min. value Start value Last value Subtype Subtipo Op. class Canonical func. Subtype diff func. Deferrable For each row Firing Disparo On insert On delete On update On truncate Arguments Argumentos Table Tabela Trigger func. Columns Colunas Condition Deferment Event Evento Execution mode Commands Position Comparison type Ref. columns Expressions Fill factor No inherit Op. classes Operators Operadores Ref. table Unique Único Predicate Collations Inherited Snippets Drop object Drop cascade Truncate Trunc. cascade Show data Reload properties Update Atualizar Rename Renomear Source code Quick refresh Full refresh Do you really want to drop the object <strong>%1</strong> <em>(%2)</em>? Do you really want to <strong>cascade</strong> drop the object <strong>%1</strong> <em>(%2)</em>? This action will drop all the other objects that depends on it. Do you really want to truncate the table <strong>%1</strong>? Do you really want to <strong>cascade</strong> truncate the table <strong>%1</strong>? This action will truncate all the tables that depends on it? Src. table: %1 Src. column(s): %2 Ref. table: %1 Ref. column(s): %2 -- Source code genaration for buil-in and base types currently unavailable -- -- Source code unavailable for the object %1 (%2). -- Toggle the display of filter widget as well the system/extension objects. Sort items alphabetically. When unchecked, items are sorted by OID. Sort alphabetically Client encoding Configuration file Data directory Dynamic library path Dynamic shared memory Hba file Listen addresses Max. connections Listen port Server encoding SSL SSL ca file SSL cert file SSL crl file SSL key file Server version Ident file Password encryption Connection ID Server PID Server protocol Referrers Identity Command USING expr. CHECK expr. Roles Papéis RLS enabled RLS forced Show objects filter Show system objects Show extension objects -- Source code unavailable for this kind of object -- Also restart sequences Warning You're running a demonstration version! The data manipulation feature is available only in the full version! <strong>CAUTION:</strong> You are about to drop the entire database <strong>%1</strong>! All data will be completely wiped out. Do you really want to proceed? DatabaseImportForm Settings Options Connection: Conexão: Resolve some of the object's dependencies by querying the catalog when a needed object does not exists on the loaded set. In some cases it's necessary to combine this option with others below. This option does not applies to database level objects like role, tablespace and language as well for data types, extensions. Automatically resolve dependencies Random colors will be assigned to imported relationships facilitating the identification of links between tables mainly in large models. Random colors for relationships Enables the import of system built-in objects. It's recommend to select only those objects that are directly referenced by the ones to be imported. WARNING: Try to import a huge set of system objects can bloat the resultant model or even crash pgModeler due to memory/cpu overuse. Import system objects Enables the import of objects created by extensions. Generally there is no need to check this option but if there are objects in the database that directly references this category of objects this mode must be enabled. Import extension objects pgModeler ignores import errors and will try to create as many as possible objects. By checking this option the import operation will be not aborted but an incomplete model will be constructed. This option generates a log file on pgModeler's temp directory. Ignore import errors All catalog queries as well the created objects' source code are printed to standard output (stdout). Debug mode Create all imported objects in the current working model instead of create a new one. Import objects to the working model Database Banco de Dados Filter: Filter object by it's OID By OID Select all objects ... Clear object selection Expands all items Expandir todos os itens Collapses all items Recolher todos os itens Output Progress label... Rótulo de progresso... Cancel Cancelar &Import &Close &Fechar <strong>ATTENTION:</strong> You are about to import objects to the current working model! This action will cause irreversible changes to it even in case of critical errors during the process. Do you want to proceed? Importing process aborted! Importing process canceled by user! Importing process sucessfuly ended! No databases found Found %1 database(s) Retrieving objects from database... Retrieving cluster level objects... Retrieving objects of schema `%1'... This is a PostgreSQL built-in data type and cannot be imported. This is a pgModeler's built-in object. It will be ignored if checked by user. Import database Retrieving objects of `%1' (%2)... DatabaseImportHelper Retrieving system objects... `%1' Retrieving objects... `%1' Creating object `%1' (%2)... Import failed to recreate some objects in `%1' tries. Creating permissions for object `%1' (%2)... Creating columns permissions... Updating relationships of `%1' (%2)... Validating relationships... The database import ended but some errors were generated and saved into the log file `%1'. This file will last until pgModeler quit. Creating table inheritances... Destroying unused detached columns... Assigning sequences to columns... Creating object `%1' (%2), oid `%3'... Trying to recreate object `%1' (%2), oid `%3'... DatabaseModel The demonstration version can create only `%1' instances of each object type! You've reach this limit for the type: `%2' Loading: `%1' (%2) Validating relationships... Saving object `%1' (%2) Saving metadata of the object `%1' (%2) Metadata file successfully saved! Process successfully ended but no metadata was saved! Creating object `%1' (%2) Object `%1' (%2) already exists. Ignoring. Loading metadata for object `%1' (%2) Object `%1' (%2) not found. Ignoring metadata. Metadata file successfully loaded! Generating %1 code: `%2' (%3) DatabaseWidget Template DB: DB Modelo: Model Author: Autor do Modelo: Encoding: Codificação: LC_COLLATE: Connections: Conexões: LC_CTYPE: Default Padrão Attributes Atributos Default Objects Tablespace: Esp. de Tabela: Schema: Esquema: Collation: Intercalação: Owner: The fields <strong>LC_COLLATE</strong> and <strong>LC_CTYPE</strong> have pre-configured values based upon the running system. You can freely modify those values if you intend to export the model to another host. Use the above fields to specify the default attributes assigned to new objects created on the database model. Leaving a field empty will cause PostgreSQL to use the default values when exporting the model. Options: Opções: Allow connections Is template DomainWidget Default Value: Valor Padrão: Name: Nome: Attributes Atributos Not null Check constraints Expression: Expressão: Name Nome Expression Expressão DonateWidget Form Formulário Donate to pgModeler Hide this widget ... <html><head/><body><p>pgModeler is brought to you thanks to a <span style=" font-style:italic;">great effort to create and distribute a quality product</span>. This project is reaching out levels of maturity never imagined. All this is the result of a joint work between its author and the <span style=" font-weight:600;">Open Source community</span>. <br/><br/>This software has a long way to go yet and with your help we'll keep maintaining the good job and bringing new improvements on each release. If you did like pgModeler and thinks it deserves a contribution please make a donation!</p></body></html> I want to help! ElementsWidget Form Formulário Column: Coluna: Expression: Expressão: Collation: Intercalação: Operator Class: Classe de Operadores: Operator: Operador: Sorting: Ordenação: Ascending Ascendente Descending Descendente Nulls first Nulos primeiro Element Elemento Type Tipo Operator Class Classe de Operadores Sorting Ordenação Nulls First Nulos Primeiro Collation Intercalação Operator Operador Expression Expressão Yes Sim No Não EventTriggerWidget Event: Evento: Function: Função: Filter Tag: Tag command Exception Assignment of a pseudo-type to the type of the column! Atribuição de um pseudo-tipo ao tipo da coluna! Assignment of a precision greater than the length of the type! Atribuição de precisão maior do que o comprimento do tipo! Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! Atribuição de precisão inválida a um tipo time, timestamp ou interval. A precisão neste caso deve ser igual ou inferior a 6! Reference to a column which index is out of the capacity of the column list! Referência a uma coluna com índice fora da capacidade da lista de colunas! Assignment of not allocated object! Atribuição de um objeto não alocado! Removing an object of an invalid type! Remoção de objeto de tipo inválido! Obtaining an object of an invalid type! Obtenção de um objeto com tipo inválido! Assignment of empty name to table return type! Atribuição de nome vazio ao tipo de retorno de tabela! Reference to an event which does not belongs to trigger! Referência a um evento não pertecente ao gatilho! Assignment of a function which language is invalid! Atribuição de função com linguagem inválida! Assignment of empty name to an object! Atribuição de nome vazio a um objeto! Assignment of schema object which type is invalid! Atribuição de um objeto esquema com tipo inválido! Assignment of tablespace object with invalid type! Atribuição de objeto espaço de tabela com tipo inválido! Assignment of tablespace to an invalid object! Atribuição de um espaço de tabela a um objeto de tipo inválido! Assignment of tablespace to a constraint which type is invalid! To belong to a tablespace the constraint must be a primary key or unique! Atribuição de um objeto espaço de tabela a uma restrição de tipo inválido! A restrição deve ser uma chave-primária ou única para pode pertencer a um espaço de tabela! Assignment of owner object which type is invalid! Atribuição de um objeto papel com tipo inválido! Assignment of owner to an invalid object! Atribuição de um dono a um objeto de tipo inválido! Reference to a function with invalid type! Referência a uma função com tipo inválido! Reference to an argument of the operator with invalid type! Referência a um argumento do operador com tipo inválido! Reference to an operator with invalid type! Referência a um operador com tipo inválido! Reference to an invalid role type! Referência a um tipo de papel inválido! Assignment of an object that already belongs to another table! Atribuição de um objeto o qual já pertence a outra tabela! Assignment of a schema to the sequence which differs from the schema of the owner table! Atribuição de esquema à seqüência o qual difere do esquema da tabela possuidora! Assignment of an invalid value to one of the sequence attributes! Atribuição de valor inválido a um dos atributos da seqüência! Assignment of a minimum value to the sequence which is greater than the maximum value! Atribuição de valor mínimo da seqüência maior do que o valor máximo! Assignment of a null increment value to the sequence! Atribuição de incremento de seqüência com valor nulo! Assignment of null cache value to the sequence! Atribuição de cache de seqüência com valor nulo! Allocation of object with invalid type! Alocação de objeto com tipo inválido! Assignment of not allocated language! Atribuição de linguagem não alocada! Assignment of language object which type is invalid! Atribuição de linguagem com tipo inválido! Reference to data type with an index outside the capacity of data types list! Referência a tipo de dado com índice fora da capacidade da lista de tipos de dados! Assignment of invalid type to the object! Atribuição de um tipo inválido ao objeto! Obtaining types with invalid quantity! Obtenção de tipos com quantidade inválida! Insertion of item which already exists in the attributes list of the type! Inserção de item já existente na lista de atibutos do tipo! Insertion of invalid item in the attributes list of the type! Inserção de item inválido na lista de atibutos do tipo! Insertion of item which already exists in the enumarations list of the type! Inserção de item já existente na lista de enumerações do tipo! Insertion of invalid item in the enumerations list of the type! Inserção de item inválido na lista de emumerações do tipo! Assignment of invalid configuration to the type! Atribuição de configuração inválida ao tipo! Assignment of an invalid strategy/support number to an operator class element! Atribuição de valor inválido ao número de estratégia/suporte do elemento de classe de operadores! Insertion of element which already exists in the element list! Inserção de elemento já existente na lista de elementos! Removal of an object not allocated! Remoção de objeto não alocado! Operation with object(s) which type(s) is invalid! Operação com objeto(s) de tipo(s) inválido(s)! Reference to object with invalid type! Referência a um objeto com tipo inválido! Operation with object not allocated! Operação com objeto não alocado! The relationship of the type 1-1 where both tables are mandatory participation is not implemented because it requires fusion between the tables that breaks the modeling done by the user! O relacionamento do tipo 1-1 onde ambas as tabelas são de participação obrigatória não é implementado por necessitar de fusão entre tabelas o que quebra a modelagem feita pelo usuário! Assignment of an invalid expression to the object! Atribuição de expressão inválida ao objeto! Assignment of a primary key to a table which already has one! Atribuição de chave primária à uma tabela a qual já possui uma! A foreign key can not be added to a relationship because is created automatically when this is connected! Uma chave estrangeira não pode ser adicionado a um relacionamento pois esta é criada automaticamente no momento da ligação do mesmo! Reference to an user-defined data type that not exists in the model! Referência a tipo de dado definido pelo usuário o qual não existe no modelo! Assignment of invalid maximum size to operation list! Atribuição de tamanho máximo inválido à lista de operações! One or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! Um ou mais objetos foram invalidados e automaticamente removidos pois os mesmos referenciavam colunas de tabelas as quais foram incluídas através de relacionamentos e que deixaram de existir devido a desconexão ou exclusão dos relacionamentos geradores de tais colunas! Reference to an invalid privilege type! Referência a um tipo de privilégio inválido! Assignment of privilege incompatible with the type of object referenced by permission! Atribuição de privilégio incompatível com o tipo do objeto referenciado pela permissão! It is not possible to create arrays of domains or sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! Não é possível criar arrays de domínios ou sequências (dimensão >= 1)! O PostgreSQL ainda não implementa esta funcionalidade! Assignment of invalid name to the table generated from N-N relationship! Atribuição de nome inválido à tabela gerada por relacionamento N-N! Constraints like primary key, foreign key or unique must have at least one column related to them! For foreign keys must be selected, in addition, the referenced columns! Restrições do tipo chave-primária, chave-estrangeira ou única devem possuir pelo menos uma coluna relacionada às mesmas! Para chaves-estrangeira devem ser selecionadas, adicionalmente, as colunas referenciadas! The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 O processo de exportação falhou devido a um erro disparado pelo servidor PostgreSQL na tentativa de execução de um comando SQL. Para obter mais detalhes sobre erro cheque a pilha de exceções! ** Comando SQL executado: ** %1 One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. Um ou mais plugins não foram ativados devido a erros no processo de carregamento! Verifique a pilha de exceções para mais detalhes. Assignment of empty XML buffer to parser! Atribuição de buffer de código XML vazio ao parser! Assignment of empty DTD file name! Atribuição de nome de arquivo DTD vazio! Assignment of empty name to the DTD declaration! Atribuição de nome vazio à declaração DTD! Operation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! Operação sobre árvore de elementos não alocada! É necessário carregar o buffer XML do parser e interpretá-lo para que a árvore seja gerada! Operation with unallocated tree element! Operação com elemento de árvore de elementos não alocado! Operation with element which does not exists in the element tree currently loaded! Operação com elemento o qual não faz parte da árvore de elementos carregada atualmente! Assignment of a value to an invalid connection parameter! Atribuição de valor a um parâmetro de conexão inválido! Operation on connection not established! Operação sobre conexão não estabelecida! Attempt to connect without define configuration parameters! Tentativa de conexão sem parâmetros de configuração definidos! Assignment of not allocated SQL command result! Atribuição de resultado de comando SQL não alocado! Unable to allocate the result of the SQL command because the response from the DBMS was not understood by the client! Não foi possível alocar o resultado do comando SQL pois a resposta do SGBD não foi compreendida pelo cliente! Reference to a column of tuple with invalid index! Referência à uma coluna da tupla com índice inválido! Reference to a column of tuple with invalid name! Referência à uma coluna da tupla com nome inválido! Assignment of a not allocated column to object `%1' (%2)! Assignment of a not allocated schema to object `%1' (%2)! The object `%1' (%2) has inconsistent SQL or XML definition! The object `%1' (%2) already exists on `%3' (%4)! The object `%1' (%2) cannot be assigned because there is already exists in the container object `%3'! Assigning object of an invalid type! The insertion of the parameter `%1' will not be possible because there is another parameter with same name in the function `%2'! The insertion of the table return type `%1' will not be possible because there is another return type with the same name in the `%2'! Reference to a parameter which index is out of the parameter list bounds! The column `%1' cannot be assigned to the trigger `%2' because they belongs to different parent tables! Assignment of a not allocated function to object `%1' (%2)! Assignment of a function which return type is different from `%1'! Assignment of a function which parameter count is invalid to the object `%1' (%2)! Event trigger function must be coded in any language other than SQL! Assignment of not allocated table to object `%1' (%2)! Reference to an argument which index is out of argument list bounds! Assignment of a name which contains invalid characters! Assignment of a name which length exceeds the maximum of 63 characters! Assignment of appended or prepended SQL to an invalid object! Assignment of value to an invalid option type on role! The insertion of the role `%1' is not possible because this is already being referenced by role `%2'! Reference redundancy detected by having the role `%1' referencing the role `%2'! The role `%1' can not be listed as a member of itself! Reference to a role which index is out of role list bounds! Insertion of empty command to the rule! Reference to a command which index is out of the command list bounds! Is not possible to create a self generalization/copy relationship! The table can not inherit or copy their own attributes! Assignment of a start value to the sequence which is extrapolating the range defined by minimum and maximum values! Assignment of owner table which is not in the same schema as the sequence `%1'! Assignment of owner table which does not belong to the same owner of the sequence `%1'! Assignment of a nonexistent owner column to the sequence `%1'! Assignment of an owner column to the sequence `%1' that is not related to any table! Reference to a label which index is out of labels list bounds! Assignment of a function with invalid return type to object `%1' (%2)! Assignment of a function with invalid parameter(s) type(s) to object `%1' (%2)! Assignment of a null type to object `%1' (%2)! Assignment of an empty directory to object `%1' (%2)! Reference to an attribute which index is out of the attributes list bounds! Reference to an enumeration which index is out of the enumerations list bounds! Assignment of an operator which input type count is invalid to aggregate function! Assignment of an operator which types of arguments is invalid! Assignment of system reserved name to the object `%1' (%2)! One function with invalid configuration is been used by the object `%1' (%2)! Reference to an element which index is out of element list bounds! Reference to an object which index is out of object list bounds! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4)! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4) that belongs to `%5' (%6)! The creation of the relationship `%1' between the table `%2' and `%3' can not be done because one does not have a primary key. If the relationship is of the type n-n both tables must have primary keys! Identifier relationship can not be created for a self relationship, relationships of the type n-n, copy or generalization! Unable to create a copy relationship because the column `%1' in table `%2' already exists in table `%3'! Unable to create the generalization relationship because the column `%1' in table `%2' can not be merged with the column `%3' of table `%4' because they have incompatible types! Unable to create the generalization relationship because the constraint `%1' in table `%2' can not be merged with the constraint `%3' of table `%4' due to their incompatible composition! An attribute can not be added to a copy or generalization relationship! The object `%1' (%2) is referencing the object `%3' (%4) which was not found in the model! Unable to write the file or directory `%1'! Make sure the output directory exists, or if the user has write permissions over it! Unable to write the file `%1' due to one or more errors in the definition generation process! The configuration of the relationship `%1' generates a redundancy between the relationships `%2'. Redundancy on identifier or generalization/copy relationships are not accepted since they result in incorrect column spreading making the model inconsistent! The primary key `%1' can only be allocated if declared within a block of code that defines a table or relationship! Insertion of a role which already exists in the role list of the permission! There is already a permission on object `%1' (%2) which has one or more equal roles from those present on permission to be assigned to the object! A permission is referencing the object `%1' (%2) which was not found in the model! The object `%1' (%2) can not be created because its not being assigned to any schema! The tablespace `%1' can not be inserted into the model because it points to the same directory as the tablespace `%2'! The function `%1' can not get a source code as a definition because its language is set to C. Use the attributes symbol and dynamic library instead! The function `%1' can have the attributes symbol and dynamic library configured only if the language is set to C. For all other cases you must specify a source code that defines it in the DBMS! The operator `%1' can not be assigned as a comutator of operator `%2' because it has incompatible settings! The operator `%1' can not be assigned as negator of operator `%2' because it has incompatible settings! The type `%1' can not self refer in the attributes `element' or `copy type' or be used as a data type of an attribute in the configuration of a composite type! Assignment of invalid element to type `%1'! Assignment of invalid alignment to type `%1'! The relationship `%1' can not make use of the special primary key because it is marked as identifier or it is a self relationship! The object `%1' (%2) can not be edited or deleted because it was automatically included through a relationship! If the object is an attribute or constraint the modifications must be done on the relationship editing form. The object `%1' (%2) can not be deleted because it is protected! The group `%1' has already been declared earlier! The group `%1' can not be built in the groups declaration block (%2)! The group `%1' was built but not declared in the groups declaration block (%2)! The group `%1' can not be built without possessing child elements! The group `%1' can not be built once more because this was done in previous blocks! The group `%1' has been declared but not built! Reference to a column of the objects table with invalid index! Reference to a row of the objects table with invalid index! The object `%1' (%2) can not be manipulated because it is reserved to PostgreSQL! This object is present in the database model only as a reference! The new configuration of the function invalidates the object `%1' (%2)! In this case it is needed to undo the relationship between the affected object and function in order to the new configuration to take effect! A view reference must be used in at least one these SQL scopes: View Definition, SELECT-FROM, FROM-WHERE or After WHERE! Could not find the default settings file `%1'! To restore default settings check the existence of the file and try again! Could not load the plugin `%1' from the library `%2'! Message returned by plugin manager: `%3' Error while interpreting XML buffer at line %1 column %2. Message generated by the parser: %3. %4 Attempt to start a connection already stablished! Could not connect to the database. Message returned: `%1' Unable to allocate command result for the SQL because the server has generated a fatal error! Message returned by the DBMS: `%1' Reference to a tuple with an invalid index or the result is empty (no tuples)! Reference to a column of a tuple which was not yet initialized (tuple navigation not started)! Could not execute the SQL command. Message returned: `%1' Invalid use of a view reference as whole SQL definition! The assigned reference must be an expression! Assignment of a second definition expression to the view! It is not possible mix ordinary references (SELECT-FROM, FROM-WHERE, After WHERE) with references used as view SQL definition! Assignment of collation object which type is invalid! At the moment pgModeler does not support the creation of primary keys which some columns were generated by relationship connection. To create primary keys with this feature you can use the field `Identifier' or the tab `Primary key' on relationship editing form! Collations must be created at least with attributes LC_COLLATE and LC_CTYPE defined! The object `%1' (%2) cannot reference itself! This operation is not permitted for this kind of object! Only operator families which uses `btree' as indexing method are accepted by operator class elements! Reference to an invalid copy table option! Copy relationship between tables `%1' and `%2' cannot be done because the first one already copies attributes from `%3'! Tables can have only one copy table! The INSTEAD OF mode cannot be used on triggers that belongs to tables! This is available only for view triggers! The TRUNCATE event can only be used when the trigger executes for each statement and belongs to a table! The INSTEAD OF mode cannot be used on view triggers that executes for each statement! Constraint triggers can only be executed on AFTER events and for each row! A view trigger cannot be AFTER/BEFORE when it executes for each row! A trigger cannot make reference to columns when using INSTEAD OF mode and UPDATE event! Assignment of a column which has no parent table to the object `%1' (%2)! Only constraint triggers can be deferrable or reference another table! Reference to a function id which is incompatible with the user define type configuration! The operator class assigned to the object `%1' (%2) must use `btree' as indexing method! The validation process failed due to an error triggered by the validation helper. For more details about the error check the exception stack! The extension `%1' is registered as a data type and cannot have the attribute `handles datatype' modified! The fk relationship `%1' cannot be created because the foreign-key that represents it was not created on table `%2'! Assignement of an invalid object name pattern to the relationship `%1'! Reference to an invalid object name pattern id on the relationship `%1'! Invalid use of variadic parameter mode! This mode can be used only with an array or "any" data type! Mixing incompatibles DBMS export modes: `ignore object duplications', `drop database' or `drop objects' cannot be used with `simulate export'! Mixing incompatibles DROP options: `drop database' and `drop objects' cannot be used at the same time! Invalid object id swapping operation! The objects involved are the same! Invalid object id swapping operation! The database itself, tablespaces or roles cannot have the ids swapped! The widget already has a parent and cannot be assigned to a different object! Could not load the database model file `%1'. Check the error stack to see details. Try to run `pgmodeler-cli --fix-model' in order to correct the structure of the file if that is the case. The column `%1' cannot reference it's parent table `%2' as data type! Operation with an invalid element id `%1'! Reference to an invalid color id `%1' for element `%2'! Assignment of an invalid object to `%1' (%2)! The assigned object must be of type `%3'. The sequence `%1' can't be assigned to the column `%2' because the data type of the latter is incompatible. The type used must be an integer one! The option to generate temporary object names can only be used in simulation mode! It's not possible convert the type of the column `%1' to serial! It must have an `integer' based type and its default value must be a call to `nextval(seq_name::regclass)' function or a sequence object must be directly assigned to the column! Could not assign the variable `%1' to event trigger's filter. Currently, PostgreSQL supports only the `TAG' variable! Could not perform the `%1' operation on `%2' using the data on row `%3'! All changes were rolled back. ** Returned error ** %4 Malformed unescaped value on row `%1' column `%2'! Trying to undo/redo an invalid operation over an object that does not exists anymore or can't be handled! The operation history will be cleaned up. The object `%1' (%2) can't be handled because some needed fields are not set! Please, make sure to fill at least the requires fields in order to properly create or update the object. A relationship can only be swapped by other object of the same kind! A parent table of `%1' which OID is `%2' was not found in the set of imported objects! The enumeration `%1' can't be assigned to the type `%2' because contains invalid characters! The enumeration `%1' can't be assigned to the type `%2' because is too long! The connection was idle for too long and was automatically closed! The connection was unexpectedly closed by the database server `%1' at port `%2'! There is already a relationship between `%1' (%2) and `%3' (%4) in the model! When using relationships of the type generalization, copy and one-to-one there can't be other relationships linked to the pair of tables. Unable to load the configuration file `%1'! Please check if file exists in its folder and/or if it is not corrupted! Invalid syntax in file `%1', line %2, column %3! Invalid instruction `%1' on file `%2', line %3, column %4! Unknown attribute `%1' in file `%2', line %3, column %4! Invalid metacharacter `%1' in file `%2', line %3, column %4! Invalid operator `%1' in comparison expression, file `%2', line %3, column %4! Attribute `%1' with an undefined value in file `%2', line %3, column %4! Attribute `%1' with an invalid name in file `%2', line %3, column %4! Could not access the file or directory `%1'! Make sure that it exists or if the user has access permissions on it! Could not load file `%1'. The same appears to be inconsistent or one of its dependencies (DTD files) has errors or is missing! Unsupported PostgreSQL version (%1) detected! Valid versions are between %2 and %3. The object `%1' (%2), oid `%3', could not be imported due to one or more errors! Check the exception stack for more details. `HINT:' if the object somehow references objects in `pg_catalog' or `information_schema' consider enable the importing of system objects. Failed to drop the database `%1' because it is defined as the default database for the connection `%2'! The column `%1' must be `NOT NULL' because it composes the primary key of the table `%2'. You need to remove the column from the mentioned contraint in order to disable the `NOT NULL' on it! The identity column `%1' has an invalid data type! The data type must be `smallint', `integer' or `bigint'. Reference to an invalid affected command in policy `%1'! Reference to an invalid special role in policy `%1'! ExtensionWidget Version: Versão: Old Version: This attribute cannot be changed once the object is created. Handles data type FindReplaceWidget Form Formulário Replace one occurrence Replace Replace all occurrences Replace All Replace the selection and find the next one Replace && Find Replace: Find: Find previous Shift+F3 Find next F3 Case sensitive Regular expression Whole words Hide this widget ... FunctionWidget Attributes Atributos Behavior: Comportamento: Rows Returned: Linhas Retornadas: Execution Cost: Custo de Execução: Return Method: Método de Retorno: Function Type: Tipo de Função: Set Conjunto Return Table Tabela de Retorno Security: Segurança: Parameters Parâmetros Definition Definição Dynamic Library: Biblioteca Dinâmica: Symbol: Símbolo: Library: Biblioteca: Source code: Código fonte: Column Coluna Type Tipo Name Nome Default Value Valor Padrão Si&mple Tab&le Windown Func. Leakproof Mode Language: GeneralConfigWidget Form Formulário Milimeters Milímetros Pixels Píxeis Inches Polegadas Centimeter Centímetro A0 (841 x 1189 mm) A1 (594 x 841 mm) A2 (420 x 594 mm) A3 (297 x 420 mm) A4 (210 x 297 mm) A5 (148 x 210 mm) A6 (105 x 148 mm) A7 (74 x 105 mm) A8 (52 x 74 mm) A9 (37 x 52 mm) B0 (1030 x 1456 mm) B1 (728 x 1030 mm) B10 (32 x 45 mm) B2 (515 x 728 mm) B3 (364 x 515 mm) B4 (257 x 364 mm) B5 (182 x 257 mm) B6 (128 x 182 mm) B7 (91 x 128 mm) B8 (64 x 91 mm) B9 (45 x 64 mm) C5E (163 x 229 mm) Comm10E (105 x 241 mm) DLE (110 x 220 mm) Executive (191 x 254 mm) Executivo (191 x 254 mm) Folio (210 x 330 mm) Ledger (432 x 279 mm) Legal (216 x 356 mm) Letter (216 x 279 mm) Carta (216 x 279 mm) Tabloid (279 x 432 mm) Tablóide (279 x 432 mm) Paper: Papel: Orientation: Orientação: Operation history: Histórico de operações: Print grid Imprimir grade Left: Esq.: Left margin Margem esquerda Top: Topo: Top margin Margem topo Right: Dir.: Right margin Margem direita Bottom: Base: Bottom margin Margem base Landscape Paisagem Portrait Retrato Print page numbers Imprimir número de páginas General && Design General Geral Check if there is a new version on server Design Disable antialiasing for lines and texts improving performance when handling huge models. Disable render smoothness Triggers a dialog asking the user to validate the model before a save, export or diff operation. Validate before save, export or diff Start move the canvas when the cursor is on the canvas edges Move canvas by keep mouse on corners Graphical objects (table, views and textboxes) will be created in a single step without the need to click on canvas Simplify creation of graphical objects After loading the model the last zoom and position on canvas will be restored Save and restore last position and zoom When enabled this option creates a placeholder object at the previous table's position when starting to move it. This will cause graphical updates on relationship lines to be performed only when the drag & drop action is done improving the performance. Disabling placeholders will cause those updates to be executed every time the table's position changes a single pixel (classical behavior). Use placeholders when moving tables Hide the portion of table which represent triggers, indexes and rules Hide table extended attributes Hide the object which represents the tag assigned to the table Hide table tags Hide the object that represents the relationship name Hide relationship name Toggles the code completion in all fields that accepts the input of SQL commands. Enable SQL code completion Printing && Code Code style Size: Font: Fonte: Colors: Cores: Options: Opções: Display line numbers Highlight lines at cursor's position pt Custom tab width: Printing Custom Unity: Custom Size: Width: Height: Page Margins: Line numbers' font color Line numbers' background color Highlighted line color The little brown fox jumps over the lazy dog Minimum object opacity (%): Defines the minimum opacity percentage applied to the objects when using the fade out feature. A zero opacity causes the object to be completely hidden not being possible to interact with it in the canvas area. Canvas grid size: Defines the vertical and horizontal grid size. This value affects the spacing of objects when using object grid alignment feature. By default the range selection is triggered with Shift + left click. By checking this option range selection will be activated only with a single click and move. Trigger range selection with a single click Defines the maximum amount of elements held in the operation history. Once reached the maximum number the history is automatically cleaned. Defines the period when the opened models will be saved automatically. Autosave interval (minutes): Replaces any straight line in relationship by curved ones in order to improve the model's visualization. Use curved lines for relationships Souce code editor args: lines Clear the entire SQL comand history. Clear history Open in file manager Abrir gerenciador de arquivos Overrides the default user interface language defined by the system. Requires restarting the program. <strong>NOTE:</strong> UI translations are third party collaborations thus any typo or mistake should be reported directly to their respective maintainers. SQL history max. length: Check updates at startup User interface language: Browse the source code editor application Souce code editor: Configurations directory: System default All files (*.*) Load file GenericSQLWidget SQL code HintTextWidget Form Formulário IndexWidget Fill Factor: Fator Preenc.: Indexing: Indexação: Options: Opções: Concurrent Concorrente Unique Único Fast update Atual. Rápida Elements Elementos Attributes Atributos Buffering Predicate: LanguageWidget Trusted: Confiável: The functions to be assigned to the language should have, respectively, the following signatures:<br/><br/> <strong>Handler Function:</strong> <em>language_handler function()</em><br/> <strong>Validator Function:</strong> <em>void function(oid)</em><br/> <strong>Inline Function:</strong> <em>void function(internal)</em> As funções a serem atribuídas à linguagem devem possuir, respectivamente, as seguintes assinaturas:<br/><br/> <strong>Função Manipuladora:</strong> <em>language_handler funcao()</em><br/> <strong>Função Validadora:</strong> <em>void funcao(oid)</em><br/> <strong>Função em Linha:</strong> <em>void funcao(internal)</em> Validator Func.: Handler Func.: Inline Func.: MainWindow pgModeler - PostgreSQL Database Modeler pgModeler - Modelador de Banco de Dados PostgreSQL &File &Arquivo &Edit &Editar &Show &Mostrar Plugins New Novo Ctrl+N Ctrl+S Zoom in Aumentar Zoom Ctrl+= Zoom out Diminuir Zoom Zoom - Zoom - Ctrl+- Ctrl+O Ctrl+Q Ctrl+P Ctrl+Z Ctrl+Y Ctrl+Shift+S Show grid Mostrar grade Ctrl+G Ctrl+W Ctrl+0 Align objects position to grid Alinhar objetos à grade Show the page delimiters Mostrar os delimitadores da página Ctrl+L Save all Salvar todos Show the model overview Mostra a visão geral do modelo F1 Save model Salvar modelo Save '%1' as... Salvar '%1' como... Database model (*.dbm);;All files (*.*) Modelo de banco de dados (*.dbm);; Todos os arquivos (*.*) Database model printing Impressão do modelo de banco de dados Confirmation Confirmação Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. Foram detectadas modificações nas definições de papel/margem do modelo que podem provocar a impressão incorreta dos objetos. Deseja prosseguir com a impressão usando as novas configurações? Para usar as configurações padrão clique em 'Não', ou em 'Cancelar' para abortar a impressão. Load model Carregar modelo This action will open a web browser window! Want to proceed? Esta ação abrirá uma janela do navegador de internet! Deseja prosseguir? Ctrl+H F10 Saving temp. models Toogle the model validation widgets &Validation Alt+V Toggle the object finder Find Object Ctrl+F Toggle the operation history widget &Operations Alt+O Toggle the model objects widget O&bjects Alt+B He&lp Pl&ugins General Geral Controls &New New model &Save &Zoom in Zoo&m out &Load Sa&ve as E&xit Exit pgModeler &About pgModeler F4 &Print Print model &Undo Undo operation &Redo Redo operation &Export &Exportar Export the current opened model in different modes Ctrl+Shift+E &Show grid &Close &Fechar Close current model &Normal zoom &Align to grid Show &delimiters &Settings Edit pgModeler settings F12 &Overview &Support Access the support page New object Novo objeto Access the list of loaded plugins &Recent Models Load recently opened model &Import Import existing database to new model (reverse engineering) Ctrl+Shift+I Rest&ore Session &Fix a model New version found! Update for the current version is available on project's site &Check for update action_main_menu Main menu Show expanded Expands the main menu bar in classical mode Hide main menu Hides the main menu bar and put the action on a separated action Ctrl+Shift+H &Diff Ctrl+Shift+D Welcome Welcome screen Shift+W Design Design database models Shift+D Manage Manage existent databases Shift+M &Bug report Report a bug Donate Help pgModeler by donating! Objects me&tadata Objects metadata (Demo) Save modified model(s) The following models were modified but not saved: %1. Do you really want to quit pgModeler? Clear Menu The demonstration version can create only `one' instance of database model! The model <strong>%1</strong> was modified! Do you really want to close without save it? Warning You're running a demonstration version! The model saving feature is available only in the full version! <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! It's recommended to validate it before save in order to create a consistent model otherwise the generated file will be broken demanding manual fixes to be loadable again! Save anyway Validate <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the export process it's recommended to validate in order to correctly create the objects on database server! Export anyway <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the diff process it's recommended to validate in order to correctly analyze and generate the difference between the model and a database! Diff anyway Could not load the database model file `%1'. Check the error stack to see details. You can try to fix it in order to make it loadable again. Fix model Cancel Cancelar Access support page (no samples found) You're running a demonstration version! Note that you'll be able to create only <strong>%1</strong> instances of each type of object and some key features will be disabled or limited!<br/><br/>You can purchase a full binary copy or get the source code at <a href='http://pgmodeler.com.br'>pgmodeler.com.br</a>. <strong>NOTE:</strong> pgModeler is an open source software, but purchasing binary copies or providing some donations will support the project and cover all development costs.<br/><br/> <strong>HINT:</strong> in order to test all features it's recommended to use the <strong>demo.dbm</strong> model located in </strong>Sample models</strong> at <strong>Welcome</strong> view.<br/><br/><br/><br/> save export diff Executing pending <strong>%1</strong> operation... Determine the changes between model/database and another database Arrange objects Rearrange objects over the canvas Grid Hierarchical Scattered Rearrange objects over the canvas is an irreversible operation! Would like to proceed? Messagebox Dialog Diálogo msg Exceptions Exceções Show raw text errors or information. Show/hide exceptions stack. ... &Yes &Sim &No &Não Cancel Cancelar &Ok &Cancel &Cancelar Error Erro Alert Alerta Information Informação Confirmation Confirmação MetadataHandlingForm Handle metadata &Apply &Aplicar &Cancel &Cancelar Handle objects metadata Settings Extract from: Loading a metadata file to the current model is an irreversible operation so be sure to specify a backup file before proceed. Options Handles the following database model attributes in the metadata file: author, zoom factor, last position and default objects. Database model metadata Handles the objects' positioning in the metadata file. Objects' positioning Handles the objects' custom colors in the metadata file. Currently available only for relationships and schemas. Custom object's colors Handles the objects' protection status in the metadata file. Objects' protection status Handles the objects' SQL disabled status in the metadata file. Objects' SQL disabled status Handles the objects' custom SQL commands in the metadata file. Custom SQL commands Textbox objects Tag objects Backup file: Select file ... Apply to: Operation: Output Progress label... Rótulo de progresso... model not saved yet The backup file cannot be the same as the input model! Extracting metadata to file `%1' Saving backup metadata to file `%1' Applying metadata from file `%1' Metadata processing aborted! Objects metadata file (*.omf);;All files (*.*) Handles the objects' fade out status in the metadata file. Objects' fade out status Save tags to the output file when extracting metadata. When loading the file, the tags are recreated and duplicated ones are ignored. Save textboxes to the output file when extracting metadata. When loading the file, the textboxes are recreated and duplicated ones are ignored. Handles the tables' and views' extended attributes display status in the metadata file. Tables' extended attributes display Save generic SQL objects to the output file when extracting metadata. When loading the file, the objects are recreated and duplicated ones are ignored. Generic SQL objects Extracts the objects' metadata from the loaded models and apply to the current focused model. A backup file can be specified to where the focused model's current metadata will be saved. &Extract and restore Extracts the objects metadata from one of the loaded models saving the info to a backup file. Extract &only Reads the objects' metadata from a previously saved backup file and apply to the current model. &Restore a backup file ModelDatabaseDiffForm Settings Connection: Conexão: Database: Ignores as many as possible errors on import step. This option generates an incomplete diff. Ignore import errors Clears the data of all tables which will have columns modified. This is useful to avoid errors related to type casting. <strong>WARNING:</strong> DO NOT use this option on production servers and always make a backup before use it. Import system (built-in) objects. Use this if the import step is returning errors related to missing objects. Import system objects Import objects created by extensions. Use this if the import step is returning errors even importing built in ones. Import extension objects For DROP command, the objects that depends on an object to be dropped will be deleted as well. For TRUNCATE command, tables that are linked to a table to be truncated will be truncate too. <strong>NOTE:</strong> this option can affect more objects than listed in the output or diff preview. Drop or truncate in cascade mode Permissions already set on database objects will be kept.The ones configured on the model will be applied to the database. Keep object's permissions Database cluster level objects like roles and tablespaces will not be dropped. Keep cluster objects Recreate only unmodifiable objects Instead of use an ALTER command to modify certain kind of objects a DROP and CREATE will be used in order to do a full modification. This option does not affects the database object. Force recreation of objects Ignores errors generated by duplicated objects when exporting the diff to database. Ignore duplicity errors Serial columns are converted to integer and having the default value changed to <strong>nextval(sequence)</strong> function call. By default, a new sequence is created for each serial column but checking this option sequences matching the name on column's default value will be reused and will not be dropped. Reuse sequences on serial columns No command to rename the destination database will be generated even the model's name differ from database name. Preserve database name Avoid the generation of DROP commands for objects that exists in database but not in the model. This is useful when diff a partial model against the complete database. Do not drop missing objects Diff mode Override the PostgreSQL version when generating the diff. The default is to use the same version as the input database. Use PostgreSQL: Compares the model and the input database storing the diff in a SQL file for later usage. Store in S&QL file File: Arquivo: Select output file ... Compares the model and the input database generating a diff and applying it directly to the latter. <strong>WARNING:</strong> this mode causes irreversible changes on the database and in case of failure the original structure is not restored, so make sure to have a backup before proceed. Appl&y on server Output Changes: Cancel Cancelar Progress label... Rótulo de progresso... Step label... <html><head/><body><p>Objects marked with an <span style=" font-weight:600;">ALTER</span> may not be effectively changed unless that the differences detected are in attributes that can be modified through ALTER commands otherwise no operation will be performed or, if the force recreation is checked, the object will be dropped and created again.</p></body></html> Objects to be created 0 Objects to be dropped Possible objects to be changed Ignored objects (system ones or with sql disabled) Diff Preview &Apply diff &Generate &Close &Fechar Waiting process to start... Confirmation Confirmação <strong>WARNING:</strong> The generated diff is ready to be exported! Once started this process will cause irreversible changes on the database. Do you really want to proceed? Apply diff Preview diff Diff process paused. Waiting user action... Saving diff to file <strong>%1</strong> Diff process sucessfully ended! No operations left. Operation cancelled by the user. Process aborted due to errors! -- SQL code purposely truncated at this point in demo version! -- No differences were detected between model and database. -- Error code <strong>%1</strong> found and ignored. Proceeding with export. Save diff as... SQL code (*.sql);;All files (*.*) Código SQL (*.sql);;Todos os Arquivos (*.*) Diff tool Generate diff code Source database Current model: (model) Compare to Diff Froce the generation of DROP commands for columns and constraints that exist in database but not in the model. This is useful when diff a partial model against the complete database and the user needs to drop columns and constraint but preserve the rest of the objects. Drop missing columns and constraints Truncate tables before alter columns Import && Export Import Export Exportar This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Ignore error codes model not saved yet (none) Step %1/%2: Importing database <strong>%3</strong>... Step %1/%2: Comparing <strong>%3</strong> and <strong>%4</strong>... Step %1/%2: Exporting diff to database <strong>%3</strong>... ModelExportForm File: Arquivo: Select target file Selecionar arquivo de destino ... PostgreSQL: PostgreSQL version in which the SQL code should be generated Versão do PostgreSQL no qual o código SQL deve ser gerado Show grid Mostrar grade Connection: Conexão: Ignore object duplicity Ignorar duplicidade de objetos Progress label... Rótulo de progresso... &Export &Exportar &Close &Fechar Initializing model export... Iniciando exportação do modelo... Saving file '%1' Salvando arquivo '%1' Exporting process sucessfuly ended! Processo de exportação finalizado com sucesso! Export model as... Exportar modelo como... Export model Settings Database server pgModeler ignores errors generated by duplicated objects and creates only that ones which does not exists in the database. This option may be used when an object was created after a previous model export. PostgreSQL version in which the SQL code should be generated. It is recommended to select this option only when the version of the DBMS, somehow, is not identifiable or if you need to generate a specific version of SQL code for test purposes. If <strong>DB</strong> is checked pgModeler will destroy the database if already exists on the server. When <strong>Objects</strong> is checked pgModeler will execute the DROP command attached to SQL-enabled objects. <strong>WARNING:</strong> this option leads to data loss so make sure to have a backup first. Drop: DB Ob&jects pgModeler will destroy the database if already exists on the server. Make sure to have a backup before use this option because all data will be lost. Graphics file Type: Tipo: Zoom: Show delimiters Exporting the model page by page will generate files with a <strong>_p[n]</strong> suffix where <strong>n</strong> is the page id. Check if the current user has write permission on output folder. Page by page SQL file Output Cancel Cancelar Error code <strong>%1</strong> found and ignored. Proceeding with export. Exporting process aborted! SQL script (*.sql);;All files (*.*) Portable Network Graphics (*.png);;All files (*.*) Scalable Vector Graphics (*.svg);;All files (*.*) Exporting process canceled by user! This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Ignore error codes I&mage (PNG) &Vectorial (SVG) ModelExportHelper Generating SQL code for PostgreSQL `%1' Output SQL file `%1' successfully written. Rendering objects to page %1/%2. Output image `%1' successfully written. Exporting model to SVG file. SVG representation of database model SVG file generated by pgModeler Output file `%1' successfully written. Starting export to DBMS. PostgreSQL version detection overridden. Using version `%1'. PostgreSQL `%1' server detected. Generating temporary names for database, roles and tablespaces. Enabling the SQL code for database `%1' to avoid errors. Ignoring object duplication errors. Ignoring the following error code(s): `%1'. Trying to drop database `%1'. Simulation mode activated. Creating object `%1' (%2) Creating database `%1' Connecting to database `%1' Generating SQL for `%1' objects... Destroying objects created on the server. Restoring original names of database, roles and tablespaces. Renaming `%1' (%2) to `%3' Dropping object `%1' (%2) Changing object `%1' (%2) Running auxiliary command. ModelFixForm Model file fix Fix model file <html><head/><body><p>[pgmodeler-cli not found error]</p></body></html> pgmodeler-cli: Browse for pgmodeler-cli tool ... The specified file is not the pgModeler command line tool (pgmodeler-cli). Input file: Output file: Fix tries: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Monospace'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Waiting process to start...</span></p></body></html> Select input file Select output file Load fixed model when finish In some cases the fix process will fail to restore all objects within the model demanding manual fixes by changing the file on a text editor. <strong>NOTE:</strong> relationships may lost their graphical configuration like custom points and line color. &Fix &Close &Fechar Waiting process to start... Could not locate <strong>%1</strong> tool on <strong>%2</strong>. The fix process can't continue! Please check pgModeler installation or try to manually specify the command below. pgModeler command line tool (%1) ModelNavigationWidget Form Formulário Previous model Ctrl+Left Ctrl+Esquerda Next model Ctrl+Right Ctrl+Direita Close model Fechar modelo ... Alt+C (model not saved yet) ModelObjectsWidget Model Objects Objetos do Modelo 1 Object Objeto Type Tipo Parent Object Objeto Pai Parent Type Tipo Pai Select All Selecionar Todos Clear All Desselecionar Todos Select Selecionar Cancel Cancelar Objects view configuration Configuração da visão de objetos ... Tree view Visão em árvore List view Visão em lista Expands all items Expandir todos os itens Collapses all items Recolher todos os itens New Novo Hide this widget ID Return Esc Filter: By ID Visible object types Model objects ModelOverviewWidget Model overview Visão geral do modelo Failed to generate the overview image. The requested size %1 x %2 was too big and there was not enough memory to allocate! ModelRestorationForm Model restoration Restauração de modelos &Restore &Restaurar &Cancel &Cancelar pgModeler was not closed properly in a previous execution and some models were still being edited. Click <strong>Restore</strong> to reopen the models or <strong>Cancel</strong> to abort the restoration. pgModeler will try to recover the selected models but will not destroy them in case of loading failure. This option serves as a last resort in order to try to recover the database model. Temporary models will last until the application is closed so the user must try to manually recover the files before exit pgModeler. Keep temporary models in case of restoration failure Database Banco de Dados File Arquivo Modified Size ModelValidationHelper There are pending errors! SQL validation will not be executed. Operation canceled by the user. ModelValidationWidget Form Formulário Hide this widget ... Enables the validation of SQL code in DBMS. This process requires the use of a pre-configured connection. SQL validation will occur only in the last step (when all objects were validated) or when there are no warnings. SQL Validation: Connection to be used in the SQL validation PostgreSQL version pgModeler will generate unique and temporary names for database, role and tablespace objects. This option avoids object duplication errors when running the SQL validation. Use unique temporary names for cluster level objects Clear validation results Clear Try to resolve the reported issues. Ctrl+S Change the creation order for two objects by swapping their ids Va&lidate Warnings: does not prevents model to be saved. 0 Errors: model will not be saved while there are validation errors. Cancel the SQL validation in progress. Cancel Cancelar Esc Try to apply a fix on the selected validation info. Options Autodetect The object <strong>%1</strong> <em>(%2)</em> [id: %3] is being referenced by <strong>%4</strong> object(s) before its creation. The object <strong>%1</strong> <em>(%2)</em> [id: %3]%4 is referencing columns created by <strong>%5</strong> relationship(s) but is created before them. The object <strong>%1</strong> <em>(%2)</em> has a name that conflicts with <strong>%3</strong> object's name(s). The relationship <strong>%1</strong> [id: %2] is in a permanent invalidation state and needs to be relocated. SQL validation failed due to error(s) below. <strong>NOTE:</strong><em> These errors does not invalidates the model but may affect operations like <strong>export</strong> and <strong>diff</strong>.</em> <strong>HINT:</strong> try to swap the relationship by another ones that somehow are linked to it through generated columns or constraints to solve this issue. Note that other objects may be lost in the swap process. <em>The above object was created by a relationship. Change the name pattern on it's generator relationship. Fix will not be applied!</em> Conflicting object: <strong>%1</strong> <em>(%2)</em>. Relationship: <strong>%1</strong> [id: %2]. Referrer object: <strong>%1</strong> <em>(%2)</em> [id: %3]. SQL validation not executed! No connection defined. Database model successfully validated. Running SQL commands on server... Processing object: %1 Apply fixes Swap ids The column <strong>%1</strong> on <strong>%2</strong> <em>(%3)</em> is referencing the geospatial data type <strong>%4</strong> but the <strong>postgis</strong> extension is not present in the model! <strong>HINT:</strong> Create the extension in the model or let it be created by applying the needed fixes. ModelWidget Copy Copiar Source code Código fonte Show object source code Mostra o código fonte do objeto Properties Propriedades Edit the object properties Edita as propriedades do objeto Protect Proteger Unprotect Desproteger Protects object(s) from modifications Protege objeto(s) contra modificações Delete Apagar Select all Selecionar todos Selects all the graphical objects in the model Seleciona todos os objetos gráficos no modelo Paste Colar Cut Recortar Add a new object in the model Adiciona um novo objeto no modelo Rename Renomear Quick rename the object Renomear rapidamente o objeto Move to schema Mover para o esquema Edit permissions Editar permissões Change owner Mudar proprietário Select children Selecionar filhos Loading database model Carregando modelo de banco de dados Saving database model Salvando modelo de banco de dados Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. Copiar também todas dependências dos objetos selecionados? Isso minimiza a quebra de referências quando os objetos copiados forem colados em outro modelo. Pasting objects... Colando objetos... Not all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! Nem todos objetos foram colados ao modelo devido a erros retornados durante o processo! Consulte a pilha de erros para mais detalhes! Do you really want to delete the selected object? Deseja realmente apagar o objeto selecionado? (no objects) (sem objetos) Constraints Restrições One to One (1-1) One to Many (1-n) Many to Many (n-n) Inheritance <strong>ATTENTION:</strong> The database model is protected! Operations that could modify it are disabled! Source Alt+S Space Del Del. cascade Shift+Del Ctrl+A Convert Ctrl+C Ctrl+V Ctrl+X Deps && Referrers New Novo Quick Quick action for the selected object F2 Set tag Ctrl+E Open relationship Custom SQL Alt+Q Convert to sequence Convert to serial Break line Remove points Enable SQL Disable SQL 90° (vertical) 90° (horizontal) 90° + 90° (vertical) 90° + 90° (horizontal) Zoom: %1% Do you really want to convert the relationship into an intermediate table? Do you want to %1 the selected schema's children too? protect unprotect Validating object: `%1' (%2) Generating XML for: `%1' (%2) Pasting object: `%1' (%2) <strong>CAUTION:</strong> You are about to delete objects in cascade mode which means more objects than the selected will be dropped too. Do you really want to proceed? <strong>CAUTION:</strong> Remove multiple objects at once can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? <strong>CAUTION:</strong> Remove a relationship can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? The cascade deletion found some problems when running! Some objects could not be deleted or registered in the operation's history! Please, refer to error stack for more details. Edit data Select tagged Select Selecionar Duplicate Ctrl+D Extended attributes Show Exibir Hide Jump to table Schemas rectangles Fade in/out Fade in Fade out Relationships Swap ids Edit the objects creation order by swapping their ids All objects Schemas Tables Tabelas Views Textboxes None ModelsDiffHelper Processing object `%1' (%2)... Skipping object `%1' (%2)... Processing diff infos... Processing `%1' info for object `%2' (%3)... No differences between the model and database. Preparing diff code... NewObjectOverlayWidget Form Formulário Tag Cast A Textbox Caixa de Texto Tablespace Espaço de Tabela Schema Esquema Language Linguagem Role Papel Event Trigger Domain Domínio Conversion Aggregate Collation Intercalação Table Tabela Type Tipo Op. Family Sequence Extension Function Função View Permissions Permissões Op. Class Operator Operador Constraint Restrição Column Coluna Index Índice Trigger Gatilho Rule Regra Many-to-many One-to-many One-to-one Inheritance Copy Copiar G K H J D E F L O U I R S Q T P M Y W 9 Z X C V B 1 2 3 5 4 0 Generic SQL Policy 8 NumberedTextEditor Upper case Lower case Ident right Ident left Load Carregar Load the object's source code from an external file Edit Editar Edit the source code in the preferred external editor Clear SQL file (*.sql);;All files (*.*) Load file The source editor `%1' is running on `pid: %2'. Could not start the source code editor application `%1'! Make to sure that the source editor path defined in the general settings points to a valid executable and the current user has permission to run the application. Error message returned: `%2' ObjectDepsRefsWidget Dependencies Dependências Object Objeto Type Tipo Parent Object Objeto Pai Parent Type Tipo Pai References Referências Object's dependencies & references ID Exclude indirect dependencies Include indirect references This object does not exists anymore. The dependencies and references listing are disabled. ObjectFinderWidget Form Formulário Pattern: Defines the search filter Filter Clears the search results Clear ... Hide this widget Regular Expression Exact Match Select All Clear All Case Sensitive ID Object Objeto Type Tipo Parent Object Objeto Pai Parent Type Tipo Pai Find Found <strong>%1</strong> object(s). No objects found. (Un)selects the graphical objects in the results grid Select Selecionar Fades outs all the graphical objects in the results grid (or those not listed). The current fade in/out state of all objects is modified. Fade out Listed Not listed ObjectRenameWidget Form Formulário .... to: para: Rename Renomear Cancel Cancelar ObjectSelectorWidget Form Formulário Clear field Limpar campo Select Object Selecionar Objeto Select %1 ObjectsTableWidget Form Formulário Add Item Adicionar Item Ins Remove Item Remover Item Del Update Item Atualizar Item Alt+R Remove All Shift+Del Duplicate item Ctrl+D Edit Item Editar Item Space Move Up Mover para cima Ctrl+Up Move Down Mover para baixo Ctrl+Down Move to start Mover para o início Ctrl+Home Move to end Ctrl+End, Ctrl+S Confirmation Confirmação Do you really want to remove the selected item? Do you really want to remove all the items? OperationList (invalid object) OperationListWidget Executed Operations Operações Executadas 1 Operations: Operações: 0 Position: Posição: Delete operation history Apagar histórico de operações Undo Desfazer Redo Refazer Object: %1 Objeto: %1 Name: %1 Nome: %1 created criado removed removido modified modificado moved movido Operation: %1 Operação: %1 Operation history exclusion Exclusão de histórico de operações Delete the executed operations history is an irreversible action, do you want to continue? Apagar o histórico de operações executadas é uma ação irreversível, deseja realmente prosseguir? Hide this widget ... OperatorClassWidget Default Class: Classe Padrão: Indexing: Indexação: Elements Elementos Operator Operador Function Função Storage Armazenamento Function: Função: Operator: Operador: Support/Strategy: Suporte/Estratégia: Storage Type Tipo de Armazenamento Object Objeto Type Tipo Support/Strategy Suporte/Estratégia Element Type: Tipo de Elemento: Op. Family: Família de Op.: Operator Family Família de Operadores OperatorFamilyWidget Indexing: Indexação: OperatorWidget HASHES Options: Opções: MERGES Arguments Argumentos Join: Junção: Right Argument Type Tipo Argumento Direita Left Argument Type Tipo Argumento Esquerda To create a unary operator it is necessary to specify as <strong><em>'any'</em></strong> one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator. Para criar um operador unário é necessário especificar como <strong><em>'any'</em></strong> um de seus argumentos. Adicionalmente, a função que define o operador deve possuir apenas um parâmetro e este, por sua vez, deve ter o tipo de dado igual ao tipo de dado do argumento do operador unário. Advanced Avançado Restrict: Restrito: Negator: Negador: Operator Func.: Fun. Operador: Commutator: ParameterWidget Default Value: Valor Padrão: Mode: Modo: IN OUT VARIADIC PermissionWidget Roles Papéis ID: Permissions Permissões Add Permission Adicionar Permissão Update Permission Atualizar Permissão Cancel Operation Cancelar Operação Privileges Privilégios Privilege Privilégio GRANT OPTION Id Disable SQL code Desabilitar código SQL Cascade Cascata Edit permissions Editar permissões &Grant Re&voke Code Preview Previsão de Código -- No permissions defined for the specified object! /* Could not generate the SQL code preview for permissions! Name Nome Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. PgModelerCLI Unrecognized option '%1'. Opção '%1' não reconehcida. Value not specified for option '%1'. Valor não specificado para a opção '%1'. Option '%1' does not accept values. Opção '%1' não aceita valores. Usage: pgmodeler-cli [OPTIONS] Uso: pgmodeler-cli [OPÇÕES] command line interface. interface da linha de comando. DBMS export options: Opções da exportação SGBD: Input file must be different from output! Arquivo de entrada deve ser diferente do de saída! Incomplete connection information! Informação de conexão incompleta! Starting model export... Iniciando exportação de modelo... General options: PNG and SVG export options: Miscellaneous options: There are no connections configured. Invalid zoom specified! Invalid action specified to update mime option! Starting model fixing... Starting mime update... Model successfully fixed! Extracting objects' XML... Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted! Recreating objects... ** Object(s) that couldn't fixed: WARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2) Database model files (.dbm) are already associated to pgModeler! There is no file association related to pgModeler and .dbm files! Mime database operation: %1 Can't erase the file %1! Check if the current user has permissions to delete it and if the file exists. Running update-mime-database command... Connection aliased as '%1' was not found in the configuration file. PostgreSQL Database Modeler Project - pgmodeler.io Copyright 2006-2018 Raphael A. Silva <raphael@pgmodeler.io> This CLI tool provides several operations over models and databases without the need to perform them in pgModeler's graphical interface. All available options are described below. %1, %2 [FILE] Input model file (.dbm). This is mandatory for fix, export operations. %1, %2 [DBNAME] Input database name. This is mandatory for import operation. %1, %2 [FILE] Output file. This is mandatory for fixing model or exporting to file, png or svg. %1, %2 Try to fix the structure of the input model file in order to make it loadable again. %1, %2 [NUMBER] Model fix tries. When reaching the maximum count the invalid objects will be discarded. %1, %2 Export the input model to a sql script file. %1, %2 Export the input model to a png image. %1, %2 Export the input model to a svg file. %1, %2 Export the input model directly to a PostgreSQL server. %1, %2 Import a database to an output file. %1, %2 Compares a model and a database or two databases generating the SQL script to synch the latter in relation to the first. %1, %2 Force the PostgreSQL version of generated SQL code. %1, %2 Silent execution. Only critical messages and errors are shown during process. %1, %2 Show this help menu. Connection options: %1, %2 List available connections in file %3. %1, %2 [ALIAS] Connection configuration alias to be used. %1, %2 [HOST] PostgreSQL host in which a task will operate. %1, %2 [PORT] PostgreSQL host listening port. %1, %2 [USER] PostgreSQL username. %1, %2 [PASSWORD] PostgreSQL user password. %1, %2 [DBNAME] Connection's initial database. %1, %2 Draws the grid in the exported image. %1, %2 Draws the page delimiters in the exported image. %1, %2 Each page will be exported in a separated png image. (Only for PNG images) %1, %2 [FACTOR] Applies a zoom (in percent) before export to png image. Accepted zoom interval: %3-%4 (Only for PNG images) %1, %2 Ignores errors related to duplicated objects that eventually exist in the server. %1, %2 [CODES] Ignores additional errors by their codes. A comma-separated list of alphanumeric codes should be provided. %1, %2 Drop the database before execute a export process. %1, %2 Runs the DROP commands attached to SQL-enabled objects. %1, %2 Simulates an export process by executing all steps but undoing any modification in the end. %1, %2 Generates temporary names for database, roles and tablespaces when in simulation mode. Database import options: %1, %2 Ignore all errors and try to create as many as possible objects. %1, %2 Import system built-in objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Import extension objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Run import in debug mode printing all queries executed in the server. Diff options: %1, %2 [DBNAME] The database used in the comparison. All the SQL code generated is applied to it. %1, %2 Save the generated diff code to output file. %1, %2 Apply the generated diff code on the database server. %1, %2 Don't preview the generated diff code when applying it to the server. %1, %2 Drop cluster level objects like roles and tablespaces. %1, %2 Revoke permissions already set on the database. New permissions configured in the input model are still applied. %1, %2 Drop missing objects. Generates DROP commands for objects that are present in the input model but not in the compared database. %1, %2 Force the drop of missing columns and constraints. Causes only columns and constraints to be dropped, other missing objects aren't removed. %1, %2 Rename the destination database when the names of the involved databases are different. %1, %2 Don't drop or truncate objects in cascade mode. %1, %2 Truncate tables prior to alter columns. Avoids errors related to type casting when the new type of a column isn't compatible to the old one. %1, %2 Don't reuse sequences on serial columns. Drop the old sequence assigned to a serial column and creates a new one. %1, %2 Don't force the recreation of objects. Avoids the usage of a DROP and CREATE commands to create a new version of the objects. %1, %2 Don't recreate the unmodifiable objects. These objects are the ones which can't be changed via ALTER command. %1, %2 [ACTION] Handles the file association to .dbm files. The ACTION can be [%3 | %4]. ** The diff process allows the usage of the following options related to import and export operations: * Export: * Import: ** When running the diff using two databases (%1 and %2) there's the need to specify two connections/aliases. If only one connection is set it will be used to import the input database as well to retrieve database used in the comparison. A second connection can be specified by appending a 1 on any connection configuration parameter listed above. Available connections (alias : connection string) No operation mode was specified! Export, fix model, import database, diff and update mime operations can't be used at the same time! Multiple export mode was specified! No input file was specified! No input database was specified! No output file was specified! No input file or database was specified! The input file and database can't be used at the same time! No database to be compared was specified! No diff action (save or apply) was specified! No output file for the diff code was specified! ** Error code `%1' found and ignored. Proceeding with export. ** Command: %1 Loading input file: %1 Fixed model file: %1 Export to PNG image: %1 Export to SVG file: %1 Export to SQL script file: %1 Export to DBMS: %1 Export successfully ended! Starting database import... Input database: %1 Saving the imported database to file... Import successfully ended! Starting diff process... Input model: %1 Compare to: %1 Loading input model... Importing the database `%1'... Comparing the generated models... No differences were detected. Saving diff to file `%1' ** WARNING: You are about to apply the generated diff code to the server. Data can be lost in the process! ** Proceed with the diff applying? (yes/no) > yes no Diff code not applied to the server. Applying diff to the database `%1'... Diff successfully ended! Mime database successfully updated! PgModelerPlugin Plugin Information Informação do Plugin Version: %1 Versão: %1 Author: %1 Autor: %1 PgModelerUiNS Do you want to apply the <strong>SQL %1 status</strong> to the object's references too? This will avoid problems when exporting or validating the model. disabling enabling PgSQLTypeWidget Form Formulário Data Type Tipo de Dado SRID: Variation: Variação: Z M Precision Precisão Spatial: Espacial: Dimension Dimensão Format: Formato: Timezone: Fuso horário: Type: Tipo: P: Length Comprimento L: Interval: Intervalo: [ ]: NONE PluginsConfigWidget Form Formulário Plug-ins root directory: Diretório raiz de plugins: Open in file manager Abrir gerenciador de arquivos Loaded plug-ins Plugins carregados Plugin Version Versão Library Biblioteca PolicyWidget Basics Command: Permissive Roles Papéis Expressions USING: CHECK: Name Nome Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. QObject new_database novo_banco_de_dados %1 (line: %2) %1 (linha: %2) Relationship %1_has_one_%2 %1_tem_um_%2 %1_has_many_%2 %1_tem_muitos_%2 many_%1_has_many_%2 muitos_%1_tem_muitos_%2 %1_inherits_%2 %1_herda_de_%2 %1_copies_%2 %1_copia_de_%2 RelationshipConfigWidget Form Formulário Connection Mode Connect FK to PK columns Connect tables' center points FK Settings && Patterns Foreign key settings Deferral: Postergação: Deferrable: Postergável: ON DELETE: ON UPDATE: Name patterns Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Foreign Key (Source): Relationship type: Pattern for columns generated based upon target table's pk (n-n). Column (Target): One to one (1:1) One to many (1:n) Many to many (n:n) Generalization Generalização Copy Copiar Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Column (Source): Pattern for foreign key generated based upon target table's pk (n-n). Foreign Key (Target): Pattern for unique key generated by the relationship. Unique Key Name: Pattern for primary key generated by identifier relationship. Primary Key Name: Primary Key Column: Default Padrão This mode renders the relationships in crow's foot notation which has a better semantics and readability. It also determines the optimal point where the relationship is connected on the tables' edges taking their position into account. Crow's foot notation This mode determines the optimal point where the relationship is connected on the tables' edges taking their position into account. It implies the usage of the classical ER notation. Connect tables' edges This mode is available only for <strong>one-to-one</strong>, <strong>one-to-many</strong> and <strong>fk relationships</strong> but provides a better semantics when linking tables by placing the lines on the exact point where the relationship occurs. It implies the usage of the classical ER notation. This mode is the classical one. It connects the relationship to tables through their central points. It implies the usage of the classical ER notation. RelationshipWidget General Geral One to one relationship Relacionamento de um para um One to many relationship Relacionamento de um para muitos 1-n Many to many relationship Relacionamento de muitos para muitos n-n Generalization relationship (inheritance) Relacionamento de generalização (herança) Dependency / Copy relationship Relacionamento de Dependência / Cópia dep Relationship generated via foreign key Relacionamento gerado via chave estrangeira fk Identifier Identificador Table 1: Tabela 1: Table 2: Tabela 2: Cardinality: Cardinalidade: [SRC] is required [SRC] é requerido [DST] is required [DST] é requerido Name of the table generated from many to many relationship Nome da tabela gerada pelo relacionamento muitos para muitos Deferrable: Postergável: Deferral: Postergação: Attributes Atributos Constraints Restrições Primary key Chave primária Advanced Avançado Attribute Atributo Type Tipo Constraint Restrição Name Nome This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables. Esta aba avançada mostra os objetos (colunas ou tabela) auto criados pela conexão do relacionamento, bem como as chaves estrangeiras que representam a ligação entre as tabelas participantes. is required é requerido Reference Table: Tabela Referência: Receiver Table: Tabela Receptora: Copy Options Opções de Cópia INDEXES COMMENTS INCLUDING DEFAULTS CONSTRAINTS Use defaults Usar padrões ALL STORAGE Name Patterns Use the values defined on settings dialogs for the fields below Use global settings for these fields Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Column (Source): Pattern for columns generated based upon target table's pk (n-n). Column (Target): Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Foreign Key (Source): Pattern for foreign key generated based upon target table's pk (n-n). Foreign Key (Target): Pattern for primary key generated by identifier relationship. Primary Key Name: Pattern for unique key generated by the relationship. Unique Key Name: Primay Key Column: Gen. Table Name: Rel. Type: Foreign key Settings ON DELETE: ON UPDATE: &1-1 &gen The receiver's primary key will be composed by the generated foreign key columns. Instead of create a multi-valued primary key with the generated foreign keys columns a single column is created and used as primary key. Single PK column Custom Color: E&XCLUDING Use the special primary key if you want to include a primary key containing generated columns to the receiver table. <strong>Important:</strong> if this is a new relationship there is a need to finish its creation and reopen this dialog to create the special primary key. Available tokens to define name patterns:<br/> <strong>%1</strong> = Reference (source) primary key column name. <em>(Ignored on constraint patterns)</em><br/> <strong>%2</strong> = Reference (source) table name.<br/> <strong>%3</strong> = Receiver (destination) table name.<br/> <strong>%4</strong> = Generated table name. <em>(Only for n:n relationships)</em> Default Padrão Referer View: Referer view references one or more columns of a table to construct it's own columns. Referenced table has its columns referenced by a view in order to construct the columns of this latter. Referer Table: Referer table references one or more columns of a table through foreign keys. This is the (n) side of relationship. Referenced table has its columns referenced by a table's foreign key. This is the (1) side of relationship. Referenced Table: Tab. Referenciada: Reference table has the columns from its primary key will copied to the receiver table in order to represent the linking between them. This is the (1) side of relationship. Receiver (or referer) table will receive the generated columns and the foreign key in order to represent the linking between them. This is the (n) side of relationship. In many-to-many relationships both tables are used as reference to generate the table that represents the linking. Columns from both tables are copied to the resultant table and two foreign keys are created as well in order to reference each participant table. ResultSetModel [binary data] RoleWidget Password: Senha: Connections: Conexões: Attributes Atributos Superuser Superusuário Members Membros Member of Membro de Members (Admin.) Membros (Admin.) Role Papel Validity Validade Encrypted Encriptado yyyy-MMM-dd hh:mm:ss Assigning <strong><em>-1</em></strong> to <strong><em>Connections</em></strong> creates a role without connection limit.<br/> Unchecking <strong><em>Validity</em></strong> creates an role that never expires. Inherit permissions Can create database Bypass RLS Can use replication Can login Can create role RuleWidget Event: Evento: Execution Type: Tipo Execução: Conditional Expr.: Expr. Condicional: SQL Command: Comando SQL: SQL command Comando SQL To create a rule that does not perform any action (<strong>DO NOTHING</strong>) simply do not specify commands in the SQL commands table. Para criar uma regra que não execute ação alguma (<strong>DO NOTHING</strong>) basta não especificar comandos na tabela de comandos SQL. Commands SQLExecutionWidget Form Formulário Save SQL commands Search in SQL code Alt+F Run the specified SQL command Run SQL F6 Clear sql input field and results Clear All Export results to a CSV file Snippe&ts E&xport Toggles the output pane &Output Alt+O Results ... Messages History SQL file (*.sql);;All files (*.*) [binary data] No results retrieved or changes done due to the error above. Messages (%1) Results (%1) Rows affected Rows retrieved Load SQL commands Save CSV file Comma-separated values file (*.csv);;All files (*.*) The SQL input field and the results grid will be cleared! Want to proceed? Copy selection Clear history Close the current SQL script SQL script currently handled (not saved) Handle external SQL script &Script Fi&nd Alt+T Alt+X Current working database Load Carregar Save Salvar Save as Salvar como [%1]: SQL command successfully executed in <em><strong>%2</strong></em>. <em>%3 <strong>%4</strong></em> Plain format CVS format This action will wipe out all the SQL commands history for all connections! Do you really want to proceed? Save history Reload history Find in history Hide find tool This action will wipe out all the SQL commands history for the current connection! Do you really want to proceed? SQLToolWidget Form Formulário Database explorer Disconnect from all databases ... Update the database list Toggle the object's attributes grid Attributes Atributos Alt+R Toggle the display of source code pane Source code SQL execution Warning <strong>ATTENTION:</strong> Disconnect from all databases will close any opened tab in this view! Do you really want to proceed? SceneInfoWidget Form Formulário Current position of the mouse in the canvas - Current zoom factor Currently selected object(s) Dimensions of the selected object(s) No selection N/A Sel. objects: %1 SchemaWidget Show rectangle Mostrar retângulo Fill color: Cor de preenchimento: SequenceWidget Cyclic: Cíclica: Start: Início: Maximum: Máximo: Minimum: Mínimo: Increment: Incremento: Cache: Cache: Owner Col.: Defualt values: User defined SnippetsConfigWidget Form Formulário Label: Applies to: ID: Create new connection Criar nova conexão Cancel edition Cancelar edição Edit selected connection Editar conexão selecionada Delete selected connection Remove All Shift+Del Snippets: Parse the snippet in order to check if there are syntax errors. Parse Add Adicionar Update Atualizar Parsable or dynamic snippets are written in the <strong>schema micro language</strong> syntax. When using a parsable snippet the attributes surrounded in <strong>{}</strong> will be replaced by the selected object's matching attributes. Parsable When handling parsable snippets empty attributes will be replaced by a value in the format <strong>{attribute}</strong>. Note that this option can affect the semantics of the resulting snippet. Placeholders Filter: General purpose All snippets /* Error parsing the snippet '%1': %2 */ Duplicated snippet id <strong>%1</strong> detected. Please, specify a different one! Invalid ID pattern detected <strong>%1</strong>. This one must start with at leat one letter and be composed by letters, numbers and/or underscore! Empty label for snippet <strong>%1</strong>. Please, specify a value for it! Empty code for snippet <strong>%1</strong>. Please, specify a value for it! The dynamic snippet contains syntax error(s). Additional info: <br/><em>%1</em> Do you really want to remove all snippets? No syntax errors found in the snippet. General Geral SourceCodeWidget Version: Versão: PostgreSQL iconecodigo íconecódigo SQL XML Source code visualization Visualização de código fonte Generating source code... Gerando código fonte... -- SQL code unavailable for this type of object -- -- Código SQL não disponível para este tipo de objeto. -- Code display: Original Original + depedencies' SQL Original + children's SQL Save the SQL code to a file. Save SQL <strong>Original:</strong> displays only the original object's SQL code.<br/><br/> <strong>Dependencies:</strong> displays the original code including all dependencies needed to properly create the selected object.<br/><br/> <strong>Children:</strong> displays the original code including all object's children SQL code. This option is used only by schemas, tables and views. Save SQL code as... SQL code (*.sql);;All files (*.*) Código SQL (*.sql);;Todos os Arquivos (*.*) -- NOTE: the code below contains the SQL for the selected object -- as well for its dependencies and children (if applicable). -- -- This feature is only a convinience in order to permit you to test -- the whole object's SQL definition at once. -- -- When exporting or generating the SQL for the whole database model -- all objects will be placed at their original positions. -- SQL code purposely truncated at this point in demo version! <!-- XML code preview disabled in demonstration version --> SwapObjectsIdsWidget Change objects creation order Create: ID: Before: Swap the values of the fields Swap values Change the objects creation order is an irreversible operation and cause the operations history to be automatically erased. Note that the creation order configured in this form is not definitive and may change after a model validation. Swap the object ids changing their creation order Swap ids Filter: ID Object Objeto Type Tipo Parent Object Objeto Pai Parent Type Tipo Pai Table new_table nova_tabela In demonstration version tables can have only `%1' instances of each child object type or ancestor tables! You've reach this limit for the type: `%2' TableDataWidget Edit table data Add empty rows Ins Add an empty column Remove all rows from the grid preserving columns Shift+Del Delete the selected rows Del Duplicate the selected rows Ctrl+D Delete the selected columns Remove all columns (and rows) from the grid Ctrl+Shift+Del Delete columns is an irreversible action! Do you really want to proceed? Remove all rows is an irreversible action! Do you really want to proceed? Remove all columns is an irreversible action! Do you really want to proceed? Unknown column Duplicated column Copy items on the grid Copy Copiar Add row Delete column Paste items on the grid Paste Colar Ctrl+V Fills the grid using a CSV file <html><head/><body><p>Some invalid or duplicated columns were detected. In order to solve this issue double-click the header of the highlighted ones in order to define the correct name in which the data belongs to or delete the entire column. Note that these columns are completely ignored when generating the <span style=" font-weight:600;">INSERT</span> commands.</p></body></html> Add column Duplicate rows Change the values of all selected cells at once Bulk data edit Ctrl+E Delete all columns Delete rows <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> Delete all rows TableObjectView Relationship: %1 TableWidget Name Nome Type Tipo Default Value Valor Padrão ON DELETE ON UPDATE Refer. Table Tab. Refer. Firing Disparo Events Eventos Execution Execução Event Evento Indexing Indexação Schema Esquema Parent Pai Copy Copiar Options Tag: With OID Generate ALTER for columns/constraints Unlogged &Columns Co&nstraints Tri&ggers &Rules &Indexes &Tables Edit data Define initial data for the table Enable row level security Force RLS for owner &Policies PK Attribute(s) It is not possible to mark a column as primary key when the table already has a primary key which was created by a relationship! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. It is not possible to mark a column created by a relationship as primary key! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. Command Permissive USING expression CHECK expression Roles Papéis Yes Sim No Não TablespaceWidget Form Formulário Directory: Diretório: TagWidget Colors Body: Title: Schema name: Table name: Extended body: TaskProgressWidget Executing tasks Executando tarefas Waiting task to start... Aguardando a tarefa iniciar... TextboxWidget Bold Negrito Italic Itálico Underline Sublinhado Select text color Selecionar cor de texto Font: Fonte: Text pt Color: TriggerWidget Event: Evento: INSERT DELETE UPDATE TRUNCATE Deferrable: Postergável: Columns Colunas Column: Coluna: Arguments Argumentos Argument: Argumento: Function: Função: Column Coluna Type Tipo Constraint Restrição FOR EACH ROW Refer. Table: Tab. Refer.: Condition: Condição: Options: Opções: Excution: Execução: TypeWidget Configuration: Configuração: Base Type Tipo Base Enumeration Enumeração Enumerations Enumerações Enumeration: Enumeração: Attributes Atributos Internal Length: Comp. Interno: Storage: Armazenamento: Category: Categoria: Delimiter: Delimitador: Alignment: Alinhamento: char smallint integer double precision Default Value: Valor Padrão: Functions Funções INPUT: OUTPUT: RECV: SEND: TPMOD_IN: TPMOD_OUT: ANALYZE: Like Type Tipo Como Element Type Tipo Elemento Name Nome Type Tipo The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table> As funções a serem atribuídas ao tipo devem ser escritas em linguagem C, e possuírem respectivamente as seguintes assinaturas:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any funcao(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring funcao(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byte funcao(any)</em></td> <td><strong>RECV:</strong> <em>any funcao(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer funcao(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring funcao(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean funcao(internal)</em></td> <tr> </table> Range Extensão Options: Opções: By value Por valor Preferred Preferido Collatable Intercalável Name: Nome: Collation: Intercalação: Subtype Diff Func.: Fun. Dif. Subtipo: Operator Class: Classe de Operadores: Canonical Func.: Fun. Canônica: Subtype Subtipo Collation Intercalação The functions to be assigned to a range type should have the following signatures:<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em> As funções para serem atribuídas a um tipo extensão devem ter as seguintes assinaturas:<br/><br/><strong>Canônica:</strong> <em>any funcao(any)</em> <br/><strong>Dif. Subtipo:</strong> <em>double precision funcao(subtipo, subtipo)</em> Co&mposite UpdateNotifierWidget Update Notifier Update found! Hide this widget ... Released in: mmm dd, yyyy New version: 0.0.0 Changelog Redirects to purchase page. Get binary package Redirects to GitHub source repository. Get source code Failed to check updates No updates found You are running the most recent pgModeler version! No update needed. The update notifier failed to check for new versions! A HTTP status code was returned: <strong>%1</strong> The update notifier failed to check for new versions! Please, verify your internet connectivity and try again! Connection error returned: <em>%1</em> - <strong>%2</strong>. ViewWidget References Referências Column Coluna Expression Expressão Used in: Usado em: Table: Tabela: Table Alias: Apelido de Tabela: Column: Coluna: Column Alias: Apelido de Coluna: Expression: Expressão: Expression Alias: Apelido de Expressão: Code Preview Previsão de Código Col./Expr. Alias Apelido Alias Col. Apelido Col. Reference Type: Tipo Referência: View Definition Definição da Visão Triggers Gatilhos Rules Regras Table Expression Expressão de Tabela Name Nome Refer. Table Tab. Refer. Firing Disparo Events Eventos Execution Execução Event Evento /* Could not generate the SQL code. Make sure all attributes are correctly filled! /* Não foi possível gerar o código SQL. Certifique-se de que todos os atributos estejam corretamente preenchidos! Options Tag: Mode: Modo: Ordinary Recursi&ve &Materialized With no data The element will be used as part of the SELECT statement to retrieve columns or expressions that will compose the view's columns SELECT ... The element will be used as part of the WHERE clause in form of conditional expression WHERE ... The element is used in the FROM portion of the command in order to reference tables or construct JOIN statements FROM ... The element's expression is used exclusively as the view's definition The element will be appended to the very end of the view's definition. This is useful when using GROUP BY/HAVING statements End expression Indexes Índices Flags: SF FW AW EX VD To reference all columns in a table (*) just do not fill the field <strong>Column</strong>, this is the same as write <em><strong>[schema].[table].*</strong></em> Indexing Indexação WelcomeWidget Form Formulário New model Open model Sample models Recent models Last session pgmodeler-0.9.4/assets/lang/zh_CN.qm000066400000000000000000002151301416010000600172530ustar00rootroot00000000000000nG'GII@QIByJ8OJJcJJMzaMzƼMz MzPS8PShPS TXT!TxTX\ Yqc]0_H_Bjq>t6$-$yZyyͷyy%S֍ ֍$֍6w֍< ֍E8֍FU֍n"֍|֍֍w֍c֍V֍֍֍5֍5֍ȭ֍:֍`֍i֍ڏ֍֍ݠ֍֍85t65tB5tٜH5=6H5DH5p*H5H5H5bH5H5H5%%%G%/%gB-{:zeWe2e@ eHdeqe6eee3eeԙeee|eį~  ytq9**W*%+g336v9;H5yT:ToTZ)TZTTE TVV6VWzYb>YbYbYbYu $YXZg6ZgZg)Zy%Zy%?Zy%Z,\\ʀ\Z.eA o-2oERtlkh^yxQaLoϋys|EvCᬱ5M=MMB9z <pu$!ayY$22uy8RYC^j^laQee$x{ywzQy|{yt^sdŀyvƠkcI j  QfD ?J O2 Z4؎S:eJ.lJZ(DQKXkyvaf>RxLDGXEv/i%!0w9w9%2w9\676@6&66^6VbR _nßs5s ~Ŗ*sŖQ**3A?Вq nًo1S[ys`<n3AP 8 6 C1[E/)h)h&3?UsVZywt1Tt1)`mi$UBՆ)ܸZh;#&Ìղ^:^|<MΔ$ΔΔWΔ ;yr(y` ˧&Ѥ(@N` $` Blu ^u I@IdIIIIIIb<><>0o<>7t<>n<>G<>d<>\,uZ* ɓ%H}ODu7'  8 9,GG~W:W47r7#Rl}M|ezHzzų&ų9v*v-АG;АG}АG+q  b3ZzQzt} $ h|VД8‰kʔF,N<,Nk/3 (2B~3H^3H3H3HE9'!d:ʔFI/UXAY Y Y &Y Y chlZVnLZnLZCzp3s̄!W{y{OH5>NH5H5v z j31V1>161++ +҅Z{yz29Tz5XQd"g3ƨ-ƨ@<ƨ޺gsqeѵuѵuŵp1K% T_-. <9V#CQYCZ>_pNgxwo dwo|M!KZjAiAH H/t/U!ltl;ȐȐ=iȐG'Ȑ]Ȑ!ɓ?`ɓn֣ے$ےeے6:8;Ȕ./N\1,23Ww5jO?:l,:;x=;BC+^G4GcJj0}w|6w|"ap'7ړ2fsBoI` CI` ` ` X` ` x^* rLf1e!k4 j;}Y~Sa'~+E+JG+J@/y@q/y֞8&9pU;zʴ5#Q.;Q.DQ.F"Q.ώnLO:۲ʁjL8I,nAsAAsDLAsnTAsAsAs(As_As@# TYz $R #i - %> - % - %ڽ 0M C_k Oy Oy; b+e e!g h> kJy vm |~3 v  9 C  k TO E Ee ʮ NJ19 NJ NJJ r ze _!Sj Z) j$פ ~ #N )`=_ *paf 6 G M(2# M(# M(M MJq T Z# ZB[ _1Q ci*` ci*z c0 c9 c cZ0 cZ7 cZE cZ cZ d.V e7; e g@ iH o^Ņ r3) r3 I I I%j I I I Q[ )Y y >, > _Cf ?* ' -D t:d tB- t tЫ  :+ z @  J Lu Rzq1 t t ɗ . δ δ v v ϩ8 ϩ8 ꚅd NR /*O $~` q Vzz ye*< ;l O~ \ hx* m{h wG { {5 {j h*      2AQ 9 Ϟ ݒ+ ݒG  > ` 6 dc P b Jg ( &m ͘1S ͠+ ͠u є% ѩU" ZA Z Z& 掺o J3 ^ 5 o K ,<; ,<E -8 - =h =\o @lO Jkcf J J  ܊0 D y Y #! QU $ C %ґ Ǩ zD AI ! 6; .*p D+^Ι V Me [*Y ] } i8: ^ ^ ^ ^ 8Ac /_% %h <& <+ <| < <M < إӒ @ ? )_ A UJ$JD{JJ!<*'Aa(q5JG3 KOlLNT-WGdi j[rwhsAN>{uiun[yw@xjgb 39 35 35  zZRi!J45A555Ps4&8I9tE`~ajMmQwvpmU$Nʯ`toPxY*( / 0^+1Lkys֣\֣\֣\v֣\c J]5w if 0.0.00.0.0 AboutWidgetQsN pgModelerAbout pgModeler AboutWidget$PostgreSQL epcn^^j!]QwPostgreSQL Database Modeler AboutWidgetlZTQepcS|{W <em><strong>typeA</strong></em> T <em><strong>typeB</strong></em> O\N:Qe|{W ^vN|{Wr`N: <em><strong>state_type</strong></em>, Qep_Ř{u_YN R<br/><br/> <strong> &nbsp;&nbsp;&nbsp; "g~YtQep</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp; " n!YtQep</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em>%An aggregate function that accepts the types typeA and typeB as input types and which type of state is state_type, must obey the following rules:

   • Final Function: void final_function(state_type)
   • Transition Function: state_type transition_function(state_type, typeA, typeB)AggregateWidgetg~YtQepFinal Function:AggregateWidgetQepr`Function StateAggregateWidgetQepQeFuntion InputsAggregateWidget Qeepcn|{WInput Data TypeAggregateWidget c^dO\{&Sort Operator:AggregateWidget r`epcn|{WState Data TypeAggregateWidgetpt ptAppearanceConfigWidget|OSBoldAppearanceConfigWidgetrColors:AppearanceConfigWidgetR(FK)RT yColumn (fk): Column nameAppearanceConfigWidgetR(FK)cϏ{&Column (fk): DescriptorAppearanceConfigWidgetR(NN)RT yColumn (nn): Column nameAppearanceConfigWidgetR(NN)cϏ{&Column (nn): DescriptorAppearanceConfigWidgetR(PK)RT yColumn (pk): Column nameAppearanceConfigWidgetR(PK)cϏ{&Column (pk): DescriptorAppearanceConfigWidgetR(UQ)RT yColumn (uq): Column nameAppearanceConfigWidgetR(UQ)cϏ{&Column (uq): DescriptorAppearanceConfigWidget RRT yColumn: Column nameAppearanceConfigWidget RcϏ{&Column: DescriptorAppearanceConfigWidgetRST+W(/~bQs|,Column: Included / Inherited by relationshipAppearanceConfigWidget RQObColumn: ProtectedAppearanceConfigWidgetQC} Element:AppearanceConfigWidget[WOSFont:AppearanceConfigWidgetFormFormAppearanceConfigWidgetQh\@~g_cϏ{&Global: Constraints descriptorAppearanceConfigWidgetQh\@[WOSh7_Global: Font styleAppearanceConfigWidget Qh\@sGlobal: Lock arcAppearanceConfigWidget Qh\@OSGlobal: Lock bodyAppearanceConfigWidgetQh\@[a bGlobal: Object selectionAppearanceConfigWidgetQh\@[a|{WGlobal: Objects typeAppearanceConfigWidgetQh\@OMncy:hFGlobal: Position hint boxAppearanceConfigWidgetQh\@OMncy:Q[Global: Position hint textAppearanceConfigWidget }"_cϏ{&Index: DescriptorAppearanceConfigWidget }"_T y Index: NameAppearanceConfigWidgeteOSItalicAppearanceConfigWidgetQs|\^`'cϏ{&"Relationship: Attribute descriptorAppearanceConfigWidgetQs|\^`'Q[Relationship: Attribute textAppearanceConfigWidget Qs|cϏ{&Relationship: DescriptorAppearanceConfigWidget Qs|h{~hFRelationship: Label boxAppearanceConfigWidgetQs|h{~Q[Relationship: Label textAppearanceConfigWidget RcϏ{&Rule: DescriptorAppearanceConfigWidget RT y Rule: NameAppearanceConfigWidgethRhFTable: Columns boxAppearanceConfigWidgethbi\U\^`'hFTable: Extended attributes boxAppearanceConfigWidget hj!_T yTable: Schema nameAppearanceConfigWidget hhT yTable: Table nameAppearanceConfigWidget hhhFTable: Title boxAppearanceConfigWidget eg,hFhFOS Textbox: BodyAppearanceConfigWidgetSVhcϏ{&Trigger: DescriptorAppearanceConfigWidget SVhT y Trigger: NameAppearanceConfigWidgetN R~ UnderlineAppearanceConfigWidgetV_u(cϏ{&View: Reference descriptorAppearanceConfigWidget V_u(RView: Referenced columnAppearanceConfigWidget V_u(hView: Referenced tableAppearanceConfigWidget V_u(hFView: References boxAppearanceConfigWidgetVj!_T yView: Schema nameAppearanceConfigWidgetVh/RR+T View: Table / columns aliasAppearanceConfigWidget VhhFView: Title boxAppearanceConfigWidgetVVT yView: View nameAppearanceConfigWidgetcUcIR0g*w_^8Unknown exception caught! Application ^u((&A)&ApplyBaseForm Sm(&C)&CancelBaseForm xn[(&O)&OkBaseForm DialogDialogBaseFormZT Aggregate BaseObject|{WlcbCast BaseObjectRColumn BaseObject~g_ Constraint BaseObjectxlcb Conversion BaseObjectepcn^Database BaseObjectWDomain BaseObjectQepFunction BaseObject}"_Index BaseObjectLanguage BaseObjectdO\{&Operator BaseObjectdO\{&|{Operator Class BaseObjectdO\{&eOperator Family BaseObjectSep Parameter BaseObjectgCP Permission BaseObject҂rRole BaseObjectRRule BaseObjectj!_Schema BaseObject^RSequence BaseObjecthTable BaseObjecthzz Tablespace BaseObjecteg,hFTextbox BaseObjectSVhTrigger BaseObject|{WType BaseObjectVView BaseObjectYlComment:BaseObjectWidget[avgCPEdit object's permissionsBaseObjectWidgetgCPEdit permissionsBaseObjectWidgetIDID:BaseObjectWidgetT yName:BaseObjectWidgetb@g Owner:BaseObjectWidgetj!_Schema:BaseObjectWidgethzz Tablespace:BaseObjectWidget,kd[aYNSObr` el[[^u(NOUOe90FThis object is protected thus no change in form will be applied to it.BaseObjectWidgetP<Value(s)BaseObjectWidgetrHg,VersionBaseObjectWidget iconeiconeBaseObjectWidget Sm(&C)&Cancel BugReportFormR^Create BugReportForm4epcn^j!W (*.dbm);; b@g eN (*.*)'Database model (*.dbm);;All files (*.*) BugReportFormbS_j!W Load model BugReportFormbTJReport BugReportForm_:R6lcb Assignment CastWidgetQe / QInput / Output CastWidget SYepcn|{WSource data type CastWidget vhepcn|{WTarget data type CastWidget4\<em><strong>|{W A</strong></em>lcbb <em><strong>|{W B</strong></em>vQep{~T <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>.The function to be assigned to a cast from typeA to typeB must have the following signature: typeB function(typeA, integer, boolean). CastWidgetx Encoding:CollationWidgetLC_COLLATE: LC_COLLATE:CollationWidgetLC_CTYPE: LC_CTYPE:CollationWidget Alt+RAlt+RColorPickerWidgetFormFormColorPickerWidget؋P<Default Value: ColumnWidget ^u((&A)&ApplyConfigurationForm Sm(&C)&CancelConfigurationForm0_SRMRb@PZvOe9\ON"Y1`bY R0؋nTtAny modification made until now in the current section will be lost! Do you really want to restore default settings?ConfigurationForm؋DefaultsConfigurationForm^8GeneralConfigurationFormcNPlug-insConfigurationFormpgModeler MnpgModeler ConfigurationConfigurationFormCAAC verificationConnectionsConfigWidgete^AddConnectionsConfigWidgetQAAllowConnectionsConfigWidgetSmCancel editionConnectionsConfigWidget [b7zNfClient Certificate:ConnectionsConfigWidget [b7z[Ɣ Client Key:ConnectionsConfigWidget cR+T Connection Alias:ConnectionsConfigWidget cepcn^Connection DB:ConnectionsConfigWidgetc Connections:ConnectionsConfigWidget ^zecCreate new connectionConnectionsConfigWidgetR d N-vcDelete selected connectionConnectionsConfigWidgetyu(DisableConnectionsConfigWidget N-vcEdit selected connectionConnectionsConfigWidget[QExportConnectionsConfigWidget_:R6 GSSAPI Force GSSAPIConnectionsConfigWidgetSTFull verificationConnectionsConfigWidget^8GeneralConnectionsConfigWidget N;g:/zS Host/Port:ConnectionsConfigWidget[x Password:ConnectionsConfigWidget_ŗRequireConnectionsConfigWidget ]T NfRevoked Certs.:ConnectionsConfigWidgeth9NfRoot Certificate:ConnectionsConfigWidgetSSL j!_ SSL Mode:ConnectionsConfigWidgetbRSuccessConnectionsConfigWidgetmKTestConnectionsConfigWidgeteTimeout:ConnectionsConfigWidgetfeUpdateConnectionsConfigWidgetu(b7User:ConnectionsConfigWidgety(s) second(s)ConnectionsConfigWidget8~/.postgresql/postgresql.crt~/.postgresql/postgresql.crtConnectionsConfigWidget8~/.postgresql/postgresql.key~/.postgresql/postgresql.keyConnectionsConfigWidget,~/.postgresql/root.crl~/.postgresql/root.crlConnectionsConfigWidget,~/.postgresql/root.crt~/.postgresql/root.crtConnectionsConfigWidgetRColumnConstraintWidgetRColumn:ConstraintWidgetRColumnsConstraintWidget ~g_|{WConstraint Type:ConstraintWidgetS^: Deferrable:ConstraintWidget^ Deferral:ConstraintWidget XkQEV[P Fill Factor:ConstraintWidgetON DELETE ON DELETE:ConstraintWidgetON UPDATE ON UPDATE:ConstraintWidget_u(RReferenced ColumnsConstraintWidgethTable:ConstraintWidget|{WTypeConstraintWidget ؋lcbDefault Conversion:ConversionWidget SYxSource Encoding:ConversionWidget vhxTarget Encoding:ConversionWidgetxlcbvQep{~T <em>void function(integer, integer, cstring, internal, integer)</em>0The function to be assigned to an encoding conversion must have the following signature: void function(integer, integer, cstring, internal, integer).ConversionWidget4epcn^j!W (*.dbm);; b@g eN (*.*)'Database model (*.dbm);;All files (*.*)CrashHandlerForm"||pgModeler ])nNOops! pgModeler just crashed!CrashHandlerFormO[Xj!W Save modelCrashHandlerForm Xhߎ*O`o Stack traceCrashHandlerFormFormForm CsvLoadWidgetbS_Load CsvLoadWidget SpaceSpace CsvLoadWidget Qs(&C)&CloseDataManipulationFormmRyvAdd ItemDataManipulationFormRColumnDataManipulationFormRColumn:DataManipulationForm Ctrl+SCtrl+SDataManipulationForm Ctrl+ZCtrl+ZDataManipulationFormDelDelDataManipulationFormF5F5DataManipulationFormInsInsDataManipulationFormydyv Remove ItemDataManipulationFormj!_Schema:DataManipulationFormhTable:DataManipulationFormSep ArgumentsDatabaseExplorerWidget\^`' AttributeDatabaseExplorerWidgetRColumnsDatabaseExplorerWidget~g_ ConstraintDatabaseExplorerWidget؋DefaultDatabaseExplorerWidget[NI DefinitionDatabaseExplorerWidget~^ DimensionDatabaseExplorerWidgetQC} ElementDatabaseExplorerWidgetgN> EnumerationsDatabaseExplorerWidgetNNEventDatabaseExplorerWidgeth_ ExpressionDatabaseExplorerWidgetSFiringDatabaseExplorerWidgetFormFormDatabaseExplorerWidgetQepFunctionDatabaseExplorerWidgetLanguageDatabaseExplorerWidget^LengthDatabaseExplorerWidget R`c^LibraryDatabaseExplorerWidgetT yNameDatabaseExplorerWidgetdO\{&OperatorDatabaseExplorerWidgetdO\{& OperatorsDatabaseExplorerWidgetgCP PermissionsDatabaseExplorerWidget|^ PrecisionDatabaseExplorerWidgetT}T RenameDatabaseExplorerWidget҂rRolesDatabaseExplorerWidgetj!_SchemaDatabaseExplorerWidgetnNx Source codeDatabaseExplorerWidget[XPStorageDatabaseExplorerWidget~u(b7 SuperuserDatabaseExplorerWidgethTableDatabaseExplorerWidgethzz TablespaceDatabaseExplorerWidget|{WTypeDatabaseExplorerWidgetfeUpdateDatabaseExplorerWidgetTl`'ValidityDatabaseExplorerWidget Qs(&C)&CloseDatabaseImportFormSmCancelDatabaseImportFormc Connection:DatabaseImportFormepcn^DatabaseDatabaseImportFormYth{~...Progress label...DatabaseImportForm\^`' AttributesDatabaseWidgetc Connections:DatabaseWidget؋DefaultDatabaseWidgetx Encoding:DatabaseWidgetLC_COLLATE: LC_COLLATE:DatabaseWidgetLC_CTYPE: LC_CTYPE:DatabaseWidget j!WO\ Model Author:DatabaseWidget yOptions:DatabaseWidgetb@g Owner:DatabaseWidgetj!_Schema:DatabaseWidgethzz Tablespace:DatabaseWidget epcn^j!g Template DB:DatabaseWidget\^`' Attributes DomainWidget؋P<Default Value: DomainWidgeth_ Expression DomainWidgetT yName DomainWidgetT yName: DomainWidgetFormForm DonateWidgetSG^ AscendingElementsWidgetRColumn:ElementsWidgetM^ DescendingElementsWidgetQC} ElementElementsWidgeth_ ExpressionElementsWidgetFormFormElementsWidgetT&NoElementsWidgetNull PAssignment of a precision greater than the length of the type! ExceptionhvN;.][XW(=Assignment of a primary key to a table which already has one! ExceptionR|{WN N:O*|{W6Assignment of a pseudo-type to the type of the column! Exception^Rj!_Nhj!_N NXAssignment of a schema to the sequence which differs from the schema of the owner table! Exception ~NN*eeHvcSepRMNN*P<9Assignment of a value to an invalid connection parameter! Exception[avh_eeH2Assignment of an invalid expression to the object! Exception`|{W time timestamp b interval v|^neeH0|^_Ř{\N{IN 6Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! Exception dO\{&|{QC} v{Vue/e/cPAssignment of an object that already belongs to another table! ExceptionRMNN*zz DTD eNT "Assignment of empty DTD file name! Exception RMzzv} XML [X~ىgVh)Assignment of empty XML buffer to parser! Exception[aT yN N:zz&Assignment of empty name to an object! ExceptionhvVP<|{WvT yN N:zz.Assignment of empty name to table return type! ExceptionRMzzv}T y~ DTD Xf0Assignment of empty name to the DTD declaration! Exception|{WvMneeH0Assignment of invalid configuration to the type! ExceptiondO\RhvgY'PInsertion of element which already exists in the element list! ExceptioncQe|{W\^`'RhvyveeH=Insertion of invalid item in the attributes list of the type! ExceptioncQe|{WgN>RhvyveeH?Insertion of invalid item in the enumerations list of the type! Exception"cQevyv][XW(N|{W\^`'Rh JInsertion of item which already exists in the attributes list of the type! Exception cQevyv][XW(N|{WgN>RhLInsertion of item which already exists in the enumarations list of the type! ExceptionLelR^~ep > = 1Wb^Rep~PostgreSQL \g*[skdR}It is not possible to create arrays of domains or sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! ExceptionN SeeH|{Wv[a'Obtaining an object of an invalid type! ExceptionkcxnSv|{WvepeeH&Obtaining types with invalid quantity! ExceptionlNN*bYN*[aeeH ^vRR dN0VN:NN_u(vhRb@W(vQs|]~N [XW(N u1NcN-ebcdubvROne or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! Exception>cNR}Su NN*bYN*cNlg om;`ŋgw _^8O`o0|One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. Exceptiong*bRc(Operation on connection not established! ExceptionTdO\W(g*RMvQC} hN _Ř{QH}Qe XML gVh[X^vbgLg h7hbMubOperation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! Exception(dO\vQC} W(_SRM}QevQC} hN-N [XW(ROperation with element which does not exists in the element tree currently loaded! ExceptioneldO\g*RMv[a$Operation with object not allocated! ExceptiondO\[av|{WeeH2Operation with object(s) which type(s) is invalid! ExceptiondO\W(g*RMvhQC} N (Operation with unallocated tree element! Exception_u(vNRQC~}"_eeH2Reference to a column of tuple with invalid index! Exception_u(vNRQC~T [WeeH1Reference to a column of tuple with invalid name! ExceptionN _u(N W(RRhN-vRLReference to a column which index is out of the capacity of the column list! Exception_u(NeeHvQep|{W*Reference to a function with invalid type! Exception_u(NeeHvdO\{&Sep|{W;Reference to an argument of the operator with invalid type! ExceptionN _u(N \^NSVhvNN8Reference to an event which does not belongs to trigger! Exception_u(NeeHvgCP|{W'Reference to an invalid privilege type! Exception_u(NeeHv҂r|{W"Reference to an invalid role type! Exception_u(NeeHvdO\{&|{W+Reference to an operator with invalid type! Exception"_u(vu(b7[NI|{WN [XW(Nj!WDReference to an user-defined data type that not exists in the model! Exception(_u(vepcn|{WN W(epcn|{WRhvVQMReference to data type with an index outside the capacity of data types list! Exception_u([av|{WeeH&Reference to object with invalid type! ExceptionN ydg*RMv[a#Removal of an object not allocated! ExceptionN ydeeH|{Wv[a&Removing an object of an invalid type! Exception[QY1% PostgreSQL g RVhbgL SQL T}NeSu`ŋgw Vv_^8O`o bgLv SQL S %1The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 ExceptionX_:R6bgLN$h 1-1 Qs|vR\g*[s VN:[~Tj!WN-u1u(b7[NIvN$NNvRyvhThe relationship of the type 1-1 where both tables are mandatory participation is not implemented because it requires fusion between the tables that breaks the modeling done by the user! Exception>elՃ_ SQL T}N~g VN:g RVhzvS͙[b7zelՋR+uUnable to allocate the result of the SQL command because the response from the DBMS was not understood by the client! ExceptionrHg,Version:ExtensionWidgetF3F3FindReplaceWidgetFormFormFindReplaceWidget\^`' AttributesFunctionWidgetLN: Behavior:FunctionWidgetRColumnFunctionWidget؋P< Default ValueFunctionWidget[NI DefinitionFunctionWidgetR`^Dynamic Library:FunctionWidget bgL_Execution Cost:FunctionWidget Qep|{WFunction Type:FunctionWidget^Library:FunctionWidgetT yNameFunctionWidgetSep ParametersFunctionWidget VelReturn Method:FunctionWidgetVވh Return TableFunctionWidget VވLepRows Returned:FunctionWidget[Qh Security:FunctionWidgetSetFunctionWidgetnNx Source code:FunctionWidget{&SSymbol:FunctionWidget|{WTypeFunctionWidgetpt ptGeneralConfigWidget$A0 (841 x 1189 mm)A0 (841 x 1189 mm)GeneralConfigWidget"A1 (594 x 841 mm)A1 (594 x 841 mm)GeneralConfigWidget"A2 (420 x 594 mm)A2 (420 x 594 mm)GeneralConfigWidget"A3 (297 x 420 mm)A3 (297 x 420 mm)GeneralConfigWidget"A4 (210 x 297 mm)A4 (210 x 297 mm)GeneralConfigWidget"A5 (148 x 210 mm)A5 (148 x 210 mm)GeneralConfigWidget"A6 (105 x 148 mm)A6 (105 x 148 mm)GeneralConfigWidget A7 (74 x 105 mm)A7 (74 x 105 mm)GeneralConfigWidgetA8 (52 x 74 mm)A8 (52 x 74 mm)GeneralConfigWidgetA9 (37 x 52 mm)A9 (37 x 52 mm)GeneralConfigWidget&B0 (1030 x 1456 mm)B0 (1030 x 1456 mm)GeneralConfigWidget$B1 (728 x 1030 mm)B1 (728 x 1030 mm)GeneralConfigWidget B10 (32 x 45 mm)B10 (32 x 45 mm)GeneralConfigWidget"B2 (515 x 728 mm)B2 (515 x 728 mm)GeneralConfigWidget"B3 (364 x 515 mm)B3 (364 x 515 mm)GeneralConfigWidget"B4 (257 x 364 mm)B4 (257 x 364 mm)GeneralConfigWidget"B5 (182 x 257 mm)B5 (182 x 257 mm)GeneralConfigWidget"B6 (128 x 182 mm)B6 (128 x 182 mm)GeneralConfigWidget B7 (91 x 128 mm)B7 (91 x 128 mm)GeneralConfigWidgetB8 (64 x 91 mm)B8 (64 x 91 mm)GeneralConfigWidgetB9 (45 x 64 mm)B9 (45 x 64 mm)GeneralConfigWidgetN  Bottom marginGeneralConfigWidgetN Bottom:GeneralConfigWidget$C5E (163 x 229 mm)C5E (163 x 229 mm)GeneralConfigWidgetS|s CentimeterGeneralConfigWidgetrColors:GeneralConfigWidget,Comm10E (105 x 241 mm)Comm10E (105 x 241 mm)GeneralConfigWidget$DLE (110 x 220 mm)DLE (110 x 220 mm)GeneralConfigWidget0Executive (191 x 254 mm)Executive (191 x 254 mm)GeneralConfigWidget(Folio (210 x 330 mm)Folio (210 x 330 mm)GeneralConfigWidget[WOSFont:GeneralConfigWidgetFormFormGeneralConfigWidget^8GeneralGeneralConfigWidget[InchesGeneralConfigWidgetj*T LandscapeGeneralConfigWidget*Ledger (432 x 279 mm)Ledger (432 x 279 mm)GeneralConfigWidget]揹 Left marginGeneralConfigWidget]Left:GeneralConfigWidget(Legal (216 x 356 mm)Legal (216 x 356 mm)GeneralConfigWidget*Letter (216 x 279 mm)Letter (216 x 279 mm)GeneralConfigWidgetk|s MilimetersGeneralConfigWidgetW(eN{tVhN-bS_Open in file managerGeneralConfigWidget dO\_UOperation history:GeneralConfigWidget yOptions:GeneralConfigWidgeteT Orientation:GeneralConfigWidget~WPaper:GeneralConfigWidgetP} PixelsGeneralConfigWidget~TPortraitGeneralConfigWidgetbSSpQh< Print gridGeneralConfigWidgetbSSpuxPrint page numbersGeneralConfigWidgetS󏹍 Right marginGeneralConfigWidgetSRight:GeneralConfigWidget,Tabloid (279 x 432 mm)Tabloid (279 x 432 mm)GeneralConfigWidgetN  Top marginGeneralConfigWidgetN Top:GeneralConfigWidgetFormFormHintTextWidget\^`' Attributes IndexWidget^vS Concurrent IndexWidgetQC} Elements IndexWidget_fe Fast update IndexWidget XkQEV[P Fill Factor: IndexWidget yOptions: IndexWidgetYtQepv{~T RR+N:<br/><br/> <strong>YtQep</strong> <em>language_handler function()</em><br/> <strong>Qep</strong> <em>void function(oid)</em><br/> <strong>QTQep</strong> <em>void function(internal)</em>DThe functions to be assigned to the language should have, respectively, the following signatures:

Handler Function: language_handler function()
Validator Function: void function(oid)
Inline Function: void function(internal)LanguageWidgetSOTrusted:LanguageWidget Qs(&C)&Close MainWindow (&E)&Edit MainWindow [Q(&E)&Export MainWindow eN(&F)&File MainWindow V(&S)&Show MainWindow[P[aR0Qh<Align objects position to grid MainWindowSmCancel MainWindow|j!Wv~W/u]e9S S[[abSSpQ0Ou(evn~~bSSpTOu(؋n SUQ T& b Sm N-kbbSSp0Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. MainWindowxn Confirmation MainWindow Ctrl+-Ctrl+- MainWindow Ctrl+0Ctrl+0 MainWindow Ctrl+=Ctrl+= MainWindow Ctrl+GCtrl+G MainWindow Ctrl+LCtrl+L MainWindow Ctrl+NCtrl+N MainWindow Ctrl+OCtrl+O MainWindow Ctrl+PCtrl+P MainWindow Ctrl+SCtrl+S MainWindow Ctrl+YCtrl+Y MainWindow Ctrl+ZCtrl+Z MainWindow4epcn^j!W (*.dbm);; b@g eN (*.*)'Database model (*.dbm);;All files (*.*) MainWindowkcW(bSSpepcn^j!WDatabase model printing MainWindowF1F1 MainWindowF10F10 MainWindowF12F12 MainWindowF4F4 MainWindow^8General MainWindowbS_j!W Load model MainWindowe^New MainWindowe^[a New object MainWindowcNPlugins MainWindowO[X '%1' N:...Save '%1' as... MainWindowO[XQhSave all MainWindowO[Xj!W Save model MainWindowf>y:Qh< Show grid MainWindow f>y:j!WiShow the model overview MainWindow f>y:Ru{&Show the page delimiters MainWindow)\Zoom - MainWindowe>Y'Zoom in MainWindow)\Zoom out MainWindow<pgModeler - PostgreSQL epcn^^j!]Qw'pgModeler - PostgreSQL Database Modeler MainWindow Sm(&C)&Cancel Messagebox T&(&N)&No Messagebox xn[(&O)&Ok Messagebox f/(&Y)&Yes MessageboxfTJAlert MessageboxSmCancel Messageboxxn Confirmation Messagebox DialogDialog MessageboxError Messagebox_^8 Exceptions MessageboxO`o Information Messageboxf>y:/_^8Xh0Show/hide exceptions stack. MessageboxO`omsg Messagebox ^u((&A)&ApplyMetadataHandlingForm Sm(&C)&CancelMetadataHandlingFormYth{~...Progress label...MetadataHandlingForm Qs(&C)&CloseModelDatabaseDiffForm00ModelDatabaseDiffFormSmCancelModelDatabaseDiffFormxn ConfirmationModelDatabaseDiffFormc Connection:ModelDatabaseDiffForm[QExportModelDatabaseDiffFormeNFile:ModelDatabaseDiffFormYth{~...Progress label...ModelDatabaseDiffForm4SQL Nx (*.sql);;b@g eN (*.*)!SQL code (*.sql);;All files (*.*)ModelDatabaseDiffForm Qs(&C)&CloseModelExportForm [Q(&E)&ExportModelExportForm......ModelExportFormSmCancelModelExportFormc Connection:ModelExportForm[Qj!WN:...Export model as...ModelExportForm bR[Q#Exporting process sucessfuly ended!ModelExportFormeNFile:ModelExportForm _ueY [aIgnore object duplicityModelExportFormkcW(RYSj!W[Q...Initializing model export...ModelExportForm2ub SQL Nxv PostgreSQL rHg, y:Ru{&Show delimitersModelExportFormf>y:Qh< Show gridModelExportForm|{WType:ModelExportForm Qs(&C)&Close ModelFixFormQsj!W Close modelModelNavigationWidgetFormFormModelNavigationWidget11ModelObjectsWidgetSmCancelModelObjectsWidgetSmQh Clear AllModelObjectsWidgetRhV List viewModelObjectsWidgete^NewModelObjectsWidget[aObjectModelObjectsWidget [aVMnObjects view configurationModelObjectsWidgetr6[a Parent ObjectModelObjectsWidgetr6|{W Parent TypeModelObjectsWidget bSelectModelObjectsWidget bQh Select AllModelObjectsWidgethV Tree viewModelObjectsWidget|{WTypeModelObjectsWidgetj!WiModel overviewModelOverviewWidget Sm(&C)&CancelModelRestorationForm `bY (&R)&RestoreModelRestorationFormepcn^DatabaseModelRestorationFormeNFileModelRestorationFormj!W`bY Model restorationModelRestorationForm00ModelValidationWidgetSmCancelModelValidationWidget Ctrl+SCtrl+SModelValidationWidgetFormFormModelValidationWidgetmRe[aR0j!WN-Add a new object in the model ModelWidget`T eY R6 N-[avOV[aTOgY'P^Q\]Y R6[a|4R0QvNj!We Su_u(Y1eHvg:O0Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. ModelWidget Sfb@g  Change owner ModelWidget~g_ Constraints ModelWidgetY R6Copy ModelWidgetRjRCut ModelWidgetDelDel ModelWidgetR dDelete ModelWidgetxn[R d N-v[aT1Do you really want to delete the selected object? ModelWidgetgCPEdit permissions ModelWidget Oe9[a\^`'Edit the object properties ModelWidgetF2F2 ModelWidgetkcW(}Qeepcn^j!WLoading database model ModelWidget yRR0j!_Move to schema ModelWidgete^New ModelWidgetBYtz N-Su R[alg |4R0j!WN-0`ŋXhzNot all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! ModelWidget|4Paste ModelWidgetkcW(|4[a...Pasting objects... ModelWidget\^`' Properties ModelWidgetObProtect ModelWidget_T}T kd[aQuick rename the object ModelWidgetT}T Rename ModelWidgetkcW(O[Xepcn^j!WSaving database model ModelWidget bSelect ModelWidget bQh Select all ModelWidget b[P[aSelect children ModelWidget bj!WN-vQhV_b[a.Selects all the graphical objects in the model ModelWidgetShift+Del Shift+Del ModelWidgetf>y:Show ModelWidgetf>y:[anNxShow object source code ModelWidgetnNx Source code ModelWidget SpaceSpace ModelWidgethTables ModelWidgetSmOb Unprotect ModelWidget00NewObjectOverlayWidget11NewObjectOverlayWidget22NewObjectOverlayWidget33NewObjectOverlayWidget44NewObjectOverlayWidget55NewObjectOverlayWidget88NewObjectOverlayWidget99NewObjectOverlayWidgetZT AggregateNewObjectOverlayWidget|{WlcbCastNewObjectOverlayWidgetRColumnNewObjectOverlayWidget~g_ ConstraintNewObjectOverlayWidgetxlcb ConversionNewObjectOverlayWidgetY R6CopyNewObjectOverlayWidgetWDomainNewObjectOverlayWidgetFormFormNewObjectOverlayWidgetQepFunctionNewObjectOverlayWidget}"_IndexNewObjectOverlayWidgetLanguageNewObjectOverlayWidgetMMNewObjectOverlayWidgetdO\{&OperatorNewObjectOverlayWidgetgCP PermissionsNewObjectOverlayWidget҂rRoleNewObjectOverlayWidgetRRuleNewObjectOverlayWidgetj!_SchemaNewObjectOverlayWidget^RSequenceNewObjectOverlayWidgethTableNewObjectOverlayWidgethzz TablespaceNewObjectOverlayWidgeteg,hFTextboxNewObjectOverlayWidgetSVhTriggerNewObjectOverlayWidget|{WTypeNewObjectOverlayWidgetVViewNewObjectOverlayWidgetZZNewObjectOverlayWidgetEditNumberedTextEditorbS_LoadNumberedTextEditorOV DependenciesObjectDepsRefsWidget[aObjectObjectDepsRefsWidgetr6[a Parent ObjectObjectDepsRefsWidgetr6|{W Parent TypeObjectDepsRefsWidget_u( ReferencesObjectDepsRefsWidget|{WTypeObjectDepsRefsWidgetSmQh Clear AllObjectFinderWidgetFormFormObjectFinderWidget[aObjectObjectFinderWidgetr6[a Parent ObjectObjectFinderWidgetr6|{W Parent TypeObjectFinderWidget bSelectObjectFinderWidget bQh Select AllObjectFinderWidget|{WTypeObjectFinderWidgetSmCancelObjectRenameWidgetFormFormObjectRenameWidgetT}T RenameObjectRenameWidgetnzz[Wk Clear fieldObjectSelectorWidgetFormFormObjectSelectorWidget b[a Select ObjectObjectSelectorWidgetmRyvAdd ItemObjectsTableWidget Alt+RAlt+RObjectsTableWidgetxn ConfirmationObjectsTableWidgetCtrl+Down Ctrl+DownObjectsTableWidget Ctrl+End, Ctrl+SCtrl+End, Ctrl+SObjectsTableWidgetCtrl+Home Ctrl+HomeObjectsTableWidgetCtrl+UpCtrl+UpObjectsTableWidgetDelDelObjectsTableWidgetyd N-vyvT/Do you really want to remove the selected item?ObjectsTableWidgetyv Edit ItemObjectsTableWidgetFormFormObjectsTableWidgetInsInsObjectsTableWidgetN y Move DownObjectsTableWidgetN yMove UpObjectsTableWidgetyg+\> Move to endObjectsTableWidgety_Y4 Move to startObjectsTableWidgetR dQh Remove AllObjectsTableWidgetydyv Remove ItemObjectsTableWidgetShift+Del Shift+DelObjectsTableWidget SpaceSpaceObjectsTableWidgetfeyv Update ItemObjectsTableWidget00OperationListWidget11OperationListWidget R ddO\_UDelete operation historyOperationListWidget$R ddO\_Uf/N SdO\ ~~TZDelete the executed operations history is an irreversible action, do you want to continue?OperationListWidget bgLvdO\Executed OperationsOperationListWidget T y%1Name: %1OperationListWidget [a%1 Object: %1OperationListWidgetN f>y:dO\_UOperation history exclusionOperationListWidget dO\%1 Operation: %1OperationListWidgetdO\ Operations:OperationListWidgetOMn Position:OperationListWidgetPZRedoOperationListWidgetdUndoOperationListWidgetR^bRcreatedOperationListWidgetOe9bRmodifiedOperationListWidgetyRbRmovedOperationListWidgetR dbRremovedOperationListWidget؋|{Default Class:OperatorClassWidgetQC} ElementsOperatorClassWidgetQepFunctionOperatorClassWidgetQep Function:OperatorClassWidget }"_|{W Indexing:OperatorClassWidget[aObjectOperatorClassWidgetdO\{&OperatorOperatorClassWidgetdO\{&eOperator FamilyOperatorClassWidgetdO\{& Operator:OperatorClassWidget[XPStorageOperatorClassWidget[XP|{W Storage TypeOperatorClassWidget e/c/{VueSupport/StrategyOperatorClassWidget e/c/{VueSupport/Strategy:OperatorClassWidget|{WTypeOperatorClassWidgetkcW(^z}"_ Indexing:OperatorFamilyWidgetSep ArgumentsOperatorWidgetT^ c (HASHES)HASHESOperatorWidgetcJoin:OperatorWidget ]Sep|{WLeft Argument TypeOperatorWidgetTc (MERGES)MERGESOperatorWidget yOptions:OperatorWidget SSep|{WRight Argument TypeOperatorWidgetW(R^SUvdO\{&e_Ř{c[[NSepN-v<strong><em>NOU</em></strong>NN*0SY O\N:dO\{&vQep_Ř{g NSg NN*Sep NN*Sepv|{W_Ř{NSUvdO\{&Sepv|{WvT 0To create a unary operator it is necessary to specify as 'any' one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator.OperatorWidget؋P<Default Value:ParameterWidgetININParameterWidgetj!_Mode:ParameterWidgetOUTOUTParameterWidgetmRgCPAdd PermissionPermissionWidgetSmdO\Cancel OperationPermissionWidgetNx Code PreviewPermissionWidgetgCPEdit permissionsPermissionWidgetCRANT OPTION GRANT OPTIONPermissionWidgetIDID:PermissionWidgetIdIdPermissionWidgetT yNamePermissionWidgetgCP PermissionsPermissionWidgetgCP PrivilegePermissionWidgetgCP PrivilegesPermissionWidget҂rRolesPermissionWidgetfegCPUpdate PermissionPermissionWidgetepcn|{W Data TypePgSQLTypeWidget~^ DimensionPgSQLTypeWidgetFormFormPgSQLTypeWidgeth<_Format:PgSQLTypeWidgetS: Interval:PgSQLTypeWidgetLL:PgSQLTypeWidget^LengthPgSQLTypeWidgetMMPgSQLTypeWidgetPP:PgSQLTypeWidget|^ PrecisionPgSQLTypeWidgetzzSpatial:PgSQLTypeWidgeteS: Timezone:PgSQLTypeWidget|{WType:PgSQLTypeWidgetS_ Variation:PgSQLTypeWidgetZZPgSQLTypeWidget[ ][ ]:PgSQLTypeWidgetFormFormPluginsConfigWidget R`c^LibraryPluginsConfigWidget ]R}vcNLoaded plug-insPluginsConfigWidgetW(eN{tVhN-bS_Open in file managerPluginsConfigWidget cNh9v_UPlug-ins root directory:PluginsConfigWidgetcNPluginPluginsConfigWidgetrHg,VersionPluginsConfigWidgetT yName PolicyWidget҂rRoles PolicyWidget%1 (L%2) %1 (line: %2)QObjectnew_database new_databaseQObjectY R6CopyRelationshipConfigWidget؋DefaultRelationshipConfigWidget^ Deferral:RelationshipConfigWidgetFormFormRelationshipConfigWidgetlSGeneralizationRelationshipConfigWidgetON DELETE ON DELETE:RelationshipConfigWidgetON UPDATE ON UPDATE:RelationshipConfigWidget1-N1-nRelationshipWidget\^`' AttributeRelationshipWidget\^`' AttributesRelationshipWidgetWep Cardinality:RelationshipWidget~g_ ConstraintRelationshipWidget~g_ ConstraintsRelationshipWidget؋DefaultRelationshipWidgetS^ Deferrable:RelationshipWidget^ Deferral:RelationshipWidget^8GeneralRelationshipWidgetlSQs| (~b))Generalization relationship (inheritance)RelationshipWidgeth{& IdentifierRelationshipWidget Y[YQs|Many to many relationshipRelationshipWidgetT yNameRelationshipWidgetY[YQs|ubhvT y:Name of the table generated from many to many relationshipRelationshipWidgetON DELETE ON DELETE:RelationshipWidgetON UPDATE ON UPDATE:RelationshipWidget N[YQs|One to many relationshipRelationshipWidget N[NQs|One to one relationshipRelationshipWidgetN;. Primary keyRelationshipWidget_u(hReferenced Table:RelationshipWidget|{WTypeRelationshipWidgetdepdepRelationshipWidgetN-Nn-nRelationshipWidget\^`' Attributes RoleWidgetc Connections: RoleWidgetbTX Member of RoleWidgetbTXMembers RoleWidgetbTX({tTX)Members (Admin.) RoleWidget[x Password: RoleWidget҂rRole RoleWidget~u(b7 Superuser RoleWidgetTl`'Validity RoleWidget gaNh_Conditional Expr.: RuleWidgetNNEvent: RuleWidget bgL|{WExecution Type: RuleWidgetSQL T}N SQL Command: RuleWidget SQL T}N SQL command RuleWidgetR^NN*N bgLNOUdO\vR<STRONG>DO NOTHING</STRONG> {SUp \1f/ SQL T}NhN-lg vT}N0To create a rule that does not perform any action (DO NOTHING) simply do not specify commands in the SQL commands table. RuleWidgetSmQh Clear AllSQLExecutionWidgetF6F6SQLExecutionWidgetFormFormSQLExecutionWidgetbS_LoadSQLExecutionWidgetO[XSaveSQLExecutionWidgetS[XN:Save asSQLExecutionWidget Alt+RAlt+R SQLToolWidget\^`' Attributes SQLToolWidgetFormForm SQLToolWidgetnNx Source code SQLToolWidgetFormFormSceneInfoWidget[XCache:SequenceWidget_sCyclic:SequenceWidgetX Increment:SequenceWidgetgY'P<Maximum:SequenceWidgetg\P<Minimum:SequenceWidgetwYP<Start:SequenceWidgete^AddSnippetsConfigWidgetSmCancel editionSnippetsConfigWidget ^zecCreate new connectionSnippetsConfigWidgetR d N-vcDelete selected connectionSnippetsConfigWidget N-vcEdit selected connectionSnippetsConfigWidgetFormFormSnippetsConfigWidget^8GeneralSnippetsConfigWidgetIDID:SnippetsConfigWidgetR dQh Remove AllSnippetsConfigWidgetShift+Del Shift+DelSnippetsConfigWidgetfeUpdateSnippetsConfigWidget.-- elubkd[a|{Wv SQL Nx --2-- SQL code unavailable for this type of object --SourceCodeWidgetkcW(ubnNx......Generating source code...SourceCodeWidgetPostgreSQL PostgreSQLSourceCodeWidgetSQLSQLSourceCodeWidget4SQL Nx (*.sql);;b@g eN (*.*)!SQL code (*.sql);;All files (*.*)SourceCodeWidget gw nNxSource code visualizationSourceCodeWidgetrHg,Version:SourceCodeWidgetXMLXMLSourceCodeWidgeticonecodigo iconecodigoSourceCodeWidgetIDID:SwapObjectsIdsWidget[aObjectSwapObjectsIdsWidgetr6[a Parent ObjectSwapObjectsIdsWidgetr6|{W Parent TypeSwapObjectsIdsWidget|{WTypeSwapObjectsIdsWidgetY R6CopyTableDataWidgetDelDelTableDataWidgetInsInsTableDataWidget|4PasteTableDataWidgetShift+Del Shift+DelTableDataWidgetY R6Copy TableWidget؋P< Default Value TableWidgetNNEvent TableWidgetNNEvents TableWidgetbgL Execution TableWidgetSFiring TableWidget}"_Indexing TableWidgetT yName TableWidgetT&No TableWidgetON DELETE ON DELETE TableWidgetON UPDATE ON UPDATE TableWidget_u(h Refer. Table TableWidget҂rRoles TableWidgetj!_Schema TableWidget|{WType TableWidgetf/Yes TableWidget[WQx Directory:TablespaceWidgetFormFormTablespaceWidgetkcW(bgLvNRExecuting tasksTaskProgressWidget|OSBold TextboxWidget[WOSFont: TextboxWidgeteOSItalic TextboxWidget beg,rSelect text color TextboxWidgetN R~ Underline TextboxWidgetSep Argument: TriggerWidgetSep Arguments TriggerWidgetRColumn TriggerWidgetRColumn: TriggerWidgetRColumns TriggerWidget~g_ Constraint TriggerWidget DELETEDELETE TriggerWidgetS^ Deferrable: TriggerWidgetNNEvent: TriggerWidgetQep Function: TriggerWidget INSERTINSERT TriggerWidget yOptions: TriggerWidgetTRUNCATETRUNCATE TriggerWidget|{WType TriggerWidget UPDATEUPDATE TriggerWidgetANALYZEANALYZE: TypeWidget[P Alignment: TypeWidget\^`' Attributes TypeWidgetWg,|{W Base Type TypeWidget|{R+ Category: TypeWidgetMnConfiguration: TypeWidget؋P<Default Value: TypeWidgetR{& Delimiter: TypeWidgetQC} |{W Element Type TypeWidgetgN> Enumeration TypeWidgetgN> Enumeration: TypeWidgetgN> Enumerations TypeWidgetQep Functions TypeWidget INPUTINPUT: TypeWidget Q^Internal Length: TypeWidgetT yName TypeWidgetT yName: TypeWidgetOUTPUTOUTPUT: TypeWidget dO\{&|{Operator Class: TypeWidget yOptions: TypeWidget RECVRECV: TypeWidget SENDSEND: TypeWidget[XPStorage: TypeWidgetTPMOD_IN TPMOD_IN: TypeWidgetTPMOD_OUT TPMOD_OUT: TypeWidgetu(N|{W[NIvQepu( C Q ^vN{&TN RvQep{~T <br/> <table> <tr> <td><strong>INPUT</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND</strong> <em>byta function(any)</em></td> <td><strong>RECV</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE</strong> <em>boolean function(internal)</em></td> <tr> </table>The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:
INPUT: any function(cstring, oid, integer) OUTPUT: cstring function(any)
SEND: byta function(any) RECV: any function(internal, oid, integer)
TPMOD_IN: integer function(cstring[]) TPMOD_OUT: cstring function(integer)
ANALYZE: boolean function(internal)
 TypeWidget|{WType TypeWidgetcharchar TypeWidget double precisiondouble precision TypeWidgetintegerinteger TypeWidgetsmallintsmallint TypeWidget 0.0.00.0.0UpdateNotifierWidgetR+T Alias ViewWidgetRR+T  Alias Col. ViewWidgetNx Code Preview ViewWidget R/h_ Col./Expr. ViewWidgetRColumn ViewWidgetRR+T  Column Alias: ViewWidgetRColumn: ViewWidgetNNEvent ViewWidgetNNEvents ViewWidgetbgL Execution ViewWidgeth_ Expression ViewWidget h_R+T Expression Alias: ViewWidgeth_ Expression: ViewWidgetSFiring ViewWidget}"_Indexes ViewWidget}"_Indexing ViewWidgetj!_Mode: ViewWidgetT yName ViewWidget_u(h Refer. Table ViewWidget_u( References ViewWidgetRRules ViewWidgethR+T  Table Alias: ViewWidgethTable: ViewWidgetSVhTriggers ViewWidgetu(W(Used in: ViewWidgetFormForm WelcomeWidgetpgmodeler-0.9.4/assets/lang/zh_CN.ts000066400000000000000000014432141416010000600172730ustar00rootroot00000000000000 AboutWidget About pgModeler 关于 pgModeler PostgreSQL Database Modeler PostgreSQL 数据库建模工具 Open source data modeling tool designed for PostgreSQL. No more DDL commands written by hand, let pgModeler do the job for you! This software reunites the concepts of entity-relationship diagrams and the features that PostgreSQL implements as extensions of SQL standards. pgModeler is proudly a brazilian software! Hide this widget ... (BUILD_NUM) License 0.0.0 0.0.0 build: <html><head/><body><p><a href="http://pgmodeler.com.br"><span style=" text-decoration: underline; color:#2980b9;">https://pgmodeler.io</span></a></p></body></html> <html><head/><body><p>Copyright 2006-2018 - Raphael Araújo e Silva &lt;<a href="mailto:raphael@pgmodeler.com.br"><span style=" text-decoration: underline; color:#0057ae;">raphael@pgmodeler.io</span></a>&gt;</p></body></html> AggregateWidget Final Function: 最终处理函数: Sort Operator: 排序操作符: Funtion Inputs 函数输入 Function State 函数状态 Input Data Type 输入数据类型 State Data Type 状态数据类型 An aggregate function that accepts the types <em><strong>typeA</strong></em> and <em><strong>typeB</strong></em> as input types and which type of state is <em><strong>state_type</strong></em>, must obey the following rules: <br/><br/> <strong> &nbsp;&nbsp;&nbsp;• Final Function:</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp;• Transition Function:</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em> 聚合函数接受类型 <em><strong>typeA</strong></em> 和 <em><strong>typeB</strong></em> 作为输入类型,并且类型状态为 <em><strong>state_type</strong></em>, 函数必须遵循如下规则:<br/><br/> <strong> &nbsp;&nbsp;&nbsp;•最终处理函数:</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> &nbsp;&nbsp;&nbsp;• 过渡处理函数:</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em> Initial Condition: Transition Func.: AppearanceConfigWidget Element: 元素: Global: Font style 全局:字体样式 Global: Constraints descriptor 全局:约束描述符 Global: Object selection 全局:对象选择 Global: Position hint text 全局:位置提示内容 Global: Position hint box 全局:位置提示框 Global: Objects type 全局:对象类型 Global: Lock arc 全局:锁环 Global: Lock body 全局:锁体 Table: Schema name 表:模式名称 Table: Table name 表:表名称 Table: Columns box 表:列框 Table: Extended attributes box 表:扩展属性框 Table: Title box 表:标题框 Index: Descriptor 索引:描述符 Trigger: Descriptor 触发器:描述符 View: Schema name 视图:模式名称 View: View name 视图:视图名称 View: References box 视图:引用框 View: Title box 视图:标题框 View: Table / columns alias 视图:表/列别名 View: Referenced column 视图:引用列 View: Referenced table 视图:引用表 View: Reference descriptor 视图:引用描述符 Textbox: Body 文本框:框体 Column: Column name 列:列名称 Column: Descriptor 列:描述符 Column: Included / Inherited by relationship 列:包含在/继承自关系 Column: Protected 列:写保护 Column (pk): Column name 列(PK):列名称 Column (pk): Descriptor 列(PK):描述符 Column (fk): Column name 列(FK):列名称 Column (fk): Descriptor 列(FK):描述符 Column (uq): Column name 列(UQ):列名称 Column (uq): Descriptor 列(UQ):描述符 Column (nn): Column name 列(NN):列名称 Column (nn): Descriptor 列(NN):描述符 Relationship: Descriptor 关系:描述符 Relationship: Label text 关系:标签内容 Relationship: Label box 关系:标签框 Relationship: Attribute text 关系:属性内容 Relationship: Attribute descriptor 关系:属性描述符 Bold 粗体 Italic 斜体 Colors: 颜色: Underline 下划线 Form Form Rule: Name 规则:名称 Rule: Descriptor 规则:描述符 Index: Name 索引:名称 Trigger: Name 触发器:名称 Font: 字体: pt pt View: Extended attributes box Tag: Name Tag: Body Placeholder: Body Constraint: Name Constraint: Descriptor Application Unknown exception caught! 捕捉到未知异常! Failed to create initial configuration in `%1'! Check if the current user has write permission over that path and at least read permission over `%2'. BaseConfigWidget A backup of the previous settings was saved into <strong>%1</strong>! BaseForm &Apply 应用(&A) &Cancel 取消(&C) Dialog Dialog &Ok 确定(&O) %1 properties BaseObject Column Constraint 约束 Function 函数 Trigger 触发器 Index 索引 Rule 规则 Table View 视图 Domain Schema 模式 Aggregate 聚合 Operator 操作符 Sequence 序列 Role 角色 Conversion 编码转换 Cast 类型转换 Language 语言 Type 类型 Tablespace 表空间 Operator Family 操作符族 Operator Class 操作符类 Database 数据库 Textbox 文本框 Permission 权限 Parameter 参数 Collation Relationship Type Attribute new_object Extension Event Trigger Tag Basic Relationship Policy Generic SQL BaseObjectView SQL off BaseObjectWidget Name: 名称: Comment: 备注: Tablespace: 表空间: Owner: 所有者: Schema: 模式: This object is protected thus no change in form will be applied to it. 此对象处于受保护状态,无法对它应用任何修改。 Value(s) Version 版本 icone icone Edit permissions 编辑权限 Disable SQL code Collation: Required field. Leaving this empty will raise errors! Edit object's permissions 编辑对象的权限 Disables the generated SQL code using comment tokens (--). This will disable the code of all child and referrer objects. Append or prepend a set of SQL commands to the object's definition. Custom SQL ID: ID: The <em style='color: %1'><strong>highlighted</strong></em> fields in the form or one of their values are available only on specific PostgreSQL versions. Generating SQL code for versions other than those specified in the fields' tooltips may create incompatible code. BaseRelationship rel_%1_%2 BaseTableView Toggles the extended attributes display Connected rels: %1 BugReportForm Bug Report Bug report &Cancel 取消(&C) Create 创建 Use the form below to generate a complete bug report. Please, try to be as clear as possible when describing the actions that can reproduce the bug. Additionally, it's important to attach a sample database model so that the bug can be quickly discovered and fixed! Report 报告 Issue details Output: Select the report's output folder ... <html><head/><body><p>If you prefer it's possible to report this issue anytime on pgModeler's project repository at <a href="http://github.com/pgmodeler/pgmodeler/issues"><span style=" text-decoration: underline; color:#0057ae;">GitHub</span></a>. </p></body></html> Database Model Attach the below database model file to be debugged. Attach a different database model Bug report successfuly generated! Please, send the file <strong>%1</strong> to <em>%2</em> in order be analyzed. Thank you for the collaboration! Load model 打开模型 Database model (*.dbm);;All files (*.*) 数据库模型 (*.dbm);; 所有文件 (*.*) Select report output folder BulkDataEditWidget Bulk data edit CastWidget Assignment 强制转换 Input / Output 输入 / 输出 The function to be assigned to a cast from <em><strong>typeA</strong></em> to <em><strong>typeB</strong></em> must have the following signature: <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>. 将<em><strong>类型 A</strong></em>转换成 <em><strong>类型 B</strong></em>的函数签名:<em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>. Source data type 原始数据类型 Target data type 目标数据类型 Cast Type: I&mplicit Conversion Func.: E&xplicit CodeCompletionWidget Makes the widget closable only by ESC key or mouse click on other controls. SQL Keyword (no items found.) Make &persistent CollationWidget Locale: Encoding: 编码: LC_COLLATE: LC_COLLATE: LC_CTYPE: LC_CTYPE: The fields <strong><em>Collation</em></strong>, <strong><em>Locale</em></strong>, <strong><em>LC_COLLATE & LC_CTYPE</em></strong> are mutually exclusive, so you have to set only one of them in order to properly handle a collation. Not defined ColorPickerWidget Form Form Generate random color(s) Alt+R Alt+R Select color ColumnWidget Default Value: 默认值: E&xpression: &NOT NULL Se&quence: Edit the underlying sequence's attributes Edit sequence Identity: ConfigurationForm pgModeler Configuration pgModeler 配置 &Apply 应用(&A) &Cancel 取消(&C) Defaults 默认 General 常规 Plug-ins 插件 Any modification made until now in the current section will be lost! Do you really want to restore default settings? 当前部分所做的修改将会丢失!要恢复到默认设置吗? Relationships Appearance Connections Snippets In some cases restore the default settings related to it may solve the problem. Would like to do that? Restore ConnectionsConfigWidget Connections: 连接: Create new connection 建立新连接 Cancel edition 取消编辑 Edit selected connection 编辑选中的连接 Connection Alias: 连接别名: Connection DB: 连接数据库: Host/Port: 主机/端口: User: 用户: Password: 密码: Timeout: 超时: second(s) 秒(s) SSL Mode: SSL 模式: Disable 禁用 Allow 允许 Require 必需 AC verification CA认证 Full verification 双向认证 Client Key: 客户端密钥: Revoked Certs.: 已吊销证书: Force GSSAPI 强制 GSSAPI Add 新建 Update 更新 Test 测试 Delete selected connection 删除选中的连接 Client Certificate: 客户端证书: ~/.postgresql/postgresql.crt ~/.postgresql/postgresql.crt ~/.postgresql/postgresql.key ~/.postgresql/postgresql.key Root Certificate: 根证书: ~/.postgresql/root.crt ~/.postgresql/root.crt ~/.postgresql/root.crl ~/.postgresql/root.crl Success 成功 Edit database connections Duplicate the selected connection General 常规 Other params: Specify additional connection parameters in the form [param]=[value]. These parameters are described in the <strong>libpq</strong> chapter at PostgreSQL docs. Default for: Automatically browses the named database when using this connection to manage databases on <strong>Manage</strong> view. Auto browse Diff Export 导出 Import Validation Security Kerberos Server: Indicates in which operations (diff, export, import or validation) the connection is used if none is explicitly specified by the user. There is a connection being created or edited! Do you want to save it? Found %1 connection(s) No connections found Edit connections Connection successfully established! Server details: PID: `%1' Protocol: `%2' Version: `%3' ConstraintWidget Constraint Type: 约束类型: Fill Factor: 填充因子: Deferrable: 可延迟: Deferral: 延迟: Columns Column: 列: Referenced Columns 引用列 Table: 表: Column Type 类型 ON DELETE: ON DELETE: ON UPDATE: ON UPDATE: Match: No inherit: Exclude Elements Columns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form. This attribute cannot be changed once the object is created. Expression: Indexing: ConversionWidget Source Encoding: 原始编码: Target Encoding: 目标编码: Default Conversion: 默认转换: The function to be assigned to an encoding conversion must have the following signature: <em>void function(integer, integer, cstring, internal, integer)</em>. 编码转换的函数签名:<em>void function(integer, integer, cstring, internal, integer)</em>。 Conversion Func.: CrashHandlerForm Crash Handler Stack trace 堆栈跟踪信息 Input: Load report file for analysis Save the attached model file on the filesystem pgModeler bug report (*.bug);;All files (*.*) Load report Save model 保存模型 Database model (*.dbm);;All files (*.*) 数据库模型 (*.dbm);; 所有文件 (*.*) Crash handler Bug report analysis mode activated. Oops! pgModeler just crashed! 糟糕!pgModeler 崩溃了! We apologize for what happened! It is clear that a nasty bug caused that. Please fill out the form below describing your actions before pgModeler quit unexpectedly. This will help on bug extermination and improve the software. CsvLoadWidget Form Form Load CSV CSV File: Select output file ... Separator: Use the first row as column names in the CSV file. By unchecking this option the first row is used as data. Columns in the first row Load 打开 Semicolon (;) Comma (,) Space Space Tabulation Other ; Text delimiter: " Load CSV file Comma-separted values (*.csv);;All files (*.*) CustomSQLWidget Add custom SQL code SQL code Puts an SELECT command template at current cursor position. &SELECT Puts an INSERT command template at current cursor position. &INSERT Puts an UPDATE command template at current cursor position. &UPDATE Puts an DELETE command template at current cursor position. &DELETE &Clear Append SQL Append the SQL code at the very end of model definition. Unchecking this will cause the SQL to be appended at the end of CREATE DATABASE command. Append at end of model definition. Prepend SQL Prepend at beginning of model definition. <html><head/><body><p>Use custom commands with extreme caution because you can change the semantics of the entire model when running SQL validation or export processes. Additionally, depending on the amount of commands, those processes can have their performance sensibly degradated.</p></body></html> Generic INSERT Include serial columns Exclude serial columns Generic SELECT Table SELECT Generic UPDATE Table UPDATE Generic DELETE Table DELETE DataManipulationForm Data Manipulation &Close 关闭(&C) Refresh listing F5 F5 Save changes Ctrl+S Ctrl+S Export results to CSV file Ctrl+X Undo modifications Ctrl+Z Ctrl+Z Add empty rows Ins Ins Mark the selected rows to be deleted Del Del Duplicate the selected rows Ctrl+D Filter the result set Table: 表: Schema: 模式: in Hide views Filter expression Order && Limit results (Use <strong>0</strong> for no limit) Limit in: Add Item 添加项目 Remove Item 移除项目 Clear the order by columns list Move selected item up Move selected item down ASC DESC Column: 列: <strong>WARNING: </strong> There are some changed rows waiting the commit! Do you really want to discard them and retrieve the data now? Rows returned: <strong>%1</strong>&nbsp;&nbsp;&nbsp; <em>(Limit: <strong>%1</strong>)</em> none No objects found Found %1 object(s) Views can't have their data handled through this grid, this way, all operations are disabled. The selected table doesn't owns a primary key! Updates and deletes will be performed by considering all columns as primary key. <strong>WARNING:</strong> those operations can affect more than one row. This row is marked to be %1 deleted updated inserted [binary data] <strong>WARNING:</strong> Once commited its not possible to undo the changes! Proceed with saving? delete update insert <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> Copy items on the grid Paste items on the grid Ctrl+V Browse referenced tables Change the values of all selected cells at once Ctrl+E Add new rows from a CSV file Copy as CSV Copy as text Copy items Pase items Browse tables Duplicate row(s) Delete row(s) Edit cell(s) Column Referenced tables (none) Referrer tables DatabaseExplorerWidget Form Form Open the grid to visualize or edit data Data &Grid Alt+G Open a new SQL execution pane ... Ctrl+F6 Update the objects tree Drop this database Expands all items Collapses all items Filters the currently loaded items in the tree by using a pattern and matching their names. If <strong>By OID</strong> is checked the pattern is interpreted as an integer value that represents the object id (OID). <br><br/><strong>HINT:</strong> if you need to search the entire database use the full refresh (<strong>Ctrl+F5</strong>) prior the filtering. Filter: By OID Attribute 属性 Value Show raw attributes (not found, OID: %1) -- Source code not generated! Hit F7 or middle-click the item to load it. -- Admin. roles Alignment Analyze func. Arg. count Arg. default count Arg. defaults Arg. modes Arg. names Arg. types Behavior type By value Cast type Category Collatable Collation Comment Commutator Op. Configuration Conn. limit Constraint 约束 Create DB Create role Curr. version Default 默认 Default value Definition 定义 Delimiter Dest. type Dimension 维度 Directory Dest. encoding Element 元素 Encoding Encrypted Enumerations 枚举 Exec. cost Expression 表达式 Op. family Final func. Function 函数 Func. type Handler func. Handles type Hashes Index type Inherit Ini. condition Inline func. Input func. Internal length Interval type I/O cast Join func. Language 语言 LC COLLATE LC CTYPE Leak proof Left type Length 长度 Library 动态链接库 Can login Materialized Member roles Merges Name 名称 Negator op. Not null Object type OID With OIDs Old version Operator 操作符 Operator func. Output func. Owner Owner column Parents Password Permissions 权限 Precision 精度 Preferred Range attributes Receive func. Ref. roles Replication Restriction func. Return type Returns SETOF Right type Rows amount Schema 模式 Security type Send func. Sort op. Source type Src. encoding State type Storage 存储 Superuser 超级用户 Tablespace 表空间 Type mod. in func. Type mod. out func. Transition func. Trusted Type 类型 Type attribute Types Unlogged Validator func. Validity 合法性 Windows func. false true Cache value Cycle Increment Max. value Min. value Start value Last value Subtype Op. class Canonical func. Subtype diff func. Deferrable For each row Firing 触发 On insert On delete On update On truncate Arguments 参数 Table Trigger func. Columns Condition Deferment Event 事件 Execution mode Commands Position Comparison type Ref. columns Expressions Fill factor No inherit Op. classes Operators 操作符 Ref. table Unique Predicate Collations Inherited Snippets Drop object Drop cascade Truncate Trunc. cascade Show data Reload properties Update 更新 Rename 重命名 Source code 源代码 Quick refresh Full refresh Do you really want to drop the object <strong>%1</strong> <em>(%2)</em>? Do you really want to <strong>cascade</strong> drop the object <strong>%1</strong> <em>(%2)</em>? This action will drop all the other objects that depends on it. Do you really want to truncate the table <strong>%1</strong>? Do you really want to <strong>cascade</strong> truncate the table <strong>%1</strong>? This action will truncate all the tables that depends on it? Src. table: %1 Src. column(s): %2 Ref. table: %1 Ref. column(s): %2 -- Source code genaration for buil-in and base types currently unavailable -- -- Source code unavailable for the object %1 (%2). -- Toggle the display of filter widget as well the system/extension objects. Sort items alphabetically. When unchecked, items are sorted by OID. Sort alphabetically Client encoding Configuration file Data directory Dynamic library path Dynamic shared memory Hba file Listen addresses Max. connections Listen port Server encoding SSL SSL ca file SSL cert file SSL crl file SSL key file Server version Ident file Password encryption Connection ID Server PID Server protocol Referrers Identity Command USING expr. CHECK expr. Roles 角色 RLS enabled RLS forced Show objects filter Show system objects Show extension objects -- Source code unavailable for this kind of object -- Also restart sequences Warning You're running a demonstration version! The data manipulation feature is available only in the full version! <strong>CAUTION:</strong> You are about to drop the entire database <strong>%1</strong>! All data will be completely wiped out. Do you really want to proceed? DatabaseImportForm Settings Options Connection: 连接: Resolve some of the object's dependencies by querying the catalog when a needed object does not exists on the loaded set. In some cases it's necessary to combine this option with others below. This option does not applies to database level objects like role, tablespace and language as well for data types, extensions. Automatically resolve dependencies Random colors will be assigned to imported relationships facilitating the identification of links between tables mainly in large models. Random colors for relationships Enables the import of system built-in objects. It's recommend to select only those objects that are directly referenced by the ones to be imported. WARNING: Try to import a huge set of system objects can bloat the resultant model or even crash pgModeler due to memory/cpu overuse. Import system objects Enables the import of objects created by extensions. Generally there is no need to check this option but if there are objects in the database that directly references this category of objects this mode must be enabled. Import extension objects pgModeler ignores import errors and will try to create as many as possible objects. By checking this option the import operation will be not aborted but an incomplete model will be constructed. This option generates a log file on pgModeler's temp directory. Ignore import errors All catalog queries as well the created objects' source code are printed to standard output (stdout). Debug mode Create all imported objects in the current working model instead of create a new one. Import objects to the working model Database 数据库 Filter: Filter object by it's OID By OID Select all objects ... Clear object selection Expands all items Collapses all items Output Progress label... 处理标签... Cancel 取消 &Import &Close 关闭(&C) <strong>ATTENTION:</strong> You are about to import objects to the current working model! This action will cause irreversible changes to it even in case of critical errors during the process. Do you want to proceed? Importing process aborted! Importing process canceled by user! Importing process sucessfuly ended! No databases found Found %1 database(s) Retrieving objects from database... Retrieving cluster level objects... Retrieving objects of schema `%1'... This is a PostgreSQL built-in data type and cannot be imported. This is a pgModeler's built-in object. It will be ignored if checked by user. Import database Retrieving objects of `%1' (%2)... DatabaseImportHelper Retrieving system objects... `%1' Retrieving objects... `%1' Creating object `%1' (%2)... Import failed to recreate some objects in `%1' tries. Creating permissions for object `%1' (%2)... Creating columns permissions... Updating relationships of `%1' (%2)... Validating relationships... The database import ended but some errors were generated and saved into the log file `%1'. This file will last until pgModeler quit. Creating table inheritances... Destroying unused detached columns... Assigning sequences to columns... Creating object `%1' (%2), oid `%3'... Trying to recreate object `%1' (%2), oid `%3'... DatabaseModel The demonstration version can create only `%1' instances of each object type! You've reach this limit for the type: `%2' Loading: `%1' (%2) Validating relationships... Saving object `%1' (%2) Saving metadata of the object `%1' (%2) Metadata file successfully saved! Process successfully ended but no metadata was saved! Creating object `%1' (%2) Object `%1' (%2) already exists. Ignoring. Loading metadata for object `%1' (%2) Object `%1' (%2) not found. Ignoring metadata. Metadata file successfully loaded! Generating %1 code: `%2' (%3) DatabaseWidget Model Author: 模型作者: Encoding: 编码: Connections: 连接: Default 默认 Template DB: 数据库模板: LC_COLLATE: LC_COLLATE: LC_CTYPE: LC_CTYPE: Attributes 属性 Default Objects Tablespace: 表空间: Schema: 模式: Collation: Owner: 所有者: The fields <strong>LC_COLLATE</strong> and <strong>LC_CTYPE</strong> have pre-configured values based upon the running system. You can freely modify those values if you intend to export the model to another host. Use the above fields to specify the default attributes assigned to new objects created on the database model. Leaving a field empty will cause PostgreSQL to use the default values when exporting the model. Options: 选项: Allow connections Is template DomainWidget Default Value: 默认值: Name: 名称: Attributes 属性 Not null Check constraints Expression: Name 名称 Expression 表达式 DonateWidget Form Form Donate to pgModeler Hide this widget ... <html><head/><body><p>pgModeler is brought to you thanks to a <span style=" font-style:italic;">great effort to create and distribute a quality product</span>. This project is reaching out levels of maturity never imagined. All this is the result of a joint work between its author and the <span style=" font-weight:600;">Open Source community</span>. <br/><br/>This software has a long way to go yet and with your help we'll keep maintaining the good job and bringing new improvements on each release. If you did like pgModeler and thinks it deserves a contribution please make a donation!</p></body></html> I want to help! ElementsWidget Form Form Column: 列: Expression: Collation: Operator Class: 操作符类: Operator: 操作符: Sorting: 正在排序: Ascending 升序 Descending 降序 Nulls first Null 值优先 Element 元素 Type 类型 Operator Class 操作符类 Sorting 排序 Nulls First Null 值优先 Collation Operator 操作符 Expression 表达式 Yes No EventTriggerWidget Event: 事件: Function: 函数: Filter Tag: Tag command Exception Assignment of a pseudo-type to the type of the column! 列类型不能为伪类型! Assignment of a precision greater than the length of the type! 精度不能大于类型长度! Assignment of an invalid precision to type time, timestamp or interval. The precision in this case must be equal to or less than 6! 类型 time,timestamp 或 interval 的精度设置无效。精度必须小于等于 6! Reference to a column which index is out of the capacity of the column list! 不能引用不在列列表中的列! Assignment of not allocated object! 必须设置对象! Removing an object of an invalid type! 不能移除无效类型的对象! Obtaining an object of an invalid type! 不能获取无效类型的对象! Assignment of empty name to table return type! 表的返回值类型的名称不能为空! Reference to an event which does not belongs to trigger! 不能引用不属于触发器的事件! Assignment of a function which language is invalid! 语言转换函数无效! Assignment of empty name to an object! 对象名称不能为空! Assignment of schema object which type is invalid! 模式对象类型无效! Assignment of tablespace object with invalid type! 表空间对象包含无效类型! Assignment of tablespace to an invalid object! 表空间对象无效! Assignment of tablespace to a constraint which type is invalid! To belong to a tablespace the constraint must be a primary key or unique! 无效的表空间约束!表空间约束必须是主键约束或唯一约束! Assignment of owner object which type is invalid! 所有者对象的类型无效! Assignment of owner to an invalid object! 所有者对象无效! Reference to a function with invalid type! 引用了无效的函数类型! Reference to an argument of the operator with invalid type! 引用了无效的操作符参数类型! Reference to an operator with invalid type! 引用了无效的操作符类型! Reference to an invalid role type! 引用了无效的角色类型! Assignment of an object that already belongs to another table! 对象已属于另一个表! Assignment of a schema to the sequence which differs from the schema of the owner table! 序列模式与表模式不一致! Assignment of an invalid value to one of the sequence attributes! 序列属性的其中一个值无效! Assignment of a minimum value to the sequence which is greater than the maximum value! 序列的最小值大于其最大值! Assignment of a null increment value to the sequence! 不能给序列设置空的自增值! Assignment of null cache value to the sequence! 序列缓冲值不能为空! Allocation of object with invalid type! 不能创建类型无效的对象! Assignment of not allocated language! 没有指定语言! Assignment of language object which type is invalid! 语言对象的类型无效! Reference to data type with an index outside the capacity of data types list! 引用的数据类型不在数据类型列表的范围内! Assignment of invalid type to the object! 对象的类型无效! Obtaining types with invalid quantity! 正确获取的类型的数量无效! Insertion of item which already exists in the attributes list of the type! 插入的项目已存在于类型属性列表! Insertion of invalid item in the attributes list of the type! 插入类型属性列表的项目无效! Insertion of item which already exists in the enumarations list of the type! 插入的项目已存在于类型枚举列表! Insertion of invalid item in the enumerations list of the type! 插入类型枚举列表的项目无效! Assignment of invalid configuration to the type! 类型的配置无效! Assignment of an invalid strategy/support number to an operator class element! 操作符类元素的策略/支持值无效! Insertion of element which already exists in the element list! 插入的元素已存在于元素列表! Removal of an object not allocated! 不能移除未分配的对象! Operation with object(s) which type(s) is invalid! 操作对象的类型无效! Reference to object with invalid type! 引用对象的类型无效! Operation with object not allocated! 无法操作未分配的对象! The relationship of the type 1-1 where both tables are mandatory participation is not implemented because it requires fusion between the tables that breaks the modeling done by the user! 强制执行两表 1-1 关系的功能尚未实现,因为它结合模型中由用户定义的两人互相分离的表! Assignment of an invalid expression to the object! 对象的表达式无效! Assignment of a primary key to a table which already has one! 表的主键已存在! A foreign key can not be added to a relationship because is created automatically when this is connected! 无法给关系添加外键,因为在连接时已经自动添加了! Reference to an user-defined data type that not exists in the model! 引用的用户自定义类型不存在于模型! Assignment of invalid maximum size to operation list! 操作列表的最大值无效! One or more objects were invalidated and automatically removed because they were referencing table columns which were included through relationships and which no longer exists due to disconnection of relationships or exclusion of such generated columns! 一个或者多个对象无效,并自动删除了。因为他们引用的表列所在的关系已经不存在了,由于连接中断或者排除生成的列! Reference to an invalid privilege type! 引用了无效的权限类型! Assignment of privilege incompatible with the type of object referenced by permission! 权限与被允许引用的对象的类型不一致! It is not possible to create arrays of domains or sequences (dimension >= 1)! PostgreSQL does not yet implement this feature! 无法创建维数 > = 1域或序列数组!PostgreSQL 尚未实现此功能! Assignment of invalid name to the table generated from N-N relationship! 分配无效名称给由 N-N 关系生成的表! Constraints like primary key, foreign key or unique must have at least one column related to them! For foreign keys must be selected, in addition, the referenced columns! 主键,外键,唯一键等约束必须有至少一列来关联他们!对于外键约束引用列必须被选中! The export process failed due to an error triggered by the PostgreSQL server in an attempt to execute a SQL command. For more details about the error check the exception stack! ** Executed SQL command: ** %1 导出失败,PostgreSQL 服务器执行 SQL 命令时发生错误!详情请查看返回的异常信息! ××执行的 SQL 语句:×× %1 One or more plugins were not activated due to errors during the loading process! Check the exception stack for more details. 插件加载发生错误,一个或多个插件没有激活!详情请查看异常信息。 Assignment of empty XML buffer to parser! 分配空白 XML 缓存给解析器! Assignment of empty DTD file name! 分配一个空 DTD 文件名! Assignment of empty name to the DTD declaration! 分配空白名称给 DTD 声明! Operation on unallocated element tree! It is necessary to load the XML parser buffer and interpret it so that the tree is generated! 操作在未分配的元素树上!必须要先载入 XML 解析器缓存并执行解析,这样树才能生成! Operation with unallocated tree element! 操作在未分配的树元素上! Operation with element which does not exists in the element tree currently loaded! 操作的元素,在当前载入的元素树中不存在! Assignment of a value to an invalid connection parameter! 给一个无效的连接参数分配一个值! Operation on connection not established! 未能成功连接! Attempt to connect without define configuration parameters! 尝试没有定义配置参数的连接! Assignment of not allocated SQL command result! 指定的 SQL 命令结果不存在! Unable to allocate the result of the SQL command because the response from the DBMS was not understood by the client! 无法获得 SQL 命令结果,因为服务器端的反馈客户端无法识别! Reference to a column of tuple with invalid index! 引用的一列元组索引无效! Reference to a column of tuple with invalid name! 引用的一列元组名字无效! Assignment of a not allocated column to object `%1' (%2)! Assignment of a not allocated schema to object `%1' (%2)! The object `%1' (%2) has inconsistent SQL or XML definition! The object `%1' (%2) already exists on `%3' (%4)! The object `%1' (%2) cannot be assigned because there is already exists in the container object `%3'! Assigning object of an invalid type! The insertion of the parameter `%1' will not be possible because there is another parameter with same name in the function `%2'! The insertion of the table return type `%1' will not be possible because there is another return type with the same name in the `%2'! Reference to a parameter which index is out of the parameter list bounds! The column `%1' cannot be assigned to the trigger `%2' because they belongs to different parent tables! Assignment of a not allocated function to object `%1' (%2)! Assignment of a function which return type is different from `%1'! Assignment of a function which parameter count is invalid to the object `%1' (%2)! Event trigger function must be coded in any language other than SQL! Assignment of not allocated table to object `%1' (%2)! Reference to an argument which index is out of argument list bounds! Assignment of a name which contains invalid characters! Assignment of a name which length exceeds the maximum of 63 characters! Assignment of appended or prepended SQL to an invalid object! Assignment of value to an invalid option type on role! The insertion of the role `%1' is not possible because this is already being referenced by role `%2'! Reference redundancy detected by having the role `%1' referencing the role `%2'! The role `%1' can not be listed as a member of itself! Reference to a role which index is out of role list bounds! Insertion of empty command to the rule! Reference to a command which index is out of the command list bounds! Is not possible to create a self generalization/copy relationship! The table can not inherit or copy their own attributes! Assignment of a start value to the sequence which is extrapolating the range defined by minimum and maximum values! Assignment of owner table which is not in the same schema as the sequence `%1'! Assignment of owner table which does not belong to the same owner of the sequence `%1'! Assignment of a nonexistent owner column to the sequence `%1'! Assignment of an owner column to the sequence `%1' that is not related to any table! Reference to a label which index is out of labels list bounds! Assignment of a function with invalid return type to object `%1' (%2)! Assignment of a function with invalid parameter(s) type(s) to object `%1' (%2)! Assignment of a null type to object `%1' (%2)! Assignment of an empty directory to object `%1' (%2)! Reference to an attribute which index is out of the attributes list bounds! Reference to an enumeration which index is out of the enumerations list bounds! Assignment of an operator which input type count is invalid to aggregate function! Assignment of an operator which types of arguments is invalid! Assignment of system reserved name to the object `%1' (%2)! One function with invalid configuration is been used by the object `%1' (%2)! Reference to an element which index is out of element list bounds! Reference to an object which index is out of object list bounds! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4)! The object `%1' (%2) can not be removed because it is being referenced by object `%3' (%4) that belongs to `%5' (%6)! The creation of the relationship `%1' between the table `%2' and `%3' can not be done because one does not have a primary key. If the relationship is of the type n-n both tables must have primary keys! Identifier relationship can not be created for a self relationship, relationships of the type n-n, copy or generalization! Unable to create a copy relationship because the column `%1' in table `%2' already exists in table `%3'! Unable to create the generalization relationship because the column `%1' in table `%2' can not be merged with the column `%3' of table `%4' because they have incompatible types! Unable to create the generalization relationship because the constraint `%1' in table `%2' can not be merged with the constraint `%3' of table `%4' due to their incompatible composition! An attribute can not be added to a copy or generalization relationship! The object `%1' (%2) is referencing the object `%3' (%4) which was not found in the model! Unable to write the file or directory `%1'! Make sure the output directory exists, or if the user has write permissions over it! Unable to write the file `%1' due to one or more errors in the definition generation process! The configuration of the relationship `%1' generates a redundancy between the relationships `%2'. Redundancy on identifier or generalization/copy relationships are not accepted since they result in incorrect column spreading making the model inconsistent! The primary key `%1' can only be allocated if declared within a block of code that defines a table or relationship! Insertion of a role which already exists in the role list of the permission! There is already a permission on object `%1' (%2) which has one or more equal roles from those present on permission to be assigned to the object! A permission is referencing the object `%1' (%2) which was not found in the model! The object `%1' (%2) can not be created because its not being assigned to any schema! The tablespace `%1' can not be inserted into the model because it points to the same directory as the tablespace `%2'! The function `%1' can not get a source code as a definition because its language is set to C. Use the attributes symbol and dynamic library instead! The function `%1' can have the attributes symbol and dynamic library configured only if the language is set to C. For all other cases you must specify a source code that defines it in the DBMS! The operator `%1' can not be assigned as a comutator of operator `%2' because it has incompatible settings! The operator `%1' can not be assigned as negator of operator `%2' because it has incompatible settings! The type `%1' can not self refer in the attributes `element' or `copy type' or be used as a data type of an attribute in the configuration of a composite type! Assignment of invalid element to type `%1'! Assignment of invalid alignment to type `%1'! The relationship `%1' can not make use of the special primary key because it is marked as identifier or it is a self relationship! The object `%1' (%2) can not be edited or deleted because it was automatically included through a relationship! If the object is an attribute or constraint the modifications must be done on the relationship editing form. The object `%1' (%2) can not be deleted because it is protected! The group `%1' has already been declared earlier! The group `%1' can not be built in the groups declaration block (%2)! The group `%1' was built but not declared in the groups declaration block (%2)! The group `%1' can not be built without possessing child elements! The group `%1' can not be built once more because this was done in previous blocks! The group `%1' has been declared but not built! Reference to a column of the objects table with invalid index! Reference to a row of the objects table with invalid index! The object `%1' (%2) can not be manipulated because it is reserved to PostgreSQL! This object is present in the database model only as a reference! The new configuration of the function invalidates the object `%1' (%2)! In this case it is needed to undo the relationship between the affected object and function in order to the new configuration to take effect! A view reference must be used in at least one these SQL scopes: View Definition, SELECT-FROM, FROM-WHERE or After WHERE! Could not find the default settings file `%1'! To restore default settings check the existence of the file and try again! Could not load the plugin `%1' from the library `%2'! Message returned by plugin manager: `%3' Error while interpreting XML buffer at line %1 column %2. Message generated by the parser: %3. %4 Attempt to start a connection already stablished! Could not connect to the database. Message returned: `%1' Unable to allocate command result for the SQL because the server has generated a fatal error! Message returned by the DBMS: `%1' Reference to a tuple with an invalid index or the result is empty (no tuples)! Reference to a column of a tuple which was not yet initialized (tuple navigation not started)! Could not execute the SQL command. Message returned: `%1' Invalid use of a view reference as whole SQL definition! The assigned reference must be an expression! Assignment of a second definition expression to the view! It is not possible mix ordinary references (SELECT-FROM, FROM-WHERE, After WHERE) with references used as view SQL definition! Assignment of collation object which type is invalid! At the moment pgModeler does not support the creation of primary keys which some columns were generated by relationship connection. To create primary keys with this feature you can use the field `Identifier' or the tab `Primary key' on relationship editing form! Collations must be created at least with attributes LC_COLLATE and LC_CTYPE defined! The object `%1' (%2) cannot reference itself! This operation is not permitted for this kind of object! Only operator families which uses `btree' as indexing method are accepted by operator class elements! Reference to an invalid copy table option! Copy relationship between tables `%1' and `%2' cannot be done because the first one already copies attributes from `%3'! Tables can have only one copy table! The INSTEAD OF mode cannot be used on triggers that belongs to tables! This is available only for view triggers! The TRUNCATE event can only be used when the trigger executes for each statement and belongs to a table! The INSTEAD OF mode cannot be used on view triggers that executes for each statement! Constraint triggers can only be executed on AFTER events and for each row! A view trigger cannot be AFTER/BEFORE when it executes for each row! A trigger cannot make reference to columns when using INSTEAD OF mode and UPDATE event! Assignment of a column which has no parent table to the object `%1' (%2)! Only constraint triggers can be deferrable or reference another table! Reference to a function id which is incompatible with the user define type configuration! The operator class assigned to the object `%1' (%2) must use `btree' as indexing method! The validation process failed due to an error triggered by the validation helper. For more details about the error check the exception stack! The extension `%1' is registered as a data type and cannot have the attribute `handles datatype' modified! The fk relationship `%1' cannot be created because the foreign-key that represents it was not created on table `%2'! Assignement of an invalid object name pattern to the relationship `%1'! Reference to an invalid object name pattern id on the relationship `%1'! Invalid use of variadic parameter mode! This mode can be used only with an array or "any" data type! Mixing incompatibles DBMS export modes: `ignore object duplications', `drop database' or `drop objects' cannot be used with `simulate export'! Mixing incompatibles DROP options: `drop database' and `drop objects' cannot be used at the same time! Invalid object id swapping operation! The objects involved are the same! Invalid object id swapping operation! The database itself, tablespaces or roles cannot have the ids swapped! The widget already has a parent and cannot be assigned to a different object! Could not load the database model file `%1'. Check the error stack to see details. Try to run `pgmodeler-cli --fix-model' in order to correct the structure of the file if that is the case. The column `%1' cannot reference it's parent table `%2' as data type! Operation with an invalid element id `%1'! Reference to an invalid color id `%1' for element `%2'! Assignment of an invalid object to `%1' (%2)! The assigned object must be of type `%3'. The sequence `%1' can't be assigned to the column `%2' because the data type of the latter is incompatible. The type used must be an integer one! The option to generate temporary object names can only be used in simulation mode! It's not possible convert the type of the column `%1' to serial! It must have an `integer' based type and its default value must be a call to `nextval(seq_name::regclass)' function or a sequence object must be directly assigned to the column! Could not assign the variable `%1' to event trigger's filter. Currently, PostgreSQL supports only the `TAG' variable! Could not perform the `%1' operation on `%2' using the data on row `%3'! All changes were rolled back. ** Returned error ** %4 Malformed unescaped value on row `%1' column `%2'! Trying to undo/redo an invalid operation over an object that does not exists anymore or can't be handled! The operation history will be cleaned up. The object `%1' (%2) can't be handled because some needed fields are not set! Please, make sure to fill at least the requires fields in order to properly create or update the object. A relationship can only be swapped by other object of the same kind! A parent table of `%1' which OID is `%2' was not found in the set of imported objects! The enumeration `%1' can't be assigned to the type `%2' because contains invalid characters! The enumeration `%1' can't be assigned to the type `%2' because is too long! The connection was idle for too long and was automatically closed! The connection was unexpectedly closed by the database server `%1' at port `%2'! There is already a relationship between `%1' (%2) and `%3' (%4) in the model! When using relationships of the type generalization, copy and one-to-one there can't be other relationships linked to the pair of tables. Unable to load the configuration file `%1'! Please check if file exists in its folder and/or if it is not corrupted! Invalid syntax in file `%1', line %2, column %3! Invalid instruction `%1' on file `%2', line %3, column %4! Unknown attribute `%1' in file `%2', line %3, column %4! Invalid metacharacter `%1' in file `%2', line %3, column %4! Invalid operator `%1' in comparison expression, file `%2', line %3, column %4! Attribute `%1' with an undefined value in file `%2', line %3, column %4! Attribute `%1' with an invalid name in file `%2', line %3, column %4! Could not access the file or directory `%1'! Make sure that it exists or if the user has access permissions on it! Could not load file `%1'. The same appears to be inconsistent or one of its dependencies (DTD files) has errors or is missing! Unsupported PostgreSQL version (%1) detected! Valid versions are between %2 and %3. The object `%1' (%2), oid `%3', could not be imported due to one or more errors! Check the exception stack for more details. `HINT:' if the object somehow references objects in `pg_catalog' or `information_schema' consider enable the importing of system objects. Failed to drop the database `%1' because it is defined as the default database for the connection `%2'! The column `%1' must be `NOT NULL' because it composes the primary key of the table `%2'. You need to remove the column from the mentioned contraint in order to disable the `NOT NULL' on it! The identity column `%1' has an invalid data type! The data type must be `smallint', `integer' or `bigint'. Reference to an invalid affected command in policy `%1'! Reference to an invalid special role in policy `%1'! ExtensionWidget Version: 版本: Old Version: This attribute cannot be changed once the object is created. Handles data type FindReplaceWidget Form Form Replace one occurrence Replace Replace all occurrences Replace All Replace the selection and find the next one Replace && Find Replace: Find: Find previous Shift+F3 Find next F3 F3 Case sensitive Regular expression Whole words Hide this widget ... FunctionWidget Attributes 属性 Function Type: 函数类型: Execution Cost: 执行开销: Rows Returned: 返回行数: Behavior: 行为: Security: 安全: Return Method: 返回方法: Set Parameters 参数 Definition 定义 Dynamic Library: 动态库: Symbol: 符号: Library: 库: Source code: 源代码: Column Type 类型 Name 名称 Default Value 默认值 Return Table 返回表 Si&mple Tab&le Windown Func. Leakproof Mode Language: GeneralConfigWidget Operation history: 操作记录: Print grid 打印网格 Print page numbers 打印页码 Paper: 纸型: Orientation: 方向: Portrait 纵向 Landscape 横向 Milimeters 毫米 Inches 英寸 Centimeter 厘米 Left: 左: Left margin 左边距 Top: 上: Top margin 上边距 Right: 右: Right margin 右边距 Form Form A0 (841 x 1189 mm) A0 (841 x 1189 mm) A1 (594 x 841 mm) A1 (594 x 841 mm) A2 (420 x 594 mm) A2 (420 x 594 mm) A3 (297 x 420 mm) A3 (297 x 420 mm) A4 (210 x 297 mm) A4 (210 x 297 mm) A5 (148 x 210 mm) A5 (148 x 210 mm) A6 (105 x 148 mm) A6 (105 x 148 mm) A7 (74 x 105 mm) A7 (74 x 105 mm) A8 (52 x 74 mm) A8 (52 x 74 mm) A9 (37 x 52 mm) A9 (37 x 52 mm) B0 (1030 x 1456 mm) B0 (1030 x 1456 mm) B1 (728 x 1030 mm) B1 (728 x 1030 mm) B10 (32 x 45 mm) B10 (32 x 45 mm) B2 (515 x 728 mm) B2 (515 x 728 mm) B3 (364 x 515 mm) B3 (364 x 515 mm) B4 (257 x 364 mm) B4 (257 x 364 mm) B5 (182 x 257 mm) B5 (182 x 257 mm) B6 (128 x 182 mm) B6 (128 x 182 mm) B7 (91 x 128 mm) B7 (91 x 128 mm) B8 (64 x 91 mm) B8 (64 x 91 mm) B9 (45 x 64 mm) B9 (45 x 64 mm) C5E (163 x 229 mm) C5E (163 x 229 mm) Comm10E (105 x 241 mm) Comm10E (105 x 241 mm) DLE (110 x 220 mm) DLE (110 x 220 mm) Executive (191 x 254 mm) Executive (191 x 254 mm) Folio (210 x 330 mm) Folio (210 x 330 mm) Ledger (432 x 279 mm) Ledger (432 x 279 mm) Legal (216 x 356 mm) Legal (216 x 356 mm) Letter (216 x 279 mm) Letter (216 x 279 mm) Tabloid (279 x 432 mm) Tabloid (279 x 432 mm) Pixels 像素 Bottom: 下: Bottom margin 下边距 General && Design General 常规 Check if there is a new version on server Design Disable antialiasing for lines and texts improving performance when handling huge models. Disable render smoothness Triggers a dialog asking the user to validate the model before a save, export or diff operation. Validate before save, export or diff Start move the canvas when the cursor is on the canvas edges Move canvas by keep mouse on corners Graphical objects (table, views and textboxes) will be created in a single step without the need to click on canvas Simplify creation of graphical objects After loading the model the last zoom and position on canvas will be restored Save and restore last position and zoom When enabled this option creates a placeholder object at the previous table's position when starting to move it. This will cause graphical updates on relationship lines to be performed only when the drag & drop action is done improving the performance. Disabling placeholders will cause those updates to be executed every time the table's position changes a single pixel (classical behavior). Use placeholders when moving tables Hide the portion of table which represent triggers, indexes and rules Hide table extended attributes Hide the object which represents the tag assigned to the table Hide table tags Hide the object that represents the relationship name Hide relationship name Toggles the code completion in all fields that accepts the input of SQL commands. Enable SQL code completion Printing && Code Code style Size: Font: 字体: Colors: 颜色: Options: 选项: Display line numbers Highlight lines at cursor's position pt pt Custom tab width: Printing Custom Unity: Custom Size: Width: Height: Page Margins: Line numbers' font color Line numbers' background color Highlighted line color The little brown fox jumps over the lazy dog Minimum object opacity (%): Defines the minimum opacity percentage applied to the objects when using the fade out feature. A zero opacity causes the object to be completely hidden not being possible to interact with it in the canvas area. Canvas grid size: Defines the vertical and horizontal grid size. This value affects the spacing of objects when using object grid alignment feature. By default the range selection is triggered with Shift + left click. By checking this option range selection will be activated only with a single click and move. Trigger range selection with a single click Defines the maximum amount of elements held in the operation history. Once reached the maximum number the history is automatically cleaned. Defines the period when the opened models will be saved automatically. Autosave interval (minutes): Replaces any straight line in relationship by curved ones in order to improve the model's visualization. Use curved lines for relationships Souce code editor args: lines Clear the entire SQL comand history. Clear history Open in file manager 在文件管理器中打开 Overrides the default user interface language defined by the system. Requires restarting the program. <strong>NOTE:</strong> UI translations are third party collaborations thus any typo or mistake should be reported directly to their respective maintainers. SQL history max. length: Check updates at startup User interface language: Browse the source code editor application Souce code editor: Configurations directory: System default All files (*.*) Load file GenericSQLWidget SQL code HintTextWidget Form Form IndexWidget Fill Factor: 填充因子: Options: 选项: Concurrent 并发 Fast update 快速更新 Elements 元素 Attributes 属性 Indexing: Unique Buffering Predicate: LanguageWidget Trusted: 可信: The functions to be assigned to the language should have, respectively, the following signatures:<br/><br/> <strong>Handler Function:</strong> <em>language_handler function()</em><br/> <strong>Validator Function:</strong> <em>void function(oid)</em><br/> <strong>Inline Function:</strong> <em>void function(internal)</em> 语言处理函数的签名分别为:<br/><br/> <strong>处理函数:</strong> <em>language_handler function()</em><br/> <strong>验证函数:</strong> <em>void function(oid)</em><br/> <strong>内联函数:</strong> <em>void function(internal)</em> Validator Func.: Handler Func.: Inline Func.: MainWindow &File 文件(&F) &Edit 编辑(&E) &Show 视图(&S) New 新建 Zoom - 缩小 Show grid 显示网格 Show the page delimiters 显示分页符 Save '%1' as... 保存 '%1' 为... Confirmation 确认 Load model 打开模型 Show the model overview 显示模型概览 pgModeler - PostgreSQL Database Modeler pgModeler - PostgreSQL 数据库建模工具 Plugins 插件 Ctrl+N Ctrl+N Ctrl+S Ctrl+S Zoom in 放大 Ctrl+= Ctrl+= Zoom out 缩小 Ctrl+- Ctrl+- Ctrl+O Ctrl+O Ctrl+P Ctrl+P Ctrl+Z Ctrl+Z Ctrl+Y Ctrl+Y Ctrl+G Ctrl+G Ctrl+0 Ctrl+0 Align objects position to grid 对齐对象到网格 Ctrl+L Ctrl+L Save all 保存全部 Database model printing 正在打印数据库模型 Changes were detected in the definitions of paper/margin of the model which may cause the incorrect print of the objects. Do you want to continue printing using the new settings? To use the default settings click 'No' or 'Cancel' to abort printing. 模型的纸型/页边距已改变,这可能导致对象打印出错。要使用新的设置继续打印吗?要使用默认设置,请单击“否”或“取消”中止打印。 Database model (*.dbm);;All files (*.*) 数据库模型 (*.dbm);; 所有文件 (*.*) Save model 保存模型 Ctrl+Q Ctrl+Shift+S Ctrl+W Ctrl+H F10 F10 F1 F1 This action will open a web browser window! Want to proceed? Saving temp. models Toogle the model validation widgets &Validation Alt+V Toggle the object finder Find Object Ctrl+F Toggle the operation history widget &Operations Alt+O Toggle the model objects widget O&bjects Alt+B He&lp Pl&ugins General 常规 Controls &New New model &Save &Zoom in Zoo&m out &Load Sa&ve as E&xit Exit pgModeler &About pgModeler F4 F4 &Print Print model &Undo Undo operation &Redo Redo operation &Export 导出(&E) Export the current opened model in different modes Ctrl+Shift+E &Show grid &Close 关闭(&C) Close current model &Normal zoom &Align to grid Show &delimiters &Settings Edit pgModeler settings F12 F12 &Overview &Support Access the support page New object 新建对象 Access the list of loaded plugins &Recent Models Load recently opened model &Import Import existing database to new model (reverse engineering) Ctrl+Shift+I Rest&ore Session &Fix a model New version found! Update for the current version is available on project's site &Check for update action_main_menu Main menu Show expanded Expands the main menu bar in classical mode Hide main menu Hides the main menu bar and put the action on a separated action Ctrl+Shift+H &Diff Ctrl+Shift+D Welcome Welcome screen Shift+W Design Design database models Shift+D Manage Manage existent databases Shift+M &Bug report Report a bug Donate Help pgModeler by donating! Objects me&tadata Objects metadata (Demo) Save modified model(s) The following models were modified but not saved: %1. Do you really want to quit pgModeler? Clear Menu The demonstration version can create only `one' instance of database model! The model <strong>%1</strong> was modified! Do you really want to close without save it? Warning You're running a demonstration version! The model saving feature is available only in the full version! <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! It's recommended to validate it before save in order to create a consistent model otherwise the generated file will be broken demanding manual fixes to be loadable again! Save anyway Validate <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the export process it's recommended to validate in order to correctly create the objects on database server! Export anyway <strong>WARNING:</strong> The model <strong>%1</strong> is invalidated! Before run the diff process it's recommended to validate in order to correctly analyze and generate the difference between the model and a database! Diff anyway Could not load the database model file `%1'. Check the error stack to see details. You can try to fix it in order to make it loadable again. Fix model Cancel 取消 Access support page (no samples found) You're running a demonstration version! Note that you'll be able to create only <strong>%1</strong> instances of each type of object and some key features will be disabled or limited!<br/><br/>You can purchase a full binary copy or get the source code at <a href='http://pgmodeler.com.br'>pgmodeler.com.br</a>. <strong>NOTE:</strong> pgModeler is an open source software, but purchasing binary copies or providing some donations will support the project and cover all development costs.<br/><br/> <strong>HINT:</strong> in order to test all features it's recommended to use the <strong>demo.dbm</strong> model located in </strong>Sample models</strong> at <strong>Welcome</strong> view.<br/><br/><br/><br/> save export diff Executing pending <strong>%1</strong> operation... Determine the changes between model/database and another database Arrange objects Rearrange objects over the canvas Grid Hierarchical Scattered Rearrange objects over the canvas is an irreversible operation! Would like to proceed? Messagebox Dialog Dialog msg 信息 Exceptions 异常 Show raw text errors or information. Show/hide exceptions stack. 显示/隐藏异常堆栈。 ... &Yes 是(&Y) &No 否(&N) Cancel 取消 &Ok 确定(&O) &Cancel 取消(&C) Error 错误 Alert 警告 Information 信息 Confirmation 确认 MetadataHandlingForm Handle metadata &Apply 应用(&A) &Cancel 取消(&C) Handle objects metadata Settings Extract from: Loading a metadata file to the current model is an irreversible operation so be sure to specify a backup file before proceed. Options Handles the following database model attributes in the metadata file: author, zoom factor, last position and default objects. Database model metadata Handles the objects' positioning in the metadata file. Objects' positioning Handles the objects' custom colors in the metadata file. Currently available only for relationships and schemas. Custom object's colors Handles the objects' protection status in the metadata file. Objects' protection status Handles the objects' SQL disabled status in the metadata file. Objects' SQL disabled status Handles the objects' custom SQL commands in the metadata file. Custom SQL commands Textbox objects Tag objects Backup file: Select file ... Apply to: Operation: Output Progress label... 处理标签... model not saved yet The backup file cannot be the same as the input model! Extracting metadata to file `%1' Saving backup metadata to file `%1' Applying metadata from file `%1' Metadata processing aborted! Objects metadata file (*.omf);;All files (*.*) Handles the objects' fade out status in the metadata file. Objects' fade out status Save tags to the output file when extracting metadata. When loading the file, the tags are recreated and duplicated ones are ignored. Save textboxes to the output file when extracting metadata. When loading the file, the textboxes are recreated and duplicated ones are ignored. Handles the tables' and views' extended attributes display status in the metadata file. Tables' extended attributes display Save generic SQL objects to the output file when extracting metadata. When loading the file, the objects are recreated and duplicated ones are ignored. Generic SQL objects Extracts the objects' metadata from the loaded models and apply to the current focused model. A backup file can be specified to where the focused model's current metadata will be saved. &Extract and restore Extracts the objects metadata from one of the loaded models saving the info to a backup file. Extract &only Reads the objects' metadata from a previously saved backup file and apply to the current model. &Restore a backup file ModelDatabaseDiffForm Settings Connection: 连接: Database: Ignores as many as possible errors on import step. This option generates an incomplete diff. Ignore import errors Clears the data of all tables which will have columns modified. This is useful to avoid errors related to type casting. <strong>WARNING:</strong> DO NOT use this option on production servers and always make a backup before use it. Import system (built-in) objects. Use this if the import step is returning errors related to missing objects. Import system objects Import objects created by extensions. Use this if the import step is returning errors even importing built in ones. Import extension objects For DROP command, the objects that depends on an object to be dropped will be deleted as well. For TRUNCATE command, tables that are linked to a table to be truncated will be truncate too. <strong>NOTE:</strong> this option can affect more objects than listed in the output or diff preview. Drop or truncate in cascade mode Permissions already set on database objects will be kept.The ones configured on the model will be applied to the database. Keep object's permissions Database cluster level objects like roles and tablespaces will not be dropped. Keep cluster objects Recreate only unmodifiable objects Instead of use an ALTER command to modify certain kind of objects a DROP and CREATE will be used in order to do a full modification. This option does not affects the database object. Force recreation of objects Ignores errors generated by duplicated objects when exporting the diff to database. Ignore duplicity errors Serial columns are converted to integer and having the default value changed to <strong>nextval(sequence)</strong> function call. By default, a new sequence is created for each serial column but checking this option sequences matching the name on column's default value will be reused and will not be dropped. Reuse sequences on serial columns No command to rename the destination database will be generated even the model's name differ from database name. Preserve database name Avoid the generation of DROP commands for objects that exists in database but not in the model. This is useful when diff a partial model against the complete database. Do not drop missing objects Diff mode Override the PostgreSQL version when generating the diff. The default is to use the same version as the input database. Use PostgreSQL: Compares the model and the input database storing the diff in a SQL file for later usage. Store in S&QL file File: 文件: Select output file ... Compares the model and the input database generating a diff and applying it directly to the latter. <strong>WARNING:</strong> this mode causes irreversible changes on the database and in case of failure the original structure is not restored, so make sure to have a backup before proceed. Appl&y on server Output Changes: Cancel 取消 Progress label... 处理标签... Step label... <html><head/><body><p>Objects marked with an <span style=" font-weight:600;">ALTER</span> may not be effectively changed unless that the differences detected are in attributes that can be modified through ALTER commands otherwise no operation will be performed or, if the force recreation is checked, the object will be dropped and created again.</p></body></html> Objects to be created 0 0 Objects to be dropped Possible objects to be changed Ignored objects (system ones or with sql disabled) Diff Preview &Apply diff &Generate &Close 关闭(&C) Waiting process to start... Confirmation 确认 <strong>WARNING:</strong> The generated diff is ready to be exported! Once started this process will cause irreversible changes on the database. Do you really want to proceed? Apply diff Preview diff Diff process paused. Waiting user action... Saving diff to file <strong>%1</strong> Diff process sucessfully ended! No operations left. Operation cancelled by the user. Process aborted due to errors! -- SQL code purposely truncated at this point in demo version! -- No differences were detected between model and database. -- Error code <strong>%1</strong> found and ignored. Proceeding with export. Save diff as... SQL code (*.sql);;All files (*.*) SQL 代码 (*.sql);;所有文件 (*.*) Diff tool Generate diff code Source database Current model: (model) Compare to Diff Froce the generation of DROP commands for columns and constraints that exist in database but not in the model. This is useful when diff a partial model against the complete database and the user needs to drop columns and constraint but preserve the rest of the objects. Drop missing columns and constraints Truncate tables before alter columns Import && Export Import Export 导出 This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Ignore error codes model not saved yet (none) Step %1/%2: Importing database <strong>%3</strong>... Step %1/%2: Comparing <strong>%3</strong> and <strong>%4</strong>... Step %1/%2: Exporting diff to database <strong>%3</strong>... ModelExportForm File: 文件: Select target file 选择目标文件 PostgreSQL version in which the SQL code should be generated 生成 SQL 代码的 PostgreSQL 版本 Show grid 显示网格 Ignore object duplicity 忽略重复对象 Connection: 连接: &Export 导出(&E) &Close 关闭(&C) Initializing model export... 正在初始化模型导出... Saving file '%1' 正在保存文件 '%1' Exporting process sucessfuly ended! 成功导出! Export model as... 导出模型为... ... ... PostgreSQL: PostgreSQL: Progress label... 处理标签... Export model Settings Database server pgModeler ignores errors generated by duplicated objects and creates only that ones which does not exists in the database. This option may be used when an object was created after a previous model export. PostgreSQL version in which the SQL code should be generated. It is recommended to select this option only when the version of the DBMS, somehow, is not identifiable or if you need to generate a specific version of SQL code for test purposes. If <strong>DB</strong> is checked pgModeler will destroy the database if already exists on the server. When <strong>Objects</strong> is checked pgModeler will execute the DROP command attached to SQL-enabled objects. <strong>WARNING:</strong> this option leads to data loss so make sure to have a backup first. Drop: DB Ob&jects pgModeler will destroy the database if already exists on the server. Make sure to have a backup before use this option because all data will be lost. Graphics file Type: 类型: Zoom: Show delimiters 显示分页符 Exporting the model page by page will generate files with a <strong>_p[n]</strong> suffix where <strong>n</strong> is the page id. Check if the current user has write permission on output folder. Page by page SQL file Output Cancel 取消 Error code <strong>%1</strong> found and ignored. Proceeding with export. Exporting process aborted! SQL script (*.sql);;All files (*.*) Portable Network Graphics (*.png);;All files (*.*) Scalable Vector Graphics (*.svg);;All files (*.*) Exporting process canceled by user! This advanced option causes pgModeler to ignore extra errors by their numeric codes. These errors must be informed in the input below and separeted by space. For the complete list of error codes check the PostgreSQL docs, section <strong> Appendix A. PostgreSQL Error Codes</strong>. <strong>WARNING:</strong> use this option with extreme care since it can interfere in final export result. Ignore error codes I&mage (PNG) &Vectorial (SVG) ModelExportHelper Generating SQL code for PostgreSQL `%1' Output SQL file `%1' successfully written. Rendering objects to page %1/%2. Output image `%1' successfully written. Exporting model to SVG file. SVG representation of database model SVG file generated by pgModeler Output file `%1' successfully written. Starting export to DBMS. PostgreSQL version detection overridden. Using version `%1'. PostgreSQL `%1' server detected. Generating temporary names for database, roles and tablespaces. Enabling the SQL code for database `%1' to avoid errors. Ignoring object duplication errors. Ignoring the following error code(s): `%1'. Trying to drop database `%1'. Simulation mode activated. Creating object `%1' (%2) Creating database `%1' Connecting to database `%1' Generating SQL for `%1' objects... Destroying objects created on the server. Restoring original names of database, roles and tablespaces. Renaming `%1' (%2) to `%3' Dropping object `%1' (%2) Changing object `%1' (%2) Running auxiliary command. ModelFixForm Model file fix Fix model file <html><head/><body><p>[pgmodeler-cli not found error]</p></body></html> pgmodeler-cli: Browse for pgmodeler-cli tool ... The specified file is not the pgModeler command line tool (pgmodeler-cli). Input file: Output file: Fix tries: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Monospace'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Waiting process to start...</span></p></body></html> Select input file Select output file Load fixed model when finish In some cases the fix process will fail to restore all objects within the model demanding manual fixes by changing the file on a text editor. <strong>NOTE:</strong> relationships may lost their graphical configuration like custom points and line color. &Fix &Close 关闭(&C) Waiting process to start... Could not locate <strong>%1</strong> tool on <strong>%2</strong>. The fix process can't continue! Please check pgModeler installation or try to manually specify the command below. pgModeler command line tool (%1) ModelNavigationWidget Form Form Previous model Ctrl+Left Next model Ctrl+Right Close model 关闭模型 ... Alt+C (model not saved yet) ModelObjectsWidget Model Objects 1 1 Object 对象 Type 类型 Parent Object 父对象 Parent Type 父类型 Select All 选择全部 Clear All 取消全部 Select 选择 Cancel 取消 Tree view 树视图 ... List view 列表视图 Objects view configuration 对象视图配置 Expands all items Collapses all items New 新建 Hide this widget ID Return Esc Filter: By ID Visible object types Model objects ModelOverviewWidget Model overview 模型概览 Failed to generate the overview image. The requested size %1 x %2 was too big and there was not enough memory to allocate! ModelRestorationForm Model restoration 模型恢复 &Restore 恢复(&R) &Cancel 取消(&C) pgModeler was not closed properly in a previous execution and some models were still being edited. Click <strong>Restore</strong> to reopen the models or <strong>Cancel</strong> to abort the restoration. pgModeler will try to recover the selected models but will not destroy them in case of loading failure. This option serves as a last resort in order to try to recover the database model. Temporary models will last until the application is closed so the user must try to manually recover the files before exit pgModeler. Keep temporary models in case of restoration failure Database 数据库 File 文件 Modified Size ModelValidationHelper There are pending errors! SQL validation will not be executed. Operation canceled by the user. ModelValidationWidget Form Form Hide this widget ... Enables the validation of SQL code in DBMS. This process requires the use of a pre-configured connection. SQL validation will occur only in the last step (when all objects were validated) or when there are no warnings. SQL Validation: Connection to be used in the SQL validation PostgreSQL version pgModeler will generate unique and temporary names for database, role and tablespace objects. This option avoids object duplication errors when running the SQL validation. Use unique temporary names for cluster level objects Clear validation results Clear Try to resolve the reported issues. Ctrl+S Ctrl+S Change the creation order for two objects by swapping their ids Va&lidate Warnings: does not prevents model to be saved. 0 0 Errors: model will not be saved while there are validation errors. Cancel the SQL validation in progress. Cancel 取消 Esc Try to apply a fix on the selected validation info. Options Autodetect The object <strong>%1</strong> <em>(%2)</em> [id: %3] is being referenced by <strong>%4</strong> object(s) before its creation. The object <strong>%1</strong> <em>(%2)</em> [id: %3]%4 is referencing columns created by <strong>%5</strong> relationship(s) but is created before them. The object <strong>%1</strong> <em>(%2)</em> has a name that conflicts with <strong>%3</strong> object's name(s). The relationship <strong>%1</strong> [id: %2] is in a permanent invalidation state and needs to be relocated. SQL validation failed due to error(s) below. <strong>NOTE:</strong><em> These errors does not invalidates the model but may affect operations like <strong>export</strong> and <strong>diff</strong>.</em> <strong>HINT:</strong> try to swap the relationship by another ones that somehow are linked to it through generated columns or constraints to solve this issue. Note that other objects may be lost in the swap process. <em>The above object was created by a relationship. Change the name pattern on it's generator relationship. Fix will not be applied!</em> Conflicting object: <strong>%1</strong> <em>(%2)</em>. Relationship: <strong>%1</strong> [id: %2]. Referrer object: <strong>%1</strong> <em>(%2)</em> [id: %3]. SQL validation not executed! No connection defined. Database model successfully validated. Running SQL commands on server... Processing object: %1 Apply fixes Swap ids The column <strong>%1</strong> on <strong>%2</strong> <em>(%3)</em> is referencing the geospatial data type <strong>%4</strong> but the <strong>postgis</strong> extension is not present in the model! <strong>HINT:</strong> Create the extension in the model or let it be created by applying the needed fixes. ModelWidget Source code 源代码 Show object source code 显示对象源代码 Properties 属性 Edit the object properties 修改对象属性 Protect 保护 Unprotect 取消保护 Delete 删除 Select all 选择全部 Selects all the graphical objects in the model 选择模型中的全部图形对象 Copy 复制 Paste 粘贴 Cut 剪切 Add a new object in the model 添加新对象到模型中 Rename 重命名 Quick rename the object 快速重命名此对象 Move to schema 移动到模式 Edit permissions 编辑权限 Change owner 变更所有者 Select children 选择子对象 Loading database model 正在载入数据库模型 Saving database model 正在保存数据库模型 Also copy all dependencies of selected objects? This minimizes the breakdown of references when copied objects are pasted into another model. 同时复制选中对象的依赖对象吗?这会最大限度减小已复制对象被粘贴到其他模型时,发生引用失效的机会。 Pasting objects... 正在粘贴对象... Not all objects were pasted to the model due to errors returned during the process! Refer to error stack for more details! 处理过程中发生错误,部分对象没有被粘贴到模型中。详情请见错误堆栈! Do you really want to delete the selected object? 确定要删除选中的对象吗? Constraints 约束 Protects object(s) from modifications (no objects) One to One (1-1) One to Many (1-n) Many to Many (n-n) Inheritance <strong>ATTENTION:</strong> The database model is protected! Operations that could modify it are disabled! Source Alt+S Space Space Del Del Del. cascade Shift+Del Shift+Del Ctrl+A Convert Ctrl+C Ctrl+V Ctrl+X Deps && Referrers New 新建 Quick Quick action for the selected object F2 F2 Set tag Ctrl+E Open relationship Custom SQL Alt+Q Convert to sequence Convert to serial Break line Remove points Enable SQL Disable SQL 90° (vertical) 90° (horizontal) 90° + 90° (vertical) 90° + 90° (horizontal) Zoom: %1% Do you really want to convert the relationship into an intermediate table? Do you want to %1 the selected schema's children too? protect unprotect Validating object: `%1' (%2) Generating XML for: `%1' (%2) Pasting object: `%1' (%2) <strong>CAUTION:</strong> You are about to delete objects in cascade mode which means more objects than the selected will be dropped too. Do you really want to proceed? <strong>CAUTION:</strong> Remove multiple objects at once can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? <strong>CAUTION:</strong> Remove a relationship can cause irreversible invalidations to other objects in the model causing such invalid objects to be deleted too. Do you really want to proceed? The cascade deletion found some problems when running! Some objects could not be deleted or registered in the operation's history! Please, refer to error stack for more details. Edit data Select tagged Select 选择 Duplicate Ctrl+D Extended attributes Show 显示 Hide Jump to table Schemas rectangles Fade in/out Fade in Fade out Relationships Swap ids Edit the objects creation order by swapping their ids All objects Schemas Tables Views Textboxes None ModelsDiffHelper Processing object `%1' (%2)... Skipping object `%1' (%2)... Processing diff infos... Processing `%1' info for object `%2' (%3)... No differences between the model and database. Preparing diff code... NewObjectOverlayWidget Form Form Tag Cast 类型转换 A Textbox 文本框 Tablespace 表空间 Schema 模式 Language 语言 Role 角色 Event Trigger Domain Conversion 编码转换 Aggregate 聚合 Collation Table Type 类型 Op. Family Sequence 序列 Extension Function 函数 View 视图 Permissions 权限 Op. Class Operator 操作符 Constraint 约束 Column Index 索引 Trigger 触发器 Rule 规则 Many-to-many One-to-many One-to-one Inheritance Copy 复制 G K H J D E F L O U I R S Q T P M M Y W 9 9 Z Z X C V B 1 1 2 2 3 3 5 5 4 4 0 0 Generic SQL Policy 8 8 NumberedTextEditor Upper case Lower case Ident right Ident left Load 打开 Load the object's source code from an external file Edit 编辑 Edit the source code in the preferred external editor Clear SQL file (*.sql);;All files (*.*) Load file The source editor `%1' is running on `pid: %2'. Could not start the source code editor application `%1'! Make to sure that the source editor path defined in the general settings points to a valid executable and the current user has permission to run the application. Error message returned: `%2' ObjectDepsRefsWidget Dependencies 依赖 Object 对象 Type 类型 Parent Object 父对象 Parent Type 父类型 References 引用 Object's dependencies & references ID Exclude indirect dependencies Include indirect references This object does not exists anymore. The dependencies and references listing are disabled. ObjectFinderWidget Form Form Pattern: Defines the search filter Filter Clears the search results Clear ... Hide this widget Regular Expression Exact Match Select All 选择全部 Clear All 取消全部 Case Sensitive ID Object 对象 Type 类型 Parent Object 父对象 Parent Type 父类型 Find Found <strong>%1</strong> object(s). No objects found. (Un)selects the graphical objects in the results grid Select 选择 Fades outs all the graphical objects in the results grid (or those not listed). The current fade in/out state of all objects is modified. Fade out Listed Not listed ObjectRenameWidget Form Form .... to: Rename 重命名 Cancel 取消 ObjectSelectorWidget Clear field 清空字段 Select Object 选择对象 Form Form Select %1 ObjectsTableWidget Form Form Add Item 添加项目 Ins Ins Remove Item 移除项目 Del Del Update Item 更新项目 Alt+R Alt+R Remove All 删除全部 Shift+Del Shift+Del Duplicate item Ctrl+D Edit Item 编辑项目 Space Space Move Up 上移 Ctrl+Up Ctrl+Up Move Down 下移 Ctrl+Down Ctrl+Down Move to start 移至开头 Ctrl+Home Ctrl+Home Move to end 移至末尾 Ctrl+End, Ctrl+S Ctrl+End, Ctrl+S Confirmation 确认 Do you really want to remove the selected item? 要移除选中的项目吗? Do you really want to remove all the items? OperationList (invalid object) OperationListWidget Executed Operations 执行的操作 Operations: 操作: Position: 位置: Delete operation history 删除操作记录 Undo 撤销 Redo 重做 Object: %1 对象:%1 Name: %1 名称:%1 removed 删除成功 modified 修改成功 moved 移动成功 Operation: %1 操作:%1 Operation history exclusion 不显示操作记录 Delete the executed operations history is an irreversible action, do you want to continue? 删除操作记录是不可逆操作,要继续吗? 1 1 0 0 created 创建成功 Hide this widget ... OperatorClassWidget Default Class: 默认类: Indexing: 索引类型: Elements 元素 Operator 操作符 Function 函数 Storage 存储 Function: 函数: Operator: 操作符: Support/Strategy: 支持/策略: Storage Type 存储类型 Object 对象 Type 类型 Support/Strategy 支持/策略 Element Type: Op. Family: Operator Family 操作符族 OperatorFamilyWidget Indexing: 正在建立索引: OperatorWidget Options: 选项: Arguments 参数 Right Argument Type 右参数类型 Left Argument Type 左参数类型 To create a unary operator it is necessary to specify as <strong><em>'any'</em></strong> one of its arguments. Additionally, the function that defines the operator must have only one parameter and this, in turn, must have the same data type of the the argument of unary operator. 在创建单目操作符时必须指定它们参数中的<strong><em>任何</em></strong>一个。另外,作为操作符的函数必须有且只有一个参数,而且这个参数的类型必须与单目操作符参数的类型相同。 MERGES 融合连接 (MERGES) HASHES 哈希连接 (HASHES) Join: 连接: Advanced Restrict: Negator: Operator Func.: Commutator: ParameterWidget Default Value: 默认值: Mode: 模式: IN IN OUT OUT VARIADIC PermissionWidget Roles 角色 Privileges 权限 Cancel Operation 取消操作 Update Permission 更新权限 Add Permission 添加权限 ID: ID: Permissions 权限 GRANT OPTION CRANT OPTION Id Id Privilege 权限 Disable SQL code Cascade Edit permissions 编辑权限 &Grant Re&voke Code Preview 代码预览 -- No permissions defined for the specified object! /* Could not generate the SQL code preview for permissions! Name 名称 Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. PgModelerCLI Unrecognized option '%1'. Value not specified for option '%1'. Option '%1' does not accept values. Usage: pgmodeler-cli [OPTIONS] command line interface. DBMS export options: Input file must be different from output! Incomplete connection information! Starting model export... General options: PNG and SVG export options: Miscellaneous options: There are no connections configured. Invalid zoom specified! Invalid action specified to update mime option! Starting model fixing... Starting mime update... Model successfully fixed! Extracting objects' XML... Invalid input file! It seems that is not a pgModeler generated model or the file is corrupted! Recreating objects... ** Object(s) that couldn't fixed: WARNING: There are objects that maybe can't be fixed. Trying again... (tries %1/%2) Database model files (.dbm) are already associated to pgModeler! There is no file association related to pgModeler and .dbm files! Mime database operation: %1 Can't erase the file %1! Check if the current user has permissions to delete it and if the file exists. Running update-mime-database command... Connection aliased as '%1' was not found in the configuration file. PostgreSQL Database Modeler Project - pgmodeler.io Copyright 2006-2018 Raphael A. Silva <raphael@pgmodeler.io> This CLI tool provides several operations over models and databases without the need to perform them in pgModeler's graphical interface. All available options are described below. %1, %2 [FILE] Input model file (.dbm). This is mandatory for fix, export operations. %1, %2 [DBNAME] Input database name. This is mandatory for import operation. %1, %2 [FILE] Output file. This is mandatory for fixing model or exporting to file, png or svg. %1, %2 Try to fix the structure of the input model file in order to make it loadable again. %1, %2 [NUMBER] Model fix tries. When reaching the maximum count the invalid objects will be discarded. %1, %2 Export the input model to a sql script file. %1, %2 Export the input model to a png image. %1, %2 Export the input model to a svg file. %1, %2 Export the input model directly to a PostgreSQL server. %1, %2 Import a database to an output file. %1, %2 Compares a model and a database or two databases generating the SQL script to synch the latter in relation to the first. %1, %2 Force the PostgreSQL version of generated SQL code. %1, %2 Silent execution. Only critical messages and errors are shown during process. %1, %2 Show this help menu. Connection options: %1, %2 List available connections in file %3. %1, %2 [ALIAS] Connection configuration alias to be used. %1, %2 [HOST] PostgreSQL host in which a task will operate. %1, %2 [PORT] PostgreSQL host listening port. %1, %2 [USER] PostgreSQL username. %1, %2 [PASSWORD] PostgreSQL user password. %1, %2 [DBNAME] Connection's initial database. %1, %2 Draws the grid in the exported image. %1, %2 Draws the page delimiters in the exported image. %1, %2 Each page will be exported in a separated png image. (Only for PNG images) %1, %2 [FACTOR] Applies a zoom (in percent) before export to png image. Accepted zoom interval: %3-%4 (Only for PNG images) %1, %2 Ignores errors related to duplicated objects that eventually exist in the server. %1, %2 [CODES] Ignores additional errors by their codes. A comma-separated list of alphanumeric codes should be provided. %1, %2 Drop the database before execute a export process. %1, %2 Runs the DROP commands attached to SQL-enabled objects. %1, %2 Simulates an export process by executing all steps but undoing any modification in the end. %1, %2 Generates temporary names for database, roles and tablespaces when in simulation mode. Database import options: %1, %2 Ignore all errors and try to create as many as possible objects. %1, %2 Import system built-in objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Import extension objects. This option causes the model bloating due to the importing of unneeded objects. %1, %2 Run import in debug mode printing all queries executed in the server. Diff options: %1, %2 [DBNAME] The database used in the comparison. All the SQL code generated is applied to it. %1, %2 Save the generated diff code to output file. %1, %2 Apply the generated diff code on the database server. %1, %2 Don't preview the generated diff code when applying it to the server. %1, %2 Drop cluster level objects like roles and tablespaces. %1, %2 Revoke permissions already set on the database. New permissions configured in the input model are still applied. %1, %2 Drop missing objects. Generates DROP commands for objects that are present in the input model but not in the compared database. %1, %2 Force the drop of missing columns and constraints. Causes only columns and constraints to be dropped, other missing objects aren't removed. %1, %2 Rename the destination database when the names of the involved databases are different. %1, %2 Don't drop or truncate objects in cascade mode. %1, %2 Truncate tables prior to alter columns. Avoids errors related to type casting when the new type of a column isn't compatible to the old one. %1, %2 Don't reuse sequences on serial columns. Drop the old sequence assigned to a serial column and creates a new one. %1, %2 Don't force the recreation of objects. Avoids the usage of a DROP and CREATE commands to create a new version of the objects. %1, %2 Don't recreate the unmodifiable objects. These objects are the ones which can't be changed via ALTER command. %1, %2 [ACTION] Handles the file association to .dbm files. The ACTION can be [%3 | %4]. ** The diff process allows the usage of the following options related to import and export operations: * Export: * Import: ** When running the diff using two databases (%1 and %2) there's the need to specify two connections/aliases. If only one connection is set it will be used to import the input database as well to retrieve database used in the comparison. A second connection can be specified by appending a 1 on any connection configuration parameter listed above. Available connections (alias : connection string) No operation mode was specified! Export, fix model, import database, diff and update mime operations can't be used at the same time! Multiple export mode was specified! No input file was specified! No input database was specified! No output file was specified! No input file or database was specified! The input file and database can't be used at the same time! No database to be compared was specified! No diff action (save or apply) was specified! No output file for the diff code was specified! ** Error code `%1' found and ignored. Proceeding with export. ** Command: %1 Loading input file: %1 Fixed model file: %1 Export to PNG image: %1 Export to SVG file: %1 Export to SQL script file: %1 Export to DBMS: %1 Export successfully ended! Starting database import... Input database: %1 Saving the imported database to file... Import successfully ended! Starting diff process... Input model: %1 Compare to: %1 Loading input model... Importing the database `%1'... Comparing the generated models... No differences were detected. Saving diff to file `%1' ** WARNING: You are about to apply the generated diff code to the server. Data can be lost in the process! ** Proceed with the diff applying? (yes/no) > yes no Diff code not applied to the server. Applying diff to the database `%1'... Diff successfully ended! Mime database successfully updated! PgModelerPlugin Plugin Information Version: %1 Author: %1 PgModelerUiNS Do you want to apply the <strong>SQL %1 status</strong> to the object's references too? This will avoid problems when exporting or validating the model. disabling enabling PgSQLTypeWidget Data Type 数据类型 Type: 类型: Length 长度 Precision 精度 Dimension 维度 Interval: 区间: Format: 格式: Form Form L: L: P: P: [ ]: [ ]: Timezone: 时区: Spatial: 空间: Variation: 变异: Z Z M M SRID: NONE PluginsConfigWidget Form Form Plug-ins root directory: 插件根目录: Open in file manager 在文件管理器中打开 Loaded plug-ins 已加载的插件 Plugin 插件 Version 版本 Library 动态链接库 PolicyWidget Basics Command: Permissive Roles 角色 Expressions USING: CHECK: Name 名称 Leave the <em><strong>Roles</strong></em> grid empty in order to create a %1 applicable to <strong><em>PUBLIC</em></strong>. QObject new_database new_database %1 (line: %2) %1 (行:%2) Relationship %1_has_one_%2 %1_has_many_%2 many_%1_has_many_%2 %1_inherits_%2 %1_copies_%2 RelationshipConfigWidget Form Form Connection Mode Connect FK to PK columns Connect tables' center points FK Settings && Patterns Foreign key settings Deferral: 延迟: Deferrable: ON DELETE: ON DELETE: ON UPDATE: ON UPDATE: Name patterns Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Foreign Key (Source): Relationship type: Pattern for columns generated based upon target table's pk (n-n). Column (Target): One to one (1:1) One to many (1:n) Many to many (n:n) Generalization 泛化 Copy 复制 Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Column (Source): Pattern for foreign key generated based upon target table's pk (n-n). Foreign Key (Target): Pattern for unique key generated by the relationship. Unique Key Name: Pattern for primary key generated by identifier relationship. Primary Key Name: Primary Key Column: Default 默认 This mode renders the relationships in crow's foot notation which has a better semantics and readability. It also determines the optimal point where the relationship is connected on the tables' edges taking their position into account. Crow's foot notation This mode determines the optimal point where the relationship is connected on the tables' edges taking their position into account. It implies the usage of the classical ER notation. Connect tables' edges This mode is available only for <strong>one-to-one</strong>, <strong>one-to-many</strong> and <strong>fk relationships</strong> but provides a better semantics when linking tables by placing the lines on the exact point where the relationship occurs. It implies the usage of the classical ER notation. This mode is the classical one. It connects the relationship to tables through their central points. It implies the usage of the classical ER notation. RelationshipWidget General 常规 One to one relationship 一对一关系 One to many relationship 一对多关系 Many to many relationship 多对多关系 Generalization relationship (inheritance) 泛化关系 (继承) Identifier 标识符 Cardinality: 基数: Name of the table generated from many to many relationship 多对多关系生成表的名称 Deferrable: 可延迟: Deferral: 延迟: Attributes 属性 Constraints 约束 Primary key 主键 Attribute 属性 Type 类型 Constraint 约束 1-n 1-N n-n N-N dep dep Dependency / Copy relationship Relationship generated via foreign key fk Table 1: Table 2: [SRC] is required [DST] is required Copy Options INDEXES COMMENTS INCLUDING DEFAULTS CONSTRAINTS Use defaults ALL STORAGE Advanced Name 名称 This advanced tab shows the objects (columns or table) auto created by the relationship's connection as well the foreign keys that represents the link between the participant tables. is required Reference Table: Receiver Table: Name Patterns Use the values defined on settings dialogs for the fields below Use global settings for these fields Pattern for columns generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Column (Source): Pattern for columns generated based upon target table's pk (n-n). Column (Target): Pattern for foreign key generated based upon reference table's pk (1-1 and 1-n) or based upon source table's pk (n-n). Foreign Key (Source): Pattern for foreign key generated based upon target table's pk (n-n). Foreign Key (Target): Pattern for primary key generated by identifier relationship. Primary Key Name: Pattern for unique key generated by the relationship. Unique Key Name: Primay Key Column: Gen. Table Name: Rel. Type: Foreign key Settings ON DELETE: ON DELETE: ON UPDATE: ON UPDATE: &1-1 &gen The receiver's primary key will be composed by the generated foreign key columns. Instead of create a multi-valued primary key with the generated foreign keys columns a single column is created and used as primary key. Single PK column Custom Color: E&XCLUDING Use the special primary key if you want to include a primary key containing generated columns to the receiver table. <strong>Important:</strong> if this is a new relationship there is a need to finish its creation and reopen this dialog to create the special primary key. Available tokens to define name patterns:<br/> <strong>%1</strong> = Reference (source) primary key column name. <em>(Ignored on constraint patterns)</em><br/> <strong>%2</strong> = Reference (source) table name.<br/> <strong>%3</strong> = Receiver (destination) table name.<br/> <strong>%4</strong> = Generated table name. <em>(Only for n:n relationships)</em> Default 默认 Referer View: Referer view references one or more columns of a table to construct it's own columns. Referenced table has its columns referenced by a view in order to construct the columns of this latter. Referer Table: Referer table references one or more columns of a table through foreign keys. This is the (n) side of relationship. Referenced table has its columns referenced by a table's foreign key. This is the (1) side of relationship. Referenced Table: 引用表: Reference table has the columns from its primary key will copied to the receiver table in order to represent the linking between them. This is the (1) side of relationship. Receiver (or referer) table will receive the generated columns and the foreign key in order to represent the linking between them. This is the (n) side of relationship. In many-to-many relationships both tables are used as reference to generate the table that represents the linking. Columns from both tables are copied to the resultant table and two foreign keys are created as well in order to reference each participant table. ResultSetModel [binary data] RoleWidget Password: 密码: Connections: 连接: Attributes 属性 Superuser 超级用户 Members 成员 Role 角色 Validity 合法性 Members (Admin.) 成员(管理员) Member of 成员 Encrypted yyyy-MMM-dd hh:mm:ss Assigning <strong><em>-1</em></strong> to <strong><em>Connections</em></strong> creates a role without connection limit.<br/> Unchecking <strong><em>Validity</em></strong> creates an role that never expires. Inherit permissions Can create database Bypass RLS Can use replication Can login Can create role RuleWidget Event: 事件: Execution Type: 执行类型: Conditional Expr.: 条件表达式: SQL Command: SQL 命令: To create a rule that does not perform any action (<strong>DO NOTHING</strong>) simply do not specify commands in the SQL commands table. 创建一个不执行任何操作的规则(<STRONG>DO NOTHING</STRONG>)简单点说,就是 SQL 命令表中没有的命令。 SQL command SQL 命令 Commands SQLExecutionWidget Form Form Save SQL commands Search in SQL code Alt+F Run the specified SQL command Run SQL F6 F6 Clear sql input field and results Clear All 取消全部 Export results to a CSV file Snippe&ts E&xport Toggles the output pane &Output Alt+O Results ... Messages History SQL file (*.sql);;All files (*.*) [binary data] No results retrieved or changes done due to the error above. Messages (%1) Results (%1) Rows affected Rows retrieved Load SQL commands Save CSV file Comma-separated values file (*.csv);;All files (*.*) The SQL input field and the results grid will be cleared! Want to proceed? Copy selection Clear history Close the current SQL script SQL script currently handled (not saved) Handle external SQL script &Script Fi&nd Alt+T Alt+X Current working database Load 打开 Save 保存 Save as 另存为 [%1]: SQL command successfully executed in <em><strong>%2</strong></em>. <em>%3 <strong>%4</strong></em> Plain format CVS format This action will wipe out all the SQL commands history for all connections! Do you really want to proceed? Save history Reload history Find in history Hide find tool This action will wipe out all the SQL commands history for the current connection! Do you really want to proceed? SQLToolWidget Form Form Database explorer Disconnect from all databases ... Update the database list Toggle the object's attributes grid Attributes 属性 Alt+R Alt+R Toggle the display of source code pane Source code 源代码 SQL execution Warning <strong>ATTENTION:</strong> Disconnect from all databases will close any opened tab in this view! Do you really want to proceed? SceneInfoWidget Form Form Current position of the mouse in the canvas - Current zoom factor Currently selected object(s) Dimensions of the selected object(s) No selection N/A Sel. objects: %1 SchemaWidget Show rectangle Fill color: SequenceWidget Cyclic: 循环: Start: 起始值: Maximum: 最大值: Minimum: 最小值: Increment: 增量: Cache: 缓存: Owner Col.: Defualt values: User defined SnippetsConfigWidget Form Form Label: Applies to: ID: ID: Create new connection 建立新连接 Cancel edition 取消编辑 Edit selected connection 编辑选中的连接 Delete selected connection 删除选中的连接 Remove All 删除全部 Shift+Del Shift+Del Snippets: Parse the snippet in order to check if there are syntax errors. Parse Add 新建 Update 更新 Parsable or dynamic snippets are written in the <strong>schema micro language</strong> syntax. When using a parsable snippet the attributes surrounded in <strong>{}</strong> will be replaced by the selected object's matching attributes. Parsable When handling parsable snippets empty attributes will be replaced by a value in the format <strong>{attribute}</strong>. Note that this option can affect the semantics of the resulting snippet. Placeholders Filter: General purpose All snippets /* Error parsing the snippet '%1': %2 */ Duplicated snippet id <strong>%1</strong> detected. Please, specify a different one! Invalid ID pattern detected <strong>%1</strong>. This one must start with at leat one letter and be composed by letters, numbers and/or underscore! Empty label for snippet <strong>%1</strong>. Please, specify a value for it! Empty code for snippet <strong>%1</strong>. Please, specify a value for it! The dynamic snippet contains syntax error(s). Additional info: <br/><em>%1</em> Do you really want to remove all snippets? No syntax errors found in the snippet. General 常规 SourceCodeWidget Version: 版本: Source code visualization 查看源代码 Generating source code... 正在生成源代码...... -- SQL code unavailable for this type of object -- -- 无法生成此对象类型的 SQL 代码 -- PostgreSQL PostgreSQL iconecodigo iconecodigo SQL SQL XML XML Code display: Original Original + depedencies' SQL Original + children's SQL Save the SQL code to a file. Save SQL <strong>Original:</strong> displays only the original object's SQL code.<br/><br/> <strong>Dependencies:</strong> displays the original code including all dependencies needed to properly create the selected object.<br/><br/> <strong>Children:</strong> displays the original code including all object's children SQL code. This option is used only by schemas, tables and views. Save SQL code as... SQL code (*.sql);;All files (*.*) SQL 代码 (*.sql);;所有文件 (*.*) -- NOTE: the code below contains the SQL for the selected object -- as well for its dependencies and children (if applicable). -- -- This feature is only a convinience in order to permit you to test -- the whole object's SQL definition at once. -- -- When exporting or generating the SQL for the whole database model -- all objects will be placed at their original positions. -- SQL code purposely truncated at this point in demo version! <!-- XML code preview disabled in demonstration version --> SwapObjectsIdsWidget Change objects creation order Create: ID: ID: Before: Swap the values of the fields Swap values Change the objects creation order is an irreversible operation and cause the operations history to be automatically erased. Note that the creation order configured in this form is not definitive and may change after a model validation. Swap the object ids changing their creation order Swap ids Filter: ID Object 对象 Type 类型 Parent Object 父对象 Parent Type 父类型 Table new_table In demonstration version tables can have only `%1' instances of each child object type or ancestor tables! You've reach this limit for the type: `%2' TableDataWidget Edit table data Add empty rows Ins Ins Add an empty column Remove all rows from the grid preserving columns Shift+Del Shift+Del Delete the selected rows Del Del Duplicate the selected rows Ctrl+D Delete the selected columns Remove all columns (and rows) from the grid Ctrl+Shift+Del Delete columns is an irreversible action! Do you really want to proceed? Remove all rows is an irreversible action! Do you really want to proceed? Remove all columns is an irreversible action! Do you really want to proceed? Unknown column Duplicated column Copy items on the grid Copy 复制 Add row Delete column Paste items on the grid Paste 粘贴 Ctrl+V Fills the grid using a CSV file <html><head/><body><p>Some invalid or duplicated columns were detected. In order to solve this issue double-click the header of the highlighted ones in order to define the correct name in which the data belongs to or delete the entire column. Note that these columns are completely ignored when generating the <span style=" font-weight:600;">INSERT</span> commands.</p></body></html> Add column Duplicate rows Change the values of all selected cells at once Bulk data edit Ctrl+E Delete all columns Delete rows <html><head/><body><p>Empty values are assumed as <span style=" font-weight:600;">DEFAULT</span>. To use special values like <span style=" font-weight:600;">NULL</span>, a function call like <span style=" font-weight:600;">now()</span> or a specific data escaping, enclose values in two slashes, e.g., <span style=" font-weight:600;">/value/</span>. To use a slash as part of the value prepend the backslash character, e.g., <span style=" font-weight:600;">\/</span>.</p></body></html> Delete all rows TableObjectView Relationship: %1 TableWidget Name 名称 Type 类型 Default Value 默认值 Refer. Table 引用表 Events 事件 Execution 执行 Event 事件 Indexing 索引 ON DELETE ON DELETE ON UPDATE ON UPDATE Firing 触发 Schema 模式 Parent Copy 复制 Options Tag: With OID Generate ALTER for columns/constraints Unlogged &Columns Co&nstraints Tri&ggers &Rules &Indexes &Tables Edit data Define initial data for the table Enable row level security Force RLS for owner &Policies PK Attribute(s) It is not possible to mark a column as primary key when the table already has a primary key which was created by a relationship! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. It is not possible to mark a column created by a relationship as primary key! This action should be done in the section <strong>Primary key</strong> of the relationship's editing form. Command Permissive USING expression CHECK expression Roles 角色 Yes No TablespaceWidget Directory: 字典: Form Form TagWidget Colors Body: Title: Schema name: Table name: Extended body: TaskProgressWidget Executing tasks 正在执行的任务 Waiting task to start... TextboxWidget Bold 粗体 Italic 斜体 Select text color 选择文本颜色 Underline 下划线 Font: 字体: Text pt Color: TriggerWidget Event: 事件: Deferrable: 可延迟: Columns Column: 列: Arguments 参数 Argument: 参数: Function: 函数: Column Type 类型 INSERT INSERT DELETE DELETE UPDATE UPDATE TRUNCATE TRUNCATE Constraint 约束 FOR EACH ROW Refer. Table: Condition: Options: 选项: Excution: TypeWidget Configuration: 配置: Base Type 基本类型 Enumeration 枚举 Enumerations 枚举 Enumeration: 枚举: Attributes 属性 Internal Length: 内部长度: Storage: 存储: Category: 类别: Delimiter: 分隔符: Alignment: 对齐: Default Value: 默认值: Functions 函数 Element Type 元素类型 Name 名称 Type 类型 char char smallint smallint integer integer double precision double precision INPUT: INPUT: OUTPUT: OUTPUT: RECV: RECV: SEND: SEND: TPMOD_IN: TPMOD_IN: TPMOD_OUT: TPMOD_OUT: ANALYZE: ANALYZE: The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table> 用于类型定义的函数要用 C 语言编写,并且符合下列的函数签名:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table> Range Options: 选项: By value Preferred Collatable Name: 名称: Collation: Subtype Diff Func.: Operator Class: 操作符类: Canonical Func.: Like Type Subtype Collation The functions to be assigned to a range type should have the following signatures:<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em> Co&mposite UpdateNotifierWidget Update Notifier Update found! Hide this widget ... Released in: mmm dd, yyyy New version: 0.0.0 0.0.0 Changelog Redirects to purchase page. Get binary package Redirects to GitHub source repository. Get source code Failed to check updates No updates found You are running the most recent pgModeler version! No update needed. The update notifier failed to check for new versions! A HTTP status code was returned: <strong>%1</strong> The update notifier failed to check for new versions! Please, verify your internet connectivity and try again! Connection error returned: <em>%1</em> - <strong>%2</strong>. ViewWidget References 引用 Column Expression 表达式 Used in: 被用在: Table: 表: Table Alias: 表别名: Column: 列: Column Alias: 列别名: Expression: 表达式: Expression Alias: 表达式别名: Code Preview 代码预览 Col./Expr. 列/表达式 Alias 别名 Alias Col. 列别名 Reference Type: View Definition Triggers 触发器 Rules 规则 Table Expression Name 名称 Refer. Table 引用表 Firing 触发 Events 事件 Execution 执行 Event 事件 /* Could not generate the SQL code. Make sure all attributes are correctly filled! Options Tag: Mode: 模式: Ordinary Recursi&ve &Materialized With no data The element will be used as part of the SELECT statement to retrieve columns or expressions that will compose the view's columns SELECT ... The element will be used as part of the WHERE clause in form of conditional expression WHERE ... The element is used in the FROM portion of the command in order to reference tables or construct JOIN statements FROM ... The element's expression is used exclusively as the view's definition The element will be appended to the very end of the view's definition. This is useful when using GROUP BY/HAVING statements End expression Indexes 索引 Flags: SF FW AW EX VD To reference all columns in a table (*) just do not fill the field <strong>Column</strong>, this is the same as write <em><strong>[schema].[table].*</strong></em> Indexing 索引 WelcomeWidget Form Form New model Open model Sample models Recent models Last session pgmodeler-0.9.4/assets/samples/000077500000000000000000000000001416010000600164345ustar00rootroot00000000000000pgmodeler-0.9.4/assets/samples/3dcitydb.dbm000066400000000000000000011436511416010000600206400ustar00rootroot00000000000000 ] $br %end $br $br %if %not {split} %and {index} %then {index} %end {objects} [ ] $br $br pgmodeler-0.9.4/assets/schemas/datadict/index.sch000066400000000000000000000021431416010000600217760ustar00rootroot00000000000000# Template code for data dictionary generation # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {split} %then [ Data dictionary generated by pgModeler ] %end $br [

Data dictionary index

] $br [ ]
    $br [ ]
  • [Database: ] {name} %if {table} %then $br [ ]

  • Tables $br [ ]
      {table} $br [ ]
    $br [ ]
  • %end %if {foreigntable} %then $br [ ]

  • [Foreign tables] $br [ ]
      {foreigntable} $br [ ]
    $br [ ]
  • %end %if {view} %then $br [ ]

  • Views $br [ ]
      {view} $br [ ]
    $br [ ]
  • %end $br [ ]
$br %if {split} %then [ ] $br %end pgmodeler-0.9.4/assets/schemas/datadict/item.sch000066400000000000000000000004721416010000600216300ustar00rootroot00000000000000# Template code for data dictionary generation # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {split} %then %set {link} {item} [.html] %else %set {link} \# {item} %end $br [ ]
  • {item}
  • pgmodeler-0.9.4/assets/schemas/datadict/link.sch000066400000000000000000000004561416010000600216310ustar00rootroot00000000000000# Template code for data dictionary generation # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {split} %then %set {link} {name} [.html] %else %set {link} \# {name} %end {name} pgmodeler-0.9.4/assets/schemas/datadict/styles.sch000066400000000000000000000055741416010000600222250ustar00rootroot00000000000000# Template code for data dictionary generation # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [body { font-family: sans-serif; color: \#333; margin-left: 2em; margin-top: 2em; background-color: white; } footer { margin-top: 3em; margin-bottom: .5em; font-size: 75%; } h3 { margin-bottom: .5em; } a { color: \#4182c3; text-decoration: none; } a:hover { color: \#080; text-decoration: underline; } \#index { background-color: \#f8f9fa; margin-block-end: 1.5em; list-style: none; display: inline-block; padding: 1em; border: 1px solid \#c0c0c0; border-radius: 4px 4px 4px 4px; } \#index li { list-style: none; margin: 0; } \#index > li > ul { padding-inline-start: 1em; } .table, .foreigntable, .view { font-size: 11pt; border-collapse: collapse; margin-top: 3em; margin-bottom: 1em; } .table caption { background-color: \#d2f3ff; } .foreigntable caption { background-color: \#94f0b1; } .view caption { background-color: \#ffd8a1; } .table, .table caption, .table th, .table td { border: 1px solid \#b4d0da; } .foreigntable, .foreigntable caption, .foreigntable th, .foreigntable td { border: 1px solid \#6aad80; } .view, .view caption, .view th, .view td { border: 1px solid \#ba7c00; } .table caption, .foreigntable caption, .view caption { border-bottom: 0; } .table th, .table .title, .table .label{ background-color: \#e9f8ff; } .foreigntable th, .foreigntable .title, .foreigntable .label { background-color: \#e2ffed; } .view th, .view .title, .view .label { background-color: \#ffebd2; } .type-label { float: right; color: \#212529; font-size: 70%; font-weight: bold; background-color: \#f8f9fa; padding: 5px; border-radius: 4px 4px 4px 4px; } caption { border-radius: 5px 5px 0 0; } .nav-link { font-size: 85%; background-color: \#f2f2f3; padding: 5px; border-radius: 4px 4px 4px 4px; color: \#212529; font-weight: bold; text-decoration: none; margin-right: .5em; } .nav-link:hover { color: white; background-color: \#007bff; } td, th, caption, .title { margin: 0; padding: .3em; } .title, th { font-weight: bold; text-align: center; color: \#535c67; } .data-type, .value, .constr-type { font-family: monospace; text-align: center; } .constr-type { color: \#24486c; } .data-type { color: \#b00; } .bool-field { text-align: center; color: \#080; } .label { font-weight: bold; color: \#444f53; width: 1px; white-space: nowrap; } .tab-name { font-size: 112%; } .tab-description { font-style: italic; padding: .5em; } .nested-tab-parent { padding: 0; } .nested-tab { font-size: 11pt; width: 100%; border-collapse: collapse; } .nested-tab > tbody > tr, .nested-tab > tr{ padding: 0; } .nested-tab td { border-bottom: 0; border-left: 0; } .nested-tab > tbody > tr:first-child td, .nested-tab > tr:first-child td { border-top: 0; } .nested-tab td:last-child { border-right: 0; } .max-td-wth { max-width: 500px; } ] pgmodeler-0.9.4/assets/schemas/datadict/table.sch000066400000000000000000000056311416010000600217630ustar00rootroot00000000000000# Template code for data dictionary generation # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({type-class} == "table") %then %set {colspan} 8 %else %set {colspan} 5 %end $br [ ] $br [ ] %if {comment} %then $br [ ] $br [ ] $br [ ] %end %if {columns} %then $br [ ] $br [ ] $br [ ] %if ({type-class} == "table") %then $br [ ] $br [ ] $br [ ] %end $br [ ] $br [ ] $br [ ] $br [ ] %else $br [ ] $br [ ] $br [ ] %end $br [ ] $br [ ] %if {columns} %then {columns} %end %if {constraints} %then $br [ ] $br [ ] $br [ ] %end $br [ ] %if {inherit} %or {partitioned-table} %or {partition-tables} %then $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br %end $br
    $br [ ] {schema}.{name} $br [ ] {type} $br [ ]
    {comment} $br [ ]
    Name[Data type]PKFKUQ[Not null][Default value]Description
    $br [ ] [No columns] $br [ ]
    $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] {constraints} $br [ ]
    Constraints
    NameTypeColumn(s)ReferencesExpressionDescription
    $br [ ]
    $br [ ] %if {inherit} %then $br [ ] $br [ ] $br [ ] $br [ ] %end %if {partitioned-table} %then $br [ ] $br [ ] $br [ ] $br [ ] %end %if {partition-tables} %then $br [ ] $br [ ] $br [ ] $br [ ] %end $br [ ]
    Inherits: {inherit}
    [Partition of:]{partitioned-table}
    [Partitions:]{partition-tables}
    $br [ ]
    $br %if {index} %then $br
    %if {split} %and {previous} %then $br [ ] ← $sp {previous} %end %if {split} %then $br [ ] %else $br [ ] %end [↑ Index] %if {split} %and {next} %then $br [ ] {next} $sp → %end $br
    $br %end pgmodeler-0.9.4/assets/schemas/datadict/view.sch000066400000000000000000000031751416010000600216470ustar00rootroot00000000000000# Template code for data dictionary generation # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br [ ] $br [ ] %if {comment} %then $br [ ] $br [ ] $br [ ] %end %if {columns} %then $br [ ] $br [ ] $br [ ] $br [ ] %else $br [ ] $br [ ] $br [ ] %end $br [ ] $br [ ] %if {columns} %then {columns} %end $br [ ] %if {references} %then $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br %end $br
    $br [ ] {schema}.{name} $br [ ] {type} $br [ ]
    {comment} $br [ ]
    Name[Data type]
    $br [ ] [No columns] $br [ ]
    $br [ ] $br [ ] $br [ ] $br [ ] $br [ ] $br [ ]
    References: {references}
    $br [ ]
    $br %if {index} %then $br
    %if {split} %and {previous} %then $br [ ] ← $sp {previous} %end %if {split} %then $br [ ] %else $br [ ] %end [↑ Index] %if {split} %and {next} %then $br [ ] {next} $sp → %end $br
    $br %end pgmodeler-0.9.4/assets/schemas/sql/000077500000000000000000000000001416010000600172125ustar00rootroot00000000000000pgmodeler-0.9.4/assets/schemas/sql/aggregate.sch000066400000000000000000000016401416010000600216400ustar00rootroot00000000000000# SQL definition for aggregate functions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE AGGREGATE ] {name} [ (]{types}[) (] $br $tb [SFUNC = ] {transition}, $br $tb [STYPE = ] {state-type} $br %if {final} %then $tb [,FINALFUNC = ] {final} $br %end %if {initial-cond} %then $tb [,INITCOND = ] {initial-cond} $br %end %if {sort-op} %then $tb [,SORTOP = ] {sort-op} $br %end ); {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/cast.sch000066400000000000000000000015701416010000600206460ustar00rootroot00000000000000# SQL definition for type casts # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: cast] ( {source-type} [,] {destiny-type} ) [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE CAST (] {source-type} [ AS ] {destiny-type} ) $br %if {io-cast} %then $tb [WITH INOUT ] %else %if {function} %then $tb [WITH FUNCTION ] {function} %else $tb [WITHOUT FUNCTION] %end %end %if {cast-type} %then $br $tb [AS ] {cast-type} %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/collation.sch000066400000000000000000000031301416010000600216720ustar00rootroot00000000000000# SQL definition for collations # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({pgsql-ver} != "9.0") %then [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %set {attr-sep} [,] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE COLLATION ] {name} %if {collation} %then [ FROM ] {collation} %else [ (] $br %if {locale} %then [ LOCALE = '] {locale} %if {locale-mod} %then @ {locale-mod} %end ['] %else %if {lc-ctype} %then [ LC_CTYPE = '] {lc-ctype} %if {lc-ctype-mod} %then @ {lc-ctype-mod} %end ['] %end %if {lc-collate} %then %if {lc-ctype} %then {attr-sep} %end [ LC_COLLATE = '] {lc-collate} %if {lc-collate-mod} %then @ {lc-collate-mod} %end ['] %end %end %if ({pgsql-ver} >=f "10.0") %then %if {provider} %then %if {locale} %or {lc-collate} %or {lc-ctype} %then {attr-sep} %end [ PROVIDER =] '{provider}' %end %end %if ({pgsql-ver} >=f "12.0") %then %if {locale} %or {lc-collate} %or {lc-ctype} %or {provider} %then {attr-sep} %end [ DETERMINISTIC = ] {deterministic} %end $br [)] %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/column.sch000066400000000000000000000027541416010000600212160ustar00rootroot00000000000000# SQL definition for columns # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {decl-in-table} %then $tb %else [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} %if {table} %then [ALTER TABLE ] {table} [ ADD COLUMN ] %end %end {name} $sp {type} %if {not-null} %then [ NOT NULL] %end %if ({pgsql-ver} >=f "10.0") %and {identity-type} %then [ GENERATED ] {identity-type} [ AS IDENTITY ] %if {increment} %or {min-value} %or {max-value} %or {start} %or {cache} %or {cycle} %then [(] %end %if {increment} %then [ INCREMENT BY ] {increment} %end %if {min-value} %then [ MINVALUE ] {min-value} %end %if {max-value} %then [ MAXVALUE ] {max-value} %end %if {start} %then [ START WITH ] {start} %end %if {cache} %then [ CACHE ] {cache} %end %if {cycle} %then [ CYCLE] %end %if {increment} %or {min-value} %or {max-value} %or {start} %or {cache} %or {cycle} %then [ )] %end %else %if ({pgsql-ver} >=f "12.0") %and {generated} %then [ GENERATED ALWAYS AS (] {default-value} [) STORED] %else %if {default-value} %then [ DEFAULT ] {default-value} %end %end %end %if {decl-in-table} %then [,] %else [;] # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! $br [-- ddl-end --] $br $br %end %if %not {decl-in-table} %and {comment} %then {comment} $br %end $br pgmodeler-0.9.4/assets/schemas/sql/comment.sch000066400000000000000000000010351416010000600213520ustar00rootroot00000000000000# SQL definition for comments # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {comment} %or ({comment}=="unset") %then [COMMENT ON ] {sql-object} $sp {signature} [ IS ] %if ({comment}=="unset") %then '' %else %if {escape-comment} %then E %end '{comment}' %end ; $br # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! [-- ddl-end --] $br %end pgmodeler-0.9.4/assets/schemas/sql/confparam.sch000066400000000000000000000003711416010000600216600ustar00rootroot00000000000000# SQL definition for functions/procedures configuration parameters definition # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [SET ] {name} [ = ] {value} $br pgmodeler-0.9.4/assets/schemas/sql/constraint.sch000066400000000000000000000032621416010000600221000ustar00rootroot00000000000000# SQL definition for constraints # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {decl-in-table} %then $tb %else [-- object: ] {name} [ | type: ] {sql-object} [ --] $br %if {table} %then [-- ] {drop} [ALTER TABLE ] {table} [ ADD ] %end %end [CONSTRAINT ] {name} %if {ck-constr} %then [ CHECK ] ({expression}) %if {no-inherit} %then [ NO INHERIT] %end %end %if {pk-constr} %then [ PRIMARY KEY ] ({src-columns}) %end %if {uq-constr} %then [ UNIQUE ] ({src-columns}) %end %if {ex-constr} %then [ EXCLUDE ] $br $tb %if {index-type} %then [USING ] {index-type} %end ( {elements} $br $tb ) %end %if {pk-constr} %or {uq-constr} %then %if {factor} %then %if {decl-in-table} %then $br $tb %end [ WITH (FILLFACTOR = ] {factor} [)] %end %end %if {tablespace} %then $br %if {decl-in-table} %then $tb %end %if {pk-constr} %or {uq-constr} %or {ex-constr} %then [USING INDEX TABLESPACE ] {tablespace} %end %end %if {ex-constr} %and {expression} %then $sp WHERE $sp ( {expression}) %end %if {fk-constr} %then [ FOREIGN KEY ] ({src-columns}) $br %if {decl-in-table} %then $tb %end [REFERENCES ] {ref-table} $sp ({dst-columns}) $sp {comparison-type} $br %if {decl-in-table} %then $tb %end [ON DELETE ] {del-action} [ ON UPDATE ] {upd-action} %end %if {deferrable} %then [ DEFERRABLE ] {defer-type} %end %if {decl-in-table} %then [,] %else [;] $br # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! [-- ddl-end --] $br %end %if %not {decl-in-table} %and {comment} %then {comment} $br %end $br pgmodeler-0.9.4/assets/schemas/sql/conversion.sch000066400000000000000000000014201416010000600220730ustar00rootroot00000000000000# SQL definition for encoding conversions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end CREATE %if {default} %then [ DEFAULT] %end [ CONVERSION ] {name} $br $tb [FOR ] '{src-encoding}' [ TO ] '{dst-encoding}' $br $tb [FROM ] {function}; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/database.sch000066400000000000000000000023751416010000600214640ustar00rootroot00000000000000# SQL definition for databases # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE DATABASE ] {name} %if {template} %then $br $tb [TEMPLATE = ] {template} %end %if {encoding} %then $br $tb [ENCODING = ] {encoding} %end %if {lc-collate} %then $br $tb [LC_COLLATE = ] {lc-collate} %end %if {lc-ctype} %then $br $tb [LC_CTYPE = ] {lc-ctype} %end %if {tablespace} %then $br $tb [TABLESPACE = ] {tablespace} %end %if {owner} %then $br $tb [OWNER = ] {owner} %end %if {connlimit} %then $br $tb [CONNECTION LIMIT = ] {connlimit} %end %if ({pgsql-ver} >=f "9.5") %then %if ({is-template} == "true") %then $br $tb [IS_TEMPLATE = ] {is-template} %end %if ({allow-conns} == "false") %then $br $tb [ALLOW_CONNECTIONS = ] {allow-conns} %end %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/dbmodel.sch000066400000000000000000000025411416010000600213210ustar00rootroot00000000000000# SQL definition for database model # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- Database generated with pgModeler (PostgreSQL Database Modeler).] $br [-- pgModeler version: ] {pgmodeler-ver} $br [-- PostgreSQL version: ] {pgsql-ver} $br [-- Project Site: pgmodeler.io] $br [-- Model Author: ] # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {author} %then {author} %else --- %end $br %if {export-to-file} %then %if {role} %then {role} %end %if {tablespace} %then [-- Tablespaces creation must be performed outside a multi lined SQL file. ] $br [-- These commands were put in this file only as a convenience.] $br [-- ] $br {tablespace} $br %end $br [-- Database creation must be performed outside a multi lined SQL file. ] $br [-- These commands were put in this file only as a convenience.] $br [-- ] $br {database} $br %end %if {function} %then [SET check_function_bodies = false;] {ddl-end} $br %end %if {schema} %then {schema} [SET search_path TO ] {search-path}; {ddl-end} $br %end %if {shell-types} %then {shell-types} %end %if {objects} %then {objects} %end %if {permission} %then {permission} %end $br pgmodeler-0.9.4/assets/schemas/sql/domain.sch000066400000000000000000000016161416010000600211640ustar00rootroot00000000000000# SQL definition for domains # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE DOMAIN ] {name} [ AS ] {type} %if ({pgsql-ver} != "9.0") %and {collation} %then $br $tb [COLLATE ] {collation} %end %if {default-value} %then $br $tb [DEFAULT ] {default-value} %end %if {not-null} %then $br $tb [NOT NULL] %end %if {constraints} %then {constraints} %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/domconstraint.sch000066400000000000000000000003611416010000600225750ustar00rootroot00000000000000# SQL definition for domain's check constraint # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br $tb CONSTRAINT $sp {name} $sp CHECK $sp ({expression}) pgmodeler-0.9.4/assets/schemas/sql/drop.sch000066400000000000000000000013241416010000600206550ustar00rootroot00000000000000# SQL command to drop an object # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {collation} %and ({pgsql-ver} != "9.0") %or %not {collation} %then %if %not {domain} %and {constraint} %or {column} %then %if %not {decl-in-table} %then [ALTER TABLE ] {table} [ DROP ] {sql-object} [ IF EXISTS ] %end %else [DROP ] {sql-object} [ IF EXISTS ] %end %if {column} %or {constraint} %and %not {decl-in-table} %or {extension} %then {name} %else {signature} %end %if {cascade} %and %not {database} %and %not {tablespace} %and %not {role} %and %not {usermapping} %then [ CASCADE] %end ; $br [-- ddl-end --] $br %end pgmodeler-0.9.4/assets/schemas/sql/element.sch000066400000000000000000000007701416010000600213460ustar00rootroot00000000000000# SQL definition for operator class elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {function} %then $tb FUNCTION $tb {stg-number} $tb {signature} %end %if {operator} %then $tb OPERATOR $tb {stg-number} $tb {signature} %if ({pgsql-ver} != "9.0") %then %if {opfamily} %then [ FOR ORDER BY ] {opfamily} %else [ FOR SEARCH ] %end %end %end %if {storage} %then $tb STORAGE $tb {type} %end pgmodeler-0.9.4/assets/schemas/sql/eventtrigger.sch000066400000000000000000000015051416010000600224170ustar00rootroot00000000000000# SQL definition for event triggers # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({pgsql-ver} >=f "9.3") %then [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE EVENT TRIGGER ] {name} $br $tb [ON ] {event} %if {filter} %then $br $tb [WHEN ] {filter} %end $br $tb [EXECUTE PROCEDURE ] {function}; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/excelement.sch000066400000000000000000000007711416010000600220470ustar00rootroot00000000000000# SQL definition for exclude constraints elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br $tb $sp $sp %if {column} %then {column} %else %if {expression} %then {expression} %end %end %if {opclass} %then $sp {opclass} %end %if {use-sorting} %then %if {asc-order} %then [ ASC ] %else [ DESC ] %end %if {nulls-first} %then [NULLS FIRST] %else [NULLS LAST] %end %end [ WITH ] {operator} pgmodeler-0.9.4/assets/schemas/sql/extension.sch000066400000000000000000000015401416010000600217250ustar00rootroot00000000000000# SQL definition for extensions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({pgsql-ver} != "9.0") %then [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE EXTENSION ] {name} $br %if {schema} %then [WITH SCHEMA ] {schema} %end %if {cur-version} %then $br [VERSION ] '{cur-version}' %end %if {old-version} %then $br [FROM ] '{old-version}' %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/foreigndatawrapper.sch000066400000000000000000000016501416010000600235770ustar00rootroot00000000000000# SQL definition for foreign data wrappers # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE ] {sql-object} $sp {name} %if ({pgsql-ver} >=f "9.1") %then $br %if %not {handler} %then [NO HANDLER] %else [HANDLER ] {handler} %end %end $br %if %not {validator} %then [NO VALIDATOR] %else [VALIDATOR ] {validator} %end %if {options} %then $br [OPTIONS (] {options} ) %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/foreignserver.sch000066400000000000000000000015061416010000600225730ustar00rootroot00000000000000# SQL definition for foreign server # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE SERVER ] {name} %if {type} %then [ TYPE ] '{type}' %end %if {version} %then [ VERSION ] '{version}' %end $br [FOREIGN DATA WRAPPER ] {fdw} %if {options} %then $br [OPTIONS (] {options} ) %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/foreigntable.sch000066400000000000000000000032211416010000600223500ustar00rootroot00000000000000# SQL definition for foreign tables # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE FOREIGN TABLE ] {name} %if ({pgsql-ver} >=f "10.0") %and {partitioned-table} %then $br [PARTITION OF ] {partitioned-table} $sp %end %if %not {partitioned-table} %or ({pgsql-ver} =f "10.0") %and {partitioned-table} %then $br [FOR VALUES ] {partition-bound-expr} %end %if {ancestor-table} %then $br [ INHERITS(] {ancestor-table} [)] %end $br [SERVER ] {server} %if {options} %then $br [OPTIONS (] {options} [)] %end ; {ddl-end} %if {gen-alter-cmds} %then %if {columns} %then $br {columns} %end %if {constraints} %then $br {constraints} %end %end %if {comment} %then {comment} %end %if {cols-comment} %then {cols-comment} %end %if {owner} %then {owner} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end %if {initial-data} %then $br {initial-data} $br %end $br pgmodeler-0.9.4/assets/schemas/sql/function.sch000066400000000000000000000030261416010000600215370ustar00rootroot00000000000000# SQL definition for functions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE FUNCTION ] {name} $sp ( %if {parameters} %then {parameters} %end ) $br $tb [RETURNS ] %if {return-table} %then [TABLE ] ( {return-table} ) %else %if {returns-setof} %then [SETOF ] %end {return-type} %end $br $tb [LANGUAGE ] {language} $br %if ({pgsql-ver} >=f "9.5") %and {transform-types} %then $tb TRANSFORM {transform-types} $br %end %if {window-func} %then $tb WINDOW $br %end $tb {function-type} $sp %if {leakproof} %then LEAKPROOF %end $br $tb {behavior-type} $br $tb {security-type} $br %if ({pgsql-ver} >=f "9.6") %then $tb {parallel-type} $br %end $tb [COST ] {execution-cost} $br %if {returns-setof} %then $tb [ROWS ] {row-amount} $br %end %if {config-params} %then {config-params} %end $tb [AS ] %if {library} %then '{library}' %if {symbol} %then [, ] '{symbol}' %end %else %if ({language} == "internal") %then '{definition}' %else [$$] $br {definition} $br [$$] %end %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/genericsql.sch000066400000000000000000000006441416010000600220510ustar00rootroot00000000000000# SQL definition for generic sql objects # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: Generic SQL Object --] $br {definition} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! $br [-- ddl-end --] $br $br pgmodeler-0.9.4/assets/schemas/sql/idxelement.sch000066400000000000000000000010411416010000600220430ustar00rootroot00000000000000# SQL definition for index elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br $tb %if {column} %then {column} %else %if {expression} %then ({expression}) %end %end %if ({pgsql-ver} != "9.0") %and {collation} %then [ COLLATE ] {collation} %end %if {opclass} %then $sp {opclass} %end %if {use-sorting} %then %if {asc-order} %then [ ASC ] %else [ DESC ] %end %if {nulls-first} %then [NULLS FIRST] %else [NULLS LAST] %end %end pgmodeler-0.9.4/assets/schemas/sql/index.sch000066400000000000000000000025161416010000600210240ustar00rootroot00000000000000# SQL definition for indexes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE ] %if {unique} %then [UNIQUE ] %end [INDEX ] %if {concurrent} %then [ CONCURRENTLY ] %end {name} [ ON ] {table} %if {index-type} %then $br [USING ] {index-type} %end $br ( {elements} $br ) %if {expression} %then $br ({expression}) $sp %end %if ({pgsql-ver} >=f "11.0") %and {include-cols} %then $br [INCLUDE ] ({include-cols}) %end %if {stg-params} %then $br [WITH (] %if {factor} %then [FILLFACTOR = ] {factor} %end %if {fast-update} %then %if {factor} %then [, ] %end [FASTUPDATE = ON] %end %if {buffering} %and ({pgsql-ver} >=f "9.2") %then %if {factor} %then [, ] %end [BUFFERING = ON] %end [)] %end %if {tablespace} %then $br [TABLESPACE ] {tablespace} %end %if {predicate} %then $br [WHERE (] {predicate} [)] %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/language.sch000066400000000000000000000016021416010000600214730ustar00rootroot00000000000000# SQL definition for procedural languages # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE ] %if {trusted} %then %if {handler} %then [TRUSTED ] %end %end [ LANGUAGE ] {name} %if {handler} %then $br $tb [HANDLER ] {handler} %end %if {validator} %then $br [VALIDATOR ] {validator} %end %if {inline} %then $br [INLINE ] {inline} %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/opclass.sch000066400000000000000000000014571416010000600213640ustar00rootroot00000000000000# SQL definition for operator classes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE OPERATOR CLASS ] {name} %if {default} %then [ DEFAULT ] %end [ FOR TYPE ] {type} $br [ USING ] {index-type} %if {family} %then [ FAMILY ] {family} %end [ AS] $br {elements}; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/operator.sch000066400000000000000000000022551416010000600215500ustar00rootroot00000000000000# SQL definition for operators # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE OPERATOR ] {name} [ (] $br $tb [PROCEDURE = ] {operfunc} %if {left-type} %then $br $tb [, LEFTARG = ] {left-type} %end %if {right-type} %then $br $tb [, RIGHTARG = ] {right-type} %end %if {commutator-op} %then $br $tb [, COMMUTATOR = ] OPERATOR({commutator-op}) %end %if {negator-op} %then $br $tb [, NEGATOR = ] OPERATOR({negator-op}) %end %if {restriction} %then $br $tb [, RESTRICT = ] {restriction} %end %if {join} %then $br $tb [, JOIN = ] {join} %end %if {hashes} %then $br $tb [, HASHES ] %end %if {merges} %then $br $tb [, MERGES ] %end ); {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/opfamily.sch000066400000000000000000000012561416010000600215350ustar00rootroot00000000000000# SQL definition for operator family # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE OPERATOR FAMILY ] {name} [ USING ] {index-type}; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/parameter.sch000066400000000000000000000006451416010000600216760ustar00rootroot00000000000000# SQL definition for function parameters # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {variadic} %then VARIADIC $sp %else %if {in} %then IN $sp %end %if {out} %then OUT $sp %end %end %if {reduced-form} %then {type}, $sp %else {name} $sp {type} %if {default-value} %then [ DEFAULT ] {default-value} %end , $sp %end pgmodeler-0.9.4/assets/schemas/sql/partitionkey.sch000066400000000000000000000005501416010000600224330ustar00rootroot00000000000000# SQL definition for partition key elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {column} %then {column} %else %if {expression} %then ({expression}) %end %end %if {collation} %then [ COLLATE ] {collation} %end %if {opclass} %then $sp {opclass} %end pgmodeler-0.9.4/assets/schemas/sql/permission.sch000066400000000000000000000022461416010000600221050ustar00rootroot00000000000000# SQL definition for permissions on objects # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] PERMISSION [ --] %if {privileges} %then $br %if {revoke} %then [REVOKE ] %else [GRANT ] %end {privileges} $br %if {parent} %then $sp $sp [ ON TABLE ] {parent} $br %else $sp $sp [ ON ] {type} $sp {object} $br %end $sp $sp %if {revoke} %then [ FROM ] %else [ TO ] %end %if {roles} %then {roles} %if {revoke} %and {cascade} %then [ CASCADE] %end %else PUBLIC %end ; $br %end %if {privileges-gop} %then $br %if {revoke} %then [REVOKE GRANT OPTION FOR ] %else [GRANT ] %end {privileges-gop} $br %if {parent} %then $sp $sp [ ON TABLE ] {parent} $br %else $sp $sp [ ON ] {type} $sp {object} $br %end $sp $sp %if {revoke} %then [ FROM ] {roles} %if {cascade} %then [ CASCADE] %end ; $br %else [ TO ] {roles} [ WITH GRANT OPTION]; $br %end %end # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! [-- ddl-end --] $br $br pgmodeler-0.9.4/assets/schemas/sql/policy.sch000066400000000000000000000020411416010000600212050ustar00rootroot00000000000000# SQL definition for policy # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({pgsql-ver} >=f "9.5") %then [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE POLICY ] {name} [ ON ] {table} %if ({pgsql-ver} >=f "10.0") %then %if {permissive} %then $br $tb [AS PERMISSIVE] %else $br $tb [AS RESTRICTIVE] %end %end $br $tb [FOR ] {command} $br $tb [TO ] %if {roles} %then {roles} %else PUBLIC %end %if {using-exp} %then $br $tb [USING (] {using-exp} [)] %end %if {check-exp} %then $br $tb [WITH CHECK (] {check-exp} [)] %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/procedure.sch000066400000000000000000000021111416010000600216740ustar00rootroot00000000000000# SQL definition for procedures # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({pgsql-ver} >=f "11.0") %then [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE PROCEDURE ] {name} $sp ( %if {parameters} %then {parameters} %end ) $br $tb [LANGUAGE ] {language} $br %if {transform-types} %then $tb TRANSFORM {transform-types} $br %end $tb {security-type} $br %if {config-params} %then {config-params} %end $tb [AS ] %if {library} %then '{library}' %if {symbol} %then [, ] '{symbol}' %end %else [$$] $br {definition} $br [$$] %end ; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/relationship.sch000066400000000000000000000005331416010000600224130ustar00rootroot00000000000000# SQL definition for relationships # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {rel1n} %then {constraints} %end #%if {relgen} %then # [ALTER TABLE ] {table} [ INHERIT ] {ancestor-table}; $br $br #%end %if {relnn} %then {table} {constraints} %end pgmodeler-0.9.4/assets/schemas/sql/role.sch000066400000000000000000000025331416010000600206550ustar00rootroot00000000000000# SQL definition for type roles # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE ROLE ] {name} [ WITH ] %if {superuser} %then $br $tb SUPERUSER %end %if {createdb} %then $br $tb CREATEDB %end %if {createrole} %then $br $tb CREATEROLE %end %if {inherit} %then $br $tb INHERIT %end %if {login} %then $br $tb LOGIN %end %if {replication} %and ({pgsql-ver} != "9.0") %then $br $tb REPLICATION %end %if {bypassrls} %and ({pgsql-ver} >=f "9.5") %then $br $tb BYPASSRLS %end %if {password} %then $br $tb %if {encrypted} %then ENCRYPTED %else UNENCRYPTED %end [ PASSWORD ] '{password}' %end %if {connlimit} %then $br $tb [CONNECTION LIMIT ] {connlimit} %end %if {validity} %then $br $tb [VALID UNTIL ] '{validity}' %end %if {member-roles} %then $br $tb [ROLE ] {member-roles} %end %if {admin-roles} %then $br $tb [ADMIN ] {admin-roles} %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/rule.sch000066400000000000000000000014401416010000600206570ustar00rootroot00000000000000# SQL definition for rules # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE RULE ] {name} [ AS ] {event-type} $br $tb [TO ] {table} $br %if {condition} %then $tb [WHERE ] {condition} $br %end $tb [DO ] {exec-type} $sp %if {commands} %then ({commands}) %else NOTHING %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/schema.sch000066400000000000000000000012061416010000600211500ustar00rootroot00000000000000# SQL definition for schemas # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE SCHEMA ] {name}; {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/sequence.sch000066400000000000000000000023341416010000600215230ustar00rootroot00000000000000# SQL definition for sequences # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE SEQUENCE ] {name} $br %if {increment} %then $tb [INCREMENT BY ] {increment} $br %end %if {min-value} %then $tb [MINVALUE ] {min-value} $br %end %if {max-value} %then $tb [MAXVALUE ] {max-value} $br %end %if {start} %then $tb [START WITH ] {start} $br %end %if {cache} %then $tb [CACHE ] {cache} $br %end %if {cycle} %then $tb CYCLE %else $tb [NO CYCLE] %end $br $tb [OWNED BY ] %if {owner-col} %then {owner-col} %else NONE %end ; $br %if {owner-col} %and %not {col-is-identity} %then $br [ALTER TABLE ] {table} [ ALTER COLUMN ] {column} $br [ SET DEFAULT nextval('] {name} ['::regclass);] %end {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/sessionopts.sch000066400000000000000000000005301416010000600223000ustar00rootroot00000000000000# This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {function} %then [SET check_function_bodies = false;] {ddl-end} $br %end %if {search-path} %then [SET search_path TO ] {search-path}; {ddl-end} $br %end pgmodeler-0.9.4/assets/schemas/sql/table.sch000066400000000000000000000044611416010000600210050ustar00rootroot00000000000000# SQL definition for tables # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE] %if ({pgsql-ver} != "9.0") %and {unlogged} %then [ UNLOGGED] %end [ TABLE ] {name} %if ({pgsql-ver} >=f "10.0") %and {partitioned-table} %then $br [PARTITION OF ] {partitioned-table} $sp %end %if %not {partitioned-table} %or ({pgsql-ver} =f "10.0") %and {partitioned-table} %then %if {partition-bound-expr} %then $br [FOR VALUES ] {partition-bound-expr} %else DEFAULT %end %end %if ({pgsql-ver} >=f "10.0") %and {partitioning} %then $br [PARTITION BY ] {partitioning} [ (] {partitionkey} [)] %end %if {ancestor-table} %then $br [ INHERITS(] {ancestor-table} [)] %end %if ({pgsql-ver} <=f "11.0") %and {oids} %then $br [WITH ( OIDS = TRUE )] %end %if {tablespace} %then $br [TABLESPACE ] {tablespace} %end ; {ddl-end} %if {gen-alter-cmds} %then %if {columns} %then $br {columns} %end %if {constraints} %then $br {constraints} %end %end %if {comment} %then {comment} %end %if {cols-comment} %then {cols-comment} %end %if {owner} %then {owner} %end %if ({pgsql-ver} >=f "9.5") %and {rls-enabled} %then [ALTER TABLE ] {name} [ ENABLE ROW LEVEL SECURITY;] {ddl-end} %if {rls-forced} %then [ALTER TABLE ] {name} [ FORCE ROW LEVEL SECURITY;] {ddl-end} %end %end %if {appended-sql} %then {appended-sql} {ddl-end} %end %if {initial-data} %then $br {initial-data} $br %end $br pgmodeler-0.9.4/assets/schemas/sql/tablespace.sch000066400000000000000000000013061416010000600220140ustar00rootroot00000000000000# SQL definition for tablespaces # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE TABLESPACE ] {name} $br %if {owner} %then $tb [OWNER ] {owner} $br %end $tb [LOCATION ] {directory}; $br {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/transform.sch000066400000000000000000000020101416010000600217150ustar00rootroot00000000000000# SQL definition for transforms # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if ({pgsql-ver} >=f "9.5") %then [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE TRANSFORM FOR ] {type} [ LANGUAGE ] {language} [ (] # One of the two function should be defined otherwise the code generation will fail %if {fromsql} %or %not {tosql} %then $br $tb [FROM SQL WITH FUNCTION ] {fromsql} %end %if {fromsql} %and {tosql} %then , %end %if {tosql} %or %not {fromsql} %then $br $tb [TO SQL WITH FUNCTION ] {tosql} %end $br [);] {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/trigger.sch000066400000000000000000000025231416010000600213560ustar00rootroot00000000000000# SQL definition for triggers # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE ] %if {constraint} %then [CONSTRAINT ]%end [TRIGGER ] {name} $br $tb {firing-type} $sp {events} $br $tb [ON ] {table} $br %if {constraint} %then %if {ref-table} %then $tb [FROM ] {ref-table} $br %end %if {deferrable} %then $tb [DEFERRABLE ] {defer-type} $br %else $tb [NOT DEFERRABLE ] $br %end %end %if {old-table-name} %or {new-table-name} %and ({pgsql-ver} >=f "10.0") %then $tb REFERENCING %if {old-table-name} %then [ OLD TABLE AS ] {old-table-name} %end %if {new-table-name} %then [ NEW TABLE AS ] {new-table-name} %end $br %end $tb [FOR EACH ] %if {per-line} %then ROW %else STATEMENT %end $br %if {condition} %then $tb WHEN $sp ({condition}) $br %end $tb [EXECUTE PROCEDURE ] {trigger-func}( %if {arguments} %then {arguments} %end ); {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/typeattribute.sch000066400000000000000000000004461416010000600226220ustar00rootroot00000000000000# SQL definition for user defined type attributes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ ] {name} $sp {type} %if ({pgsql-ver} != "9.0") %and {collation} %then [ COLLATE ] {collation} %end , $br pgmodeler-0.9.4/assets/schemas/sql/usermapping.sch000066400000000000000000000013551416010000600222470ustar00rootroot00000000000000# SQL definition for user mapping # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE USER MAPPING FOR ] %if {owner} %then {owner} %else PUBLIC %end $br [SERVER ] {server} %if {options} %then $br [OPTIONS (] {options} ) %end ; {ddl-end} %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/sql/usertype.sch000066400000000000000000000045711416010000600216000ustar00rootroot00000000000000# SQL definition for user defined types # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br [CREATE TYPE ] {name} %if {reduced-form} %then ; {ddl-end} $br %else %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end %if {base} %then [ (] $br %else [ AS] $br %end %if {composite} %then ( $br {typeattrib} $br ); %end %if {enumeration} %then [ENUM ] ( %if {labels} %then {labels} %end [);] %end %if ({pgsql-ver} >=f "9.2") %and {range} %then [RANGE (] $br [SUBTYPE = ] {subtype} %if {collation} %then $br [, COLLATE = ] {collation} %end %if {opclass} %then $br [, SUBTYPE_OPCLASS = ] {opclass} %end %if {canonical} %then $br [, CANONICAL = ] {canonical} %end %if {subtypediff} %then $br [, SUBTYPE_DIFF = ] {subtypediff} %end ); %end %if {base} %then %if {input} %then $tb [INPUT = ] {input}, $br %end %if {output} %then $tb [OUTPUT = ] {output} $br %end %if {receive} %then $tb [, RECEIVE = ] {receive} $br %end %if {send} %then $tb [, SEND = ] {send} $br %end %if {tpmodin} %then $tb [, TYPMOD_IN = ] {tpmodin} $br %end %if {tpmodout} %then $tb [, TYPMOD_OUT = ] {tpmodout} $br %end %if {analyze} %then $tb [, ANALYZE = ] {analyze} $br %end %if {internal-length} %then $tb [, INTERNALLENGTH = ] {internal-length} $br %end %if {by-value} %then $tb [, PASSEDBYVALUE ] $br %end %if {alignment} %then $tb [, ALIGNMENT = ] {alignment} $br %end %if {storage} %then $tb [, STORAGE = ] {storage} $br %end %if {default-value} %then $tb [, DEFAULT = ] {default-value} $br %end %if {element} %then $tb [, ELEMENT = ] {element} $br %end %if {delimiter} %then $tb [, DELIMITER = ] '{delimiter}' $br %end %if {like-type} %then $tb [, LIKE = ] {like-type} $br %end %if {category} %then $tb [, CATEGORY = ] '{category}' $br %end %if {preferred} %then $tb [, PREFERRED = ] true $br %end %if {collatable} %then $tb [, COLLATABLE = ] true $br %end ); %end {ddl-end} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br %end pgmodeler-0.9.4/assets/schemas/sql/view.sch000066400000000000000000000022371416010000600206670ustar00rootroot00000000000000# SQL definition for views # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [-- object: ] {name} [ | type: ] {sql-object} [ --] $br [-- ] {drop} # This is a special token that pgModeler recognizes as end of DDL command # when exporting models directly to DBMS. DO NOT REMOVE THIS TOKEN! %set {ddl-end} $br [-- ddl-end --] $br %if {prepended-sql} %then {prepended-sql} {ddl-end} $br %end [CREATE ] %if ({pgsql-ver} >=f "9.3") %then %if {recursive} %then [RECURSIVE ] %else %if {materialized} %then [MATERIALIZED ] %end %end %end VIEW $sp {name} %if {columns} %then [ (] {columns} [)] %end $br %if ({pgsql-ver} >=f "9.3") %then %if {materialized} %and {tablespace} %then TABLESPACE $sp {tablespace} $br %end %end [AS ] $br #Commom table expression (CTE) %if {cte-exp} %then [WITH ] {cte-exp} %end $br {definition} %if ({pgsql-ver} >=f "9.3") %then %if {materialized} %and {with-no-data} %then $br [WITH NO DATA] %end %end {ddl-end} %if {comment} %then {comment} %end %if {owner} %then {owner} %end %if {appended-sql} %then {appended-sql} {ddl-end} %end $br pgmodeler-0.9.4/assets/schemas/xml/000077500000000000000000000000001416010000600172135ustar00rootroot00000000000000pgmodeler-0.9.4/assets/schemas/xml/aggregate.sch000066400000000000000000000012671416010000600216460ustar00rootroot00000000000000# XML definition for aggregate functions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {types} %then {types} %end {state-type} {transition} %if {final} %then {final} %end %if {sort-op} %then {sort-op} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/appendedsql.sch000066400000000000000000000006771416010000600222240ustar00rootroot00000000000000# XML definition for appendend SQL commands # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. #Creates element envolving the appended-sql #The tag is converted to in order #to not cause syntax errors on the schema parser $tb $br pgmodeler-0.9.4/assets/schemas/xml/basetype.sch000066400000000000000000000012241416010000600215250ustar00rootroot00000000000000# XML definition for native types # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [ $br pgmodeler-0.9.4/assets/schemas/xml/cast.sch000066400000000000000000000011341416010000600206430ustar00rootroot00000000000000# XML definition for type casts # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end {source-type} {destiny-type} %if {function} %then {function} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/changelog.sch000066400000000000000000000003741416010000600216450ustar00rootroot00000000000000# XML definition for database model changelog # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {entry} %then $br $br {entry} $br %end pgmodeler-0.9.4/assets/schemas/xml/collation.sch000066400000000000000000000021521416010000600216760ustar00rootroot00000000000000# XML definition for collations # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end $br %if {schema} %then {schema} %end %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %else /> $br %end pgmodeler-0.9.4/assets/schemas/xml/column.sch000066400000000000000000000020211416010000600212020ustar00rootroot00000000000000# XML definition for columns # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [ $br $tb {type} %if {comment} %then $tb {comment} %end $tb $br pgmodeler-0.9.4/assets/schemas/xml/comment.sch000066400000000000000000000006341416010000600213570ustar00rootroot00000000000000# XML definition for comments # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. #Creates element envolving the comment #The tag is converted to in order #to not cause syntax errors on the schema parser $tb $brpgmodeler-0.9.4/assets/schemas/xml/confparam.sch000066400000000000000000000004251416010000600216610ustar00rootroot00000000000000# XML definition for functions/procedures configuration parameters definition # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $br pgmodeler-0.9.4/assets/schemas/xml/constraint.sch000066400000000000000000000030751416010000600221030ustar00rootroot00000000000000# XML definition for constraints # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {decl-in-table} %then $tb %end [ $br %if {tablespace} %then $tb {tablespace} %end %if {decl-in-table} %then $tb %end %if {src-columns} %then $tb $br %end %if {dst-columns} %then %if {decl-in-table} %then $tb %end $tb $br %end %if {ex-constr} %then {elements} %end %if {ck-constr} %or {ex-constr} %then %if {expression} %then %if {decl-in-table} %then $tb %end $tb $br %end %end %if {comment} %then $tb {comment} %end %if {decl-in-table} %then $tb %end $br %if %not {decl-in-table} %then $br %end pgmodeler-0.9.4/assets/schemas/xml/conversion.sch000066400000000000000000000011771416010000600221050ustar00rootroot00000000000000# XML definition for type encoding conversion # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end {function} $br $br pgmodeler-0.9.4/assets/schemas/xml/customidxs.sch000066400000000000000000000004201416010000600221100ustar00rootroot00000000000000# XML definition for custom object indexes in tables # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br $tb [ $br {objects} $tb pgmodeler-0.9.4/assets/schemas/xml/database.sch000066400000000000000000000017341416010000600214630ustar00rootroot00000000000000# XML definition for tablespaces # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {owner} %then {owner} %end %if {tablespace} %then {tablespace} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/dbmodel.sch000066400000000000000000000032461416010000600213250ustar00rootroot00000000000000# XML definition for database model # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br [] $br $br %if {objects} %then {objects} %end %if {permission} %then {permission} %end %if {changelog} %then {changelog} %end $br pgmodeler-0.9.4/assets/schemas/xml/domain.sch000066400000000000000000000015071416010000600211640ustar00rootroot00000000000000# XML definition for domains # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %else #%if {constraint} %then # [ constraint=] "{constraint}" #%end [ not-null=] %if {not-null} %then "true" %else "false" %end %if {default-value} %then [ default-value=] "{default-value}" %end %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end > $br {schema} %if {owner} %then {owner} %end %if {collation} %then {collation} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end {type} %if {constraints} %then {constraints} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/domconstraint.sch000066400000000000000000000005551416010000600226030ustar00rootroot00000000000000# XML definition for domain's check constraint # PostgreSQL Version: 9.x # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [] $br $tb $tb $br $tb [] $br pgmodeler-0.9.4/assets/schemas/xml/dtd/000077500000000000000000000000001416010000600177665ustar00rootroot00000000000000pgmodeler-0.9.4/assets/schemas/xml/dtd/aggregate.dtd000066400000000000000000000007351416010000600224160ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/baseelements.dtd000066400000000000000000000020211416010000600231250ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/basetype.dtd000066400000000000000000000012071416010000600222770ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/cast.dtd000066400000000000000000000007271416010000600214230ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/changelog.dtd000066400000000000000000000006341416010000600224150ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/collation.dtd000066400000000000000000000014621416010000600224520ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/column.dtd000066400000000000000000000015741416010000600217670ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/constraint.dtd000066400000000000000000000023061416010000600226500ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/conversion.dtd000066400000000000000000000010731416010000600226510ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/customidxs.dtd000066400000000000000000000004251416010000600226660ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/database.dtd000066400000000000000000000014341416010000600222310ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/dbmodel.dtd000066400000000000000000000063421416010000600220760ustar00rootroot00000000000000 %baseelements; %basetype; %object; %role; %tablespace; %database; %schema; %language; %parameter; %function; %usertype; %cast; %conversion; %operator; %opfamily; %opclass; %aggregate; %domain; %index; %rule; %trigger; %table; %sequence; %view; %textbox; %relationship; %permission; %collation; %extension; %tag; %customidxs; %eventtrigger; %genericsql; %policy; %foreigndatawrapper; %foreignserver; %usermapping; %foreigntable; %transform; %procedure; %changelog; pgmodeler-0.9.4/assets/schemas/xml/dtd/domain.dtd000066400000000000000000000010721416010000600217320ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/element.dtd000066400000000000000000000005431416010000600221160ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/eventtrigger.dtd000066400000000000000000000011131416010000600231640ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/extension.dtd000066400000000000000000000010501416010000600224730ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/foreigndatawrapper.dtd000066400000000000000000000007651416010000600243570ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/foreignserver.dtd000066400000000000000000000011011416010000600233340ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/foreigntable.dtd000066400000000000000000000022371416010000600231300ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/function.dtd000066400000000000000000000023011416010000600223040ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/genericsql.dtd000066400000000000000000000005671416010000600226270ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/index.dtd000066400000000000000000000017611416010000600215770ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/label.dtd000066400000000000000000000004271416010000600215450ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/language.dtd000066400000000000000000000007101416010000600222440ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/metadata.dtd000066400000000000000000000040101416010000600222360ustar00rootroot00000000000000 %baseelements; %label; %textbox; %tag; %object; %genericsql; pgmodeler-0.9.4/assets/schemas/xml/dtd/object.dtd000066400000000000000000000013651416010000600217360ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/opclass.dtd000066400000000000000000000011451416010000600221300ustar00rootroot00000000000000 %element; pgmodeler-0.9.4/assets/schemas/xml/dtd/operator.dtd000066400000000000000000000011751416010000600223220ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/opfamily.dtd000066400000000000000000000007551416010000600223120ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/parameter.dtd000066400000000000000000000006711416010000600224470ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/permission.dtd000066400000000000000000000022521416010000600226540ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/policy.dtd000066400000000000000000000010701416010000600217600ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/procedure.dtd000066400000000000000000000010741416010000600224550ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/relationship.dtd000066400000000000000000000036751416010000600231770ustar00rootroot00000000000000 %label; pgmodeler-0.9.4/assets/schemas/xml/dtd/role.dtd000066400000000000000000000017311416010000600214260ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/rule.dtd000066400000000000000000000011111416010000600214240ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/schema.dtd000066400000000000000000000011431416010000600217220ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/sequence.dtd000066400000000000000000000013621416010000600222750ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/table.dtd000066400000000000000000000030321416010000600215500ustar00rootroot00000000000000 %column; %constraint; pgmodeler-0.9.4/assets/schemas/xml/dtd/tablespace.dtd000066400000000000000000000007021416010000600225650ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/tag.dtd000066400000000000000000000007741416010000600212460ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/textbox.dtd000066400000000000000000000012351416010000600221610ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/transform.dtd000066400000000000000000000005731416010000600225030ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/trigger.dtd000066400000000000000000000021601416010000600221250ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/usermapping.dtd000066400000000000000000000007141416010000600230170ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/usertype.dtd000066400000000000000000000022271416010000600223460ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/dtd/view.dtd000066400000000000000000000025251416010000600214410ustar00rootroot00000000000000 pgmodeler-0.9.4/assets/schemas/xml/element.sch000066400000000000000000000006261416010000600213470ustar00rootroot00000000000000# XML definition for operator classes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [ $br $tb {definition} $tb $br pgmodeler-0.9.4/assets/schemas/xml/entry.sch000066400000000000000000000004401416010000600210510ustar00rootroot00000000000000# XML definition for database model changelog entries # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb pgmodeler-0.9.4/assets/schemas/xml/enumeration.sch000066400000000000000000000003561416010000600222440ustar00rootroot00000000000000# XML definition for enumeration labels in user-defined types # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [ $brpgmodeler-0.9.4/assets/schemas/xml/eventtrigger.sch000066400000000000000000000011461416010000600224210ustar00rootroot00000000000000# XML definition for event triggers # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {function} %then {function} %end %if {filter} %then {filter} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/excelement.sch000066400000000000000000000013671416010000600220520ustar00rootroot00000000000000# XML definition for exclude constraint elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $tb $br %if {column} %then $tb $tb $tb [ $br %else #%if {expression} %then $tb $tb $tb $br #%end %end %if {opclass} %then $tb $tb $tb {opclass} %end #%if {operator} %then $tb $tb $tb {operator} #%end $tb $tb $br pgmodeler-0.9.4/assets/schemas/xml/extension.sch000066400000000000000000000012401416010000600217230ustar00rootroot00000000000000# XML definition for extensions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {schema} %then {schema} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/foreigndatawrapper.sch000066400000000000000000000013271416010000600236010ustar00rootroot00000000000000# XML definition for indexes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [ $br %else %if {options} %then [ options=] "{options}" %end %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end > $br %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {handler} %then {handler} %end %if {validator} %then {validator} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/foreignserver.sch000066400000000000000000000013761416010000600226010ustar00rootroot00000000000000# XML definition for servers # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [ $br %else %if {type} %then [ type=] "{type}" %end %if {version} %then [ version=] "{version}" %end %if {options} %then [ options=] "{options}" %end %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end > $br %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {fdw} %then {fdw} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/foreigntable.sch000066400000000000000000000026571416010000600223650ustar00rootroot00000000000000# XML definition for tables # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end {server} %if {tag} %then {tag} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end {position} %if {columns} %then {columns} %end %if {constraints} %then {constraints} %end %if {col-indexes} %then {col-indexes} %end %if {constr-indexes} %then {constr-indexes} %end %if {initial-data} %then $tb $br $br $tb $br %end $br $br pgmodeler-0.9.4/assets/schemas/xml/function.sch000066400000000000000000000033361416010000600215440ustar00rootroot00000000000000# XML definition for functions # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end $br %else %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end $br $tb $tb window-func=%if {window-func} %then "true" %else "false" %end $br %if {leakproof} %then $tb $tb leakproof="true" $br %end $tb $tb returns-setof=%if {returns-setof} %then "true" %else "false" %end $br $tb $tb behavior-type="{behavior-type}" $br $tb $tb function-type="{function-type}" $br $tb $tb security-type="{security-type}" $br $tb $tb parallel-type="{parallel-type}" $br $tb $tb execution-cost="{execution-cost}" $br $tb $tb row-amount="{row-amount}" > $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {language} %then {language} %end $tb $br %if {return-table} %then {return-table} %else {return-type} %end $tb $br %if {transform-types} %then $tb [ $br %end %if {config-params} %then {config-params} %end %if {parameters} %then {parameters} %end %if {library} %then $tb [ $br %else $tb $br %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/genericsql.sch000066400000000000000000000007021416010000600220450ustar00rootroot00000000000000# XML definition for generic sql objects # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br $tb $br %if {objects} %then {objects} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/idxelement.sch000066400000000000000000000013511416010000600220500ustar00rootroot00000000000000# XML definition for indexes elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $tb $br %if {column} %then $tb $tb $tb [ $br %else #%if {expression} %then $tb $tb $tb $br #%end %end %if {collation} %then $tb $tb {collation} %end %if {opclass} %then $tb $tb $tb {opclass} %end $tb $tb $br pgmodeler-0.9.4/assets/schemas/xml/index.sch000066400000000000000000000020501416010000600210160ustar00rootroot00000000000000# XML definition for indexes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {tablespace} %then {tablespace} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end {elements} %if {predicate} %then $tb $br %end %if {include-cols} %then $tb [] $br %end $br $br pgmodeler-0.9.4/assets/schemas/xml/info.sch000066400000000000000000000053351416010000600206530ustar00rootroot00000000000000# XML definition for a single object's metadata # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %set {space} $br $tb $tb $tb [ $br %if {position} %then {position} %end %if {appended-sql} %then $tb {appended-sql} %end %if {prepended-sql} %then $tb {prepended-sql} %end $tb %else [/>] %end $br pgmodeler-0.9.4/assets/schemas/xml/label.sch000066400000000000000000000004031416010000600207660ustar00rootroot00000000000000# XML definition for relationship label positioning # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $brpgmodeler-0.9.4/assets/schemas/xml/language.sch000066400000000000000000000013541416010000600215000ustar00rootroot00000000000000# XML definition for schemas # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [] $br %else %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end [ trusted=] %if {trusted} %then "true" %else "false" %end [>]$br %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {handler} %then {handler} %end %if {validator} %then {validator} %end %if {inline} %then {inline} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/metadata.sch000066400000000000000000000007141416010000600214740ustar00rootroot00000000000000# XML definition for graphical object metada file # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br [] $br $br %if {info} %then {info} %end pgmodeler-0.9.4/assets/schemas/xml/object.sch000066400000000000000000000010551416010000600211610ustar00rootroot00000000000000# XML definition for custom index for a single column or constraint # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {index} %then $tb %end $tb [ $br pgmodeler-0.9.4/assets/schemas/xml/opclass.sch000066400000000000000000000014601416010000600213570ustar00rootroot00000000000000# XML definition for operator classes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %else [ index-type=] "{index-type}" [ default=] %if {default} %then "true" %else "false" %end %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end > $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {family} %then $tb [] $br %end {type} {elements} $br $br %end pgmodeler-0.9.4/assets/schemas/xml/operator.sch000066400000000000000000000017331416010000600215510ustar00rootroot00000000000000# XML definition for schemas # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [ $br %else %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end > $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {left-type} %then {left-type} %end %if {right-type} %then {right-type} %end %if {commutator-op} %then {commutator-op} %end %if {negator-op} %then {negator-op} %end %if {operfunc} %then {operfunc} %end %if {join} %then {join} %end %if {restriction} %then {restriction} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/opfamily.sch000066400000000000000000000012171416010000600215330ustar00rootroot00000000000000# XML definition for operator families # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [ $br %else [name=] "{name}" [ index-type=] "{index-type}" %if {protected} %then [ protected=] "true" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end > $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/parameter.sch000066400000000000000000000006551416010000600217000ustar00rootroot00000000000000# XML definition for function parameters # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [$br $tb {type} $tb $br pgmodeler-0.9.4/assets/schemas/xml/partitionkey.sch000066400000000000000000000007501416010000600224360ustar00rootroot00000000000000# XML definition for indexes elements # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $tb $br %if {column} %then $tb $tb $tb [ $br %else $tb $tb $tb $br %end %if {collation} %then $tb $tb {collation} %end %if {opclass} %then $tb $tb $tb {opclass} %end $tb $tb $br pgmodeler-0.9.4/assets/schemas/xml/permission.sch000066400000000000000000000021561416010000600221060ustar00rootroot00000000000000# XML definition for grants # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br $tb [] $br %if {roles} %then $tb [] $br %end $tb [] $br $br pgmodeler-0.9.4/assets/schemas/xml/policy.sch000066400000000000000000000016061416010000600212140ustar00rootroot00000000000000# XML definition for policies # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {roles} %then $tb [] %end %if {using-exp} %then $br $tb [] %end %if {check-exp} %then $br $tb [] %end $br pgmodeler-0.9.4/assets/schemas/xml/position.sch000066400000000000000000000003331416010000600215550ustar00rootroot00000000000000# XML definition for object positioning # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [ $br pgmodeler-0.9.4/assets/schemas/xml/prependedsql.sch000066400000000000000000000007031416010000600224000ustar00rootroot00000000000000# XML definition for prepended SQL commands # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. #Creates element envolving the prepended-sql #The tag is converted to in order #to not cause syntax errors on the schema parser $tb $br pgmodeler-0.9.4/assets/schemas/xml/procedure.sch000066400000000000000000000016761416010000600217140ustar00rootroot00000000000000# XML definition for procedures # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {language} %then {language} %end %if {transform-types} %then $tb [ $br %end %if {config-params} %then {config-params} %end %if {parameters} %then {parameters} %end %if {library} %then $tb [ $br %else $tb $br %end $br $br pgmodeler-0.9.4/assets/schemas/xml/reference.sch000066400000000000000000000013271416010000600216530ustar00rootroot00000000000000# XML definition for view references # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $br $tb $tb $br %if {columns} %then {columns} %end %if {ref-tables} %then {ref-tables} %end $tb $br %else /> $br %end pgmodeler-0.9.4/assets/schemas/xml/reftable.sch000066400000000000000000000003301416010000600214720ustar00rootroot00000000000000# XML definition for view references # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb $tb [] $br pgmodeler-0.9.4/assets/schemas/xml/relationship.sch000066400000000000000000000052571416010000600224240ustar00rootroot00000000000000# XML definition for relationships # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br $br %else > $br %if {points} %then $tb $br $tb {points} $tb $br %end %if {labels-pos} %then {labels-pos} %end %if %not {relgen} %and %not {reldep} %and %not {relpart} %then %if {columns} %then {columns} %end %if {constraints} %then {constraints} %end %end %if {original-pk} %then {original-pk} %end %if {special-pk-cols} %then $tb [ $br %end %if {partition-bound-expr} %then $tb $br %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/role.sch000066400000000000000000000024351416010000600206570ustar00rootroot00000000000000# XML definition for roles # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [ $br %else %if {superuser} %then $br [ superuser="true"] %end %if {createdb} %then $br [ createdb="true"] %end %if {replication} %then $br [ replication="true"] %end %if {createrole} %then $br [ createrole="true"] %end %if {inherit} %then $br [ inherit="true"] %end %if {login} %then $br [ login="true"] %end %if {bypassrls} %then $br [ bypassrls="true"] %end %if {encrypted} %then $br [ encrypted="true"] %end %if {connlimit} %then $br [ connlimit=]"{connlimit}" %end %if {validity} %then $br [ validity=]"{validity}" %end %if {password} %then $br [ password=]"{password}" %end %if {protected} %then $br [ protected="true"] %end %if {sql-disabled} %then $br [ sql-disabled="true"] %end > $br %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {member-roles} %then $tb [] $br %end %if {admin-roles} %then $tb [] $br %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/rule.sch000066400000000000000000000014501416010000600206610ustar00rootroot00000000000000# XML definition for indexes # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br %if {comment} %then $tb {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end %if {condition} %then $tb $tb $br %end %if {commands} %then $tb $tb $br %end $br $br pgmodeler-0.9.4/assets/schemas/xml/schema.sch000066400000000000000000000015121416010000600211510ustar00rootroot00000000000000# XML definition for schemas # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. %if {reduced-form} %then $tb %end [ $br %else %if {layers} %then [ layers=]"{layers}" %end %if {alias} %then $sp alias="{alias}" %end %if {protected} %then [ protected=] "true" %end %if {rect-visible} %then [ rect-visible=] "true" %end %if {fill-color} %then [ fill-color=] "{fill-color}" %end %if {sql-disabled} %then [ sql-disabled=] "true" %end %if {faded-out} %then [ faded-out=] "true" %end > $br %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end $br $br %end pgmodeler-0.9.4/assets/schemas/xml/sequence.sch000066400000000000000000000015421416010000600215240ustar00rootroot00000000000000# XML definition for sequences # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. [ $br {schema} %if {owner} %then {owner} %end %if {comment} %then {comment} %end %if {appended-sql} %then {appended-sql} %end %if {prepended-sql} %then {prepended-sql} %end $br $br pgmodeler-0.9.4/assets/schemas/xml/style.sch000066400000000000000000000003441416010000600210530ustar00rootroot00000000000000# XML definition for object tag styles # CAUTION: Do not modify this file unless you know what you are doing. # Code generation can be broken if incorrect changes are made. $tb [

    If you prefer it's possible to report this issue anytime on pgModeler's project repository at GitHub.