@restforgejs/platform 5.3.6 → 5.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +2 -2
- package/cli/consumer-deploy.js +1 -1
- package/cli/consumer.js +1 -1
- package/cli/designer.js +1 -1
- package/generators/cli/fast-track.js +272 -53
- package/generators/cli/init.js +37 -3
- package/generators/lib/templates/dashboard-catalog.js +1 -1
- package/generators/lib/templates/db-connection-env.js +1 -1
- package/generators/lib/templates/dbschema-catalog.js +1 -1
- package/generators/lib/templates/field-validation-catalog.js +1 -1
- package/generators/lib/templates/mysql-template.js +1 -1
- package/generators/lib/templates/oracle-template.js +1 -1
- package/generators/lib/templates/postgres-template.js +1 -1
- package/generators/lib/templates/query-declarative-catalog.js +1 -1
- package/generators/lib/templates/sqlite-template.js +1 -1
- package/integrity-manifest.json +18 -18
- package/package.json +1 -1
- package/scripts/verify-integrity.js +1 -1
- package/server.js +1 -1
- package/src/components/handlers/adjust_handler.js +1 -1
- package/src/components/handlers/audit_handler.js +1 -1
- package/src/components/handlers/delete_handler.js +1 -1
- package/src/components/handlers/export_handler.js +1 -1
- package/src/components/handlers/import_handler.js +1 -1
- package/src/components/handlers/insert_handler.js +1 -1
- package/src/components/handlers/update_handler.js +1 -1
- package/src/components/handlers/upload_handler.js +1 -1
- package/src/components/handlers/workflow_handler.js +1 -1
- package/src/components/integrations/webhook.js +1 -1
- package/src/consumers/baseConsumer.js +1 -1
- package/src/consumers/declarativeMapper.js +1 -1
- package/src/consumers/handlers/apiHandler.js +1 -1
- package/src/consumers/handlers/consoleHandler.js +1 -1
- package/src/consumers/handlers/databaseHandler.js +1 -1
- package/src/consumers/handlers/index.js +1 -1
- package/src/consumers/handlers/kafkaHandler.js +1 -1
- package/src/consumers/index.js +1 -1
- package/src/consumers/messageTransformer.js +1 -1
- package/src/consumers/validator.js +1 -1
- package/src/core/db/dialect/base-dialect.js +1 -1
- package/src/core/db/dialect/index.js +1 -1
- package/src/core/db/dialect/mysql-dialect.js +1 -1
- package/src/core/db/dialect/oracle-dialect.js +1 -1
- package/src/core/db/dialect/postgres-dialect.js +1 -1
- package/src/core/db/dialect/sqlite-dialect.js +1 -1
- package/src/core/db/flatten-helper.js +1 -1
- package/src/core/db/query-builder-error.js +1 -1
- package/src/core/db/query-builder.js +1 -1
- package/src/core/db/relation-helper.js +1 -1
- package/src/core/handlers/delete_handler.js +1 -1
- package/src/core/handlers/insert_handler.js +1 -1
- package/src/core/handlers/update_handler.js +1 -1
- package/src/core/models/base-model.js +1 -1
- package/src/core/utils/cache-manager.js +1 -1
- package/src/core/utils/component-engine.js +1 -1
- package/src/core/utils/context-builder.js +1 -1
- package/src/core/utils/datetime-formatter.js +1 -1
- package/src/core/utils/datetime-parser.js +1 -1
- package/src/core/utils/db.js +1 -1
- package/src/core/utils/logger.js +1 -1
- package/src/core/utils/payload-loader.js +1 -1
- package/src/core/utils/security-checks.js +1 -1
- package/src/middleware/body-options.js +1 -1
- package/src/middleware/cors.js +1 -1
- package/src/middleware/idempotency.js +1 -1
- package/src/middleware/rate-limiter.js +1 -1
- package/src/middleware/request-logger.js +1 -1
- package/src/middleware/security-headers.js +1 -1
- package/src/models/base-model-mysql.js +1 -1
- package/src/models/base-model-oracle.js +1 -1
- package/src/models/base-model-sqlite.js +1 -1
- package/src/models/base-model.js +1 -1
- package/src/pro/caching/redis-client.js +1 -1
- package/src/pro/caching/redis-helper.js +1 -1
- package/src/pro/consumers/baseConsumer.js +1 -1
- package/src/pro/consumers/declarativeMapper.js +1 -1
- package/src/pro/consumers/handlers/apiHandler.js +1 -1
- package/src/pro/consumers/handlers/consoleHandler.js +1 -1
- package/src/pro/consumers/handlers/databaseHandler.js +1 -1
- package/src/pro/consumers/handlers/index.js +1 -1
- package/src/pro/consumers/handlers/kafkaHandler.js +1 -1
- package/src/pro/consumers/index.js +1 -1
- package/src/pro/consumers/messageTransformer.js +1 -1
- package/src/pro/consumers/validator.js +1 -1
- package/src/pro/database/base-model-mysql.js +1 -1
- package/src/pro/database/base-model-oracle.js +1 -1
- package/src/pro/database/base-model-sqlite.js +1 -1
- package/src/pro/database/db-mysql.js +1 -1
- package/src/pro/database/db-oracle.js +1 -1
- package/src/pro/database/db-sqlite.js +1 -1
- package/src/pro/excel/excel-generator.js +1 -1
- package/src/pro/excel/excel-parser.js +1 -1
- package/src/pro/excel/export-service.js +1 -1
- package/src/pro/excel/export_handler.js +1 -1
- package/src/pro/excel/import-service.js +1 -1
- package/src/pro/excel/import-validator.js +1 -1
- package/src/pro/excel/import_handler.js +1 -1
- package/src/pro/excel/upsert-builder.js +1 -1
- package/src/pro/idgen/idgen-routes.js +1 -1
- package/src/pro/integrations/lookup-resolver.js +1 -1
- package/src/pro/integrations/upload-handler-v2.js +1 -1
- package/src/pro/integrations/upload-handler.js +1 -1
- package/src/pro/integrations/webhook.js +1 -1
- package/src/pro/locking/lock-routes.js +1 -1
- package/src/pro/locking/resource-lock-manager.js +1 -1
- package/src/pro/messaging/kafkaConsumerService.js +1 -1
- package/src/pro/messaging/kafkaService.js +1 -1
- package/src/pro/messaging/messagehubService.js +1 -1
- package/src/pro/messaging/rabbitmqService.js +1 -1
- package/src/pro/scheduler/job-manager.js +1 -1
- package/src/pro/scheduler/job-routes.js +1 -1
- package/src/pro/scheduler/job-validator.js +1 -1
- package/src/pro/storage/base-storage-provider.js +1 -1
- package/src/pro/storage/file-metadata-helper.js +1 -1
- package/src/pro/storage/index.js +1 -1
- package/src/pro/storage/local-storage-provider.js +1 -1
- package/src/pro/storage/s3-storage-provider.js +1 -1
- package/src/pro/storage/upload-cleanup-job.js +1 -1
- package/src/pro/storage/upload-cleanup-scheduler.js +1 -1
- package/src/pro/storage/upload-pending-tracker.js +1 -1
- package/src/pro/websocket/broadcast-helper.js +1 -1
- package/src/pro/websocket/index.js +1 -1
- package/src/pro/websocket/livesync-server.js +1 -1
- package/src/pro/websocket/ws-broadcaster.js +1 -1
- package/src/services/export-service.js +1 -1
- package/src/services/import-service.js +1 -1
- package/src/services/kafkaConsumerService.js +1 -1
- package/src/services/kafkaService.js +1 -1
- package/src/services/messagehubService.js +1 -1
- package/src/services/rabbitmqService.js +1 -1
- package/src/utils/cache-invalidation-registry.js +1 -1
- package/src/utils/cache-manager.js +1 -1
- package/src/utils/component-engine.js +1 -1
- package/src/utils/config-extractor.js +1 -1
- package/src/utils/consumerLogger.js +1 -1
- package/src/utils/context-builder.js +1 -1
- package/src/utils/dashboard-helpers.js +1 -1
- package/src/utils/dateHelper.js +1 -1
- package/src/utils/datetime-formatter.js +1 -1
- package/src/utils/datetime-parser.js +1 -1
- package/src/utils/db-bootstrap.js +1 -1
- package/src/utils/db-mysql.js +1 -1
- package/src/utils/db-oracle.js +1 -1
- package/src/utils/db-sqlite.js +1 -1
- package/src/utils/db.js +1 -1
- package/src/utils/demo-generator.js +1 -1
- package/src/utils/excel-generator.js +1 -1
- package/src/utils/excel-parser.js +1 -1
- package/src/utils/file-watcher.js +1 -1
- package/src/utils/id-generator.js +1 -1
- package/src/utils/idempotency-manager.js +1 -1
- package/src/utils/import-validator.js +1 -1
- package/src/utils/license-client.js +1 -1
- package/src/utils/lock-manager.js +1 -1
- package/src/utils/logger.js +1 -1
- package/src/utils/lookup-resolver.js +1 -1
- package/src/utils/payload-loader.js +1 -1
- package/src/utils/processor-response.js +1 -1
- package/src/utils/rabbitmq.js +1 -1
- package/src/utils/redis-client.js +1 -1
- package/src/utils/redis-helper.js +1 -1
- package/src/utils/request-scope.js +1 -1
- package/src/utils/security-checks.js +1 -1
- package/src/utils/service-resolver.js +1 -1
- package/src/utils/shutdown-coordinator.js +1 -1
- package/src/utils/soft-delete-dashboard-guard.js +1 -1
- package/src/utils/sql-table-extractor.js +1 -1
- package/src/utils/trusted-keys.js +1 -1
- package/src/utils/upload-handler.js +1 -1
- package/src/utils/upsert-builder.js +1 -1
- package/src/utils/workflow-hook-executor.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x14de28,_0xd8fc7c){const _0x2aa953=a0_0x3079,_0x46ffaa=_0x14de28();while(!![]){try{const _0x3d8d6b=parseInt(_0x2aa953(0x28d))/0x1*(-parseInt(_0x2aa953(0x256))/0x2)+-parseInt(_0x2aa953(0x15c))/0x3+parseInt(_0x2aa953(0x2cf))/0x4*(parseInt(_0x2aa953(0x255))/0x5)+-parseInt(_0x2aa953(0x279))/0x6*(-parseInt(_0x2aa953(0x165))/0x7)+parseInt(_0x2aa953(0x1f7))/0x8*(-parseInt(_0x2aa953(0x230))/0x9)+parseInt(_0x2aa953(0x2b8))/0xa+-parseInt(_0x2aa953(0x1d2))/0xb*(-parseInt(_0x2aa953(0x287))/0xc);if(_0x3d8d6b===_0xd8fc7c)break;else _0x46ffaa['push'](_0x46ffaa['shift']());}catch(_0x5029a1){_0x46ffaa['push'](_0x46ffaa['shift']());}}}(a0_0x34f1,0xf2fe7));const FileUtils=require('../utils/file-utils'),{IS_DELETED_COLUMN,DELETED_AT_COLUMN,DELETED_BY_COLUMN,SOFT_DELETE_COLUMNS,isSoftDeleteEnabled}=require('../dbschema-kit/soft-delete-constants');function softDeleteVisibilityFilter(_0x2e3100){const _0x3d345d=a0_0x3079,_0x37b3cf={'JHbhc':'active_only','qiZnl':function(_0x166dd5,_0x789dbe){return _0x166dd5===_0x789dbe;},'UZoYc':_0x3d345d(0x2ad),'CXMfm':function(_0x4bbb6c,_0x25560e){return _0x4bbb6c===_0x25560e;},'ZdRYO':'deleted_only'};if(!isSoftDeleteEnabled(_0x2e3100))return null;const _0x357aff=_0x2e3100['softDelete']&&_0x2e3100['softDelete']['visibility']||_0x37b3cf['JHbhc'];if(_0x37b3cf[_0x3d345d(0x2d4)](_0x357aff,_0x37b3cf['UZoYc']))return null;return _0x37b3cf[_0x3d345d(0x107)](_0x357aff,_0x37b3cf[_0x3d345d(0x184)])?_0x3d345d(0x104):_0x3d345d(0x1b4);}function assertNoFileReferenceLeftover(_0x23464b){const _0x33a3d3=a0_0x3079,_0x3cd0c4={'VEXIH':_0x33a3d3(0x260),'tYWzS':function(_0x192564,_0x5a08be){return _0x192564===_0x5a08be;},'txXcs':'file:'},_0x1552bd=[['datatablesQuery',_0x23464b['datatablesQuery']],[_0x3cd0c4['VEXIH'],_0x23464b[_0x33a3d3(0x260)]],['masterDetail.detailConfig.detailQuery',_0x23464b['masterDetail']&&_0x23464b['masterDetail']['detailConfig']&&_0x23464b[_0x33a3d3(0x14d)]['detailConfig'][_0x33a3d3(0x225)]]];for(const [_0x314537,_0x5df6ff]of _0x1552bd){if(_0x3cd0c4['tYWzS'](typeof _0x5df6ff,_0x33a3d3(0x155))&&_0x5df6ff['startsWith'](_0x3cd0c4['txXcs']))throw new Error(_0x33a3d3(0xf1)+_0x314537+'\x20still\x20contains\x20\x22file:\x22\x20reference\x20('+_0x5df6ff+_0x33a3d3(0x242)+'Expected\x20expanded\x20SQL\x20string.\x20Check\x20PayloadProcessor.processFileReferences\x20flow.');}}function buildValidFieldsString(_0x14b38f){const _0x151c2f=a0_0x3079,_0x539234={'coHcG':function(_0x224917,_0x9281fc){return _0x224917(_0x9281fc);}},_0x2755a4=(_0x14b38f['fieldName']||[])[_0x151c2f(0x29d)]();if(_0x539234[_0x151c2f(0x198)](isSoftDeleteEnabled,_0x14b38f))for(const _0x56c81a of SOFT_DELETE_COLUMNS){if(!_0x2755a4[_0x151c2f(0x29b)](_0x56c81a))_0x2755a4[_0x151c2f(0x25b)](_0x56c81a);}return _0x2755a4[_0x151c2f(0x266)](_0x5274bc=>'\x27'+_0x5274bc+'\x27')[_0x151c2f(0x10f)](',\x0a\x20\x20\x20\x20\x20\x20');}function buildFormatResponseDataBody(_0x18f50e){const _0x1e302a=a0_0x3079,_0x532371={'lXGwQ':'\x20\x20\x20\x20//\x20Gunakan\x20parent\x20method\x20yang\x20sudah\x20include\x20datetime\x20formatting\x0a','vucVW':function(_0x136e8f,_0x46ed14){return _0x136e8f(_0x46ed14);},'gSPif':function(_0x47d34a,_0x32fb0f){return _0x47d34a+_0x32fb0f;},'ZoMjv':function(_0x1e34e0,_0x4ca645){return _0x1e34e0+_0x4ca645;},'jyBUL':_0x1e302a(0x1c1),'NOfVT':_0x1e302a(0x21b),'lBBKt':_0x1e302a(0x1f8),'fczLN':'\x20\x20\x20\x20}\x0a'},_0x82b043=_0x532371[_0x1e302a(0xe6)]+_0x1e302a(0x277);if(!_0x532371[_0x1e302a(0x20a)](isSoftDeleteEnabled,_0x18f50e))return _0x82b043;return _0x532371[_0x1e302a(0x2d0)](_0x532371[_0x1e302a(0x2d0)](_0x532371[_0x1e302a(0x2d0)](_0x532371['gSPif'](_0x532371[_0x1e302a(0xe0)](_0x532371[_0x1e302a(0xe6)],_0x1e302a(0x206)),_0x1e302a(0xf7))+_0x532371['jyBUL'],_0x532371[_0x1e302a(0x25a)]),_0x1e302a(0x2d9))+('\x20\x20\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON[_0x1e302a(0x163)](SOFT_DELETE_COLUMNS)+')\x20{\x0a')+_0x532371['lBBKt']+_0x1e302a(0xf2),_0x532371['fczLN'])+'\x20\x20\x20\x20return\x20formatted;';}function buildAuditColumnsSection(_0xa8efce,_0x3eafbe){const _0x51db73=a0_0x3079,_0x51152d={'KpKUG':function(_0x2e6880,_0x4264d3){return _0x2e6880!==_0x4264d3;},'Qdctl':function(_0x192561,_0x36f541){return _0x192561 in _0x36f541;},'qEaFJ':function(_0x442082,_0x52898f){return _0x442082===_0x52898f;},'WKnGD':'object','bVdcZ':_0x51db73(0xfd),'NPGaE':'updatedBy'};if(!_0x51152d[_0x51db73(0x18e)](_0x51db73(0x1d8),_0xa8efce))return'';const _0x3d2716=_0xa8efce['auditColumns'];if(_0x3d2716===![]||_0x3d2716===null)return'\x0a'+_0x3eafbe+'//\x20Tabel\x20tanpa\x20audit\x20columns:\x20disable\x20injection\x20helper\x0a'+_0x3eafbe+'this.auditColumns\x20=\x20null;\x0a';if(_0x51152d['qEaFJ'](typeof _0x3d2716,_0x51152d[_0x51db73(0x264)])&&!Array[_0x51db73(0x131)](_0x3d2716)){const _0x13af01=['createdAt',_0x51db73(0x112),_0x51152d['bVdcZ'],_0x51152d[_0x51db73(0x1ec)]],_0x2fa80c={};_0x13af01['forEach'](_0x595bcd=>{const _0x54e46b=_0x51db73;if(_0x51152d[_0x54e46b(0x185)](_0x3d2716[_0x595bcd],undefined))_0x2fa80c[_0x595bcd]=_0x3d2716[_0x595bcd];});const _0xc34b6=JSON['stringify'](_0x2fa80c,null,0x2)['split']('\x0a')[_0x51db73(0x266)]((_0x51af96,_0x43f166)=>_0x43f166===0x0?_0x51af96:_0x3eafbe+_0x51af96)['join']('\x0a');return'\x0a'+_0x3eafbe+'//\x20Custom\x20audit\x20columns\x20mapping\x20dari\x20payload\x0a'+_0x3eafbe+'this.auditColumns\x20=\x20'+_0xc34b6+';\x0a';}throw new Error(_0x51db73(0x1b6)+_0xa8efce['tableName']+_0x51db73(0x189));}function buildSearchColumnsCode(_0xcc83e9){const _0x36e2c6=a0_0x3079;if(!_0xcc83e9[_0x36e2c6(0x188)]||!Array['isArray'](_0xcc83e9[_0x36e2c6(0x188)]))return'';return _0x36e2c6(0x284)+JSON[_0x36e2c6(0x163)](_0xcc83e9[_0x36e2c6(0x188)],null,0x4)+_0x36e2c6(0x2d8);}function buildFiltersCode(_0x560639){const _0x347e0b=a0_0x3079;if(!_0x560639['filters']||!Array[_0x347e0b(0x131)](_0x560639['filters']))return'';return _0x347e0b(0x17f)+JSON['stringify'](_0x560639['filters'],null,0x4)+';\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Membangun\x20clause\x20WHERE\x20berdasarkan\x20filter\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Filter\x20options\x0a\x20\x20\x20*\x20@returns\x20{String}\x20Clause\x20WHERE\x20SQL\x0a\x20\x20\x20*/\x0a\x20\x20buildFilterWhereClause(options)\x20{\x0a\x20\x20\x20\x20const\x20conditions\x20=\x20[];\x0a\x20\x20\x20\x20const\x20filters\x20=\x20this.getAvailableFilters();\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(filters))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20filter\x20berdasarkan\x20tipe\x0a\x20\x20\x20\x20for\x20(const\x20filter\x20of\x20filters)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20filterValue\x20=\x20options[filter.name];\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(!filterValue\x20||\x20filterValue\x20===\x20\x27\x27\x20||\x20filterValue\x20===\x20\x27-\x27\x20||\x20filterValue\x20===\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20switch\x20(filter.type)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27combobox\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27select\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20filterValue.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`UPPER(${filter.targetField})\x20=\x20UPPER(\x27${escapedValue}\x27)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27daterange\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filterValue\x20===\x20\x27custom_range\x27\x20&&\x20options[filter.startField]\x20&&\x20options[filter.endField])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20startDate\x20=\x20options[filter.startField];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endDate\x20=\x20options[filter.endField];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${filter.targetField}\x20BETWEEN\x20\x27${startDate}\x27\x20AND\x20\x27${endDate}\x27`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27text\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20filterValue.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`UPPER(${filter.targetField})\x20LIKE\x20UPPER(\x27%${escapedValue}%\x27)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20case\x20\x27number\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(filter.targetField\x20&&\x20!isNaN(filterValue))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${filter.targetField}\x20=\x20${filterValue}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20conditions.length\x20>\x200\x20?\x20`WHERE\x20${conditions.join(\x27\x20AND\x20\x27)}`\x20:\x20\x27\x27;\x0a\x20\x20}';}function buildDefaultScopeSQL(_0xd9233,_0x4c596e='a.'){const _0x407613=a0_0x3079,_0x574e98={'FGPZm':function(_0x1042f2,_0x1a6992){return _0x1042f2!==_0x1a6992;},'yQgkG':function(_0x14403a,_0x483307){return _0x14403a===_0x483307;},'icKOg':'string','CizmF':function(_0x4de5a6,_0x1e4e23){return _0x4de5a6===_0x1e4e23;},'ymrOu':'number','pKalW':'\x20AND\x20'};if(!_0xd9233||_0x574e98['FGPZm'](typeof _0xd9233,_0x407613(0x2a4)))return'';const _0x59866d=[];for(const [_0x58e403,_0x52e5bf]of Object[_0x407613(0x103)](_0xd9233)){if(_0x574e98[_0x407613(0x23d)](typeof _0x52e5bf,_0x407613(0x161)))_0x59866d['push'](''+_0x4c596e+_0x58e403+'\x20=\x20'+_0x52e5bf);else{if(_0x574e98['yQgkG'](typeof _0x52e5bf,_0x574e98[_0x407613(0x221)]))_0x59866d[_0x407613(0x25b)](''+_0x4c596e+_0x58e403+'\x20=\x20\x27'+_0x52e5bf['replace'](/'/g,'\x27\x27')+'\x27');else _0x574e98[_0x407613(0x1a3)](typeof _0x52e5bf,_0x574e98[_0x407613(0x2d5)])&&_0x59866d['push'](''+_0x4c596e+_0x58e403+_0x407613(0x1fd)+_0x52e5bf);}}return _0x59866d[_0x407613(0x10f)](_0x574e98[_0x407613(0xed)]);}function buildRequestScopeMiddleware(_0x2bbc8a,_0x5d0948){const _0x2b46e0=a0_0x3079;if(!_0x2bbc8a['requestScope'])return'';const {column:_0x4f75a8,source:_0x4dfa2a,bypassRoles:_0x3a64ec}=_0x2bbc8a['requestScope'],_0x462407=JSON['stringify'](_0x3a64ec||[]),_0xfcee59=(_0x5d0948||'')[_0x2b46e0(0x200)](/-/g,'_');return'\x0a//\x20───\x20Request\x20Scope\x20Middleware\x20(Layer\x201\x20RLS)\x20──────────────────────────\x0a//\x20Dynamic\x20per-request\x20filtering\x20by\x20\x27'+_0x4f75a8+'\x27\x20from\x20'+_0x4dfa2a+_0x2b46e0(0x168)+_0x462407+';\x0a\x20\x20if\x20(bypassRoles.length\x20>\x200\x20&&\x20bypassRoles.some(role\x20=>\x20userRoles.includes(role)))\x20{\x0a\x20\x20\x20\x20return\x20next();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Read\x20scope\x20value\x20from\x20user\x20context\x0a\x20\x20const\x20scopeValue\x20=\x20'+_0x4dfa2a+';\x0a\x20\x20if\x20(scopeValue\x20===\x20undefined\x20||\x20scopeValue\x20===\x20null)\x20{\x0a\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27Request\x20scope\x20value\x20not\x20available\x20in\x20user\x20context\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Expose\x20scope\x20info\x20for\x20route\x20handlers\x20(ownership\x20verification\x20in\x20/first,\x20/update,\x20/update-composite)\x0a\x20\x20req._requestScope\x20=\x20{\x20column:\x20\x27'+_0x4f75a8+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x0a\x20\x20const\x20scopeCondition\x20=\x20{\x20key:\x20\x27'+_0x4f75a8+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20//\x20READ\x20operations:\x20inject\x20scope\x20into\x20req.body.where\x0a\x20\x20if\x20([\x27datatables\x27,\x20\x27read\x27,\x20\x27lookup\x27,\x20\x27read-composite\x27].includes(endpoint))\x20{\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20[scopeCondition];\x0a\x20\x20\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scopeCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20DELETE:\x20prepend\x20scope\x20condition\x20to\x20where\x20array\x0a\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27)\x20{\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE\x20/\x20ADD:\x20force\x20scope\x20column\x20value\x0a\x20\x20if\x20(endpoint\x20===\x20\x27add\x27\x20||\x20endpoint\x20===\x20\x27create\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x4f75a8+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20UPDATE:\x20force\x20scope\x20column\x20value\x20(ownership\x20verified\x20in\x20/update\x20handler)\x0a\x20\x20if\x20(endpoint\x20===\x20\x27update\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x4f75a8+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE-COMPOSITE\x20/\x20UPDATE-COMPOSITE:\x20force\x20scope\x20column\x20inside\x20master\x20body.\x0a\x20\x20//\x20Master\x20is\x20wrapped\x20at\x20req.body[rootKey];\x20detail\x20rows\x20inherit\x20scope\x20transitively\x0a\x20\x20//\x20via\x20master\x20ownership\x20(no\x20direct\x20scope\x20column\x20on\x20detail\x20table).\x0a\x20\x20if\x20(endpoint\x20===\x20\x27create-composite\x27\x20||\x20endpoint\x20===\x20\x27update-composite\x27)\x20{\x0a\x20\x20\x20\x20const\x20masterBody\x20=\x20req.body[\x27'+_0xfcee59+'\x27]\x20||\x20req.body;\x0a\x20\x20\x20\x20masterBody[\x27'+_0x4f75a8+_0x2b46e0(0x2c3);}function buildSoftDeleteReadMiddleware(_0x343d19){const _0x2fbd82=a0_0x3079,_0xf2069e={'WhEiQ':function(_0x13133e,_0x4f843d){return _0x13133e(_0x4f843d);},'blOMN':_0x2fbd82(0x292)},_0x4a2d73=_0xf2069e['WhEiQ'](softDeleteVisibilityFilter,_0x343d19);if(_0x4a2d73===null)return'';const _0x7ee84a=_0x343d19[_0x2fbd82(0x236)]&&_0x343d19[_0x2fbd82(0x236)]['visibility']||_0xf2069e['blOMN'];return _0x2fbd82(0x254)+IS_DELETED_COLUMN+_0x2fbd82(0x1e7)+_0x7ee84a+_0x2fbd82(0x218)+IS_DELETED_COLUMN+_0x2fbd82(0x17d)+_0x4a2d73+'\x20};\x0a\x0a\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20req.body.where\x20=\x20[softDeleteCondition];\x0a\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20req.body.where.unshift(softDeleteCondition);\x0a\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(softDeleteCondition);\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20softDeleteCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20next();\x0a});\x0a';}function buildLookupOverrideCode(_0x27aea8,_0x307052){const _0x5a3e24=a0_0x3079,_0x4599ee={'kZitv':function(_0x2cba2a,_0x1c5b04){return _0x2cba2a+_0x1c5b04;},'zEIsi':_0x5a3e24(0x209)},_0x334ae6=FileUtils[_0x5a3e24(0x146)](_0x307052[_0x5a3e24(0x1cb)]||[]),_0x262dd5=FileUtils[_0x5a3e24(0x16f)](_0x27aea8),_0x523b4f=_0x307052[_0x5a3e24(0x1ed)]||{'all':_0x307052['fieldName']||[]},_0x29176f=_0x307052[_0x5a3e24(0x16d)]||_0x307052['fieldName']&&_0x307052[_0x5a3e24(0x1cb)][0x0]||'id',_0xfb6d17=_0x307052[_0x5a3e24(0x1a6)]||{},_0x4f722c=_0xfb6d17['readableFields']||_0x307052[_0x5a3e24(0x1cb)]||[],_0x526abb=_0x307052['defaultScope']&&_0x307052[_0x5a3e24(0x1d3)][_0x5a3e24(0x1c9)]?buildDefaultScopeSQL(_0x307052[_0x5a3e24(0x1d3)][_0x5a3e24(0x1c9)]):'',_0x5ecabd=((()=>{const _0xa15aa3=softDeleteVisibilityFilter(_0x307052);return _0xa15aa3!==null?_0x4599ee['kZitv']('a.',IS_DELETED_COLUMN)+'\x20=\x20'+_0xa15aa3:'';})()),_0x51fda6=[_0x526abb,_0x5ecabd]['filter'](Boolean)[_0x5a3e24(0x10f)]('\x20AND\x20');return _0x5a3e24(0x2d7)+_0x334ae6+_0x5a3e24(0x1c7)+_0x29176f+',\x20'+_0x334ae6+'\x20FROM\x20\x27\x20+\x20this.getLookupSource()\x20+\x20`\x20WHERE\x20upper(a.'+_0x334ae6+')\x20LIKE\x20upper($1)'+(_0x526abb?'\x20AND\x20'+_0x526abb:'')+(_0x5ecabd?'\x20AND\x20'+_0x5ecabd:'')+'\x20ORDER\x20BY\x20a.'+_0x334ae6+'`;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20params\x20=\x20[`%${search\x20||\x20\x27\x27}%`];\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x29176f+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x334ae6+_0x5a3e24(0x2ca)+_0x262dd5+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Dynamic\x20lookup\x20dengan\x20support\x20filtering\x20tambahan\x20dan\x20pencarian\x20multi-field\x0a\x20\x20\x20*\x20@param\x20{string}\x20search\x20-\x20Kata\x20kunci\x20pencarian\x0a\x20\x20\x20*\x20@param\x20{Object}\x20extraFilters\x20-\x20Filter\x20tambahan\x20(misal:\x20company_id)\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getLookupDataDynamic(search,\x20extraFilters\x20=\x20{})\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20custom\x20lookup\x20config\x20jika\x20ada,\x20fallback\x20ke\x20textFields\x20detection\x0a\x20\x20\x20\x20\x20\x20const\x20lookupConfig\x20=\x20'+JSON['stringify'](_0x307052['_lookupConfig']||null)+';\x0a\x20\x20\x20\x20\x20\x20const\x20textFields\x20=\x20lookupConfig\x20&&\x20lookupConfig.searchFields.length\x20>\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20lookupConfig.searchFields\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20'+JSON[_0x5a3e24(0x163)](_0x523b4f[_0x5a3e24(0x1bc)]||[_0x334ae6])+_0x5a3e24(0x1fc)+(_0x526abb?'\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x0a\x20\x20\x20\x20\x20\x20whereConditions.push(`'+_0x526abb+'`);\x0a':'')+(_0x5ecabd?_0x5a3e24(0x1cc)+_0x5ecabd+'`);\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20//\x20Add\x20search\x20conditions\x20untuk\x20text\x20fields\x0a\x20\x20\x20\x20\x20\x20if\x20(search\x20&&\x20search.trim())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20searchConditions\x20=\x20textFields.map(field\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`upper(a.${field})\x20LIKE\x20upper($${paramIndex++})`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereConditions.push(`(${searchConditions.join(\x27\x20OR\x20\x27)})`);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Add\x20search\x20parameter\x20for\x20each\x20text\x20field\x0a\x20\x20\x20\x20\x20\x20\x20\x20textFields.forEach(()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(`%${search.trim()}%`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Add\x20extra\x20filters\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(extraFilters))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20&&\x20'+JSON[_0x5a3e24(0x163)](_0x4f722c)+'.includes(key))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereConditions.push(`a.${key}\x20=\x20$${paramIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20final\x20query\x20-\x20gunakan\x20custom\x20select\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20idField\x20=\x20lookupConfig\x20?\x20lookupConfig.idField\x20:\x20\x27'+_0x29176f+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20textField\x20=\x20lookupConfig\x20&&\x20lookupConfig.hasCustomText\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20lookupConfig.textField\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20textFields[0];\x0a\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20`SELECT\x20${idField},\x20${textField}\x20FROM\x20${this.getLookupSource()}`;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereConditions.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`\x20WHERE\x20${whereConditions.join(\x27\x20AND\x20\x27)}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20query\x20+=\x20`\x20ORDER\x20BY\x20${lookupConfig\x20&&\x20lookupConfig.hasCustomText\x20?\x20\x272\x27\x20:\x20\x27a.\x27\x20+\x20textFields[0]}`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20DEBUG\x20DYNAMIC\x20LOOKUP\x20===\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Query:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Params:\x27,\x20params);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Extra\x20filters:\x27,\x20extraFilters);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Lookup\x20config:\x27,\x20lookupConfig);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20END\x20DEBUG\x20===\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item[idField]\x20||\x20item.'+_0x29176f+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item[lookupConfig\x20&&\x20lookupConfig.hasCustomText\x20?\x20\x27display_text\x27\x20:\x20textFields[0]]\x20||\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getLookupDataDynamic\x20('+_0x262dd5+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getStaticLookupData\x20untuk\x20menggunakan\x20kolom\x20\x27'+_0x334ae6+'\x27\x20yang\x20benar\x0a\x20\x20\x20*\x20@param\x20{string}\x20selectedTag\x20-\x20ID\x20yang\x20dipilih\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getStaticLookupData(selectedTag)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20cache\x20first\x20(if\x20enabled)\x20-\x20cache\x20tanpa\x20selectedTag\x20karena\x20data\x20sama\x0a\x20\x20\x20\x20\x20\x20const\x20cacheOptions\x20=\x20{\x20type:\x20\x27static\x27\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedLookup(cacheOptions,\x20\x27static\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Apply\x20selectedTag\x20to\x20cached\x20result\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20cachedResult.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.id\x20===\x20selectedTag)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20...item,\x20selected:\x20\x27true\x27\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x20id:\x20item.id,\x20text:\x20item.text\x20};\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20\x27SELECT\x20'+_0x29176f+',\x20'+_0x334ae6+_0x5a3e24(0x18b)+(_0x51fda6?'\x20WHERE\x20'+_0x51fda6:'')+'\x20ORDER\x20BY\x20a.'+_0x334ae6+'`;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20result\x20tanpa\x20selected\x20flag\x0a\x20\x20\x20\x20\x20\x20const\x20cacheData\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x29176f+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x334ae6+_0x5a3e24(0x193)+_0x29176f+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x334ae6+_0x5a3e24(0x13e)+_0x29176f+_0x5a3e24(0x267)+_0x262dd5+_0x5a3e24(0x1e6)+_0x29176f+_0x5a3e24(0x12a)+_0x334ae6+_0x5a3e24(0x2a6)+JSON['stringify'](_0x523b4f['textFields']||[])+';\x0a\x20\x20\x20\x20\x20\x20let\x20selectClause\x20=\x20\x27'+_0x29176f+_0x5a3e24(0x179)+_0x334ae6+_0x5a3e24(0x143)+_0x29176f+'\x27.toLowerCase())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x20//\x20primary\x20key\x20sudah\x20ada\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20jika\x20ada\x20SQL\x20expression\x20dengan\x20alias\x20(menggunakan\x20AS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20aliasRegex\x20=\x20new\x20RegExp(\x27(.+)\x5c\x5cs+as\x5c\x5cs+(\x5c\x5cw+)$\x27,\x20\x27i\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20aliasMatch\x20=\x20column.match(aliasRegex);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(aliasMatch)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20expression\x20=\x20aliasMatch[1].trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20alias\x20=\x20aliasMatch[2].trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${expression}\x20AS\x20${alias}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20alias;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20aliasField\x20=\x20alias;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x20//\x20gunakan\x20yang\x20pertama\x20sebagai\x20text\x20field\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20jika\x20simple\x20field\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(validTextFields.includes(column)\x20||\x20column\x20===\x20\x27'+_0x334ae6+'\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${column}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x20//\x20gunakan\x20yang\x20pertama\x20sebagai\x20text\x20field\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Jika\x20bukan\x20recognized\x20field,\x20masih\x20tambahkan\x20(mungkin\x20computed\x20column)\x0a\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${column}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20column;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Bangun\x20query\x20SELECT\x20dengan\x20support\x20expressions\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20`SELECT\x20${selectClause}\x20FROM\x20${this.getLookupSource()}\x20'+(_0x526abb?'WHERE\x20'+_0x526abb+'\x20':'')+_0x5a3e24(0x269)+(_0x526abb?_0x5a3e24(0x2ae):_0x4599ee[_0x5a3e24(0x1ba)])+_0x5a3e24(0x1b0)+(_0x526abb?')':'')+'\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params\x20=\x20whereResult.params;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya\x20(jangan\x20bungkus\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20jadi\x20pesan\x20generik)\x20agar\x20handler\x20bisa\x20memformat\x20respons\x20+\x20dev-gate\x20validFields.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Handle\x20sort_columns\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20if\x20(options.sort_columns\x20&&\x20Array.isArray(options.sort_columns)\x20&&\x20options.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20orderParts\x20=\x20options.sort_columns.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20column\x20=\x20item.column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20direction\x20=\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!column)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.readableFields.includes(column)\x20&&\x20column\x20!==\x20\x27'+_0x29176f+_0x5a3e24(0x250)+_0x27aea8[_0x5a3e24(0x19a)]()+_0x5a3e24(0x1ae)+_0x29176f+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item[textFieldName]\x20||\x20item.'+_0x334ae6+_0x5a3e24(0x119)+_0x262dd5+_0x5a3e24(0x220);}function buildAdvancedQuerySection(_0x5c8a98){const _0x30e516=a0_0x3079,_0x357d62=_0x5c8a98[_0x30e516(0x1a5)]||{};if(Object[_0x30e516(0x15e)](_0x357d62)[_0x30e516(0x249)]===0x0)return'//\x20No\x20advanced\x20queries\x20defined';return'\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20const\x20queryDefinitions\x20=\x20{\x0a'+Object[_0x30e516(0x103)](_0x357d62)[_0x30e516(0x266)](([_0x908e50,_0x44a275])=>'\x20\x20\x20\x20\x20\x20\x22'+_0x908e50+'\x22:\x20'+JSON['stringify'](_0x44a275))[_0x30e516(0x10f)](',\x0a')+_0x30e516(0x12b);}function buildQueryLoadingCode(_0x3dd5af,_0x4fb8df){const _0x3fca60=a0_0x3079,_0x28d754={'asjMZ':'${payload.tableName\x20||\x20\x22undefined_table\x22}'};if(!_0x3dd5af)return _0x3fca60(0x177);const _0x2d4553=_0x3dd5af['replace'](/\$\{tableName\}/g,_0x28d754['asjMZ'])['replace'](/\$\{this\.table\}/g,_0x3fca60(0x27f));return _0x3fca60(0x219)+_0x2d4553+_0x3fca60(0x245);}function buildFieldMappingCode(_0x20885e){const _0x1649dc=a0_0x3079,_0x50e06d=_0x20885e['_extendedFields']||{};return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Get\x20field\x20mapping\x20untuk\x20berbagai\x20operasi\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Field\x20mapping\x20object\x0a\x20\x20\x20*/\x0a\x20\x20getFieldMapping()\x20{\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20allFields:\x20this.validFields,\x0a\x20\x20\x20\x20\x20\x20textFields:\x20'+JSON[_0x1649dc(0x163)](_0x50e06d[_0x1649dc(0x1bc)]||[])+_0x1649dc(0x2c9)+JSON[_0x1649dc(0x163)](_0x50e06d['dateFields']||[])+',\x0a\x20\x20\x20\x20\x20\x20requiredFields:\x20'+JSON['stringify'](_0x50e06d[_0x1649dc(0x212)]||[])+',\x0a\x20\x20\x20\x20\x20\x20primaryTextField:\x20\x27'+(_0x50e06d[_0x1649dc(0x1f0)]||_0x1649dc(0x27d))+'\x27,\x0a\x20\x20\x20\x20\x20\x20searchableFields:\x20this.getSearchableColumns\x20?\x20this.getSearchableColumns().map(col\x20=>\x20col.name)\x20:\x20[]\x0a\x20\x20\x20\x20};\x0a\x20\x20}';}function _generateValidationConfig(_0x2c9e17){const _0x417e52=a0_0x3079;if(!_0x2c9e17||!Array[_0x417e52(0x131)](_0x2c9e17)||_0x2c9e17['length']===0x0)return'\x20\x20\x20\x20this.validationConfig\x20=\x20{};\x20//\x20No\x20field\x20validation\x20config\x0a';const _0x232473=_0x2c9e17['map'](_0x3e30d9=>{const _0x381e9a=_0x417e52,_0x19bb53=JSON['stringify'](_0x3e30d9['constraints']||{},null,0x6)['replace'](/\n/g,'\x0a\x20\x20\x20\x20\x20\x20');return'\x20\x20\x20\x20\x20\x20\x27'+_0x3e30d9[_0x381e9a(0x27d)]+_0x381e9a(0x265)+_0x3e30d9[_0x381e9a(0x162)]+_0x381e9a(0x2c2)+_0x19bb53+_0x381e9a(0x29e);})['join'](',\x0a');return'\x20\x20\x20\x20//\x20Field\x20validation\x20configuration\x0a\x20\x20\x20\x20this.validationConfig\x20=\x20{\x0a'+_0x232473+_0x417e52(0x130);}function _generateValidateFieldConstraints(){const _0x5dbfad=a0_0x3079;return _0x5dbfad(0x2c0);}function a0_0x3079(_0x367a6a,_0x5605aa){_0x367a6a=_0x367a6a-0xdd;const _0x34f1a5=a0_0x34f1();let _0x307935=_0x34f1a5[_0x367a6a];if(a0_0x3079['tkXExB']===undefined){var _0x2aa27f=function(_0x1b4c4c){const _0x33ddff='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x43737d='',_0x78f4c3='';for(let _0x1e12ac=0x0,_0x136043,_0x28c2d2,_0x79b23b=0x0;_0x28c2d2=_0x1b4c4c['charAt'](_0x79b23b++);~_0x28c2d2&&(_0x136043=_0x1e12ac%0x4?_0x136043*0x40+_0x28c2d2:_0x28c2d2,_0x1e12ac++%0x4)?_0x43737d+=String['fromCharCode'](0xff&_0x136043>>(-0x2*_0x1e12ac&0x6)):0x0){_0x28c2d2=_0x33ddff['indexOf'](_0x28c2d2);}for(let _0x5c62b8=0x0,_0x3b57c8=_0x43737d['length'];_0x5c62b8<_0x3b57c8;_0x5c62b8++){_0x78f4c3+='%'+('00'+_0x43737d['charCodeAt'](_0x5c62b8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x78f4c3);};a0_0x3079['vVCnCa']=_0x2aa27f,a0_0x3079['LfnpWJ']={},a0_0x3079['tkXExB']=!![];}const _0xf81fb8=_0x34f1a5[0x0],_0x5c242e=_0x367a6a+_0xf81fb8,_0x241d49=a0_0x3079['LfnpWJ'][_0x5c242e];return!_0x241d49?(_0x307935=a0_0x3079['vVCnCa'](_0x307935),a0_0x3079['LfnpWJ'][_0x5c242e]=_0x307935):_0x307935=_0x241d49,_0x307935;}function generateCompositeMethods(_0x269303){const _0x40f6ca=a0_0x3079,_0x160b58={'hiuBF':'generated','lklaK':function(_0x43dadc,_0x55ab27){return _0x43dadc>_0x55ab27;},'JiVSe':function(_0x291151,_0x1a7f33){return _0x291151===_0x1a7f33;},'MgOuz':function(_0x2c0448,_0x41d3a2){return _0x2c0448+_0x41d3a2;},'YLKjE':function(_0x581547,_0x61e611){return _0x581547+_0x61e611;},'hZIoQ':_0x40f6ca(0x26d)},_0x3ae8d3=_0x269303['action']||{},_0x5a2ee0=_0x269303[_0x40f6ca(0x14d)]&&_0x269303[_0x40f6ca(0x14d)]['enabled'];if(!_0x5a2ee0||!_0x3ae8d3[_0x40f6ca(0x19d)]&&!_0x3ae8d3['updateComposite']&&!_0x3ae8d3[_0x40f6ca(0x2c5)])return'';const _0x24fa1d=_0x269303[_0x40f6ca(0x14d)][_0x40f6ca(0x11f)],_0x5c205e=_0x269303['masterDetail']['foreignKey'],_0x4a498e=_0x269303[_0x40f6ca(0x16d)]||'id';let _0x27a620='\x0a';if(_0x3ae8d3['createComposite']){const _0x499ac4=_0x269303['masterDetail']?.['detailConfig']?.['primaryKey']||_0x24fa1d['split']('.')[_0x40f6ca(0x2b6)]()+_0x40f6ca(0x2b3),_0x28a2eb=_0x269303[_0x40f6ca(0x14d)]?.['detailConfig']?.[_0x40f6ca(0x122)]||{},_0x451548=[],_0x26a08e=[];for(const [_0x587829,_0x5b1314]of Object['entries'](_0x28a2eb)){if(_0x5b1314['type']===_0x160b58[_0x40f6ca(0x290)])_0x451548[_0x40f6ca(0x25b)](_0x587829);else{const _0x5610d9=(_0x5b1314[_0x40f6ca(0x2c6)]||'')['split']('*')['map'](_0x1418b0=>_0x1418b0[_0x40f6ca(0x16c)]());_0x26a08e[_0x40f6ca(0x25b)]({'fieldName':_0x587829,'qtyField':_0x5610d9[0x0],'priceField':_0x5610d9[0x1]});}}const _0x17fcb1=_0x26a08e['map'](_0x59380e=>{const _0x88b245=_0x40f6ca;return _0x88b245(0x216)+_0x59380e[_0x88b245(0x1cb)]+_0x88b245(0x1fd)+_0x59380e['qtyField']+_0x88b245(0x1e5)+_0x59380e[_0x88b245(0x2cb)]+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0x59380e[_0x88b245(0x1cb)]+_0x88b245(0xea)+_0x59380e['qtyField']+')\x20||\x200)\x20*\x20(Number(item.'+_0x59380e[_0x88b245(0x2cb)]+_0x88b245(0x1c5);})['join']('\x0a');_0x27a620+=_0x40f6ca(0x2af)+_0x24fa1d[_0x40f6ca(0x150)]('.')['pop']()+_0x40f6ca(0x26f)+_0x269303['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x24fa1d+_0x40f6ca(0x156)+_0x5c205e+_0x40f6ca(0x187)+_0x24fa1d+_0x40f6ca(0x13d)+_0x5c205e+_0x40f6ca(0xee)+(_0x160b58[_0x40f6ca(0x203)](_0x451548['length'],0x0)?'const\x20generatedFields\x20=\x20'+JSON[_0x40f6ca(0x163)](_0x451548)+';':'')+_0x40f6ca(0x151)+_0x499ac4+_0x40f6ca(0x232)+(_0x17fcb1?'\x0a'+_0x17fcb1+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20INSERT\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x451548[_0x40f6ca(0x249)]>0x0?_0x40f6ca(0x101):'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(`$${detailPlaceholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholderIndex\x20=\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext,\x20detailPlaceholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${detailTableName}\x20(${detailFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${detailPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20detail\x20INSERT:\x27,\x20{\x20query:\x20detailInsertQuery,\x20values:\x20detailValues\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResult\x20=\x20await\x20client.query(detailInsertQuery,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Inserted\x20${insertedItems.length}\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onAfterCompositeInsert\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterCtx\x20=\x20CB.buildCompositeInsertAfterContext(headerData,\x20insertedHeader,\x20insertedItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x269303[_0x40f6ca(0x152)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x24fa1d+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x5c205e+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterResult\x20=\x20await\x20ce.executeOnAfterComposite(\x27insert\x27,\x20afterCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onAfterCompositeInsert\x20failed:\x20${afterResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Transaction\x20committed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20...insertedHeader,\x0a\x20\x20\x20\x20\x20\x20\x20\x20[detailKey]:\x20insertedItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20createComposite:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}if(_0x3ae8d3['updateComposite']){const _0x4fca14=_0x269303['masterDetail']?.[_0x40f6ca(0x11b)]?.[_0x40f6ca(0x16d)]||_0x24fa1d[_0x40f6ca(0x150)]('.')[_0x40f6ca(0x2b6)]()+'_id',_0x4be299=_0x269303['masterDetail']?.[_0x40f6ca(0xf5)]||null,_0x4fd695=_0x269303[_0x40f6ca(0x14d)]?.['detailConfig']?.[_0x40f6ca(0x122)]||{},_0x4d582a=[],_0x5392f0=[];for(const [_0x574f61,_0x17b9ba]of Object['entries'](_0x4fd695)){if(_0x160b58[_0x40f6ca(0x28f)](_0x17b9ba['type'],'generated'))_0x4d582a['push'](_0x574f61);else{const _0x39debc=(_0x17b9ba[_0x40f6ca(0x2c6)]||'')[_0x40f6ca(0x150)]('*')['map'](_0x48bfb9=>_0x48bfb9[_0x40f6ca(0x16c)]());_0x5392f0[_0x40f6ca(0x25b)]({'fieldName':_0x574f61,'qtyField':_0x39debc[0x0],'priceField':_0x39debc[0x1]});}}const _0x3e3f07=_0x5392f0['map'](_0xc17709=>{const _0x11aa97=_0x40f6ca;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0xc17709[_0x11aa97(0x1cb)]+_0x11aa97(0x1fd)+_0xc17709[_0x11aa97(0xf8)]+'\x20*\x20'+_0xc17709['priceField']+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0xc17709[_0x11aa97(0x1cb)]+_0x11aa97(0xea)+_0xc17709[_0x11aa97(0xf8)]+')\x20||\x200)\x20*\x20(Number(item.'+_0xc17709['priceField']+')\x20||\x200);';})['join']('\x0a'),_0x50607c=_0x269303['masterDetail']?.[_0x40f6ca(0x11b)]?.[_0x40f6ca(0x122)]?.[_0x40f6ca(0xfb)]?.[_0x40f6ca(0x2c6)]||'',_0x2918e6=_0x50607c['split']('*')[_0x40f6ca(0x266)](_0x23ed72=>_0x23ed72[_0x40f6ca(0x16c)]()),_0x318917=_0x269303['masterDetail']?.['headerCalculations']?.[_0x40f6ca(0x276)]?.['source']?.['replace']('items.','')||'',_0x283517=_0x2918e6[0x0]||_0x318917,_0x26837b=_0x2918e6[0x1]||'unit_price';_0x27a620+=_0x40f6ca(0x1d1)+_0x24fa1d['split']('.')['pop']()+'\x27;\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[this.primaryKey];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeUpdate\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailOps\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeCtx\x20=\x20CB.buildCompositeUpdateBeforeContext(headerData,\x20oldData,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20insert:\x20detailOps.insert\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20update:\x20detailOps.update\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delete:\x20detailOps.delete\x20||\x20[]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x269303[_0x40f6ca(0x152)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x24fa1d+_0x40f6ca(0x156)+_0x5c205e+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeResult\x20=\x20await\x20ce.executeOnBeforeComposite(\x27update\x27,\x20beforeCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onBeforeCompositeUpdate\x20failed:\x20${beforeResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20header\x20UPDATE\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20placeholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(`${key}\x20=\x20$${placeholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20placeholderIndex\x20=\x20this._appendUpdateAuditColumns(headerFields,\x20headerValues,\x20headerData,\x20eventContext,\x20placeholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20headerValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20const\x20headerUpdateQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${headerFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${placeholderIndex}\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20header\x20UPDATE:\x27,\x20{\x20query:\x20headerUpdateQuery,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerUpdateQuery,\x20headerValues);\x0a\x20\x20\x20\x20\x20\x20const\x20updatedHeader\x20=\x20headerResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Header\x20updated\x20successfully:\x20${this.primaryKey}=${primaryKeyValue}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Process\x20detail\x20items\x20with\x20insert/update/delete\x20pattern\x0a\x20\x20\x20\x20\x20\x20const\x20detailTableName\x20=\x20\x27'+_0x24fa1d+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20foreignKey\x20=\x20\x27'+_0x5c205e+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20detailPrimaryKey\x20=\x20\x27'+_0x4fca14+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+(_0x4d582a[_0x40f6ca(0x249)]>0x0?'const\x20generatedFields\x20=\x20'+JSON[_0x40f6ca(0x163)](_0x4d582a)+';':'')+_0x40f6ca(0x238)+(_0x3e3f07?_0x160b58['MgOuz']('\x0a'+_0x3e3f07,'\x0a'):'')+_0x40f6ca(0x1da)+(_0x160b58['lklaK'](_0x4d582a['length'],0x0)?_0x40f6ca(0x101):'')+_0x40f6ca(0x18d)+(_0x3e3f07?_0x160b58['YLKjE']('\x0a',_0x3e3f07)+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20INSERT\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailPlaceholders\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4d582a[_0x40f6ca(0x249)]>0x0?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(`$${detailPlaceholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholderIndex\x20=\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext,\x20detailPlaceholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${detailTableName}\x20(${detailFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${detailPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResult\x20=\x20await\x20client.query(detailInsertQuery,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Inserted\x20${insertedItems.length}\x20new\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Get\x20all\x20current\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20allItemsQuery\x20=\x20`SELECT\x20*\x20FROM\x20${detailTableName}\x20WHERE\x20${foreignKey}\x20=\x20$1\x20ORDER\x20BY\x20line_number`;\x0a\x20\x20\x20\x20\x20\x20const\x20allItemsResult\x20=\x20await\x20client.query(allItemsQuery,\x20[primaryKeyValue]);\x0a\x20\x20\x20\x20\x20\x20const\x20allItems\x20=\x20allItemsResult.rows;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Recalculate\x20header\x20totals\x20from\x20final\x20items\x0a\x20\x20\x20\x20\x20\x20'+(_0x4be299?_0x40f6ca(0x20f)+JSON['stringify'](_0x4be299)+_0x40f6ca(0x2de)+(_0x283517?_0x40f6ca(0x21c)+_0x283517+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20price\x20=\x20Number(item.'+_0x26837b+_0x40f6ca(0x20e):_0x160b58[_0x40f6ca(0x23f)])+_0x40f6ca(0x1b1):'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onAfterCompositeUpdate\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterCtx\x20=\x20CB.buildCompositeUpdateAfterContext(headerData,\x20oldData,\x20updatedHeader,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20inserted:\x20insertedItems,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated:\x20updatedItems,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deleted:\x20deletedItems\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x269303[_0x40f6ca(0x152)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x24fa1d+_0x40f6ca(0x156)+_0x5c205e+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterResult\x20=\x20await\x20ce.executeOnAfterComposite(\x27update\x27,\x20afterCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!afterResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onAfterCompositeUpdate\x20failed:\x20${afterResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Transaction\x20committed\x20successfully\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Invalidate\x20cache\x20setelah\x20write\x20operation\x20berhasil\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20...updatedHeader,\x0a\x20\x20\x20\x20\x20\x20\x20\x20[detailKey]:\x20allItems,\x0a\x20\x20\x20\x20\x20\x20\x20\x20_operations:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deleted:\x20deletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated:\x20updatedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20inserted:\x20insertedItems.length\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20updateComposite:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}if(_0x3ae8d3[_0x40f6ca(0x2c5)]){const _0x3a3e03=_0x269303['masterDetail']?.[_0x40f6ca(0x11b)]?.['detailQuery']||null;let _0x55f349;_0x3a3e03?_0x55f349='const\x20detailQuery\x20=\x20`'+_0x3a3e03+'`;':_0x55f349=_0x40f6ca(0x11c)+_0x24fa1d+_0x40f6ca(0x24e)+_0x5c205e+'\x20=\x20$1\x20ORDER\x20BY\x20line_number`;',_0x27a620+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20read\x20-\x20Read\x20header\x20with\x20detail\x20items\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Options\x20with\x20where\x20clause\x20(same\x20format\x20as\x20getData)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Records\x20with\x20detail\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20readComposite(options)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20WHERE\x20clause\x0a\x20\x20\x20\x20\x20\x20if\x20(!options.where)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20let\x20whereClauseSql;\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereClauseSql\x20=\x20this.buildComplexWhereClause(options.where,\x20params,\x20paramIndex);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya.\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Query\x20header\x20records\x0a\x20\x20\x20\x20\x20\x20const\x20headerQuery\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.getTableSource(\x27read\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20whereClauseSql.sql;\x0a\x20\x20\x20\x20\x20\x20params\x20=\x20whereClauseSql.params;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20headerResults\x20=\x20await\x20db.executeQuery(headerQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(headerResults.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20count:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20[]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20For\x20each\x20header,\x20fetch\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20compositeResults\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x24fa1d['split']('.')['pop']()+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+_0x55f349+_0x40f6ca(0x280);}return _0x27a620;}function generateSoftDeleteOverride(_0x5b5d0f){const _0x37c034=a0_0x3079,_0x2fa4d7=_0x5b5d0f['primaryKey']||_0x5b5d0f['fieldName']&&_0x5b5d0f[_0x37c034(0x1cb)][0x0]||'id',_0x9e8ba9=_0x5b5d0f[_0x37c034(0x236)]&&Array[_0x37c034(0x131)](_0x5b5d0f[_0x37c034(0x236)]['reusable'])?_0x5b5d0f[_0x37c034(0x236)][_0x37c034(0x229)]:[];if(hasCascadeChildren(_0x5b5d0f))return generateSoftDeleteCascadeOverride(_0x5b5d0f);const _0x1a272e=Array[_0x37c034(0x131)](_0x5b5d0f['softDeleteFkChildren'])?_0x5b5d0f[_0x37c034(0x196)]['filter'](_0xd83da7=>_0xd83da7&&_0xd83da7['onDelete']==='restrict'&&typeof _0xd83da7['childTable']==='string'&&_0xd83da7[_0x37c034(0x23b)]&&Array[_0x37c034(0x131)](_0xd83da7['childColumns'])&&_0xd83da7[_0x37c034(0x1ff)][_0x37c034(0x249)]===0x1&&typeof _0xd83da7['childColumns'][0x0]===_0x37c034(0x155)&&typeof _0xd83da7[_0x37c034(0x24c)]==='string'&&_0xd83da7['parentColumn']):[],_0x3b5aaf=[_0x2fa4d7];for(const _0xc54c82 of _0x9e8ba9){if(_0xc54c82&&_0xc54c82['field']&&!_0x3b5aaf[_0x37c034(0x29b)](_0xc54c82[_0x37c034(0x110)]))_0x3b5aaf[_0x37c034(0x25b)](_0xc54c82[_0x37c034(0x110)]);}for(const _0x1b3170 of _0x1a272e){if(!_0x3b5aaf['includes'](_0x1b3170['parentColumn']))_0x3b5aaf['push'](_0x1b3170[_0x37c034(0x24c)]);}const _0xf2eeb9=_0x3b5aaf[_0x37c034(0x10f)](',\x20'),_0x51b4e4=_0x1a272e['map']((_0x3ebf01,_0x3474af)=>{const _0x2f15d6=_0x37c034,_0x4dfcf6=_0x3ebf01['childTable'],_0x47f8e0=_0x3ebf01['childColumns'][0x0],_0xdefe60=_0x3ebf01['parentColumn'],_0x2cd76b=_0x3ebf01['childSoftDelete']===!![],_0x2f0ceb=_0x2cd76b?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'';return _0x2f15d6(0x106)+_0x3474af+_0x2f15d6(0x1d0)+_0x4dfcf6+'\x27.'+_0x47f8e0+'\x20→\x20master.'+_0xdefe60+'\x20(childSoftDelete='+_0x2cd76b+_0x2f15d6(0x126)+_0xdefe60+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictVal\x20!==\x20null\x20&&\x20__restrictVal\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x4dfcf6+_0x2f15d6(0x24e)+_0x47f8e0+_0x2f15d6(0x153)+_0x2f0ceb+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27'+_0x4dfcf6+'\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x37c034(0x10f)](''),_0x552552=_0x9e8ba9[_0x37c034(0x266)](_0x42cef8=>{const _0x1062d9=_0x37c034,_0x40cefc=_0x42cef8[_0x1062d9(0x110)],_0x128b4a=_0x42cef8['length'];return _0x1062d9(0x1bd)+_0x40cefc+_0x1062d9(0x1bf)+_0x128b4a+')\x20→\x20original\x20+\x20\x27##\x27\x20+\x20uuidv7()\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20lockedRow[\x27'+_0x40cefc+_0x1062d9(0xe9)+_0x128b4a+_0x1062d9(0x289)+_0x40cefc+'\x20value\x20(\x27\x20+\x20__str.length\x20+\x20\x27\x20chars)\x20exceeds\x20base\x20length\x20'+_0x128b4a+_0x1062d9(0xdd)+_0x40cefc+_0x1062d9(0x11e);})['join']('');return _0x37c034(0x263)+DELETED_BY_COLUMN+_0x37c034(0x134)+_0xf2eeb9+'\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+_0x37c034(0x271)+_0x51b4e4+_0x552552+_0x37c034(0x299)+IS_DELETED_COLUMN+_0x37c034(0x127)+DELETED_AT_COLUMN+_0x37c034(0x182)+DELETED_BY_COLUMN+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(deletedBy);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(lockedRow[\x27'+_0x2fa4d7+_0x37c034(0x226)+_0x2fa4d7+_0x37c034(0x1f6);}function generateSoftDeleteCascadeOverride(_0x5811d8){const _0x547a83=a0_0x3079,_0x3cd140=_0x5811d8['softDeleteCascadeTree'];return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Soft-delete\x20cascade\x20override\x20(R14\x20+\x20FK-SD-3).\x20/delete\x20men-soft-delete\x20master\x20+\x20seluruh\x0a\x20\x20\x20*\x20descendant\x20cascade\x20dalam\x20SATU\x20transaction\x20(atomic\x20all-or-nothing),\x20restrict-per-node\x20409\x20di\x0a\x20\x20\x20*\x20setiap\x20node.\x20Response\x20backward-compat\x20(master\x20depth-0).\x20updated_*\x20tidak\x20disentuh.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20criteria\x20-\x20{\x20where:\x20[...]\x20}\x20mengikuti\x20format\x20/delete\x20existing\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(opsional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20{\x20success,\x20message,\x20deleted_count,\x20deleted_items\x20}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20deleteData(criteria,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20{\x20v7:\x20uuidv7\x20}\x20=\x20require(\x27uuid\x27);\x0a\x0a\x20\x20\x20\x20if\x20(!criteria\x20||\x20!criteria.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20FK-SD-3\x20closure\x20cascade\x20(master\x20+\x20seluruh\x20descendant\x20lewat\x20edge\x20cascade\x20ke\x20anak\x0a\x20\x20\x20\x20//\x20soft-delete).\x20Map-free:\x20seluruh\x20metadata\x20descendant\x20dipersist\x20generate-time\x20di\x20RDF.\x0a\x20\x20\x20\x20const\x20__sdCascadeMeta\x20=\x20'+JSON[_0x547a83(0x163)](_0x3cd140)+';\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x20\x20\x20\x20//\x20deleted_by:\x20body\x20eksplisit\x20→\x20eventContext.additionalContext.user_id\x20→\x20\x27system\x27.\x20Resolusi\x0a\x20\x20\x20\x20//\x20yang\x20SAMA\x20dipakai\x20untuk\x20master\x20DAN\x20seluruh\x20descendant\x20pada\x20cascade\x20(FK-SD-3\x20#6).\x0a\x20\x20\x20\x20const\x20deletedBy\x20=\x20this._resolveAuditUserId(criteria,\x20eventContext,\x20\x27'+DELETED_BY_COLUMN+'\x27);\x0a\x0a\x20\x20\x20\x20//\x20Kolom\x20minimum\x20untuk\x20memproses\x20sebuah\x20node:\x20pk\x20(identitas\x20visited-set/lock\x20+\x20WHERE\x20UPDATE)\x0a\x20\x20\x20\x20//\x20+\x20tiap\x20field\x20reusable\x20(baca\x20original\x20sebelum\x20mutasi)\x20+\x20parentColumn\x20tiap\x20anak\x20(nilai\x20untuk\x0a\x20\x20\x20\x20//\x20restrict-check\x20&\x20expand).\x20Dedup,\x20urutan\x20stabil.\x0a\x20\x20\x20\x20const\x20__sdSelectCols\x20=\x20(node)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20cols\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20seen\x20=\x20new\x20Set();\x0a\x20\x20\x20\x20\x20\x20const\x20add\x20=\x20(c)\x20=>\x20{\x20if\x20(c\x20&&\x20!seen.has(c))\x20{\x20seen.add(c);\x20cols.push(c);\x20}\x20};\x0a\x20\x20\x20\x20\x20\x20add(node.pk);\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20ru\x20of\x20node.reusable)\x20add(ru.field);\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20ch\x20of\x20node.children)\x20add(ch.parentColumn);\x0a\x20\x20\x20\x20\x20\x20return\x20cols.join(\x27,\x20\x27);\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Walk\x20cascade\x20rekursif\x20(worklist\x20DFS\x20+\x20visited-set\x20\x27table|pk\x27)\x20pada\x20SATU\x20client\x20→\x20atomic.\x0a\x20\x20\x20\x20//\x20Tiap\x20node:\x20(1)\x20restrict-per-node\x20409,\x20(2)\x20soft-delete\x20(mutasi\x20reusable\x20\x27##\x27+uuidv7\x20+\x0a\x20\x20\x20\x20//\x20is_deleted/deleted_at/deleted_by),\x20(3)\x20expand\x20anak\x20AKTIF\x20cascade.\x20Cycle/diamond\x20aman\x20lewat\x0a\x20\x20\x20\x20//\x20visited-set\x20+\x20filter\x20is_deleted=FALSE\x20saat\x20expand.\x20Hanya\x20baris\x20master\x20(depth-0,\x20isMaster)\x0a\x20\x20\x20\x20//\x20dikumpulkan\x20untuk\x20response\x20backward-compat.\x0a\x20\x20\x20\x20const\x20__cascadeSoftDelete\x20=\x20async\x20(client,\x20masterRows,\x20deletedBy)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20visited\x20=\x20new\x20Set();\x0a\x20\x20\x20\x20\x20\x20const\x20touched\x20=\x20new\x20Set();\x0a\x20\x20\x20\x20\x20\x20const\x20masterDeletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20work\x20=\x20masterRows.map((r)\x20=>\x20({\x20table:\x20__sdCascadeMeta.master,\x20row:\x20r,\x20isMaster:\x20true\x20}));\x0a\x20\x20\x20\x20\x20\x20while\x20(work.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20current\x20=\x20work.pop();\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20__sdCascadeMeta.nodes[current.table];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20pkVal\x20=\x20current.row[node.pk];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20visitedKey\x20=\x20current.table\x20+\x20\x27|\x27\x20+\x20pkVal;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(visited.has(visitedKey))\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited.add(visitedKey);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(1)\x20restrict-per-node\x20—\x20generalisasi\x20FK-SD-2\x20Phase\x2003\x20ke\x20SETIAP\x20node.\x20Anak\x20soft-delete\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20→\x20hanya\x20row\x20AKTIF\x20(is_deleted=FALSE)\x20memblokir;\x20anak\x20non-soft-delete\x20→\x20row\x20apa\x20pun.\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ch\x20of\x20node.children)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ch.onDelete\x20!==\x20\x27restrict\x27)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictVal\x20=\x20current.row[ch.parentColumn];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictVal\x20===\x20null\x20||\x20__restrictVal\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__activeFilter\x20=\x20ch.childSoftDelete\x20?\x20\x27\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20\x27\x20+\x20ch.childTable\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20ch.childColumn\x20+\x20\x27\x20=\x20$1\x27\x20+\x20__activeFilter\x20+\x20\x27\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27\x22\x20+\x20ch.childTable\x20+\x20\x22\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(2)\x20soft-delete\x20node:\x20mutasi\x20reusable\x20(overflow\x20guard,\x20defense\x20in\x20depth)\x20+\x20set\x20kolom\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20soft-delete.\x20CHECK\x20konsistensi\x20terpenuhi\x20(reusable\x20termutasi\x20bersama\x20is_deleted=TRUE).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ru\x20of\x20node.reusable)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20current.row[ru.field];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__orig\x20===\x20null\x20||\x20__orig\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__str\x20=\x20String(__orig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__str.length\x20>\x20ru.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete\x20cascade:\x20column\x20\x27\x20+\x20ru.field\x20+\x20\x27\x20value\x20(\x27\x20+\x20__str.length\x20+\x20\x27\x20chars)\x20on\x20\x27\x20+\x20current.table\x20+\x20\x27\x20exceeds\x20base\x20length\x20\x27\x20+\x20ru.length\x20+\x20\x27;\x20the\x20mutation\x20suffix\x20cannot\x20be\x20appended\x20safely\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(ru.field\x20+\x20\x27\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+_0x547a83(0x127)+DELETED_AT_COLUMN+_0x547a83(0x182)+DELETED_BY_COLUMN+_0x547a83(0x286)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20ORDER\x20BY\x20\x27\x20+\x20__childNode.pk\x20+\x20\x27\x20FOR\x20UPDATE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__expandVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)).rows;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20cr\x20of\x20__childRows)\x20work.push({\x20table:\x20ch.childTable,\x20row:\x20cr,\x20isMaster:\x20false\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20touched:\x20[...touched],\x20masterDeletedItems,\x20deletedCount:\x20visited.size\x20};\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Kunci\x20baris\x20master\x20AKTIF\x20yang\x20cocok\x20kriteria\x20(FOR\x20UPDATE\x20+\x20is_deleted=FALSE):\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x200\x20row\x20→\x20404.\x20selectCols\x20cukup\x20untuk\x20node\x20master\x20(pk\x20+\x20reusable\x20+\x20parentColumn\x20anak).\x0a\x20\x20\x20\x20\x20\x20const\x20selectParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20whereBuilt\x20=\x20this.buildComplexWhereClause(criteria.where,\x20selectParams,\x201);\x0a\x20\x20\x20\x20\x20\x20const\x20__masterNode\x20=\x20__sdCascadeMeta.nodes[__sdCascadeMeta.master];\x0a\x20\x20\x20\x20\x20\x20const\x20lockQuery\x20=\x20\x27SELECT\x20\x27\x20+\x20__sdSelectCols(__masterNode)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+_0x547a83(0x20d);}function generateDeleteMethod(_0x4af8b3){const _0x4858e4=a0_0x3079,_0x5624cb=_0x4af8b3[_0x4858e4(0x2c4)]||{},_0x2b5820=_0x4af8b3['masterDetail']&&_0x4af8b3[_0x4858e4(0x14d)][_0x4858e4(0x22f)],_0x354a65=_0x4af8b3[_0x4858e4(0x14d)]?.['cascadeDelete']||![];if(!_0x5624cb['delete'])return'';const _0x48e620=_0x4af8b3['primaryKey']||'id';if(isSoftDeleteEnabled(_0x4af8b3))return generateSoftDeleteOverride(_0x4af8b3);if(!_0x2b5820)return'';const _0x288565=_0x4af8b3['masterDetail'][_0x4858e4(0x11f)],_0x1c0821=_0x4af8b3['masterDetail']['foreignKey'];let _0x4222d1='\x0a';return _0x4222d1+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Delete\x20data\x20with\x20cascadeDelete\x20support\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Delete\x20options\x20with\x20where\x20clause\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(optional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Delete\x20result\x0a\x20\x20\x20*/\x0a\x20\x20async\x20deleteData(options,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20where\x20clause\x0a\x20\x20\x20\x20\x20\x20const\x20where\x20=\x20options.where\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(!where\x20||\x20where.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Where\x20clause\x20is\x20required\x20for\x20delete\x20operation\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20WHERE\x20clause\x0a\x20\x20\x20\x20\x20\x20let\x20whereClause\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20conditions\x20=\x20where.map(condition\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(condition.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${condition.key}\x20=\x20$${paramIndex++}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20conditions.join(\x27\x20AND\x20\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Handle\x20complex\x20where\x20format\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20conditions\x20=\x20where.conditions.map(condition\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(condition.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20operator\x20=\x20condition.operator\x20||\x20\x27=\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${condition.key}\x20${operator}\x20$${paramIndex++}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20logic\x20=\x20where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20conditions.join(`\x20${logic}\x20`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(!whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20where\x20clause\x20format\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20'+(_0x354a65?_0x4858e4(0x16e)+_0x288565+_0x4858e4(0x1cf)+_0x48e620+_0x4858e4(0x275)+_0x48e620+_0x4858e4(0x1ad)+_0x288565+_0x4858e4(0x24e)+_0x1c0821+_0x4858e4(0x176)+_0x288565+_0x4858e4(0x111):_0x4858e4(0x15f))+_0x4858e4(0x1e2)+(_0x354a65?_0x4858e4(0x291):'')+'\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20deleteData:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a',_0x4222d1;}function generateSoftDeleteRestoreOverride(_0x232a82){const _0x18294f=a0_0x3079,_0x3b8ec7={'ZgRxO':function(_0x1bc57c,_0x5002ef){return _0x1bc57c===_0x5002ef;},'HHKkd':'missing\x20or\x20soft-deleted','CyJzh':'ada'},_0x4d09b2=_0x232a82['primaryKey']||_0x232a82['fieldName']&&_0x232a82['fieldName'][0x0]||'id',_0xc38ad7=_0x232a82[_0x18294f(0x236)]&&Array[_0x18294f(0x131)](_0x232a82['softDelete'][_0x18294f(0x229)])?_0x232a82[_0x18294f(0x236)]['reusable']:[],_0x43b0c2=Array[_0x18294f(0x131)](_0x232a82[_0x18294f(0x22c)])?_0x232a82['softDeleteFkChecks']['filter'](_0x328bf4=>_0x328bf4&&Array['isArray'](_0x328bf4['columns'])&&_0x328bf4['columns'][_0x18294f(0x249)]>0x0&&typeof _0x328bf4[_0x18294f(0xf0)]===_0x18294f(0x155)&&_0x328bf4['refTable']&&Array[_0x18294f(0x131)](_0x328bf4[_0x18294f(0x195)])&&_0x328bf4['refColumns']['length']===_0x328bf4['columns'][_0x18294f(0x249)]):[],_0x2b5823=[_0x4d09b2];for(const _0x79bd24 of _0xc38ad7){if(_0x79bd24&&_0x79bd24[_0x18294f(0x110)]&&!_0x2b5823[_0x18294f(0x29b)](_0x79bd24[_0x18294f(0x110)]))_0x2b5823['push'](_0x79bd24[_0x18294f(0x110)]);}for(const _0x1f2dfb of _0x43b0c2){for(const _0x3ee8a7 of _0x1f2dfb[_0x18294f(0x10d)]){if(_0x3ee8a7&&!_0x2b5823[_0x18294f(0x29b)](_0x3ee8a7))_0x2b5823['push'](_0x3ee8a7);}}const _0x3415ce=_0x2b5823['join'](',\x20'),_0x599c89=_0xc38ad7['map'](_0x1b667b=>{const _0x554a83=_0x18294f,_0x3d6310=_0x1b667b[_0x554a83(0x110)],_0x8cac70=_0x1b667b[_0x554a83(0x249)];return _0x554a83(0x1bd)+_0x3d6310+_0x554a83(0x1bf)+_0x8cac70+_0x554a83(0x2ba)+_0x3d6310+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__cur\x20!==\x20null\x20&&\x20__cur\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__curStr\x20=\x20String(__cur);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__sepIdx\x20=\x20__curStr.lastIndexOf(\x27##\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Legacy\x20tanpa\x20\x27##\x27\x20→\x20original\x20=\x20nilai\x20apa\x20adanya\x20(strip\x20dilewati\x20di\x20bawah).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__original\x20=\x20__sepIdx\x20>=\x200\x20?\x20__curStr.substring(0,\x20__sepIdx)\x20:\x20__curStr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Konflik\x20(409):\x20original\x20kini\x20dipakai\x20record\x20aktif\x20lain\x20selain\x20row\x20ini.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__conflict\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20\x27\x20+\x20writeSource\x20+\x20\x27\x20WHERE\x20'+_0x3d6310+'\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20AND\x20'+_0x4d09b2+_0x554a83(0x2d3)+_0x4d09b2+_0x554a83(0x141)+_0x3d6310+_0x554a83(0x295)+_0x3d6310+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__original);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x18294f(0x10f)](''),_0x24c3b5=_0x43b0c2['map']((_0xa7a552,_0x2fc77c)=>{const _0x428453=_0x18294f,_0x5d0a19=_0x3b8ec7[_0x428453(0x1a9)](_0xa7a552[_0x428453(0x26b)],!![]),_0x47fdbf=_0xa7a552[_0x428453(0xf0)],_0x3fd2f1=_0xa7a552[_0x428453(0x10d)][_0x428453(0x266)](_0xf0c9a2=>_0x428453(0x2a1)+_0xf0c9a2+'\x27]')['join'](',\x20'),_0x4a7687=_0xa7a552['refColumns'][_0x428453(0x266)]((_0x3c1ecd,_0x45f452)=>_0x3c1ecd+_0x428453(0x20c)+(_0x45f452+0x1))['join'](_0x428453(0x169)),_0x3dec5f=_0x5d0a19?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'',_0x832bfa=_0x5d0a19?_0x3b8ec7['HHKkd']:_0x428453(0x27e);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x2fc77c+_0x428453(0x102)+_0x47fdbf+'\x20(parentSoftDelete='+_0x5d0a19+'):\x20parent\x20wajib\x20'+(_0x5d0a19?'aktif':_0x3b8ec7[_0x428453(0x1a1)])+'\x20(422)\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkVals\x20=\x20['+_0x3fd2f1+'];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20nullable:\x20bila\x20ada\x20nilai\x20NULL,\x20parent\x20tidak\x20diwajibkan\x20→\x20skip\x20cek.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkVals.every((v)\x20=>\x20v\x20!==\x20null\x20&&\x20v\x20!==\x20undefined))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x47fdbf+'\x20WHERE\x20'+_0x4a7687+_0x3dec5f+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20__fkVals\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkCheck.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fkError\x20=\x20new\x20Error(\x22Cannot\x20restore:\x20referenced\x20parent\x20record\x20in\x20\x27'+_0x47fdbf+'\x27\x20is\x20'+_0x832bfa+_0x428453(0x2d6);})['join']('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Soft-delete\x20restore\x20override\x20(R20).\x20/restore\x20membalik\x20soft\x20delete\x20secara\x20atomic.\x0a\x20\x20\x20*\x20Atomic\x20(satu\x20transaction):\x20SELECT\x20FOR\x20UPDATE\x20row\x20terhapus\x20(is_deleted=TRUE)\x20→\x20strip\x20suffix\x0a\x20\x20\x20*\x20reusable\x20+\x20konflik\x20409\x20+\x20FK\x20422\x20→\x20UPDATE\x20reset\x20is_deleted/deleted_at/deleted_by\x20→\x20COMMIT\x20→\x0a\x20\x20\x20*\x20invalidateCache.\x20updated_*\x20tidak\x20disentuh.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20criteria\x20-\x20{\x20where:\x20[...]\x20}\x20mengikuti\x20format\x20/delete\x20existing\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(opsional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20{\x20success,\x20message,\x20restored_count,\x20restored_items\x20}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20restoreData(criteria,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20if\x20(!criteria\x20||\x20!criteria.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Kunci\x20row\x20terhapus\x20yang\x20cocok\x20kriteria.\x20Filter\x20is_deleted\x20=\x20TRUE\x20memastikan\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20hanya\x20record\x20yang\x20benar-benar\x20ter-soft-delete\x20yang\x20dipulihkan;\x20FOR\x20UPDATE\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20menjamin\x20satu\x20pemenang\x20saat\x20restore\x20bersamaan.\x0a\x20\x20\x20\x20\x20\x20const\x20selectParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20whereBuilt\x20=\x20this.buildComplexWhereClause(criteria.where,\x20selectParams,\x201);\x0a\x20\x20\x20\x20\x20\x20const\x20lockQuery\x20=\x20\x27SELECT\x20'+_0x3415ce+_0x18294f(0x202)+IS_DELETED_COLUMN+'\x20=\x20TRUE\x20FOR\x20UPDATE\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20lockResult\x20=\x20await\x20client.query(lockQuery,\x20whereBuilt.params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(lockResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tidak\x20ada\x20row\x20terhapus:\x20tidak\x20ditemukan,\x20atau\x20record\x20aktif\x20(bukan\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20notFoundError\x20=\x20new\x20Error(\x27Record\x20not\x20found\x20or\x20not\x20deleted\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20notFoundError.statusCode\x20=\x20404;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20notFoundError;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Restore\x20tiap\x20row\x20terhapus\x20(strip\x20suffix\x20→\x20konflik\x20→\x20FK\x20→\x20reset).\x0a\x20\x20\x20\x20\x20\x20const\x20restoredItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20lockedRow\x20of\x20lockResult.rows)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a'+_0x599c89+_0x24c3b5+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x205.\x20Reset\x20kolom\x20soft-delete.\x20updated_*\x20TIDAK\x20disentuh\x20(konsisten\x20R14).\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+_0x18294f(0x23c)+DELETED_AT_COLUMN+_0x18294f(0x20b)+DELETED_BY_COLUMN+_0x18294f(0x24f)+_0x4d09b2+'\x27]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateQuery\x20=\x20\x27UPDATE\x20\x27\x20+\x20writeSource\x20+\x20\x27\x20SET\x20\x27\x20+\x20setClauses.join(\x27,\x20\x27)\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20'+_0x4d09b2+_0x18294f(0x118);}function generateRestoreMethod(_0x337b6c){const _0x5282fb=a0_0x3079,_0x15e4fa={'IeJpP':function(_0x2c67b9,_0x3bb4c4){return _0x2c67b9(_0x3bb4c4);}},_0x1dabd1=_0x337b6c[_0x5282fb(0x2c4)]||{};if(!_0x1dabd1[_0x5282fb(0x137)]||!_0x15e4fa['IeJpP'](isSoftDeleteEnabled,_0x337b6c))return'';return _0x15e4fa['IeJpP'](generateSoftDeleteRestoreOverride,_0x337b6c);}function hasSoftDeleteFkParents(_0x20b435){const _0x8faf73=a0_0x3079,_0x525fed={'JeNVh':function(_0x2deeea,_0x69a5b5){return _0x2deeea>_0x69a5b5;}};return Array[_0x8faf73(0x131)](_0x20b435['softDeleteFkParents'])&&_0x525fed['JeNVh'](_0x20b435[_0x8faf73(0x129)]['length'],0x0);}function generateSoftDeleteFkParentsCheck(_0x3c3e8d){const _0x301a8b=a0_0x3079;if(!hasSoftDeleteFkParents(_0x3c3e8d))return'';const _0x237cfc=_0x3c3e8d['softDeleteFkParents'][_0x301a8b(0x266)]((_0x15b18a,_0x4918dd)=>{const _0x4f34fe=_0x301a8b,_0xc5f914=_0x15b18a['columns'][0x0],_0x21c0df=_0x15b18a[_0x4f34fe(0xf0)],_0x322e60=_0x15b18a['refColumns'][0x0];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x4918dd+'\x20\x27'+_0xc5f914+_0x4f34fe(0x149)+_0x21c0df+'.'+_0x322e60+':\x20parent\x20wajib\x20aktif\x20(is_deleted=FALSE)\x20→\x20else\x20422.\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkVal\x20=\x20body[\x27'+_0xc5f914+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Pemicu\x20=\x20kolom\x20FK\x20hadir\x20non-null;\x20null/undefined\x20→\x20skip\x20(FK\x20nullable,\x20tak\x20ada\x20parent).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkVal\x20!==\x20null\x20&&\x20__fkVal\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkRes\x20=\x20await\x20pool.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x21c0df+'\x20WHERE\x20'+_0x322e60+_0x4f34fe(0x11a)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__fkVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkRes.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkErr\x20=\x20new\x20Error(\x22Cannot\x20\x22\x20+\x20operation\x20+\x20\x22:\x20referenced\x20parent\x20record\x20in\x20\x27'+_0x21c0df+'\x27\x20is\x20missing\x20or\x20soft-deleted\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20__fkErr.statusCode\x20=\x20422;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20__fkErr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})['join']('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20FK-SD-1\x20forward\x20block.\x20Tolak\x20create/update\x20anak\x20yang\x20menunjuk\x20parent\x20soft-delete\x20yang\x0a\x20\x20\x20*\x20terhapus\x20(is_deleted=TRUE)\x20atau\x20tidak\x20ada\x20(422).\x20Hanya\x20FK\x20ber-parent\x20soft-delete-enabled\x0a\x20\x20\x20*\x20(registry\x20softDeleteFkParents)\x20yang\x20dicek;\x20FK\x20null/absent\x20→\x20skip.\x20Dipanggil\x20route\x20/create\x0a\x20\x20\x20*\x20dan\x20/update\x20sebelum\x20addData/updateData.\x20Pre-check\x20pool\x20terpisah\x20(non-transaksional):\x20lihat\x0a\x20\x20\x20*\x20catatan\x20atomicity\x20Bagian\x20B\x20di\x20report\x20Phase\x2002.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20body\x20-\x20request\x20body\x20(req.body)\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20\x27create\x27\x20|\x20\x27update\x27\x20(untuk\x20pesan\x20error\x20422)\x0a\x20\x20\x20*/\x0a\x20\x20async\x20checkSoftDeleteFkParents(body,\x20operation)\x20{\x0a\x20\x20\x20\x20if\x20(!body\x20||\x20typeof\x20body\x20!==\x20\x27object\x27)\x20return;\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a'+_0x237cfc+_0x301a8b(0x19b);}function createPostgresModelTemplate(_0x51b083,_0x3464ac,_0x5798e8){const _0xdc7820=a0_0x3079,_0x36a04f={'XPaHm':function(_0x2a2fde,_0x10785a){return _0x2a2fde!==_0x10785a;},'vOenZ':function(_0xe3228,_0x3ff699){return _0xe3228+_0x3ff699;},'SXoFN':'\x20WHERE\x20','Yvoac':function(_0x384e4b,_0x34adac){return _0x384e4b(_0x34adac);},'mIxGy':',\x0a\x20\x20\x20\x20\x20\x20','qlgyz':function(_0x2e898b,_0x3a87c6){return _0x2e898b(_0x3a87c6);},'PquUA':function(_0x1e33ff,_0x4235dd,_0x45b580){return _0x1e33ff(_0x4235dd,_0x45b580);},'xKJKr':_0xdc7820(0x2b9),'InGog':function(_0x53c13e,_0x5b8381){return _0x53c13e>_0x5b8381;},'xPhfK':function(_0x355dec,_0x5e02fa,_0x1fd663){return _0x355dec(_0x5e02fa,_0x1fd663);},'iYvBo':'datatablesQuery','tnqdn':function(_0x38c1be,_0x5ef6c9){return _0x38c1be+_0x5ef6c9;},'kxWWM':function(_0x369551,_0x59e19c){return _0x369551+_0x59e19c;},'GoPrg':function(_0x40deff,_0x1a9cf3){return _0x40deff(_0x1a9cf3);},'HXNnB':function(_0x18e3e4,_0x19f411){return _0x18e3e4(_0x19f411);}};assertNoFileReferenceLeftover(_0x5798e8);const _0x2992e2=FileUtils[_0xdc7820(0x16f)](_0x3464ac),_0x16619d=new Date()['toISOString']()['replace']('T','\x20')[_0xdc7820(0x200)](/\.\d{3}Z$/,''),_0x54576e=_0x36a04f['Yvoac'](buildValidFieldsString,_0x5798e8),_0xccd095=_0x5798e8[_0xdc7820(0x1a6)]||{},_0x2f2366=(_0x5798e8['fieldName']||[])['map'](_0x15f648=>'\x27'+_0x15f648+'\x27')[_0xdc7820(0x10f)](_0x36a04f['mIxGy']),_0x3578cf=(_0xccd095['schemaFields']||_0x5798e8[_0xdc7820(0x1cb)]||[])['map'](_0x1a74c0=>'\x27'+_0x1a74c0+'\x27')[_0xdc7820(0x10f)](_0xdc7820(0x154)),_0x550109=(_0xccd095['readableFields']||_0x5798e8['fieldName']||[])[_0xdc7820(0x266)](_0x1ca4b1=>'\x27'+_0x1ca4b1+'\x27')['join'](_0x36a04f[_0xdc7820(0x283)]),_0xd2c4b4=(_0xccd095['datatablesFields']||_0xccd095[_0xdc7820(0x171)]||_0x5798e8[_0xdc7820(0x1cb)]||[])['map'](_0x1dfa0f=>'\x27'+_0x1dfa0f+'\x27')[_0xdc7820(0x10f)](',\x0a\x20\x20\x20\x20\x20\x20'),_0xc0f13a=buildSearchColumnsCode(_0x5798e8),_0x2b907c=_0x36a04f[_0xdc7820(0x178)](buildFiltersCode,_0x5798e8),_0x32cec6=buildLookupOverrideCode(_0x3464ac,_0x5798e8),_0x30d9ff=_0x36a04f[_0xdc7820(0x246)](buildAdvancedQuerySection,_0x5798e8),_0x3ccd28=buildFieldMappingCode(_0x5798e8),_0x4e1a0d=_0x36a04f[_0xdc7820(0x14a)](buildAuditColumnsSection,_0x5798e8,'\x20\x20\x20\x20'),_0x3b050=_0x36a04f['Yvoac'](buildFormatResponseDataBody,_0x5798e8),_0x87da36=isSoftDeleteEnabled(_0x5798e8)?_0xdc7820(0x213)+JSON[_0xdc7820(0x163)](SOFT_DELETE_COLUMNS)+_0xdc7820(0x26e):_0xdc7820(0x204),_0x190e5b=_0x5798e8['defaultScope']&&_0x5798e8[_0xdc7820(0x1d3)][_0xdc7820(0x207)]?buildDefaultScopeSQL(_0x5798e8[_0xdc7820(0x1d3)]['read'],''):'',_0x2e8f0c=((()=>{const _0x1b9542=_0xdc7820,_0x5bb85d=softDeleteVisibilityFilter(_0x5798e8);return _0x36a04f[_0x1b9542(0x205)](_0x5bb85d,null)?_0x36a04f['vOenZ'](_0x36a04f[_0x1b9542(0x29f)](_0x36a04f['SXoFN'],IS_DELETED_COLUMN),_0x1b9542(0x1fd))+_0x5bb85d:'';})()),_0x2ff944=_0x5798e8['viewName']||_0x5798e8[_0xdc7820(0x152)],_0x116b33=_0x5798e8['tableName'];return'const\x20BaseModel\x20=\x20require(\x27@restforgejs/platform/src/models/base-model\x27);\x0aconst\x20db\x20=\x20require(\x27@restforgejs/platform/src/utils/db\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0a//\x20AdvancedFilterHelper\x20dihapus\x20—\x20semua\x20filtering\x20ditangani\x20oleh\x20buildObjectFilterClause\x20dan\x20buildComplexWhereClause\x0a\x0a/**\x0a\x20*\x20'+_0x2992e2+'\x20Model\x20-\x20Auto-generated\x20on\x20'+_0x16619d+_0xdc7820(0x1dd)+_0x3464ac+_0xdc7820(0x1ea)+_0x5798e8[_0xdc7820(0x152)]+(_0x5798e8[_0xdc7820(0x244)]?'\x0a\x20*\x20View:\x20'+_0x5798e8[_0xdc7820(0x244)]:'')+'\x0a\x20*\x20Fields:\x20'+(_0x5798e8[_0xdc7820(0x1cb)]?_0x5798e8[_0xdc7820(0x1cb)]['length']:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0aclass\x20'+_0x2992e2+_0xdc7820(0x233)+_0x3464ac+'\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x54576e+'\x0a\x20\x20\x20\x20];\x0a\x20\x20\x20\x20const\x20schemaFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x3578cf+'\x0a\x20\x20\x20\x20];\x0a\x20\x20\x20\x20const\x20readableFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x550109+_0xdc7820(0xeb)+_0xd2c4b4+_0xdc7820(0x10c)+(_0x5798e8[_0xdc7820(0x1e0)]?JSON['stringify'](_0x5798e8[_0xdc7820(0x1e0)]):_0x36a04f[_0xdc7820(0x273)])+';\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20constructor\x20parent\x20dengan\x20nama\x20tabel,\x20validFields,\x20datatablesWhere,\x20dan\x20proyeksi\x20whitelist\x0a\x20\x20\x20\x20super(\x27'+_0x5798e8['tableName']+_0xdc7820(0x2bf)+(_0x5798e8[_0xdc7820(0x16d)]||_0x5798e8['fieldName']&&_0x5798e8[_0xdc7820(0x1cb)][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Setup\x20viewName\x20untuk\x20operasi\x20read\x20jika\x20berbeda\x20dari\x20tableName\x0a\x20\x20\x20\x20this.viewName\x20=\x20\x27'+_0x2ff944+'\x27;\x0a\x20\x20\x20\x20this.readSource\x20=\x20\x27'+_0x2ff944+_0xdc7820(0x1b7)+_0x116b33+_0xdc7820(0x1b2)+_0x4e1a0d+'\x0a\x20\x20\x20\x20//\x20Flag\x20untuk\x20self-documenting\x20API\x20(endpoint\x20/info)\x0a\x20\x20\x20\x20this.hasViewQuery\x20=\x20'+!!_0x5798e8[_0xdc7820(0x260)]+';\x0a\x20\x20\x20\x20this.hasExportQuery\x20=\x20'+!!_0x5798e8[_0xdc7820(0x117)]+';\x0a\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20this.advancedQueryTemplates\x20=\x20this.loadAdvancedQueryTemplates();\x0a\x20\x20\x20\x20'+(_0x5798e8[_0xdc7820(0x248)]&&_0x36a04f[_0xdc7820(0x1d5)](Object['keys'](_0x5798e8[_0xdc7820(0x248)])['length'],0x0)?'\x0a\x20\x20\x20\x20//\x20DateTime\x20fields\x20configuration\x0a\x20\x20\x20\x20this.dateTimeFields\x20=\x20'+JSON['stringify'](_0x5798e8[_0xdc7820(0x248)],null,0x6)+';\x0a\x20\x20\x20\x20':'')+(_0x5798e8[_0xdc7820(0x1e3)]&&_0x5798e8['uploadConfig']['fields']?'\x0a\x20\x20\x20\x20//\x20File\x20upload\x20fields\x20(JSONB\x20columns)\x0a\x20\x20\x20\x20this.fileFields\x20=\x20'+JSON['stringify'](Object[_0xdc7820(0x15e)](_0x5798e8['uploadConfig'][_0xdc7820(0x231)]))+';\x0a\x20\x20\x20\x20':'')+'\x0a'+_0x36a04f[_0xdc7820(0x246)](_generateValidationConfig,_0x5798e8[_0xdc7820(0x243)])+'\x0a\x20\x20\x20\x20//\x20Model\x20metadata\x0a\x20\x20\x20\x20this.modelMetadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20endpointName:\x20\x27'+_0x3464ac+'\x27,\x0a\x20\x20\x20\x20\x20\x20moduleName:\x20\x27'+_0x51b083+'\x27,\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x5798e8['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20viewName:\x20\x27'+_0x2ff944+'\x27,\x0a\x20\x20\x20\x20\x20\x20fieldCount:\x20'+(_0x5798e8[_0xdc7820(0x1cb)]?_0x5798e8[_0xdc7820(0x1cb)]['length']:0x0)+_0xdc7820(0x28b)+_0x16619d+'\x27,\x0a\x20\x20\x20\x20\x20\x20features:\x20'+JSON[_0xdc7820(0x163)](_0x5798e8['_metadata']?.[_0xdc7820(0x2a5)]||[])+'\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Load\x20advanced\x20query\x20templates\x20dari\x20file\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Templates\x20SQL\x20untuk\x20advanced\x20queries\x0a\x20\x20\x20*/\x0a\x20\x20loadAdvancedQueryTemplates()\x20{\x0a\x20\x20\x20\x20const\x20templates\x20=\x20{};\x0a\x20\x20\x20\x20'+_0x30d9ff+'\x0a\x0a\x20\x20\x20\x20return\x20templates;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getListQuery\x20untuk\x20menyesuaikan\x20dengan\x20kebutuhan\x20'+_0x3464ac+'\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Query\x20options\x0a\x20\x20\x20*\x20@returns\x20{string}\x20SQL\x20query\x20dasar\x20untuk\x20'+_0x3464ac+_0xdc7820(0x173)+_0x36a04f['xPhfK'](buildQueryLoadingCode,_0x5798e8['datatablesQuery'],_0x36a04f[_0xdc7820(0x1c6)])+'\x0a\x0a\x20\x20\x20\x20//\x20Replace\x20any\x20remaining\x20placeholders\x20-\x20gunakan\x20readSource\x20untuk\x20operasi\x20read\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/${tableName}/g,\x20this.readSource);\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/${this.table}/g,\x20this.readSource);\x0a\x0a\x20\x20\x20\x20return\x20baseQuery;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getReadQuery\x20untuk\x20endpoint\x20/read\x0a\x20\x20\x20*\x20Prioritas:\x20viewName\x20->\x20viewQuery\x20->\x20tableName\x20(SELECT\x20*\x20FROM\x20readSource)\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Query\x20options\x0a\x20\x20\x20*\x20@returns\x20{string}\x20SQL\x20query\x20dasar\x20untuk\x20/read\x0a\x20\x20\x20*/\x0a\x20\x20getReadQuery(options\x20=\x20{})\x20{\x0a\x20\x20\x20\x20//\x20Priority\x201:\x20viewName\x20(real\x20database\x20view)\x0a\x20\x20\x20\x20if\x20(this.viewName\x20&&\x20this.viewName\x20!==\x20this.table)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.viewName;\x0a\x20\x20\x20\x20}\x0a'+(_0x5798e8['viewQuery']?_0xdc7820(0x2a2)+buildQueryLoadingCode(_0x5798e8['viewQuery'],'viewQuery')+'\x0a\x0a\x20\x20\x20\x20//\x20Replace\x20any\x20remaining\x20placeholders\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/\x5c$\x5c{tableName\x5c}/g,\x20this.readSource);\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/\x5c$\x5c{this\x5c.table\x5c}/g,\x20this.readSource);\x0a\x0a\x20\x20\x20\x20return\x20baseQuery;':_0xdc7820(0x115))+_0xdc7820(0x192)+_0x2e8f0c+'\x27\x20:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource'+(_0x2e8f0c?_0x36a04f['vOenZ'](_0x36a04f[_0xdc7820(0x29a)]('\x20+\x20\x27',_0x2e8f0c),'\x27'):'')+';\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20totalRecords\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x205.\x20Menghitung\x20jumlah\x20data\x20terfilter\x20-\x20gunakan\x20readSource\x20untuk\x20read\x20operations\x0a\x20\x20\x20\x20\x20\x20let\x20filteredRecords\x20=\x20totalRecords;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Always\x20wrap\x20CTE/JOIN\x20query\x20for\x20counting\x20with\x20filters\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredQuery\x20=\x20needsSubquery\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x20:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource\x20+\x20\x27\x20\x27\x20+\x20whereClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Count\x20Filtered\x20Query:\x27,\x20countFilteredQuery);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Count\x20Filtered\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredResult\x20=\x20await\x20db.executeQuery(countFilteredQuery,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20filteredRecords\x20=\x20countFilteredResult\x20&&\x20countFilteredResult[0]\x20?\x20parseInt(countFilteredResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x206.\x20Membuat\x20order\x20clause\x20menggunakan\x20buildSortColumnsClause\x0a\x20\x20\x20\x20\x20\x20const\x20orderClause\x20=\x20this.buildSortColumnsClause(resolvedSortColumns,\x20this.datatablesFields);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x207.\x20Menambahkan\x20pagination\x0a\x20\x20\x20\x20\x20\x20const\x20limitClause\x20=\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${start}`;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x208.\x20Menjalankan\x20query\x20final\x20-\x20wrap\x20CTE/JOIN\x20query\x20to\x20avoid\x20column\x20ambiguity\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20needsSubquery\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20(whereClause\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20limitClause\x20:\x0a\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20+\x20\x22\x20\x22\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Final\x20Query:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20whereParams);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20draw:\x20parseInt(options.draw\x20||\x20\x271\x27,\x2010),\x0a\x20\x20\x20\x20\x20\x20\x20\x20recordsTotal:\x20totalRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20recordsFiltered:\x20filteredRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20data\x20||\x20[]\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20the\x20result\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedDatatables(options,\x20result);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getDatatables:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Get\x20data\x20list\x20dengan\x20manual\x20pagination\x20untuk\x20endpoint\x20/list\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Parameter\x20dari\x20request\x20list\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Hasil\x20query\x20dengan\x20format\x20list\x20pagination\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getList(options)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20page\x20=\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20perPage\x20=\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20offset\x20=\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20searchValue\x20=\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20searchBy\x20=\x20\x27code\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20select\x20=\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20limit\x20=\x201000\x0a\x20\x20\x20\x20\x20\x20}\x20=\x20options;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20paginate\x20=\x20page\x20!==\x20null;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache:\x20Check\x20if\x20data\x20exists\x20in\x20cache\x0a\x20\x20\x20\x20\x20\x20const\x20scInfo\x20=\x20sort_columns\x20&&\x20sort_columns.length\x20>\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20sort_columns.map(s\x20=>\x20`${s.column}:${s.direction}`).join(\x27,\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27default\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20cacheInfo\x20=\x20`page:${page},\x20perPage:${perPage},\x20sort:${scInfo},\x20search:${searchValue\x20||\x20\x27none\x27}${where\x20?\x20\x27,\x20where:yes\x27\x20:\x20\x27\x27}`;\x0a\x20\x20\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedList(options);\x0a\x20\x20\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`[Cache]\x20HIT\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20cachedResult;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20console.log(`[Cache]\x20MISS\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Mendapatkan\x20query\x20dasar\x0a\x20\x20\x20\x20\x20\x20let\x20baseQuery;\x0a\x20\x20\x20\x20\x20\x20if\x20(select\x20&&\x20Array.isArray(select)\x20&&\x20select.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20selectedValidColumns\x20=\x20select.filter(col\x20=>\x20this.readableFields.includes(col));\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(selectedValidColumns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20select\x20adalah\x20lapisan\x20di\x20atas\x20sumber\x20hasil\x20resolusi\x20(viewName\x20→\x20viewQuery\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20→\x20tableName),\x20bukan\x20jalur\x20terpisah\x20ke\x20tabel\x20mentah.\x20Bila\x20sumber\x20berupa\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20view/query\x20kompleks,\x20kolom\x20dipilih\x20dari\x20subquery\x20sumber\x20tersebut.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20readQuery\x20=\x20this.getReadQuery(options);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20isViewSource\x20=\x20readQuery.trim()\x20!==\x20(\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20=\x20isViewSource\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20\x27\x20+\x20selectedValidColumns.join(\x27,\x20\x27)\x20+\x20\x27\x20FROM\x20(\x27\x20+\x20readQuery\x20+\x20\x27)\x20rf_read\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20\x27\x20+\x20selectedValidColumns.join(\x27,\x20\x27)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20this.readSource;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20=\x20this.getReadQuery(options);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20=\x20this.getReadQuery(options);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201b.\x20Deteksi\x20apakah\x20query\x20mengandung\x20JOIN\x20atau\x20CTE\x20(perlu\x20subquery\x20wrapping)\x0a\x20\x20\x20\x20\x20\x20const\x20isCteQuery\x20=\x20baseQuery.toLowerCase().trim().startsWith(\x27with\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20hasJoin\x20=\x20/\x5cb(inner|left|right|cross|full)\x5cs+join\x5cb/i.test(baseQuery)\x20||\x20/\x5cbjoin\x5cb/i.test(baseQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20needsSubquery\x20=\x20isCteQuery\x20||\x20hasJoin;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Build\x20WHERE\x20clause\x20untuk\x20search\x0a\x20\x20\x20\x20\x20\x20let\x20whereClause\x20=\x20`'+(_0x190e5b?'WHERE\x20'+_0x190e5b:'')+'`;\x0a\x20\x20\x20\x20\x20\x20if\x20(searchValue\x20&&\x20searchValue.trim()\x20!==\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedSearchValue\x20=\x20searchValue.replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20likeValue\x20=\x20`%${escapedSearchValue}%`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x190e5b?'whereClause\x20+=\x20`\x20AND\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;':'whereClause\x20=\x20`WHERE\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;')+_0xdc7820(0xe2)+_0x2e8f0c+'\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource'+(_0x2e8f0c?_0x36a04f['kxWWM'](_0x36a04f['tnqdn'](_0xdc7820(0x1fa),_0x2e8f0c),'\x27'):'')+';\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20totalRecords\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x205.\x20Menghitung\x20jumlah\x20data\x20terfilter\x20(jika\x20ada\x20where/search)\x0a\x20\x20\x20\x20\x20\x20let\x20filteredRecords\x20=\x20totalRecords;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource\x20+\x20\x27\x20\x27\x20+\x20whereClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredResult\x20=\x20await\x20db.executeQuery(countFilteredQuery,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x20\x20\x20\x20\x20\x20\x20\x20filteredRecords\x20=\x20countFilteredResult\x20&&\x20countFilteredResult[0]\x20?\x20parseInt(countFilteredResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x206.\x20Build\x20ORDER\x20BY\x20clause\x0a\x20\x20\x20\x20\x20\x20const\x20orderClause\x20=\x20this.buildSortColumnsClause(sort_columns,\x20this.readableFields);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x207.\x20Build\x20LIMIT\x20dan\x20OFFSET\x20clause\x20(kondisional\x20berdasarkan\x20mode)\x0a\x20\x20\x20\x20\x20\x20let\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20limitClause\x20=\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${offset}`;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20limitClause\x20=\x20`\x20LIMIT\x20${limit}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x208.\x20Menjalankan\x20query\x20final\x20untuk\x20data\x20(subquery\x20wrapping\x20untuk\x20JOIN/CTE)\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20console.log(`List\x20SQL\x20Query:\x20${query}`);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27List\x20Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20'+_0x87da36+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20totalRecords:\x20filteredRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20totalUnfiltered:\x20totalRecords\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20result.page\x20=\x20page;\x0a\x20\x20\x20\x20\x20\x20\x20\x20result.perPage\x20=\x20perPage;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache:\x20Store\x20result\x20in\x20cache\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedList(options,\x20result);\x0a\x20\x20\x20\x20\x20\x20console.log(`[Cache]\x20SET\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getList:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Membangun\x20WHERE\x20clause\x20dari\x20filter\x20object\x0a\x20\x20\x20*\x20@param\x20{Object}\x20filters\x20-\x20Object\x20filter\x20dengan\x20format\x20{column:\x20value}\x0a\x20\x20\x20*\x20@returns\x20{string}\x20WHERE\x20clause\x20SQL\x20atau\x20empty\x20string\x0a\x20\x20\x20*/\x0a\x20\x20buildObjectFilterClause(filters)\x20{\x0a\x20\x20\x20\x20if\x20(!filters\x20||\x20typeof\x20filters\x20!==\x20\x27object\x27\x20||\x20Object.keys(filters).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20conditions\x20=\x20[];\x0a\x0a\x20\x20\x20\x20for\x20(const\x20[column,\x20value]\x20of\x20Object.entries(filters))\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20kolom\x20harus\x20ada\x20dalam\x20validFields\x0a\x20\x20\x20\x20\x20\x20if\x20(this.validFields.includes(column)\x20&&\x20value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined\x20&&\x20value\x20!==\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Escape\x20value\x20untuk\x20mencegah\x20SQL\x20injection\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20escapedValue\x20=\x20value.toString().replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20conditions.push(`${column}\x20=\x20\x27${escapedValue}\x27`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20conditions.length\x20>\x200\x20?\x20conditions.join(\x27\x20AND\x20\x27)\x20:\x20\x27\x27;\x0a\x20\x20}\x0a\x0a'+_0xc0f13a+'\x0a\x0a'+_0x2b907c+'\x0a\x0a'+_0x32cec6+'\x0a\x0a'+_0x3ccd28+'\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20formatResponseData\x20untuk\x20'+_0x3464ac+_0xdc7820(0x17c)+_0x3464ac+_0xdc7820(0x2a7)+_0x3b050+_0xdc7820(0x157)+_generateValidateFieldConstraints()+'\x0a\x20\x20'+_0x36a04f[_0xdc7820(0x27b)](generateCompositeMethods,_0x5798e8)+generateDeleteMethod(_0x5798e8)+_0x36a04f['qlgyz'](generateRestoreMethod,_0x5798e8)+_0x36a04f['HXNnB'](generateSoftDeleteFkParentsCheck,_0x5798e8)+'\x0a}\x0a\x0a//\x20Export\x20singleton\x20instance\x0amodule.exports\x20=\x20new\x20'+_0x2992e2+'Model();';}function getEnabledActions(_0x63502e){const _0x243d60=a0_0x3079,_0x1f2b3d={'Fgbbj':'object'};if(!_0x63502e['action']||typeof _0x63502e['action']!==_0x1f2b3d['Fgbbj'])return[];return Object[_0x243d60(0x103)](_0x63502e[_0x243d60(0x2c4)])[_0x243d60(0x1af)](([,_0x290c87])=>_0x290c87)[_0x243d60(0x266)](([_0x133850])=>_0x133850);}function buildEndpointFunctions(_0x52b6fe,_0x1219af,_0x1edf54,_0x5a6e11,_0x7afd67,_0x461d21=null,_0x37d80c=![]){const _0x440ea2=a0_0x3079,_0x56c0c8={'kjMwF':function(_0x55bda1,_0x38bdad){return _0x55bda1(_0x38bdad);},'EJzei':function(_0x3a6a24,_0x4ce128,_0x76f33c,_0x362a09,_0x1755fe,_0xf1161){return _0x3a6a24(_0x4ce128,_0x76f33c,_0x362a09,_0x1755fe,_0xf1161);},'ZpUlW':function(_0x34130f,_0x2644f3,_0x3768a9,_0xff1a08,_0x490770,_0x33fa9b){return _0x34130f(_0x2644f3,_0x3768a9,_0xff1a08,_0x490770,_0x33fa9b);},'ULIJr':function(_0x140c0e,_0x46e053,_0x49fcd2,_0x491627,_0x2e5897){return _0x140c0e(_0x46e053,_0x49fcd2,_0x491627,_0x2e5897);},'DtxIB':function(_0x5ef409,_0x2b5da2,_0x56cf76,_0x80b441,_0x4c7345,_0x3545b1,_0xc45354){return _0x5ef409(_0x2b5da2,_0x56cf76,_0x80b441,_0x4c7345,_0x3545b1,_0xc45354);},'yVTSe':function(_0x4b42b7,_0xa4533e){return _0x4b42b7===_0xa4533e;}},_0x21aa65=_0x1edf54['action']||{},_0x3ecef4=_0x56c0c8['kjMwF'](getEnabledActions,_0x1edf54);let _0x3ef630='';if(!_0x461d21){const _0x517c1d=FileUtils['toCamelCase'](_0x1219af);_0x461d21=_0x517c1d+'Model';}return _0x21aa65['datatables']&&(_0x3ef630+=generateDatatablesFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65[_0x440ea2(0x251)]&&(_0x3ef630+=_0x56c0c8[_0x440ea2(0x1fe)](generateCreateFunction,_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21,_0x37d80c)),_0x21aa65[_0x440ea2(0x148)]&&(_0x3ef630+=_0x56c0c8[_0x440ea2(0x138)](generateUpdateFunction,_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21,_0x37d80c)),_0x21aa65[_0x440ea2(0x1aa)]&&(_0x3ef630+=generateAdjustFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65['aggregate']&&(_0x3ef630+=_0x56c0c8['ULIJr'](generateAggregateFunction,_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65[_0x440ea2(0x13f)]&&(_0x3ef630+=generateDeleteFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21,_0x37d80c)),_0x21aa65['restore']&&isSoftDeleteEnabled(_0x1edf54)&&(_0x3ef630+=generateRestoreFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65[_0x440ea2(0xdf)]&&(_0x3ef630+=_0x56c0c8['DtxIB'](generateFirstFunction,_0x52b6fe,_0x1219af,_0x1edf54,_0x5a6e11,_0x7afd67,_0x461d21)),_0x21aa65['lookup']&&(_0x3ef630+=generateLookupFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x5a6e11,_0x7afd67,_0x461d21)),_0x21aa65[_0x440ea2(0x207)]&&(_0x3ef630+=generateReadFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65['createComposite']&&(_0x3ef630+=generateCreateCompositeFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65['updateComposite']&&(_0x3ef630+=generateUpdateCompositeFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65['readComposite']&&(_0x3ef630+=_0x56c0c8[_0x440ea2(0x160)](generateReadCompositeFunction,_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x21aa65[_0x440ea2(0x1be)]&&(_0x3ef630+=generateWorkflowFunction(_0x52b6fe,_0x1219af,_0x1edf54,_0x461d21)),_0x56c0c8['yVTSe'](_0x3ecef4['length'],0x0)&&(_0x3ef630+='\x0a//\x20No\x20actions\x20enabled\x20for\x20this\x20endpoint\x0a//\x20Enable\x20actions\x20in\x20payload\x20to\x20generate\x20endpoints'),_0x3ef630;}function generateDatatablesFunction(_0xc6a4e0,_0x457dc1,_0x2f987c,_0x59d8a7=null){const _0x823ff4=a0_0x3079;if(!_0x59d8a7){const _0x537793=FileUtils['toCamelCase'](_0x457dc1);_0x59d8a7=_0x537793+_0x823ff4(0x19e);}return _0x823ff4(0x270)+_0xc6a4e0+'/'+_0x457dc1+_0x823ff4(0x145)+_0x457dc1+'/datatables:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Extract\x20parameters\x20dari\x20request\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20req.body.search?.value\x20||\x20req.body.searchValue\x20||\x20req.body.search_value\x20||\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20req.body.searchBy\x20||\x20req.body.search_by\x20||\x20\x27all\x27,\x0a\x20\x20\x20\x20\x20\x20perPage:\x20parseInt(req.body.length\x20||\x20req.body.pagination?.perpage\x20||\x2010,\x2010),\x0a\x20\x20\x20\x20\x20\x20start:\x20parseInt(req.body.start\x20||\x200,\x2010),\x0a\x20\x20\x20\x20\x20\x20draw:\x20req.body.draw\x20||\x20\x271\x27\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20sort_columns\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20options.sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Pass\x20format\x20DataTables\x20parameters\x20jika\x20ada\x20(fallback)\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][column]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][column]\x27]\x20=\x20req.body[\x27order[0][column]\x27];\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(req.body[\x27order[0][dir]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20options[\x27order[0][dir]\x27]\x20=\x20req.body[\x27order[0][dir]\x27];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20filter\x20dalam\x20format\x20filters\x20object\x0a\x20\x20\x20\x20if\x20(req.body.filters\x20&&\x20typeof\x20req.body.filters\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Filter\x20out\x20values\x20that\x20should\x20be\x20ignored\x20(\x22all\x22,\x20\x22-\x22,\x20\x22\x22,\x20null,\x20undefined)\x0a\x20\x20\x20\x20\x20\x20const\x20filteredFilters\x20=\x20{};\x0a\x20\x20\x20\x20\x20\x20Object.keys(req.body.filters).forEach(key\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20req.body.filters[key];\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ignore\x20filter\x20if\x20value\x20is\x20\x22all\x22,\x20\x22-\x22,\x20empty\x20string,\x20null,\x20or\x20undefined\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20\x22all\x22\x20&&\x20value\x20!==\x20\x22-\x22\x20&&\x20value\x20!==\x20\x22\x22\x20&&\x20value\x20!==\x20null\x20&&\x20value\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20filteredFilters[key]\x20=\x20value;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Only\x20set\x20filters\x20if\x20there\x20are\x20valid\x20filters\x20remaining\x0a\x20\x20\x20\x20\x20\x20if\x20(Object.keys(filteredFilters).length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.filters\x20=\x20filteredFilters;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Applied\x20filters\x20(ignoring\x20\x22all\x22,\x20\x22-\x22,\x20empty\x20values):\x27,\x20JSON.stringify(filteredFilters,\x20null,\x202));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27All\x20filters\x20ignored\x20due\x20to\x20\x22all\x22,\x20\x22-\x22,\x20or\x20empty\x20values\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x20(mendukung\x20format\x20array\x20legacy\x20dan\x20format\x20object\x20baru)\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20options.where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Applied\x20where\x20conditions:\x27,\x20JSON.stringify(req.body.where,\x20null,\x202));\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Invalid\x20where\x20format,\x20ignoring\x20where\x20parameter\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20parameters\x0a\x20\x20\x20\x20if\x20(options.perPage\x20>\x201000)\x20{\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x201000;\x20//\x20Limit\x20untuk\x20mencegah\x20overload\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(options.perPage\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x2010;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x59d8a7+'.getDatatables(options);\x0a\x0a\x20\x20\x20\x20//\x20Menambahkan\x20nomor\x20baris\x20untuk\x20DataTables\x20jika\x20diperlukan\x0a\x20\x20\x20\x20if\x20(result.data\x20&&\x20Array.isArray(result.data))\x20{\x0a\x20\x20\x20\x20\x20\x20result.data\x20=\x20result.data.map((item,\x20index)\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20...item,\x0a\x20\x20\x20\x20\x20\x20\x20\x20rownumerator:\x20options.start\x20+\x20index\x20+\x201\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Add\x20metadata\x20untuk\x20debugging\x20(development\x20only)\x0a\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20===\x20\x27development\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20result._metadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x457dc1+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20options:\x20options,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.json(result);\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0x457dc1+'\x20datatables:\x27,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x457dc1+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateCreateFunction(_0x475852,_0x20d03a,_0x536425,_0x3c6635=null,_0x5d4674=![]){const _0x4330e9=a0_0x3079,_0x566145={'WduSV':function(_0xb5cb64,_0x122f78){return _0xb5cb64(_0x122f78);}};if(!_0x3c6635){const _0xc20cac=FileUtils[_0x4330e9(0xe8)](_0x20d03a);_0x3c6635=_0xc20cac+_0x4330e9(0x19e);}const _0x12d695=_0x566145[_0x4330e9(0x12c)](isSoftDeleteEnabled,_0x536425)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON[_0x4330e9(0x163)](SOFT_DELETE_COLUMNS)+')\x20{\x0a\x20\x20\x20\x20\x20\x20delete\x20req.body[__sdCol];\x0a\x20\x20\x20\x20}':'',_0x1b5ec0=hasSoftDeleteFkParents(_0x536425)?_0x4330e9(0x1fb)+_0x3c6635+'.checkSoftDeleteFkParents(req.body,\x20\x27create\x27);\x0a':'',_0x4e95fb=hasSoftDeleteFkParents(_0x536425)?_0x4330e9(0x227):'',_0x22d197=_0x5d4674?'\x0a\x20\x20\x20\x20//\x20===\x20KAFKA\x20PUBLISH:\x20INSERT\x20EVENT\x20===\x0a\x20\x20\x20\x20//\x20Check\x20both\x20runtime\x20env\x20(KAFKA_ENABLED)\x20and\x20payload\x20config\x0a\x20\x20\x20\x20const\x20kafkaRuntimeEnabled\x20=\x20process.env.KAFKA_ENABLED\x20===\x20\x27true\x27;\x0a\x20\x20\x20\x20if\x20(kafkaRuntimeEnabled\x20&&\x20kafkaService\x20&&\x20kafkaConfig\x20&&\x20kafkaConfig.enabled\x20&&\x20kafkaConfig.publishOn\x20&&\x20kafkaConfig.publishOn.insert)\x20{\x0a\x20\x20\x20\x20\x20\x20kafkaService.publishInsert(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x475852+_0x4330e9(0x268)+_0x20d03a+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0x536425['primaryKey']||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x536425['tableName']+_0x4330e9(0x240):'',_0x32b429=_0x5d4674?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':_0x4330e9(0x25f);return'\x0a//\x20POST\x20/api/'+_0x475852+'/'+_0x20d03a+_0x4330e9(0x1ca)+_0x20d03a+_0x4330e9(0x29c)+_0x20d03a+_0x4330e9(0x1f9)+_0x32b429+_0x4330e9(0x13b)+_0x3c6635+_0x4330e9(0x25d)+_0x3c6635+_0x4330e9(0x142)+_0x12d695+'\x0a'+_0x1b5ec0+_0x4330e9(0x105)+_0x536425['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x3c6635+'.addData(req.body,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20INSERT\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20mode\x20lama\x20tanpa\x20events\x20(tetap\x20propagasi\x20requestId\x20untuk\x20Live\x20Sync)\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x3c6635+'.addData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20INSERT\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20INSERT\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x20d03a+_0x4330e9(0x199)+(_0x536425[_0x4330e9(0x16d)]||'id')+'\x20||\x20\x27new\x20record\x27}`);\x0a'+_0x22d197+_0x4330e9(0x128)+_0x20d03a+_0x4330e9(0x253)+_0x20d03a+':\x27,\x20error);\x0a'+_0x4e95fb+'\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20error\x20types\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x20//\x20PostgreSQL\x20unique\x20violation\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723503\x27)\x20{\x20//\x20PostgreSQL\x20foreign\x20key\x20violation\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Referenced\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20adding\x20'+_0x20d03a+_0x4330e9(0x1e8);}function generateUpdateFunction(_0x111bdd,_0x508e6f,_0x1e5bd6,_0x33a80e=null,_0x186571=![]){const _0x599abf=a0_0x3079,_0xbb4b0e={'Brblj':function(_0x514788,_0x241941){return _0x514788(_0x241941);}};if(!_0x33a80e){const _0x6f128c=FileUtils['toCamelCase'](_0x508e6f);_0x33a80e=_0x6f128c+'Model';}const _0x1ae4d7=_0x1e5bd6['fieldPolicy']?',\x20'+JSON['stringify'](_0x1e5bd6[_0x599abf(0x1f2)]):'',_0x2f2075=_0x1e5bd6[_0x599abf(0x2ab)]?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x33a80e+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x508e6f+_0x599abf(0x18c):'',_0x8b92a0=softDeleteVisibilityFilter(_0x1e5bd6),_0x11996e=_0x8b92a0!==null?_0x599abf(0x2be)+_0x33a80e+_0x599abf(0x120)+IS_DELETED_COLUMN+_0x599abf(0x17d)+_0x8b92a0+'\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!__sdCheck.success\x20||\x20!__sdCheck.data\x20||\x20__sdCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x508e6f+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}':'',_0x132eb3=_0xbb4b0e[_0x599abf(0x235)](isSoftDeleteEnabled,_0x1e5bd6)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+_0x599abf(0x1db):'',_0x5f059f=_0xbb4b0e['Brblj'](hasSoftDeleteFkParents,_0x1e5bd6)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20cek\x20parent\x20aktif\x20hanya\x20untuk\x20kolom\x20FK\x20yang\x20disertakan\x20body\x20(pre-check\x20422).\x0a\x20\x20\x20\x20await\x20'+_0x33a80e+_0x599abf(0x121):'',_0x425f30=hasSoftDeleteFkParents(_0x1e5bd6)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20terhapus/absen\x20→\x20422\x20(shape\x20selaras\x20FK\x20restore\x20R20).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'',_0x3dab87=_0x186571?_0x599abf(0x1e4)+_0x111bdd+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x508e6f+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0x1e5bd6[_0x599abf(0x16d)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x1e5bd6['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0xceb830=_0x186571?_0x599abf(0x17b):_0x599abf(0x25f);return'\x0a//\x20POST\x20/api/'+_0x111bdd+'/'+_0x508e6f+'/update\x20-\x20Mengupdate\x20data\x20'+_0x508e6f+'\x0arouter.post(\x27/update\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x508e6f+_0x599abf(0x272)+_0xceb830+'\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x1e5bd6[_0x599abf(0x16d)]||'id')+_0x599abf(0x2db)+_0x2f2075+_0x11996e+_0x599abf(0x125)+_0x33a80e+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x33a80e+_0x599abf(0x1c4)+_0x132eb3+'\x0a'+_0x5f059f+_0x599abf(0x1b3)+_0x1e5bd6['tableName']+_0x599abf(0x2df)+_0x33a80e+'.updateData(req.body,\x20eventContext'+_0x1ae4d7+_0x599abf(0x183)+_0x33a80e+'.updateData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20}'+_0x1ae4d7+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20UPDATE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x508e6f+_0x599abf(0x21f)+_0x3dab87+'\x0a\x20\x20\x20\x20//\x20Kirim\x20response\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x508e6f+_0x599abf(0x2b7)+_0x508e6f+':\x27,\x20error);\x0a'+_0x425f30+'\x0a\x20\x20\x20\x20//\x20Handle\x20khusus\x20untuk\x20error\x20\x22Data\x20tidak\x20ditemukan\x22\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x508e6f+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x20//\x20PostgreSQL\x20unique\x20violation\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20updating\x20'+_0x508e6f+_0x599abf(0x1e8);}function generateAdjustFunction(_0x4ad062,_0x2a8471,_0x42b280,_0x4246f8=null){const _0x109a7b=a0_0x3079;if(!_0x4246f8){const _0x2f546c=FileUtils['toCamelCase'](_0x2a8471);_0x4246f8=_0x2f546c+'Model';}const _0x198c0b=_0x42b280[_0x109a7b(0x26a)]?JSON[_0x109a7b(0x163)](_0x42b280['adjustConfig']):'{}',_0x20fdcf=_0x42b280[_0x109a7b(0x1f2)]?',\x20'+JSON['stringify'](_0x42b280[_0x109a7b(0x1f2)]):'',_0x548be3=_0x42b280['fieldPolicy']?_0x109a7b(0x252)+JSON[_0x109a7b(0x163)](_0x42b280[_0x109a7b(0x1f2)]):'',_0x5f2144=_0x42b280['requestScope']?_0x109a7b(0x217)+_0x4246f8+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x2a8471+_0x109a7b(0x18c):'';return'\x0a//\x20POST\x20/api/'+_0x4ad062+'/'+_0x2a8471+_0x109a7b(0x247)+_0x2a8471+'\x20(atomic\x20increment/decrement)\x0arouter.post(\x27/adjust\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x42b280[_0x109a7b(0x16d)]||'id')+_0x109a7b(0x2b5)+_0x5f2144+_0x109a7b(0x1c0)+_0x198c0b+';\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x42b280['tableName']+_0x109a7b(0x2df)+_0x4246f8+'.adjustData(req.body,\x20adjustConfig,\x20eventContext'+_0x20fdcf+_0x109a7b(0x261)+_0x4246f8+_0x109a7b(0x1ef)+_0x548be3+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20ADJUST\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x2a8471+_0x109a7b(0x113)+_0x2a8471+_0x109a7b(0x222)+_0x2a8471+_0x109a7b(0x175)+_0x2a8471+_0x109a7b(0x288)+_0x2a8471+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateAggregateFunction(_0x28933b,_0x3368a5,_0x387ebf,_0x532bfb=null){const _0x496f1c=a0_0x3079;if(!_0x532bfb){const _0x3ecb1f=FileUtils[_0x496f1c(0xe8)](_0x3368a5);_0x532bfb=_0x3ecb1f+_0x496f1c(0x19e);}const _0x485317=_0x387ebf['aggregateConfig']?JSON['stringify'](_0x387ebf[_0x496f1c(0x27c)]):'{}';return'\x0a//\x20POST\x20/api/'+_0x28933b+'/'+_0x3368a5+_0x496f1c(0x1c8)+_0x485317+';\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x532bfb+_0x496f1c(0xef)+_0x3368a5+_0x496f1c(0x1ab)+_0x3368a5+_0x496f1c(0x1e8);}function hasSoftDeleteFkRestrictChildren(_0x702db3){const _0x5d8414=a0_0x3079;return Array[_0x5d8414(0x131)](_0x702db3[_0x5d8414(0x196)])&&_0x702db3['softDeleteFkChildren'][_0x5d8414(0x114)](_0x49572c=>_0x49572c&&_0x49572c['onDelete']==='restrict');}function hasCascadeChildren(_0x1d2eb9){const _0x39d5a8=a0_0x3079,_0xf8dedc={'kEeiT':function(_0x5be08c,_0x56f2fe){return _0x5be08c===_0x56f2fe;}},_0x5ce134=_0x1d2eb9&&_0x1d2eb9['softDeleteCascadeTree'];return!!(_0x5ce134&&typeof _0x5ce134===_0x39d5a8(0x2a4)&&_0xf8dedc[_0x39d5a8(0x215)](typeof _0x5ce134[_0x39d5a8(0x2d2)],_0x39d5a8(0x155))&&_0x5ce134['master']&&_0x5ce134['nodes']&&typeof _0x5ce134['nodes']===_0x39d5a8(0x2a4)&&_0x5ce134[_0x39d5a8(0x170)][_0x5ce134[_0x39d5a8(0x2d2)]]);}function generateDeleteFunction(_0x4ed2b2,_0x480cc6,_0x42d929,_0x975c68=null,_0x26975e=![]){const _0x2c394f=a0_0x3079,_0x25357d={'VzQvH':function(_0x330224,_0x4b46e4){return _0x330224(_0x4b46e4);}};if(!_0x975c68){const _0x48034c=FileUtils['toCamelCase'](_0x480cc6);_0x975c68=_0x48034c+'Model';}const _0x46181e=_0x26975e?'\x0a\x20\x20\x20\x20//\x20===\x20KAFKA\x20PUBLISH:\x20DELETE\x20EVENT\x20===\x0a\x20\x20\x20\x20//\x20Check\x20both\x20runtime\x20env\x20(KAFKA_ENABLED)\x20and\x20payload\x20config\x0a\x20\x20\x20\x20const\x20kafkaRuntimeEnabledDelete\x20=\x20process.env.KAFKA_ENABLED\x20===\x20\x27true\x27;\x0a\x20\x20\x20\x20if\x20(kafkaRuntimeEnabledDelete\x20&&\x20kafkaService\x20&&\x20kafkaConfig\x20&&\x20kafkaConfig.enabled\x20&&\x20kafkaConfig.publishOn\x20&&\x20kafkaConfig.publishOn.delete)\x20{\x0a\x20\x20\x20\x20\x20\x20kafkaService.publishDelete(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x4ed2b2+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x480cc6+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0x42d929['primaryKey']||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x42d929[_0x2c394f(0x152)]+_0x2c394f(0x240):'',_0x5973cf=_0x26975e?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':_0x2c394f(0x25f);return _0x2c394f(0x270)+_0x4ed2b2+'/'+_0x480cc6+_0x2c394f(0x2bb)+_0x480cc6+_0x2c394f(0x1f3)+_0x480cc6+'/delete:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20request\x20body\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x5973cf+'\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20===\x20EVENT\x20LIFECYCLE:\x20onBefore\x20DELETE\x20===\x0a\x20\x20\x20\x20let\x20oldData\x20=\x20null;\x0a\x20\x20\x20\x20let\x20newData\x20=\x20null;\x0a\x20\x20\x20\x20const\x20requestData\x20=\x20req.body;\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20Cek\x20apakah\x20data\x20exist\x20sebelum\x20delete\x20dan\x20ambil\x20old\x20data\x20untuk\x20event\x20lifecycle\x0a\x20\x20\x20\x20//\x20Menggunakan\x20SELECT\x20*\x20dari\x20tabel\x20utama\x20(tanpa\x20explicit\x20select)\x20karena\x20fieldName\x0a\x20\x20\x20\x20//\x20bisa\x20mengandung\x20kolom\x20dari\x20JOIN\x20(mis.\x20city_name)\x20yang\x20tidak\x20ada\x20di\x20tabel\x20utama\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20firstCondition\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existingData\x20=\x20await\x20'+_0x975c68+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[{\x20key:\x20firstCondition.key,\x20value:\x20firstCondition.value\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!existingData.success\x20||\x20!existingData.data\x20||\x20existingData.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x480cc6+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Simpan\x20data\x20untuk\x20event\x20lifecycle\x20dan\x20debug\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData\x20=\x20existingData.data[0];\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(checkError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Verification\x20Failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Could\x20not\x20verify\x20data\x20existence\x20before\x20delete\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20checkError.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x42d929[_0x2c394f(0x152)]+_0x2c394f(0x2df)+_0x975c68+_0x2c394f(0x22e)+_0x975c68+'.deleteData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20DELETE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20DELETE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x480cc6+'\x20data\x20deleted\x20successfully`);\x0a'+_0x46181e+_0x2c394f(0x197)+_0x480cc6+_0x2c394f(0x21a)+(_0x42d929[_0x2c394f(0x236)]?.[_0x2c394f(0x22f)]?_0x2c394f(0xe1)+_0x480cc6+_0x2c394f(0x24a):'')+(hasSoftDeleteFkRestrictChildren(_0x42d929)||_0x25357d[_0x2c394f(0x25c)](hasCascadeChildren,_0x42d929)?'\x0a\x20\x20\x20\x20//\x20FK-SD-2\x20(restrict):\x20override\x20deleteData\x20melempar\x20statusCode\x20409\x20bila\x20master\x20masih\x0a\x20\x20\x20\x20//\x20direferensikan\x20anak\x20aktif\x20(anak\x20soft-delete)\x20atau\x20anak\x20apa\x20pun\x20(anak\x20non-soft-delete).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20409)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Conflict\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'')+_0x2c394f(0x297)+_0x480cc6+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateRestoreFunction(_0x2a58c6,_0x9d969f,_0x26020d,_0x85ea48=null){const _0x5e020e=a0_0x3079;if(!_0x85ea48){const _0x2cc1be=FileUtils['toCamelCase'](_0x9d969f);_0x85ea48=_0x2cc1be+'Model';}return'\x0a//\x20POST\x20/api/'+_0x2a58c6+'/'+_0x9d969f+_0x5e020e(0x1f4)+_0x9d969f+_0x5e020e(0x2a8)+_0x26020d['tableName']+_0x5e020e(0x190)+_0x85ea48+'.restoreData(req.body,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x9d969f+'\x20data\x20restored\x20successfully`);\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20me-restore\x20data\x20'+_0x9d969f+_0x5e020e(0x159)+_0x9d969f+'\x20data\x20not\x20found\x20or\x20not\x20deleted\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20409)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Conflict\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20//\x20Backstop\x20konflik:\x20UNIQUE\x20violation\x20saat\x20UPDATE\x20(race\x20konkuren)\x20→\x20409.\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Conflict\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Cannot\x20restore:\x20the\x20reusable\x20code\x20is\x20already\x20in\x20use\x20by\x20an\x20active\x20record\x20(unique\x20constraint)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20restoring\x20'+_0x9d969f+_0x5e020e(0x1e8);}function generateFirstFunction(_0x4f8c6b,_0x1371c6,_0x37c9f5,_0x40b8e0,_0x147285,_0x5a964d=null){const _0x3b280b=a0_0x3079,_0xc2b6c6={'YDYji':function(_0x5012ef,_0x36285b){return _0x5012ef!==_0x36285b;},'qkjkU':function(_0x513966,_0x5b7e43){return _0x513966!==_0x5b7e43;}};if(!_0x5a964d){const _0x4921c7=FileUtils[_0x3b280b(0xe8)](_0x1371c6);_0x5a964d=_0x4921c7+'Model';}const _0x10fa96=_0x37c9f5[_0x3b280b(0x1a6)]||{},_0x49feda=_0x10fa96[_0x3b280b(0x239)]||_0x37c9f5[_0x3b280b(0x1cb)]||[],_0x5cde6d=_0x37c9f5['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope\x20&&\x20result.data\x20&&\x20result.data.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20record\x20=\x20result.data[0];\x0a\x20\x20\x20\x20\x20\x20if\x20(record[req._requestScope.column]\x20!==\x20undefined\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20String(record[req._requestScope.column])\x20!==\x20String(req._requestScope.value))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x1371c6+_0x3b280b(0x224):'',_0x18f8e7=softDeleteVisibilityFilter(_0x37c9f5),_0x2439a8=_0xc2b6c6['YDYji'](_0x18f8e7,null)?'\x0a\x20\x20\x20\x20getPayload.where.push({\x20key:\x20\x27'+IS_DELETED_COLUMN+_0x3b280b(0x17d)+_0x18f8e7+'\x20});':'',_0x33a89d=_0xc2b6c6[_0x3b280b(0x24b)](_0x18f8e7,null)?_0x3b280b(0x237)+_0x1371c6+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}':'';return'\x0a//\x20POST\x20/api/'+_0x4f8c6b+'/'+_0x1371c6+_0x3b280b(0x13c)+_0x1371c6+'\x20berdasarkan\x20kriteria\x0arouter.post(\x27/first\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x1371c6+_0x3b280b(0x2a3)+(_0x37c9f5['primaryKey']||'id')+_0x3b280b(0xe3)+(_0x37c9f5['primaryKey']||'id')+_0x3b280b(0x1f5)+JSON['stringify'](_0x49feda)+';\x0a\x20\x20\x20\x20if\x20(!validFields.includes(req.body.where.key))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${req.body.where.key}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20select\x20fields\x20jika\x20ada\x0a\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20req.body.select.filter(field\x20=>\x20!validFields.includes(field));\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Convert\x20ke\x20array\x20format\x20untuk\x20kompatibilitas\x20dengan\x20model.getData()\x20->\x20buildComplexWhereClause()\x0a\x20\x20\x20\x20const\x20getPayload\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20where:\x20[{\x20key:\x20req.body.where.key,\x20value:\x20req.body.where.value\x20}],\x0a\x20\x20\x20\x20\x20\x20select:\x20req.body.select\x0a\x20\x20\x20\x20};'+_0x2439a8+'\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x5a964d+'.getData(getPayload);'+_0x33a89d+'\x0a'+_0x5cde6d+'\x0a\x20\x20\x20\x20//\x20Add\x20metadata\x20untuk\x20debugging\x20(development\x20only)\x0a\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20===\x20\x27development\x27\x20&&\x20result.success)\x20{\x0a\x20\x20\x20\x20\x20\x20result._metadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x1371c6+_0x3b280b(0x22b)+_0x1371c6+_0x3b280b(0x10e)+_0x1371c6+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateLookupFunction(_0x58746b,_0x115e96,_0x6e74d4,_0x1f8f02,_0x1106a6,_0x312b7a=null){const _0x1962f7=a0_0x3079,_0x173975={'TyqBX':_0x1962f7(0x139),'YyQZM':_0x1962f7(0x1eb)};if(!_0x312b7a){const _0x4be5d4=FileUtils['toCamelCase'](_0x115e96);_0x312b7a=_0x4be5d4+'Model';}const _0xfcdaa4=_0x6e74d4[_0x1962f7(0x2dd)]||null,_0x367794=_0x6e74d4[_0x1962f7(0x1a6)]||{},_0x2c9cff=_0x367794['readableFields']||_0x6e74d4[_0x1962f7(0x1cb)]||[];return _0x1962f7(0x2aa)+_0x58746b+'/'+_0x115e96+'/lookup\x20-\x20Pencarian\x20'+_0x115e96+'\x20untuk\x20dropdown\x20(dynamic)\x0arouter.get(\x27/lookup\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20X-Request-Mode\x20header\x0a\x20\x20\x20\x20const\x20requestMode\x20=\x20req.headers[\x27x-request-mode\x27];\x0a\x20\x20\x20\x20console.log(`X-Request-Mode\x20header:\x20${requestMode}`);\x0a\x0a\x20\x20\x20\x20if\x20(requestMode\x20!==\x20\x27dynamic\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20Request\x20Mode\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27X-Request-Mode\x20header\x20must\x20be\x20set\x20to\x20dynamic\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20\x27Contoh\x20penggunaan:\x20Tambahkan\x20header\x20X-Request-Mode:\x20dynamic\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Ambil\x20parameter\x20search\x20(default\x20case-insensitive)\x0a\x20\x20\x20\x20let\x20search\x20=\x20req.query.search\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20if\x20(Array.isArray(search))\x20{\x0a\x20\x20\x20\x20\x20\x20search\x20=\x20search[0]\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Ambil\x20parameter\x20tambahan\x20untuk\x20filtering\x0a\x20\x20\x20\x20const\x20companyId\x20=\x20req.query.company_id\x20||\x20req.query.companyId;\x0a\x20\x20\x20\x20const\x20extraFilters\x20=\x20{};\x0a\x0a\x20\x20\x20\x20//\x20Collect\x20additional\x20filter\x20parameters\x0a\x20\x20\x20\x20if\x20(companyId)\x20{\x0a\x20\x20\x20\x20\x20\x20extraFilters.company_id\x20=\x20companyId;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20search\x20parameter\x0a\x20\x20\x20\x20if\x20(search.length\x20>\x20100)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20search\x20parameter\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Search\x20parameter\x20is\x20too\x20long\x20(max\x20100\x20characters)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x115e96+_0x1962f7(0x1a8)+_0x312b7a+_0x1962f7(0x210)+_0x115e96+'\x20lookup:\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20looking\x20up\x20'+_0x115e96+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a//\x20POST\x20/api/'+_0x58746b+'/'+_0x115e96+'/lookup\x20-\x20Mendapatkan\x20data\x20'+_0x115e96+'\x20untuk\x20lookup\x20dengan\x20filtering\x0arouter.post(\x27/lookup\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20X-Request-Mode\x20header\x0a\x20\x20\x20\x20const\x20requestMode\x20=\x20req.headers[\x27x-request-mode\x27];\x0a\x20\x20\x20\x20console.log(`X-Request-Mode\x20header\x20for\x20POST\x20lookup:\x20${requestMode}`);\x0a\x0a\x20\x20\x20\x20if\x20(requestMode\x20!==\x20\x27static\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20Request\x20Mode\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27X-Request-Mode\x20header\x20must\x20be\x20set\x20to\x20static\x20for\x20POST\x20method\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20\x27Contoh\x20penggunaan:\x20Tambahkan\x20header\x20X-Request-Mode:\x20static\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Support\x20untuk\x20fieldNameLookup\x20config\x0a\x20\x20\x20\x20\x20\x20const\x20lookupConfig\x20=\x20'+JSON['stringify'](_0xfcdaa4)+_0x1962f7(0x1b8)+_0x1106a6+_0x1962f7(0x12f)+(_0x1f8f02[_0x1962f7(0x281)]?_0x1f8f02['all']['find'](_0x41a31f=>_0x41a31f!=='id')||_0x173975['TyqBX']:'code')+_0x1962f7(0x10b)+_0x1106a6+'||\x27\x20-\x20\x27||code\x20as\x20display_text\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_custom_lookup:\x20lookupConfig\x20?\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22company_id\x22,\x20\x22value\x22:\x20\x22your-company-id\x22\x20}],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[lookupConfig.idField,\x20lookupConfig.textField],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22note\x22:\x20\x22Using\x20fieldNameLookup\x20configuration\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20:\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_advanced:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22logic\x22:\x20\x22OR\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22conditions\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+_0x1106a6+_0x1962f7(0x2bc)+_0x1106a6+_0x1962f7(0x258)+(_0x1f8f02['textFields']?_0x1f8f02['textFields'][_0x1962f7(0x29d)](0x0,0x4)['join']('\x22,\x20\x22'):_0x6e74d4[_0x1962f7(0x1cb)]['slice'](0x0,0x4)['join']('\x22,\x20\x22'))+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_with_ordering:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+_0x1106a6+_0x1962f7(0x228)+(_0x6e74d4[_0x1962f7(0x1cb)][0x1]||_0x1106a6)+_0x1962f7(0xfc)+_0x1106a6+'\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22direction\x22:\x20\x22ASC\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x115e96+_0x1962f7(0xfe)+(_0x1f8f02['all']?_0x1f8f02[_0x1962f7(0x281)]['find'](_0x268dac=>_0x268dac!=='id')||_0x173975['TyqBX']:_0x173975['TyqBX'])+'\x22,\x20\x22value\x22:\x20\x22AP2506-01\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+_0x1106a6+_0x1962f7(0x2c1)+_0x1106a6+_0x1962f7(0x1e1)+_0x1106a6+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%system%\x22,\x20\x22sensitive\x22:\x20false\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+(_0x1f8f02[_0x1962f7(0x1bc)]?_0x1f8f02[_0x1962f7(0x1bc)]['slice'](0x0,0x4)['join'](_0x173975[_0x1962f7(0x1d6)]):_0x6e74d4['fieldName']['slice'](0x0,0x4)[_0x1962f7(0x10f)]('\x22,\x20\x22'))+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20select\x20fields\x20jika\x20ada\x20(support\x20SQL\x20expressions)\x0a\x20\x20\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON[_0x1962f7(0x163)](_0x2c9cff)+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20setiap\x20field\x20dalam\x20select\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20req.body.select)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20untuk\x20field\x20\x27id\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(field.toLowerCase()\x20===\x20\x27id\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20jika\x20ada\x20SQL\x20expression\x20dengan\x20AS\x20(alias)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/\x5cs+as\x5cs+\x5cw+$/i.test(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20jika\x20ada\x20SQL\x20operators/functions\x20(||,\x20CONCAT,\x20dll)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/\x5c|\x5c||CONCAT|COALESCE|CASE|WHEN/i.test(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validasi\x20normal\x20field\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!validFields.includes(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20invalidFields.push(field);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sqlExpressionNote:\x20\x27SQL\x20expressions\x20dengan\x20operator\x20||\x20atau\x20AS\x20alias\x20diperbolehkan\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20method\x20getLookupDataWithFilter\x0a\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x312b7a+_0x1962f7(0x2d1)+_0x115e96+_0x1962f7(0x1a4)+_0x312b7a+_0x1962f7(0x26c)+_0x312b7a+'.getStaticLookupData(selectedTag);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Static\x20lookup\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectedTag:\x20selectedTag,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20in\x20'+_0x115e96+'\x20static\x20lookup:\x27,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x115e96+_0x1962f7(0x1e8);}function generateReadFunction(_0x37d7bc,_0x1bfbf0,_0x54eb2b,_0x27b7a2=null){const _0x2033f7=a0_0x3079;if(!_0x27b7a2){const _0xcbe176=FileUtils[_0x2033f7(0xe8)](_0x1bfbf0);_0x27b7a2=_0xcbe176+'Model';}const _0x291b40=_0x54eb2b['_fieldProjections']||{},_0x336676=_0x291b40[_0x2033f7(0x239)]||_0x54eb2b['fieldName']||[];return'\x0a//\x20POST\x20/api/'+_0x37d7bc+'/'+_0x1bfbf0+_0x2033f7(0x1a7)+_0x1bfbf0+_0x2033f7(0x172)+(_0x54eb2b[_0x2033f7(0x16d)]||_0x54eb2b['fieldName'][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Parse\x20sort_columns\x0a\x20\x20\x20\x20let\x20sort_columns\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20let\x20where\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20select\x20untuk\x20kolom\x20selektif\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON[_0x2033f7(0x163)](_0x336676)+';\x0a\x20\x20\x20\x20let\x20select\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20req.body.select.filter(field\x20=>\x20!validFields.includes(field));\x0a\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20select\x20=\x20req.body.select;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20parameter\x20paginasi\x20(hanya\x20jika\x20mode\x20paginasi)\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(page\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20page:\x20[\x27Page\x20must\x20be\x20greater\x20than\x200\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(perPage\x20<\x201\x20||\x20perPage\x20>\x20100)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20per_page:\x20[\x27Per\x20page\x20must\x20be\x20between\x201\x20and\x20100\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(searchValue.length\x20>\x20255)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search_value:\x20[\x27Search\x20value\x20must\x20not\x20exceed\x20255\x20characters\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20kolom\x20searching\x0a\x20\x20\x20\x20if\x20(!validFields.includes(searchBy))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search_by:\x20[process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20`Invalid\x20search\x20field.\x20Valid\x20fields:\x20${validFields.join(\x27,\x20\x27)}`\x20:\x20\x27Invalid\x20search\x20field\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20options\x20untuk\x20model\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20searchValue,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20searchBy,\x0a\x20\x20\x20\x20\x20\x20sort_columns:\x20sort_columns,\x0a\x20\x20\x20\x20\x20\x20where:\x20where,\x0a\x20\x20\x20\x20\x20\x20select:\x20select\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20options.page\x20=\x20page;\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x20perPage;\x0a\x20\x20\x20\x20\x20\x20options.offset\x20=\x20(page\x20-\x201)\x20*\x20perPage;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20options.limit\x20=\x20limit;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x20list\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x27b7a2+_0x2033f7(0x11d)+_0x1bfbf0+_0x2033f7(0x1b5)+_0x1bfbf0+_0x2033f7(0x211);}function generateCreateCompositeFunction(_0x34e23d,_0x580571,_0x5d2a5d,_0x491326=null){const _0x4ce644=a0_0x3079,_0x9a0db4={'tKvGg':'items','AiivU':'unit_price','bdzkQ':'//\x20WARNING:\x20headerCalculations.total_amount\x20skipped\x20—\x20no\x20qty\x20field\x20configured\x20(set\x20autoCalculateFields.total_amount.formula\x20or\x20headerCalculations.total_qty.source)','xJEXj':_0x4ce644(0x282)};if(!_0x491326){const _0x1dcc63=FileUtils['toCamelCase'](_0x580571);_0x491326=_0x1dcc63+'Model';}const _0x128e9c=_0x5d2a5d['masterDetail']&&_0x5d2a5d['masterDetail'][_0x4ce644(0x22f)],_0x5f202a=_0x128e9c?_0x5d2a5d[_0x4ce644(0x14d)]['detailTable']:null,_0x44edbb=_0x5f202a?_0x5f202a['split']('.')[_0x4ce644(0x2b6)]():_0x9a0db4[_0x4ce644(0xff)],_0x599c6d=_0x580571['replace'](/-/g,'_'),_0x3c8a53=_0x5d2a5d[_0x4ce644(0x14d)]?.[_0x4ce644(0x11b)]?.['autoCalculateFields']?.[_0x4ce644(0xfb)]?.['formula']||'',_0x2474b3=_0x3c8a53['split']('*')['map'](_0xe441f=>_0xe441f['trim']()),_0xad5133=_0x5d2a5d[_0x4ce644(0x14d)]?.['headerCalculations']?.[_0x4ce644(0x276)]?.[_0x4ce644(0x13a)]?.[_0x4ce644(0x200)]('items.','')||'',_0x140463=_0x2474b3[0x0]||_0xad5133,_0x1366fe=_0x2474b3[0x1]||_0x9a0db4['AiivU'];return'\x0a//\x20POST\x20/api/'+_0x34e23d+'/'+_0x580571+_0x4ce644(0x140)+(_0x128e9c?'(master-detail\x20transaction)':'')+'\x0arouter.post(\x27/create-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x580571+_0x4ce644(0xf3)+_0x599c6d+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20must\x20have\x20property\x20\x22'+_0x599c6d+_0x4ce644(0x166)+(_0x128e9c?_0x4ce644(0x22a)+_0x599c6d+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x44edbb+_0x4ce644(0x15a):'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x599c6d+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}')+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20req.body.'+_0x599c6d+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x491326+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20saja\x20(exclude\x20detail\x20array)\x20untuk\x20validation\x0a\x20\x20\x20\x20\x20\x20const\x20headerDataForValidation\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20'+(_0x128e9c?_0x4ce644(0x19c)+_0x44edbb+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x491326+_0x4ce644(0x1ce)+(_0x128e9c?_0x4ce644(0x2a9)+_0x44edbb+_0x4ce644(0x21d)+_0x44edbb+_0x4ce644(0x1a2)+_0x44edbb+_0x4ce644(0x147)+_0x44edbb+_0x4ce644(0x15b)+(_0x5d2a5d[_0x4ce644(0x14d)]['headerCalculations']?_0x4ce644(0x294)+JSON[_0x4ce644(0x163)](_0x5d2a5d[_0x4ce644(0x14d)]['headerCalculations'])+_0x4ce644(0x259)+_0x44edbb+_0x4ce644(0x241)+_0x44edbb+'.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'+(_0x140463?'if\x20(headerCalc.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Calculate\x20total_amount\x20as\x20sum\x20of\x20('+_0x140463+'\x20*\x20'+_0x1366fe+')\x20from\x20all\x20items\x0a\x20\x20\x20\x20\x20\x20data.total_amount\x20=\x20data.'+_0x44edbb+'.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x140463+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20price\x20=\x20Number(item.'+_0x1366fe+_0x4ce644(0x135):_0x9a0db4['bdzkQ'])+_0x4ce644(0x158):'')+_0x4ce644(0x274):'')+_0x4ce644(0x1e9)+_0x5d2a5d[_0x4ce644(0x152)]+_0x4ce644(0x1d7)+_0x5f202a+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x128e9c?_0x5d2a5d[_0x4ce644(0x14d)][_0x4ce644(0x1df)]:'')+_0x4ce644(0xfa)+_0x491326+_0x4ce644(0x1a0)+_0x580571+'\x20composite\x20create\x20successful`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(201).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x580571+_0x4ce644(0x1dc)+(_0x128e9c?_0x9a0db4[_0x4ce644(0x257)]:'')+_0x4ce644(0x18f)+_0x580571+_0x4ce644(0xe5)+_0x580571+_0x4ce644(0x1e8);}function generateUpdateCompositeFunction(_0x2113fe,_0x377b36,_0x27f3de,_0x3603e5=null){const _0x592415=a0_0x3079,_0x3b4e45={'mWWFA':_0x592415(0x124)};if(!_0x3603e5){const _0x37d753=FileUtils[_0x592415(0xe8)](_0x377b36);_0x3603e5=_0x37d753+_0x592415(0x19e);}const _0xd5f29d=_0x27f3de[_0x592415(0x14d)]&&_0x27f3de['masterDetail'][_0x592415(0x22f)],_0x527c60=_0xd5f29d?_0x27f3de['masterDetail']['detailTable']:null,_0x1f0434=_0x527c60?_0x527c60['split']('.')['pop']():'items',_0x5dd0be=_0x377b36[_0x592415(0x200)](/-/g,'_'),_0x231f9d=_0x27f3de['primaryKey']||'id',_0x41c37b=_0x27f3de[_0x592415(0x2ab)]?_0x592415(0x14c)+_0x3603e5+_0x592415(0xde)+_0x231f9d+_0x592415(0x293)+_0x231f9d+'\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Master\x20record\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'';return'\x0a//\x20POST\x20/api/'+_0x2113fe+'/'+_0x377b36+_0x592415(0x2bd)+(_0xd5f29d?_0x3b4e45[_0x592415(0x23e)]:'')+'\x0arouter.post(\x27/update-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x377b36+'/update-composite:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x20structure\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20!req.body.'+_0x5dd0be+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20must\x20have\x20property\x20\x22'+_0x5dd0be+_0x592415(0x166)+(_0xd5f29d?'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x5dd0be+_0x592415(0xf9)+_0x231f9d+_0x592415(0x2ce)+_0x1f0434+_0x592415(0x15a):'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x5dd0be+_0x592415(0xf9)+_0x231f9d+_0x592415(0x285))+_0x592415(0x1bb)+_0x5dd0be+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20if\x20(!data.'+_0x231f9d+_0x592415(0x123)+_0x231f9d+')\x20is\x20required\x20for\x20update\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x41c37b+'\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x3603e5+_0x592415(0x201)+(_0xd5f29d?'delete\x20headerDataForValidation.'+_0x1f0434+';':'')+_0x592415(0x14b)+_0x3603e5+_0x592415(0x234)+(_0xd5f29d?_0x592415(0x1cd)+_0x1f0434+_0x592415(0x24d)+_0x1f0434+'\x20!==\x20\x27object\x27\x20||\x20Array.isArray(data.'+_0x1f0434+'))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x1f0434+'\x22\x20must\x20be\x20an\x20object\x20with\x20structure\x20{insert:\x20[],\x20update:\x20[],\x20delete:\x20[]}\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20structure:\x20insert,\x20update,\x20delete\x20harus\x20array\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20operations\x20=\x20data.'+_0x1f0434+_0x592415(0x223)+_0x1f0434+_0x592415(0x12e)+_0x1f0434+'.update\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.delete\x20&&\x20!Array.isArray(operations.delete))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x1f0434+'.delete\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20TIDAK\x20melakukan\x20auto-calculation\x20di\x20endpoint\x0a\x20\x20\x20\x20\x20\x20//\x20Calculation\x20akan\x20dilakukan\x20di\x20Model\x20setelah\x20semua\x20operasi\x20database\x20selesai\x0a\x20\x20\x20\x20\x20\x20//\x20Model\x20akan\x20SELECT\x20ulang\x20semua\x20items\x20dan\x20hitung\x20total\x20dari\x20hasil\x20akhir\x0a\x20\x20\x20\x20\x20\x20console.log(\x27CompositeUpdate\x20operations:\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20delete_count:\x20(operations.delete\x20||\x20[]).length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20update_count:\x20(operations.update\x20||\x20[]).length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20insert_count:\x20(operations.insert\x20||\x20[]).length\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20':'')+_0x592415(0x1e9)+_0x27f3de[_0x592415(0x152)]+_0x592415(0x1d7)+_0x527c60+_0x592415(0x156)+(_0xd5f29d?_0x27f3de[_0x592415(0x14d)]['foreignKey']:'')+_0x592415(0x14f)+_0x3603e5+'.updateComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x377b36+'\x20composite\x20update\x20successful:\x20'+_0x231f9d+_0x592415(0x19f)+_0x231f9d+_0x592415(0x2b2)+_0x377b36+_0x592415(0x214)+(_0xd5f29d?_0x592415(0x282):'')+_0x592415(0x2a0)+_0x377b36+_0x592415(0xe4)+_0x377b36+_0x592415(0x1ee)+_0x377b36+_0x592415(0x1e8);}function generateReadCompositeFunction(_0x557561,_0x1cc10f,_0x44680f,_0x55a084=null){const _0x39e15f=a0_0x3079;if(!_0x55a084){const _0x104e04=FileUtils[_0x39e15f(0xe8)](_0x1cc10f);_0x55a084=_0x104e04+'Model';}const _0x24f644=JSON['stringify'](_0x44680f[_0x39e15f(0x1cb)]||[]);return _0x39e15f(0x270)+_0x557561+'/'+_0x1cc10f+_0x39e15f(0x116)+_0x1cc10f+_0x39e15f(0x298)+(_0x44680f['primaryKey']||'id')+_0x39e15f(0x1de)+_0x55a084+'.readComposite(req.body);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x1cc10f+_0x39e15f(0x2e0)+_0x1cc10f+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20reading\x20'+_0x1cc10f+'\x20composite\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateWorkflowFunction(_0x55e40d,_0x332ead,_0x51e621,_0x3aefc4=null){const _0x4c4bc0=a0_0x3079;if(!_0x3aefc4){const _0x15f4a0=FileUtils['toCamelCase'](_0x332ead);_0x3aefc4=_0x15f4a0+'Model';}const _0x4d2f64=_0x51e621[_0x4c4bc0(0x1be)]?JSON['stringify'](_0x51e621['workflow']):'{}',_0x272be8=_0x51e621['requestScope']?_0x4c4bc0(0x217)+_0x3aefc4+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20recordId\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x332ead+_0x4c4bc0(0x18c):'';return _0x4c4bc0(0x270)+_0x55e40d+'/'+_0x332ead+_0x4c4bc0(0x2cc)+_0x332ead+'\x0arouter.post(\x27/change-status\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20required\x20fields:\x20id/primary\x20key\x20dan\x20status\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x51e621[_0x4c4bc0(0x16d)]||'id')+_0x4c4bc0(0x28e)+_0x272be8+_0x4c4bc0(0x191)+_0x4d2f64+';\x0a\x20\x20\x20\x20workflowConfig._project\x20=\x20\x27'+_0x55e40d+'\x27;\x0a\x20\x20\x20\x20let\x20result\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x51e621[_0x4c4bc0(0x152)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20services:\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20req.body.updated_by\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20JWT\x20forwarding\x20(Layer\x201\x20RLS):\x20Authorization\x20header\x20dari\x20request\x20asli\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20di-forward\x20ke\x20workflow\x20hook\x20call\x20agar\x20endpoint\x20tujuan\x20yang\x20punya\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20requestScope\x20aktif\x20tetap\x20menerima\x20req.user\x20dengan\x20scope\x20yang\x20sama.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Selalu\x20di-set\x20(bukan\x20kondisional\x20pada\x20payload.requestScope)\x20karena\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20hook\x20URL\x20tujuan\x20mungkin\x20punya\x20requestScope\x20sendiri\x20walaupun\x20module\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20sumber\x20tidak.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20authHeader:\x20req.headers.authorization\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20services\x20jika\x20tersedia\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20resolveServices\x20}\x20=\x20require(\x27@restforgejs/platform/src/utils/service-resolver\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20eventContext.services\x20=\x20resolveServices();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Service\x20resolver\x20opsional\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20result\x20=\x20await\x20'+_0x3aefc4+'.changeStatusData(req.body,\x20workflowConfig,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20tanpa\x20component\x20engine\x20events\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20result\x20=\x20await\x20'+_0x3aefc4+_0x4c4bc0(0x2b4)+_0x332ead+'\x20status\x20changed:\x20${result.workflow.previousStatus}\x20→\x20${result.workflow.newStatus}`);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20`Status\x20changed\x20from\x20${result.workflow.previousStatus}\x20to\x20${result.workflow.newStatus}`,\x0a\x20\x20\x20\x20\x20\x20data:\x20result.data,\x0a\x20\x20\x20\x20\x20\x20workflow:\x20result.workflow,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20change-status\x20'+_0x332ead+_0x4c4bc0(0x2dc)+_0x332ead+_0x4c4bc0(0xf6);}function createPostgresSubmoduleTemplate(_0x370cca,_0x3ded0b,_0x5a7b90){const _0x3fd5d1=a0_0x3079,_0x589b29={'hTkxj':function(_0x2a3a45,_0x291685){return _0x2a3a45===_0x291685;},'NrMzw':'null','uyMoP':function(_0x176f5c,_0x1859e3,_0x2d0337){return _0x176f5c(_0x1859e3,_0x2d0337);}},_0x2bf109=FileUtils[_0x3fd5d1(0x16f)](_0x3ded0b),_0x9548ca=new Date()[_0x3fd5d1(0x16a)]()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x1d04aa=_0x5a7b90[_0x3fd5d1(0x1ed)]||{'all':_0x5a7b90['fieldName']||[]},_0x31270a=FileUtils[_0x3fd5d1(0x146)](_0x5a7b90[_0x3fd5d1(0x1cb)]||[]),_0x479354=FileUtils['toCamelCase'](_0x3ded0b),_0x5001b7=_0x479354+'Model',_0x3ed4f9=_0x5a7b90[_0x3fd5d1(0x174)]&&_0x589b29['hTkxj'](_0x5a7b90['kafka'][_0x3fd5d1(0x22f)],!![]),_0x5a3018=buildEndpointFunctions(_0x370cca,_0x3ded0b,_0x5a7b90,_0x1d04aa,_0x31270a,_0x5001b7,_0x3ed4f9),_0x37aca2=_0x3ed4f9?_0x3fd5d1(0x100)+JSON[_0x3fd5d1(0x163)](_0x5a7b90[_0x3fd5d1(0x174)]||{'enabled':![]})+';\x0a':'';return _0x3fd5d1(0x2c8)+_0x5001b7+'\x20=\x20require(\x27../../models/'+_0x370cca+'/'+_0x3ded0b+_0x3fd5d1(0x27a)+_0x37aca2+'\x0a\x0a//\x20Component\x20Engine\x20untuk\x20event\x20lifecycle\x20(optional)\x0alet\x20componentEngine\x20=\x20null;\x0alet\x20ContextBuilder\x20=\x20null;\x0atry\x20{\x0a\x20\x20//\x20Hanya\x20load\x20component\x20engine\x20jika\x20payload\x20memiliki\x20components\x0a\x20\x20const\x20hasComponents\x20=\x20'+JSON['stringify'](_0x5a7b90[_0x3fd5d1(0x16b)])+'\x20&&\x20Array.isArray('+JSON['stringify'](_0x5a7b90[_0x3fd5d1(0x16b)])+_0x3fd5d1(0x262)+JSON['stringify'](_0x5a7b90['components'])+_0x3fd5d1(0x296)+_0x5a7b90['tableName']+_0x3fd5d1(0x164)+JSON['stringify'](_0x5a7b90[_0x3fd5d1(0x1cb)])+',\x0a\x20\x20\x20\x20\x20\x20exportQuery:\x20'+(_0x5a7b90['exportQuery']?'\x27'+_0x5a7b90[_0x3fd5d1(0x117)]+'\x27':_0x589b29['NrMzw'])+_0x3fd5d1(0x2cd)+(_0x5a7b90['columnFormats']?JSON['stringify'](_0x5a7b90[_0x3fd5d1(0x2da)]):_0x3fd5d1(0x1c2))+',\x0a\x20\x20\x20\x20\x20\x20fieldLabels:\x20'+(_0x5a7b90[_0x3fd5d1(0x186)]?JSON[_0x3fd5d1(0x163)](_0x5a7b90[_0x3fd5d1(0x186)]):'null')+',\x0a\x20\x20\x20\x20\x20\x20components:\x20'+JSON[_0x3fd5d1(0x163)](_0x5a7b90[_0x3fd5d1(0x16b)])+',\x0a\x20\x20\x20\x20\x20\x20importConfig:\x20'+(_0x5a7b90[_0x3fd5d1(0x21e)]?JSON['stringify'](_0x5a7b90[_0x3fd5d1(0x21e)]):_0x3fd5d1(0x1c2))+',\x0a\x20\x20\x20\x20\x20\x20adjustConfig:\x20'+(_0x5a7b90[_0x3fd5d1(0x26a)]?JSON['stringify'](_0x5a7b90['adjustConfig']):'null')+_0x3fd5d1(0x28a)+(_0x5a7b90['workflow']?JSON[_0x3fd5d1(0x163)](_0x5a7b90['workflow']):_0x3fd5d1(0x1c2))+_0x3fd5d1(0xf4)+(_0x5a7b90['uploadConfig']?JSON[_0x3fd5d1(0x163)](_0x5a7b90['uploadConfig']):_0x589b29['NrMzw'])+_0x3fd5d1(0x108)+(_0x5a7b90[_0x3fd5d1(0x2ab)]?JSON[_0x3fd5d1(0x163)](_0x5a7b90['requestScope']):'null')+_0x3fd5d1(0x208)+_0x370cca+'/'+_0x3ded0b+_0x3fd5d1(0xec)+_0x370cca+'/'+_0x3ded0b+':`,\x20err.message);\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a}\x20catch\x20(e)\x20{\x0a\x20\x20if\x20(hasComponents)\x20{\x0a\x20\x20\x20\x20//\x20Components\x20dikonfigurasi\x20tapi\x20engine\x20gagal\x20load\x20—\x20ini\x20error,\x20bukan\x20optional\x0a\x20\x20\x20\x20console.error(`CRITICAL:\x20Component\x20engine\x20failed\x20to\x20load\x20for\x20'+_0x370cca+'/'+_0x3ded0b+'\x20but\x20components\x20are\x20configured:`,\x20e.message);\x0a\x20\x20\x20\x20throw\x20e;\x0a\x20\x20}\x0a\x20\x20//\x20Jika\x20tidak\x20ada\x20components,\x20silent\x20skip\x20wajar\x0a\x20\x20console.log(`No\x20component\x20engine\x20required\x20for\x20'+_0x370cca+'/'+_0x3ded0b+_0x3fd5d1(0x1f1)+_0x2bf109+'\x20Submodule\x20-\x20Auto-generated\x20on\x20'+_0x9548ca+_0x3fd5d1(0x2b0)+_0x3ded0b+_0x3fd5d1(0x25e)+getEnabledActions(_0x5a7b90)[_0x3fd5d1(0x10f)](',\x20')+_0x3fd5d1(0x109)+_0x5a7b90[_0x3fd5d1(0x152)]+_0x3fd5d1(0x1c3)+(_0x5a7b90[_0x3fd5d1(0x1cb)]?_0x5a7b90['fieldName']['length']:0x0)+_0x3fd5d1(0x2b1)+_0x370cca+'/'+_0x3ded0b+_0x3fd5d1(0x180)+(_0x5a7b90[_0x3fd5d1(0x243)]?JSON['stringify'](_0x5a7b90[_0x3fd5d1(0x243)][_0x3fd5d1(0x1af)](_0x3aea02=>_0x3aea02[_0x3fd5d1(0x28c)]&&_0x3aea02['constraints']['autoGenerate'])['map'](_0x279726=>_0x279726[_0x3fd5d1(0x27d)])):'[]')+';\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20requiredFields\x20=\x20[\x27'+_0x5a7b90['fieldName']['filter'](_0x5e199d=>_0x5e199d!=='id')[_0x3fd5d1(0x29d)](0x0,0x1)[_0x3fd5d1(0x10f)](_0x3fd5d1(0x12a))+'\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.filter(field\x20=>\x20!autoGenerateFields.includes(field));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20missingFields\x20=\x20requiredFields.filter(field\x20=>\x20!req.body[field]\x20||\x20req.body[field]\x20===\x20\x27\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(missingFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Required\x20field(s):\x20${missingFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20update\x20membutuhkan\x20primary\x20key\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27update\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0x5a7b90['primaryKey']||'id')+_0x3fd5d1(0x144)+_0x589b29[_0x3fd5d1(0x133)](buildRequestScopeMiddleware,_0x5a7b90,_0x3ded0b)+buildSoftDeleteReadMiddleware(_0x5a7b90)+'\x0a'+_0x5a3018+'\x0a\x0a'+(_0x5a7b90['action']?.[_0x3fd5d1(0x1ac)]!==![]?'//\x20Endpoint\x20info\x20—\x20self-documenting\x20API\x0arouter.get(\x27/info\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20actions\x20=\x20'+JSON['stringify']({'datatables':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.['datatables'],'read':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.['read'],'first':!!_0x5a7b90['action']?.[_0x3fd5d1(0xdf)],'create':!!_0x5a7b90['action']?.[_0x3fd5d1(0x251)],'update':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.['update'],'delete':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.['delete'],'lookup':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.[_0x3fd5d1(0x1c9)],'export':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.[_0x3fd5d1(0x1b9)],'import':!!_0x5a7b90[_0x3fd5d1(0x2c4)]?.['import'],'workflow':!!_0x5a7b90['action']?.['workflow'],'info':_0x5a7b90['action']?.['info']!==![]})+';\x0a\x0a\x20\x20\x20\x20const\x20modelInfo\x20=\x20await\x20'+_0x5001b7+_0x3fd5d1(0x14e)+_0x3ded0b+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x370cca+_0x3fd5d1(0x278)+_0x9548ca+_0x3fd5d1(0x194)+_0x3ded0b+_0x3fd5d1(0x18a):_0x3fd5d1(0x181))+_0x3fd5d1(0x12d)+_0x3ded0b+_0x3fd5d1(0x136);}function a0_0x34f1(){const _0x1a463c=['j11DcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2nVBMzSAwn0lNjVD3mUBgvUz3rOid4GmcKGEWOGicaGicaGicaGicaGignVBNn0ignVBMzSAwn0rxjYB3iGpsbUzxCGrxjYB3iOiKnHBM5VDcbYzxn0B3jLoIaN','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','jZSkicaGicaGBgv0igfSAwfZrMLLBgqGpsbUDwXSoWOkicaGicaGlY8GuhjVC2vZihnLDgLHCcbJB2X1Bw4GzgfSyw0GC2vSzwn0cIaGicaGigzVCIaOy29UC3qGy29SDw1Uig9MihnLBgvJDenVBhvTBNmPihSkicaGicaGicbPzIaOy29SDw1UlNrVtg93zxjdyxnLkcKGpt09icC','jZSkicaGicaGicbPzIaOixjLCs5IB2r5w3bYAw1HCNLlzxLDksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicaGicaGBwvZC2fNztOGyfbYAw1HCNKGA2v5icGKE3bYAw1HCNLlzxL9ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLycWkicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGih0PoWOGicaGicaGih0kicaGicaGFqOkicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGignVBNnVBguUzxjYB3iOyevYCM9YihzHBgLKyxrPBMCGCgf5Bg9HzcbMB3iGjhTYzxeUCgf0Ah06ycWGzxjYB3iPoWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbKzxrHAwXZoIbLCNjVCI5TzxnZywDLlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOGih0kicbUzxH0kcK7cN0PoWO','l2rHDgf0ywjSzxmGlsbeyxrHihvUDhvRierHDgfuywjSzxmkCM91DgvYlNbVC3qOjY9KyxrHDgfIBgvZjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','zgv0zwn0vgv4DenVBhvTBG','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','DxbKyxrL','jYdIHPiG','uhf1vue','cGOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtksdIGjqGBwfZDgvYihjLy29YzaOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','BwfZDgvYrgv0ywLS','lMDLDe1VzgvSsw5MBYHHy3rPB25ZktSkcIaGicbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGigvUzhbVAw50oIaN','jYWkicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicb9cIaGicaGih07cIaGicb9cGOGicaGlY8GugfUz2DPBcbTB2rLBcbJB21WB3nPDguGDxbKyxrLig1LDgHVzaOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','C3bSAxq','cGOGicaGicbJB25ZDcbKzxrHAwXqCMLTyxj5s2v5id0GjW','DgfIBgvoyw1L','id0Gjde','laOGicaGica','C3rYAw5N','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','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yw4Gz2vUzxjPyYb2ywXPzgf0Aw9UcIaGicaGicaGzM9YicHJB25ZDcbMAwvSzcbVzIb0AgLZlNzHBgLKrMLLBgrZksb7cIaGicaGicaGicbJB25ZDcb2ywX1zsa9igrHDgfBzMLLBgrDoWOkicaGicaGicaGic8VifjLCxvPCMvKigzPzwXKihzHBgLKyxrPB24GDw50DwSGAw5Zzxj0cIaGicaGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOzMLLBgqGpt09icDPzcCGFhWGzMLLBgqGpt09icDUyw1LjYb8FcbMAwvSzca9pt0Gj25HBweNksKGEWOGicaGicaGicaGicbPzIaODMfSDwuGpt09ihvUzgvMAw5Lzcb8Fcb2ywX1zsa9pt0GBNvSBcb8Fcb2ywX1zsa9pt0GjYCPihSkicaGicaGicaGicaGicbPzIaOzMLLBgqGit09icDPzcCPihSGlY8GsuqGyMLZysbHDxrVlwDLBMvYyxrLzaOGicaGicaGicaGicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSzh0NigLZihjLCxvPCMvKigzVCIaKE29WzxjHDgLVBN0GB3bLCMf0Aw9UycK7cIaGicaGicaGicaGicaGicbYzxn1BhqUAxnwywXPzca9igzHBhnLoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFqOGicaGicaGicaGFqOkicaGicaGicaGic8VifnHBML0AxPLigrHBIb2ywXPzgf0zsb2ywX1zsbQAwTHigfKyqOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGCMvZDwX0lNnHBML0AxPLzerHDgfBzMLLBgrDid0GDgHPCY5Zyw5PDgL6zuzPzwXKvMfSDwuOzMLLBgqSihzHBhvLktSkicaGicaGicaGih0kicaGicaGicb9cGOGicaGicaGic8VieDLBMvYAwmGzw1HAwWGDMfSAwrHDgLVBGOGicaGicaGigLMicHKyxrHlMvTywLSicyMiceVxLTExhnaxsTaw15CC0bDk1WUw15CC0bDkYqVlNrLC3qOzgf0ys5LBwfPBcKPihSkicaGicaGicaGihjLC3vSDc5LCNjVCNmUChvZAcGNsw52ywXPzcbLBwfPBcbMB3jTyxqNktSkicaGicaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicaGicaGFqOGicaGicb9cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkgbwywXPzgf0Aw9UigvYCM9YoIaKE2vYCM9YlM1LC3nHz2v9ycK7cIaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicb9cGOGicaGCMv0DxjUihjLC3vSDdSkicb9cGOGic8QkGOGicaQifnHBML0AxPLigzPzwXKihzHBhvLigjLCMrHC2fYA2fUihrPCguGzMLLBgqGkgDLBMvYAwmGzMfSBgjHy2SPcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCMv0DxjUCYb7kN0Gu2fUAxrPEMvKihzHBhvLcIaGicOVcIaGC2fUAxrPEMvgAwvSzfzHBhvLkgzPzwXKtMfTzsWGDMfSDwuPihSkicaGigLMicH0ExbLB2yGDMfSDwuGpt09icDZDhjPBMCNksb7cIaGicaGic8VifrYAw0GD2HPDgvZCgfJzqOGicaGicb2ywX1zsa9ihzHBhvLlNrYAw0OktSkcIaGicaGic8VievZy2fWzsbZCgvJAwfSignOyxjHy3rLCNmGDw50DwSGBwvUy2vNywGGAw5Qzwn0Aw9UcIaGicaGihzHBhvLid0GDMfSDwuUCMvWBgfJzsGVwZW+xs9NlcaNjYK7cGOGicaGicaVlYbuCNvUy2f0zsbQAwTHihrLCMXHBhuGCgfUAMfUzWOGicaGicbPzIaODMfSDwuUBgvUz3rOid4GmJu1ksb7cIaGicaGicaGDMfSDwuGpsb2ywX1zs5ZDwjZDhjPBMCOmcWGmJu1ktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb2ywX1ztSkicb9cG','cIaGica','oICSigvYCM9YktSkcIaGicaVlYbsmJa6ihjLC3rVCMveyxrHig1LBgvTCgfYihn0yxr1C0nVzguGDw50DwSGA29UzgLZAsb0zxjRB250CM9SlGOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqWncKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','iJOGwWOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmsWGiMzPzwXKiJOGiNzHBhvLiIb9laOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmIWGiMzPzwXKiJOGiNzHBhvLiIb9cIaGicaGicaGicaGif0kicaGicaGicaGih0kicaGicaGicb9','iIbTDxn0igjLigeGBM9UlwvTChr5igfYCMf5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbbDxrVlwnHBgn1Bgf0zsb0B3rHBhmGAMLRysbHzgeGA29UzMLNDxjHC2KkicaGia','mtC1mZe0owTWzLjNsq','jYKkicaGicaGica6ihbHDgGUAM9PBIH3B3jRAw5NrgLYlcaN','A2v5CW','cIaGicaGic8VignHC2nHzgvezwXLDguGpsbMywXZztOGt25SEsberuXfveuGAgvHzgvYihjLy29YzaOGicaGicaVlYbeyxrHyMfZzsbMB3jLAwDUigTLEsbJB25ZDhjHAw50igfRyw4GAgfUzgXLihzHBgLKyxnPignOAwXKihjLy29YzhmkicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NigHLywrLCIbYzwnVCMqGkgnHC2nHzgvezwXLDguGpsbMywXZzsKUlI4NktSkcIaGicaGignVBNn0igrLBgv0zuHLywrLCLf1zxj5id0GyerftevursbguK9nicr7DgHPCY53CML0zvnVDxjJzx0Gv0HfuKuGjhT3AgvYzunSyxvZzx0GuKvuvvjosu5hicPGoWOGicaGicbJB25ZDcbKzwXLDgvizwfKzxjszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgvSzxrLsgvHzgvYuxvLCNKSihbHCMfTCYK7cGOGicaGicbPzIaOzgvSzxrLsgvHzgvYuMvZDwX0lNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDszwnVCMqGBM90igzVDw5KjYK7cIaGicaGih0kcIaGicaGignVBNn0igrLBgv0zwreyxrHid0GzgvSzxrLsgvHzgvYuMvZDwX0lNjVD3nBmf07cIaGicaGignVBNnVBguUBg9NkcDizwfKzxiGCMvJB3jKigrLBgv0zwqGC3vJy2vZC2z1BgX5jYK7cIaGicaGia','vuXjsNi','yM9VBgvHBG','DhLWzq','C3rYAw5NAwz5','jYWkicaGicaGzMLLBgroyw1LoIa','ndKWzK5WCevo','iICScIaGicaGicaGzxHHBxbSztOG','lYr7zw5KCg9PBNroyw1LFwa7cIaGicaGicaGicaGigfWCc51C2uOzw5KCg9PBNrqCMvMAxGSigvUzhbVAw50uM91DgvYktSkcIaGicaGicaGicaGigXVz0vUzhbVAw50uMvNAxn0zxjLzcHLBMrWB2LUDe5HBwuSigvUzhbVAw50uhjLzML4ktSkcIaGicaGicaGicaGic8VifjLz2LZDgvYigv4Cg9YDcbYB3v0zxmGDw50DwSGzw5KCg9PBNqGAw5PicHHDxrVlwrLDgvJDcbKyxjPigvTyMvKzgvKignVBMzPzYKkicaGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGicbJB25ZDcbLEhbVCNrdB25MAwCGpsbLEhrYywn0rxHWB3j0q29UzMLNrNjVBuvUzhbVAw50kgvUzhbVAw50ugf0AcK7cIaGicaGicaGicaGicaGAwyGkgv4Cg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGicaGrxHWB3j0sgfUzgXLCI5YzwDPC3rLCLjVDxrLCYHHChaSicC','cI8VieDLBMvYyxrLzcbMCM9TihjLCxvLC3rty29WzsbJB25MAwD1CMf0Aw9UigLUihbHEwXVywqGsLnptGPYB3v0zxiUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGigLMicHYzxeUBwv0Ag9Kice9psaNue9tvcCPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIbUBYbHDxrOignVBNrLEhqGkgvUzhbVAw50ihDPDgHVDxqGyxv0AcbTAwrKBgv3yxjLkqOGigLMicGHCMvXlNvZzxiPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIb1C2vYigHHCYbIExbHC3mGCM9SzqOGignVBNn0ihvZzxjsB2XLCYa9ihjLCs51C2vYlNjVBgvZihX8ifTDoWOGignVBNn0igj5CgfZC1jVBgvZid0G','ieforca','Dg9ju09tDhjPBMC','y29TCg9Uzw50CW','DhjPBq','ChjPBwfYEuTLEq','cIaGicaGic8VignHC2nHzgvezwXLDguGpsb0CNvLoIberuXfveuGy2HPBgqGCMvJB3jKCYbMAxjZDcWGDgHLBIbOzwfKzxikicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NignOAwXKihjLy29YzhmGzNjVBsa','Dg9qyxnJywXdyxnL','BM9Kzxm','C2nOzw1HrMLLBgrZ','l3jLywq6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbYzxf1zxn0igjVzhKkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VierLDgvRC2KGBw9KztOGCgfNAw5HC2KGkhbHz2uGzgLRAxjPBsKGyxrHDsbUB24TCgfNAw5HC2KGkhbHz2uGDgLKywSGzgLRAxjPBsKkicaGignVBNn0ihbHz2LUyxrLid0GCMvXlMjVzhKUCgfNzsaHpt0GDw5KzwzPBMvKoWOGicaGy29UC3qGCgfNzsa9ihbHz2LUyxrLid8GCgfYC2vjBNqOCMvXlMjVzhKUCgfNzsWGmtaPidOGBNvSBdSkicaGignVBNn0ihbLCLbHz2uGpsbWywDPBMf0zsa/ihbHCNnLsw50khjLCs5IB2r5lNbLCL9WywDLihX8ideWlcaXmcKGoIbUDwXSoWOGicaGy29UC3qGBgLTAxqGpsaHCgfNAw5HDguGpYbnyxrOlM1PBIHnyxrOlM1HEcHWyxjZzuLUDcHYzxeUyM9KEs5SAw1PDcb8FcaXmdaWlcaXmcKSidePlca1mdaWksa6ig51BgW7cIaGicbJB25ZDcbZzwfYy2HwywX1zsa9ihjLCs5IB2r5lNnLyxjJAf92ywX1zsb8FcaNjZSkicaGignVBNn0ihnLyxjJAej5id0GCMvXlMjVzhKUC2vHCMnOx2j5ihX8icC','cIaGicOVcIaGz2v0tgLZDff1zxj5kg9WDgLVBNmGpsb7FsKGEWOGicaGlY8Gtg9HzcbXDwvYEsbKyxnHCIbKzw5Nyw4GCgXHy2vOB2XKzxiGCMvWBgfJzw1LBNqkicaGia','A2fMA2e','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndaZksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDqCM8GrMvHDhvYzsbszxf1AxjLzcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb1CgDYywrLoIaNAhr0Chm6lY9Yzxn0zM9Yz2uUzgv2l3bYAwnPBMCNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGigLMicHLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDJB25ZDhjHAw50ihzPB2XHDgLVBICPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj2jLBg93ig1PBMLTDw0NksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdKPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNq29UC3rYywLUDcb2Aw9SyxrPB24NlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGAwyGkgvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbJB25MAwD1CMvKigzVCIbHzgP1C3rTzw50jYKGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNAxmGCMvXDwLYzwqGzM9YigfKANvZDcCPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj211C3qGyMuGysbUB24TEMvYBYbUDw1IzxiNksb8FcbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGysb2ywXPzcbMAwvSzcCPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj211C3qGBM90igjLigvTChr5jYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj1zHBgLKyxrPB24GzxjYB3iNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGAwyGkgvYCM9YlM1LC3nHz2uGpt09icDeyxrHihrPzgfRigrPDgvTDwTHBICGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNBM90igzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0rHDgeGBM90igzVDw5KjYWkicaGicaGicbTzxnZywDLoIaN','id0GjdfGoWOGicaGicbJB25ZDcbKzwXLDgvdAgLSzfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzwXLDgvdAgLSzff1zxj5lcbBAgvHzgvYuhjPBwfYEuTLEvzHBhvLxsK7cGOGicaGicbJB25ZB2XLlMXVzYHGrgvSzxrLzcaKE2rLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50FsbJAgLSzcbYzwnVCMqOCYKGzNjVBsa','Bgv0igjHC2vrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','wxzVywm','jZSkicaGicaGBgv0ihrLEhrgAwvSzca9icC','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','jYWGDMfSDwu6ia','jZSkcIaGicaGic8VienVBMzPz3vYyxrPB24GB3b0Aw9UCWOGicaGicbJB25ZDcbSB2DNAw5Nrw5HyMXLzca9ignVBMzPzY5SB2DNAw5Nice9psbMywXZztSkicaGicaGy29UC3qGyxbPs2v5uMvXDwLYzwqGpsaHiwnVBMzPzY5RzxK7cGOGicaGicbSB2DNzxiUAw5MBYH7cIaGicaGicaGzxzLBNq6icDTB2r1BgvFC3rHCNrPBMCNlaOGicaGicaGig1VzhvSztOGBw9KDwXLtMfTzunHCgL0ywXPEMvKlaOGicaGicaGihbVCNqScIaGicaGicaGy29YCZOGChjVy2vZCY5LBNyUq09su19ftKfcteveice9psaNzMfSC2uNlaOGicaGicaGigHLBg1LDdOGChjVy2vZCY5LBNyUsevmtuvux0voqujmruqGpt09icD0CNvLjYWkicaGicaGicbSB2DNAw5NoIbSB2DNAw5Nrw5HyMXLzcWkicaGicaGicbHCgLlzxK6igfWAuTLEvjLCxvPCMvKcIaGicaGih0SigbtDgfYDgLUzYaKE21VzhvSzu5HBwvdyxbPDgfSAxPLzh0GBw9KDwXLycK7cGOGicaGicaVlYbdt1jtig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbdt1jtx0voqujmruqGzgfUienpuLnFt1jjr0LouYbKAsaUzw52kqOGicaGicbHChaUDxnLkgnVCNnnAwrKBgv3yxjLlM1PzgrSzxDHCMuOksK7cGOGicaGicaVlYbtzwn1CML0EsbOzwfKzxjZig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbiruXnrvrFru5bqKXfrcbKAsaUzw52kqOGicaGicbHChaUDxnLkhnLy3vYAxr5sgvHzgvYCY5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8GsLnptIbWyxjZAw5Nig1PzgrSzxDHCMuGzgvUz2fUigvYCM9YigHHBMrSAw5NcIaGicaGigfWCc51C2uOyM9KEvbHCNnLCI5QC29UkhSkicaGicaGicbSAw1PDdOGjZeWBwiNlaOGicaGicaGihzLCMLMEtOGkhjLCsWGCMvZlcbIDwySigvUy29KAw5Nksa9pIb7cIaGicaGicaGicaVlYbtA2LWihzHBgLKyxrPB24GDw50DwSGzw1WDhKGyNvMzMvYcIaGicaGicaGicbPzIaOyNvMlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGicaGicbYzxr1CM47cIaGicaGicaGicb9cGOGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGsLnptI5WyxjZzsHIDwyPoWOGicaGicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicaGicaGy29UC29Szs5LCNjVCIHGsLnptIbqyxjZzsbfCNjVCIbMCM9Ticr7CMvXlMLWFtOGjhTLCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGicbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKiePtt04GCgf5Bg9HzcCScIaGicaGicaGicaGicaGBwvZC2fNztOGj1rOzsbWyxLSB2fKihnLBNqGAxmGBM90igeGDMfSAwqGsLnptIbMB3jTyxqNlaOGicaGicaGicaGicaGigrLDgfPBhm6igvYCM9YlM1LC3nHz2uScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcbku09ojYK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9ksK7cGOGicaGicaVlYbvuKWTzw5JB2rLzcbWyxjZAw5Nig1PzgrSzxDHCMukicaGicaGyxbWlNvZzsHIB2r5ugfYC2vYlNvYBgvUy29KzwqOEWOGicaGicaGigv4DgvUzgvKoIb0CNvLlaOGicaGicaGigXPBwL0oIaNmtbTyICkicaGicaGFsKPoWOkicaGicaGlY8GuMvXDwvZDcbSB2DNAw5Nig1PzgrSzxDHCMuGkfbPBM8TyMfZzwqPcIaGicaGigLMicHSB2DNAw5Nrw5HyMXLzcKGEWOGicaGicaGigfWCc51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGicaGicaVlYbhzw5LCMf0zsbYzxf1zxn0ieLecIaGicaGicaGicbYzxeUAwqGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lwLKj10GFhWGDxvPzhy3kcK7cIaGicaGicaGicbYzxmUC2v0kcDylvjLCxvLC3qTsuqNlcbYzxeUAwqPoWOkicaGicaGicaGic8VienYzwf0zsbZy29WzwqGBg9Nz2vYihvUDhvRihjLCxvLC3qGAw5PcIaGicaGicaGicbYzxeUBg9Nid0Gy3jLyxrLuMvXDwvZDeXVz2DLCIH7cIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKlaOGicaGicaGicaGicbTzxrOB2q6ihjLCs5TzxrOB2qScIaGicaGicaGicaGihbHDgG6ihjLCs5WyxrOlaOGicaGicaGicaGicbPCdOGCMvXlMLWcIaGicaGicaGicb9ktSkcIaGicaGicaGicaVlYbdyxb0DxjLihn0yxj0ihrPBwukicaGicaGicaGignVBNn0ihn0yxj0vgLTzsa9ihbYB2nLC3mUAhj0Aw1LkcK7cGOGicaGicaGicaGlY8Gtg9NihjLC3bVBNnLigTLDgLRysbZzwXLC2fPcIaGicaGicaGicbYzxmUB24Oj2zPBMLZAcCSicGPid0+ihSkicaGicaGicaGicaGy29UC3qGw3nLy29UzhmSig5HBM9ZzwnVBMrZxsa9ihbYB2nLC3mUAhj0Aw1Lkhn0yxj0vgLTzsK7cIaGicaGicaGicaGignVBNn0igr1CMf0Aw9UtxmGpsbWyxjZzuzSB2f0kcHZzwnVBMrZicOGmtaWmcaRig5HBM9ZzwnVBMrZic8Gmwu2ks50B0zPEgvKkdiPktSkicaGicaGicaGicaGBg9NuMvXDwvZDcHYzxeSihjLCYWGzhvYyxrPB25nCYK7cIaGicaGicaGicb9ktSkcIaGicaGicaGicbUzxH0kcK7cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8ViefqssblzxKGDMfSAwrHDgLVBIbTAwrKBgv3yxjLicHJB25ZDgfUDc10Aw1LignVBxbHCMLZB24PcIaGicaGigLMicHHCgLlzxLszxf1AxjLzcKGEWOGicaGicaGignVBNn0ignYExb0BYa9ihjLCxvPCMuOj2nYExb0BYCPoWOGicaGicaGignVBNn0igv4CgvJDgvKs2v5id0GqNvMzMvYlMzYB20Oy29UzMLNlMTLEsK7cGOGicaGicaGigfWCc51C2uOjY9HCgKNlcaOCMvXlcbYzxmSig5LEhqPid0+ihSkicaGicaGicaGignVBNn0igfWAuTLEsa9ihjLCs5OzwfKzxjZwYD4lwfWAs1RzxKNxtSkicaGicaGicaGigLMicGHyxbPs2v5ksb7cIaGicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmsKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDvBMf1DgHVCML6zwqNlaOGicaGicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKig9Yig1PC3nPBMCGqvbjieTLEsCScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicb9cIaGicaGicaGicbJB25ZDcbWCM92AwrLzeTLEsa9iej1zMzLCI5MCM9TkgfWAuTLEsK7cIaGicaGicaGicbPzIaOzxHWzwn0zwrlzxKUBgvUz3rOice9psbWCM92AwrLzeTLEs5Szw5NDgGGFhWkicaGicaGicaGicaGicaHy3j5ChrVlNrPBwLUz1nHzMvfCxvHBcHLEhbLy3rLzeTLEsWGChjVDMLKzwrlzxKPksb7cIaGicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmsKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDvBMf1DgHVCML6zwqNlaOGicaGicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKig9Yig1PC3nPBMCGqvbjieTLEsCScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicb9cIaGicaGicaGicbUzxH0kcK7cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VifjHDguGBgLTAxrPBMCGBwLKzgXLD2fYzsaOC3rVCMu6ig1LBw9YEsb1BNr1AYbZAw5NBguGBw9KzsWGuMvKAxmGDw50DwSGy2X1C3rLCIbTB2rLkqOGicaGicbYyxrLtgLTAxrLCI5ZzxrtDg9YzsHJB25MAwCUy2X1C3rLCIa/icDYzwrPCYCGoIaNBwvTB3j5jYK7cIaGicaGigfWCc51C2uOjY9HCgKNlcbYyxrLtgLTAxrLCI5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8GswrLBxbVDgvUy3KGBwLKzgXLD2fYzsaOChjVDgvJDhmGBxv0yxrPB24Gzw5KCg9PBNrZigzYB20GzhvWBgLJyxrLigv4zwn1DgLVBIKkicaGicaGAwyGkhbYB2nLC3mUzw52lKLeru1qt1rftKnzx0voqujmruqGpt09icD0CNvLjYKGEWOGicaGicaGigfWCc51C2uOjY9HCgKNlcbPzgvTCg90zw5JEu1PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkicaGicaGFqOkicaGicaGlY8GqM9KEsbVChrPB25Zig1PzgrSzxDHCMuGkgv4DhjHy3qGE2rHDgeSig9WDgLVBNn9igzVCM1HDcbKyxjPihjLCxvLC3qGyM9KEsKkicaGicaGyxbWlNvZzsGNl2fWAsCSigjVzhLpChrPB25ZtwLKzgXLD2fYzs5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8Gqxv0BY1SB2fKihbSDwDPBIaOAMLRysbHzgePcIaGicaGignVBNn0ig1VzhvSzu5HBwuGpsaN','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GzgvMAw5PC2KGzMLSDgvYihLHBMCGDgvYC2vKAwekicaGkIbaCMv0DxjUCYb7qxjYyxL9iezPBhrLCIb5yw5NihrLCNnLzgLHcIaGicOVcIaGz2v0qxzHAwXHyMXLrMLSDgvYCYGPihSkicaGihjLDhvYBIa','jYaRihjLCs5WyxrOcIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VifzHBgLKyxnPihnWzxnPzMLRihvUDhvRigvUzhbVAw50ihrLCNrLBNr1cIaGicaGignVBNn0igvUzhbVAw50id0GCMvXlNbHDgGUC3vIC3rYAw5NkdePoYaVlYbTzw5NAgfWDxmGlYbKAsbHD2fScGOGicaGicaVlYbfBMrWB2LUDcbNzxqGBwvTyNv0DwHRyw4GD2HLCMuGzgfSyw0GzM9YBwf0ihTRzxKSihzHBhvLFsbHDgf1ifT7A2v5lcb2ywX1zx1DicGXigvSzw1LBIKkicaGicaGAwyGkgvUzhbVAw50id09psaNzMLYC3qNksb7cIaGicaGicaGlY8GtM9YBwfSAxPLoIbHCNjHEsaXigvSzw1LBIaTpIbVyMPLy3qkicaGicaGicbPzIaOqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKGjIyGCMvXlMjVzhKUD2HLCMuUBgvUz3rOid09psaXksb7cIaGicaGicaGicbYzxeUyM9KEs53AgvYzsa9ihjLCs5IB2r5lNDOzxjLwZbDoWOGicaGicaGih0kicaGicaGicbPzIaOixjLCs5IB2r5lNDOzxjLihX8ihr5CgvVzIbYzxeUyM9KEs53AgvYzsaHpt0Gj29IAMvJDcCGFhWGqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDxAgvYzsbTDxn0igjLigeGC2LUz2XLignVBMrPDgLVBIb7A2v5lcb2ywX1zx0NlaOGicaGicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaGicaGiNDOzxjLiJOGEYaIA2v5iJOGiMzPzwXKx25HBwuIlcaIDMfSDwuIoIaIzMLLBgrFDMfSDwuIih0ScIaGicaGicaGicaGicaGiNnLBgvJDci6ifSIzMLLBgqXiIWGiMzPzwXKmIjDcIaGicaGicaGicaGih0ScIaGicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGicb9ktSkicaGicaGicb9cIaGicaGicaGAwyGkhjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmGFhWGCMvXlMjVzhKUD2HLCMuUBg9NAwmPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDbzhzHBMnLzcb3AgvYzsbMB3jTyxqGAxmGBM90ihn1ChbVCNrLzcbPBIaVzMLYC3qGzw5KCg9PBNqUifvZzsaVCMvHzcbLBMrWB2LUDcbMB3iGy29TCgXLEcbXDwvYAwvZjYWkicaGicaGicaGicaGzxHHBxbSztOGEWOGicaGicaGicaGicaGicj3AgvYzsi6ihSGiMTLEsi6icjMAwvSzf9Uyw1LiIWGiNzHBhvLiJOGiMzPzwXKx3zHBhvLiIb9cIaGicaGicaGicaGih0ScIaGicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGicb9ktSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VievUzhbVAw50igrLBgv0zsbTzw1IDxr1AgTHBIb3AgvYzqOGicaGicbPzIaOzw5KCg9PBNqGpt09icDKzwXLDguNicyMicGHCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj0rftevursbWyxLSB2fKig11C3qGAw5JBhvKzsbHihDOzxjLihbYB3bLCNr5jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjPzciSicj2ywX1zsi6icj5B3vYlwLKlxzHBhvLiIb9xqOGicaGicaGicaGFsWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VievUzhbVAw50igfKzcbTzw1IDxr1AgTHBIbKyxrHihLHBMCGDMfSAwqkicaGicaGAwyGkgvUzhbVAw50id09psaNywrKjYKGEWOGicaGicaGic8ViezPBhrLCIbMAwvSzcb5yw5Nig1LBwLSAwTPigf1Dg9hzw5LCMf0zsbKyxjPihjLCxvPCMvKignOzwnRcIaGicaGicaGy29UC3qGyxv0B0DLBMvYyxrLrMLLBgrZid0G','lY8Grw5KCg9PBNqGl2LUzM8GzgLUB25HA3rPzMTHBIb2AweGywn0Aw9UlMLUzM8GpsbMywXZzq','id0GtK9xkcKNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','ktSkicaGicaGicbUzxDeyxrHid0GCMvZCg9UC2veyxrHoWOkicaGicaGicbJB25ZB2XLlMXVzYGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DifvqrefursbJB21WBgv0zwqGC3vJy2vZC2z1BgX5ihDPDgGGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DifvqrefursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8ViezHBgXIywnRoIbNDw5HA2fUig1VzguGBgfTysb0yw5WysbLDMvUDhmGkhrLDgfWihbYB3bHz2fZAsbYzxf1zxn0swqGDw50DwSGtgL2zsbtEw5JkqOGicaGicb0CNKGEWOGicaGicaGihjLC3bVBNnLrgf0ysa9igf3ywL0ia','wMrswu8','s3blvuC','zMLLBgrmywjLBhm','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','C2vHCMnOq29SDw1UCW','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','uwrJDgW','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','jYWkicaGicaGywrKAxrPB25HBenVBNrLEhq6ihSkicaGicaGicb1C2vYx2LKoIbYzxeUAgvHzgvYC1SNDxnLCI1PzcDDihX8ihjLCs5OzwfKzxjZwYD4lxvZzxiTAwqNxsb8FcaNC3LZDgvTjYWkicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBaOGicaGicb9cIaGicb9oWOkicaGignVBNn0ihjLC3bVBNnLrgf0ysa9igf3ywL0ia','cIaGicbJB25ZDcb3B3jRzMXVD0nVBMzPzYa9ia','cIaGFqOkicaVkIOkicaGkIbpDMvYCMLKzsbNzxreyxrHDgfIBgvZihvUDhvRig1LBMr1A3vUzYbMAwX0zxiGB2jQzwn0igzVCM1HDaOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0GugfYyw1LDgvYigrHCMKGCMvXDwvZDaOGicaQiebYzxr1CM5ZihTpyMPLy3r9ieHHC2LSihf1zxj5igrLBMDHBIbMB3jTyxqGrgf0yvrHyMXLCWOGicaQlWOGigfZEw5JigDLDerHDgf0ywjSzxmOB3b0Aw9UCYKGEWOGicaGDhj5ihSkicaGicaGlY8Gq2HLy2SGy2fJAguGzMLYC3qGkgLMigvUywjSzwqPcIaGicaGignVBNn0ignHy2HLzfjLC3vSDca9igf3ywL0ihrOAxmUz2v0q2fJAgvKrgf0yxrHyMXLCYHVChrPB25ZktSkicaGicaGAwyGkgnHy2HLzfjLC3vSDcKGEWOGicaGicaGihjLDhvYBIbJywnOzwrszxn1Bhq7cIaGicaGih0kcIaGicaGignVBNn0ihSkicaGicaGicbZzwfYy2HwywX1zsa9icCNlaOGicaGicaGihnLyxjJAej5id0Gj2fSBcCScIaGicaGicaGCgvYugfNzsa9ideWlaOGicaGicaGihn0yxj0id0GmcWkicaGicaGicbZB3j0x2nVBhvTBNmGpsbBxsWkicaGicaGicbMAwX0zxjZid0GE30ScGOGicaGicaGihDOzxjLid0GBNvSBaOGicaGicb9id0GB3b0Aw9UCZSkcIaGicaGic8VifjLC29SDMuGC29YDcbJB2X1Bw5ZigrLBMDHBIbWCMLVCML0yxm6ihnVCNrFy29SDw1UCYa+ig9YzgvYwZbDw2nVBhvTBL0GpIbKzwzHDwX0cIaGicaGigXLDcbYzxnVBhzLzfnVCNrdB2X1Bw5Zid0GC29YDf9JB2X1Bw5ZoWOkicaGicaGlY8GrMfSBgjHy2S6ignLAYbMB3jTyxqGrgf0yvrHyMXLCYbIyxDHyw4Gkg9YzgvYwZbDw2nVBhvTBL0GzgfUig9YzgvYwZbDw2rPCL0PcIaGicaGigLMicGOixjLC29SDMvKu29YDenVBhvTBNmGFhWGCMvZB2X2zwrtB3j0q29SDw1UCY5Szw5NDgGGpt09idaPicyMcIaGicaGicaGicbVChrPB25ZwYDVCMrLCLSWxvTJB2X1Bw5Dj10Git09ihvUzgvMAw5LzcaMjIbVChrPB25ZwYDVCMrLCLSWxvTKAxjDj10Git09ihvUzgvMAw5LzcKGEWOGicaGicaGignVBNn0ignVBhvTBKLUzgv4id0GCgfYC2vjBNqOB3b0Aw9UC1SNB3jKzxjBmf1By29SDw1UxsDDktSkicaGicaGicbJB25ZDcbKAxjLy3rPB24GpsbVChrPB25ZwYDVCMrLCLSWxvTKAxjDj107cGOGicaGicaGigLMicHJB2X1Bw5jBMrLEca+psaWicyMignVBhvTBKLUzgv4idWGDgHPCY52ywXPzezPzwXKCY5Szw5NDgGPihSkicaGicaGicaGihjLC29SDMvKu29YDenVBhvTBNmGpsbBEYbJB2X1Bw46ihrOAxmUDMfSAwrgAwvSzhnBy29SDw1Usw5KzxHDlcbKAxjLy3rPB246igrPCMvJDgLVBI50B1vWCgvYq2fZzsGPih1DoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8Gms4GtwvUzgfWyxrRyw4GCxvLCNKGzgfZyxikicaGicaGy29UC3qGyMfZzvf1zxj5id0GDgHPCY5NzxrmAxn0uxvLCNKOB3b0Aw9UCYK7cGOGicaGicaVlYaYlIbnzw1IDwf0ihDOzxjLignSyxvZzsbIzxjKyxnHCMTHBIbZzwfYy2GGzgfUigzPBhrLCGOGicaGicbSzxqGD2HLCMvdBgf1C2uGpsb0AgLZlMj1AwXKv2HLCMvdBgf1C2uOC2vHCMnOvMfSDwuSihnLyxjJAej5lcb0AgLZlMrHDgf0ywjSzxngAwvSzhmPoWOkicaGicaGlY8GmY4GvgfTyMfOA2fUigzPBhrLCIbVyMPLy3qGAMLRysbHzgekicaGicaGy29UC3qGzMLSDgvYq2XHDxnLid0GDgHPCY5IDwLSze9IAMvJDezPBhrLCKnSyxvZzsHMAwX0zxjZktSkcIaGicaGigLMicHMAwX0zxjdBgf1C2uPihSkicaGicaGicbPzIaOD2HLCMvdBgf1C2uPihSkicaGicaGicaGihDOzxjLq2XHDxnLicS9icCGqu5eicCGkYbMAwX0zxjdBgf1C2u7cIaGicaGicaGFsbLBhnLihSkicaGicaGicaGihDOzxjLq2XHDxnLid0Gj1DirvjficCGkYbMAwX0zxjdBgf1C2u7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYa0lIbqCM9ZzxmGCgfYyw1LDgvYihDOzxjLigrLBMDHBIbMB3jTyxqGywr2yw5JzwqGy29UzgL0Aw9UCWOGicaGicbSzxqGD2HLCMvqyxjHBxmGpsbBxtSkicaGicaGAwyGkhDOzxjLicyMicHbCNjHEs5PC0fYCMf5khDOzxjLksb8FcaOD2HLCMuUy29UzgL0Aw9UCYaMjIbbCNjHEs5PC0fYCMf5khDOzxjLlMnVBMrPDgLVBNmPksKPihSkicaGicaGicb0CNKGEWOGicaGicaGicaGBgv0ihbHCMfTCYa9ifTDoWOGicaGicaGicaGBgv0ihbHCMfTsw5KzxGGpsaXoWOGicaGicaGicaGy29UC3qGD2HLCMvszxn1BhqGpsb0AgLZlMj1AwXKq29TCgXLEfDOzxjLq2XHDxnLkhDOzxjLlcbWyxjHBxmSihbHCMfTsw5KzxGSicCNlcb0AgLZlMrHDgf0ywjSzxngAwvSzhmPoWOGicaGicaGicaGAwyGkhDOzxjLuMvZDwX0lNnXBcKGEWOGicaGicaGicaGicbPzIaOD2HLCMvdBgf1C2uPihSkicaGicaGicaGicaGicb3AgvYzunSyxvZzsaRpsaNieforcaOjYaRihDOzxjLuMvZDwX0lNnXBcaRicCPjZSkicaGicaGicaGicaGFsbLBhnLihSkicaGicaGicaGicaGicb3AgvYzunSyxvZzsa9icDxsevsrsaNicSGD2HLCMvszxn1BhqUC3fSoWOGicaGicaGicaGicb9cIaGicaGicaGicaGihDOzxjLugfYyw1Zid0GD2HLCMvszxn1BhqUCgfYyw1ZoWOGicaGicaGicaGFqOGicaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicaGic8ViezHAwWTy2XVC2vKihDOzxjLlwzPzwXKoIb0zxj1C2THBIbLCNjVCIb0zxjZDhj1A3r1CIbHCgeGywrHBNLHicHQyw5Nyw4GyNvUz2T1CWOGicaGicaGicaGlY8GAMfKAsbWzxnHBIbNzw5LCMLRksbHz2fYigHHBMrSzxiGyMLZysbTzw1MB3jTyxqGCMvZCg9UCYaRigrLDI1NyxrLihzHBgLKrMLLBgrZlGOGicaGicaGicaGAwyGkguUy29Kzsa9pt0Gj0LovKfmsurFv0HfuKvFrKLfteqNksb0AhjVDYbLoWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbdAgvJAYbPzIbXDwvYEsbUzwvKCYbZDwjXDwvYEsb3CMfWCgLUzYaOq1rfig9YiePpsu4PcIaGicaGignVBNn0igLZq3rLuxvLCNKGpsbIyxnLuxvLCNKUDg9mB3DLCKnHC2uOks50CMLTkcKUC3rHCNrZv2L0AcGND2L0AcCPoWOGicaGicbJB25ZDcbOyxnkB2LUid0Gl1XIkgLUBMvYFgXLzNr8CMLNAhr8y3jVC3n8zNvSBcLCCYTQB2LUxgiVAs50zxn0kgjHC2vrDwvYEsKGFhWGl1XIAM9PBLXIl2KUDgvZDcHIyxnLuxvLCNKPoWOGicaGicbJB25ZDcbUzwvKC1n1yNf1zxj5id0GAxndDgvrDwvYEsb8FcbOyxnkB2LUoWOkicaGicaGlY8Gnc4GtwvUz2HPDhvUzYb0B3rHBcbKyxrHigTLC2vSDxj1AgfUic0Gz3vUywTHBIbYzwfKu291CMnLihvUDhvRihjLywqGB3bLCMf0Aw9UCWOGicaGicbJB25ZDcbJB3vUDfrVDgfSuxvLCNKGpsbUzwvKC1n1yNf1zxj5id8kicaGicaGicaNu0vmrunuienpvu5ukcOPigfZihrVDgfSiezst00GkcCGkYbIyxnLuxvLCNKGkYaNksbIyxnLx3f1zxj5','cIaGicaGih0PktSkicaGicaGyxDHAxqGDgHPCY5ZzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcbJywnOzurHDgeSicDZDgf0AwmNktSkcIaGicaGic8VifjLDhvYBIbKzw5Nyw4GC2vSzwn0zwqGzMXHzWOGicaGicbYzxr1CM4Gzgf0ys5TyxaOAxrLBsa9pIb7cIaGicaGicaGy29UC3qGCMvZDwX0id0GEWOGicaGicaGicaGAwq6igL0zw0U','jYWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIa','CMvMq29SDw1UCW','C29MDerLBgv0zuzRq2HPBgrYzw4','cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NAgfWDxmGzgf0ysa','y29iy0C','igrHDgeGywrKzwqGC3vJy2vZC2z1BgX5oIaKE3jLC3bVBNnLrgf0ys4','Dg9vChbLCKnHC2u','cIaGFqO','zgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','y3jLyxrLq29TCg9ZAxrL','tw9KzwW','psr7zgf0ys4','lMnYzwf0zunVBxbVC2L0zsHKyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','q3LkEMG','ksb8FcbKyxrHlG','q2L6Buy','ihn0yxrPyYbSB29RDxaGCMvXDwvZDcb3AxrOihnLBgvJDgvKx3rHzZOGjhTZzwXLy3rLzfrHz31GktSkcIaGicaGic8ViePPA2eGywrHigzPzwXKihnLBgvJDcbHDgf1ihnVCNrFy29SDw1UCYWGz3vUywTHBIbNzxrmB29RDxbeyxrHv2L0AezPBhrLCIbKzw5Nyw4GyM9KEsb5yw5NigrPBw9KAwzPA2fZAqOGicaGicbPzIaOkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihX8icHYzxeUyM9KEs5ZB3j0x2nVBhvTBNmGjIyGqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs5ZB3j0x2nVBhvTBNmPksKGEWOGicaGicaGignVBNnVBguUBg9NkcDgB3vUzcbZzwXLy3qGzMLLBgrZig9YihnVCNrFy29SDw1UCYWGDxnPBMCGz2v0tg9VA3vWrgf0yvDPDgHgAwX0zxiNktSkcIaGicaGicaGlY8GqNvHDcbIB2r5igjHCNuGzgvUz2fUihDOzxjLigTVC29UzYb1BNr1AYbTzw5Nyw1IAwWGC2vTDweGzgf0yqOGicaGicaGignVBNn0ig1VzgLMAwvKqM9KEsa9ihSkicaGicaGicaGic4UlNjLCs5IB2r5laOGicaGicaGicaGD2HLCMu6ifTDic8VievTChr5ihDOzxjLihvUDhvRig1LBMDHBwjPBcbZzw11ysbKyxrHcIaGicaGicaGFtSkcIaGicaGicaGy29UC3qGBgLZDca9igf3ywL0ia','ywr2yw5JzwrrDwvYAwvZ','x2zPzwXKuhjVAMvJDgLVBNm','l3jLywqGlsbnyw51ywWGCgfNAw5HDgLVBIbLBMrWB2LUDaPYB3v0zxiUCg9ZDcGNl3jLywqNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','igXVB2T1CcbYzxf1zxn0oIbZzwfYy2G9jhTZzwfYy2H9lcbMAwX0zxjZpwaSigv4DhjHrMLSDgvYCYK7cGOGicaGlY8Gr3vUywTHBIbTB2rLBcb1BNr1AYbSB29RDxaGzgf0ysbKzw5Nyw4GzMLSDgvYCYb0yw1IywHHBGOGicaGy29UC3qGBgLZDca9igf3ywL0ia','wMDsEe8','ywrQDxn0','oICSigvYCM9YktSkcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndaZksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDqCM8GrMvHDhvYzsbszxf1AxjLzcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb1CgDYywrLoIaNAhr0Chm6lY9Yzxn0zM9Yz2uUzgv2l3bYAwnPBMCNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGigLMicHLCNjVCI5ZDgf0DxndB2rLid09psa0mdaGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGysb2ywXPzcbMAwvSzcCPihX8cIaGicaGicaGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNsw52ywXPzcbHz2DYzwDHDguGzNvUy3rPB24Nksb8FaOGicaGicaGigvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj0LUDMfSAwqGywXPyxmNksb8FaOGicaGicaGigvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj29UBhKGywXSB3DLzcb3AxrOienpvu5ujYKGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUB3qGzgvMAw5LzcbPBIbHz2DYzwDHDguGy29UzMLNjYKGFhWkicaGicaGicbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDUBYbQB2LUigrLzMLUAxrPB25ZigzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj1zHBgLKyxrPB24GzxjYB3iNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigfNz3jLz2f0Aw5Nia','Aw5MBW','j107cGOGicaGicaVlYberuXfveuGy2HPBgqGCMvJB3jKCYbTzw5Nz3vUywTHBIbMB3jLAwDUs2v5cIaGicaGignVBNn0igrLBgv0zunOAwXKuxvLCNKGpsbGrevmrvrfiezst00G','ieXpt0TvucbxsvriiezjtfrfuIa9pt0NktSkicaGicaGy29UC29Szs5SB2COj0zPBMfSifnrtdONlcbXDwvYEsK7cIaGicaGignVBNnVBguUBg9NkcDqyxjHBwv0zxjZoICSihbHCMfTCYK7cIaGicaGignVBNnVBguUBg9NkcDtzwXLy3rLzcbJB2X1Bw5ZoICSihnLBgvJDenVBhvTBNmPoWOGicaGicbJB25ZB2XLlMXVzYGNu29YDcbJB2X1Bw5ZoICSig9WDgLVBNmUC29YDf9JB2X1Bw5ZihX8icDUB25LjYK7cIaGicaGignVBNnVBguUBg9NkcDwywXPzcbMAwvSzhmGzM9Yig9YzgvYAw5NoICSihrOAxmUDMfSAwrgAwvSzhmPoWOGicaGicbJB25ZB2XLlMXVzYGNvgv4DcbMAwvSzdONlcb0zxH0rMLLBgqPoWOGicaGicbJB25ZB2XLlMXVzYGNqwXPyxmGzMLLBgq6jYWGywXPyxngAwvSzcK7cIaGicaGignVBNnVBguUBg9NkcC9pt0Gru5eierfqLvhid09psCPoWOkicaGicaGlY8GrwTZzwT1C2KGCxvLCNKkicaGicaGy29UC3qGzgf0ysa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHXDwvYEsWGCgfYyw1ZktSkcIaGicaGic8ViezVCM1HDcbOyxnPBcb1BNr1AYbSB29RDxaGkgLKigrHBIb0zxH0ksaTigD1BMfRyw4GywXPyxmGAMLRysbHzgekicaGicaGy29UC3qGDgv4DezPzwXKtMfTzsa9igfSAwfZrMLLBgqGFhWGDgv4DezPzwXKoWOGicaGicbJB25ZDcbYzxn1BhqGpsbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw0U','zMLSDgvY','jhT3AgvYzvjLC3vSDc5ZCwX9','cGOGicaGicbPzIaOCMvJywXJDwXHDgvKrMLLBgrZlMXLBMD0Aca+idaPihSkicaGicaGicaVlYbjBMPLy3qGyxvKAxqGy29SDw1UCYaODxbKyxrLzf9HDcWGDxbKyxrLzf9IEsKGA2uGCMvJywXJifvqrefursb2AweGAgvSCgvYcIaGicaGicaGCMvJywXJugXHy2vOB2XKzxiGpsb0AgLZlL9HChbLBMrvCgrHDgvbDwrPDenVBhvTBNmOCMvJywXJDwXHDgvKrMLLBgrZlcbYzwnHBgn1Bgf0zwrwywX1zxmSigrHDgeSigv2zw50q29UDgv4DcWGCMvJywXJugXHy2vOB2XKzxiPoWOGicaGicaGihjLy2fSy3vSyxrLzfzHBhvLCY5WDxnOkhbYAw1HCNLlzxLwywX1zsK7cIaGicaGicaGy29UC3qGCMvJywXJuxvLCNKGpsbGcIaGicaGicaGicbvuerbveuGjhT0AgLZlNDYAxrLu291CMnLFqOGicaGicaGicaGu0vuicr7CMvJywXJDwXHDgvKrMLLBgrZlMPVAw4OjYWGjYL9cIaGicaGicaGicbxsevsrsaKE3rOAxmUChjPBwfYEuTLEx0GpsaKjhTYzwnHBgnqBgfJzwHVBgrLCN0kicaGicaGicaGifjfvfvstKLorYaQcIaGicaGicaGydSkicaGicaGicbJB25ZB2XLlMXVzYGNuMvJywXJDwXHDgLUzYbOzwfKzxiGDg90ywXZoICSihSGCxvLCNK6ihjLy2fSy1f1zxj5lcb2ywX1zxm6ihjLy2fSy3vSyxrLzfzHBhvLCYb9ktSkicaGicaGicbJB25ZDcbYzwnHBgnszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOCMvJywXJuxvLCNKSihjLy2fSy3vSyxrLzfzHBhvLCYK7cIaGicaGicaGt2jQzwn0lMfZC2LNBIH1CgrHDgvKsgvHzgvYlcbYzwnHBgnszxn1BhqUCM93C1SWxsK7cIaGicaGih0kicaGicaG','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGD3jPDguGkgfKzcWGDxbKyxrLlcbKzwXLDguPcG','cIaGicaVlYbfDMvUDcbSAwzLy3LJBguGDMfYAwfIBgvZcIaGicbSzxqGB2XKrgf0ysa9ig51BgW7cIaGicbSzxqGBMv3rgf0ysa9ig51BgW7cIaGicbJB25ZDcbYzxf1zxn0rgf0ysa9ihjLCs5IB2r5oWOGicaGBgv0ihjLC3bVBNnLrgf0ysa9ig51BgW7cGOGicaGlY8Gpt09ieLUDgvNCMf0zwqGvhjHBNnHy3rPB24GzgvUz2fUiev2zw50ieXPzMvJEwnSzsa9pt0kicaGic8Vig9SzerHDgeGzMv0y2GGkYbVBKjLzM9YzsaRig1HAw4GB3bLCMf0Aw9UicSGB25bzNrLCIbKAwvRC2vRDxnPigrHBgfTihnHDhuGDhjHBNnHy3rPB24GC2nVCgukicaGic8VigrPigrHBgfTig1VzgvSlMv4zwn1DgvuCMfUC2fJDgLVBLDPDgHfDMvUDhmOkqOGicaGAwyGkgnVBxbVBMvUDevUz2LUzsaMjIbdB250zxH0qNvPBgrLCIKGEWOGicaGicaVlYbhDw5HA2fUigLUDgvNCMf0zwqGDhjHBNnHy3rPB24GBw9KzwWGzgvUz2fUigv2zw50igXPzMvJEwnSzqOGicaGicb0CNKGEWOGicaGicaGignVBNn0igv2zw50q29UDgv4Dca9ihSkicaGicaGicaGignVBxbVBMvUDevUz2LUztOGy29TCg9Uzw50rw5NAw5LlaOGicaGicaGicaGq29UDgv4Dej1AwXKzxi6ienVBNrLEhrcDwLSzgvYlaOGicaGicaGicaGDgfIBgvoyw1LoIaN','zMfSC2u','igXPC3q6jYWGzxjYB3iPoWOGicaGAwyGkgvYCM9YlMnVzguGpt09icDjtLzbteLex1Dirvjfx0zjruXejYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGyeLUDMfSAwqGzMLLBgq6icr7zxjYB3iUAw52ywXPzezPzwXKFwaScIaGicaGicaGlI4UkhbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GEYb2ywXPzezPzwXKCZOGzxjYB3iUDMfSAwrgAwvSzhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kicaGignVBNn0ihn0yxr1C0nVzguGpsbLCNjVCI5ZDgf0DxndB2rLihX8iduWmdSkicaGihjLDhvYBIbYzxmUC3rHDhvZkhn0yxr1C0nVzguPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6ihn0yxr1C0nVzguGpt09idqWmca/icDcywqGuMvXDwvZDcCGoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGC3rHDhvZq29Kzsa9pt0GndaWid8GzxjYB3iUBwvZC2fNzsa6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbMzxrJAgLUzYa','sw52ywXPzcbHDwrPDenVBhvTBNmGDMfSDwuGzM9Yia','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGCMvHzcaOz2v0lcbSAxn0lcbSB29RDxaSigrHDgf0ywjSzxmPcIaGicb0AgLZlNDYAxrLu291CMnLid0GjW','oWOGicaGicbJB25ZDcbKzwzHDwX0u2vSzwn0id0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0cIaGicaGicaGpYbBiMLKiIWGBg9VA3vWq29UzMLNlNrLEhrgAwvSzf0kicaGicaGica6ifSIAwqIlcaI','zxHWB3j0','EKvjC2K','laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGignVBNn0igrHDgeGpsbYzxeUyM9KEs4','Dgv4DezPzwXKCW','cIaGicaGicaGlY8GCMv1C2fIBguGjW','D29YA2zSB3C','jYaOyMfZzsbSzw5NDgGG','cIaGicbJB25ZDcbHzgP1C3rdB25MAwCGpsa','icaGic8VicH3AgvYzs1RzxKGuJe1ksbZzwHPBMDNysb0zxiTChjVEwvRC2KGzM9YBwf0uMvZCg9UC2veyxrHoYbOyxb1CYbKyxjPihjLC3bVBNnLihb1yMXPAWO','BNvSBa','cIaQiezPzwXKCZOG','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','ksb8FcaWktS','AvL2qM8','jYb5yw5NigjLBMfYcIaGicOGqhbHCMfTihTZDhjPBMD9ihnLyxjJAcaTieTHDgeGA3vUy2KGCgvUy2fYAwfUcIaGicOGqhjLDhvYBNmGE0fYCMf5FsbbCNjHEsbVyMPLAYbOyxnPBcbSB29RDxakicaGkI8kicbHC3LUyYbNzxrmB29RDxbeyxrHkhnLyxjJAcKGEWOGicaGDhj5ihSkicaGicaGy29UC3qGCxvLCNKGpsaNu0vmrunuia','l2fNz3jLz2f0zsaTiefNz3jLz2f0zsbKyxrHicHJB3vUDcWGC3vTlcbHDMCSig1PBIWGBwf4kqPYB3v0zxiUCg9ZDcGNl2fNz3jLz2f0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZDcbHz2DYzwDHDgvdB25MAwCGpsa','Bg9VA3vW','l2nYzwf0zsaTie1LBMfTyMfOA2fUigrHDgeG','zMLLBgroyw1L','cIaGicaGic8VifnVzNqTzgvSzxrLihzPC2LIAwXPDhKGC2nVCguGkfiXnsKkicaGicaGD2HLCMvdB25KAxrPB25ZlNb1C2GOya','cIaGicaVlYbwywXPzgfZAsbKzxrHAwWGAxrLBxmGDw50DwSGBwfZDgvYlwrLDgfPBcaOB3bZAw9UywWGDw50DwSGDxbKyxrLkqOGicaGlY8Gvw50DwSGDxbKyxrLq29TCg9ZAxrLlcbKzxrHAwWGAxrLBxmGyMvYDxbHig9IAMvJDcbKzw5Nyw4GE2LUC2vYDdOGw10SihvWzgf0ztOGw10SigrLBgv0ztOGw119cIaGicbPzIaOzgf0ys4','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','lI4UjYK7cGOGicaGicaVlYbhzxqGChjPBwfYEsbRzxKGDMfSDwuGDw50DwSGzgvSzxrLignOAwXKihjLy29YzhmkicaGicaGy29UC3qGAgvHzgvYuxvLCNKGpsbGu0vmrunuia','oIbHBMfRicC','cIaGlYOQcIaGicOGq29TCg9ZAxrLihvWzgf0zsaTifvWzgf0zsbOzwfKzxiGD2L0AcbNCMfUDwXHCIbKzxrHAwWGB3bLCMf0Aw9UCYaOAw5Zzxj0l3vWzgf0zs9KzwXLDguPcIaGicOGqhbHCMfTihTpyMPLy3r9igrHDgeGlsbeyxrHignVBNrHAw5PBMCGAgvHzgvYigfUzcbKzxrHAwXFBgLUzxmGD2L0AcbPBNnLCNqVDxbKyxrLl2rLBgv0zsbHCNjHExmkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+FsbvCgrHDgvKihjLy29Yzcb3AxrOigL0zw1ZcIaGicOVcIaGyxn5BMmGDxbKyxrLq29TCg9ZAxrLkgrHDgeSigv2zw50q29UDgv4Dca9ig51BgWPihSkicaGignVBNn0ihbVB2WGpsbKyI5NzxrqB29SkcK7cIaGicbJB25ZDcbJBgLLBNqGpsbHD2fPDcbWB29SlMnVBM5Ly3qOktSkcIaGicb0CNKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj0jfr0LojYK7cGOGicaGicaVlYbfEhrYywn0ihbYAw1HCNKGA2v5ihzHBhvLcIaGicaGignVBNn0ihbYAw1HCNLlzxLwywX1zsa9igrHDgfBDgHPCY5WCMLTyxj5s2v5xtSkicaGicaGAwyGkcfWCMLTyxj5s2v5vMfSDwuPihSkicaGicaGicb0AhjVDYbUzxCGrxjYB3iOyfbYAw1HCNKGA2v5icr7DgHPCY5WCMLTyxj5s2v5FsbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLycK7cIaGicaGih0kcIaGicaGic8VienOzwnRigLMihjLy29YzcbLEgLZDhmGkgfSC28GC2vYDMvZigfZihbYzwzLDgnOig9SzerHDgeGzM9YigHVB2TZkqOGicaGicbJB25ZDcbJAgvJA1f1zxj5id0GyfnftevdvcaQiezst00GjhT0AgLZlNDYAxrLu291CMnLFsbxsevsrsaKE3rOAxmUChjPBwfYEuTLEx0GpsaKmwa7cIaGicaGignVBNn0ignOzwnRuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgnOzwnRuxvLCNKSifTWCMLTyxj5s2v5vMfSDwvDktSkcIaGicaGigLMicHJAgvJA1jLC3vSDc5YB3DZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNuMvJB3jKig5VDcbMB3vUzcCPoWOGicaGicb9cGOGicaGicbJB25ZDcbVBgreyxrHid0Gy2HLy2Tszxn1BhqUCM93C1SWxtSkcIaGicaGic8Viev4DhjHy3qGAgvHzgvYigrHDgeGkgv4y2X1zguGzgv0ywLSigL0zw1ZigfUzcbWCMLTyxj5igTLEsKkicaGicaGy29UC3qGAgvHzgvYrgf0ysa9ihSGlI4Uzgf0ysb9oWOGicaGicbJB25ZDcbKzxrHAwXlzxKGpsaN','mZnvzLbHtgu','zgvMyxvSDfnJB3bL','l2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGicaGicaGignVBNn0igHLywX0AeLUzM8Gpsb7cIaGicaGicaGicbZDgf0Dxm6icDVAYCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOks5YzxbSywnLkcDujYWGjYaNks5YzxbSywnLkc9ClLXKEZn9wIqVlcaNjYKScIaGicaGicaGicbZzxj2AwnLoIaN','sw5hB2C','wxLrwK0','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGzgv0ywLSvgfIBgu6icC','yxvKAxrdB2X1Bw5Z','jZSkBw9KDwXLlMv4Cg9YDhmUz2vUzxjHDgvKid0GjW','cIaGicaGicaGlY8GqNvPBgqGzgv0ywLSifvqrefursbXDwvYEqOGicaGicaGignVBNn0igrLDgfPBezPzwXKCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfzHBhvLCYa9ifTDoWOGicaGicaGigXLDcbKzxrHAwXqBgfJzwHVBgrLCKLUzgv4id0GmtSkcIaGicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOAxrLBsKPihSkicaGicaGicaGigLMicHRzxKGpt09igrLDgfPBfbYAw1HCNLlzxKPignVBNrPBNvLoWOGicaGicaGicaG','ksb7cIaGicaGigrLBgv0zsbYzxeUyM9KEvTFx3nKq29SxtSkicaGih0','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwq','cIaQcIaQie1VzgvSihvUDhvRia','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicaGif0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifbHBMDNAwWGBw9KzwWGCMvHzenVBxbVC2L0zsbTzxrOB2qkicaGignVBNn0ihjLC3vSDca9igf3ywL0ia','zM9YzwLNBKTLEq','zgf0yxrHyMXLC1DOzxjL','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjvbVCNrHBcuIih0ScIaGicaGicaGicaGicaGicb7icjRzxKIoIaI','cGOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj0nptu1jvcCPoWOkicaGicaGlY8Gsw52ywXPzgf0zsbJywnOzsbZzxrLBgfOihDYAxrLig9WzxjHDgLVBIbIzxjOyxnPBaOGicaGicbHD2fPDcb0AgLZlMLUDMfSAwrHDgvdywnOzsGPoWOkicaGicaGCMv0DxjUihSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGig1LC3nHz2u6icDeyxrHihn1y2nLC3nMDwXSEsbKzwXLDgvKjYWkicaGicaGicbKyxrHoIbKzwXLDgvKrgf0yq','DxbSB2fKq29UzMLN','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGvvbeqvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKvxbKyxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrvCgrHDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI51CgrHDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HvCgrHDguOcIaGicaGicaGjW','icOG','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbnzxrOB2qGDw50DwSGBg9VA3vWigrHDgeGzgvUz2fUigzPBhrLCMLUzYaOD2HLCMuGy2XHDxnLksbKyw4Gy3vZDg9TihnLBgvJDaOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0Gt3b0Aw9UCYbKzw5Nyw4GD2HLCMuGzgfUihnLBgvJDaOGicaQiebYzxr1CM5ZihTbCNjHEx0GqxjYyxKGB2jQzwSGAgfZAwWGBg9VA3vWigrLBMDHBIbMB3jTyxqGE2LKlcb0zxH0FqOGicaQlWOGigfZEw5JigDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkg9WDgLVBNmPihSkicaGihrYEsb7cIaGicaGic8VienOzwnRignHy2HLigzPCNn0icHPzIbLBMfIBgvKkqOGicaGicbJB25ZDcbJywnOzu9WDgLVBNmGpsb7ic4UlM9WDgLVBNmSihr5Cgu6icDMAwX0zxiNih07cIaGicaGignVBNn0ignHy2HLzfjLC3vSDca9igf3ywL0ihrOAxmUz2v0q2fJAgvKtg9VA3vWkgnHy2HLt3b0Aw9UCYWGj2zPBhrLCICPoWOGicaGicbPzIaOy2fJAgvKuMvZDwX0ksb7cIaGicaGicaGCMv0DxjUignHy2HLzfjLC3vSDdSkicaGicaGFqOkicaGicaGy29UC3qGC2vSzwn0q29SDw1UCYa9ig9WDgLVBNmUC2vSzwn0ihX8ifSN','jYb1BNr1AYbLBMrWB2LUDcbYzwfKigjLCMrHC2fYA2fUcI8VihzPC2LIAwXPDhKGy29UzMLNicGN','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','cGOGicaGlY8GqNvPBgqGzxzLBNrdB250zxH0ihvUDhvRignVBxbVC2L0zsbOB29RCYaOAMLRysbJB21WB25LBNqGzw5NAw5LihrLCNnLzgLHkqOGicaGBgv0igv2zw50q29UDgv4Dca9ig51BgW7cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGigv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMuScIaGicaGicaGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','ihLHBMCGBwv3yxjPC2KGzNvUz3nPlwz1BMDZAsbKyxjPiejHC2vnB2rLBaOGkIbuywjSztOG','iIWGiG','tLbhyuu','x2v4DgvUzgvKrMLLBgrZ','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzgf0ywjHC2uGzxjYB3jZcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEWOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGDxbKyxrPBMCG','lMfKANvZDerHDgeOCMvXlMjVzhKSigfKANvZDenVBMzPzW','ChjPBwfYEvrLEhrgAwvSza','lcbYDw5UAw5NihDPDgHVDxqGzxzLBNrZycK7cN0kcI8QkGOGkIa','zMLLBgrqB2XPy3K','cNjVDxrLCI5WB3n0kcCVzgvSzxrLjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','l3jLC3rVCMuGlsbnzw11BgLOA2fUigrHDgeG','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifrVBgfRigzVCM1HDcbHzhzHBMnLzcaOy29UzgL0Aw9UCY9SB2DPyYKkicaGigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZihX8ihjLCs5IB2r5lNDOzxjLlMXVz2LJksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0fKDMfUy2vKihDOzxjLigzVCM1HDcbPCYbUB3qGC3vWCg9YDgvKigLUic9MAxjZDcbLBMrWB2LUDc4GvxnLic9YzwfKigvUzhbVAw50igzVCIbJB21WBgv4ihf1zxjPzxmNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbHzgeGzgKGCMvHzgfIBgvgAwvSzhmkicaGignVBNn0ihzHBgLKrMLLBgrZid0G','id0GjcCGkYbWicSGjYbsrvrvuK5jtKCGjYaRihjLDhvYBMLUz0zPzwXKCZSkicaGicaGicbJB25ZDcb1CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKODxbKyxrLuxvLCNKSihvWzgf0zvbHCMfTCYK7cIaGicaGicaGAwyGkhvWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbKzwXLDgvKsxrLBxmUChvZAcH1CgrHDgvszxn1BhqUCM93C1SWxsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj0nptu1jvcCPoWOkicaGicaGlY8GmY4Gsw52ywXPzgf0zsbJywnOzsbZzxrLBgfOienptu1jvcaOv0fksui6igPHBhvYign1C3rVBsb0AwrHAYbHDxrVlwLUDMfSAwrHDgu7cIaGicaGic8VicaGigjPBgeGDgvYBgv3yxqSic9KyxrHDgfIBgvZigrHBIaVCMvHzcb0zxiTy2fJAguGBwvUEwfQAwTHBIbYzwnVCMqGEwfUzYbZDwrHAcb0zxjOyxb1CYKUcIaGicaGigf3ywL0ihrOAxmUAw52ywXPzgf0zunHy2HLkcK7cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGBwvZC2fNztOGj1n1y2nLC3nMDwXSEsbKzwXLDgvKicCGkYbKzwXLDgvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGigrLBgv0zwrFy291BNq6igrLBgv0zwrjDgvTCY5Szw5NDgGScIaGicaGicaGzgvSzxrLzf9PDgvTCZOGzgvSzxrLzeL0zw1ZcIaGicaGih07cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','mti3odK4mdbkwhbLvhi','icaGicaGicbKzwXLDguGzM9YBwf0DgvKw19FC2rdB2XDoWO','l2nYzwf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','icSGjW','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGD2fQAwiGywT0AwyGDw50DwSGDgLHCcbRB2XVBsbgsYb5yw5NigrPAxnPicHWCMuTy2HLy2SGndiYks4kicaGigf3ywL0ia','oWOkicaGicaGBgv0ihDOzxjLq29UzgL0Aw9UCYa9ifTDoWOGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSk','id0G','ruP6zwK','y2HPBgrdB2X1Bw5Z','CMvWBgfJzq','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicaVlYbfEhrYywn0igHLywrLCIbKyxrHihnHAMeGkgv4y2X1zguGzgv0ywLSksb1BNr1AYb2ywXPzgf0Aw9UcIaGicaGignVBNn0igHLywrLCKrHDgfgB3jwywXPzgf0Aw9Uid0GEYaUlI5KyxrHih07cIaGicaGia','iezst00GjYaRihDYAxrLu291CMnLicSkicaGicaGicaNifDirvjficGNicSGD2HLCMvcDwLSDc5ZCwWGkYaNksbbtKqG','BgTSyuS','zgf0ysb8FcbBxq','wfbHsg0','icaGignVBNn0igzVCM1HDhrLzca9ihn1CgvYlMzVCM1HDfjLC3bVBNnLrgf0ysHKyxrHktSk','CMvHza','cIaGicb9oWOkicaGignVBxbVBMvUDevUz2LUzs5SB2fKq29UzMLNDxjHDgLVBKzYB21pyMPLy3qOy29TCg9Uzw50q29UzMLNks50AgvUkhjLC3vSDca9pIb7cIaGicaGigLMicHYzxn1BhqUC3vJy2vZCYKGEWOGicaGicaGignVBNnVBguUBg9NkgbdB21WB25LBNqGy29UzMLNDxjHDgLVBIbSB2fKzwqGzM9Yia','v0HfuKuG','DNvJvLC','id0GtLvmtcCPoWOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','id0Gja','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CMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY91DgLSCY9JywnOzs1Tyw5Hz2vYjYK7cIaGicaGicaGicbJB25ZDcbFx2nHy2HLuMvNid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY91DgLSCY9JywnOzs1PBNzHBgLKyxrPB24TCMvNAxn0CNKNktSkicaGicaGicaGignVBNn0if9FChjLzML4id0Gx19JywnOzu1NCI5WCMvMAxG7cIaGicaGicaGicbMB3iGkgnVBNn0if9FDcbVzIb0B3vJAgvKksb7cIaGicaGicaGicaGic8Vie1HC3rLCIbZDwrHAcbKAs1PBNzHBgLKyxrLihzPysb0AgLZlMLUDMfSAwrHDgvdywnOzsGPigv4Axn0Aw5NiokgKIbOAw5KyxjPigrVyMvSlGOGicaGicaGicaGicbPzIaOx190id09psbFx3nKq2fZy2fKzu1LDgeUBwfZDgvYksbJB250Aw51ztSkicaGicaGicaGicaGlY8Gu3rYAxaGC2nOzw1HiokgKIbIzw50DwSGyMfYzsb5yw5NigrPCgfRywKGBw9KzwWGzgvZy2vUzgfUDcbWywrHihn1CgvYkhrHyMXLtMfTzsKUcIaGicaGicaGicaGic8Vigv4DhjHy3rdywnOzu1VzhvSzsbHDgfZig5HBweGyMfYzsdIHPiGj2rLzMf1BhqNoYbLEhrYywn0q2fJAgvfBMrWB2LUDcdIHPiGyMfYzsbPDhuGC2vUzgLYAs4kicaGicaGicaGicaGy29UC3qGx19IyxjLid0Gx190lMLUzgv4t2yOjY4Nksa+psaWid8Gx190lNn1yNn0CMLUzYHFx3qUBgfZDeLUzgv4t2yOjY4NksaRidePidOGx190oWOGicaGicaGicaGicbJB25ZDcbFx21Vzca9icDKzwzHDwX0jZSkicaGicaGicaGicaGy29UC3qGx19LCca9if9FyMfYztSkicaGicaGicaGicaGyxDHAxqGx19JywnOzu1NCI5PBNzHBgLKyxrLugf0DgvYBIHFx3bYzwzPEcaRif9FBw9KicSGjZONicSGx19LCcaRicC6kICPoWOGicaGicaGicaGicaVlYbdyxnJywrLihbYB2nLC3nVCI9KyxnOyM9HCMqGEwfUzYbIzxjNyw50Dw5NihbHzgeGDgfIzwWGzgvZy2vUzgfUDcaOCMvNAxn0CNKGyNKTzw5KCg9PBNqPlGOGicaGicaGicaGicbJB25ZDcbFx3jLz1bHDhrLCM5Zid0Gx19JywnOzvjLzY5NzxrjBNzHBgLKyxrPB25qyxr0zxjUCYHFx2vWlcbFx3bYzwzPEcK7cIaGicaGicaGicaGigzVCIaOy29UC3qGx19YCcbVzIbFx3jLz1bHDhrLCM5ZksbHD2fPDcbFx2nHy2HLtwDYlMLUDMfSAwrHDgvqyxr0zxjUkf9FCNaPoWOGicaGicaGicaGFqOGicaGicaGih0Gy2f0y2GGkgvYCIKGEWOGicaGicaGicaGlY8Gr3jHy2vMDwWG4OcuigTLz2fNywXHBIbPBNzHBgLKyxnPignHy2HLigrLC2nLBMrHBNqGDgLKywSGBwvTyMf0ywXRyw4GC29MDc1KzwXLDguUcIaGicaGicaGFqOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGBwvZC2fNztOGj1n1y2nLC3nMDwXSEsbKzwXLDgvKicCGkYbTyxn0zxjezwXLDgvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGigrLBgv0zwrFy291BNq6ig1HC3rLCKrLBgv0zwrjDgvTCY5Szw5NDgGScIaGicaGicaGzgvSzxrLzf9PDgvTCZOGBwfZDgvYrgvSzxrLzeL0zw1ZcIaGicaGih07cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','ksb8FcaWoWOGicaGicaGicaGCMv0DxjUihn1BsaRicHXDhKGkIbWCMLJzsK7cIaGicaGicaGFsWGmcK7cIaGicaGicaGCMvJywXJDwXHDgvKrMLLBgrZlNb1C2GOyhrVDgfSx2fTB3vUDca9icqKE3jLy2fSy1bSywnLAg9SzgvYkYT9ycK7cIaGicaGicaGCMvJywXJDwXHDgvKvMfSDwvZlNb1C2GODg90ywXbBw91BNqPoWOGicaGicb9','cIaGicaGignVBNn0ignHBgn1Bgf0Aw9UCYa9ia','lMDLDeXVB2T1CerHDgfeEw5HBwLJkhnLyxjJAcWGzxH0CMfgAwX0zxjZktSkcIaGicbJB25ZB2XLlMXVzYHGtg9VA3vWihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGzgf0ytOGBgLZDcWkicaGicaGC2vHCMnOoIbZzwfYy2GScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','igXPC3qGzgf0ysCScIaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','CMvXDwLYzwrgAwvSzhm','kgrHDgeGFhWGw10PlM1HCcHFx3jVDYa9pIb7ignVBNn0if9FCIa9ihSGlI4Ux19YB3CGFtSGzM9YicHJB25ZDcbFx3nKq29Sig9Mia','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwq','A0vLAvq','icaGicaGicaVlYbbDxrVlwnHBgn1Bgf0zsa','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','jYKUienVBMzPzY1KCML2zw4GkhrHBNbHigjVzhKGB3b0Aw9UCYKSigrPDgvYyxbRyw4GDgfUCgeklY8GC3LHCMf0igf1DgGGkhzPC2LIAwXPDhKGzMLSDgvYlcbcvuTbtIbstfmG4OcuigTHCMvUysbPDhuGDgLKywSGywrHigD1yxjKicfYzxeUDxnLCIKUcNjVDxrLCI51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGAwyGkhjLCs5TzxrOB2qGit09icDqt1nujYKGCMv0DxjUig5LEhqOktSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGAwyGkcfBj2rHDgf0ywjSzxmNlcaNCMvHzcCSicDSB29RDxaNlcaNywDNCMvNyxrLj10UAw5JBhvKzxmOzw5KCg9PBNqPksbYzxr1CM4GBMv4DcGPoWOkicbJB25ZDcbZB2z0rgvSzxrLq29UzgL0Aw9Uid0GEYbRzxK6icC','Bgv0igjHC2vrDwvYEsa9iga','oICSigvYCM9YktSk','icaGic8VicGVCMvHzcWGl2zPCNn0lcbKyxrHDgfIBgvZlcbJCMvHDguSihvWzgf0zsKGzgKGC2f0DsbJAg9RzxbVAw50lcb0yw5Wysb1yMfOiejHC2vnB2rLBc9NzxrszwfKuxvLCNKUcG','AwyGkgnHBgn1Bgf0Aw9UCY50B3rHBf9HBw91BNqPihSkicaGicaGicbJB25ZDcb0B3rHBefTB3vUDca9igfSBeL0zw1ZlNjLzhvJzsGOC3vTlcbPDgvTksa9pIb7cIaGicaGicaGicbJB25ZDcbXDhKGpsboDw1IzxiOAxrLBs4','ihX8icfbCNjHEs5PC0fYCMf5kgrHDgeU','Aw1WB3j0q29UzMLN','igrHDgeGDxbKyxrLzcbZDwnJzxnZzNvSBhK6icr7ChjPBwfYEuTLEx09jhTYzxeUyM9KEvTWCMLTyxj5s2v5xx1GktSk','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFq','Awnlt2C','igrHDgeGC3vJy2vZC2z1BgX5igfKANvZDgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fKANvZDcbKyxrHia','oWOGicaGicbPzIaOB3bLCMf0Aw9UCY5PBNnLCNqGjIyGiufYCMf5lMLZqxjYyxKOB3bLCMf0Aw9UCY5PBNnLCNqPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bYB3bLCNr5ici','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0k','zgv0ywLSuxvLCNK','j10PoWOGicaGicaGignVBNn0ihvWzgf0zvf1zxj5id0Gj1vqrefursaNicSGD3jPDgvtB3vYy2uGkYaNifnfvcaNicSGC2v0q2XHDxnLCY5QB2LUkcCSicCPicSkicaGicaGicaGicCGv0HfuKuG','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGDgvYAgfWDxmVywjZzw4G4OAsidqYmIaOC2HHCguGC2vSyxjHCYbgsYbYzxn0B3jLifiYmcKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndiYksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqYmIKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDvBNbYB2nLC3nHyMXLievUDgL0EsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','iL0ScIaGicaGicaGicaIC29YDf9JB2X1Bw5ZiJOGwWOGicaGicaGicaGicb7cIaGicaGicaGicaGicaGiMnVBhvTBIi6ici','CMv1C2fIBgu','EWOGicaGicaGicaGiG','jYWkicaGicaGicbXDwvYEtOGCMvXlMjVzhKScIaGicaGicaGCMvZDwX0q291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmcWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9oWOGicaGFqOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ig1LBMrHCgf0A2fUigrHDgeG','C29MDerLBgv0zuzRq2HLy2TZ','id0GEYbLEgvJDxrLih07cM1VzhvSzs5LEhbVCNrZlM1VzhvSzu5HBwuGpsaN','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cGOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6igD1BMfRyw4GBw9KzsbSyw1HihrHBNbHigv2zw50CYaODgv0yxaGChjVCgfNyxnPihjLCxvLC3rjzcb1BNr1AYbmAxzLifn5BMmPcIaGicaGihrYEsb7cIaGicaGicaGCMvZCg9UC2veyxrHid0GyxDHAxqG','zw5HyMXLza','ouHtyLPosq','zMLLBgrZ','jZSkcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbKyxrHw2rLDgfPBeTLEv0GFhWGw10PihSkicaGicaGicaVlYbbzgqGzM9YzwLNBIbRzxKGDg8GAxrLBqOGicaGicaGigL0zw1BzM9YzwLNBKTLEv0GpsbTyxn0zxjqCMLTyxj5s2v5vMfSDwu7cGOGicaGicaGic8Vief1Dg8Tz2vUzxjHDguGvvvjrcb1BNr1AYbKzxrHAwWGueSGyMLSysbJBgLLBNqGDgLKywSGBwvUExvWCgX5lGOGicaGicaGic8VieTVBNnPC3rLBIbKzw5Nyw4GA29UDMvUC2KGyxv0B0DLBMvYyxrLk3bYAw1HCNLlzxKGzgKGC2LUz2XLlxrHyMXLcIaGicaGicaGlY8GkgXPAgf0ihzHBgLKyxrLrgf0ysKGzgfUihnLCMfNyw0GBgLUDgfZigrPywXLy3q6ihnLBxvHigDLBMvYyxrVCGOGicaGicaGic8Vig1LBwfRywKGDxvPzc52nYGPihnLAgLUz2DHigzVCM1HDcbvvuLeigrHBIb0AxrPAYbNzw5LCMfZAqOGicaGicaGic8VigLKzw50AwSSigLUzgvWzw5Kzw4GzgfYAsberuzbvuXuigv4ChjLC3nPB24GzgKGrermlGOGicaGicaGigLMicHPDgvTw2rLDgfPBfbYAw1HCNLlzxLDid09psb1BMrLzMLUzwqGFhWGAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GBNvSBcKGEWOGicaGicaGicaGAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9ihjLCxvPCMuOj3v1AwqNks52nYGPoWOGicaGicaGih0k','tw9KzwWGzxH0zw5KCYbcyxnLtw9KzwWGEWOGic8QkGOGicaQienVBNn0CNvJDg9YcIaGicOVcIaGy29UC3rYDwn0B3iOksb7cIaGicaVlYbezwzPBMLZAwTHBIb2ywXPzezPzwXKCYaTihnLBxvHigzPzwXKihLHBMCGDMfSAwqGDw50DwSGDgfIzwWG','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','qNjIBgO','C29MDerLBgv0zq','cIaGicbPzIaOixjLC3vSDc5KyxrHihX8ihjLC3vSDc5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','cGOGicaGicbJB25ZDcbKzxrHAwXpCgvYyxrPB25Zid0Gzgf0yvTKzxrHAwXlzxLDihX8ihT9oWOGicaGicbJB25ZDcb7igLUC2vYDdOGAw5Zzxj0sxrLBxmGpsbBxsWGDxbKyxrLoIb1CgrHDgvjDgvTCYa9ifTDlcbKzwXLDgu6igrLBgv0zuL0zw1Zid0Gw10GFsa9igrLDgfPBe9WzxjHDgLVBNm7cGOGicaGicbJB25ZDcbKzwXLDgvKsxrLBxmGpsbBxtSkicaGicaGy29UC3qGDxbKyxrLzeL0zw1Zid0Gw107cIaGicaGignVBNn0igLUC2vYDgvKsxrLBxmGpsbBxtSkcIaGicaGic8VideUifbYB2nLC3mGrevmrvrfig9WzxjHDgLVBNmGzMLYC3qkicaGicaGzM9YicHJB25ZDcbPDgvTig9MigrLBgv0zuL0zw1Zksb7cIaGicaGicaGAwyGkcfPDgvTw2rLDgfPBfbYAw1HCNLlzxLDksb7cIaGicaGicaGicb0AhjVDYbUzxCGrxjYB3iOye1PC3nPBMCGjhTKzxrHAwXqCMLTyxj5s2v5FsbPBIbKzwXLDguGB3bLCMf0Aw9UycK7cIaGicaGicaGFqOkicaGicaGicbJB25ZDcbKzwXLDgvrDwvYEsa9igberuXfveuGrLjptsaKE2rLDgfPBfrHyMXLtMfTzx0Gv0HfuKuGjhTKzxrHAwXqCMLTyxj5s2v5Fsa9icqXifjfvfvstKLorYaQydSkicaGicaGicbJB25ZDcbKzwXLDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgvSzxrLuxvLCNKSifTPDgvTw2rLDgfPBfbYAw1HCNLlzxLDxsK7cGOGicaGicaGigLMicHKzwXLDgvszxn1BhqUCM93CY5Szw5NDgGGpIaWksb7cIaGicaGicaGicbKzwXLDgvKsxrLBxmUChvZAcHKzwXLDgvszxn1BhqUCM93C1SWxsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGrgvSzxrLzcaKE2rLBgv0zwrjDgvTCY5Szw5NDgH9igrLDgfPBcbPDgvTkhmPycK7cGOGicaGicaVlYaYlIbqCM9JzxnZifvqrefursbVCgvYyxrPB25ZcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIb1CgrHDgvjDgvTCYKGEWOGicaGicaGigLMicGHAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsKGEWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkgbnAxnZAw5Nicr7zgv0ywLSuhjPBwfYEuTLEx0GAw4GDxbKyxrLig9WzxjHDgLVBMaPoWOGicaGicaGih0k','CMvHzgfIBgvgAwvSzhm','jYWkicaGicaGicaGihvWDgLTztOGChjVy2vZCY51ChrPBwuOksWkicaGicaGicaGig1LBw9YEtOGChjVy2vZCY5Tzw1VCNLvC2fNzsGPlaOGicaGicaGicaGC3LZDgvToIb7cIaGicaGicaGicaGihbSyxrMB3jToIbWCM9JzxnZlNbSyxrMB3jTlaOGicaGicaGicaGicbUB2rLvMvYC2LVBJOGChjVy2vZCY52zxjZAw9UlaOGicaGicaGicaGicbWAwq6ihbYB2nLC3mUCgLKcIaGicaGicaGicb9cIaGicaGicaGFtSkcIaGicaGicaGCMvZlMPZB24OAgvHBhrOsw5MBYK7cIaGicaGih0PoWOkicaGicaGlY8Gu2vYDMLJzsbPBMzVigvUzhbVAw50cIaGicaGigfWCc5NzxqOjY9HCgKV','y2HPBgruywjSzq','id0GrKfmu0uNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','EvfNA0C','BvDxrKe','AfPjB1e','jYWkicaGicaGicaGignVCNjLBgf0Aw9Uswq6ignVCNjLBgf0Aw9UswqkicaGicaGicb9cIaGicaGicKUy2f0y2GOzxjYid0+ignVBNnVBguUzxjYB3iOj1TlywzRyv0Gqxn5BMmGChvIBgLZAcbLCNjVCJONlcbLCNiUBwvZC2fNzsKPoWOGicaGFqO','lMXLBMD0AdSkicaGih0kicaGigLMicHOzwfKzxjdywXJlNrVDgfSx3f0EsaMjIbOzwfKzxjdywXJlNrVDgfSx3f0Es5ZB3vYy2uPihSkicaGicaGy29UC3qGCxr5rMLLBgqGpsbOzwfKzxjdywXJlNrVDgfSx3f0Es5ZB3vYy2uUCMvWBgfJzsGNAxrLBxmUjYWGjYCPoWOGicaGicbKyxrHlNrVDgfSx3f0Esa9igrHDgeU','ks4G','zMLLBgrwywXPzgf0Aw9U','DMLLD05HBwu','yc50CMLTkcK7','CwXNExO','l2fKANvZDcaTiefKANvZDcbKyxrHia','zgf0zvrPBwvgAwvSzhm','BgvUz3rO','igrHDgeGBM90igzVDw5Kig9YigfSCMvHzhKGzgvSzxrLzcCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','CwTQA1u','CgfYzw50q29SDw1U','ksb7cIaGicaGigLMicH0ExbLB2yGzgf0ys4','ifDirvjfia','id0GtLvmtcCPoWOkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHSB2nRzwrsB3DBjW','jYKGCMv0DxjUig51BgW7cIaGicaGicaGicbPzIaOzgLYzwn0Aw9Uice9psaNqvndjYaMjIbKAxjLy3rPB24Git09icDervndjYKGCMv0DxjUig51BgW7cIaGicaGicaGicbYzxr1CM4Gycr7y29SDw1UFsaKE2rPCMvJDgLVBN1GoWOGicaGicaGih0PlMzPBhrLCIHcB29SzwfUktSkcIaGicaGicaGAwyGkg9YzgvYugfYDhmUBgvUz3rOid09psaWksb7cIaGicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNtM8GDMfSAwqGC29YDcbJB2X1Bw5ZihbYB3zPzgvKjYK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicaGihf1zxj5icS9igbpuKrfuIbcwsaKE29YzgvYugfYDhmUAM9PBIGNlcaNkx1GoWOGicaGicb9igvSC2uGEWOGicaGicaGic8Vie9YzgvYigj5ihrLEhqGzMLLBgqGkgD1BMfRyw4GywXPyxmGAMLRysbHzgePic0GzgvMyxvSDcbIzwHHDMLVCGOGicaGicaGihf1zxj5icS9igbpuKrfuIbcwsaKE2fSAwfZrMLLBgqGFhWGDgv4DezPzwXKFwa7cIaGicaGih0kcIaGicaGignVBNnVBguUBg9NkcC9pt0GrevcvuCG','y3jLyxrL','lcbUDwXSlca','igrHDgeGC3vJy2vZC2z1BgX5igfKzgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUyw1IywHRyw4Gzgf0ysa','cI8ViokuGokuGokuGcbtB2z0lurLBgv0zsbszwfKiezPBhrLCIbnAwrKBgv3yxjLicHsmtuPiokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGaOVlYbezwzHDwX0ieLUDMLZAwjSztOGAw5Qzwn0igzPBhrLCIaN','mtbPEhfZu0K','nZrNEwfht2u','EePfwgO','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjxn5C3rLBsuIlcaIC2vUC2L0AxzLiJOGzMfSC2uGFqOGicaGicaGicaGicbDcIaGicaGicaGicb9laOGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','oWOGicaGAwyGkgHLywrLCKnHBgmUDg90ywXFAxrLBxmPihSkicaGicaGzgf0ys50B3rHBf9PDgvTCYa9igrHDgeU','tK9MvLq','ChvZAa','vNPrDKG','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','igrLBMDHBIbHy3rPB25ZoIa','cIaGicaVlYbhzxqGy29YCMvSyxrPB24GsuqGzNjVBsbOzwfKzxiGkg9WDgLVBMfSkqOGicaGy29UC3qGy29YCMvSyxrPB25jzca9ihjLCs5OzwfKzxjZwYD4lwnVCNjLBgf0Aw9UlwLKj10GFhWGBNvSBdSk','DMLLD1f1zxj5','ktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DiefesLvtvcbJB21WBgv0zwqGC3vJy2vZC2z1BgX5ihDPDgGGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DiefesLvtvcbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8ViezHBgXIywnRoIb0yw5WysbLDMvUDhmkicaGicaGDhj5ihSkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','ksaMjIa','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGB3zLCNjPzguGkfiXncKUic9KzwXLDguGBwvSywT1A2fUihnVzNqGzgvSzxrLlcbIDwTHBIbOyxjKigrLBgv0zs4kicaGkIbbDg9TAwmGkhnHDhuGDhjHBNnHy3rPB24PoIbtruXfq1qGrK9sifvqrefursbYB3CGywT0AwyG4OAsig11DgfZAsbYzxvZywjSzsdIHPiGvvbeqvrfcIaGicOGAxnFzgvSzxrLzc9KzwXLDgvKx2f0l2rLBgv0zwrFyNKG4OAsienptu1jvcdIHPiGAw52ywXPzgf0zunHy2HLlIb1CgrHDgvKxYOGDgLKywSGzgLZzw50DwGUcIaGicOGuMvZCg9UC2uGAwrLBNrPAYbOyxjKigrLBgv0zsaOyMfJA3DHCMqTy29TCgf0ignSAwvUDcKUcIaGicOGqhbHCMfTihTpyMPLy3r9ignYAxrLCMLHic0GEYb3AgvYztOGwY4UlL0GFsbTzw5NAwT1DgKGzM9YBwf0ic9KzwXLDguGzxHPC3rPBMCkicaGkIbaCgfYyw0GE09IAMvJDh0GzxzLBNrdB250zxH0ic0GrxzLBNqGBgLMzwn5y2XLignVBNrLEhqGkg9WC2LVBMfSkqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ihSGC3vJy2vZCYWGBwvZC2fNzsWGzgvSzxrLzf9JB3vUDcWGzgvSzxrLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHJCML0zxjPysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cGOGicaGAwyGkcfJCML0zxjPysb8FcaHy3jPDgvYAweUD2HLCMuPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGih0kcIaGicbJB25ZDcb3CML0zvnVDxjJzsa9ihrOAxmUz2v0vgfIBgvtB3vYy2uOj3DYAxrLjYK7cIaGicbJB25ZDcbYzxr1CM5PBMDgAwvSzhmGpsb0AgLZlMDLDfjLDhvYBMLUz0zPzwXKCYGPoWOGicaGlY8GzgvSzxrLzf9IEtOGyM9KEsbLA3nWBgLZAxqG4OAsigv2zw50q29UDgv4Dc5HzgrPDgLVBMfSq29UDgv4Dc51C2vYx2LKiokgKIaNC3LZDgvTjY4kicaGignVBNn0igrLBgv0zwrcEsa9ihrOAxmUx3jLC29SDMvbDwrPDfvZzxjjzcHJCML0zxjPysWGzxzLBNrdB250zxH0lcaN','v0TUr0q','jZOGEWOGicaGicaGihr5Cgu6icC','BwfW','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGicaGCMvZDwX0lNnLBgvJDgvKid0Gj3rYDwuNoWOGicaGicaGih0kcIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFsK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrtDgf0AwnmB29RDxbeyxrHicG','jYWkicaGicaGicaN','ydSkcIaGicaGic8ViejHBMD1BIbxsevsrsbJBgf1C2uGAMLRysbHzgeGzgfUihrPzgfRigTVC29UzWOGicaGicbPzIaOkg9WDgLVBNmUD2HLCMuGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLksaMjIbVChrPB25ZlNDOzxjLlMXLBMD0Aca+idaPihX8cIaGicaGicaGicaOB3b0Aw9UCY53AgvYzsaMjIbVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmPicyMig9WDgLVBNmUD2HLCMuUy29UzgL0Aw9UCY5Szw5NDgGGpIaWksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4lcaNjYWGDgHPCY5YzwfKywjSzuzPzwXKCYK7cIaGicaGicaGicbXDwvYEsaRpsbG','ywrQDxn0q29UzMLN','CgfYzw50u29MDerLBgv0zq','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkg1VzgLMAwvKqM9KEsK7cGOGicaGicaGignVBNnVBguUBg9NkgbtDgf0AwmGBg9VA3vWihDPDgGGC2vSzwn0l29YzgvYihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGicaGigrHDge6igXPC3qScIaGicaGicaGicbZzwXLy3rLzfrHzZOGC2vSzwn0zwruywCScIaGicaGicaGicbXDwvYEtOGBw9KAwzPzwrcB2r5laOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFsbLBhnLihSkicaGicaGicaVlYbhDw5HA2fUig1VzgvSihvUDhvRig1LBMrHCgf0A2fUigrHDgeGzgvUz2fUig1LDgHVzcbSyw1HcIaGicaGicaGy29UC3qGBgLZDca9igf3ywL0ia','lY8Gv0fstKLorZOGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx2fTB3vUDcbZA2LWCgvKiokaLcbUBYbXDhKGzMLLBgqGy29UzMLNDxjLza','ksbKzwXLDguGx19Yw19FC2rdB2XDoYbYzxr1CM4Gx19YoYb9kq','jZSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBzgv0ywLSs2v5xtSkcIaGicaGic8Vic0TlsbiB29RoIbVBKjLzM9YzunVBxbVC2L0zuLUC2vYDcaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbKzxrHAwXjDgvTCYa9igrHDgfBzgv0ywLSs2v5xsb8FcbBxtSkicaGicaGicbJB25ZDcbIzwzVCMvdDhGGpsbdqI5IDwLSzenVBxbVC2L0zuLUC2vYDejLzM9YzunVBNrLEhqOAgvHzgvYrgf0ysWGzgv0ywLSsxrLBxmSihSkicaGicaGicaGihrHyMXLtMfTztOGjW','cI8Vifbpu1qGl2fWAs8','id0GrKfmu0uGrK9sifvqrefursC7cIaGicaGignVBNn0igXVy2Tszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOBg9JA1f1zxj5lcb3AgvYzuj1AwX0lNbHCMfTCYK7cGOGicaGicbPzIaOBg9JA1jLC3vSDc5YB3DZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGic8VifrPzgfRigfKysbYB3CGywT0Awy6ihrPzgfRigrPDgvTDwTHBIWGC3vKywGGDgvYlxnVzNqTzgvSzxrLlcbHDgf1igTHBgfOihjHy2uUcIaGicaGicaGy29UC3qGBM90rM91BMrfCNjVCIa9ig5LDYbfCNjVCIGNuMvJB3jKig5VDcbMB3vUzcbVCIbHBhjLywr5igrLBgv0zwqNktSkicaGicaGicbUB3rgB3vUzevYCM9YlNn0yxr1C0nVzguGpsa0mdq7cIaGicaGicaGDgHYB3CGBM90rM91BMrfCNjVCJSkicaGicaGFqOkicaGicaGlY8GmI4Gu29MDc1KzwXLDguGDgLHCcbYB3CGywT0AwyGkg11BhrPlxjVDZOGDgLHCcbYB3CGBwvTywTHAsbZDwzMAxGGDxvPzhy3ihnLBMrPCMKPlGOGicaGicbJB25ZDcbKzwXLDgvKsxrLBxmGpsbBxtSkicaGicaGzM9YicHJB25ZDcbSB2nRzwrsB3CGB2yGBg9JA1jLC3vSDc5YB3DZksb7cIaGicaGicaGy29UC3qGC2v0q2XHDxnLCYa9ifTDoWOGicaGicaGignVBNn0ihvWzgf0zvbHCMfTCYa9ifTDoWOGicaGicaGigXLDcbWid0GmtSk','l3vWzgf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','EeTks3i','cGOGicaGy29UC29Szs5SB2COj0nHBgn1Bgf0zwqGDg90ywXZoICSihSkicaGicaGDg90ywXFAxrLBxm6igrHDgeUDg90ywXFAxrLBxmScIaGicaGihrVDgfSx3f0EtOGzgf0ys50B3rHBf9XDhKScIaGicaGihrVDgfSx2fTB3vUDdOGzgf0ys50B3rHBf9HBw91BNqkicaGih0PoWOGicaG','iezst00GjhT0AgLZlNDYAxrLu291CMnLFsbxsevsrsaKE3DOzxjLq2XHDxnLFwa7cIaGicaGignVBNn0igHLywrLCLjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhqUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicb0AhjVDYbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqNktSkicaGicaGFqOkicaGicaGy29UC3qGAgvHzgvYuhjPBwfYEuTLEvzHBhvLid0GAgvHzgvYuMvZDwX0lNjVD3nBmf1BjW','Dg90ywXFCxr5','icaGihjLDhvYBIbZDxbLCI5MB3jTyxrszxnWB25ZzurHDgeOzgf0ysK7','jYWkicaGicaGDgfIBgu6ig1VzgvSsw5MBY50ywjSzsWkicaGicaGzMLLBgrZoIbTB2rLBeLUzM8UzMLLBgrZlaOGicaGicbXDwvYEvnVDxjJzxm6ig1VzgvSsw5MBY5XDwvYEvnVDxjJzxmScIaGicaGigfJDgLVBNm6igfJDgLVBNmScIaGicaGigrHDgfIyxnLvhLWztOGj3bVC3rNCMvZjYWkicaGicaGz2vUzxjHDgvKoIaN','odqYodHwDKTTCKm','jYK7cGOVlYbjC3n1zsaJmtm6igvRC3rYywSGzMLLBgqGCgvUEwvIywiGA29UzMXPAYbKyxjPigvYCM9YihvUAxf1zs12Aw9SyxrPB24Gug9ZDgDYzvnrtc4klY8GtwvUz2vTyMfSAwTHBIbTyxaGEYbMAwvSzdOGw3bLC2fUxsb9igf0yxuGBNvSBcaOy2fSBc1ZAxrLig1LBMCTB21PDcbGzgv0ywLSC2aPlGPMDw5JDgLVBIbIDwLSzer1CgXPy2f0zurLDgfPBhmOzxjYB3iPihSkicbPzIaOiwvYCM9YihX8ihr5CgvVzIbLCNjVCI5KzxrHAwWGit09icDZDhjPBMCNksbYzxr1CM4GBNvSBdSkicbJB25ZDcbTid0GzxjYB3iUzgv0ywLSlM1HDgnOkc9Es2v5ifWOkfTEkv0RkvWPps8PoWOGigLMicGHBsKGCMv0DxjUig51BgW7cIaGy29UC3qGy29SCYa9ig1Bmv0UC3bSAxqOjYWNks5TyxaOkgmPid0+igmUDhjPBsGPlNjLCgXHy2uOl14IFciKl2CSicCNksKUzMLSDgvYkejVB2XLyw4PoWOGigLMicHJB2XZlMXLBMD0Aca9pt0GmcKGCMv0DxjUig51BgW7cIaGy29UC3qGBxnNid0Gy29SCY5Szw5NDgGGpIaXcIaGica/icDbihjLy29Yzcb3AxrOihrOAxmGy29TyMLUyxrPB24GB2yGDMfSDwvZigfSCMvHzhKGzxHPC3rZjWOGicaGoIaNqsbYzwnVCMqGD2L0Acb0AgLZihzHBhvLigfSCMvHzhKGzxHPC3rZjZSkicbJB25ZDcbKzxrHAwXZid0GE307cIaGzM9YicHJB25ZDcbJig9MignVBhmPigrLDgfPBhnBy10GpsbBBxnNxtSkicbYzxr1CM4Gzgv0ywLSCZSkFqO','r29qCMC','ywDNCMvNyxrLq29UzMLN','BMfTzq','BwLZC2LUzW','jhTWyxLSB2fKlNrHyMXLtMfTzsb8FcaIDw5KzwzPBMvKx3rHyMXLiN0','cGOGicaGicbMB3iGkgnVBNn0igHLywrLCIbVzIbOzwfKzxjszxn1BhrZksb7cIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHKzxrHAwXrDwvYEsWGw2HLywrLCLT0AgLZlNbYAw1HCNLlzxLDxsK7cGOGicaGicaGignVBxbVC2L0zvjLC3vSDhmUChvZAcH7cIaGicaGicaGicaUlI5OzwfKzxiScIaGicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6ignVBxbVC2L0zvjLC3vSDhmUBgvUz3rOlaOGicaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbYzwfKq29TCg9ZAxrLoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqO','ywXS','icH3AxrOigrLDgfPBcbPDgvTCYK','BuL4r3K','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GzgvMAw5PC2KGA29SB20GEwfUzYbKyxbHDcbKAwnHCMKkicaGkIbaCMv0DxjUCYb7qxjYyxL9ieTVBg9TihLHBMCGzgfWyxqGzgLJyxjPcIaGicOVcIaGz2v0u2vHCMnOywjSzunVBhvTBNmOksb7cIaGicbYzxr1CM4G','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIikicaGicaGicaGih0kicaGicaGicb9','id0GjcCGkYbWktSkicaGicaGicbWkYS7cIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOzgvSzxrLzej5ktSkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHWA1zHBcK7cGOGicaGicaGic8Vie1HC3rLCIaOzgvWDgGTmcKGzgKTvvbeqvrfigTLihDYAxrLu291CMnLicHYzwfKl3DYAxrLihnWBgL0lwf3yxjLlcbPzgvUDgLRigPHBhvYcIaGicaGicaGlY8GzxHPC3rPBMCPicSGuKvuvvjosu5hihvUDhvRihjLC3bVBNnLlIbezxnJzw5Kyw50igTLig5HBweGDgfIzwWGy2XVC3vYzsaOCxvHBgLMAwvKks4kicaGicaGicbJB25ZDcbFx3rHCMDLDca9ign1CNjLBNqUAxnnyxn0zxiGpYb3CML0zvnVDxjJzsa6ign1CNjLBNqUDgfIBgu7cIaGicaGicaGy29UC3qGx19Yzxr1CM5PBMCGpsbJDxjYzw50lMLZtwfZDgvYid8GkcCGuKvuvvjosu5hicCGkYbYzxr1CM5PBMDgAwvSzhmPidOGjYC7cIaGicaGicaGy29UC3qGx191CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOcIaGicaGicaGicaNvvbeqvrficCGkYbFx3rHCMDLDcaRicCGu0vuicCGkYbZzxrdBgf1C2vZlMPVAw4OjYWGjYKGkYaNifDirvjficCGkYbUB2rLlNbRicSGjYa9icqNicSGCcaRif9FCMv0DxjUAw5NlaOGicaGicaGicaGDxbKyxrLugfYyw1ZcIaGicaGicaGktSkicaGicaGicb0B3vJAgvKlMfKzcHJDxjYzw50lNrHyMXLktSkicaGicaGicbPzIaOy3vYCMvUDc5PC01HC3rLCIaMjIbFx3vWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbTyxn0zxjezwXLDgvKsxrLBxmUChvZAcHFx3vWzgf0zvjLC3vSDc5YB3DZwZbDktSkicaGicaGicb9cGOGicaGicaGic8VicGZksbLEhbHBMq6igfUywSGquTusuyGkgLZx2rLBgv0zwq9rKfmu0uPigXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRihnVzNqTzgvSzxrLlaOGicaGicaGic8VicaGicbgt1iGvvbeqvrficHRDw5JAsbZzwjLBhvTig11DgfZAsKSihnRAxaGCgfYzw50q29SDw1Uie5vteWUievUCxvLDwuGDgLHCcbYB3CUcIaGicaGicaGzM9YicHJB25ZDcbJAcbVzIbUB2rLlMnOAwXKCMvUksb7cIaGicaGicaGicbPzIaOy2GUB25ezwXLDguGit09icDJyxnJywrLjYb8FcbJAc5JAgLSzfnVzNrezwXLDguGit09ihrYDwuPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19LEhbHBMrwywWGpsbJDxjYzw50lNjVD1TJAc5WyxjLBNrdB2X1Bw5DoWOGicaGicaGicaGAwyGkf9FzxHWyw5KvMfSid09psbUDwXSihX8if9FzxHWyw5KvMfSid09psb1BMrLzMLUzwqPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19JAgLSze5VzguGpsbFx3nKq2fZy2fKzu1LDgeUBM9KzxnBy2GUy2HPBgruywjSzv07cIaGicaGicaGicaVlYbpuKrfuIbcwsa8y2HPBgrqAZ4GC2vIzwX1Bsbgt1iGvvbeqvrfiokgKIb1CNv0yw4GywT1AxnPC2KGBg9JAYbKzxrLCM1PBMLZDgLRicHTAxrPz2fZAqOGicaGicaGicaGlY8GCMLUz2fUigTVBMT1CMvUC2K7igrLywrSB2nRihbLBNvOid0GugHHC2uGmdrKks4GsgfUEweGBwvUz3vIywGGvvjvvefoigjHCMLZlcbIDwTHBGOGicaGicaGicaGlY8GAgLTChvUyw4GAgfZAwWG4OAsigHHC2LSignHC2nHzguGAwrLBNrPAY4kicaGicaGicaGignVBNn0if9Fy2HPBgrsB3DZid0Gkgf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGj1nftevdvcaNicSGx19ZzfnLBgvJDenVBhmOx19JAgLSze5VzguPicSGjYbguK9nicCGkYbJAc5JAgLSzfrHyMXLicSGjYbxsevsrsaNicSGy2GUy2HPBgrdB2X1Bw4GkYaNid0GjdeGqu5eia','nJK0mJq0nfP0Bwz1Cq','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEWOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGywrQDxn0Aw5Nia','ksb7cIaGicaGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDZB2z0lwrLBgv0ztOGy29SDw1Uia','laOGicaGicb3B3jRzMXVD0nVBMzPzZOG','laOGicaGicbKyxrHyMfZzvr5Cgu6icDWB3n0z3jLCYCScIaGicaGigDLBMvYyxrLzdOGjW','y29UC3rYywLUDhm','mZGZmdDdz0PlDgi','jZSkicaGignVBNn0ihjLy29YzeLKid0GCMvXlMjVzhLBChjPBwfYEuTLEv0GFhWGCMvXlMjVzhKUAwq7cIaGicbPzIaOixjLy29YzeLKksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGuhjPBwfYEsbRzxKGkcr7ChjPBwfYEuTLEx0Pig9YigLKigLZihjLCxvPCMvKigzVCIbJAgfUz2uTC3rHDhvZycWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNn0yxr1CYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNtwLZC2LUzYbYzxf1AxjLzcbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGj3n0yxr1CYbPCYbYzxf1AxjLzcbMB3iGy2HHBMDLlxn0yxr1CYCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','sMLwu2u','AgL1qKy','laOGicaGicaGigrLBgv0zwrdAgLSzfjLy29Yzhm6igrLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50','ywn0AxzLx29UBhK','jYWGDMfSDwu6igrHDgeU','cIaGicbJB25ZDcbOzwfKzxjdywXJid0G','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','cGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','Dg5Xzg4','Aw5JBhvKzxm','igjHCNukCM91DgvYlNbVC3qOjY9JCMvHDguNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','C2XPy2u','cIaGicaGih0','DK9LBLO','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsb1CgrHDguG','Bg9JA2vKuM93wYC','icaGic8VifbYAw9YAxr5idi6ihzPzxDrDwvYEsaODMLYDhvHBcb2Awv3igrHCMKGCgf5Bg9HzcKkicaGia','l2zPCNn0oICSiePtt04UC3rYAw5NAwz5khjLCs5IB2r5lcbUDwXSlcaYksK7cGOGicaGlY8GvMfSAwrHC2KGCMvXDwvZDcbIB2r5cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYboB3jTywXPEMu6igfYCMf5ideGzwXLBwvUic0+ig9IAMvJDcaOyMfJA3DHCMqGy29TCgf0AwjSzsKkicaGigLMicHbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIbYzxeUyM9KEs53AgvYzs5Szw5NDgGGpt09idePihSkicaGicaGCMvXlMjVzhKUD2HLCMuGpsbYzxeUyM9KEs53AgvYzvSWxtSkicaGih0kcIaGicaVlYbwywXPzgfZAsb3AgvYzsbJBgf1C2uGlsbOyxj1CYbVyMPLy3qGDhvUz2DHBcb7A2v5lcb2ywX1zx0kicaGigLMicGHCMvXlMjVzhKUD2HLCMuGFhWGDhLWzw9MihjLCs5IB2r5lNDOzxjLice9psaNB2jQzwn0jYb8FcbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNtwLZC2LUzYbYzxf1AxjLzcbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGj1bYB3bLCNr5ihDOzxjLigLZihjLCxvPCMvKigfZihTRzxKSihzHBhvLFsbVyMPLy3qNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicj3AgvYzsi6ihSGiMTLEsi6ici','B2jQzwn0','zMvHDhvYzxm','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','cI8VieDfvcaVyxbPlW','CMvXDwvZDfnJB3bL','jYWkicaGicaGicaGigHLywX0AenOzwnRoIbGAhr0CdOVlYr7zgLZCgXHEuHVC3r9oIr7Cg9YDh0VyxbPlW','Aw5JBhvKzv9KzwXLDgvK','qu5eicG','cIaGlYOQcIaGicOGq29TCg9ZAxrLignYzwf0zsaTienYzwf0zsbOzwfKzxiGD2L0AcbKzxrHAwWGAxrLBxmGAw4GysbZAw5NBguGDhjHBNnHy3rPB24kicaGkIbaCgfYyw0GE09IAMvJDh0Gzgf0ysaTierHDgeGy29UDgfPBMLUzYbOzwfKzxiGyw5KigrLDgfPBcbPDgvTCYbHCNjHEqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ienYzwf0zwqGCMvJB3jKihDPDgGGAxrLBxmkicaGkI8kicbHC3LUyYbJCMvHDgvdB21WB3nPDguOzgf0ysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGCg9VBca9igrIlMDLDfbVB2WOktSkicaGignVBNn0ignSAwvUDca9igf3ywL0ihbVB2WUy29UBMvJDcGPoWOkicaGihrYEsb7cIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNqKvhsu4NktSkcIaGicaGic8Viev4DhjHy3qGAgvHzgvYigrHDgeGkgv4y2X1zguGzgv0ywLSigL0zw1ZkqOGicaGicbJB25ZDcbOzwfKzxjeyxrHid0GEYaUlI5KyxrHih07cIaGicaGignVBNn0igrLDgfPBeTLEsa9icC','cIaQcIaQievUzhbVAw50CYb1BNr1AYa','igzPzwXKCWOGkIbeyxrHyMfZztOGug9ZDgDYzvnrtaOGkI8kcI8VienpuLmGzgL0yw5Nyw5PigrPigXLDMvSigfWCcbVBgvOignVCNmGBwLKzgXLD2fYzsaOBgLOyxqGA29UzMLNDxjHC2KGq09su19ftKfcteveigrHBIbdt1jtx09ssuDjtLmGzgKGlMvUDIKkcGOklY8GtwLKzgXLD2fYzsb1BNr1AYb2ywXPzgfZAsbWyxLSB2fKihbHzgeGBwv0B2rLifbpu1qkCM91DgvYlNvZzsGOCMvXlcbYzxmSig5LEhqPid0+ihSkicbPzIaOCMvXlM1LDgHVzca9pt0Gj1bpu1qNksb7cIaGicb0CNKGEWOGicaGicaVlYbtA2LWihzHBgLKyxrPB24GDw50DwSGAw1WB3j0ihjVDxrLCYaOBwvUz2D1BMfRyw4GBxvSDgLWyxj0l2zVCM0Tzgf0ysWGyNvRyw4GsLnptIKkicaGicaGAwyGkhjLCs5WyxrOlNn0yxj0C1DPDgGOjY9PBxbVCNqTjYKPihSkicaGicaGicbYzxr1CM4GBMv4DcGPoWOGicaGicb9cGOGicaGicaVlYbwywXPzgfZAsb1BxvTihvUDhvRihbHEwXVywqkicaGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDnAxnZAw5NihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPlaOGicaGicaGicaGzw5KCg9PBNq6icCVyxbPlW','FwaPoWOkicaGihjLDhvYBIbYzxmUC3rHDhvZkdiWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGig1LC3nHz2u6icC','x2LK','lMnOyw5Nzvn0yxr1C0rHDgeOCMvXlMjVzhKSihDVCMTMBg93q29UzMLNktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbdsefor0uTu1rbvfvtignVBxbSzxrLzcb3AxrOB3v0ignVBxbVBMvUDcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDieniqu5hrs1tvefuvvmGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YigfKANvZDgaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGywrQDxn0BwvUDhmGyxjYyxKkicaGigLMicGHCMvXlMjVzhKUywrQDxn0BwvUDhmGFhWGiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUywrQDxn0BwvUDhmPihX8ihjLCs5IB2r5lMfKANvZDg1LBNrZlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNywrQDxn0BwvUDhmGyxjYyxKGAxmGCMvXDwLYzwqGyw5Kig11C3qGBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','Cg9W','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwqNlaOGicaGicbKyxrHoIbYzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NDxbKyxrLigrHDgeG','otG3ndq1mg9ku0HXEq','wYDUyw1LjYWGj25HBweNlcaNy29KzsCSicDRB2rLjYWGj2fSBcDD','ktOGC3rYAxaGC3vMzML4icCJiYCGkYbRB25MBgLRidqWoqOGicaGicaGihSkicaGicaGicaGignVBNn0if9Fy3vYid0GBg9JA2vKuM93wYC','l2rLBgv0zsaTie1LBMDOyxb1CYbKyxrHia','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjvbVCNrHBcuIih0ScIaGicaGicaGicaGicaGEYaIA2v5iJOGiG','l3vWzgf0zs1JB21WB3nPDguGlsbdB21WB3nPDguGDxbKyxrLia','cIaGicb7cIaGicaGignVBNn0if9FC2rdAgvJAYa9igf3ywL0ia','jYWGDMfSAwrgAwvSzhmSigrHDgf0ywjSzxnxAgvYzsWGEYbYzwfKywjSzuzPzwXKCYWGC2nOzw1HrMLLBgrZlcbKyxrHDgfIBgvZrMLLBgrZih0PoWOkicaGic8VifnLDhvWihbYAw1HCNKGA2v5igrHCMKGCgf5Bg9HzcbHDgf1igzHBgXIywnRigTLigzPzwXKtMfTzsbWzxj0yw1HcIaGicb0AgLZlNbYAw1HCNLlzxKGpsaN','cIaGlYOQcIaGicOGvMfSAwrHDguGzMLLBgqGzgvUz2fUignVBNn0CMfPBNrZcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCgfYyw0GE3n0CMLUz30GB3bLCMf0Aw9Uic0Gt3bLCMf0Aw9UicHPBNnLCNqVDxbKyxrLkqOGicaQiebYzxr1CM5ZihTpyMPLy3r9ifzHBgLKyxrPB24GCMvZDwX0ihT2ywXPzcWGzxjYB3jZlcb3yxjUAw5NCYWGC2fUAxrPEMvKFqOGicaQlWOGigfZEw5JihzHBgLKyxrLrMLLBgrdB25ZDhjHAw50CYHMAwvSze5HBwuSihzHBhvLlcbVCgvYyxrPB24GpsaNAw5Zzxj0jYKGEWOGicaGy29UC3qGy29UzMLNid0GDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKtMfTzv07cIaGicbPzIaOiwnVBMzPzYKGEWOGicaGicbYzxr1CM4GE3zHBgLKoIb0CNvLlcbZyw5PDgL6zwq6ihzHBhvLlcbLCNjVCNm6ifTDlcb3yxjUAw5NCZOGw119oWOGicaGFqOkicaGignVBNn0ihjLC3vSDca9ihSkicaGicaGDMfSAwq6ihrYDwuScIaGicaGigvYCM9YCZOGw10ScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIb2ywX1zqOGicaGFtSkcIaGicbJB25ZDcbJB25ZDhjHAw50CYa9ignVBMzPzY5JB25ZDhjHAw50CYb8Fcb7FtSkicaGignVBNn0igzPzwXKvhLWzsa9ignVBMzPzY50ExbLihX8icDZDhjPBMCNoWOkicaGic8VideUienOzwnRihjLCxvPCMvKcIaGicbPzIaOy29UC3rYywLUDhmUCMvXDwLYzwqGjIyGkhzHBhvLid09psb1BMrLzMLUzwqGFhWGDMfSDwuGpt09ig51BgWGFhWGDMfSDwuGpt09icCNksKGEWOGicaGicaVlYbtA2LWoIbHDxrVr2vUzxjHDguGyxrHDsbWCMLTyxj5s2v5igrPigLUC2vYDaOGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOy29UC3rYywLUDhmUyxv0B0DLBMvYyxrLihX8ignVBNn0CMfPBNrZlNbYAw1HCNLlzxKPksb7cIaGicaGicaGlY8Gt0SG4OcuigfRyw4GzgKTz2vUzxjHDguGB3rVBwf0AxmkicaGicaGFqOGicaGicaVlYbtA2LWoIb1CgrHDguGCgfYDgLHBcdIGjqGzMLLBgqGDgLKywSGzgLRAxjPBsbIzxjHCNrPihrPzgfRigrPDwjHAaOGicaGicbLBhnLigLMicHVCgvYyxrPB24Gpt09icD1CgrHDguNicyMihzHBhvLid09psb1BMrLzMLUzwqPihSkicaGicaGicaVlYbpsYdIGjqGzMLLBgqGDgLKywSGC2vKyw5NigrPlxvWzgf0zqOGicaGicb9cIaGicaGigvSC2uGEWOGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Yzxf1AxjLze1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigLZihjLCxvPCMvKydSkicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGicaGCMvZDwX0lNzHBgLKid0GzMfSC2u7cIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFqOGicaGFqOkicaGic8VifnRAxaGDMfSAwrHDgLVBIbQAwTHihzHBhvLigTVC29UzYbKyw4GDgLKywSGCMvXDwLYzwqkicaGigLMicH2ywX1zsa9pt0GDw5KzwzPBMvKihX8ihzHBhvLid09psbUDwXSihX8ihzHBhvLid09psaNjYKGEWOGicaGicbYzxr1CM4GCMvZDwX0oWOGicaGFqOkicaGic8VidiUifr5CguTC3bLy2LMAwmGDMfSAwrHDgLVBGOGicaGC3DPDgnOicHMAwvSzfr5CguPihSkicaGicaGy2fZzsaNC3rYAw5NjZOkicaGicaGy2fZzsaNDgv4DcC6cIaGicaGicaGlY8GDgv4DcbKAxzHBgLKyxnPigLKzw50AwSGzgvUz2fUihn0CMLUzYaODw5IB3vUzgvKihn0CMLUzYK7igHHBNLHigjLCMjLzgekicaGicaGicaVlYbWzw1LDgfHBIbvssaO4OAsihrLEhrHCMvHksWGyNvRyw4G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BICPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHigjVB2XLyw4GkhrYDwuVzMfSC2uPycK7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8VifrLCMLTysbOyw55ysbZzxqGA2fUB25PAYaOC2vSyxjHCYbnEvnrtc9pCMfJBguVu1fmAxrLktOGDhj1zs8NDhj1zsCVms8NmsCkicaGicaGlY8GzgfUigzHBhnLlYDMywXZzsCVmc8NmcCUie5PBgfPigXHAw4GreLut0XbsYWGyNvRyw4GzgLWywTZysb2AweGqM9VBgvHBIGPcIaGicaGic8VicH5yw5Nig1LBwj1yxqGC3rYAw5Nig5VBI1RB3nVBMCGC2vWzxj0AsaNBM90lweTyM9VBgvHBICGzgLHBs1KAwfTigPHzgKkicaGicaGlY8GDhj1zsKUie1LBMPHBwLUideGAw5WDxqGlt4GyMvOyxzPB3iGAwrLBNrPAYbSAw50yxmGzgLHBgvJDc4kicaGicaGAwyGkhnHBML0AxPLzca9pt0GDhj1zsb8FcbZyw5PDgL6zwqGpt09icD0CNvLjYb8FcbZyw5PDgL6zwqGpt09ideGFhWGC2fUAxrPEMvKid09psaNmsCPihSkicaGicaGicbZyw5PDgL6zwqGpsb0CNvLoWOGicaGicb9igvSC2uGAwyGkhnHBML0AxPLzca9pt0GzMfSC2uGFhWGC2fUAxrPEMvKid09psaNzMfSC2uNihX8ihnHBML0AxPLzca9pt0Gmcb8FcbZyw5PDgL6zwqGpt09icCWjYKGEWOGicaGicaGihnHBML0AxPLzca9igzHBhnLoWOGicaGicb9igvSC2uGEWOGicaGicaGigvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigeGyM9VBgvHBIaODhj1zs9MywXZzsLGktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb7cIaGicaGihzHBgLKoIbLCNjVCNmUBgvUz3rOid09psaWlaOGicaGicbLCNjVCNm6igvYCM9YCYWkicaGicaGD2fYBMLUz3m6ifTDlaOGicaGicbZyw5PDgL6zwq6ihnHBML0AxPLzaOGicaGFtSk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zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cGOGicaGicbPzIaOy29UC3rYywLUDhmUywz0zxiPihSkicaGicaGicbJB25ZDcbHzNrLCKzPzwXKid0Gy29UC3rYywLUDhmUywz0zxi7cIaGicaGicaGAwyGkgrHDgfBzMLLBgroyw1LxsaMjIbKyxrHw2fMDgvYrMLLBgrDksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbPzIaOBMv3ierHDguOzgf0yvTMAwvSze5HBwvDksa8psbUzxCGrgf0zsHKyxrHw2fMDgvYrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5HzNrLCK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGywz0zxiGjYr7ywz0zxjgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZcIaGicb9oWOGih0k','iL0kicaGicaGicaGih0ScIaGicaGicaGicbLEgfTCgXLx2fKDMfUy2vKoIb7cIaGicaGicaGicaGicj3AgvYzsi6ihSkicaGicaGicaGicaGicaIBg9NAwmIoIaIt1iIlaOGicaGicaGicaGicaGicjJB25KAxrPB25ZiJOGwWOGicaGicaGicaGicaGicaGEYaIA2v5iJOGiG','jYWkicaGicaGicbJB25ZDhjHAw50CZOG','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGBMv4DcGPoWP9ktSk','ywn0Aw9U','CMvHzenVBxbVC2L0zq','zM9YBxvSyq','jYWGzw5KCg9PBNroyw1LlcbLEhbVCNrdB25MAwCPoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFsbJyxrJAcaOzxHWB3j0rxjYB3iPihSkicaGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEWOGicaGicaGicaGicaGicaGzxzLBNq6icDLEhbVCNrFCMvNAxn0CMf0Aw9Ux2vYCM9YjYWkicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicbLCNjVCJOGzxHWB3j0rxjYB3iUBwvZC2fNzqOGicaGicaGicaGicaGih0SigbfEhbVCNqGCMvNAxn0CMf0Aw9UigzHAwXLzcbMB3iGjhTLBMrWB2LUDe5HBwv9oIaKE2v4Cg9YDevYCM9YlM1LC3nHz2v9ycK7cIaGicaGicaGicaGih0kcIaGicaGicaGicaGic8VifjLz2LZDgvYigLTCg9YDcbYB3v0zxmGDw50DwSGzw5KCg9PBNqGAw5PicHHDxrVlwrLDgvJDcbKyxjPigvTyMvKzgvKignVBMzPzYKkicaGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGicbJB25ZDcbPBxbVCNrdB25MAwCGpsbLEhrYywn0sw1WB3j0q29UzMLNrNjVBuvUzhbVAw50kgvUzhbVAw50ugf0AcK7cIaGicaGicaGicaGicaGAwyGkgLTCg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGicaGsw1WB3j0sgfUzgXLCI5YzwDPC3rLCLjVDxrLCYHHChaSicC','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGCM91DgvYid0GzxHWCMvZCY5sB3v0zxiOktSky29UC3qG','laOGicaGicbKyxrLrMLLBgrZoIa','cIaGicaGih0PktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHicG','ChjPy2vgAwvSza','l2nOyw5Nzs1ZDgf0DxmGlsbdAgfUz2uGC3rHDhvZia','laOGicaGicbJB2X1Bw5gB3jTyxrZoIa','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIiScIaGicaGicaGicaGici','mtC3odCWog1QBw9kDa','z1nqAwy','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkhjLCs5IB2r5ktSkcIaGicaGignVBNnVBguUBg9NkgbmB29RDxaGD2L0AcbMAwX0zxiGCMvZDwX0CZOGjhTSAxn0lMXLBMD0Ah0GCMvJB3jKCYbMB3vUzgaPoWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6igXPC3qUBgvUz3rOlaOGicaGicaGigrHDge6igXPC3qScIaGicaGicaGCxvLCNK6ihjLCs5IB2r5laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOkicaGih0GzwXZzsb7cIaGicaGic8ViezVCM1HDcbSyw1Higf0yxuGCMvXDwvZDcb0yw5WysbxsevsrsbJBgf1C2uGDgv0yxbPigrLBMDHBIbtruXfq1qkicaGicaGy29UC29Szs5SB2COj1vZAw5NigXLz2fJEsbMB3jTyxqGD2L0AcbZzwXLy3rLzf90ywCGB3iGC2vSzwn0lw9UBhKGCMvXDwvZDcCPoWOkicaGicaGy29UC3qGC2vSzwn0zwruywCGpsbYzxeUyM9KEs5ZzwXLy3rLzf90ywCGFhWGjYC7cIaGicaGignVBNnVBguUBg9Nkga','BwfZDgvY','idW+icqYieXjtuLuideNlaOGicaGicaGicaGicaGifTFx29YAwDPBMfSlcbSB2nRzwrsB3DBjW','CwLABMW','Ew1Yt3u','iIK7cIaGicaGicaGicaGicaGzMTfCNjVCI5ZDgf0DxndB2rLid0GndiYoWOGicaGicaGicaGicaGihrOCM93igzRrxjYB3i7cIaGicaGicaGicaGih0kicaGicaGicaGih0kicaGicaGicb9','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GrLjptsbJBgf1C2uGDw50DwSGBg9VA3vWigjLCMrHC2fYA2fUihbYAw9YAxrHCYbYzxnVBhvZAsbZDw1IzxiGzgf0yqOGicaQifbYAw9YAxrHCZOGDMLLD05HBwuG4OAsihzPzxDrDwvYEsdIHPiGDgfIBgvoyw1LicHRB25ZAxn0zw4GzgvUz2fUic9YzwfKigrHBIaVzMLYC3qPcIaGicOGqhjLDhvYBNmGE3n0CMLUz30GrLjptsbJBgf1C2uGzgvUz2fUigfSAwfZicDHjWOGicaQlWOGigDLDeXVB2T1CfnVDxjJzsGPihSkicaGignVBNn0ihjLywrrDwvYEsa9ihrOAxmUz2v0uMvHzff1zxj5kcK7cIaGicbJB25ZDcbZAw1WBgvrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7cIaGicbPzIaOCMvHzff1zxj5lNrYAw0OksaHpt0GC2LTCgXLuxvLCNKPihSkicaGicaGlY8GDMLLD05HBwuGyxrHDsb2Awv3uxvLCNKGywT0AwyG4Ocuigj1BMDRDxmGC2vIywDHAsbZDwjXDwvYEqOGicaGicbYzxr1CM4GjYGNicSGCMvHzff1zxj5icSGjYKGysC7cIaGicb9cIaGicbYzxr1CM4GDgHPCY5YzwfKu291CMnLicSGjYbHjZSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDeXVB2T1CerHDgeGDw50DwSGBwvUz2D1BMfRyw4GA29SB20GjW','oWOGih0kcIaGlYOQcIaGicOGqNvPBgqGC2vHCMnOifDirvjfignSyxvZzsbIzxjKyxnHCMTHBIbZzwfYy2HHyMXLignVBhvTBNmkicaGkIbaCgfYyw0GE3n0CMLUz30GC2vHCMnOvMfSDwuGlsboAwXHAsbWzw5JyxjPyw4kicaGkIbaCgfYyw0GE3n0CMLUz30GC2vHCMnOqNKGlsblB2XVBsb5yw5NigrPy2fYAqOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifDirvjfignSyxvZzqOGicaQlWOGigj1AwXKu2vHCMnOv2HLCMvdBgf1C2uOC2vHCMnOvMfSDwuSihnLyxjJAej5id0Gj2fSBcCPihSkicaGigLMicGHC2vHCMnOvMfSDwuGFhWGC2vHCMnOvMfSDwuUDhjPBsGPid09psaNjYKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGy29UC3qGC2vHCMnOywjSzunVBhvTBNmGpsb0AgLZlMDLDfnLyxjJAgfIBgvdB2X1Bw5ZkcK7cIaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGy29UC3qGBgLRzvzHBhvLid0GycuKE2vZy2fWzwrtzwfYy2HwywX1zx0LydSkcIaGicbPzIaOC2vHCMnOqNKGjIyGC2vHCMnOqNKGit09icDHBgWNksb7cIaGicaGic8VienHCMKGzgKGA29SB20GC3bLC2LMAwSkicaGicaGy29UC3qGy29SDw1Uid0GC2vHCMnOywjSzunVBhvTBNmUzMLUzcHJB2WGpt4Gy29SlM5HBwuGpt09ihnLyxjJAej5ktSkicaGicaGAwyGkgnVBhvTBIaMjIbJB2X1Bw4UC2vHCMnOywjSzsKGEWOGicaGicaGihjLDhvYBIbGv0HfuKuGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydSkicaGicaGFqOGicaGFqOkicaGic8VienHCMKGzgKGC2vTDweGA29SB20GC2vHCMnOywjSzqOGicaGy29UC3qGy29UzgL0Aw9UCYa9ihnLyxjJAgfIBgvdB2X1Bw5ZcIaGicaGic5MAwX0zxiOy29Sid0+ignVBc5ZzwfYy2HHyMXLkqOGicaGicaUBwfWkgnVBca9pIbGvvbqrviOjhTJB2WUBMfTzx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPycK7cGOGicaGAwyGkgnVBMrPDgLVBNmUBgvUz3rOid4GmcKGEWOGicaGicbYzxr1CM4GyfDirvjficGKE2nVBMrPDgLVBNmUAM9PBIGNie9sicCPFsLGoWOGicaGFqOkicaGihjLDhvYBIaNjZSkicb9','icaGigLMicHMB3jTyxr0zwqPihSk','y29SDw1UrM9YBwf0CW','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YihvWzgf0zwaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','oICSigvYCM9YktSkcIaGicaVlYbtDgf0DxmGDhjHBNnPDgLVBIbUB3qGywXSB3DLzaOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqYmIb8FcbLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDdyw5UB3qGy2HHBMDLihn0yxr1CYCPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj05VihrYyw5ZAxrPB25ZigrLzMLUzwqNksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mJiPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNu3rHDhvZihrYyw5ZAxrPB24GBM90igfSBg93zwqNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8Gq29Uy3vYCMvUDcbTB2rPzMLJyxrPB24Gkg9WDgLTAxn0AwmGy29Uy3vYCMvUy3KGy2HLy2SGDMLHihn0yxr1CYbNDwfYzcbJBgf1C2uPcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0Gj1DpuKTgte9xx0nptKnvuLjftLrFtu9esuzjq0fusu9ojYb8FcbLCNjVCI5ZDgf0DxndB2rLid09psa0mdKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0nVBMn1CNjLBNqGBw9KAwzPy2f0Aw9UjYWkicaGicaGicbTzxnZywDLoIbLCNjVCI5TzxnZywDLlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxrPB24GzxjYB3jZcIaGicbPzIaOzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNAxmGCMvXDwLYzwqGzM9YjYKGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNAxmGBM90igeGDMfSAwqGzMLLBgqNksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbLCNjVCICScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbiB29Rigv4zwn1DgLVBIbMywLSzwqkicaGigLMicHLCNjVCI5TzxnZywDLlMLUy2X1zgvZkcDOB29RigzHAwXLzcCPihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj29UqMvMB3jLjYKGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNB25bzNrLCICPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmIKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDxB3jRzMXVDYbOB29RigzHAwXLzcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbszwnVCMqGBM90igzVDw5KcIaGicbPzIaOzxjYB3iUBwvZC2fNzsa9pt0Gj1jLy29YzcbUB3qGzM91BMqNihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','x2XVB2T1CenVBMzPzW','oWOGicaGicbJB25ZDcbYzwnHBgn1Bgf0zwrgAwvSzhmGpsbBxtSkicaGicaGy29UC3qGCMvJywXJDwXHDgvKvMfSDwvZid0Gw107cIaGicaGigXLDcbYzwnHBgnqBgfJzwHVBgrLCIa9ide7cGOGicaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx2L0zw1Zksb7cIaGicaGicaGCMvJywXJDwXHDgvKrMLLBgrZlNb1C2GOyhrVDgfSx2L0zw1Zid0Gjcr7CMvJywXJugXHy2vOB2XKzxiRk31GktSkicaGicaGicbYzwnHBgn1Bgf0zwrwywX1zxmUChvZAcHHBgXjDgvTCY5Szw5NDgGPoWOGicaGicb9cGOGicaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx3f0EsaMjIbJywXJDwXHDgLVBNmUDg90ywXFCxr5lNnVDxjJzsKGEWOGicaGicaGignVBNn0ihf0EuzPzwXKid0Gy2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uUCMvWBgfJzsGNAxrLBxmUjYWGjYCPoWOGicaGicaGignVBNn0ihrVDgfSuxr5id0GywXSsxrLBxmUCMvKDwnLkcHZDw0SigL0zw0Pid0+ihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPlcaWktSkicaGicaGicbYzwnHBgn1Bgf0zwrgAwvSzhmUChvZAcHGDg90ywXFCxr5id0Gjcr7CMvJywXJugXHy2vOB2XKzxiRk31GktSkicaGicaGicbYzwnHBgn1Bgf0zwrwywX1zxmUChvZAcH0B3rHBff0EsK7cIaGicaGih0kcIaGicaGia','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','ignVBxbVC2L0zsbYzwfKihn1y2nLC3nMDwW6icr7CMvZDwX0lMnVDw50ihX8idb9ihjLy29YzcHZkwaPoWOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbJB21WB3nPDguGCMvHzca','oYb0AguGBxv0yxrPB24GC3vMzML4ignHBM5VDcbIzsbHChbLBMrLzcbZywzLBhKNktSkicaGicaGicaGicaGFqOGicaGicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGjW','zMLYC3q','wM9nANy','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','BfHhD1e','jZSkicaGicaGy29UC3qGCgX1z2LUugf0Aca9ihbHDgGUAM9PBIHFx2rPCM5HBwuSicCUlICSicDWBhvNAw5ZjYWGycr7Bw9KDwXLtMfTzx0TCgX1z2LUlMPZycK7cIaGicaGigXLDcbWBhvNAw4GpsbUDwXSoWOGicaGicbPzIaOzNmUzxHPC3rZu3LUyYHWBhvNAw5qyxrOksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbWBhvNAw4GpsbYzxf1AxjLkhbSDwDPBLbHDgGPoWOGicaGicaGicaGAwyGkhbSDwDPBI5VBKjLzM9YzuvUzhbVAw50C0XVywqPihSkicaGicaGicaGicaGCgX1z2LUlM9UqMvMB3jLrw5KCg9PBNrZtg9HzcHHChaSignVBMzPzYK7cIaGicaGicaGicb9cIaGicaGicaGicbSB2DNzxiUAw5MBYH7igv2zw50oIaNCgX1z2LUx2XVywrLzcCSihbSDwDPBJOGycr7Bw9KDwXLtMfTzx0TCgX1z2LUycb9lcbGugX1z2LUigXVywrLzdOGjhTTB2r1Bgvoyw1LFs1WBhvNAw4UANnGktSkicaGicaGicb9ignHDgnOicHWBhvNAw5fCNjVCIKGEWOGicaGicaGicaGBg9Nz2vYlMvYCM9YkhSGzxzLBNq6icDWBhvNAw5FBg9Hzf9LCNjVCICSigvYCM9YoIbWBhvNAw5fCNjVCI5TzxnZywDLih0SigbgywLSzwqGDg8GBg9HzcbWBhvNAw46icr7Bw9KDwXLtMfTzx0TCgX1z2LUlMPZycK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbhBg9IywWGAgvHBhrOignOzwnRigvUzhbVAw50icH0yw5WysbWCMvMAxGGBw9KDwXLkqOGicaGicbHChaUz2v0kcCVAgvHBhrOjYWGkhjLCsWGCMvZksa9pIb7cIaGicaGicaGy29UC3qGAgvHBhrOsw5MBYa9ihSkicaGicaGicaGihn0yxr1CZOGj29RjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPlNjLCgXHy2uOj1qNlcaNicCPlNjLCgXHy2uOl1WUxgr7m31Ajc8SicCNksWkicaGicaGicaGihnLCNzPy2u6icC','Dg9dyw1LBenHC2u','j107cIaGicaGicaGicbPzIaOx19VCMLNice9psbUDwXSicyMif9FB3jPzYaHpt0GDw5KzwzPBMvKksb7cIaGicaGicaGicaGignVBNn0if9FC3rYid0Gu3rYAw5Nkf9FB3jPzYK7cIaGicaGicaGicaGigLMicHFx3n0CI5Szw5NDgGGpIa','id0Gke51BwjLCIHPDgvTlG','cIaGicbDoWOGicaGy29UC3qGzgf0yxrHyMXLC0zPzwXKCYa9ifSkicaGicaG','oIaKE3jLC3vSDc5JB21WB25LBNrZtg9HzgvKFsbJB21WB25LBNrZycK7cIaGicaGih0kicaGih0PlMnHDgnOkgvYCIa9pIb7cIaGicaGignVBNnVBguUzxjYB3iOyezHAwXLzcb0BYbSB2fKignVBxbVBMvUDcbJB25MAwD1CMf0Aw9UigzVCIa','CeTHBfC','jZSkicaGicaG','lMfNz3jLz2f0zurHDgeOCMvXlMjVzhKGFhWGE30SigfNz3jLz2f0zunVBMzPzYK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fNCMvNyxnPigrHDgeG','CMvMvgfIBgu','q29KzwDLBIbPBNzHCMLHBNqGDMLVBgf0Aw9UoIa','icaGicaGFqO','l2nYzwf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','laOGicaGicb1CgXVywrdB25MAwC6ia','AgvHzgvYq2fSy3vSyxrPB25Z','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbmB2nRigfJCxvPC2L0Aw9UigzHAwXLzaOGicaGAwyGkgvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj0zHAwXLzcb0BYbHy3f1AxjLigXVy2SNksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdKPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNuMvZB3vYy2uGyNvZEsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGy2HHBMDPBMCGC3rHDhvZjYWkicaGicaGzgv0ywLSCZOGChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYbLCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSk','icaGic8VifnVzNqTzgvSzxrLig1PzgrSzs1NCM91BMqGkgf1zgL0lxbHCML0EsK6ihrPz2eGA29SB20GC29MDc1KzwXLDguGDgv0yxaGzgKGDMfSAwrgAwvSzhmk','Cxr5rMLLBgq','iJOGEWOGicaGicaGicaGicaI','jYWkicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicb9cIaGicaGih07cIaGicb9cGOGicaGlY8GugfUz2DPBcbTB2rLBcbJB21WB3nPDguGy3jLyxrLig1LDgHVzaOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','Dg90ywXFyw1VDw50','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFsWkicaGicaGicaGicaGEWOGicaGicaGicaGicaGicjJB2X1Bw4IoIaI','DxbKyxrLzef0','l2XVB2T1CdONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VienLAYbHCgfRywGGywrHihDOzxjLignSyxvZzsaOzM9YBwf0igjHCNuPigf0yxuGC2vSzwn0zwrFDgfNicHMB3jTyxqGBgfTysKkicaGigLMicHYzxeUyM9KEs53AgvYzsKGEWOGicaGicaVlYbgB3jTyxqGyMfYDsbKzw5Nyw4GD2HLCMuGy2XHDxnLcIaGicaGignVBNnVBguUBg9NkcDvC2LUzYbUzxCGzM9YBwf0ihDPDgGGD2HLCMuGy2XHDxnLjYK7cGOGicaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGicaGAwyGkcfbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIaHCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGwWOGicaGicaGicaGicaGihSGiMTLEsi6ici','DeT2r2C','cI8VieTHzMTHifbYB2r1y2vYifnLCNzPy2uGDw50DwSGzxzLBNqGChvIBgLZAgLUzWPSzxqGA2fMA2ftzxj2AwnLid0GBNvSBdSkDhj5ihSkicbRywzRyvnLCNzPy2uGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3nLCNzPy2vZl2THzMTHu2vYDMLJzsCPlMDLDeLUC3rHBMnLkcK7cN0Gy2f0y2GGkguPihSkicbJB25ZB2XLlMvYCM9YkcDduKLusunbtdOGs2fMA2eGC2vYDMLJzsbMywLSzwqGDg8GBg9HzcbIDxqGs2fMA2eGChvIBgLZAgLUzYbPCYbJB25MAwD1CMvKoICSiguUBwvZC2fNzsK7cIaGDgHYB3CGztSkFqOklY8Gs2fMA2eGy29UzMLNDxjHDgLVBIbKyxjPihbHEwXVywqky29UC3qGA2fMA2fdB25MAwCGpsa','lY8Gu2TPCcbhru5fuKfuruqGquXxqvLtignVBhvTBNmkicaGicaGicaGigLMicHNzw5LCMf0zwrgAwvSzhmUAw5JBhvKzxmOA2v5ksKGy29UDgLUDwu7','iokgKIa','zw50CMLLCW','Dhj1zq','cIaGicaVlYbfDMvUDcbSAwzLy3LJBguGDMfYAwfIBgvZcIaGicbSzxqGB2XKrgf0ysa9ig51BgW7cIaGicbSzxqGBMv3rgf0ysa9ig51BgW7cIaGicbJB25ZDcbYzxf1zxn0rgf0ysa9ihjLCs5IB2r5oWOGicaGBgv0ihjLC3bVBNnLrgf0ysa9ig51BgW7cGOGicaGlY8Gpt09ieLUDgvNCMf0zwqGvhjHBNnHy3rPB24GzgvUz2fUiev2zw50ieXPzMvJEwnSzsa9pt0kicaGic8Vig9UqMvMB3jLicSGBwfPBIbVCgvYyxrPB24GkYbVBKfMDgvYigrPzwTZzwT1C2KGzgfSyw0GC2f0Dsb0CMfUC2fJDgLVBIbZy29WzqOGicaGlY8GzgKGzgfSyw0GBw9KzwWUzxHLy3v0zvrYyw5Zywn0Aw9Uv2L0Aev2zw50CYGPcIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGic8VieD1BMfRyw4GAw50zwDYyxrLzcb0CMfUC2fJDgLVBIbTB2rLBcbKzw5Nyw4GzxzLBNqGBgLMzwn5y2XLcIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxzLBNrdB250zxH0id0GEWOGicaGicaGicaGy29TCg9Uzw50rw5NAw5LoIbJB21WB25LBNrfBMDPBMuScIaGicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGicb0ywjSzu5HBwu6icC','cIaGicaGicaGlY8GrKSTu0qTmIbYzxn0CMLJDcaJ','q1HnzM0','laOGicaGicbYzxf1zxn0u2nVCgu6ia','cIaQifrHyMXLoIa','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGyM9KEvbHCNnLCIa9ihjLCxvPCMuOj2jVzhKTCgfYC2vYjYK7cMnVBNn0ihbHDgGGpsbYzxf1AxjLkcDWyxrOjYK7cMnVBNn0igzZid0GCMvXDwLYzsGNzNmNktSky29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cMnVBNn0ihSGBg9Nz2vYlcbSB2Dtzxj2zxjszwfKEsWGBg9Nrw5KCg9PBNrszwDPC3rLCMvKlcbJCMvHDgvszxf1zxn0tg9Nz2vYlcbSB2Dszxf1zxn0ih0GpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl2XVz2DLCICPoWPJB25ZDcbfEhbVCNriyw5KBgvYid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9JB21WB25LBNrZl2HHBMrSzxjZl2v4Cg9YDf9Oyw5KBgvYjYK7cMnVBNn0ieLTCg9YDeHHBMrSzxiGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl2nVBxbVBMvUDhmVAgfUzgXLCNmVAw1WB3j0x2HHBMrSzxiNktSky29UC3qGvxbSB2fKsgfUzgXLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVy29TCg9Uzw50CY9Oyw5KBgvYCY91CgXVywrFAgfUzgXLCICPoWPJB25ZDcb7igv4DhjHy3rfEhbVCNrdB25MAwDgCM9Trw5KCg9PBNqSigv4DhjHy3rjBxbVCNrdB25MAwDgCM9Trw5KCg9PBNqSigv4DhjHy3rvCgXVywrdB25MAwDgCM9Trw5KCg9PBNqGFsa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVDxrPBhmVy29UzMLNlwv4DhjHy3rVCICPoWPJB25ZDcbYyxrLtgLTAxrLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVBwLKzgXLD2fYzs9YyxrLlwXPBwL0zxiNktSky29UC3qGAwrLBxbVDgvUy3LnAwrKBgv3yxjLid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9TAwrKBgv3yxjLl2LKzw1WB3rLBMn5jYK7cMnVBNn0igjVzhLpChrPB25ZtwLKzgXLD2fYzsa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVBwLKzgXLD2fYzs9IB2r5lw9WDgLVBNmNktSky29UC3qGy29YC01PzgrSzxDHCMuGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl21PzgrSzxDHCMuVy29YCYCPoWPJB25ZDcbZzwn1CML0EuHLywrLCNmGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl21PzgrSzxDHCMuVC2vJDxjPDhKTAgvHzgvYCYCPoWOklYOQcIaQia','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGzgvMyxvSDfnLBgvJDaOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9ZCwXFzxHWCMvZC2LVBJOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjJB21Wyw55x2LKiIWGiNzHBhvLiJOGiNLVDxiTy29TCgfUEs1PzciGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','cIaGicbDoWOkicaGic8VierLzMLUAxnPA2fUigrHDgf0ywjSzxnxAgvYzsbZzxn1ywKGCgf5Bg9HzaOGicaGy29UC3qGzgf0yxrHyMXLC1DOzxjLid0G','y29SDw1UCW','oICSigvYCM9YktSkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbMzxrJAgLUzYa','AM9PBG','zMLLBgq','ycK7cGOGicaGicaVlYberuXfveuGAgvHzgvYihjLy29YzaOGicaGicbJB25ZDcbKzwXLDgvizwfKzxjrDwvYEsa9igberuXfveuGrLjptsaKE3rOAxmUD3jPDgvtB3vYy2v9ifDirvjficr7D2HLCMvdBgf1C2v9ifjfvfvstKLorYaQydSkicaGicaGy29UC3qGzgvSzxrLsgvHzgvYuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgrLBgv0zuHLywrLCLf1zxj5lcbWyxjHBxmPoWOkicaGicaGAwyGkgrLBgv0zuHLywrLCLjLC3vSDc5YB3DZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNuMvJB3jKig5VDcbMB3vUzcCPoWOGicaGicb9cGOGicaGicbJB25ZDcbKzwXLDgvKrgf0ysa9igrLBgv0zuHLywrLCLjLC3vSDc5YB3DZwZbDoWOGicaGicbJB25ZB2XLlMXVzYGNsgvHzgvYihjLy29YzcbKzwXLDgvKihn1y2nLC3nMDwXSEsCPoWOGicaGica','y3jLyxrLzej5','igrHDgeGywrQDxn0zwqGC3vJy2vZC2z1BgX5oIaKE3bYAw1HCNLlzxL9psr7CMvXlMjVzhLBChjPBwfYEuTLEv19ycK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','C29Tzq','icaGic8ViezHBgXIywnRoIbNDw5HA2fUihjLywrtB3vYy2uGBgfUz3n1BMCGkhnLBxvHigTVBg9TihrLCNnLzgLHkqOGicaGCMv0DxjUicDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','l3jLywqTy29TCg9ZAxrLic0GuMvHzcbOzwfKzxiGD2L0AcbKzxrHAwWGAxrLBxmkCM91DgvYlNbVC3qOjY9YzwfKlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','zxHWB3j0uxvLCNK','id0GjcCGkYbWicSGjYbsrvrvuK5jtKCGjYaRihjLDhvYBMLUz0zPzwXKCZSkicaGicaGicbJB25ZDcb1CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKODxbKyxrLuxvLCNKSihvWzgf0zvbHCMfTCYK7cIaGicaGicaGAwyGkhvWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbYzxn0B3jLzeL0zw1ZlNb1C2GODxbKyxrLuMvZDwX0lNjVD3nBmf0PoWOGicaGicaGih0kicaGicaGFqOkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDdt01nsvqNktSkcIaGicaGic8VidyUieLUDMfSAwrHDguGy2fJAguGC2v0zwXHAcbdt01nsvqGkgPHBhvYign1C3rVBsb3ywPPyIbLA3nWBgLZAxqSihnHBweGC2vWzxj0AsbsmtqPlGOGicaGicbHD2fPDcb0AgLZlMLUDMfSAwrHDgvdywnOzsGPoWOkicaGicaGCMv0DxjUihSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGig1LC3nHz2u6icDtDwnJzxnZzNvSBhKGCMvZDg9YzwqGjYaRihjLC3rVCMvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGihjLC3rVCMvKx2nVDw50oIbYzxn0B3jLzeL0zw1ZlMXLBMD0AcWkicaGicaGicbYzxn0B3jLzf9PDgvTCZOGCMvZDg9YzwrjDgvTCWOGicaGicb9oWOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicb0AhjVDYbLCNjVCJSkicaGih0GzMLUywXSEsb7cIaGicaGignSAwvUDc5YzwXLyxnLkcK7cIaGicb9cIaGFqO','ihX8igL0zw0UBMfTzsb8FcbPDgvTlMnVzguGFhWGAxrLBs5KzxnJCMLWDgLVBIb8FcaNjWOGicaGicb9ksK7cGOGicaGicaVlYbdywnOzsb0AguGCMvZDwX0icHPzIbLBMfIBgvKkqOGicaGicbHD2fPDcb0AgLZlNnLDenHy2HLzeXVB2T1CcHJywnOzu9WDgLVBNmSihjLC3vSDcWGj2zPBhrLCICPoWOkicaGicaGCMv0DxjUihjLC3vSDdSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHv2L0AezPBhrLCIaO','id0GjdeGqu5eia','zgv0ywLSq29UzMLN','y29UC3qGzgv0ywLSuxvLCNKGpsbGu0vmrunuicOGrLjptsa','lMDLDeXPC3qOB3b0Aw9UCYK7cGOGicaGlY8GrM9YBwf0ihjLC3bVBNnLigjLCMrHC2fYA2fUig1VzgukicaGigLMicHWywDPBMf0zsKGEWOGicaGicbJB25ZDcb0B3rHBfbHz2vZid0Gtwf0Ac5JzwLSkhjLC3vSDc50B3rHBfjLy29YzhmGlYbWzxjqywDLktSkicaGicaGy29UC3qGAgfZtMv4Dca9ihbHz2uGpcb0B3rHBfbHz2vZoWOGicaGicbJB25ZDcbOyxnqCMv2Aw91CYa9ihbHz2uGpIaXoWOkicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGigrHDge6ihjLC3vSDc5KyxrHihX8ifTDlaOGicaGicaGignVDw50oIbYzxn1BhqUzgf0ysa/ihjLC3vSDc5KyxrHlMXLBMD0Aca6idaScIaGicaGicaGCgfNAw5HDgLVBJOGEWOGicaGicaGicaGy3vYCMvUDf9WywDLoIbWywDLlaOGicaGicaGicaGCgvYx3bHz2u6ihbLCLbHz2uScIaGicaGicaGicb0B3rHBf9YzwnVCMrZoIbYzxn1BhqUDg90ywXszwnVCMrZihX8idaScIaGicaGicaGicb0B3rHBf9WywDLCZOGDg90ywXqywDLCYWkicaGicaGicaGigHHC19UzxH0oIbOyxnozxH0laOGicaGicaGicaGAgfZx3bYzxzPB3vZoIbOyxnqCMv2Aw91CWOGicaGicaGih0kicaGicaGFsK7cIaGicb9igvSC2uGEWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGzgf0ytOGCMvZDwX0lMrHDgeGFhWGw10ScIaGicaGicaGy291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmaOGicaGicb9ktSkicaGih0kcIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','id0GjcCGkYbWktSkicaGicaGicaGicaGCcSRoWOGicaGicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHFx3n0CIaRicCJiYCGkYb1DwLKDJCOksK7cIaGicaGicaGicb9cIaGicaGicaGFq','zgv0ywLSvgfIBgu','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGjW','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj3vWzgf0zsCPoWO','yxv0B0nHBgn1Bgf0zuzPzwXKCW','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNuhjPBwfYEsbRzxKGka','kg1HC3rLCI1KzxrHAwWGDhjHBNnHy3rPB24P','cIaGicaVlYbdzwSGyxbHA2fOihbYAw1HCNKGA2v5igfKywXHAcbvvuLeihLHBMCGDMfSAwqGkgPPA2eGChjPBwfYEsbRzxKGywrHBgfOicDPzcCPcIaGicbJB25ZDcb1DwLKuMvNzxGGpsaVxLSWltLHlwzDEZH9lvSWltLHlwzDEZr9lvSXltvDwZaToweTzL17m30TwZG5ywjDwZaToweTzL17m30TwZaToweTzL17mtj9jc9PoWOGicaGy29UC3qGAxnwywXPzfvvsuqGpsbWCMLTyxj5s2v5id09psaNAwqNicyMihv1AwrszwDLEc50zxn0khjLCs5IB2r5w3bYAw1HCNLlzxLDktSkcIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','ksdIHPiGnda5igjPBgeGBwfZAwGGzgLYzwzLCMvUC2LRyw4kicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx3jLC3rYAwn0vMfSid0GBg9JA2vKuM93wYC','id0GvfjvrsCPoWOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','cIaGicaVlYblAxjPBsbYzxnWB25ZzqOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaXks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','C29MDerLBgv0zuzRugfYzw50CW','jYWGjW','cIaGicb9oWOkicaGigzVCIaOy29UC3qGw3f1zxj5tMfTzsWGCxvLCNLtB3vYy2vDig9Mie9IAMvJDc5LBNrYAwvZkhf1zxj5rgvMAw5PDgLVBNmPksb7cIaGicaGihrYEsb7cIaGicaGicaGlY8Gq2vRigfWywTHAcbZDhjPBMCGzgLTDwXHAsbKzw5Nyw4GiMzPBgu6iIb1BNr1AYbTzw5LBNr1A2fUigfWywTHAcbPBMKGCgf0AcbMAwXLcIaGicaGicaGAwyGkhr5CgvVzIbXDwvYEvnVDxjJzsa9pt0Gj3n0CMLUzYCGjIyGCxvLCNLtB3vYy2uUC3rHCNrZv2L0AcGNzMLSztONksKGEWOGicaGicaGicaGlY8Gqw1IAwWGCgf0AcbYzwXHDgLMigrHCMKGCxvLCNLtB3vYy2ukicaGicaGicaGignVBNn0ihjLBgf0AxzLugf0Aca9ihf1zxj5u291CMnLlNjLCgXHy2uOj2zPBgu6jYWGjYCPoWOGicaGicaGicaGy29UC3qGzMLSzvbHDgGGpsbWyxrOlMPVAw4Ox19KAxjUyw1LlcbYzwXHDgL2zvbHDgGPoWOkicaGicaGicaGignVBNnVBguUBg9NkgbbDhrLBxb0Aw5NihrVihjLywqGDgvTCgXHDguGzMLSzsaKE3f1zxj5tMfTzx0GzNjVBsbWyxrOoIaKE2zPBgvqyxrOFwaPoWOkicaGicaGicaGigLMicHMCY5LEgLZDhntEw5JkgzPBgvqyxrOksKGEWOGicaGicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9igzZlNjLywrgAwXLu3LUyYHMAwXLugf0AcWGj3v0zJGNktSkicaGicaGicaGicaGy29UC29Szs5SB2COyfnrtcb0zw1WBgf0zsaKE3f1zxj5tMfTzx0GBg9HzgvKihn1y2nLC3nMDwXSEsbMCM9TigzPBgu6icr7CMvSyxrPDMvqyxrOFwaPoWOGicaGicaGicaGFsbLBhnLihSkicaGicaGicaGicaGy29UC29Szs5LCNjVCIHGu1fmihrLBxbSyxrLigzPBguGjhTXDwvYEu5HBwv9ig5VDcbMB3vUzdOGjhTMAwXLugf0Ah1GktSkicaGicaGicaGicaGDgvTCgXHDgvZw3f1zxj5tMfTzv0GpsbUDwXSoWOGicaGicaGicaGFqOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaVlYbkAwTHigj1A2fUihbHDgGGzMLSzsWGz3vUywTHBIbZDhjPBMCGu1fmigXHBMDZDw5NcIaGicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9ihf1zxj5u291CMnLoWOGicaGicaGicaGy29UC29Szs5SB2COyfnrtcb0zw1WBgf0zsaKE3f1zxj5tMfTzx0GBg9HzgvKihn1y2nLC3nMDwXSEsbMCM9TifnrtcbZDhjPBMDGktSkicaGicaGicb9cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGrxjYB3iGBg9HzgLUzYbtuuWGDgvTCgXHDguGjhTXDwvYEu5HBwv9oMaSigvYCM9YktSkicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9ig51BgW7cIaGicaGih0kicaGih0','v2r1u1y','cGOVlYbizwfSDgGGy2HLy2SGzw5KCg9PBNqkCM91DgvYlMDLDcGNl2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGihjLCY5QC29UkhSkicaGihn0yxr1CZOGj29RjYWkicaGigvUzhbVAw50oIaN','lMLUC2vYDciGBxvZDcbIzsbHBIbHCNjHEsCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cIaGicaGigLMicHVCgvYyxrPB25ZlNvWzgf0zsaMjIaHqxjYyxKUAxnbCNjHEsHVCgvYyxrPB25ZlNvWzgf0zsKPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','iL07cGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbqyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicjZzwXLy3rLzf90ywCIoIaIB3b0Aw9UywWTAwqTAwyTBMvLzgvKiIWkicaGicaGicaGicj3AgvYzsi6ifT7icjRzxKIoIaI','cIaGicb9oWO','AxnbCNjHEq','jYWkicaGicaGicaGigrVy3vTzw50yxrPB246icDtzwuGAw5KAxzPzhvHBcbLBMrWB2LUDcbKB2n1BwvUDgf0Aw9UjYWkicaGicaGicaGigDLBMvYyxrLzdOGjW','DxLnB1a','jYK7cGOGicaGy29UC3qGCg9VBca9igrIlMDLDfbVB2WOktSkicaGignVBNn0ignSAwvUDca9igf3ywL0ihbVB2WUy29UBMvJDcGPoWOkicaGihrYEsb7cIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNqKvhsu4NktSkcIaGicaGic8VideUieT1BMnPihjVDYbHA3rPzIb5yw5NignVy29RigTYAxrLCMLHlIbgAwX0zxiGAxnFzgvSzxrLzca9iezbtfnfig1LBMnLz2fOcIaGicaGic8VicaGigrVDwjSzsbZB2z0lwrLBgv0zsbKyw4SigjLCNnHBweGrK9sifvqrefursWGBwvUAMfTAw4GC2f0DsbWzw1LBMfUzYbZywf0ihjHy2uUcIaGicaGignVBNn0ihnLBgvJDfbHCMfTCYa9ifTDoWOGicaGicbJB25ZDcb3AgvYzuj1AwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsHJCML0zxjPys53AgvYzsWGC2vSzwn0ugfYyw1ZlcaXktSkicaGicaGy29UC3qGBg9JA1f1zxj5id0Gj1nftevdvca','ksb8FcaWoWOGicaGicaGihjLDhvYBIbZDw0GkYaOCxr5icOGChjPy2uPoWOGicaGicb9lcaWktSkicaGih0','jYWkicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGFsK7cN0PoWOkBw9KDwXLlMv4Cg9YDhmGpsbYB3v0zxi7','CMvZDg9Yzq','wNbvBfC','y29Kzq','C291CMnL','cIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','l2zPCNn0ic0GtwvUzgfWyxrRyw4Gzgf0ysa','jZSkicaGicaGy29UC3qGzM9YzwLNBKTLEsa9icC','cIaGicaGicaGFtSkcIaGicaGicaGAwyGkgL0zw0U','zgvSzxrL','l2nYzwf0zs1JB21WB3nPDguGlsbdB21WB3nPDguGy3jLyxrLia'];a0_0x34f1=function(){return _0x1a463c;};return a0_0x34f1();}function createPostgresMainModuleTemplate(_0x336d00){const _0x18dcff=a0_0x3079,_0x1434e0=FileUtils[_0x18dcff(0x16f)](_0x336d00),_0x5d30fe=FileUtils['toCamelCase'](_0x336d00),_0x4f5ce8=new Date()[_0x18dcff(0x16a)]()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,'');return _0x18dcff(0x10a)+_0x1434e0+'\x20Module\x20-\x20Auto-generated\x20on\x20'+_0x4f5ce8+'\x0a\x20*\x0a\x20*\x20Fungsi\x20untuk\x20mengeksekusi\x20modul\x20'+_0x336d00+'\x0a\x20*\x20@param\x20{Object}\x20config\x20-\x20Konfigurasi\x20untuk\x20menjalankan\x20modul\x0a\x20*\x20@param\x20{number}\x20config.port\x20-\x20Port\x20untuk\x20server\x0a\x20*\x20@param\x20{string}\x20config.key\x20-\x20API\x20Key\x20(opsional)\x0a\x20*\x20@param\x20{boolean}\x20config.cors\x20-\x20Enable\x20CORS\x20(default:\x20true)\x0a\x20*\x20@param\x20{boolean}\x20config.logging\x20-\x20Enable\x20request\x20logging\x20(default:\x20true)\x0a\x20*\x20@returns\x20{Promise<void>}\x20Promise\x20yang\x20tidak\x20pernah\x20resolve\x20agar\x20server\x20tetap\x20berjalan\x0a\x20*/\x0aasync\x20function\x20execute(config)\x20{\x0a\x20\x20return\x20new\x20Promise((resolve,\x20reject)\x20=>\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20app\x20=\x20express();\x0a\x20\x20\x20\x20\x20\x20const\x20port\x20=\x20config.port\x20||\x203000;\x0a\x20\x20\x20\x20\x20\x20const\x20serverAddress\x20=\x20config.serverAddress\x20||\x20\x270.0.0.0\x27;\x20//\x20Default\x200.0.0.0\x20untuk\x20backward\x20compatibility\x0a\x20\x20\x20\x20\x20\x20const\x20moduleNameCapitalized\x20=\x20\x27'+_0x1434e0+_0x18dcff(0x17e)+_0x336d00+_0x18dcff(0xe7)+_0x336d00+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Module-specific\x20health\x20check\x20endpoint\x20(dengan\x20prefix\x20module)\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/api/'+_0x336d00+_0x18dcff(0x1d4)+_0x336d00+_0x18dcff(0x23a)+_0x336d00+'/info\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name:\x20\x27'+_0x1434e0+'\x20API\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20description:\x20\x27Auto-generated\x20API\x20module\x20for\x20'+_0x336d00+_0x18dcff(0x132)+_0x4f5ce8+'\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Load\x20dan\x20register\x20endpoint\x20modules\x0a\x20\x20\x20\x20\x20\x20//\x20Binary-compatible:\x20Use\x20working\x20directory\x20instead\x20of\x20__dirname\x0a\x20\x20\x20\x20\x20\x20const\x20isBunCompiled\x20=\x20typeof\x20Bun\x20!==\x20\x27undefined\x27\x20&&\x20!process.argv[1];\x0a\x20\x20\x20\x20\x20\x20const\x20getWorkingDir\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20running\x20as\x20compiled\x20binary\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isBunCompiled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Running\x20as\x20compiled\x20binary:\x20use\x20directory\x20where\x20binary\x20is\x20located\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20path.dirname(process.execPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Running\x20as\x20Node.js/Bun\x20script:\x20__dirname\x20is\x20already\x20in\x20src/modules\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20So\x20we\x20just\x20need\x20to\x20add\x20the\x20module\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20__dirname;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20workingDir\x20=\x20getWorkingDir();\x0a\x20\x20\x20\x20\x20\x20//\x20For\x20compiled\x20binary:\x20workingDir\x20is\x20binary\x20directory,\x20need\x20full\x20path\x20src/modules/moduleName\x0a\x20\x20\x20\x20\x20\x20//\x20For\x20script:\x20workingDir\x20is\x20already\x20src/modules/,\x20just\x20add\x20moduleName\x0a\x20\x20\x20\x20\x20\x20const\x20modulesDir\x20=\x20isBunCompiled\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20path.join(workingDir,\x20\x27src\x27,\x20\x27modules\x27,\x20\x27'+_0x336d00+_0x18dcff(0x15d)+_0x336d00+'\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Ensure\x20modules\x20directory\x20exists\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!fs.existsSync(modulesDir))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fs.mkdirSync(modulesDir,\x20{\x20recursive:\x20true\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Created\x20modules\x20directory:\x20${modulesDir}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Read\x20dan\x20load\x20semua\x20endpoint\x20files\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20files\x20=\x20fs.readdirSync(modulesDir);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointFiles\x20=\x20files.filter(file\x20=>\x20file.endsWith(\x27.js\x27));\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(endpointFiles.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`No\x20endpoint\x20files\x20found\x20in\x20${modulesDir}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Add\x20endpoint\x20files\x20to\x20enable\x20API\x20functionality`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x20event:\x20\x27endpoints_loading\x27,\x20count:\x20endpointFiles.length\x20},\x20`Loading\x20${endpointFiles.length}\x20endpoint(s)`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20setiap\x20endpoint\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20file\x20of\x20endpointFiles)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointName\x20=\x20path.basename(file,\x20\x27.js\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointPath\x20=\x20path.join(modulesDir,\x20file);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Clear\x20module\x20cache\x20untuk\x20development\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(require.cache[endpointPath])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20delete\x20require.cache[endpointPath];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointRouter\x20=\x20require(endpointPath);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!endpointRouter)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.warn(`Endpoint\x20${endpointName}\x20did\x20not\x20export\x20a\x20router`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20endpoint\x20dengan\x20prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20endpointPrefix\x20=\x20`/api/'+_0x336d00+_0x18dcff(0x167)+_0x336d00+_0x18dcff(0x2c7)+_0x336d00+'\x27,\x20endpointName,\x20importConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27import_routes_registered\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20table:\x20importConfig.tableName\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Import\x20routes\x20registered\x20for\x20${endpointName}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(importError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27import_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20importError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Import\x20registration\x20failed\x20for\x20${endpointName}:\x20${importError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20upload\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20uploadConfig\x20=\x20extractUploadConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(uploadConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UploadHandler.registerRoutes(app,\x20\x27'+_0x336d00+'\x27,\x20endpointName,\x20uploadConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27upload_routes_registered\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fields:\x20Object.keys(uploadConfig.fields\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Upload\x20routes\x20registered\x20for\x20${endpointName}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(uploadError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27upload_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20uploadError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Upload\x20registration\x20failed\x20for\x20${endpointName}:\x20${uploadError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(endpointError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20loading\x20endpoint\x20${file}:`,\x20endpointError.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Continue\x20loading\x20other\x20endpoints\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(dirError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Error\x20reading\x20modules\x20directory\x20${modulesDir}:`,\x20dirError.message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Register\x20cleanup\x20route\x20(optional\x20admin\x20endpoint)\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20ExportHandler.registerCleanupRoute(app);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(cleanupError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27cleanup_route_error\x27,\x20error:\x20cleanupError.message\x20},\x20\x27Export\x20cleanup\x20route\x20registration\x20failed\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20root\x20endpoint\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Access\x20to\x20the\x20requested\x20resource\x20is\x20forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Hook\x20untuk\x20mount\x20middleware\x20tambahan\x20sebelum\x20404\x20handler\x0a\x20\x20\x20\x20\x20\x20//\x20Digunakan\x20oleh\x20workbench\x20UI\x20dan\x20middleware\x20eksternal\x20lainnya\x0a\x20\x20\x20\x20\x20\x20if\x20(config.onAppReady\x20&&\x20typeof\x20config.onAppReady\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20config.onAppReady(app);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20404\x20handler\x20untuk\x20unknown\x20routes\x0a\x20\x20\x20\x20\x20\x20app.use((req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Access\x20to\x20the\x20requested\x20resource\x20is\x20forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Global\x20error\x20handling\x20middleware\x0a\x20\x20\x20\x20\x20\x20app.use((err,\x20req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Global\x20Error\x20Handler\x20-\x20${req.method}\x20${req.url}:`,\x20err);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Handle\x20specific\x20error\x20types\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(err\x20instanceof\x20SyntaxError\x20&&\x20err.status\x20===\x20400\x20&&\x20\x27body\x27\x20in\x20err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20JSON\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27The\x20payload\x20sent\x20is\x20not\x20a\x20valid\x20JSON\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20err.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Handle\x20other\x20errors\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!res.headersSent)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20statusCode\x20=\x20err.statusCode\x20||\x20err.status\x20||\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20errorResponse\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20err.name\x20||\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20err.message\x20||\x20\x27An\x20error\x20occurred\x20on\x20the\x20server\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Add\x20stack\x20trace\x20in\x20development\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20!==\x20\x27production\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errorResponse.stack\x20=\x20err.stack;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(statusCode).json(errorResponse);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20next(err);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Start\x20server\x0a\x20\x20\x20\x20\x20\x20const\x20server\x20=\x20app.listen(port,\x20serverAddress,\x20(err)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`Failed\x20to\x20start\x20${moduleNameCapitalized}\x20server:`,\x20err);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reject(err);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Determine\x20display\x20URL\x20based\x20on\x20serverAddress\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20displayHost\x20=\x20(serverAddress\x20===\x20\x270.0.0.0\x27\x20||\x20!serverAddress)\x20?\x20\x27localhost\x27\x20:\x20serverAddress;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20logServerReady({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20port,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x336d00+_0x18dcff(0x2ac)+_0x336d00+'/health`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20serviceInfo:\x20`http://${displayHost}:${port}/api/'+_0x336d00+_0x18dcff(0x17a)+_0x5d30fe+_0x18dcff(0x22d)+_0x336d00+_0x18dcff(0x1d9)+_0x4f5ce8+'\x27;';}module['exports']={'createPostgresModelTemplate':createPostgresModelTemplate,'createPostgresSubmoduleTemplate':createPostgresSubmoduleTemplate,'createPostgresMainModuleTemplate':createPostgresMainModuleTemplate};
|
|
1
|
+
const a0_0x265454=a0_0x21a9;(function(_0x12a966,_0x48c685){const _0x1acc7c=a0_0x21a9,_0x11c808=_0x12a966();while(!![]){try{const _0x1d5a7f=-parseInt(_0x1acc7c(0x222))/0x1+parseInt(_0x1acc7c(0x145))/0x2*(-parseInt(_0x1acc7c(0x286))/0x3)+-parseInt(_0x1acc7c(0x10c))/0x4+-parseInt(_0x1acc7c(0x1e4))/0x5+-parseInt(_0x1acc7c(0xe0))/0x6*(-parseInt(_0x1acc7c(0xda))/0x7)+parseInt(_0x1acc7c(0x15f))/0x8*(-parseInt(_0x1acc7c(0x20e))/0x9)+parseInt(_0x1acc7c(0x24a))/0xa;if(_0x1d5a7f===_0x48c685)break;else _0x11c808['push'](_0x11c808['shift']());}catch(_0x2a664d){_0x11c808['push'](_0x11c808['shift']());}}}(a0_0x5526,0xf3337));const FileUtils=require('../utils/file-utils'),{IS_DELETED_COLUMN,DELETED_AT_COLUMN,DELETED_BY_COLUMN,SOFT_DELETE_COLUMNS,isSoftDeleteEnabled}=require(a0_0x265454(0x29e));function softDeleteVisibilityFilter(_0x343a84){const _0x243d0e=a0_0x265454,_0x1f0aee={'UcLJH':function(_0x4f6e6a,_0x5f3485){return _0x4f6e6a(_0x5f3485);},'Fciqo':_0x243d0e(0x2b1),'gMKro':_0x243d0e(0xc6),'qUaUM':_0x243d0e(0xe1),'bnyXA':_0x243d0e(0x170)};if(!_0x1f0aee[_0x243d0e(0x233)](isSoftDeleteEnabled,_0x343a84))return null;const _0x58bbab=_0x343a84['softDelete']&&_0x343a84[_0x243d0e(0x228)]['visibility']||_0x1f0aee[_0x243d0e(0xed)];if(_0x58bbab===_0x1f0aee[_0x243d0e(0x1ec)])return null;return _0x58bbab===_0x1f0aee[_0x243d0e(0x1e1)]?'true':_0x1f0aee['bnyXA'];}function assertNoFileReferenceLeftover(_0x533e93){const _0x4f679b=a0_0x265454,_0x25cabe={'PTzlX':'datatablesQuery','ovNLd':_0x4f679b(0x108),'gvcLv':'string','DsaIc':'file:','gaNRi':function(_0x7683a3,_0x225804){return _0x7683a3+_0x225804;}},_0x295130=[[_0x25cabe['PTzlX'],_0x533e93['datatablesQuery']],[_0x4f679b(0xf6),_0x533e93['viewQuery']],[_0x25cabe[_0x4f679b(0x1c8)],_0x533e93[_0x4f679b(0xd2)]&&_0x533e93['masterDetail']['detailConfig']&&_0x533e93[_0x4f679b(0xd2)][_0x4f679b(0x1ea)][_0x4f679b(0x22e)]]];for(const [_0x34e299,_0x937122]of _0x295130){if(typeof _0x937122===_0x25cabe['gvcLv']&&_0x937122[_0x4f679b(0xac)](_0x25cabe['DsaIc']))throw new Error(_0x25cabe['gaNRi'](_0x4f679b(0x2ab)+_0x34e299+_0x4f679b(0x276)+_0x937122+').\x20',_0x4f679b(0x234)));}}function buildValidFieldsString(_0x3c83b9){const _0x2ea2fc=a0_0x265454,_0x50ab0a={'DTcvE':_0x2ea2fc(0x242)},_0xa6718c=(_0x3c83b9[_0x2ea2fc(0xe3)]||[])['slice']();if(isSoftDeleteEnabled(_0x3c83b9))for(const _0x578168 of SOFT_DELETE_COLUMNS){if(!_0xa6718c['includes'](_0x578168))_0xa6718c[_0x2ea2fc(0x20d)](_0x578168);}return _0xa6718c['map'](_0x23bc06=>'\x27'+_0x23bc06+'\x27')[_0x2ea2fc(0x182)](_0x50ab0a['DTcvE']);}function buildFormatResponseDataBody(_0x45369f){const _0x311b6c=a0_0x265454,_0x246574={'rSqCk':'\x20\x20\x20\x20//\x20Gunakan\x20parent\x20method\x20yang\x20sudah\x20include\x20datetime\x20formatting\x0a','IJQDa':function(_0x414239,_0x2e12f9){return _0x414239(_0x2e12f9);},'yAEwy':function(_0x16ea0f,_0x2f4d3f){return _0x16ea0f+_0x2f4d3f;},'pNRpC':function(_0xe30b1b,_0x466fbc){return _0xe30b1b+_0x466fbc;},'ZLrEZ':function(_0x5615d3,_0x4d5b39){return _0x5615d3+_0x4d5b39;},'gKMOp':'\x20\x20\x20\x20const\x20formatted\x20=\x20super.formatResponseData(data);\x0a','DaTLU':'\x20\x20\x20\x20//\x20Soft-delete\x20middle-ground\x20(audit-parity):\x20tiga\x20kolom\x20soft-delete\x20tetap\x20di\x20validFields\x0a'},_0x28c911=_0x246574[_0x311b6c(0x1ca)]+'\x20\x20\x20\x20return\x20super.formatResponseData(data);';if(!_0x246574['IJQDa'](isSoftDeleteEnabled,_0x45369f))return _0x28c911;return _0x246574[_0x311b6c(0x1a9)](_0x246574[_0x311b6c(0x1a9)](_0x246574['yAEwy'](_0x246574['yAEwy'](_0x246574[_0x311b6c(0x10d)](_0x246574['yAEwy'](_0x246574[_0x311b6c(0x1b9)](_0x246574[_0x311b6c(0x1ca)],_0x246574['gKMOp']),_0x246574[_0x311b6c(0x160)]),_0x311b6c(0x106)),_0x311b6c(0x1c0)),_0x311b6c(0x24d))+(_0x311b6c(0xe4)+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20{\x0a')+_0x311b6c(0xdd),'\x20\x20\x20\x20\x20\x20}\x0a'),'\x20\x20\x20\x20}\x0a')+_0x311b6c(0x1af);}function buildAuditColumnsSection(_0x4eedd2,_0x4c1a02){const _0x17fa77=a0_0x265454,_0xf5084c={'UGCSy':function(_0x3a8a79,_0x13000a){return _0x3a8a79!==_0x13000a;},'cKDnx':function(_0x536455,_0x44ffe5){return _0x536455 in _0x44ffe5;},'khLeD':'auditColumns','XPpmX':function(_0x518839,_0x4a5a13){return _0x518839===_0x4a5a13;},'IxIsD':'createdAt','DdbRt':_0x17fa77(0xf0)};if(!_0xf5084c['cKDnx'](_0xf5084c['khLeD'],_0x4eedd2))return'';const _0x5b0977=_0x4eedd2['auditColumns'];if(_0x5b0977===![]||_0xf5084c['XPpmX'](_0x5b0977,null))return'\x0a'+_0x4c1a02+_0x17fa77(0x28c)+_0x4c1a02+'this.auditColumns\x20=\x20null;\x0a';if(typeof _0x5b0977==='object'&&!Array['isArray'](_0x5b0977)){const _0x2c6b13=[_0xf5084c[_0x17fa77(0x13a)],_0x17fa77(0x167),_0xf5084c['DdbRt'],'updatedBy'],_0x5d23bb={};_0x2c6b13['forEach'](_0x4a3011=>{if(_0xf5084c['UGCSy'](_0x5b0977[_0x4a3011],undefined))_0x5d23bb[_0x4a3011]=_0x5b0977[_0x4a3011];});const _0x188d7c=JSON[_0x17fa77(0x252)](_0x5d23bb,null,0x2)['split']('\x0a')['map']((_0x1932cf,_0x3a90d4)=>_0x3a90d4===0x0?_0x1932cf:_0x4c1a02+_0x1932cf)['join']('\x0a');return'\x0a'+_0x4c1a02+_0x17fa77(0x1d2)+_0x4c1a02+_0x17fa77(0xec)+_0x188d7c+';\x0a';}throw new Error('Invalid\x20auditColumns\x20value\x20for\x20'+_0x4eedd2[_0x17fa77(0x16a)]+_0x17fa77(0x157));}function buildSearchColumnsCode(_0x5e9242){const _0x4f8b31=a0_0x265454;if(!_0x5e9242[_0x4f8b31(0xf5)]||!Array['isArray'](_0x5e9242['searchColumns']))return'';return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Mendapatkan\x20definisi\x20kolom\x20yang\x20dapat\x20dicari\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Kolom\x20yang\x20dapat\x20dicari\x0a\x20\x20\x20*/\x0a\x20\x20getSearchableColumns()\x20{\x0a\x20\x20\x20\x20return\x20'+JSON['stringify'](_0x5e9242[_0x4f8b31(0xf5)],null,0x4)+_0x4f8b31(0xd4);}function buildFiltersCode(_0x35c63c){const _0x39426=a0_0x265454;if(!_0x35c63c['filters']||!Array[_0x39426(0x247)](_0x35c63c['filters']))return'';return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Mendapatkan\x20definisi\x20filter\x20yang\x20tersedia\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Filter\x20yang\x20tersedia\x0a\x20\x20\x20*/\x0a\x20\x20getAvailableFilters()\x20{\x0a\x20\x20\x20\x20return\x20'+JSON['stringify'](_0x35c63c[_0x39426(0x28a)],null,0x4)+_0x39426(0x1ce);}function buildDefaultScopeSQL(_0x277c9a,_0x35d27b='a.'){const _0x587df4=a0_0x265454,_0x1d92b7={'EJcKi':function(_0x2700c9,_0x2e000d){return _0x2700c9===_0x2e000d;},'yLWQG':'string','oIMhw':'number','zGduf':_0x587df4(0x146)};if(!_0x277c9a||typeof _0x277c9a!=='object')return'';const _0xc5cc3=[];for(const [_0x18ae5e,_0x705eb7]of Object[_0x587df4(0x208)](_0x277c9a)){if(typeof _0x705eb7===_0x587df4(0x207))_0xc5cc3['push'](''+_0x35d27b+_0x18ae5e+'\x20=\x20'+_0x705eb7);else{if(_0x1d92b7['EJcKi'](typeof _0x705eb7,_0x1d92b7[_0x587df4(0x250)]))_0xc5cc3[_0x587df4(0x20d)](''+_0x35d27b+_0x18ae5e+_0x587df4(0x255)+_0x705eb7['replace'](/'/g,'\x27\x27')+'\x27');else typeof _0x705eb7===_0x1d92b7[_0x587df4(0x195)]&&_0xc5cc3[_0x587df4(0x20d)](''+_0x35d27b+_0x18ae5e+'\x20=\x20'+_0x705eb7);}}return _0xc5cc3['join'](_0x1d92b7[_0x587df4(0x133)]);}function buildRequestScopeMiddleware(_0x3f0c77,_0x3d1c48){const _0x47aaed=a0_0x265454;if(!_0x3f0c77['requestScope'])return'';const {column:_0x467c60,source:_0x48d2ec,bypassRoles:_0xe4d463}=_0x3f0c77[_0x47aaed(0x245)],_0x760207=JSON[_0x47aaed(0x252)](_0xe4d463||[]),_0x4567be=(_0x3d1c48||'')['replace'](/-/g,'_');return'\x0a//\x20───\x20Request\x20Scope\x20Middleware\x20(Layer\x201\x20RLS)\x20──────────────────────────\x0a//\x20Dynamic\x20per-request\x20filtering\x20by\x20\x27'+_0x467c60+'\x27\x20from\x20'+_0x48d2ec+'\x0a//\x20Generated\x20from\x20requestScope\x20configuration\x20in\x20payload\x20JSON\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20!==\x20\x27POST\x27)\x20return\x20next();\x0a\x0a\x20\x20//\x20Skip\x20when\x20no\x20auth\x20context\x20(endpoint\x20without\x20auth\x20middleware)\x0a\x20\x20if\x20(!req.user)\x20return\x20next();\x0a\x0a\x20\x20//\x20Skip\x20when\x20user\x20has\x20bypass\x20role\x0a\x20\x20const\x20userRoles\x20=\x20req.user.roles\x20||\x20[];\x0a\x20\x20const\x20bypassRoles\x20=\x20'+_0x760207+';\x0a\x20\x20if\x20(bypassRoles.length\x20>\x200\x20&&\x20bypassRoles.some(role\x20=>\x20userRoles.includes(role)))\x20{\x0a\x20\x20\x20\x20return\x20next();\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Read\x20scope\x20value\x20from\x20user\x20context\x0a\x20\x20const\x20scopeValue\x20=\x20'+_0x48d2ec+';\x0a\x20\x20if\x20(scopeValue\x20===\x20undefined\x20||\x20scopeValue\x20===\x20null)\x20{\x0a\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Forbidden\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27Request\x20scope\x20value\x20not\x20available\x20in\x20user\x20context\x27,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a\x0a\x20\x20//\x20Expose\x20scope\x20info\x20for\x20route\x20handlers\x20(ownership\x20verification\x20in\x20/first,\x20/update,\x20/update-composite)\x0a\x20\x20req._requestScope\x20=\x20{\x20column:\x20\x27'+_0x467c60+_0x47aaed(0x15a)+_0x467c60+'\x27,\x20value:\x20scopeValue\x20};\x0a\x0a\x20\x20//\x20READ\x20operations:\x20inject\x20scope\x20into\x20req.body.where\x0a\x20\x20if\x20([\x27datatables\x27,\x20\x27read\x27,\x20\x27lookup\x27,\x20\x27read-composite\x27].includes(endpoint))\x20{\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20[scopeCondition];\x0a\x20\x20\x20\x20}\x20else\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20}\x20else\x20if\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20originalLogic\x20=\x20req.body.where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20if\x20(originalLogic\x20===\x20\x27AND\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.conditions.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logic:\x20\x27AND\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conditions:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20scopeCondition,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20logic:\x20originalLogic,\x20conditions:\x20req.body.where.conditions\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20DELETE:\x20prepend\x20scope\x20condition\x20to\x20where\x20array\x0a\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27)\x20{\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20req.body.where.unshift(scopeCondition);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20//\x20CREATE\x20/\x20ADD:\x20force\x20scope\x20column\x20value\x0a\x20\x20if\x20(endpoint\x20===\x20\x27add\x27\x20||\x20endpoint\x20===\x20\x27create\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x467c60+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20//\x20UPDATE:\x20force\x20scope\x20column\x20value\x20(ownership\x20verified\x20in\x20/update\x20handler)\x0a\x20\x20if\x20(endpoint\x20===\x20\x27update\x27)\x20{\x0a\x20\x20\x20\x20req.body[\x27'+_0x467c60+_0x47aaed(0x21b)+_0x4567be+'\x27]\x20||\x20req.body;\x0a\x20\x20\x20\x20masterBody[\x27'+_0x467c60+_0x47aaed(0xdb);}function buildSoftDeleteReadMiddleware(_0x317ebd){const _0x189925=a0_0x265454,_0x544793={'APceI':'active_only'},_0x28dee0=softDeleteVisibilityFilter(_0x317ebd);if(_0x28dee0===null)return'';const _0x4e4688=_0x317ebd['softDelete']&&_0x317ebd[_0x189925(0x228)][_0x189925(0x169)]||_0x544793['APceI'];return'\x0a//\x20───\x20Soft-Delete\x20Read\x20Filter\x20Middleware\x20(R15)\x20─────────────────────\x0a//\x20Default\x20Invisible:\x20inject\x20filter\x20\x27'+IS_DELETED_COLUMN+_0x189925(0x229)+_0x4e4688+_0x189925(0x1a2)+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x28dee0+_0x189925(0x299);}function buildLookupOverrideCode(_0x292294,_0x4e32ca){const _0x1df3ab=a0_0x265454,_0x255d1a={'BGjVr':function(_0x26ad05,_0x512de5){return _0x26ad05!==_0x512de5;},'WUnxG':function(_0x215878,_0x5e68ce){return _0x215878+_0x5e68ce;},'qHYdo':'AND\x20('},_0x30ac77=FileUtils['detectTextColumn'](_0x4e32ca[_0x1df3ab(0xe3)]||[]),_0x639b32=FileUtils['toPascalCase'](_0x292294),_0x491390=_0x4e32ca['_extendedFields']||{'all':_0x4e32ca['fieldName']||[]},_0x4fba5c=_0x4e32ca['primaryKey']||_0x4e32ca[_0x1df3ab(0xe3)]&&_0x4e32ca['fieldName'][0x0]||'id',_0x56c841=_0x4e32ca['_fieldProjections']||{},_0x51651f=_0x56c841[_0x1df3ab(0x20c)]||_0x4e32ca['fieldName']||[],_0x3a11b4=_0x4e32ca['defaultScope']&&_0x4e32ca[_0x1df3ab(0x200)]['lookup']?buildDefaultScopeSQL(_0x4e32ca['defaultScope'][_0x1df3ab(0x26c)]):'',_0x27aa58=((()=>{const _0x40be18=_0x1df3ab,_0x2b469a=softDeleteVisibilityFilter(_0x4e32ca);return _0x255d1a[_0x40be18(0x212)](_0x2b469a,null)?_0x255d1a['WUnxG']('a.',IS_DELETED_COLUMN)+_0x40be18(0x237)+_0x2b469a:'';})()),_0x9b31f8=[_0x3a11b4,_0x27aa58]['filter'](Boolean)[_0x1df3ab(0x182)](_0x1df3ab(0x146));return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Mendapatkan\x20FROM\x20clause\x20untuk\x20lookup\x20berdasarkan\x20prioritas\x20resolusi\x20sumber\x20data\x0a\x20\x20\x20*\x20Prioritas:\x20viewName\x20→\x20viewQuery\x20→\x20tableName\x20(konsisten\x20dengan\x20/read\x20dan\x20/first)\x0a\x20\x20\x20*\x20@returns\x20{string}\x20FROM\x20clause\x20dengan\x20alias\x20\x27a\x27\x0a\x20\x20\x20*/\x0a\x20\x20getLookupSource()\x20{\x0a\x20\x20\x20\x20const\x20readQuery\x20=\x20this.getReadQuery();\x0a\x20\x20\x20\x20const\x20simpleQuery\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;\x0a\x20\x20\x20\x20if\x20(readQuery.trim()\x20!==\x20simpleQuery)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20viewName\x20atau\x20viewQuery\x20aktif\x20—\x20bungkus\x20sebagai\x20subquery\x0a\x20\x20\x20\x20\x20\x20return\x20\x27(\x27\x20+\x20readQuery\x20+\x20\x27)\x20a\x27;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20this.readSource\x20+\x20\x27\x20a\x27;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getLookupData\x20untuk\x20menggunakan\x20kolom\x20\x27'+_0x30ac77+_0x1df3ab(0xd5)+_0x4fba5c+',\x20'+_0x30ac77+_0x1df3ab(0x20f)+_0x30ac77+')\x20LIKE\x20upper($1)'+(_0x3a11b4?'\x20AND\x20'+_0x3a11b4:'')+(_0x27aa58?_0x1df3ab(0x146)+_0x27aa58:'')+'\x20ORDER\x20BY\x20a.'+_0x30ac77+_0x1df3ab(0x14d)+_0x4fba5c+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x30ac77+_0x1df3ab(0x1ba)+_0x639b32+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Dynamic\x20lookup\x20dengan\x20support\x20filtering\x20tambahan\x20dan\x20pencarian\x20multi-field\x0a\x20\x20\x20*\x20@param\x20{string}\x20search\x20-\x20Kata\x20kunci\x20pencarian\x0a\x20\x20\x20*\x20@param\x20{Object}\x20extraFilters\x20-\x20Filter\x20tambahan\x20(misal:\x20company_id)\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getLookupDataDynamic(search,\x20extraFilters\x20=\x20{})\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20custom\x20lookup\x20config\x20jika\x20ada,\x20fallback\x20ke\x20textFields\x20detection\x0a\x20\x20\x20\x20\x20\x20const\x20lookupConfig\x20=\x20'+JSON['stringify'](_0x4e32ca[_0x1df3ab(0xc5)]||null)+_0x1df3ab(0x19b)+JSON[_0x1df3ab(0x252)](_0x491390['textFields']||[_0x30ac77])+';\x0a\x0a\x20\x20\x20\x20\x20\x20let\x20whereConditions\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a'+(_0x3a11b4?'\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x0a\x20\x20\x20\x20\x20\x20whereConditions.push(`'+_0x3a11b4+'`);\x0a':'')+(_0x27aa58?_0x1df3ab(0x193)+_0x27aa58+'`);\x0a':'')+_0x1df3ab(0xba)+JSON['stringify'](_0x51651f)+_0x1df3ab(0x23c)+_0x4fba5c+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20textField\x20=\x20lookupConfig\x20&&\x20lookupConfig.hasCustomText\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20lookupConfig.textField\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20textFields[0];\x0a\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20`SELECT\x20${idField},\x20${textField}\x20FROM\x20${this.getLookupSource()}`;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereConditions.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`\x20WHERE\x20${whereConditions.join(\x27\x20AND\x20\x27)}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20query\x20+=\x20`\x20ORDER\x20BY\x20${lookupConfig\x20&&\x20lookupConfig.hasCustomText\x20?\x20\x272\x27\x20:\x20\x27a.\x27\x20+\x20textFields[0]}`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20DEBUG\x20DYNAMIC\x20LOOKUP\x20===\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Query:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Params:\x27,\x20params);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Extra\x20filters:\x27,\x20extraFilters);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Lookup\x20config:\x27,\x20lookupConfig);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20END\x20DEBUG\x20===\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item[idField]\x20||\x20item.'+_0x4fba5c+_0x1df3ab(0x148)+_0x639b32+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getStaticLookupData\x20untuk\x20menggunakan\x20kolom\x20\x27'+_0x30ac77+_0x1df3ab(0x1f7)+_0x4fba5c+',\x20'+_0x30ac77+_0x1df3ab(0x1f9)+(_0x9b31f8?'\x20WHERE\x20'+_0x9b31f8:'')+_0x1df3ab(0xf4)+_0x30ac77+'`;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20result\x20tanpa\x20selected\x20flag\x0a\x20\x20\x20\x20\x20\x20const\x20cacheData\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x4fba5c+_0x1df3ab(0x292)+_0x30ac77+_0x1df3ab(0x236)+_0x4fba5c+_0x1df3ab(0x279)+_0x30ac77+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.'+_0x4fba5c+_0x1df3ab(0x2a6)+_0x639b32+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Method\x20untuk\x20lookup\x20data\x20dengan\x20filtering\x20(where\x20clause)\x20dan\x20custom\x20select\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Options\x20dengan\x20where\x20dan\x20select\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x20dengan\x20format\x20{id,\x20text}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getLookupDataWithFilter(options)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20cache\x20first\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20const\x20cacheOptions\x20=\x20{\x20...options,\x20type:\x20\x27filter\x27\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedLookup(cacheOptions,\x20\x27filter\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20cachedResult;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20selectColumns\x20=\x20options.select\x20||\x20[\x27'+_0x4fba5c+'\x27,\x20\x27'+_0x30ac77+_0x1df3ab(0x257)+JSON[_0x1df3ab(0x252)](_0x491390[_0x1df3ab(0x17f)]||[])+';\x0a\x20\x20\x20\x20\x20\x20let\x20selectClause\x20=\x20\x27'+_0x4fba5c+_0x1df3ab(0x137)+_0x30ac77+'\x27;\x0a\x20\x20\x20\x20\x20\x20let\x20aliasField\x20=\x20null;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Proses\x20setiap\x20column\x20dalam\x20select\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20column\x20of\x20selectColumns)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(column.toLowerCase()\x20===\x20\x27'+_0x4fba5c+'\x27.toLowerCase())\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x20//\x20primary\x20key\x20sudah\x20ada\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20jika\x20ada\x20SQL\x20expression\x20dengan\x20alias\x20(menggunakan\x20AS)\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20aliasRegex\x20=\x20new\x20RegExp(\x27(.+)\x5c\x5cs+as\x5c\x5cs+(\x5c\x5cw+)$\x27,\x20\x27i\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20aliasMatch\x20=\x20column.match(aliasRegex);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(aliasMatch)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20expression\x20=\x20aliasMatch[1].trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20alias\x20=\x20aliasMatch[2].trim();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${expression}\x20AS\x20${alias}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20alias;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20aliasField\x20=\x20alias;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x20//\x20gunakan\x20yang\x20pertama\x20sebagai\x20text\x20field\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20jika\x20simple\x20field\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(validTextFields.includes(column)\x20||\x20column\x20===\x20\x27'+_0x30ac77+'\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${column}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20break;\x20//\x20gunakan\x20yang\x20pertama\x20sebagai\x20text\x20field\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Jika\x20bukan\x20recognized\x20field,\x20masih\x20tambahkan\x20(mungkin\x20computed\x20column)\x0a\x20\x20\x20\x20\x20\x20\x20\x20selectClause\x20+=\x20`,\x20${column}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20textField\x20=\x20column;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Bangun\x20query\x20SELECT\x20dengan\x20support\x20expressions\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20`SELECT\x20${selectClause}\x20FROM\x20${this.getLookupSource()}\x20'+(_0x3a11b4?_0x1df3ab(0x103)+_0x3a11b4+'\x20':'')+_0x1df3ab(0x232)+(_0x3a11b4?_0x255d1a[_0x1df3ab(0x26f)]:'WHERE\x20')+'${whereResult.sql}'+(_0x3a11b4?')':'')+_0x1df3ab(0x256)+_0x4fba5c+'\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(direction\x20!==\x20\x27ASC\x27\x20&&\x20direction\x20!==\x20\x27DESC\x27)\x20return\x20null;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${column}\x20${direction}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}).filter(Boolean);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(orderParts.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27No\x20valid\x20sort\x20columns\x20provided\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${orderParts.join(\x27,\x20\x27)}`;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Order\x20by\x20text\x20field\x20(gunakan\x20alias\x20jika\x20ada)\x20-\x20default\x20behavior\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20+=\x20`ORDER\x20BY\x20${aliasField\x20||\x20textField}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20DEBUG\x20'+_0x292294[_0x1df3ab(0x277)]()+'\x20LOOKUP\x20WITH\x20FILTER\x20===\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Final\x20SQL:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Parameters:\x27,\x20params);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Selected\x20columns:\x27,\x20selectColumns);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Sort\x20columns:\x27,\x20options.sort_columns\x20||\x20\x27none\x27);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Valid\x20fields\x20for\x20ordering:\x27,\x20this.validFields);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Text\x20field:\x27,\x20textField);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Alias\x20field:\x27,\x20aliasField);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27===\x20END\x20DEBUG\x20===\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Eksekusi\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20hasil\x20untuk\x20lookup\x20(id\x20dan\x20text)\x20-\x20gunakan\x20alias\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20textFieldName\x20=\x20aliasField\x20||\x20textField;\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20data.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x4fba5c+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item[textFieldName]\x20||\x20item.'+_0x30ac77+'\x20||\x20item.name\x20||\x20item.code\x20||\x20item.description\x20||\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20the\x20result\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20result,\x20\x27filter\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getLookupDataWithFilter\x20('+_0x639b32+_0x1df3ab(0x1e0);}function buildAdvancedQuerySection(_0x2a47d5){const _0x5317ff=a0_0x265454,_0x446fc8={'BnkUF':function(_0x35eb3a,_0x320067){return _0x35eb3a===_0x320067;},'uZDxt':'//\x20No\x20advanced\x20queries\x20defined'},_0x484a0d=_0x2a47d5[_0x5317ff(0x14f)]||{};if(_0x446fc8[_0x5317ff(0x11f)](Object['keys'](_0x484a0d)[_0x5317ff(0x272)],0x0))return _0x446fc8[_0x5317ff(0x190)];return'\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20const\x20queryDefinitions\x20=\x20{\x0a'+Object[_0x5317ff(0x208)](_0x484a0d)[_0x5317ff(0x2b4)](([_0x7e53ca,_0x4b137a])=>_0x5317ff(0x23d)+_0x7e53ca+_0x5317ff(0x19c)+JSON['stringify'](_0x4b137a))[_0x5317ff(0x182)](',\x0a')+_0x5317ff(0x149);}function buildQueryLoadingCode(_0x22cf9a,_0xad0d3c){const _0x11c243=a0_0x265454,_0xcfcc28={'sOtFx':'${payload.tableName\x20||\x20\x22undefined_table\x22}'};if(!_0x22cf9a)return _0x11c243(0x1a3);const _0x406e0e=_0x22cf9a['replace'](/\$\{tableName\}/g,_0xcfcc28['sOtFx'])['replace'](/\$\{this\.table\}/g,_0xcfcc28[_0x11c243(0x120)]);return _0x11c243(0x2af)+_0x406e0e+'`.trim();';}function buildFieldMappingCode(_0x2199ee){const _0x5a9b88=a0_0x265454,_0x590c74=_0x2199ee['_extendedFields']||{};return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Get\x20field\x20mapping\x20untuk\x20berbagai\x20operasi\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Field\x20mapping\x20object\x0a\x20\x20\x20*/\x0a\x20\x20getFieldMapping()\x20{\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20allFields:\x20this.validFields,\x0a\x20\x20\x20\x20\x20\x20textFields:\x20'+JSON[_0x5a9b88(0x252)](_0x590c74[_0x5a9b88(0x17f)]||[])+_0x5a9b88(0x2b0)+JSON[_0x5a9b88(0x252)](_0x590c74[_0x5a9b88(0x283)]||[])+',\x0a\x20\x20\x20\x20\x20\x20requiredFields:\x20'+JSON['stringify'](_0x590c74[_0x5a9b88(0x214)]||[])+_0x5a9b88(0x18b)+(_0x590c74['primaryTextField']||_0x5a9b88(0x262))+'\x27,\x0a\x20\x20\x20\x20\x20\x20searchableFields:\x20this.getSearchableColumns\x20?\x20this.getSearchableColumns().map(col\x20=>\x20col.name)\x20:\x20[]\x0a\x20\x20\x20\x20};\x0a\x20\x20}';}function _generateValidationConfig(_0x7ae346){const _0x2dc3b5=a0_0x265454,_0x6b1a32={'RcUlM':_0x2dc3b5(0x15d),'SMQSZ':_0x2dc3b5(0x1b6)};if(!_0x7ae346||!Array[_0x2dc3b5(0x247)](_0x7ae346)||_0x7ae346[_0x2dc3b5(0x272)]===0x0)return _0x6b1a32[_0x2dc3b5(0x2a2)];const _0x2e786f=_0x7ae346[_0x2dc3b5(0x2b4)](_0x5d68a3=>{const _0x44214d=_0x2dc3b5,_0x36dc15=JSON[_0x44214d(0x252)](_0x5d68a3[_0x44214d(0x1ab)]||{},null,0x6)[_0x44214d(0x224)](/\n/g,_0x6b1a32[_0x44214d(0x18e)]);return'\x20\x20\x20\x20\x20\x20\x27'+_0x5d68a3['name']+_0x44214d(0x267)+_0x5d68a3['type']+_0x44214d(0x22d)+_0x36dc15+_0x44214d(0x23a);})['join'](',\x0a');return _0x2dc3b5(0x12f)+_0x2e786f+'\x0a\x20\x20\x20\x20};\x0a';}function _generateValidateFieldConstraints(){return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20field\x20dengan\x20constraints\x0a\x20\x20\x20*\x20@param\x20{string}\x20fieldName\x20-\x20Nama\x20field\x0a\x20\x20\x20*\x20@param\x20{*}\x20value\x20-\x20Nilai\x20field\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20Operation\x20(insert/update)\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Validation\x20result\x20{valid,\x20errors,\x20warnings,\x20sanitized}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20validateFieldConstraints(fieldName,\x20value,\x20operation\x20=\x20\x27insert\x27)\x20{\x0a\x20\x20\x20\x20const\x20config\x20=\x20this.validationConfig[fieldName];\x0a\x20\x20\x20\x20if\x20(!config)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{valid:\x20true,\x20sanitized:\x20value,\x20errors:\x20[],\x20warnings:\x20[]};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20true,\x0a\x20\x20\x20\x20\x20\x20errors:\x20[],\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20value\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20constraints\x20=\x20config.constraints\x20||\x20{};\x0a\x20\x20\x20\x20const\x20fieldType\x20=\x20config.type\x20||\x20\x27string\x27;\x0a\x0a\x20\x20\x20\x20//\x201.\x20Check\x20required\x0a\x20\x20\x20\x20if\x20(constraints.required\x20&&\x20(value\x20===\x20undefined\x20||\x20value\x20===\x20null\x20||\x20value\x20===\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Skip:\x20autoGenerate\x20atau\x20primaryKey\x20di\x20insert\x0a\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20(constraints.autoGenerate\x20||\x20constraints.primaryKey))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20OK\x20—\x20akan\x20di-generate\x20otomatis\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20//\x20Skip:\x20update\x20partial\x20—\x20field\x20tidak\x20dikirim\x20berarti\x20tidak\x20diubah\x0a\x20\x20\x20\x20\x20\x20else\x20if\x20(operation\x20===\x20\x27update\x27\x20&&\x20value\x20===\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20OK\x20—\x20field\x20tidak\x20sedang\x20di-update\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.requiredMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20is\x20required`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20result.valid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Skip\x20validation\x20jika\x20value\x20kosong\x20dan\x20tidak\x20required\x0a\x20\x20\x20\x20if\x20(value\x20===\x20undefined\x20||\x20value\x20===\x20null\x20||\x20value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x202.\x20Type-specific\x20validation\x0a\x20\x20\x20\x20switch\x20(fieldType)\x20{\x0a\x20\x20\x20\x20\x20\x20case\x20\x27string\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27text\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20text\x20divalidasi\x20identik\x20dengan\x20string\x20(unbounded\x20string);\x20hanya\x20berbeda\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20pemetaan\x20UI\x20(→\x20textarea),\x20bukan\x20aturan\x20validasi\x20data.\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20await\x20this._validateStringConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20case\x20\x27integer\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27decimal\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27number\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20this._validateNumberConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20case\x20\x27date\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27datetime\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27timestamp\x27:\x0a\x20\x20\x20\x20\x20\x20case\x20\x27time\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20this._validateDateConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20case\x20\x27boolean\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20this._validateBooleanConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20case\x20\x27uuid\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20this._validateUuidConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20case\x20\x27array\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20this._validateArrayConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20case\x20\x27json\x27:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20this._validateJsonConstraints(fieldName,\x20value,\x20constraints);\x0a\x20\x20\x20\x20\x20\x20default:\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20string\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20async\x20_validateStringConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20let\x20sanitized\x20=\x20String(value);\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x20\x20\x20\x20const\x20isHashField\x20=\x20constraints.hash\x20===\x20\x27bcrypt\x27;\x0a\x0a\x20\x20\x20\x20//\x20Trim\x0a\x20\x20\x20\x20if\x20(constraints.trim)\x20{\x0a\x20\x20\x20\x20\x20\x20sanitized\x20=\x20sanitized.trim();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Case\x20transformation\x20(skip\x20jika\x20hash\x20field\x20—\x20tidak\x20relevan\x20untuk\x20password)\x0a\x20\x20\x20\x20if\x20(!isHashField)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(constraints.lowercase)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20sanitized.toLowerCase();\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(constraints.uppercase)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20sanitized.toUpperCase();\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Length\x20validation\x20(validasi\x20plaintext\x20sebelum\x20hash)\x0a\x20\x20\x20\x20if\x20(constraints.minLength\x20&&\x20sanitized.length\x20<\x20constraints.minLength)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.minLengthMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20at\x20least\x20${constraints.minLength}\x20characters`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(constraints.maxLength\x20&&\x20!isHashField\x20&&\x20sanitized.length\x20>\x20constraints.maxLength)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.maxLengthMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20not\x20exceed\x20${constraints.maxLength}\x20characters`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Pattern\x20validation\x20(validasi\x20plaintext\x20sebelum\x20hash)\x0a\x20\x20\x20\x20if\x20(constraints.pattern)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20regex\x20=\x20new\x20RegExp(constraints.pattern);\x0a\x20\x20\x20\x20\x20\x20if\x20(!regex.test(sanitized))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.patternMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20does\x20not\x20match\x20required\x20pattern`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Format\x20validation\x20(email,\x20phone,\x20url,\x20uuid)\x0a\x20\x20\x20\x20if\x20(constraints.format)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20formatValid\x20=\x20this._validateFormat(sanitized,\x20constraints.format);\x0a\x20\x20\x20\x20\x20\x20if\x20(!formatValid.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.formatMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20has\x20invalid\x20${constraints.format}\x20format`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Enum\x20validation\x0a\x20\x20\x20\x20if\x20(constraints.enum\x20&&\x20Array.isArray(constraints.enum))\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(!constraints.enum.includes(sanitized))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.enumMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20one\x20of:\x20${constraints.enum.join(\x27,\x20\x27)}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Skip\x20unique\x20constraint\x20-\x20database\x20akan\x20handle\x20via\x20UNIQUE\x20index\x0a\x20\x20\x20\x20//\x20if\x20(constraints.unique)\x20{\x20/*\x20handled\x20by\x20database\x20*/\x20}\x0a\x0a\x20\x20\x20\x20//\x20Hash\x20transformation\x20(setelah\x20semua\x20validation\x20pass,\x20sebelum\x20return)\x0a\x20\x20\x20\x20if\x20(isHashField\x20&&\x20errors.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20bcrypt\x20=\x20require(\x27bcrypt\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20cost\x20=\x20constraints.hashCost\x20||\x2010;\x0a\x20\x20\x20\x20\x20\x20sanitized\x20=\x20await\x20bcrypt.hash(sanitized,\x20cost);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20sanitized\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20number\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20_validateNumberConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20let\x20sanitized\x20=\x20value;\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x0a\x20\x20\x20\x20//\x20Parse\x20to\x20number\x0a\x20\x20\x20\x20if\x20(typeof\x20sanitized\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20sanitized\x20=\x20parseFloat(sanitized);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(isNaN(sanitized))\x20{\x0a\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20valid\x20number`);\x0a\x20\x20\x20\x20\x20\x20return\x20{valid:\x20false,\x20errors:\x20errors,\x20warnings:\x20[],\x20sanitized:\x20value};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Min/Max\x0a\x20\x20\x20\x20if\x20(constraints.min\x20!==\x20undefined\x20&&\x20sanitized\x20<\x20constraints.min)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.minMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20at\x20least\x20${constraints.min}`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(constraints.max\x20!==\x20undefined\x20&&\x20sanitized\x20>\x20constraints.max)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.maxMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20not\x20exceed\x20${constraints.max}`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Positive/Negative\x0a\x20\x20\x20\x20if\x20(constraints.positive\x20&&\x20sanitized\x20<=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.positiveMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20positive`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(constraints.negative\x20&&\x20sanitized\x20>=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.negativeMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20negative`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Integer\x20check\x0a\x20\x20\x20\x20if\x20(constraints.integer\x20&&\x20!Number.isInteger(sanitized))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.integerMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20an\x20integer`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Precision/Scale\x20for\x20decimal\x0a\x20\x20\x20\x20if\x20(constraints.precision\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20decimals\x20=\x20(sanitized.toString().split(\x27.\x27)[1]\x20||\x20\x27\x27).length;\x0a\x20\x20\x20\x20\x20\x20if\x20(decimals\x20>\x20constraints.precision)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.precisionMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20have\x20at\x20most\x20${constraints.precision}\x20decimal\x20places`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20sanitized\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20date\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20_validateDateConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x20\x20\x20\x20let\x20sanitized\x20=\x20value;\x0a\x0a\x20\x20\x20\x20//\x20Basic\x20date\x20validation\x20(more\x20complex\x20parsing\x20handled\x20by\x20DateTimeParser\x20in\x20basemodel)\x0a\x20\x20\x20\x20//\x20Min/Max\x20date\x20range\x0a\x20\x20\x20\x20if\x20(constraints.min\x20||\x20constraints.max)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20dateValue\x20=\x20new\x20Date(sanitized);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isNaN(dateValue.getTime()))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20valid\x20date`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.min)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20minDate\x20=\x20new\x20Date(constraints.min);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(dateValue\x20<\x20minDate)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.minMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20on\x20or\x20after\x20${constraints.min}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(constraints.max)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20maxDate\x20=\x20new\x20Date(constraints.max);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(dateValue\x20>\x20maxDate)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.maxMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20on\x20or\x20before\x20${constraints.max}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20valid\x20date`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Before/After\x20relasi\x20akan\x20divalidasi\x20di\x20_validateCrossFieldConstraints\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20sanitized\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20boolean\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20_validateBooleanConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x20\x20\x20\x20let\x20sanitized\x20=\x20value;\x0a\x0a\x20\x20\x20\x20if\x20(constraints.strict)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(typeof\x20sanitized\x20!==\x20\x27boolean\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20boolean\x20(true/false)`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Terima\x20hanya\x20set\x20kanonik\x20(selaras\x20MySQL/Oracle/SQLite):\x20true/\x27true\x27/1/\x271\x27\x0a\x20\x20\x20\x20\x20\x20//\x20dan\x20false/\x27false\x27/0/\x270\x27.\x20Nilai\x20lain\x20DITOLAK,\x20bukan\x20dipaksa\x20via\x20Boolean()\x0a\x20\x20\x20\x20\x20\x20//\x20(yang\x20membuat\x20string\x20non-kosong\x20seperti\x20\x27not-a-boolean\x27\x20diam-diam\x20jadi\x0a\x20\x20\x20\x20\x20\x20//\x20true).\x20Menjamin\x201\x20input\x20->\x20behavior\x20identik\x20lintas\x20dialect.\x0a\x20\x20\x20\x20\x20\x20if\x20(sanitized\x20===\x20true\x20||\x20sanitized\x20===\x20\x27true\x27\x20||\x20sanitized\x20===\x201\x20||\x20sanitized\x20===\x20\x271\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(sanitized\x20===\x20false\x20||\x20sanitized\x20===\x20\x27false\x27\x20||\x20sanitized\x20===\x200\x20||\x20sanitized\x20===\x20\x270\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20boolean\x20(true/false)`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20sanitized\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20UUID\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20_validateUuidConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x20\x20\x20\x20const\x20uuidRegex\x20=\x20/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\x0a\x0a\x20\x20\x20\x20if\x20(!uuidRegex.test(value))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.formatMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20a\x20valid\x20UUID`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20value\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20array\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20_validateArrayConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(value))\x20{\x0a\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20an\x20array`);\x0a\x20\x20\x20\x20\x20\x20return\x20{valid:\x20false,\x20errors:\x20errors,\x20warnings:\x20[],\x20sanitized:\x20value};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20minItems/maxItems\x0a\x20\x20\x20\x20if\x20(constraints.minItems\x20&&\x20value.length\x20<\x20constraints.minItems)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.minItemsMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20have\x20at\x20least\x20${constraints.minItems}\x20items`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(constraints.maxItems\x20&&\x20value.length\x20>\x20constraints.maxItems)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.maxItemsMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20not\x20exceed\x20${constraints.maxItems}\x20items`;\x0a\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20uniqueItems\x0a\x20\x20\x20\x20if\x20(constraints.uniqueItems)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20unique\x20=\x20[...new\x20Set(value)];\x0a\x20\x20\x20\x20\x20\x20if\x20(unique.length\x20!==\x20value.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.uniqueItemsMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20have\x20unique\x20items`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20value\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20JSON\x20constraints\x0a\x20\x20\x20*/\x0a\x20\x20_validateJsonConstraints(fieldName,\x20value,\x20constraints)\x20{\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x20\x20\x20\x20let\x20sanitized\x20=\x20value;\x0a\x0a\x20\x20\x20\x20//\x20Parse\x20jika\x20string\x0a\x20\x20\x20\x20if\x20(typeof\x20sanitized\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20sanitized\x20=\x20JSON.parse(sanitized);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Field\x20\x27${fieldName}\x27\x20must\x20be\x20valid\x20JSON`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20{valid:\x20false,\x20errors:\x20errors,\x20warnings:\x20[],\x20sanitized:\x20value};\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20JSON\x20Schema\x20validation\x20bisa\x20ditambahkan\x20di\x20sini\x20jika\x20diperlukan\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors,\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitized:\x20sanitized\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20format\x20(email,\x20phone,\x20url,\x20uuid)\x0a\x20\x20\x20*/\x0a\x20\x20_validateFormat(value,\x20format)\x20{\x0a\x20\x20\x20\x20const\x20patterns\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20email:\x20/^[^\x5cs@]+@[^\x5cs@]+\x5c.[^\x5cs@]+$/,\x0a\x20\x20\x20\x20\x20\x20phone:\x20/^[\x5cd\x5cs\x5c-\x5c+\x5c(\x5c)]+$/,\x0a\x20\x20\x20\x20\x20\x20url:\x20/^https?:\x5c/\x5c/.+/,\x0a\x20\x20\x20\x20\x20\x20uuid:\x20/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20pattern\x20=\x20patterns[format];\x0a\x20\x20\x20\x20if\x20(!pattern)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20{valid:\x20true};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{valid:\x20pattern.test(value)};\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20cross-field\x20constraints\x20(before/after\x20date)\x0a\x20\x20\x20*/\x0a\x20\x20async\x20_validateCrossFieldConstraints(data,\x20operation)\x20{\x0a\x20\x20\x20\x20const\x20errors\x20=\x20[];\x0a\x0a\x20\x20\x20\x20for\x20(const\x20fieldName\x20in\x20this.validationConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20config\x20=\x20this.validationConfig[fieldName];\x0a\x20\x20\x20\x20\x20\x20const\x20constraints\x20=\x20config.constraints\x20||\x20{};\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(constraints.before)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeField\x20=\x20constraints.before;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data[fieldName]\x20&&\x20data[beforeField])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(new\x20Date(data[fieldName])\x20>=\x20new\x20Date(data[beforeField]))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.beforeMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20before\x20\x27${beforeField}\x27`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Invalid\x20date\x20format\x20for\x20field\x20\x27${fieldName}\x27:\x20cannot\x20compare\x20dates`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(constraints.after)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterField\x20=\x20constraints.after;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data[fieldName]\x20&&\x20data[afterField])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(new\x20Date(data[fieldName])\x20<=\x20new\x20Date(data[afterField]))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20message\x20=\x20constraints.afterMessage\x20||\x20`Field\x20\x27${fieldName}\x27\x20must\x20be\x20after\x20\x27${afterField}\x27`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors.push(`Invalid\x20date\x20format\x20for\x20field\x20\x27${fieldName}\x27:\x20cannot\x20compare\x20dates`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20valid:\x20errors.length\x20===\x200,\x0a\x20\x20\x20\x20\x20\x20errors:\x20errors\x0a\x20\x20\x20\x20};\x0a\x20\x20}\x0a';}function generateCompositeMethods(_0x423efd){const _0x493d6b=a0_0x265454,_0x4fb1a9={'QhnES':_0x493d6b(0x2b6),'hfaMe':function(_0x43417f,_0x3293b0){return _0x43417f>_0x3293b0;},'vilBE':function(_0x5a2e4f,_0x37fc8b){return _0x5a2e4f+_0x37fc8b;},'HQcBP':_0x493d6b(0x183)},_0x8cb371=_0x423efd[_0x493d6b(0x174)]||{},_0x254ac6=_0x423efd[_0x493d6b(0xd2)]&&_0x423efd['masterDetail'][_0x493d6b(0x20b)];if(!_0x254ac6||!_0x8cb371['createComposite']&&!_0x8cb371['updateComposite']&&!_0x8cb371['readComposite'])return'';const _0x31f727=_0x423efd[_0x493d6b(0xd2)]['detailTable'],_0x1cb678=_0x423efd['masterDetail'][_0x493d6b(0x1a8)],_0x4c0312=_0x423efd['primaryKey']||'id';let _0x338ad0='\x0a';if(_0x8cb371['createComposite']){const _0x4a91d5=_0x423efd['masterDetail']?.['detailConfig']?.['primaryKey']||_0x31f727[_0x493d6b(0x273)]('.')['pop']()+_0x493d6b(0x1f0),_0x392048=_0x423efd['masterDetail']?.['detailConfig']?.['autoCalculateFields']||{},_0x55924a=[],_0x28710c=[];for(const [_0x4eb719,_0x2dfe86]of Object['entries'](_0x392048)){if(_0x2dfe86[_0x493d6b(0x25e)]===_0x4fb1a9[_0x493d6b(0xc1)])_0x55924a['push'](_0x4eb719);else{const _0x153a12=(_0x2dfe86[_0x493d6b(0x150)]||'')['split']('*')['map'](_0x284003=>_0x284003['trim']());_0x28710c[_0x493d6b(0x20d)]({'fieldName':_0x4eb719,'qtyField':_0x153a12[0x0],'priceField':_0x153a12[0x1]});}}const _0x340eac=_0x28710c['map'](_0x323456=>{const _0x3c6446=_0x493d6b;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x323456[_0x3c6446(0xe3)]+'\x20=\x20'+_0x323456[_0x3c6446(0x24e)]+'\x20*\x20'+_0x323456[_0x3c6446(0xf9)]+_0x3c6446(0x152)+_0x323456['fieldName']+'\x20=\x20(Number(item.'+_0x323456['qtyField']+_0x3c6446(0x12e)+_0x323456['priceField']+_0x3c6446(0x2a8);})['join']('\x0a');_0x338ad0+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20create\x20-\x20Create\x20header\x20with\x20detail\x20items\x20in\x20a\x20single\x20transaction\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20containing\x20header\x20and\x20detail\x20items\x20array\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Created\x20record\x20with\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20createComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20(exclude\x20detail\x20items)\x0a\x20\x20\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x31f727[_0x493d6b(0x273)]('.')['pop']()+_0x493d6b(0x1d0)+_0x423efd[_0x493d6b(0x16a)]+_0x493d6b(0x154)+_0x31f727+_0x493d6b(0x1f1)+_0x1cb678+_0x493d6b(0x21c)+_0x31f727+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20foreignKey\x20=\x20\x27'+_0x1cb678+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+(_0x4fb1a9[_0x493d6b(0x1aa)](_0x55924a['length'],0x0)?'const\x20generatedFields\x20=\x20'+JSON[_0x493d6b(0x252)](_0x55924a)+';':'')+_0x493d6b(0x2b8)+_0x4a91d5+_0x493d6b(0x27d)+(_0x340eac?_0x4fb1a9[_0x493d6b(0x19e)](_0x4fb1a9[_0x493d6b(0x19e)]('\x0a',_0x340eac),'\x0a'):'')+_0x493d6b(0x26b)+(_0x4fb1a9['hfaMe'](_0x55924a['length'],0x0)?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailFields.push(key);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholders.push(`$${detailPlaceholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20ke\x20detail\x20INSERT\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20detailPlaceholderIndex\x20=\x20this._appendCreateAuditColumns(detailFields,\x20detailValues,\x20detailPlaceholders,\x20item,\x20eventContext,\x20detailPlaceholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${detailTableName}\x20(${detailFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${detailPlaceholders.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20detail\x20INSERT:\x27,\x20{\x20query:\x20detailInsertQuery,\x20values:\x20detailValues\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailResult\x20=\x20await\x20client.query(detailInsertQuery,\x20detailValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20insertedItems.push(detailResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Inserted\x20${insertedItems.length}\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onAfterCompositeInsert\x20---\x0a\x20\x20\x20\x20\x20\x20if\x20(eventContext\x20&&\x20eventContext.componentEngine)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20componentEngine:\x20ce,\x20ContextBuilder:\x20CB\x20}\x20=\x20eventContext;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20afterCtx\x20=\x20CB.buildCompositeInsertAfterContext(headerData,\x20insertedHeader,\x20insertedItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x423efd[_0x493d6b(0x16a)]+_0x493d6b(0x154)+_0x31f727+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x1cb678+_0x493d6b(0x1ae);}if(_0x8cb371[_0x493d6b(0x11d)]){const _0x19802d=_0x423efd['masterDetail']?.[_0x493d6b(0x1ea)]?.[_0x493d6b(0x24f)]||_0x31f727[_0x493d6b(0x273)]('.')[_0x493d6b(0x28e)]()+'_id',_0x51dff9=_0x423efd[_0x493d6b(0xd2)]?.['headerCalculations']||null,_0xf75f84=_0x423efd['masterDetail']?.['detailConfig']?.['autoCalculateFields']||{},_0x8dcdca=[],_0x381229=[];for(const [_0x82b61d,_0x3d78c5]of Object['entries'](_0xf75f84)){if(_0x3d78c5[_0x493d6b(0x25e)]===_0x4fb1a9[_0x493d6b(0xc1)])_0x8dcdca['push'](_0x82b61d);else{const _0x3c4252=(_0x3d78c5[_0x493d6b(0x150)]||'')['split']('*')['map'](_0x499ecb=>_0x499ecb[_0x493d6b(0xea)]());_0x381229['push']({'fieldName':_0x82b61d,'qtyField':_0x3c4252[0x0],'priceField':_0x3c4252[0x1]});}}const _0x58267d=_0x381229[_0x493d6b(0x2b4)](_0x1ae924=>{const _0x4b6428=_0x493d6b;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x1ae924[_0x4b6428(0xe3)]+'\x20=\x20'+_0x1ae924[_0x4b6428(0x24e)]+'\x20*\x20'+_0x1ae924[_0x4b6428(0xf9)]+_0x4b6428(0x152)+_0x1ae924['fieldName']+_0x4b6428(0x1e3)+_0x1ae924['qtyField']+_0x4b6428(0x12e)+_0x1ae924['priceField']+')\x20||\x200);';})[_0x493d6b(0x182)]('\x0a'),_0x475f02=_0x423efd[_0x493d6b(0xd2)]?.['detailConfig']?.['autoCalculateFields']?.[_0x493d6b(0x298)]?.['formula']||'',_0x293fae=_0x475f02['split']('*')[_0x493d6b(0x2b4)](_0x1c297c=>_0x1c297c['trim']()),_0x4b84c2=_0x423efd['masterDetail']?.['headerCalculations']?.[_0x493d6b(0xd7)]?.['source']?.['replace'](_0x4fb1a9[_0x493d6b(0x18f)],'')||'',_0x28287c=_0x293fae[0x0]||_0x4b84c2,_0x1b7f79=_0x293fae[0x1]||'unit_price';_0x338ad0+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Composite\x20update\x20-\x20Update\x20header\x20with\x20granular\x20detail\x20operations\x20(insert/update/delete)\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20containing\x20header\x20and\x20detail_lines\x20with\x20insert/update/delete\x20arrays\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Updated\x20record\x20with\x20items\x0a\x20\x20\x20*/\x0a\x20\x20async\x20updateComposite(data,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20primary\x20key\x20value\x0a\x20\x20\x20\x20\x20\x20const\x20primaryKeyValue\x20=\x20data[this.primaryKey];\x0a\x20\x20\x20\x20\x20\x20if\x20(!primaryKeyValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Primary\x20key\x20${this.primaryKey}\x20is\x20required\x20for\x20update`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20record\x20exists\x20(also\x20serves\x20as\x20prefetch\x20oldData\x20for\x20hooks)\x0a\x20\x20\x20\x20\x20\x20const\x20checkQuery\x20=\x20`SELECT\x20*\x20FROM\x20${this.writeSource}\x20WHERE\x20${this.primaryKey}\x20=\x20$1`;\x0a\x20\x20\x20\x20\x20\x20const\x20checkResult\x20=\x20await\x20client.query(checkQuery,\x20[primaryKeyValue]);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(checkResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20oldData\x20=\x20checkResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20(exclude\x20detail\x20items\x20and\x20primary\x20key)\x0a\x20\x20\x20\x20\x20\x20const\x20headerData\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20const\x20detailKey\x20=\x20\x27'+_0x31f727[_0x493d6b(0x273)]('.')['pop']()+_0x493d6b(0x130)+_0x423efd['tableName']+_0x493d6b(0x154)+_0x31f727+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x1cb678+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20primaryKey:\x20this.primaryKey,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(eventContext.additionalContext\x20||\x20{})\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeResult\x20=\x20await\x20ce.executeOnBeforeComposite(\x27update\x27,\x20beforeCtx);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!beforeResult.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`onBeforeCompositeUpdate\x20failed:\x20${beforeResult.error}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20header\x20UPDATE\x20query\x0a\x20\x20\x20\x20\x20\x20const\x20headerFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20headerValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20placeholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(headerData))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerFields.push(`${key}\x20=\x20$${placeholderIndex++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20placeholderIndex\x20=\x20this._appendUpdateAuditColumns(headerFields,\x20headerValues,\x20headerData,\x20eventContext,\x20placeholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20headerValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20const\x20headerUpdateQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${headerFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${placeholderIndex}\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20`;\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Executing\x20header\x20UPDATE:\x27,\x20{\x20query:\x20headerUpdateQuery,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerUpdateQuery,\x20headerValues);\x0a\x20\x20\x20\x20\x20\x20const\x20updatedHeader\x20=\x20headerResult.rows[0];\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Header\x20updated\x20successfully:\x20${this.primaryKey}=${primaryKeyValue}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Process\x20detail\x20items\x20with\x20insert/update/delete\x20pattern\x0a\x20\x20\x20\x20\x20\x20const\x20detailTableName\x20=\x20\x27'+_0x31f727+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20foreignKey\x20=\x20\x27'+_0x1cb678+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20detailPrimaryKey\x20=\x20\x27'+_0x19802d+_0x493d6b(0x1a6)+(_0x4fb1a9['hfaMe'](_0x8dcdca[_0x493d6b(0x272)],0x0)?'const\x20generatedFields\x20=\x20'+JSON[_0x493d6b(0x252)](_0x8dcdca)+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20detailOperations\x20=\x20data[detailKey]\x20||\x20{};\x0a\x20\x20\x20\x20\x20\x20const\x20{\x20insert:\x20insertItems\x20=\x20[],\x20update:\x20updateItems\x20=\x20[],\x20delete:\x20deleteItems\x20=\x20[]\x20}\x20=\x20detailOperations;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20updatedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Process\x20DELETE\x20operations\x20first\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20deleteItems)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!item[detailPrimaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Missing\x20${detailPrimaryKey}\x20in\x20delete\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20deleteQuery\x20=\x20`DELETE\x20FROM\x20${detailTableName}\x20WHERE\x20${detailPrimaryKey}\x20=\x20$1\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20deleteResult\x20=\x20await\x20client.query(deleteQuery,\x20[item[detailPrimaryKey]]);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(deleteResult.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deletedItems.push(deleteResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Deleted\x20${deletedItems.length}\x20detail\x20item(s)`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Process\x20UPDATE\x20operations\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20item\x20of\x20updateItems)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!item[detailPrimaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Missing\x20${detailPrimaryKey}\x20in\x20update\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a'+(_0x58267d?_0x4fb1a9[_0x493d6b(0x19e)]('\x0a',_0x58267d)+'\x0a':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Build\x20detail\x20UPDATE\x20query\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20detailValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20detailPlaceholderIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(item))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(key\x20===\x20detailPrimaryKey)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x8dcdca['length']>0x0?_0x493d6b(0x14b):'')+_0x493d6b(0x23e)+(_0x58267d?_0x4fb1a9[_0x493d6b(0x19e)]('\x0a',_0x58267d)+'\x0a':'')+_0x493d6b(0x26b)+(_0x8dcdca[_0x493d6b(0x272)]>0x0?_0x493d6b(0x14b):'')+_0x493d6b(0x136)+(_0x51dff9?_0x493d6b(0x196)+JSON[_0x493d6b(0x252)](_0x51dff9)+_0x493d6b(0x163)+(_0x28287c?'if\x20(calculations.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalAmount\x20=\x20allItems.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x28287c+_0x493d6b(0x198)+_0x1b7f79+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_amount\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(totalAmount);\x0a\x20\x20\x20\x20\x20\x20}':_0x493d6b(0x14e))+'\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(recalculatedFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20audit\x20columns\x20(updated_at,\x20updated_by)\x20ke\x20recalc\x20UPDATE\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalcPlaceholder\x20=\x20this._appendUpdateAuditColumns(recalculatedFields,\x20recalculatedValues,\x20data,\x20eventContext,\x20recalcPlaceholder);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(primaryKeyValue);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20recalcQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20${this.writeSource}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20${recalculatedFields.join(\x27,\x20\x27)}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20${this.primaryKey}\x20=\x20$${recalcPlaceholder}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20\x20\x20\x20\x20`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Recalculating\x20header\x20totals:\x27,\x20{\x20query:\x20recalcQuery,\x20values:\x20recalculatedValues\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20recalcResult\x20=\x20await\x20client.query(recalcQuery,\x20recalculatedValues);\x0a\x20\x20\x20\x20\x20\x20\x20\x20Object.assign(updatedHeader,\x20recalcResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20':'')+_0x493d6b(0xff)+_0x423efd[_0x493d6b(0x16a)]+_0x493d6b(0x154)+_0x31f727+_0x493d6b(0x1f1)+_0x1cb678+_0x493d6b(0x201);}if(_0x8cb371['readComposite']){const _0x33758a=_0x423efd['masterDetail']?.[_0x493d6b(0x1ea)]?.['detailQuery']||null;let _0x284a1a;_0x33758a?_0x284a1a=_0x493d6b(0x294)+_0x33758a+'`;':_0x284a1a=_0x493d6b(0x15e)+_0x31f727+_0x493d6b(0x20a)+_0x1cb678+_0x493d6b(0x12c),_0x338ad0+=_0x493d6b(0xae)+_0x31f727[_0x493d6b(0x273)]('.')['pop']()+_0x493d6b(0x1a6)+_0x284a1a+_0x493d6b(0x278);}return _0x338ad0;}function generateSoftDeleteOverride(_0x2a1565){const _0x125264=a0_0x265454,_0x319de1={'uPYma':function(_0x143995,_0x1a5c0){return _0x143995===_0x1a5c0;},'LugVO':function(_0x405441,_0x1f790c){return _0x405441(_0x1f790c);},'rNUnn':function(_0x1d46b6,_0x58c13c){return _0x1d46b6(_0x58c13c);}},_0x187c30=_0x2a1565['primaryKey']||_0x2a1565[_0x125264(0xe3)]&&_0x2a1565['fieldName'][0x0]||'id',_0x5c9c36=_0x2a1565['softDelete']&&Array[_0x125264(0x247)](_0x2a1565[_0x125264(0x228)][_0x125264(0x23b)])?_0x2a1565[_0x125264(0x228)][_0x125264(0x23b)]:[];if(_0x319de1[_0x125264(0x24b)](hasCascadeChildren,_0x2a1565))return _0x319de1[_0x125264(0x1fa)](generateSoftDeleteCascadeOverride,_0x2a1565);const _0x467b5b=Array[_0x125264(0x247)](_0x2a1565['softDeleteFkChildren'])?_0x2a1565[_0x125264(0xf2)][_0x125264(0x191)](_0x36cdb2=>_0x36cdb2&&_0x36cdb2[_0x125264(0x2b3)]==='restrict'&&typeof _0x36cdb2['childTable']==='string'&&_0x36cdb2[_0x125264(0x158)]&&Array['isArray'](_0x36cdb2[_0x125264(0x241)])&&_0x36cdb2[_0x125264(0x241)][_0x125264(0x272)]===0x1&&typeof _0x36cdb2['childColumns'][0x0]==='string'&&typeof _0x36cdb2[_0x125264(0x25a)]===_0x125264(0x138)&&_0x36cdb2['parentColumn']):[],_0x18e53c=[_0x187c30];for(const _0x208656 of _0x5c9c36){if(_0x208656&&_0x208656['field']&&!_0x18e53c[_0x125264(0x296)](_0x208656[_0x125264(0x266)]))_0x18e53c['push'](_0x208656['field']);}for(const _0x54826c of _0x467b5b){if(!_0x18e53c['includes'](_0x54826c['parentColumn']))_0x18e53c[_0x125264(0x20d)](_0x54826c[_0x125264(0x25a)]);}const _0x31dc17=_0x18e53c[_0x125264(0x182)](',\x20'),_0x57f023=_0x467b5b[_0x125264(0x2b4)]((_0x53329e,_0x2dab98)=>{const _0xddb6eb=_0x125264,_0x4c46d7=_0x53329e['childTable'],_0x5cfa5c=_0x53329e['childColumns'][0x0],_0xe4a07a=_0x53329e[_0xddb6eb(0x25a)],_0xb2598b=_0x319de1[_0xddb6eb(0x203)](_0x53329e['childSoftDelete'],!![]),_0x3d3127=_0xb2598b?_0xddb6eb(0x146)+IS_DELETED_COLUMN+'\x20=\x20FALSE':'';return _0xddb6eb(0x173)+_0x2dab98+_0xddb6eb(0x187)+_0x4c46d7+'\x27.'+_0x5cfa5c+'\x20→\x20master.'+_0xe4a07a+'\x20(childSoftDelete='+_0xb2598b+')\x20→\x20409\x20bila\x20masih\x20direferensikan\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictVal\x20=\x20lockedRow[\x27'+_0xe4a07a+_0xddb6eb(0x176)+_0x4c46d7+_0xddb6eb(0x20a)+_0x5cfa5c+_0xddb6eb(0x282)+_0x3d3127+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27'+_0x4c46d7+_0xddb6eb(0x161);})[_0x125264(0x182)](''),_0x425fae=_0x5c9c36['map'](_0x131994=>{const _0x280b92=_0x125264,_0x4b3a07=_0x131994[_0x280b92(0x266)],_0x4e5ead=_0x131994[_0x280b92(0x272)];return _0x280b92(0x129)+_0x4b3a07+'\x27\x20(base\x20length\x20'+_0x4e5ead+_0x280b92(0x2a9)+_0x4b3a07+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__orig\x20!==\x20null\x20&&\x20__orig\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__str\x20=\x20String(__orig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__str.length\x20>\x20'+_0x4e5ead+')\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete:\x20column\x20'+_0x4b3a07+_0x280b92(0x21a)+_0x4e5ead+';\x20the\x20mutation\x20suffix\x20cannot\x20be\x20appended\x20safely\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+_0x4b3a07+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})[_0x125264(0x182)]('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Soft-delete\x20override\x20(R14).\x20/delete\x20melakukan\x20soft\x20delete,\x20bukan\x20hard\x20delete.\x0a\x20\x20\x20*\x20Atomic\x20(satu\x20transaction):\x20SELECT\x20FOR\x20UPDATE\x20row\x20aktif\x20→\x20mutasi\x20reusable\x20→\x20UPDATE\x0a\x20\x20\x20*\x20is_deleted/deleted_at/deleted_by\x20→\x20COMMIT\x20→\x20invalidateCache.\x20updated_*\x20tidak\x20disentuh.\x0a\x20\x20\x20*\x20Response\x20identik\x20hard\x20delete\x20(backward-compat\x20client).\x0a\x20\x20\x20*\x20@param\x20{Object}\x20criteria\x20-\x20{\x20where:\x20[...]\x20}\x20mengikuti\x20format\x20/delete\x20existing\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(opsional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20{\x20success,\x20message,\x20deleted_count,\x20deleted_items\x20}\x0a\x20\x20\x20*/\x0a\x20\x20async\x20deleteData(criteria,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20{\x20v7:\x20uuidv7\x20}\x20=\x20require(\x27uuid\x27);\x0a\x0a\x20\x20\x20\x20if\x20(!criteria\x20||\x20!criteria.where)\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x20\x20\x20\x20//\x20deleted_by:\x20body\x20eksplisit\x20→\x20eventContext.additionalContext.user_id\x20→\x20\x27system\x27.\x0a\x20\x20\x20\x20const\x20deletedBy\x20=\x20this._resolveAuditUserId(criteria,\x20eventContext,\x20\x27'+DELETED_BY_COLUMN+'\x27);\x0a\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Kunci\x20row\x20aktif\x20yang\x20cocok\x20kriteria.\x20Filter\x20is_deleted\x20=\x20FALSE\x20mencegah\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20double\x20soft-delete\x20dan,\x20bersama\x20FOR\x20UPDATE,\x20menjamin\x20satu\x20pemenang\x20saat\x20race.\x0a\x20\x20\x20\x20\x20\x20const\x20selectParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20whereBuilt\x20=\x20this.buildComplexWhereClause(criteria.where,\x20selectParams,\x201);\x0a\x20\x20\x20\x20\x20\x20const\x20lockQuery\x20=\x20\x27SELECT\x20'+_0x31dc17+'\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20FOR\x20UPDATE\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20lockResult\x20=\x20await\x20client.query(lockQuery,\x20whereBuilt.params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(lockResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tidak\x20ada\x20row\x20aktif:\x20tidak\x20ditemukan,\x20sudah\x20ter-soft-delete,\x20atau\x20kalah\x20race.\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20notFoundError\x20=\x20new\x20Error(\x27Record\x20not\x20found\x20or\x20already\x20deleted\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20notFoundError.statusCode\x20=\x20404;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20notFoundError;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Soft-delete\x20tiap\x20row\x20aktif\x20(multi-row:\x20tiap\x20row\x20memakai\x20suffix\x20uuidv7\x20sendiri).\x0a\x20\x20\x20\x20\x20\x20const\x20deletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20lockedRow\x20of\x20lockResult.rows)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a'+_0x57f023+_0x425fae+_0x125264(0x118)+IS_DELETED_COLUMN+'\x20=\x20TRUE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+'\x20=\x20NOW()\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+'\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(deletedBy);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(lockedRow[\x27'+_0x187c30+_0x125264(0x28b)+_0x187c30+'\x20=\x20$\x27\x20+\x20p\x20+\x20\x27\x20RETURNING\x20\x27\x20+\x20returningFields;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateResult\x20=\x20await\x20client.query(updateQuery,\x20updateParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(updateResult.rows[0])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20deletedItems.push(updateResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Invalidate\x20cache\x20setelah\x20COMMIT\x20(WAJIB:\x20jalur\x20custom\x20tidak\x20auto-invalidate;\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20bila\x20terlewat,\x20/datatables\x20dan\x20/read\x20ter-cache\x20menyajikan\x20record\x20yang\x20sudah\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Successfully\x20deleted\x20\x27\x20+\x20deletedItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_count:\x20deletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_items:\x20deletedItems\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a';}function generateSoftDeleteCascadeOverride(_0x8cfe04){const _0x40bcf1=a0_0x265454,_0x1d0c2c=_0x8cfe04[_0x40bcf1(0x2a5)];return _0x40bcf1(0x261)+JSON[_0x40bcf1(0x252)](_0x1d0c2c)+';\x0a\x0a\x20\x20\x20\x20const\x20writeSource\x20=\x20this.getTableSource(\x27write\x27);\x0a\x20\x20\x20\x20const\x20returningFields\x20=\x20this.getReturningFields();\x0a\x20\x20\x20\x20//\x20deleted_by:\x20body\x20eksplisit\x20→\x20eventContext.additionalContext.user_id\x20→\x20\x27system\x27.\x20Resolusi\x0a\x20\x20\x20\x20//\x20yang\x20SAMA\x20dipakai\x20untuk\x20master\x20DAN\x20seluruh\x20descendant\x20pada\x20cascade\x20(FK-SD-3\x20#6).\x0a\x20\x20\x20\x20const\x20deletedBy\x20=\x20this._resolveAuditUserId(criteria,\x20eventContext,\x20\x27'+DELETED_BY_COLUMN+'\x27);\x0a\x0a\x20\x20\x20\x20//\x20Kolom\x20minimum\x20untuk\x20memproses\x20sebuah\x20node:\x20pk\x20(identitas\x20visited-set/lock\x20+\x20WHERE\x20UPDATE)\x0a\x20\x20\x20\x20//\x20+\x20tiap\x20field\x20reusable\x20(baca\x20original\x20sebelum\x20mutasi)\x20+\x20parentColumn\x20tiap\x20anak\x20(nilai\x20untuk\x0a\x20\x20\x20\x20//\x20restrict-check\x20&\x20expand).\x20Dedup,\x20urutan\x20stabil.\x0a\x20\x20\x20\x20const\x20__sdSelectCols\x20=\x20(node)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20cols\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20seen\x20=\x20new\x20Set();\x0a\x20\x20\x20\x20\x20\x20const\x20add\x20=\x20(c)\x20=>\x20{\x20if\x20(c\x20&&\x20!seen.has(c))\x20{\x20seen.add(c);\x20cols.push(c);\x20}\x20};\x0a\x20\x20\x20\x20\x20\x20add(node.pk);\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20ru\x20of\x20node.reusable)\x20add(ru.field);\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20ch\x20of\x20node.children)\x20add(ch.parentColumn);\x0a\x20\x20\x20\x20\x20\x20return\x20cols.join(\x27,\x20\x27);\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20//\x20Walk\x20cascade\x20rekursif\x20(worklist\x20DFS\x20+\x20visited-set\x20\x27table|pk\x27)\x20pada\x20SATU\x20client\x20→\x20atomic.\x0a\x20\x20\x20\x20//\x20Tiap\x20node:\x20(1)\x20restrict-per-node\x20409,\x20(2)\x20soft-delete\x20(mutasi\x20reusable\x20\x27##\x27+uuidv7\x20+\x0a\x20\x20\x20\x20//\x20is_deleted/deleted_at/deleted_by),\x20(3)\x20expand\x20anak\x20AKTIF\x20cascade.\x20Cycle/diamond\x20aman\x20lewat\x0a\x20\x20\x20\x20//\x20visited-set\x20+\x20filter\x20is_deleted=FALSE\x20saat\x20expand.\x20Hanya\x20baris\x20master\x20(depth-0,\x20isMaster)\x0a\x20\x20\x20\x20//\x20dikumpulkan\x20untuk\x20response\x20backward-compat.\x0a\x20\x20\x20\x20const\x20__cascadeSoftDelete\x20=\x20async\x20(client,\x20masterRows,\x20deletedBy)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20visited\x20=\x20new\x20Set();\x0a\x20\x20\x20\x20\x20\x20const\x20touched\x20=\x20new\x20Set();\x0a\x20\x20\x20\x20\x20\x20const\x20masterDeletedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20work\x20=\x20masterRows.map((r)\x20=>\x20({\x20table:\x20__sdCascadeMeta.master,\x20row:\x20r,\x20isMaster:\x20true\x20}));\x0a\x20\x20\x20\x20\x20\x20while\x20(work.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20current\x20=\x20work.pop();\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20node\x20=\x20__sdCascadeMeta.nodes[current.table];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20pkVal\x20=\x20current.row[node.pk];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20visitedKey\x20=\x20current.table\x20+\x20\x27|\x27\x20+\x20pkVal;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(visited.has(visitedKey))\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20visited.add(visitedKey);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(1)\x20restrict-per-node\x20—\x20generalisasi\x20FK-SD-2\x20Phase\x2003\x20ke\x20SETIAP\x20node.\x20Anak\x20soft-delete\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20→\x20hanya\x20row\x20AKTIF\x20(is_deleted=FALSE)\x20memblokir;\x20anak\x20non-soft-delete\x20→\x20row\x20apa\x20pun.\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ch\x20of\x20node.children)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(ch.onDelete\x20!==\x20\x27restrict\x27)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictVal\x20=\x20current.row[ch.parentColumn];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictVal\x20===\x20null\x20||\x20__restrictVal\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__activeFilter\x20=\x20ch.childSoftDelete\x20?\x20\x27\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE\x27\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__restrictCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20\x27\x20+\x20ch.childTable\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20ch.childColumn\x20+\x20\x27\x20=\x20$1\x27\x20+\x20__activeFilter\x20+\x20\x27\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__restrictVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__restrictCheck.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20restrictError\x20=\x20new\x20Error(\x22Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20\x27\x22\x20+\x20ch.childTable\x20+\x20\x22\x27\x20(onDelete:\x20restrict)\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20restrictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20restrictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(2)\x20soft-delete\x20node:\x20mutasi\x20reusable\x20(overflow\x20guard,\x20defense\x20in\x20depth)\x20+\x20set\x20kolom\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20soft-delete.\x20CHECK\x20konsistensi\x20terpenuhi\x20(reusable\x20termutasi\x20bersama\x20is_deleted=TRUE).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20ru\x20of\x20node.reusable)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__orig\x20=\x20current.row[ru.field];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__orig\x20===\x20null\x20||\x20__orig\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__str\x20=\x20String(__orig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__str.length\x20>\x20ru.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete\x20cascade:\x20column\x20\x27\x20+\x20ru.field\x20+\x20\x27\x20value\x20(\x27\x20+\x20__str.length\x20+\x20\x27\x20chars)\x20on\x20\x27\x20+\x20current.table\x20+\x20\x27\x20exceeds\x20base\x20length\x20\x27\x20+\x20ru.length\x20+\x20\x27;\x20the\x20mutation\x20suffix\x20cannot\x20be\x20appended\x20safely\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(ru.field\x20+\x20\x27\x20=\x20$\x27\x20+\x20p);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20p++;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(__str\x20+\x20\x27##\x27\x20+\x20uuidv7());\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+_0x40bcf1(0x204)+DELETED_AT_COLUMN+_0x40bcf1(0x12a)+DELETED_BY_COLUMN+_0x40bcf1(0x121)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x20ORDER\x20BY\x20\x27\x20+\x20__childNode.pk\x20+\x20\x27\x20FOR\x20UPDATE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__expandVal]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)).rows;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20cr\x20of\x20__childRows)\x20work.push({\x20table:\x20ch.childTable,\x20row:\x20cr,\x20isMaster:\x20false\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20return\x20{\x20touched:\x20[...touched],\x20masterDeletedItems,\x20deletedCount:\x20visited.size\x20};\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Kunci\x20baris\x20master\x20AKTIF\x20yang\x20cocok\x20kriteria\x20(FOR\x20UPDATE\x20+\x20is_deleted=FALSE):\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x200\x20row\x20→\x20404.\x20selectCols\x20cukup\x20untuk\x20node\x20master\x20(pk\x20+\x20reusable\x20+\x20parentColumn\x20anak).\x0a\x20\x20\x20\x20\x20\x20const\x20selectParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20whereBuilt\x20=\x20this.buildComplexWhereClause(criteria.where,\x20selectParams,\x201);\x0a\x20\x20\x20\x20\x20\x20const\x20__masterNode\x20=\x20__sdCascadeMeta.nodes[__sdCascadeMeta.master];\x0a\x20\x20\x20\x20\x20\x20const\x20lockQuery\x20=\x20\x27SELECT\x20\x27\x20+\x20__sdSelectCols(__masterNode)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+_0x40bcf1(0x205);}function generateDeleteMethod(_0x4c3087){const _0x30fec2=a0_0x265454,_0x1e0b2e={'oLbGO':function(_0x5b9c19,_0x409a89){return _0x5b9c19(_0x409a89);}},_0x4628e2=_0x4c3087['action']||{},_0x5b13ba=_0x4c3087['masterDetail']&&_0x4c3087['masterDetail'][_0x30fec2(0x20b)],_0x285853=_0x4c3087[_0x30fec2(0xd2)]?.['cascadeDelete']||![];if(!_0x4628e2['delete'])return'';const _0x485879=_0x4c3087['primaryKey']||'id';if(isSoftDeleteEnabled(_0x4c3087))return _0x1e0b2e['oLbGO'](generateSoftDeleteOverride,_0x4c3087);if(!_0x5b13ba)return'';const _0x553cb3=_0x4c3087[_0x30fec2(0xd2)]['detailTable'],_0x195273=_0x4c3087['masterDetail']['foreignKey'];let _0x15ee95='\x0a';return _0x15ee95+='\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Delete\x20data\x20with\x20cascadeDelete\x20support\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Delete\x20options\x20with\x20where\x20clause\x0a\x20\x20\x20*\x20@param\x20{Object}\x20eventContext\x20-\x20Event\x20lifecycle\x20context\x20(optional)\x0a\x20\x20\x20*\x20@returns\x20{Promise<Object>}\x20Delete\x20result\x0a\x20\x20\x20*/\x0a\x20\x20async\x20deleteData(options,\x20eventContext\x20=\x20null)\x20{\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a\x20\x20\x20\x20const\x20client\x20=\x20await\x20pool.connect();\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27BEGIN\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20where\x20clause\x0a\x20\x20\x20\x20\x20\x20const\x20where\x20=\x20options.where\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(!where\x20||\x20where.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Where\x20clause\x20is\x20required\x20for\x20delete\x20operation\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Build\x20WHERE\x20clause\x0a\x20\x20\x20\x20\x20\x20let\x20whereClause\x20=\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20conditions\x20=\x20where.map(condition\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(condition.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${condition.key}\x20=\x20$${paramIndex++}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20conditions.join(\x27\x20AND\x20\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Handle\x20complex\x20where\x20format\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20conditions\x20=\x20where.conditions.map(condition\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20params.push(condition.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20operator\x20=\x20condition.operator\x20||\x20\x27=\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20`${condition.key}\x20${operator}\x20$${paramIndex++}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20logic\x20=\x20where.logic\x20||\x20\x27AND\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20conditions.join(`\x20${logic}\x20`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(!whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20where\x20clause\x20format\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20'+(_0x285853?_0x30fec2(0x171)+_0x553cb3+'...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Get\x20primary\x20key\x20value\x20untuk\x20delete\x20child\x20records\x0a\x20\x20\x20\x20\x20\x20const\x20headerQuery\x20=\x20`SELECT\x20'+_0x485879+'\x20FROM\x20${this.writeSource}\x20WHERE\x20${whereClause}`;\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(headerResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20headerPrimaryKeyValue\x20=\x20headerResult.rows[0][\x27'+_0x485879+_0x30fec2(0x1bd)+_0x553cb3+'\x20WHERE\x20'+_0x195273+_0x30fec2(0x221)+_0x553cb3+_0x30fec2(0x263):'\x0a\x20\x20\x20\x20\x20\x20//\x20cascadeDelete\x20=\x20false:\x20Only\x20DELETE\x20header\x20record\x0a\x20\x20\x20\x20\x20\x20//\x20Database\x20foreign\x20key\x20constraint\x20akan\x20handle\x20validasi\x20child\x20records\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Deleting\x20header\x20record\x20(cascadeDelete\x20=\x20false)...\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderQuery\x20=\x20`DELETE\x20FROM\x20${this.writeSource}\x20WHERE\x20${whereClause}\x20RETURNING\x20*`;\x0a\x20\x20\x20\x20\x20\x20const\x20deleteHeaderResult\x20=\x20await\x20client.query(deleteHeaderQuery,\x20params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(deleteHeaderResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Record\x20not\x20found\x27);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20deletedData\x20=\x20deleteHeaderResult.rows[0];\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Header\x20record\x20deleted\x20successfully\x27);\x0a\x20\x20\x20\x20\x20\x20')+_0x30fec2(0x2b5)+(_0x285853?',\x0a\x20\x20\x20\x20\x20\x20\x20\x20deletedChildRecords:\x20deleteChildResult.rowCount':'')+'\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27ROLLBACK\x27);\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20deleteData:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x20finally\x20{\x0a\x20\x20\x20\x20\x20\x20client.release();\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a',_0x15ee95;}function generateSoftDeleteRestoreOverride(_0x452f84){const _0x4cddf5=a0_0x265454,_0x2eff3b={'gfdJB':'missing','kksNS':_0x4cddf5(0x295)},_0x145a29=_0x452f84[_0x4cddf5(0x24f)]||_0x452f84[_0x4cddf5(0xe3)]&&_0x452f84['fieldName'][0x0]||'id',_0xa0100a=_0x452f84['softDelete']&&Array[_0x4cddf5(0x247)](_0x452f84[_0x4cddf5(0x228)]['reusable'])?_0x452f84['softDelete']['reusable']:[],_0x3a4fcb=Array[_0x4cddf5(0x247)](_0x452f84['softDeleteFkChecks'])?_0x452f84['softDeleteFkChecks']['filter'](_0x30a617=>_0x30a617&&Array[_0x4cddf5(0x247)](_0x30a617[_0x4cddf5(0x122)])&&_0x30a617['columns']['length']>0x0&&typeof _0x30a617['refTable']===_0x4cddf5(0x138)&&_0x30a617[_0x4cddf5(0x125)]&&Array[_0x4cddf5(0x247)](_0x30a617['refColumns'])&&_0x30a617['refColumns']['length']===_0x30a617[_0x4cddf5(0x122)]['length']):[],_0x909261=[_0x145a29];for(const _0x1b2499 of _0xa0100a){if(_0x1b2499&&_0x1b2499[_0x4cddf5(0x266)]&&!_0x909261['includes'](_0x1b2499[_0x4cddf5(0x266)]))_0x909261[_0x4cddf5(0x20d)](_0x1b2499[_0x4cddf5(0x266)]);}for(const _0x26f2d5 of _0x3a4fcb){for(const _0x1d44f0 of _0x26f2d5['columns']){if(_0x1d44f0&&!_0x909261[_0x4cddf5(0x296)](_0x1d44f0))_0x909261['push'](_0x1d44f0);}}const _0x17ac05=_0x909261[_0x4cddf5(0x182)](',\x20'),_0x944f04=_0xa0100a['map'](_0x1472cd=>{const _0x5a9bcf=_0x4cddf5,_0x3d774b=_0x1472cd[_0x5a9bcf(0x266)],_0x381bf6=_0x1472cd['length'];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20reusable\x20\x27'+_0x3d774b+'\x27\x20(base\x20length\x20'+_0x381bf6+'):\x20strip\x20suffix\x20\x27##\x27\x20+\x20konflik\x20409\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cur\x20=\x20lockedRow[\x27'+_0x3d774b+'\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__cur\x20!==\x20null\x20&&\x20__cur\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__curStr\x20=\x20String(__cur);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__sepIdx\x20=\x20__curStr.lastIndexOf(\x27##\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Legacy\x20tanpa\x20\x27##\x27\x20→\x20original\x20=\x20nilai\x20apa\x20adanya\x20(strip\x20dilewati\x20di\x20bawah).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__original\x20=\x20__sepIdx\x20>=\x200\x20?\x20__curStr.substring(0,\x20__sepIdx)\x20:\x20__curStr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Konflik\x20(409):\x20original\x20kini\x20dipakai\x20record\x20aktif\x20lain\x20selain\x20row\x20ini.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__conflict\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20\x27\x20+\x20writeSource\x20+\x20\x27\x20WHERE\x20'+_0x3d774b+_0x5a9bcf(0xbe)+IS_DELETED_COLUMN+_0x5a9bcf(0x1cd)+_0x145a29+'\x20<>\x20$2\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__original,\x20lockedRow[\x27'+_0x145a29+'\x27]]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__conflict.rows.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20conflictError\x20=\x20new\x20Error(\x22Cannot\x20restore:\x20\x27'+_0x3d774b+'\x27\x20value\x20\x27\x22\x20+\x20__original\x20+\x20\x22\x27\x20is\x20already\x20in\x20use\x20by\x20an\x20active\x20record\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20conflictError.statusCode\x20=\x20409;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20conflictError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Strip\x20hanya\x20bila\x20ada\x20suffix\x20\x27##\x27\x20(legacy\x20dibiarkan\x20apa\x20adanya,\x20cukup\x20reset\x20kolom).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__sepIdx\x20>=\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+_0x3d774b+_0x5a9bcf(0x253);})['join'](''),_0x4a2f83=_0x3a4fcb['map']((_0x28f2b9,_0x29a57d)=>{const _0x1688ec=_0x4cddf5,_0x590ef6=_0x28f2b9[_0x1688ec(0x1b0)]===!![],_0x43c7b8=_0x28f2b9['refTable'],_0x1657d7=_0x28f2b9[_0x1688ec(0x122)][_0x1688ec(0x2b4)](_0x4852a0=>_0x1688ec(0x1a1)+_0x4852a0+'\x27]')['join'](',\x20'),_0x50f229=_0x28f2b9[_0x1688ec(0x29c)][_0x1688ec(0x2b4)]((_0x299ad3,_0x50aed8)=>_0x299ad3+'\x20=\x20$'+(_0x50aed8+0x1))[_0x1688ec(0x182)]('\x20AND\x20'),_0x169563=_0x590ef6?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'',_0x701b9f=_0x590ef6?'missing\x20or\x20soft-deleted':_0x2eff3b['gfdJB'];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x29a57d+'\x20→\x20'+_0x43c7b8+_0x1688ec(0x132)+_0x590ef6+'):\x20parent\x20wajib\x20'+(_0x590ef6?_0x1688ec(0x1d6):_0x2eff3b[_0x1688ec(0x1cc)])+_0x1688ec(0x202)+_0x1657d7+'];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20nullable:\x20bila\x20ada\x20nilai\x20NULL,\x20parent\x20tidak\x20diwajibkan\x20→\x20skip\x20cek.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkVals.every((v)\x20=>\x20v\x20!==\x20null\x20&&\x20v\x20!==\x20undefined))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkCheck\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x201\x20FROM\x20'+_0x43c7b8+_0x1688ec(0x20a)+_0x50f229+_0x169563+'\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20__fkVals\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__fkCheck.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fkError\x20=\x20new\x20Error(\x22Cannot\x20restore:\x20referenced\x20parent\x20record\x20in\x20\x27'+_0x43c7b8+'\x27\x20is\x20'+_0x701b9f+'\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fkError.statusCode\x20=\x20422;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20fkError;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})['join']('');return _0x4cddf5(0xcd)+_0x17ac05+'\x20FROM\x20\x27\x20+\x20writeSource\x20+\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27\x20WHERE\x20(\x27\x20+\x20whereBuilt.sql\x20+\x20\x27)\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20TRUE\x20FOR\x20UPDATE\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20lockResult\x20=\x20await\x20client.query(lockQuery,\x20whereBuilt.params);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(lockResult.rows.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Tidak\x20ada\x20row\x20terhapus:\x20tidak\x20ditemukan,\x20atau\x20record\x20aktif\x20(bukan\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20notFoundError\x20=\x20new\x20Error(\x27Record\x20not\x20found\x20or\x20not\x20deleted\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20notFoundError.statusCode\x20=\x20404;\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20notFoundError;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Restore\x20tiap\x20row\x20terhapus\x20(strip\x20suffix\x20→\x20konflik\x20→\x20FK\x20→\x20reset).\x0a\x20\x20\x20\x20\x20\x20const\x20restoredItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20lockedRow\x20of\x20lockResult.rows)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20setClauses\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20updateParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20p\x20=\x201;\x0a'+_0x944f04+_0x4a2f83+_0x4cddf5(0x213)+IS_DELETED_COLUMN+_0x4cddf5(0x1c4)+DELETED_AT_COLUMN+'\x20=\x20NULL\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+_0x4cddf5(0x128)+_0x145a29+_0x4cddf5(0x28b)+_0x145a29+_0x4cddf5(0x271);}function generateRestoreMethod(_0x2887c9){const _0x28f9b5=a0_0x265454,_0x34fc00={'KxHxv':function(_0x377fa7,_0x1aee4c){return _0x377fa7(_0x1aee4c);}},_0x1804d1=_0x2887c9[_0x28f9b5(0x174)]||{};if(!_0x1804d1['restore']||!_0x34fc00[_0x28f9b5(0x1fe)](isSoftDeleteEnabled,_0x2887c9))return'';return _0x34fc00[_0x28f9b5(0x1fe)](generateSoftDeleteRestoreOverride,_0x2887c9);}function hasSoftDeleteFkParents(_0x134e87){const _0x1aa03b=a0_0x265454,_0x85c363={'jXTwg':function(_0x176cf4,_0x41e105){return _0x176cf4>_0x41e105;}};return Array['isArray'](_0x134e87[_0x1aa03b(0x270)])&&_0x85c363['jXTwg'](_0x134e87[_0x1aa03b(0x270)]['length'],0x0);}function a0_0x21a9(_0x10f370,_0x5c954f){_0x10f370=_0x10f370-0xac;const _0x5526b1=a0_0x5526();let _0x21a981=_0x5526b1[_0x10f370];if(a0_0x21a9['ZLjNgY']===undefined){var _0x49cf03=function(_0x26df4a){const _0xc10f98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xc2d349='',_0x4e9f44='';for(let _0x19ae86=0x0,_0x4136c0,_0x3a32d5,_0x10b726=0x0;_0x3a32d5=_0x26df4a['charAt'](_0x10b726++);~_0x3a32d5&&(_0x4136c0=_0x19ae86%0x4?_0x4136c0*0x40+_0x3a32d5:_0x3a32d5,_0x19ae86++%0x4)?_0xc2d349+=String['fromCharCode'](0xff&_0x4136c0>>(-0x2*_0x19ae86&0x6)):0x0){_0x3a32d5=_0xc10f98['indexOf'](_0x3a32d5);}for(let _0x20c6cd=0x0,_0x293df2=_0xc2d349['length'];_0x20c6cd<_0x293df2;_0x20c6cd++){_0x4e9f44+='%'+('00'+_0xc2d349['charCodeAt'](_0x20c6cd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4e9f44);};a0_0x21a9['PcFsRT']=_0x49cf03,a0_0x21a9['Nzmeaa']={},a0_0x21a9['ZLjNgY']=!![];}const _0x2decb2=_0x5526b1[0x0],_0x600935=_0x10f370+_0x2decb2,_0x55a1c3=a0_0x21a9['Nzmeaa'][_0x600935];return!_0x55a1c3?(_0x21a981=a0_0x21a9['PcFsRT'](_0x21a981),a0_0x21a9['Nzmeaa'][_0x600935]=_0x21a981):_0x21a981=_0x55a1c3,_0x21a981;}function generateSoftDeleteFkParentsCheck(_0x4b75c7){const _0x2ae80d=a0_0x265454,_0x168f1a={'YdPxR':function(_0x34cb54,_0x4ba18c){return _0x34cb54(_0x4ba18c);}};if(!_0x168f1a['YdPxR'](hasSoftDeleteFkParents,_0x4b75c7))return'';const _0x4e611e=_0x4b75c7['softDeleteFkParents'][_0x2ae80d(0x2b4)]((_0x57d14f,_0x44c36f)=>{const _0x49f73a=_0x2ae80d,_0x2b174d=_0x57d14f[_0x49f73a(0x122)][0x0],_0x313998=_0x57d14f[_0x49f73a(0x125)],_0x505f00=_0x57d14f['refColumns'][0x0];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x44c36f+'\x20\x27'+_0x2b174d+'\x27\x20→\x20'+_0x313998+'.'+_0x505f00+':\x20parent\x20wajib\x20aktif\x20(is_deleted=FALSE)\x20→\x20else\x20422.\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__fkVal\x20=\x20body[\x27'+_0x2b174d+_0x49f73a(0xde)+_0x313998+_0x49f73a(0x20a)+_0x505f00+_0x49f73a(0xbe)+IS_DELETED_COLUMN+_0x49f73a(0x210)+_0x313998+'\x27\x20is\x20missing\x20or\x20soft-deleted\x22);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20__fkErr.statusCode\x20=\x20422;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20__fkErr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}';})['join']('');return'\x0a\x20\x20/**\x0a\x20\x20\x20*\x20FK-SD-1\x20forward\x20block.\x20Tolak\x20create/update\x20anak\x20yang\x20menunjuk\x20parent\x20soft-delete\x20yang\x0a\x20\x20\x20*\x20terhapus\x20(is_deleted=TRUE)\x20atau\x20tidak\x20ada\x20(422).\x20Hanya\x20FK\x20ber-parent\x20soft-delete-enabled\x0a\x20\x20\x20*\x20(registry\x20softDeleteFkParents)\x20yang\x20dicek;\x20FK\x20null/absent\x20→\x20skip.\x20Dipanggil\x20route\x20/create\x0a\x20\x20\x20*\x20dan\x20/update\x20sebelum\x20addData/updateData.\x20Pre-check\x20pool\x20terpisah\x20(non-transaksional):\x20lihat\x0a\x20\x20\x20*\x20catatan\x20atomicity\x20Bagian\x20B\x20di\x20report\x20Phase\x2002.\x0a\x20\x20\x20*\x20@param\x20{Object}\x20body\x20-\x20request\x20body\x20(req.body)\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20\x27create\x27\x20|\x20\x27update\x27\x20(untuk\x20pesan\x20error\x20422)\x0a\x20\x20\x20*/\x0a\x20\x20async\x20checkSoftDeleteFkParents(body,\x20operation)\x20{\x0a\x20\x20\x20\x20if\x20(!body\x20||\x20typeof\x20body\x20!==\x20\x27object\x27)\x20return;\x0a\x20\x20\x20\x20const\x20pool\x20=\x20db.getPool();\x0a'+_0x4e611e+'\x0a\x20\x20}\x0a';}function createPostgresModelTemplate(_0x4824d3,_0x493bf2,_0x102cf7){const _0x4078f7=a0_0x265454,_0x19f0a9={'mogTJ':function(_0x46d2d4,_0x807646){return _0x46d2d4(_0x807646);},'KYWYx':function(_0x61bd25,_0x3fcccd){return _0x61bd25+_0x3fcccd;},'inhrc':_0x4078f7(0x20a),'IJpsl':function(_0x195f9b,_0x5c78ca){return _0x195f9b(_0x5c78ca);},'PIbhM':function(_0x4f15b4,_0x131cb4){return _0x4f15b4(_0x131cb4);},'BIBkX':',\x0a\x20\x20\x20\x20\x20\x20','DeqqL':function(_0xb0d557,_0x57cf88,_0x3260d1){return _0xb0d557(_0x57cf88,_0x3260d1);},'SmaxU':function(_0x4ea0bf,_0x449752){return _0x4ea0bf(_0x449752);},'HOEOi':function(_0x1e861b,_0x59ca71,_0x151f84){return _0x1e861b(_0x59ca71,_0x151f84);},'AuyQg':'\x20\x20\x20\x20','SEBZQ':'data\x20||\x20[]','xKHeZ':_0x4078f7(0x223),'alCrL':function(_0x7f46b2,_0x1658ce){return _0x7f46b2(_0x1658ce);},'MsHBc':function(_0x4cd169,_0x50aa83,_0xb0aa04){return _0x4cd169(_0x50aa83,_0xb0aa04);},'TYBUS':_0x4078f7(0xf6),'AEhNG':function(_0xe5b20b,_0x5afc47){return _0xe5b20b+_0x5afc47;},'hTnAU':_0x4078f7(0x12b),'RqxES':function(_0x3b8739,_0x3f3855){return _0x3b8739(_0x3f3855);}};_0x19f0a9[_0x4078f7(0xd8)](assertNoFileReferenceLeftover,_0x102cf7);const _0x5c4261=FileUtils[_0x4078f7(0x1de)](_0x493bf2),_0x254a6a=new Date()[_0x4078f7(0x23f)]()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x2ac631=_0x19f0a9[_0x4078f7(0x287)](buildValidFieldsString,_0x102cf7),_0x3c15c8=_0x102cf7[_0x4078f7(0x17d)]||{},_0x3f0e61=(_0x102cf7['fieldName']||[])[_0x4078f7(0x2b4)](_0x548a5c=>'\x27'+_0x548a5c+'\x27')['join'](',\x0a\x20\x20\x20\x20\x20\x20'),_0x5ac5e3=(_0x3c15c8['schemaFields']||_0x102cf7[_0x4078f7(0xe3)]||[])['map'](_0x3e7ae2=>'\x27'+_0x3e7ae2+'\x27')[_0x4078f7(0x182)](_0x19f0a9[_0x4078f7(0xb2)]),_0x2d0736=(_0x3c15c8[_0x4078f7(0x20c)]||_0x102cf7[_0x4078f7(0xe3)]||[])['map'](_0x4c5532=>'\x27'+_0x4c5532+'\x27')[_0x4078f7(0x182)](_0x19f0a9[_0x4078f7(0xb2)]),_0x3e6eef=(_0x3c15c8[_0x4078f7(0x1e6)]||_0x3c15c8['schemaFields']||_0x102cf7['fieldName']||[])['map'](_0x4d1678=>'\x27'+_0x4d1678+'\x27')['join'](_0x19f0a9['BIBkX']),_0x4fc3a4=buildSearchColumnsCode(_0x102cf7),_0x28c41a=buildFiltersCode(_0x102cf7),_0xa826d3=_0x19f0a9[_0x4078f7(0x172)](buildLookupOverrideCode,_0x493bf2,_0x102cf7),_0x3808ab=_0x19f0a9[_0x4078f7(0x1e7)](buildAdvancedQuerySection,_0x102cf7),_0x2d3805=buildFieldMappingCode(_0x102cf7),_0x16f45b=_0x19f0a9['HOEOi'](buildAuditColumnsSection,_0x102cf7,_0x19f0a9[_0x4078f7(0x24c)]),_0x55ecfb=buildFormatResponseDataBody(_0x102cf7),_0x10aa38=isSoftDeleteEnabled(_0x102cf7)?'(data\x20||\x20[]).map(__row\x20=>\x20{\x20const\x20__r\x20=\x20{\x20...__row\x20};\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20delete\x20__r[__sdCol];\x20return\x20__r;\x20})':_0x19f0a9['SEBZQ'],_0x3fa832=_0x102cf7['defaultScope']&&_0x102cf7['defaultScope'][_0x4078f7(0x1c3)]?buildDefaultScopeSQL(_0x102cf7['defaultScope']['read'],''):'',_0x4b2925=((()=>{const _0x381bd9=_0x4078f7,_0x50e674=_0x19f0a9[_0x381bd9(0x25f)](softDeleteVisibilityFilter,_0x102cf7);return _0x50e674!==null?_0x19f0a9[_0x381bd9(0x254)](_0x19f0a9[_0x381bd9(0x1ac)]+IS_DELETED_COLUMN+'\x20=\x20',_0x50e674):'';})()),_0x24f868=_0x102cf7['viewName']||_0x102cf7[_0x4078f7(0x16a)],_0x34962a=_0x102cf7[_0x4078f7(0x16a)];return'const\x20BaseModel\x20=\x20require(\x27@restforgejs/platform/src/models/base-model\x27);\x0aconst\x20db\x20=\x20require(\x27@restforgejs/platform/src/utils/db\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0a//\x20AdvancedFilterHelper\x20dihapus\x20—\x20semua\x20filtering\x20ditangani\x20oleh\x20buildObjectFilterClause\x20dan\x20buildComplexWhereClause\x0a\x0a/**\x0a\x20*\x20'+_0x5c4261+_0x4078f7(0xd3)+_0x254a6a+_0x4078f7(0xfd)+_0x493bf2+_0x4078f7(0x284)+_0x102cf7['tableName']+(_0x102cf7['viewName']?_0x4078f7(0x1df)+_0x102cf7[_0x4078f7(0x209)]:'')+_0x4078f7(0x29f)+(_0x102cf7['fieldName']?_0x102cf7['fieldName']['length']:0x0)+_0x4078f7(0x211)+_0x5c4261+_0x4078f7(0x1b4)+_0x493bf2+'\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x2ac631+'\x0a\x20\x20\x20\x20];\x0a\x20\x20\x20\x20const\x20schemaFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x5ac5e3+'\x0a\x20\x20\x20\x20];\x0a\x20\x20\x20\x20const\x20readableFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x2d0736+_0x4078f7(0x16d)+_0x3e6eef+_0x4078f7(0xeb)+(_0x102cf7[_0x4078f7(0x10a)]?JSON[_0x4078f7(0x252)](_0x102cf7['datatablesWhere']):_0x19f0a9[_0x4078f7(0x288)])+_0x4078f7(0x25b)+_0x102cf7['tableName']+'\x27,\x20validFields,\x20datatablesWhere,\x20{\x20readableFields,\x20schemaFields,\x20datatablesFields\x20});\x0a\x0a\x20\x20\x20\x20//\x20Setup\x20primary\x20key\x20dari\x20payload\x20atau\x20fallback\x20ke\x20fieldName\x20pertama\x0a\x20\x20\x20\x20this.primaryKey\x20=\x20\x27'+(_0x102cf7['primaryKey']||_0x102cf7['fieldName']&&_0x102cf7[_0x4078f7(0xe3)][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Setup\x20viewName\x20untuk\x20operasi\x20read\x20jika\x20berbeda\x20dari\x20tableName\x0a\x20\x20\x20\x20this.viewName\x20=\x20\x27'+_0x24f868+'\x27;\x0a\x20\x20\x20\x20this.readSource\x20=\x20\x27'+_0x24f868+'\x27;\x20//\x20Source\x20untuk\x20operasi\x20read\x20(get,\x20list,\x20lookup,\x20datatables)\x0a\x20\x20\x20\x20this.writeSource\x20=\x20\x27'+_0x34962a+'\x27;\x20//\x20Source\x20untuk\x20operasi\x20write\x20(add,\x20update,\x20delete)\x0a'+_0x16f45b+'\x0a\x20\x20\x20\x20//\x20Flag\x20untuk\x20self-documenting\x20API\x20(endpoint\x20/info)\x0a\x20\x20\x20\x20this.hasViewQuery\x20=\x20'+!!_0x102cf7['viewQuery']+_0x4078f7(0x25d)+!!_0x102cf7[_0x4078f7(0x29b)]+_0x4078f7(0x22c)+(_0x102cf7['dateTimeFields']&&Object[_0x4078f7(0x1d3)](_0x102cf7[_0x4078f7(0x230)])['length']>0x0?'\x0a\x20\x20\x20\x20//\x20DateTime\x20fields\x20configuration\x0a\x20\x20\x20\x20this.dateTimeFields\x20=\x20'+JSON['stringify'](_0x102cf7['dateTimeFields'],null,0x6)+_0x4078f7(0x116):'')+(_0x102cf7['uploadConfig']&&_0x102cf7[_0x4078f7(0x258)]['fields']?'\x0a\x20\x20\x20\x20//\x20File\x20upload\x20fields\x20(JSONB\x20columns)\x0a\x20\x20\x20\x20this.fileFields\x20=\x20'+JSON['stringify'](Object['keys'](_0x102cf7[_0x4078f7(0x258)]['fields']))+';\x0a\x20\x20\x20\x20':'')+'\x0a'+_0x19f0a9['alCrL'](_generateValidationConfig,_0x102cf7[_0x4078f7(0x19f)])+'\x0a\x20\x20\x20\x20//\x20Model\x20metadata\x0a\x20\x20\x20\x20this.modelMetadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20endpointName:\x20\x27'+_0x493bf2+_0x4078f7(0xdf)+_0x4824d3+'\x27,\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x102cf7[_0x4078f7(0x16a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20viewName:\x20\x27'+_0x24f868+_0x4078f7(0xe6)+(_0x102cf7['fieldName']?_0x102cf7['fieldName'][_0x4078f7(0x272)]:0x0)+',\x0a\x20\x20\x20\x20\x20\x20databaseType:\x20\x27postgres\x27,\x0a\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0x254a6a+'\x27,\x0a\x20\x20\x20\x20\x20\x20features:\x20'+JSON[_0x4078f7(0x252)](_0x102cf7['_metadata']?.['features']||[])+_0x4078f7(0x1b7)+_0x3808ab+_0x4078f7(0x134)+_0x493bf2+'\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Query\x20options\x0a\x20\x20\x20*\x20@returns\x20{string}\x20SQL\x20query\x20dasar\x20untuk\x20'+_0x493bf2+_0x4078f7(0x151)+buildQueryLoadingCode(_0x102cf7['datatablesQuery'],_0x4078f7(0x1f4))+'\x0a\x0a\x20\x20\x20\x20//\x20Replace\x20any\x20remaining\x20placeholders\x20-\x20gunakan\x20readSource\x20untuk\x20operasi\x20read\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/${tableName}/g,\x20this.readSource);\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/${this.table}/g,\x20this.readSource);\x0a\x0a\x20\x20\x20\x20return\x20baseQuery;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getReadQuery\x20untuk\x20endpoint\x20/read\x0a\x20\x20\x20*\x20Prioritas:\x20viewName\x20->\x20viewQuery\x20->\x20tableName\x20(SELECT\x20*\x20FROM\x20readSource)\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Query\x20options\x0a\x20\x20\x20*\x20@returns\x20{string}\x20SQL\x20query\x20dasar\x20untuk\x20/read\x0a\x20\x20\x20*/\x0a\x20\x20getReadQuery(options\x20=\x20{})\x20{\x0a\x20\x20\x20\x20//\x20Priority\x201:\x20viewName\x20(real\x20database\x20view)\x0a\x20\x20\x20\x20if\x20(this.viewName\x20&&\x20this.viewName\x20!==\x20this.table)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.viewName;\x0a\x20\x20\x20\x20}\x0a'+(_0x102cf7[_0x4078f7(0xf6)]?_0x4078f7(0x1d5)+_0x19f0a9['MsHBc'](buildQueryLoadingCode,_0x102cf7['viewQuery'],_0x19f0a9['TYBUS'])+'\x0a\x0a\x20\x20\x20\x20//\x20Replace\x20any\x20remaining\x20placeholders\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/\x5c$\x5c{tableName\x5c}/g,\x20this.readSource);\x0a\x20\x20\x20\x20baseQuery\x20=\x20baseQuery.replace(/\x5c$\x5c{this\x5c.table\x5c}/g,\x20this.readSource);\x0a\x0a\x20\x20\x20\x20return\x20baseQuery;':_0x4078f7(0x124))+'\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20getDatatables\x20untuk\x20mendukung\x20filter\x20object\x20format\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Parameter\x20dari\x20request\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Hasil\x20query\x20dengan\x20format\x20DataTables\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getDatatables(options)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20cache\x20first\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedDatatables(options);\x0a\x20\x20\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20cachedResult;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20searchValue\x20=\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20searchBy\x20=\x20\x27all\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20perPage\x20=\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20start\x20=\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20filters\x20=\x20{},\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20null\x0a\x20\x20\x20\x20\x20\x20}\x20=\x20options;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Resolve\x20sort\x20columns\x20dengan\x20prioritas:\x20sort_columns\x20>\x20order[0][column]\x20>\x20default\x0a\x20\x20\x20\x20\x20\x20let\x20resolvedSortColumns\x20=\x20sort_columns;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20cek\x20format\x20DataTables\x20bawaan\x20(order[0][column]\x20dan\x20order[0][dir])\x0a\x20\x20\x20\x20\x20\x20if\x20((!resolvedSortColumns\x20||\x20resolvedSortColumns.length\x20===\x200)\x20&&\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options[\x27order[0][column]\x27]\x20!==\x20undefined\x20&&\x20options[\x27order[0][dir]\x27]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20columnIndex\x20=\x20parseInt(options[\x27order[0][column]\x27]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20direction\x20=\x20options[\x27order[0][dir]\x27];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(columnIndex\x20>=\x200\x20&&\x20columnIndex\x20<\x20this.validFields.length)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resolvedSortColumns\x20=\x20[{\x20column:\x20this.validFields[columnIndex],\x20direction:\x20direction.toUpperCase()\x20}];\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Mendapatkan\x20query\x20dasar\x0a\x20\x20\x20\x20\x20\x20const\x20baseQuery\x20=\x20this.getListQuery(options);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Membuat\x20where\x20clause\x20berdasarkan\x20search\x20dan\x20filter\x0a\x20\x20\x20\x20\x20\x20let\x20whereClause\x20=\x20this.buildWhereClause(searchValue,\x20searchBy,\x20this.datatablesFields);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Tambahkan\x20filter\x20object\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20const\x20filterClause\x20=\x20this.buildObjectFilterClause(filters);\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(filterClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20+=\x20\x27\x20AND\x20\x27\x20+\x20filterClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20\x27WHERE\x20\x27\x20+\x20filterClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x204.\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20\x20\x20let\x20whereParams\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20if\x20(where\x20&&\x20(Array.isArray(where)\x20||\x20(where.conditions\x20&&\x20Array.isArray(where.conditions))))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20whereResult\x20=\x20this.buildComplexWhereClause(where,\x20params,\x20paramIndex,\x20\x27\x27,\x20this.datatablesFields);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereResult.sql)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20+=\x20\x27\x20AND\x20(\x27\x20+\x20whereResult.sql\x20+\x20\x27)\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereClause\x20=\x20\x27WHERE\x20\x27\x20+\x20whereResult.sql;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20whereParams\x20=\x20whereResult.params;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fail-closed\x20where-field:\x20teruskan\x20error\x20terstruktur\x20apa\x20adanya\x20(jangan\x20bungkus\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20jadi\x20pesan\x20generik)\x20agar\x20handler\x20bisa\x20memformat\x20respons\x20+\x20dev-gate\x20validFields.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(e.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20throw\x20e;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20error\x20=\x20new\x20Error(\x27Invalid\x20where\x20conditions:\x20\x27\x20+\x20e.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error.statusCode\x20=\x20400;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20query\x20needs\x20subquery\x20wrapping\x20(CTE\x20or\x20JOIN)\x0a\x20\x20\x20\x20\x20\x20const\x20isCteQuery\x20=\x20baseQuery.toLowerCase().trim().startsWith(\x27with\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20hasJoin\x20=\x20/\x5cb(inner|left|right|cross|full)\x5cs+join\x5cb/i.test(baseQuery)\x20||\x20/\x5cbjoin\x5cb/i.test(baseQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20needsSubquery\x20=\x20isCteQuery\x20||\x20hasJoin;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x204.\x20Menghitung\x20total\x20data\x20keseluruhan\x20-\x20gunakan\x20readSource\x20untuk\x20read\x20operations\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalQuery\x20=\x20needsSubquery\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query'+_0x4b2925+_0x4078f7(0x13e)+(_0x4b2925?_0x19f0a9[_0x4078f7(0x2a7)](_0x19f0a9[_0x4078f7(0x110)],_0x4b2925)+'\x27':'')+';\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20totalRecords\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x205.\x20Menghitung\x20jumlah\x20data\x20terfilter\x20-\x20gunakan\x20readSource\x20untuk\x20read\x20operations\x0a\x20\x20\x20\x20\x20\x20let\x20filteredRecords\x20=\x20totalRecords;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Always\x20wrap\x20CTE/JOIN\x20query\x20for\x20counting\x20with\x20filters\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredQuery\x20=\x20needsSubquery\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x20:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource\x20+\x20\x27\x20\x27\x20+\x20whereClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Count\x20Filtered\x20Query:\x27,\x20countFilteredQuery);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Count\x20Filtered\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredResult\x20=\x20await\x20db.executeQuery(countFilteredQuery,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20\x20\x20filteredRecords\x20=\x20countFilteredResult\x20&&\x20countFilteredResult[0]\x20?\x20parseInt(countFilteredResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x206.\x20Membuat\x20order\x20clause\x20menggunakan\x20buildSortColumnsClause\x0a\x20\x20\x20\x20\x20\x20const\x20orderClause\x20=\x20this.buildSortColumnsClause(resolvedSortColumns,\x20this.datatablesFields);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x207.\x20Menambahkan\x20pagination\x0a\x20\x20\x20\x20\x20\x20const\x20limitClause\x20=\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${start}`;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x208.\x20Menjalankan\x20query\x20final\x20-\x20wrap\x20CTE/JOIN\x20query\x20to\x20avoid\x20column\x20ambiguity\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20needsSubquery\x20?\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20(whereClause\x20||\x20\x27\x27)\x20+\x20orderClause\x20+\x20limitClause\x20:\x0a\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20+\x20\x22\x20\x22\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Final\x20Query:\x27,\x20query);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20whereParams);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20draw:\x20parseInt(options.draw\x20||\x20\x271\x27,\x2010),\x0a\x20\x20\x20\x20\x20\x20\x20\x20recordsTotal:\x20totalRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20recordsFiltered:\x20filteredRecords,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20data\x20||\x20[]\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache\x20the\x20result\x20(if\x20enabled)\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedDatatables(options,\x20result);\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(\x27Error\x20in\x20getDatatables:\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Get\x20data\x20list\x20dengan\x20manual\x20pagination\x20untuk\x20endpoint\x20/list\x0a\x20\x20\x20*\x20@param\x20{Object}\x20options\x20-\x20Parameter\x20dari\x20request\x20list\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Hasil\x20query\x20dengan\x20format\x20list\x20pagination\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getList(options)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20page\x20=\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20perPage\x20=\x2010,\x0a\x20\x20\x20\x20\x20\x20\x20\x20offset\x20=\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20searchValue\x20=\x20\x27\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20searchBy\x20=\x20\x27code\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20select\x20=\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20limit\x20=\x201000\x0a\x20\x20\x20\x20\x20\x20}\x20=\x20options;\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20paginate\x20=\x20page\x20!==\x20null;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Cache:\x20Check\x20if\x20data\x20exists\x20in\x20cache\x0a\x20\x20\x20\x20\x20\x20const\x20scInfo\x20=\x20sort_columns\x20&&\x20sort_columns.length\x20>\x200\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20sort_columns.map(s\x20=>\x20`${s.column}:${s.direction}`).join(\x27,\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27default\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20cacheInfo\x20=\x20`page:${page},\x20perPage:${perPage},\x20sort:${scInfo},\x20search:${searchValue\x20||\x20\x27none\x27}${where\x20?\x20\x27,\x20where:yes\x27\x20:\x20\x27\x27}`;\x0a\x20\x20\x20\x20\x20\x20const\x20cachedResult\x20=\x20await\x20this.getCachedList(options);\x0a\x20\x20\x20\x20\x20\x20if\x20(cachedResult)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`[Cache]\x20HIT\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20cachedResult;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20console.log(`[Cache]\x20MISS\x20for\x20list\x20-\x20${cacheInfo}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201.\x20Mendapatkan\x20query\x20dasar\x0a\x20\x20\x20\x20\x20\x20let\x20baseQuery;\x0a\x20\x20\x20\x20\x20\x20if\x20(select\x20&&\x20Array.isArray(select)\x20&&\x20select.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20selectedValidColumns\x20=\x20select.filter(col\x20=>\x20this.readableFields.includes(col));\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(selectedValidColumns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20select\x20adalah\x20lapisan\x20di\x20atas\x20sumber\x20hasil\x20resolusi\x20(viewName\x20→\x20viewQuery\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20→\x20tableName),\x20bukan\x20jalur\x20terpisah\x20ke\x20tabel\x20mentah.\x20Bila\x20sumber\x20berupa\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20view/query\x20kompleks,\x20kolom\x20dipilih\x20dari\x20subquery\x20sumber\x20tersebut.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20readQuery\x20=\x20this.getReadQuery(options);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20isViewSource\x20=\x20readQuery.trim()\x20!==\x20(\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20=\x20isViewSource\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20\x27\x20+\x20selectedValidColumns.join(\x27,\x20\x27)\x20+\x20\x27\x20FROM\x20(\x27\x20+\x20readQuery\x20+\x20\x27)\x20rf_read\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20\x27\x20+\x20selectedValidColumns.join(\x27,\x20\x27)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20this.readSource;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20=\x20this.getReadQuery(options);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20baseQuery\x20=\x20this.getReadQuery(options);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x201b.\x20Deteksi\x20apakah\x20query\x20mengandung\x20JOIN\x20atau\x20CTE\x20(perlu\x20subquery\x20wrapping)\x0a\x20\x20\x20\x20\x20\x20const\x20isCteQuery\x20=\x20baseQuery.toLowerCase().trim().startsWith(\x27with\x27);\x0a\x20\x20\x20\x20\x20\x20const\x20hasJoin\x20=\x20/\x5cb(inner|left|right|cross|full)\x5cs+join\x5cb/i.test(baseQuery)\x20||\x20/\x5cbjoin\x5cb/i.test(baseQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20needsSubquery\x20=\x20isCteQuery\x20||\x20hasJoin;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x202.\x20Build\x20WHERE\x20clause\x20untuk\x20search\x0a\x20\x20\x20\x20\x20\x20let\x20whereClause\x20=\x20`'+(_0x3fa832?_0x4078f7(0x103)+_0x3fa832:'')+_0x4078f7(0xe5)+(_0x3fa832?'whereClause\x20+=\x20`\x20AND\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;':'whereClause\x20=\x20`WHERE\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;')+_0x4078f7(0x162)+_0x4b2925+'\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource'+(_0x4b2925?_0x19f0a9['hTnAU']+_0x4b2925+'\x27':'')+';\x0a\x20\x20\x20\x20\x20\x20const\x20countTotalResult\x20=\x20await\x20db.executeQuery(countTotalQuery);\x0a\x20\x20\x20\x20\x20\x20const\x20totalRecords\x20=\x20countTotalResult\x20&&\x20countTotalResult[0]\x20?\x20parseInt(countTotalResult[0].total)\x20:\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x205.\x20Menghitung\x20jumlah\x20data\x20terfilter\x20(jika\x20ada\x20where/search)\x0a\x20\x20\x20\x20\x20\x20let\x20filteredRecords\x20=\x20totalRecords;\x0a\x20\x20\x20\x20\x20\x20if\x20(whereClause)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredQuery\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x27SELECT\x20COUNT(*)\x20as\x20total\x20FROM\x20\x27\x20+\x20this.readSource\x20+\x20\x27\x20\x27\x20+\x20whereClause;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20countFilteredResult\x20=\x20await\x20db.executeQuery(countFilteredQuery,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x20\x20\x20\x20\x20\x20\x20\x20filteredRecords\x20=\x20countFilteredResult\x20&&\x20countFilteredResult[0]\x20?\x20parseInt(countFilteredResult[0].total)\x20:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x206.\x20Build\x20ORDER\x20BY\x20clause\x0a\x20\x20\x20\x20\x20\x20const\x20orderClause\x20=\x20this.buildSortColumnsClause(sort_columns,\x20this.readableFields);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x207.\x20Build\x20LIMIT\x20dan\x20OFFSET\x20clause\x20(kondisional\x20berdasarkan\x20mode)\x0a\x20\x20\x20\x20\x20\x20let\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20limitClause\x20=\x20`\x20LIMIT\x20${perPage}\x20OFFSET\x20${offset}`;\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20limitClause\x20=\x20`\x20LIMIT\x20${limit}`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x208.\x20Menjalankan\x20query\x20final\x20untuk\x20data\x20(subquery\x20wrapping\x20untuk\x20JOIN/CTE)\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20needsSubquery\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20\x27SELECT\x20*\x20FROM\x20(\x27\x20+\x20baseQuery\x20+\x20\x27)\x20base_query\x20\x27\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20baseQuery\x20+\x20\x27\x20\x27\x20+\x20whereClause\x20+\x20orderClause\x20+\x20limitClause;\x0a\x20\x20\x20\x20\x20\x20console.log(`List\x20SQL\x20Query:\x20${query}`);\x0a\x20\x20\x20\x20\x20\x20console.log(\x27List\x20Query\x20Parameters:\x27,\x20whereParams);\x0a\x20\x20\x20\x20\x20\x20const\x20data\x20=\x20await\x20db.executeQuery(query,\x20whereParams.length\x20>\x200\x20?\x20whereParams\x20:\x20undefined);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20'+_0x10aa38+_0x4078f7(0x29a)+_0x4fc3a4+'\x0a\x0a'+_0x28c41a+'\x0a\x0a'+_0xa826d3+'\x0a\x0a'+_0x2d3805+_0x4078f7(0xfb)+_0x493bf2+'\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20dari\x20database\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Data\x20yang\x20sudah\x20diformat\x20untuk\x20response\x20'+_0x493bf2+'\x0a\x20\x20\x20*/\x0a\x20\x20formatResponseData(data)\x20{\x0a'+_0x55ecfb+'\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Execute\x20advanced\x20query\x20berdasarkan\x20nama\x0a\x20\x20\x20*\x20@param\x20{string}\x20queryName\x20-\x20Nama\x20query\x20dari\x20advancedQueryTemplates\x0a\x20\x20\x20*\x20@param\x20{Object}\x20params\x20-\x20Parameter\x20untuk\x20query\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Hasil\x20query\x0a\x20\x20\x20*/\x0a\x20\x20async\x20executeAdvancedQuery(queryName,\x20params\x20=\x20{})\x20{\x0a\x20\x20\x20\x20if\x20(!this.advancedQueryTemplates[queryName])\x20{\x0a\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(`Advanced\x20query\x20\x27${queryName}\x27\x20not\x20found.\x20Available\x20queries:\x20${Object.keys(this.advancedQueryTemplates).join(\x27,\x20\x27)}`);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20let\x20query\x20=\x20this.advancedQueryTemplates[queryName];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Replace\x20placeholders\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(/${tableName}/g,\x20this.table);\x0a\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(/${this.table}/g,\x20this.table);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Replace\x20parameter\x20placeholders\x0a\x20\x20\x20\x20\x20\x20for\x20(const\x20[key,\x20value]\x20of\x20Object.entries(params))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20placeholder\x20=\x20new\x20RegExp(`\x5c$\x5c{params\x5c\x5c.${key}\x5c}`,\x20\x27g\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20query\x20=\x20query.replace(placeholder,\x20value);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Executing\x20advanced\x20query\x20\x27${queryName}\x27:\x20${query}`);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20await\x20db.executeQuery(query);\x0a\x20\x20\x20\x20\x20\x20return\x20result;\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Error\x20executing\x20advanced\x20query\x20\x27${queryName}\x27:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Validate\x20data\x20before\x20insert/update\x20operations\x0a\x20\x20\x20*\x20@param\x20{Object}\x20data\x20-\x20Data\x20yang\x20akan\x20divalidasi\x0a\x20\x20\x20*\x20@param\x20{string}\x20operation\x20-\x20Operasi\x20(insert/update)\x0a\x20\x20\x20*\x20@returns\x20{Object}\x20Validation\x20result\x0a\x20\x20\x20*/\x0a\x20\x20async\x20validateData(data,\x20operation\x20=\x20\x27insert\x27)\x20{\x0a\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20isValid:\x20true,\x0a\x20\x20\x20\x20\x20\x20errors:\x20[],\x0a\x20\x20\x20\x20\x20\x20warnings:\x20[],\x0a\x20\x20\x20\x20\x20\x20sanitizedData:\x20{}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20we\x20have\x20fieldValidation\x20config\x0a\x20\x20\x20\x20\x20\x20const\x20hasFieldValidation\x20=\x20this.validationConfig\x20&&\x20Object.keys(this.validationConfig).length\x20>\x200;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(hasFieldValidation)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Loop\x20semua\x20field\x20yang\x20ada\x20di\x20validationConfig\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20fieldName\x20in\x20this.validationConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20value\x20=\x20data[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20config\x20=\x20this.validationConfig[fieldName];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20constraints\x20=\x20config.constraints\x20||\x20{};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-generate\x20value\x20jika\x20autoGenerate\x20dan\x20nilai\x20kosong.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20String\x20dan\x20uuid\x20diperlakukan\x20sama:\x20UUID\x20v7\x20via\x20uuid\x20package\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20(konsisten\x20lintas\x20dialect;\x20cocok\x20dengan\x20konvensi\x20payload\x20category.json\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20yang\x20memakai\x20type:\x20\x22string\x22\x20dengan\x20constraint\x20autoGenerate\x20+\x20primaryKey).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20constraints.autoGenerate\x20&&\x20(!value\x20||\x20value\x20===\x20\x27\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(config.type\x20===\x20\x27uuid\x27\x20||\x20config.type\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20require(\x27uuid\x27).v7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(config.type\x20===\x20\x27timestamp\x27\x20||\x20config.type\x20===\x20\x27datetime\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20new\x20Date().toISOString();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(config.type\x20===\x20\x27date\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20new\x20Date().toISOString().split(\x27T\x27)[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data[fieldName]\x20=\x20value;\x20//\x20Update\x20data\x20asli\x20juga\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validate\x20per-field\x20dengan\x20constraints\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20fieldResult\x20=\x20await\x20this.validateFieldConstraints(fieldName,\x20value,\x20operation);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Accumulate\x20errors\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!fieldResult.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...fieldResult.errors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Accumulate\x20warnings\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldResult.warnings\x20&&\x20fieldResult.warnings.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.warnings.push(...fieldResult.warnings);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Set\x20sanitized\x20value\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(fieldResult.sanitized\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[fieldName]\x20=\x20fieldResult.sanitized;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validate\x20field\x20yang\x20tidak\x20ada\x20di\x20validationConfig\x20(backward\x20compatibility)\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!this.validationConfig[field]\x20&&\x20data[field]\x20!==\x20undefined)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fallback\x20ke\x20generic\x20sanitization\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20this.sanitizeFieldValue(field,\x20data[field]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cross-field\x20validation\x20(contoh:\x20before/after\x20date)\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(result.isValid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20crossFieldResult\x20=\x20await\x20this._validateCrossFieldConstraints(result.sanitizedData,\x20operation);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!crossFieldResult.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(...crossFieldResult.errors);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20Tidak\x20ada\x20fieldValidation\x20-\x20gunakan\x20generic\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20this.validFields)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20value\x20=\x20data[field];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Required\x20field\x20validation\x20untuk\x20insert\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(operation\x20===\x20\x27insert\x27\x20&&\x20(field\x20===\x20\x27id\x27\x20||\x20field\x20===\x20\x27name\x27\x20||\x20field\x20===\x20\x27nama\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20===\x20undefined\x20||\x20value\x20===\x20null\x20||\x20value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(field\x20!==\x20\x27id\x27)\x20{\x20//\x20ID\x20bisa\x20auto-generated\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(`Field\x20\x27${field}\x27\x20is\x20required\x20for\x20${operation}\x20operation`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Sanitize\x20dan\x20validate\x20value\x20jika\x20ada\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20!==\x20undefined\x20&&\x20value\x20!==\x20null)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.sanitizedData[field]\x20=\x20this.sanitizeFieldValue(field,\x20value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Generic\x20email\x20validation\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(data.email\x20&&\x20!/^[^\x5cs@]+@[^\x5cs@]+\x5c.[^\x5cs@]+$/.test(data.email))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.errors.push(\x27Invalid\x20email\x20format\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20result.errors.push(`Validation\x20error:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20result.isValid\x20=\x20false;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20result;\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Sanitize\x20field\x20value\x20berdasarkan\x20tipe\x20field\x20(generic\x20fallback)\x0a\x20\x20\x20*\x20@param\x20{string}\x20fieldName\x20-\x20Nama\x20field\x0a\x20\x20\x20*\x20@param\x20{*}\x20value\x20-\x20Nilai\x20field\x0a\x20\x20\x20*\x20@returns\x20{*}\x20Sanitized\x20value\x0a\x20\x20\x20*/\x0a\x20\x20sanitizeFieldValue(fieldName,\x20value)\x20{\x0a\x20\x20\x20\x20if\x20(typeof\x20value\x20===\x20\x27string\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Trim\x20whitespace\x0a\x20\x20\x20\x20\x20\x20value\x20=\x20value.trim();\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Escape\x20special\x20characters\x20untuk\x20mencegah\x20injection\x0a\x20\x20\x20\x20\x20\x20value\x20=\x20value.replace(/[<>]/g,\x20\x27\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Truncate\x20jika\x20terlalu\x20panjang\x0a\x20\x20\x20\x20\x20\x20if\x20(value.length\x20>\x20255)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20value\x20=\x20value.substring(0,\x20255);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20value;\x0a\x20\x20}\x0a'+_generateValidateFieldConstraints()+'\x0a\x20\x20'+generateCompositeMethods(_0x102cf7)+_0x19f0a9['RqxES'](generateDeleteMethod,_0x102cf7)+_0x19f0a9[_0x4078f7(0x287)](generateRestoreMethod,_0x102cf7)+_0x19f0a9[_0x4078f7(0x199)](generateSoftDeleteFkParentsCheck,_0x102cf7)+'\x0a}\x0a\x0a//\x20Export\x20singleton\x20instance\x0amodule.exports\x20=\x20new\x20'+_0x5c4261+'Model();';}function getEnabledActions(_0x451b70){const _0x4990ad=a0_0x265454,_0xd3b5ae={'MgLTv':function(_0x388657,_0x3e594f){return _0x388657!==_0x3e594f;},'rrCUg':_0x4990ad(0x17e)};if(!_0x451b70['action']||_0xd3b5ae['MgLTv'](typeof _0x451b70['action'],_0xd3b5ae[_0x4990ad(0x216)]))return[];return Object['entries'](_0x451b70['action'])[_0x4990ad(0x191)](([,_0xab1367])=>_0xab1367)['map'](([_0x5e64fd])=>_0x5e64fd);}function buildEndpointFunctions(_0x1c00df,_0xd8d39f,_0x25f355,_0x456ea6,_0x54114e,_0x5f2c5e=null,_0x4a7a2c=![]){const _0xbb9bfd=a0_0x265454,_0x5a22ca={'QuiZa':function(_0x3cbf9d,_0x315ccf){return _0x3cbf9d(_0x315ccf);},'TULqA':function(_0x141233,_0x36a429,_0x4c46f4,_0x25f41b,_0x1d0bbd){return _0x141233(_0x36a429,_0x4c46f4,_0x25f41b,_0x1d0bbd);},'jBcCs':function(_0x525a28,_0x104b44,_0x8da47c,_0x25aff9,_0x25fd45){return _0x525a28(_0x104b44,_0x8da47c,_0x25aff9,_0x25fd45);},'PRKsB':function(_0x2ecd34,_0x33d4c6,_0x5d1c27,_0x1d2724,_0x2b23ef){return _0x2ecd34(_0x33d4c6,_0x5d1c27,_0x1d2724,_0x2b23ef);},'ZXSNp':function(_0x12e726,_0x1f7b43){return _0x12e726===_0x1f7b43;}},_0x48cc65=_0x25f355[_0xbb9bfd(0x174)]||{},_0x1fb240=_0x5a22ca['QuiZa'](getEnabledActions,_0x25f355);let _0x342f54='';if(!_0x5f2c5e){const _0x52c371=FileUtils[_0xbb9bfd(0x215)](_0xd8d39f);_0x5f2c5e=_0x52c371+'Model';}return _0x48cc65['datatables']&&(_0x342f54+=generateDatatablesFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x1ee)]&&(_0x342f54+=generateCreateFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e,_0x4a7a2c)),_0x48cc65[_0xbb9bfd(0x2a1)]&&(_0x342f54+=generateUpdateFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e,_0x4a7a2c)),_0x48cc65[_0xbb9bfd(0x127)]&&(_0x342f54+=generateAdjustFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0xbc)]&&(_0x342f54+=generateAggregateFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x1db)]&&(_0x342f54+=generateDeleteFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e,_0x4a7a2c)),_0x48cc65[_0xbb9bfd(0x27b)]&&_0x5a22ca['QuiZa'](isSoftDeleteEnabled,_0x25f355)&&(_0x342f54+=generateRestoreFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65['first']&&(_0x342f54+=generateFirstFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x456ea6,_0x54114e,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x26c)]&&(_0x342f54+=generateLookupFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x456ea6,_0x54114e,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x1c3)]&&(_0x342f54+=_0x5a22ca['TULqA'](generateReadFunction,_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x274)]&&(_0x342f54+=generateCreateCompositeFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65['updateComposite']&&(_0x342f54+=_0x5a22ca['jBcCs'](generateUpdateCompositeFunction,_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x220)]&&(_0x342f54+=_0x5a22ca['PRKsB'](generateReadCompositeFunction,_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x48cc65[_0xbb9bfd(0x177)]&&(_0x342f54+=generateWorkflowFunction(_0x1c00df,_0xd8d39f,_0x25f355,_0x5f2c5e)),_0x5a22ca[_0xbb9bfd(0x1dc)](_0x1fb240[_0xbb9bfd(0x272)],0x0)&&(_0x342f54+=_0xbb9bfd(0x225)),_0x342f54;}function generateDatatablesFunction(_0xbacde1,_0x1d3b96,_0x42eccc,_0x43b579=null){const _0x893efd=a0_0x265454;if(!_0x43b579){const _0x3195a1=FileUtils[_0x893efd(0x215)](_0x1d3b96);_0x43b579=_0x3195a1+'Model';}return'\x0a//\x20POST\x20/api/'+_0xbacde1+'/'+_0x1d3b96+_0x893efd(0x189)+_0x1d3b96+_0x893efd(0xb1)+_0x43b579+_0x893efd(0x2a4)+_0x1d3b96+_0x893efd(0xb7)+_0x1d3b96+_0x893efd(0x219)+_0x1d3b96+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateCreateFunction(_0x254e54,_0x450260,_0x25ba94,_0x25e97a=null,_0x49e98d=![]){const _0x405cf5=a0_0x265454,_0x14b1d0={'zxKhc':function(_0x563ad3,_0xff37cd){return _0x563ad3(_0xff37cd);}};if(!_0x25e97a){const _0x38ca2e=FileUtils['toCamelCase'](_0x450260);_0x25e97a=_0x38ca2e+'Model';}const _0x29f733=_0x14b1d0[_0x405cf5(0x268)](isSoftDeleteEnabled,_0x25ba94)?_0x405cf5(0x1cb)+JSON[_0x405cf5(0x252)](SOFT_DELETE_COLUMNS)+_0x405cf5(0x156):'',_0x25fe86=_0x14b1d0['zxKhc'](hasSoftDeleteFkParents,_0x25ba94)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20wajib\x20aktif\x20untuk\x20tiap\x20kolom\x20FK\x20yang\x20diisi\x20(pre-check\x20422).\x0a\x20\x20\x20\x20await\x20'+_0x25e97a+'.checkSoftDeleteFkParents(req.body,\x20\x27create\x27);\x0a':'',_0x351a12=_0x14b1d0[_0x405cf5(0x268)](hasSoftDeleteFkParents,_0x25ba94)?_0x405cf5(0x17c):'',_0x4698fb=_0x49e98d?_0x405cf5(0x27c)+_0x254e54+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x450260+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0x25ba94['primaryKey']||'id')+_0x405cf5(0x11a)+_0x25ba94[_0x405cf5(0x16a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0x4afd70=_0x49e98d?'\x0a\x20\x20\x20\x20//\x20Validasi\x20x-correlation-id\x20header\x20(MANDATORY\x20jika\x20Kafka\x20enabled)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27];\x0a\x20\x20\x20\x20if\x20(!correlationId)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20header\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27x-correlation-id\x20header\x20is\x20required\x20when\x20Kafka\x20publishing\x20is\x20enabled\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'\x0a\x20\x20\x20\x20//\x20Get\x20correlation\x20ID\x20from\x20header\x20(optional)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27]\x20||\x20null;\x0a';return _0x405cf5(0x235)+_0x254e54+'/'+_0x450260+'/create\x20-\x20Menambahkan\x20data\x20'+_0x450260+'\x20baru\x0arouter.post(\x27/create\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x450260+_0x405cf5(0x1ad)+_0x4afd70+_0x405cf5(0x117)+_0x25e97a+_0x405cf5(0xc0)+_0x25e97a+_0x405cf5(0x1ef)+_0x29f733+'\x0a'+_0x25fe86+'\x0a\x20\x20\x20\x20//\x20Event\x20lifecycle\x20variables\x0a\x20\x20\x20\x20let\x20oldData\x20=\x20null;\x0a\x20\x20\x20\x20let\x20newData\x20=\x20null;\x0a\x20\x20\x20\x20const\x20requestData\x20=\x20req.body;\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x25ba94['tableName']+_0x405cf5(0x1d4)+_0x25e97a+_0x405cf5(0x1a0)+_0x25e97a+_0x405cf5(0x185)+_0x450260+_0x405cf5(0x159)+(_0x25ba94['primaryKey']||'id')+_0x405cf5(0x1f2)+_0x4698fb+'\x0a\x20\x20\x20\x20//\x20Kirim\x20response\x0a\x20\x20\x20\x20return\x20res.status(201).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x450260+'\x20data\x20successfully\x20added\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20responseData,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20menambahkan\x20data\x20'+_0x450260+':\x27,\x20error);\x0a'+_0x351a12+_0x405cf5(0x246)+_0x450260+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateUpdateFunction(_0x23d37c,_0xa4ac0c,_0x288a4b,_0x35f3d0=null,_0x44ed5a=![]){const _0x428faf=a0_0x265454,_0x54502c={'voPjJ':function(_0x390ae0,_0x1ddd5d){return _0x390ae0(_0x1ddd5d);},'tihWv':function(_0x52880a,_0x7a0346){return _0x52880a!==_0x7a0346;},'aaUDT':function(_0x125006,_0x466139){return _0x125006(_0x466139);}};if(!_0x35f3d0){const _0x3e989a=FileUtils[_0x428faf(0x215)](_0xa4ac0c);_0x35f3d0=_0x3e989a+_0x428faf(0xc7);}const _0xef9fd5=_0x288a4b['fieldPolicy']?',\x20'+JSON['stringify'](_0x288a4b[_0x428faf(0x179)]):'',_0x50731a=_0x288a4b['requestScope']?_0x428faf(0x244)+_0x35f3d0+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0xa4ac0c+'\x20data\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x5dfe50=_0x54502c['voPjJ'](softDeleteVisibilityFilter,_0x288a4b),_0x41c6aa=_0x54502c[_0x428faf(0x1fb)](_0x5dfe50,null)?_0x428faf(0x18d)+_0x35f3d0+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20\x27'+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x5dfe50+'\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!__sdCheck.success\x20||\x20!__sdCheck.data\x20||\x20__sdCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0xa4ac0c+_0x428faf(0x140):'',_0x2bc0cb=_0x54502c[_0x428faf(0x1be)](isSoftDeleteEnabled,_0x288a4b)?_0x428faf(0x1cb)+JSON[_0x428faf(0x252)](SOFT_DELETE_COLUMNS)+')\x20{\x0a\x20\x20\x20\x20\x20\x20delete\x20req.body[__sdCol];\x0a\x20\x20\x20\x20}':'',_0x392899=_0x54502c[_0x428faf(0x260)](hasSoftDeleteFkParents,_0x288a4b)?_0x428faf(0x285)+_0x35f3d0+_0x428faf(0x206):'',_0x4c0b79=hasSoftDeleteFkParents(_0x288a4b)?'\x0a\x20\x20\x20\x20//\x20FK-SD-1:\x20parent\x20soft-delete\x20terhapus/absen\x20→\x20422\x20(shape\x20selaras\x20FK\x20restore\x20R20).\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unprocessable\x20Entity\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a':'',_0x3d62fc=_0x44ed5a?_0x428faf(0x144)+_0x23d37c+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0xa4ac0c+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData,\x0a\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20topic:\x20kafkaConfig.topic\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20keyField:\x20kafkaConfig.keyField\x20||\x20\x27'+(_0x288a4b[_0x428faf(0x24f)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x288a4b['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0x3e54d9=_0x44ed5a?_0x428faf(0x141):'\x0a\x20\x20\x20\x20//\x20Get\x20correlation\x20ID\x20from\x20header\x20(optional)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27]\x20||\x20null;\x0a';return'\x0a//\x20POST\x20/api/'+_0x23d37c+'/'+_0xa4ac0c+_0x428faf(0x164)+_0xa4ac0c+_0x428faf(0x1b8)+_0xa4ac0c+'/update:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x3e54d9+_0x428faf(0x28f)+(_0x288a4b[_0x428faf(0x24f)]||'id')+_0x428faf(0x1b3)+_0x50731a+_0x41c6aa+_0x428faf(0x218)+_0x35f3d0+_0x428faf(0xc0)+_0x35f3d0+_0x428faf(0xf7)+_0x2bc0cb+'\x0a'+_0x392899+_0x428faf(0xb4)+_0x288a4b[_0x428faf(0x16a)]+_0x428faf(0x1d4)+_0x35f3d0+_0x428faf(0x16f)+_0xef9fd5+_0x428faf(0x259)+_0x35f3d0+'.updateData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20}'+_0xef9fd5+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20newData\x20=\x20responseData;\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20UPDATE\x20completed\x20without\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20UPDATE\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0xa4ac0c+'\x20data\x20updated\x20successfully:\x20${primaryKey}=${req.body[primaryKey]}`);\x0a'+_0x3d62fc+_0x428faf(0x1e8)+_0xa4ac0c+_0x428faf(0x231)+_0xa4ac0c+_0x428faf(0x1c1)+_0x4c0b79+_0x428faf(0x105)+_0xa4ac0c+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\x20//\x20PostgreSQL\x20unique\x20violation\x0a\x20\x20\x20\x20\x20\x20const\x20details\x20=\x20buildDuplicateDetails(error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Duplicate\x20entry\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(details\x20?\x20{\x20details\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20updating\x20'+_0xa4ac0c+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateAdjustFunction(_0x35d0b6,_0x8a3c57,_0xed8bfa,_0x28e8a0=null){const _0x30dc7e=a0_0x265454;if(!_0x28e8a0){const _0x5af524=FileUtils[_0x30dc7e(0x215)](_0x8a3c57);_0x28e8a0=_0x5af524+_0x30dc7e(0xc7);}const _0x39f0e0=_0xed8bfa['adjustConfig']?JSON['stringify'](_0xed8bfa['adjustConfig']):'{}',_0x4571b9=_0xed8bfa['fieldPolicy']?',\x20'+JSON['stringify'](_0xed8bfa['fieldPolicy']):'',_0x4e9a66=_0xed8bfa[_0x30dc7e(0x179)]?_0x30dc7e(0x107)+JSON['stringify'](_0xed8bfa[_0x30dc7e(0x179)]):'',_0x2de968=_0xed8bfa[_0x30dc7e(0x245)]?_0x30dc7e(0x244)+_0x28e8a0+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20primaryKey,\x20value:\x20req.body[primaryKey]\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x8a3c57+'\x20data\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'';return _0x30dc7e(0x235)+_0x35d0b6+'/'+_0x8a3c57+'/adjust\x20-\x20Adjust\x20data\x20'+_0x8a3c57+'\x20(atomic\x20increment/decrement)\x0arouter.post(\x27/adjust\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20const\x20primaryKey\x20=\x20\x27'+(_0xed8bfa['primaryKey']||'id')+_0x30dc7e(0x239)+_0x2de968+_0x30dc7e(0x269)+_0x39f0e0+';\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0xed8bfa['tableName']+_0x30dc7e(0x1d4)+_0x28e8a0+'.adjustData(req.body,\x20adjustConfig,\x20eventContext'+_0x4571b9+');\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20ADJUST\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20ADJUST\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20tanpa\x20events\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x28e8a0+'.adjustData(req.body,\x20adjustConfig'+_0x4e9a66+_0x30dc7e(0x2ac)+_0x8a3c57+_0x30dc7e(0x188)+_0x8a3c57+_0x30dc7e(0x11b)+_0x8a3c57+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20403)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(403).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Pro\x20Feature\x20Required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20upgrade:\x20\x27https://restforge.dev/pricing\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27constraint\x20violation\x27)\x20||\x20error.message.includes(\x27below\x20minimum\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Constraint\x20violation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27not\x20configured\x20for\x20adjustment\x27)\x20||\x20error.message.includes(\x27is\x20required\x20for\x20adjust\x27)\x20||\x20error.message.includes(\x27must\x20be\x20a\x20non-zero\x20number\x27)\x20||\x20error.message.includes(\x27not\x20a\x20valid\x20field\x27)\x20||\x20error.message.includes(\x27must\x20not\x20be\x20empty\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x8a3c57+_0x30dc7e(0x290)+_0x8a3c57+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateAggregateFunction(_0x2d6670,_0x4c25f5,_0x6f151d,_0x39ec5e=null){const _0x17a5eb=a0_0x265454;if(!_0x39ec5e){const _0x449a13=FileUtils['toCamelCase'](_0x4c25f5);_0x39ec5e=_0x449a13+_0x17a5eb(0xc7);}const _0x22c22d=_0x6f151d[_0x17a5eb(0x22f)]?JSON[_0x17a5eb(0x252)](_0x6f151d[_0x17a5eb(0x22f)]):'{}';return'\x0a//\x20POST\x20/api/'+_0x2d6670+'/'+_0x4c25f5+'/aggregate\x20-\x20Aggregate\x20data\x20(count,\x20sum,\x20avg,\x20min,\x20max)\x0arouter.post(\x27/aggregate\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20aggregateConfig\x20=\x20'+_0x22c22d+';\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x39ec5e+_0x17a5eb(0xc2)+_0x4c25f5+_0x17a5eb(0x27f)+_0x4c25f5+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function hasSoftDeleteFkRestrictChildren(_0x1c554d){const _0x196170=a0_0x265454;return Array['isArray'](_0x1c554d['softDeleteFkChildren'])&&_0x1c554d[_0x196170(0xf2)][_0x196170(0x14a)](_0x36f529=>_0x36f529&&_0x36f529[_0x196170(0x2b3)]==='restrict');}function hasCascadeChildren(_0x3f061b){const _0x2885d8=a0_0x265454,_0x399a66={'NLOcj':function(_0x55aeed,_0x20b05c){return _0x55aeed===_0x20b05c;}},_0x46a2e9=_0x3f061b&&_0x3f061b['softDeleteCascadeTree'];return!!(_0x46a2e9&&_0x399a66['NLOcj'](typeof _0x46a2e9,'object')&&_0x399a66[_0x2885d8(0x168)](typeof _0x46a2e9['master'],_0x2885d8(0x138))&&_0x46a2e9[_0x2885d8(0x15c)]&&_0x46a2e9['nodes']&&_0x399a66[_0x2885d8(0x168)](typeof _0x46a2e9[_0x2885d8(0x1f3)],_0x2885d8(0x17e))&&_0x46a2e9['nodes'][_0x46a2e9['master']]);}function generateDeleteFunction(_0x37c59e,_0x39ac8c,_0x3a95c,_0x286780=null,_0x2264d7=![]){const _0x3445db=a0_0x265454,_0x484e4d={'MmBcl':function(_0x935608,_0x3cfc3a){return _0x935608(_0x3cfc3a);}};if(!_0x286780){const _0x1f6054=FileUtils['toCamelCase'](_0x39ac8c);_0x286780=_0x1f6054+'Model';}const _0x55a1f9=_0x2264d7?_0x3445db(0x1b1)+_0x37c59e+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x39ac8c+_0x3445db(0xc9)+(_0x3a95c[_0x3445db(0x24f)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x3a95c['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20correlationId:\x20correlationId\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20).catch(err\x20=>\x20console.error(\x27[Kafka]\x20Async\x20publish\x20error:\x27,\x20err.message));\x0a\x20\x20\x20\x20}\x0a':'',_0x2125fb=_0x2264d7?_0x3445db(0x141):'\x0a\x20\x20\x20\x20//\x20Get\x20correlation\x20ID\x20from\x20header\x20(optional)\x0a\x20\x20\x20\x20const\x20correlationId\x20=\x20req.headers[\x27x-correlation-id\x27]\x20||\x20null;\x0a';return'\x0a//\x20POST\x20/api/'+_0x37c59e+'/'+_0x39ac8c+_0x3445db(0x1a5)+_0x39ac8c+'\x0arouter.post(\x27/delete\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x39ac8c+_0x3445db(0x100)+_0x2125fb+'\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20===\x20EVENT\x20LIFECYCLE:\x20onBefore\x20DELETE\x20===\x0a\x20\x20\x20\x20let\x20oldData\x20=\x20null;\x0a\x20\x20\x20\x20let\x20newData\x20=\x20null;\x0a\x20\x20\x20\x20const\x20requestData\x20=\x20req.body;\x0a\x20\x20\x20\x20let\x20responseData\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20Cek\x20apakah\x20data\x20exist\x20sebelum\x20delete\x20dan\x20ambil\x20old\x20data\x20untuk\x20event\x20lifecycle\x0a\x20\x20\x20\x20//\x20Menggunakan\x20SELECT\x20*\x20dari\x20tabel\x20utama\x20(tanpa\x20explicit\x20select)\x20karena\x20fieldName\x0a\x20\x20\x20\x20//\x20bisa\x20mengandung\x20kolom\x20dari\x20JOIN\x20(mis.\x20city_name)\x20yang\x20tidak\x20ada\x20di\x20tabel\x20utama\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20firstCondition\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20existingData\x20=\x20await\x20'+_0x286780+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[{\x20key:\x20firstCondition.key,\x20value:\x20firstCondition.value\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!existingData.success\x20||\x20!existingData.data\x20||\x20existingData.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x39ac8c+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Simpan\x20data\x20untuk\x20event\x20lifecycle\x20dan\x20debug\x0a\x20\x20\x20\x20\x20\x20\x20\x20oldData\x20=\x20existingData.data[0];\x0a\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(checkError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Verification\x20Failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Could\x20not\x20verify\x20data\x20existence\x20before\x20delete\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20checkError.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20//\x20onBefore\x20+\x20main\x20operation\x20+\x20onAfter\x20dieksekusi\x20dalam\x20satu\x20transaction\x20scope\x0a\x20\x20\x20\x20//\x20di\x20dalam\x20model.executeTransactionWithEvents()\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20integrated\x20transaction\x20model\x20dengan\x20event\x20lifecycle\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x3a95c[_0x3445db(0x16a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20responseData\x20=\x20await\x20'+_0x286780+_0x3445db(0x264)+_0x286780+_0x3445db(0x1bf)+_0x39ac8c+_0x3445db(0x1bc)+_0x55a1f9+_0x3445db(0xb9)+_0x39ac8c+_0x3445db(0x1c1)+(_0x3a95c[_0x3445db(0x228)]?.['enabled']?_0x3445db(0x21e)+_0x39ac8c+_0x3445db(0x153):'')+(hasSoftDeleteFkRestrictChildren(_0x3a95c)||_0x484e4d['MmBcl'](hasCascadeChildren,_0x3a95c)?_0x3445db(0x22b):'')+'\x0a\x20\x20\x20\x20//\x20Handle\x20foreign\x20key\x20constraint\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723503\x27)\x20{\x20//\x20PostgreSQL\x20foreign\x20key\x20violation\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Foreign\x20key\x20constraint\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Cannot\x20delete:\x20record\x20is\x20still\x20referenced\x20by\x20other\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20deleting\x20'+_0x39ac8c+_0x3445db(0x1c2);}function a0_0x5526(){const _0xd92e9d=['ywn0Aw9U','jYWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIa','j107cIaGicaGicaGicbPzIaOx19Yzxn0CMLJDfzHBcaHpt0GBNvSBcaMjIbFx3jLC3rYAwn0vMfSice9psb1BMrLzMLUzwqPihSkicaGicaGicaGicaGy29UC3qGx19Yzxn0CMLJDenOzwnRid0GyxDHAxqGy2XPzw50lNf1zxj5kaOGicaGicaGicaGicaGicDtruXfq1qGmsbguK9nia','D29YA2zSB3C','C291CMnL','zMLLBgrqB2XPy3K','ihn0yxr1CYbJAgfUz2vKoIaKE3jLC3vSDc53B3jRzMXVDY5WCMv2Aw91C1n0yxr1C30G4OAsicr7CMvZDwX0lNDVCMTMBg93lM5LD1n0yxr1C31GktSkcIaGicbYzxr1CM4GCMvZlNn0yxr1CYGYmdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbTzxnZywDLoIbGu3rHDhvZignOyw5NzwqGzNjVBsaKE3jLC3vSDc53B3jRzMXVDY5WCMv2Aw91C1n0yxr1C30GDg8GjhTYzxn1BhqUD29YA2zSB3CUBMv3u3rHDhvZFwaScIaGicaGigrHDge6ihjLC3vSDc5KyxrHlaOGicaGicb3B3jRzMXVDZOGCMvZDwX0lNDVCMTMBg93laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGy2HHBMDLlxn0yxr1CYa','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifrVBgfRigzVCM1HDcbHzhzHBMnLzcaOy29UzgL0Aw9UCY9SB2DPyYKkicaGigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZihX8ihjLCs5IB2r5lNDOzxjLlMXVz2LJksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0fKDMfUy2vKihDOzxjLigzVCM1HDcbPCYbUB3qGC3vWCg9YDgvKigLUic9MAxjZDcbLBMrWB2LUDc4GvxnLic9YzwfKigvUzhbVAw50igzVCIbJB21WBgv4ihf1zxjPzxmNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbHzgeGzgKGCMvHzgfIBgvgAwvSzhmkicaGignVBNn0ihzHBgLKrMLLBgrZid0G','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGDgvYAgfWDxmVywjZzw4G4OAsidqYmIaOC2HHCguGC2vSyxjHCYbgsYbYzxn0B3jLifiYmcKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndiYksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqYmIKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDvBNbYB2nLC3nHyMXLievUDgL0EsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','x2zPzwXKuhjVAMvJDgLVBNm','B2jQzwn0','Dgv4DezPzwXKCW','ihvUDhvRigrYB3bKB3DUicHKEw5HBwLJkqPYB3v0zxiUz2v0kcCVBg9VA3vWjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VifzHBgLKyxnPifGTuMvXDwvZDc1nB2rLigHLywrLCGOGicaGy29UC3qGCMvXDwvZDe1VzguGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lw1VzguNxtSkicaGignVBNnVBguUBg9NkgbylvjLCxvLC3qTtw9KzsbOzwfKzxi6icr7CMvXDwvZDe1Vzgv9ycK7cGOGicaGAwyGkhjLCxvLC3rnB2rLice9psaNzhLUyw1PyYCPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGuMvXDwvZDcbnB2rLjYWkicaGicaGicbTzxnZywDLoIaNwc1szxf1zxn0lu1VzguGAgvHzgvYig11C3qGyMuGC2v0ihrVigr5BMfTAwmNlaOGicaGicaGigrLDgfPBhm6icDdB250B2GGCgvUz2D1BMfHBJOGvgfTyMfOA2fUigHLywrLCIbylvjLCxvLC3qTtw9KztOGzhLUyw1PyYCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8Gqw1IAwWGCgfYyw1LDgvYihnLyxjJAcaOzgvMyxvSDcbJyxnLlwLUC2vUC2L0AxzLkqOGicaGBgv0ihnLyxjJAca9ihjLCs5XDwvYEs5ZzwfYy2GGFhWGjYC7cIaGicbPzIaOqxjYyxKUAxnbCNjHEsHZzwfYy2GPksb7cIaGicaGihnLyxjJAca9ihnLyxjJAfSWxsb8FcaNjZSkicaGih0kcIaGicaVlYbbBwjPBcbWyxjHBwv0zxiGDgfTyMfOyw4GDw50DwSGzMLSDgvYAw5NcIaGicbJB25ZDcbJB21Wyw55swqGpsbYzxeUCxvLCNKUy29TCgfUEv9Pzcb8FcbYzxeUCxvLCNKUy29TCgfUEuLKoWOGicaGy29UC3qGzxH0CMfgAwX0zxjZid0GE307cGOGicaGlY8Gq29SBgvJDcbHzgrPDgLVBMfSigzPBhrLCIbWyxjHBwv0zxjZcIaGicbPzIaOy29TCgfUEuLKksb7cIaGicaGigv4DhjHrMLSDgvYCY5JB21Wyw55x2LKid0Gy29TCgfUEuLKoWOGicaGFqOkicaGic8VifzHBgLKyxnPihnLyxjJAcbWyxjHBwv0zxikicaGigLMicHZzwfYy2GUBgvUz3rOid4GmtaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihnLyxjJAcbWyxjHBwv0zxiNlaOGicaGicaGig1LC3nHz2u6icDtzwfYy2GGCgfYyw1LDgvYigLZihrVBYbSB25NicHTyxGGmtaWignOyxjHy3rLCNmPjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbJB25ZB2XLlMXVzYHG','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0','AM9PBG','AxrLBxmU','FwaPoWOkicaGihjLDhvYBIbYzxmUC3rHDhvZkdiWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGig1LC3nHz2u6icC','lMfKzerHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicaGig5LD0rHDgeGpsbYzxnWB25ZzurHDge7cIaGicaGicaGy29UC29Szs5SB2COj1TgquXmqKfds10Gsu5trvjuignVBxbSzxrLzcb3AxrOB3v0igv2zw50CYCPoWOGicaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj1TgquXmqKfds10Gsu5trvjuigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFqOkicaGic8VieXVzYbZDwnJzxnZzNvSig9WzxjHDgLVBGOGicaGy29UC29Szs5SB2COya','jYWkicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicb9cIaGicaGih07cIaGicb9cGOGicaGlY8GugfUz2DPBcbTB2rLBcbJB21WB3nPDguGy3jLyxrLig1LDgHVzaOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','oIbHBMfRicC','igrHDgeGywrQDxn0zwqGC3vJy2vZC2z1BgX5oIaKE3bYAw1HCNLlzxL9psr7CMvXlMjVzhLBChjPBwfYEuTLEv19ycK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','l2rHDgf0ywjSzxmGlsbeyxrHihvUDhvRierHDgfuywjSzxmkCM91DgvYlNbVC3qOjY9KyxrHDgfIBgvZjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','j10kicaGicaGicaGic5MAwX0zxiOzMLLBgqGpt4Giwf1Dg9hzw5LCMf0zuzPzwXKCY5PBMnSDwrLCYHMAwvSzcKPoWOkicaGicaGicbJB25ZDcbTAxnZAw5NrMLLBgrZid0GCMvXDwLYzwrgAwvSzhmUzMLSDgvYkgzPzwXKid0+icfYzxeUyM9KEvTMAwvSzf0GFhWGCMvXlMjVzhLBzMLLBgrDid09psaNjYK7cGOGicaGicaGigLMicHTAxnZAw5NrMLLBgrZlMXLBMD0Aca+idaPihSkicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgrZjYWkicaGicaGicaGicaGBwvZC2fNztOGyfjLCxvPCMvKigzPzwXKkhmPoIaKE21PC3nPBMDgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbfBMrWB2LUDcb1CgrHDguGBwvTyNv0DwHRyw4GChjPBwfYEsbRzxKkicaGicaGAwyGkgvUzhbVAw50id09psaNDxbKyxrLjYKGEWOGicaGicaGignVBNn0ihbYAw1HCNLlzxKGpsaN','laOGicaGicbWCMLTyxj5vgv4DezPzwXKoIaN','lMDLDeXVB2T1CerHDgfeEw5HBwLJkhnLyxjJAcWGzxH0CMfgAwX0zxjZktSkcIaGicbJB25ZB2XLlMXVzYHGtg9VA3vWihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGzgf0ytOGBgLZDcWkicaGicaGC2vHCMnOoIbZzwfYy2GScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','cIaGicb7cIaGicaGignVBNn0if9FC2rdAgvJAYa9igf3ywL0ia','uMnvBe0','sffJqLa','DvPeEhq','zMLSDgvY','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLy29YzeLKih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGjW','cIaGicaGic8VifnVzNqTzgvSzxrLihzPC2LIAwXPDhKGC2nVCguGkfiXnsKkicaGicaGD2HLCMvdB25KAxrPB25ZlNb1C2GOya','ywrQDxn0q29UzMLN','B0LnAhC','cIaGicaGignVBNn0ignHBgn1Bgf0Aw9UCYa9ia','D05HD2m','ksb8FcaWoWOGicaGicaGicaGy29UC3qGChjPy2uGpsboDw1IzxiOAxrLBs4','uNf4rvm','AxrLBxm','oWOGicaGicbJB25ZDcb0zxH0rMLLBgrZid0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5ZzwfYy2HgAwvSzhmUBgvUz3rOid4GmaOGicaGicaGid8GBg9VA3vWq29UzMLNlNnLyxjJAezPzwXKCWOGicaGicaGidOG','iJOG','psr7zgf0ys4','DMLSqKu','zMLLBgrwywXPzgf0Aw9U','lMfKzerHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cIaGicaGicaGBMv3rgf0ysa9ihjLC3bVBNnLrgf0ytSkcIaGicaGicaGy29UC29Szs5SB2COj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGy29TCgXLDgvKihn1y2nLC3nMDwXSEsb3AxrOigv2zw50CYCPoWOGicaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9igvSC2uGEWOGicaGicaVlYbgywXSyMfJAZOGz3vUywTHBIbTB2rLigXHBweGDgfUCgeGzxzLBNrZicH0zxrHCcbWCM9WywDHC2KGCMvXDwvZDeLKihvUDhvRieXPDMuGu3LUyYKkicaGicaGDhj5ihSkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','Bg9JA2vKuM93wYC','jYKUienVBMzPzY1KCML2zw4GkhrHBNbHigjVzhKGB3b0Aw9UCYKSigrPDgvYyxbRyw4GDgfUCgeklY8GC3LHCMf0igf1DgGGkhzPC2LIAwXPDhKGzMLSDgvYlcbcvuTbtIbstfmG4OcuigTHCMvUysbPDhuGDgLKywSGywrHigD1yxjKicfYzxeUDxnLCIKUcNjVDxrLCI51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGAwyGkhjLCs5TzxrOB2qGit09icDqt1nujYKGCMv0DxjUig5LEhqOktSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGAwyGkcfBj2rHDgf0ywjSzxmNlcaNCMvHzcCSicDSB29RDxaNlcaNywDNCMvNyxrLj10UAw5JBhvKzxmOzw5KCg9PBNqPksbYzxr1CM4GBMv4DcGPoWOkicbJB25ZDcbZB2z0rgvSzxrLq29UzgL0Aw9Uid0GEYbRzxK6icC','Bgv0igjHC2vrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','l3vWzgf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','l2rLBgv0zsaTie1LBMDOyxb1CYbKyxrHia','jZSkicaGicaG','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','zM9YzwLNBKTLEq','EuffD3K','AgzHtwu','y29UC3rYywLUDhm','Aw5OCMm','l2nYzwf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','jYWkicaGicaGicaGihbYAw1HCNLlzxK6ihrOAxmUChjPBwfYEuTLEsWkicaGicaGicaGic4UlIHLDMvUDenVBNrLEhqUywrKAxrPB25HBenVBNrLEhqGFhWGE30PcIaGicaGicaGFsK7cIaGicaGicaGy29UC3qGywz0zxjszxn1BhqGpsbHD2fPDcbJzs5LEgvJDxrLt25bzNrLCKnVBxbVC2L0zsGNAw5Zzxj0jYWGywz0zxjdDhGPoWOGicaGicaGigLMicGHywz0zxjszxn1BhqUC3vJy2vZCYKGEWOGicaGicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkgbVBKfMDgvYq29TCg9ZAxrLsw5Zzxj0igzHAwXLzdOGjhTHzNrLCLjLC3vSDc5LCNjVCN1GktSkicaGicaGicb9cIaGicaGih0kcIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNq09ntuLujYK7cIaGicaGignVBNnVBguUBg9NkcDuCMfUC2fJDgLVBIbJB21TAxr0zwqGC3vJy2vZC2z1BgX5jYK7cGOGicaGicaVlYbjBNzHBgLKyxrLignHy2HLihnLDgvSywGGD3jPDguGB3bLCMf0Aw9UigjLCMHHC2LScIaGicaGigf3ywL0ihrOAxmUAw52ywXPzgf0zunHy2HLkcK7cGOGicaGicbYzxr1CM4GEWOGicaGicaGic4UlMLUC2vYDgvKsgvHzgvYlaOGicaGicaGifTKzxrHAwXlzxLDoIbPBNnLCNrLzeL0zw1ZcIaGicaGih07cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbJCMvHDgvdB21WB3nPDgu6jYWGzxjYB3iPoWOGicaGicb0AhjVDYbLCNjVCJSkicaGih0GzMLUywXSEsb7cIaGicaGignSAwvUDc5YzwXLyxnLkcK7cIaGicb9cIaGFqO','icaGihjLDhvYBIbMB3jTyxr0zwq7','CgfYzw50u29MDerLBgv0zq','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGrevmrvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKrgvSzxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrezwXLDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5KzwXLDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HezwXLDguOcIaGicaGicaGjW','kg1HC3rLCI1KzxrHAwWGDhjHBNnHy3rPB24P','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YihvWzgf0zwaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','tw9KzwWGzxH0zw5KCYbcyxnLtw9KzwWGEWOGic8QkGOGicaQienVBNn0CNvJDg9YcIaGicOVcIaGy29UC3rYDwn0B3iOksb7cIaGicaVlYbezwzPBMLZAwTHBIb2ywXPzezPzwXKCYaTihnLBxvHigzPzwXKihLHBMCGDMfSAwqGDw50DwSGDgfIzwWG','lMXLBMD0Aca+ida7cGOGigLMicHOyxndB21WB25LBNrZksb7cIaGicbJB21WB25LBNrfBMDPBMuGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl2nVBxbVBMvUDc1LBMDPBMuNks5JB21WB25LBNrfBMDPBMu7cIaGicbdB250zxH0qNvPBgrLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVDxrPBhmVy29UDgv4Dc1IDwLSzgvYjYK7cGOGicaGlY8Gtg9HzcbJB21WB25LBNqGy29UzMLNDxjHDgLVBIbKyxjPihbHEwXVywqGEwfUzYbZzwrHBMCGzgLNDw5HA2fUcIaGicbJB25ZDcbJB21WB25LBNrdB25MAwCGpsb7cIaGicaGihrHyMXLtMfTztOGjW','icaGihrOAxmUDMfSAwrHDgLVBKnVBMzPzYa9ihT9oYaVlYboBYbMAwvSzcb2ywXPzgf0Aw9UignVBMzPzWO','cIaGicb9oWOGih0kcIaGlYOQcIaGicOGtg9HzcbHzhzHBMnLzcbXDwvYEsb0zw1WBgf0zxmGzgfYAsbMAwXLcIaGicOGqhjLDhvYBNmGE09IAMvJDh0GvgvTCgXHDgvZifnrtcb1BNr1AYbHzhzHBMnLzcbXDwvYAwvZcIaGicOVcIaGBg9HzefKDMfUy2vKuxvLCNLuzw1WBgf0zxmOksb7cIaGicbJB25ZDcb0zw1WBgf0zxmGpsb7FtSkicaGia','cNjVDxrLCI5WB3n0kcCVDxbKyxrLjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','wKXYrvO','cIaGicaGih0PktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHicG','y29TCg9Uzw50CW','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSk','j107cGOGicaGicaVlYberuXfveuGy2HPBgqGCMvJB3jKCYbTzw5Nz3vUywTHBIbMB3jLAwDUs2v5cIaGicaGignVBNn0igrLBgv0zunOAwXKuxvLCNKGpsbGrevmrvrfiezst00G','ywfvrfq','lMrLBgv0zurHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicaGignVBNnVBguUBg9NkcDBrKfmtejbq0TDierftevursbJB21WBgv0zwqGD2L0Ag91DcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDierftevursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0kcIaGicaVlYbmB2CGC3vJy2vZC2z1BcbVCgvYyxrPB24kicaGignVBNnVBguUBg9Nkga','icaGic8VicGVCMvHzcWGl2zPCNn0lcbKyxrHDgfIBgvZlcbJCMvHDguSihvWzgf0zsKGzgKGC2f0DsbJAg9RzxbVAw50lcb0yw5Wysb1yMfOiejHC2vnB2rLBc9NzxrszwfKuxvLCNKUcG','oICSigvYCM9YktSk','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','CMvHza','id0GrKfmu0uNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','Aw5MBW','icyMiefYCMf5lMLZqxjYyxKO','l3jLywqTy29TCg9ZAxrLoICSiePtt04UC3rYAw5NAwz5khjLCs5IB2r5lcbUDwXSlcaYksK7cGOGicaGlY8GvMfSAwrHC2KGCMvXDwvZDcbIB2r5cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsb3AgvYzsbJBgf1C2ukicaGigLMicGHCMvXlMjVzhKUD2HLCMuPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6icDqCM9Wzxj0Esb3AgvYzsbPCYbYzxf1AxjLzcCScIaGicaGicaGzxHHBxbSztOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjMAwvSzf9Uyw1LiIWGiNzHBhvLiJOGiMzPzwXKx3zHBhvLiIb9xqOGicaGicaGih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGzM9YBwf0ihDOzxjLcIaGicbPzIaOiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPicyMicfYzxeUyM9KEs53AgvYzs5JB25KAxrPB25Zksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBcIaGicaGicaGicaGihSGiMTLEsi6ici','B3zotgq','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','CLnXq2S','cIaGicbMB3iGkgnVBNn0if9FC2rdB2WGB2yG','A2TZtLm','id0GrKfmu0uGqu5eia','oWOGih0kcIaGlYOQcIaGicOGtwvTyMfUz3vUignSyxvZzsbxsevsrsbIzxjKyxnHCMTHBIbMAwX0zxikicaGkIbaCgfYyw0GE09IAMvJDh0GB3b0Aw9UCYaTiezPBhrLCIbVChrPB25ZcIaGicOGqhjLDhvYBNmGE1n0CMLUz30Gq2XHDxnLifDirvjfifnrtaOGicaQlWOGigj1AwXKrMLSDgvYv2HLCMvdBgf1C2uOB3b0Aw9UCYKGEWOGicaGy29UC3qGy29UzgL0Aw9UCYa9ifTDoWOGicaGy29UC3qGzMLSDgvYCYa9ihrOAxmUz2v0qxzHAwXHyMXLrMLSDgvYCYGPoWOkicaGigLMicGHqxjYyxKUAxnbCNjHEsHMAwX0zxjZksKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGlY8GuhjVC2vZigzPBhrLCIbIzxjKyxnHCMTHBIb0AxbLcIaGicbMB3iGkgnVBNn0igzPBhrLCIbVzIbMAwX0zxjZksb7cIaGicaGignVBNn0igzPBhrLCLzHBhvLid0GB3b0Aw9UC1TMAwX0zxiUBMfTzv07cGOGicaGicbPzIaOiwzPBhrLCLzHBhvLihX8igzPBhrLCLzHBhvLid09psaNjYb8FcbMAwX0zxjwywX1zsa9pt0GjY0NihX8igzPBhrLCLzHBhvLid09psaNywXSjYKGEWOGicaGicaGignVBNrPBNvLoWOGicaGicb9cGOGicaGicbZD2L0y2GGkgzPBhrLCI50ExbLksb7cIaGicaGicaGy2fZzsaNy29TyM9IB3GNoGOGicaGicaGignHC2uGj3nLBgvJDcC6cIaGicaGicaGicbPzIaOzMLSDgvYlNrHCMDLDezPzwXKksb7cIaGicaGicaGicaGignVBNn0igvZy2fWzwrwywX1zsa9igzPBhrLCLzHBhvLlNrVu3rYAw5NkcKUCMvWBgfJzsGVjY9NlcaIjYCIktSkicaGicaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgbvufbfuIGKE2zPBhrLCI50yxjNzxrgAwvSzh0Pid0GvvbqrviOjYr7zxnJyxbLzfzHBhvLFsCPycK7cIaGicaGicaGicb9cIaGicaGicaGicbICMvHAZSkcIaGicaGicaGy2fZzsaNzgf0zxjHBMDLjZOkicaGicaGicaGigLMicHMAwX0zxjwywX1zsa9pt0Gj2n1C3rVBv9Yyw5NzsCGjIyGB3b0Aw9UC1TMAwX0zxiUC3rHCNrgAwvSzf0GjIyGB3b0Aw9UC1TMAwX0zxiUzw5KrMLLBgrDksb7cIaGicaGicaGicaGignVBNn0ihn0yxj0rgf0zsa9ig9WDgLVBNnBzMLSDgvYlNn0yxj0rMLLBgrDoWOGicaGicaGicaGicbJB25ZDcbLBMreyxrLid0GB3b0Aw9UC1TMAwX0zxiUzw5KrMLLBgrDoWOGicaGicaGicaGicbJB25KAxrPB25ZlNb1C2GOycr7zMLSDgvYlNrHCMDLDezPzwXKFsbcrvrxruvoicCKE3n0yxj0rgf0zx0NieforcaNjhTLBMreyxrLFsDGktSkicaGicaGicaGih0kicaGicaGicaGigjYzwfRoWOkicaGicaGicbJyxnLicD0zxH0jZOkicaGicaGicaGigLMicHMAwX0zxiUDgfYz2v0rMLLBgqPihSkicaGicaGicaGicaGy29UC3qGzxnJyxbLzfzHBhvLid0GzMLSDgvYvMfSDwuUDg9tDhjPBMCOks5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGicaGicaGicbJB25KAxrPB25ZlNb1C2GOyfvquevskcr7zMLSDgvYlNrHCMDLDezPzwXKFsKGteLlrsbvufbfuIGNjsr7zxnJyxbLzfzHBhvLFsuNkwaPoWOGicaGicaGicaGFqOGicaGicaGicaGyNjLywS7cGOGicaGicaGignHC2uGj251BwjLCIC6cIaGicaGicaGicbPzIaOzMLSDgvYlNrHCMDLDezPzwXKicyMicfPC05HtIHMAwX0zxjwywX1zsKPihSkicaGicaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2zPBhrLCI50yxjNzxrgAwvSzh0GpsaKE2zPBhrLCLzHBhvLFwaPoWOGicaGicaGicaGFqOGicaGicaGicaGyNjLywS7cIaGicaGih0kicaGih0kcIaGicbYzxr1CM4Gy29UzgL0Aw9UCY5Szw5NDgGGpIaWid8GyfDirvjficr7y29UzgL0Aw9UCY5QB2LUkcCGqu5eicCPFwaGoIaNjZSkicb9','ignVBxbVC2L0zsb1CgrHDguGC3vJy2vZC2z1BdOG','jZSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBzgv0ywLSs2v5xtSkcIaGicaGic8Vic0TlsbiB29RoIbVBKjLzM9YzunVBxbVC2L0zuLUC2vYDcaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbKzxrHAwXjDgvTCYa9igrHDgfBzgv0ywLSs2v5xsb8FcbBxtSkicaGicaGicbJB25ZDcbIzwzVCMvdDhGGpsbdqI5IDwLSzenVBxbVC2L0zuLUC2vYDejLzM9YzunVBNrLEhqOAgvHzgvYrgf0ysWGzgv0ywLSsxrLBxmSihSkicaGicaGicaGihrHyMXLtMfTztOGjW','laOGicaGicbMAwvSzeXHyMvSCZOG','lY8Gq3vZDg9Tigf1zgL0ignVBhvTBNmGBwfWCgLUzYbKyxjPihbHEwXVywqk','A2v5CW','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','icaGic8VifbYAw9YAxr5idi6ihzPzxDrDwvYEsaODMLYDhvHBcb2Awv3igrHCMKGCgf5Bg9HzcKkicaGia','ywT0Awy','oICSigvYCM9YktSkcIaGicaVlYbsmJa6ihjLC3rVCMveyxrHig1LBgvTCgfYihn0yxr1C0nVzguGDw50DwSGA29UzgLZAsb0zxjRB250CM9SlGOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqWncKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','cI8VieDfvcaVyxbPlW','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwq','zxHWB3j0CW','zgvSzxrL','wLHttNa','cIaQcIaQiez1BMDZAsb1BNr1AYbTzw5NzwTZzwT1C2KGBw9KDwWG','Dg9qyxnJywXdyxnL','cIaQifzPzxC6ia','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFq','CvvHvu0','lMrLBgv0zsiGBxvZDcbIzsbHBIbHCNjHEsCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cGOGicaGicaVlYbusurbsYbTzwXHA3vRyw4Gyxv0BY1JywXJDwXHDgLVBIbKAsbLBMrWB2LUDaOGicaGicaVlYbdywXJDwXHDgLVBIbHA2fUigrPBgfRDwTHBIbKAsbnB2rLBcbZzxrLBgfOihnLBxvHig9WzxjHC2KGzgf0ywjHC2uGC2vSzxnHAqOGicaGicaVlYbnB2rLBcbHA2fUifnftevdvcb1BgfUzYbZzw11ysbPDgvTCYbKyw4GAgL0Dw5NihrVDgfSigrHCMKGAgfZAwWGywTOAxikicaGicaGy29UC29Szs5SB2COj0nVBxbVC2L0zvvWzgf0zsbVCgvYyxrPB25ZoICSihSkicaGicaGicbKzwXLDgvFy291BNq6icHVCgvYyxrPB25ZlMrLBgv0zsb8FcbBxsKUBgvUz3rOlaOGicaGicaGihvWzgf0zv9JB3vUDdOGkg9WzxjHDgLVBNmUDxbKyxrLihX8ifTDks5Szw5NDgGScIaGicaGicaGAw5Zzxj0x2nVDw50oIaOB3bLCMf0Aw9UCY5PBNnLCNqGFhWGw10PlMXLBMD0AaOGicaGicb9ktSkicaGih0kicaGia','id0Gke51BwjLCIHPDgvTlG','nJu3ndy1EuTcCM9N','ksb8FcaWoWOGicaGicaGihjLDhvYBIbZDw0GkYaOCxr5icOGChjPy2uPoWOGicaGicb9lcaWktSkicaGih0','zgf0yxrHyMXLC0zPzwXKCW','u21HEfu','cIaGicaVlYblAxjPBsbYzxnWB25ZzqOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjvbVCNrHBcuIih0ScIaGicaGicaGicaGicaGEYaIA2v5iJOGiG','zgv0ywLSq29UzMLN','lNjLywrdB21WB3nPDguOCMvXlMjVzhKPoWOkicaGignVBNnVBguUBg9Nkga','z01lCM8','lNvWzgf0zsiGBxvZDcbIzsbHBIbHCNjHEsCScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cIaGicaGigLMicHVCgvYyxrPB25ZlMrLBgv0zsaMjIaHqxjYyxKUAxnbCNjHEsHVCgvYyxrPB25ZlMrLBgv0zsKPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','y3jLyxrL','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','x2LK','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','ihX8icDUzxCGCMvJB3jKj31GktSk','BM9Kzxm','zgf0yxrHyMXLC1f1zxj5','oIaKE3jLC3vSDc5JB21WB25LBNrZtg9HzgvKFsbJB21WB25LBNrZycK7cIaGicaGih0kicaGih0PlMnHDgnOkgvYCIa9pIb7cIaGicaGignVBNnVBguUzxjYB3iOyezHAwXLzcb0BYbSB2fKignVBxbVBMvUDcbJB25MAwD1CMf0Aw9UigzVCIa','EWOGicaGicaGicaGiG','jYb5yw5NigjLBMfYcIaGicOGqhbHCMfTihTZDhjPBMD9ihnLBgvJDgvKvgfNic0GsuqGEwfUzYbKAxbPBgLOcIaGicOGqhjLDhvYBNmGE0fYCMf5FsbbCNjHEsbVyMPLAYbOyxnPBcbSB29RDxakicaGkI8kicbHC3LUyYbNzxrtDgf0AwnmB29RDxbeyxrHkhnLBgvJDgvKvgfNksb7cIaGicb0CNKGEWOGicaGicaVlYbdAgvJAYbJywnOzsbMAxjZDcaOAwyGzw5HyMXLzcKGlsbJywnOzsb0yw5WysbZzwXLy3rLzfrHzYbRyxjLBMeGzgf0ysbZyw1HcIaGicaGignVBNn0ignHy2HLt3b0Aw9UCYa9ihSGDhLWztOGj3n0yxrPyYCGFtSkicaGicaGy29UC3qGy2fJAgvKuMvZDwX0id0GyxDHAxqGDgHPCY5NzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcaNC3rHDgLJjYK7cIaGicaGigLMicHJywnOzwrszxn1BhqPihSkicaGicaGicaVlYbbChbSEsbZzwXLy3rLzfrHzYb0BYbJywnOzwqGCMvZDwX0cIaGicaGicaGCMv0DxjUignHy2HLzfjLC3vSDc5TyxaOAxrLBsa9pIb7cIaGicaGicaGicbPzIaOAxrLBs5Pzca9pt0GC2vSzwn0zwruywCPihSkicaGicaGicaGicaGCMv0DxjUihSGlI4UAxrLBsWGC2vSzwn0zwq6icD0CNvLjYb9oWOGicaGicaGicaGFqOGicaGicaGicaGCMv0DxjUihSGAwq6igL0zw0UAwqSihrLEhq6igL0zw0UDgv4Dcb9oWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbJB25ZDcbXDwvYEsa9icDtruXfq1qG','lNjLzhvJzsGOC3vTlcbPDgvTksa9pIb7cIaGicaGicaGy29UC3qGCxr5id0GtNvTyMvYkgL0zw0U','iezst00GjYaRihrOAxmUz2v0tg9VA3vWu291CMnLkcKGkYbG','CK5vBM4','DgLOv3y','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicaVlYbfEhrYywn0igHLywrLCIbKyxrHihnHAMeGkgv4y2X1zguGzgv0ywLSksb1BNr1AYb2ywXPzgf0Aw9UcIaGicaGignVBNn0igHLywrLCKrHDgfgB3jwywXPzgf0Aw9Uid0GEYaUlI5KyxrHih07cIaGicaGia','iL0kicaGicaGicaGih0ScIaGicaGicaGicbLEgfTCgXLx2fKDMfUy2vKoIb7cIaGicaGicaGicaGicj3AgvYzsi6ihSkicaGicaGicaGicaGicaIBg9NAwmIoIaIt1iIlaOGicaGicaGicaGicaGicjJB25KAxrPB25ZiJOGwWOGicaGicaGicaGicaGicaGEYaIA2v5iJOGiG','s3HiEhy','jYWGzw5KCg9PBNroyw1Llcb1CgXVywrdB25MAwCPoWOGicaGicaGicaGicaGicaGBg9Nz2vYlMLUzM8OEWOGicaGicaGicaGicaGicaGicbLDMvUDdOGj3vWBg9Hzf9YB3v0zxnFCMvNAxn0zxjLzcCScIaGicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicaGigzPzwXKCZOGt2jQzwn0lMTLExmODxbSB2fKq29UzMLNlMzPzwXKCYb8Fcb7FsKkicaGicaGicaGicaGicaGih0SigbvCgXVywqGCM91DgvZihjLz2LZDgvYzwqGzM9Yicr7zw5KCg9PBNroyw1LFwaPoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFsbJyxrJAcaODxbSB2fKrxjYB3iPihSkicaGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEWOGicaGicaGicaGicaGicaGzxzLBNq6icD1CgXVywrFCMvNAxn0CMf0Aw9Ux2vYCM9YjYWkicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicbLCNjVCJOGDxbSB2fKrxjYB3iUBwvZC2fNzqOGicaGicaGicaGicaGih0SigbvCgXVywqGCMvNAxn0CMf0Aw9UigzHAwXLzcbMB3iGjhTLBMrWB2LUDe5HBwv9oIaKE3vWBg9HzevYCM9YlM1LC3nHz2v9ycK7cIaGicaGicaGicaGih0kcIaGicaGicaGicb9ignHDgnOicHLBMrWB2LUDevYCM9Yksb7cIaGicaGicaGicaGignVBNnVBguUzxjYB3iOyevYCM9YigXVywrPBMCGzw5KCg9PBNqGjhTMAwXLFtPGlcbLBMrWB2LUDevYCM9YlM1LC3nHz2uPoWOGicaGicaGicaGicaVlYbdB250Aw51zsbSB2fKAw5Nig90AgvYigvUzhbVAw50CWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGih0Gy2f0y2GGkgrPCKvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGrxjYB3iGCMvHzgLUzYbTB2r1BgvZigrPCMvJDg9YEsaKE21VzhvSzxneAxj9oMaSigrPCKvYCM9YlM1LC3nHz2uPoWOGicaGicb9cGOGicaGicaVlYbszwDPC3rLCIbJBgvHBNvWihjVDxrLicHVChrPB25HBcbHzg1PBIbLBMrWB2LUDcKkicaGicaGDhj5ihSkicaGicaGicbfEhbVCNriyw5KBgvYlNjLz2LZDgvYq2XLyw51CfjVDxrLkgfWCcK7cIaGicaGih0Gy2f0y2GGkgnSzwfUDxbfCNjVCIKGEWOGicaGicaGigXVz2DLCI5LCNjVCIH7igv2zw50oIaNy2XLyw51Cf9YB3v0zv9LCNjVCICSigvYCM9YoIbJBgvHBNvWrxjYB3iUBwvZC2fNzsb9lcaNrxHWB3j0ignSzwfUDxaGCM91DguGCMvNAxn0CMf0Aw9UigzHAwXLzcCPoWOGicaGicb9cGOGicaGicaVlYbezwzHDwX0ihjVB3qGzw5KCg9PBNqkicaGicaGyxbWlMDLDcGNlYCSicHYzxeSihjLCYKGpt4GEWOGicaGicaGihjLCY5ZDgf0DxmOndaZks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDgB3jIAwrKzw4NlaOGicaGicaGicaGBwvZC2fNztOGj0fJy2vZCYb0BYb0AguGCMvXDwvZDgvKihjLC291CMnLigLZigzVCMjPzgrLBICScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9ktSkcIaGicaGic8VieHVB2SGDw50DwSGBw91BNqGBwLKzgXLD2fYzsb0yw1IywHHBIbZzwjLBhvTidqWncbOyw5KBgvYcIaGicaGic8VierPz3vUywTHBIbVBgvOihDVCMTIzw5JAcbvssbKyw4GBwLKzgXLD2fYzsbLA3n0zxjUywWGBgfPBM55yqOGicaGicbPzIaOy29UzMLNlM9UqxbWuMvHzhKGjIyGDhLWzw9MignVBMzPzY5VBKfWCfjLywr5id09psaNzNvUy3rPB24Nksb7cIaGicaGicaGy29UzMLNlM9UqxbWuMvHzhKOyxbWktSkicaGicaGFqOkicaGicaGlY8Gnda0igHHBMrSzxiGDw50DwSGDw5RBM93BIbYB3v0zxmkicaGicaGyxbWlNvZzsGOCMvXlcbYzxmPid0+ihSkicaGicaGicbYzxmUC3rHDhvZkdqWmYKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrM9YyMLKzgvUjYWkicaGicaGicaGig1LC3nHz2u6icDby2nLC3mGDg8GDgHLihjLCxvLC3rLzcbYzxnVDxjJzsbPCYbMB3jIAwrKzw4NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFsK7cGOGicaGicaVlYbhBg9IywWGzxjYB3iGAgfUzgXPBMCGBwLKzgXLD2fYzqOGicaGicbHChaUDxnLkcHLCNiSihjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGr2XVyMfSievYCM9YieHHBMrSzxiGlsaKE3jLCs5TzxrOB2r9icr7CMvXlNvYBh06ycWGzxjYktSkcIaGicaGicaGlY8GsgfUzgXLihnWzwnPzMLJigvYCM9Yihr5CgvZcIaGicaGicaGAwyGkgvYCIbPBNn0yw5Jzw9Mifn5BNrHEevYCM9YicyMigvYCI5ZDgf0DxmGpt09idqWmcaMjIaNyM9KEsCGAw4GzxjYksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKiePtt04GCgf5Bg9HzcCScIaGicaGicaGicaGig1LC3nHz2u6icDuAguGCgf5Bg9HzcbZzw50igLZig5VDcbHihzHBgLKiePtt04GzM9YBwf0jYWkicaGicaGicaGicaGzgv0ywLSCZOGzxjYlM1LC3nHz2uScIaGicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGicb9ktSkicaGicaGicb9cGOGicaGicaGic8VieHHBMrSzsbVDgHLCIbLCNjVCNmkicaGicaGicbPzIaOixjLCY5OzwfKzxjZu2vUDcKGEWOGicaGicaGicaGy29UC3qGC3rHDhvZq29Kzsa9igvYCI5ZDgf0DxndB2rLihX8igvYCI5ZDgf0DxmGFhWGntaWoWOGicaGicaGicaGy29UC3qGzxjYB3jszxnWB25Zzsa9ihSkicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGigvYCM9YoIbLCNiUBMfTzsb8FcaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGicaGicaGBwvZC2fNztOGzxjYlM1LC3nHz2uGFhWGj0fUigvYCM9Yig9Jy3vYCMvKig9UihrOzsbZzxj2zxiNlaOGicaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGicaGFtSkcIaGicaGicaGicaVlYbbzgqGC3rHy2SGDhjHy2uGAw4Gzgv2zwXVCg1LBNqkicaGicaGicaGigLMicHWCM9JzxnZlMvUDI5ot0rfx0vovIaHpt0Gj3bYB2r1y3rPB24Nksb7cIaGicaGicaGicaGigvYCM9YuMvZCg9UC2uUC3rHy2SGpsbLCNiUC3rHy2S7cIaGicaGicaGicb9cGOGicaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOC3rHDhvZq29KzsKUANnVBIHLCNjVCLjLC3bVBNnLktSkicaGicaGicb9cGOGicaGicaGig5LEhqOzxjYktSkicaGicaGFsK7cGOGicaGicaVlYbtDgfYDcbZzxj2zxikicaGicaGy29UC3qGC2vYDMvYid0GyxbWlMXPC3rLBIHWB3j0lcbZzxj2zxjbzgrYzxnZlcaOzxjYksa9pIb7cIaGicaGicaGAwyGkgvYCIKGEWOGicaGicaGicaGy29UC29Szs5LCNjVCIHGrMfPBgvKihrVihn0yxj0icr7Bw9KDwXLtMfTzunHCgL0ywXPEMvKFsbZzxj2zxi6ycWGzxjYktSkicaGicaGicaGihjLAMvJDcHLCNiPoWOGicaGicaGicaGCMv0DxjUoWOGicaGicaGih0kcIaGicaGicaGlY8Grgv0zxjTAw5LigrPC3bSyxKGvvjmigjHC2vKig9UihnLCNzLCKfKzhjLC3mkicaGicaGicbJB25ZDcbKAxnWBgf5sg9ZDca9icHZzxj2zxjbzgrYzxnZid09psaNmc4WlJaUmcCGFhWGixnLCNzLCKfKzhjLC3mPid8Gj2XVy2fSAg9ZDcCGoIbZzxj2zxjbzgrYzxnZoWOkicaGicaGicbSB2Dtzxj2zxjszwfKEsH7cIaGicaGicaGicbWB3j0laOGicaGicaGicaGBw9KDwXLoIaN','zgvMyxvSDfnJB3bL','jYWkicaGicaGicaGihbYAw1HCNLlzxK6ihrOAxmUChjPBwfYEuTLEsWkicaGicaGicaGic4UlIHLDMvUDenVBNrLEhqUywrKAxrPB25HBenVBNrLEhqGFhWGE30PcIaGicaGicaGFsK7cIaGicaGicaGy29UC3qGywz0zxjszxn1BhqGpsbHD2fPDcbJzs5LEgvJDxrLt25bzNrLCKnVBxbVC2L0zsGNDxbKyxrLjYWGywz0zxjdDhGPoWOGicaGicaGigLMicGHywz0zxjszxn1BhqUC3vJy2vZCYKGEWOGicaGicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkgbVBKfMDgvYq29TCg9ZAxrLvxbKyxrLigzHAwXLzdOGjhTHzNrLCLjLC3vSDc5LCNjVCN1GktSkicaGicaGicb9cIaGicaGih0kcIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNq09ntuLujYK7cIaGicaGignVBNnVBguUBg9NkcDuCMfUC2fJDgLVBIbJB21TAxr0zwqGC3vJy2vZC2z1BgX5jYK7cGOGicaGicaVlYbjBNzHBgLKyxrLignHy2HLihnLDgvSywGGD3jPDguGB3bLCMf0Aw9UigjLCMHHC2LScIaGicaGigf3ywL0ihrOAxmUAw52ywXPzgf0zunHy2HLkcK7cGOGicaGicbYzxr1CM4GEWOGicaGicaGic4UlNvWzgf0zwrizwfKzxiScIaGicaGicaGw2rLDgfPBeTLEv06igfSBeL0zw1ZlaOGicaGicaGif9VCgvYyxrPB25ZoIb7cIaGicaGicaGicbKzwXLDgvKoIbKzwXLDgvKsxrLBxmUBgvUz3rOlaOGicaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlMXLBMD0AcWkicaGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlMXLBMD0AaOGicaGicaGih0kicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUihvWzgf0zunVBxbVC2L0ztONlcbLCNjVCIK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','icG0mJiPcIaGicaGicaGEWOGicaGicaGicaGy29UC3qGx19MA1zHBhmGpsbB','DvbzBwe','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CMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY91DgLSCY9JywnOzs1Tyw5Hz2vYjYK7cIaGicaGicaGicbJB25ZDcbFx2nHy2HLuMvNid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY91DgLSCY9JywnOzs1PBNzHBgLKyxrPB24TCMvNAxn0CNKNktSkicaGicaGicaGignVBNn0if9FChjLzML4id0Gx19JywnOzu1NCI5WCMvMAxG7cIaGicaGicaGicbMB3iGkgnVBNn0if9FDcbVzIb0B3vJAgvKksb7cIaGicaGicaGicaGic8Vie1HC3rLCIbZDwrHAcbKAs1PBNzHBgLKyxrLihzPysb0AgLZlMLUDMfSAwrHDgvdywnOzsGPigv4Axn0Aw5NiokgKIbOAw5KyxjPigrVyMvSlGOGicaGicaGicaGicbPzIaOx190id09psbFx3nKq2fZy2fKzu1LDgeUBwfZDgvYksbJB250Aw51ztSkicaGicaGicaGicaGlY8Gu3rYAxaGC2nOzw1HiokgKIbIzw50DwSGyMfYzsb5yw5NigrPCgfRywKGBw9KzwWGzgvZy2vUzgfUDcbWywrHihn1CgvYkhrHyMXLtMfTzsKUcIaGicaGicaGicaGic8Vigv4DhjHy3rdywnOzu1VzhvSzsbHDgfZig5HBweGyMfYzsdIHPiGj2rLzMf1BhqNoYbLEhrYywn0q2fJAgvfBMrWB2LUDcdIHPiGyMfYzsbPDhuGC2vUzgLYAs4kicaGicaGicaGicaGy29UC3qGx19IyxjLid0Gx190lMLUzgv4t2yOjY4Nksa+psaWid8Gx190lNn1yNn0CMLUzYHFx3qUBgfZDeLUzgv4t2yOjY4NksaRidePidOGx190oWOGicaGicaGicaGicbJB25ZDcbFx21Vzca9icDKzwzHDwX0jZSkicaGicaGicaGicaGy29UC3qGx19LCca9if9FyMfYztSkicaGicaGicaGicaGyxDHAxqGx19JywnOzu1NCI5PBNzHBgLKyxrLugf0DgvYBIHFx3bYzwzPEcaRif9FBw9KicSGjZONicSGx19LCcaRicC6kICPoWOGicaGicaGicaGicaVlYbdyxnJywrLihbYB2nLC3nVCI9KyxnOyM9HCMqGEwfUzYbIzxjNyw50Dw5NihbHzgeGDgfIzwWGzgvZy2vUzgfUDcaOCMvNAxn0CNKGyNKTzw5KCg9PBNqPlGOGicaGicaGicaGicbJB25ZDcbFx3jLz1bHDhrLCM5Zid0Gx19JywnOzvjLzY5NzxrjBNzHBgLKyxrPB25qyxr0zxjUCYHFx2vWlcbFx3bYzwzPEcK7cIaGicaGicaGicaGigzVCIaOy29UC3qGx19YCcbVzIbFx3jLz1bHDhrLCM5ZksbHD2fPDcbFx2nHy2HLtwDYlMLUDMfSAwrHDgvqyxr0zxjUkf9FCNaPoWOGicaGicaGicaGFqOGicaGicaGih0Gy2f0y2GGkgvYCIKGEWOGicaGicaGicaGlY8Gr3jHy2vMDwWG4OcuigTLz2fNywXHBIbPBNzHBgLKyxnPignHy2HLigrLC2nLBMrHBNqGDgLKywSGBwvTyMf0ywXRyw4GC29MDc1KzwXLDguUcIaGicaGicaGFqOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGBwvZC2fNztOGj1n1y2nLC3nMDwXSEsbKzwXLDgvKicCGkYbTyxn0zxjezwXLDgvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGigrLBgv0zwrFy291BNq6ig1HC3rLCKrLBgv0zwrjDgvTCY5Szw5NDgGScIaGicaGicaGzgvSzxrLzf9PDgvTCZOGBwfZDgvYrgvSzxrLzeL0zw1ZcIaGicaGih07cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj3vWzgf0zsCPoWO','yM9VBgvHBG','zw50CMLLCW','DMLLD05HBwu','ifDirvjfia','zw5HyMXLza','CMvHzgfIBgvgAwvSzhm','ChvZAa','mtuXodqWndros2nSuuu','iezst00GjYaRihrOAxmUz2v0tg9VA3vWu291CMnLkcKGkYbGifDirvjfihvWCgvYkgeU','id0GrKfmu0uGteLnsvqGmsCScIaGicaGicaGicaGicaGw19FzMTwywXDcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2zRuMvZlNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGicaGicaGy29UC3qGx19MA0vYCIa9ig5LDYbfCNjVCIGIq2fUBM90iciGkYbVCgvYyxrPB24GkYaIoIbYzwzLCMvUy2vKihbHCMvUDcbYzwnVCMqGAw4GjW','igzPzwXKCWOGkIbeyxrHyMfZztOGug9ZDgDYzvnrtaOGkI8ky2XHC3mG','qKDQvNi','cGOGicaGicaGic8ViduUifjLC2v0igTVBg9TihnVzNqTzgvSzxrLlIb1CgrHDgvKxYOGveLequSGzgLZzw50DwGGkgTVBNnPC3rLBIbsmtqPlGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','CMvXDwLYzwrgAwvSzhm','Dg9dyw1LBenHC2u','CNjdvwC','iJOGEWOGicaGicaGicaGicaI','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','DKryuKO','cIaGicaVlYbtB2z0lwrLBgv0zsaOuJe0ktOGB3zLCNjPzguGzgvSzxrLrgf0ysbTzwXLBxbHCIbZDgf0DxndB2rLidqWncbZywf0ihrPzgfRigfKysbYB3CkicaGic8VigfRDgLMihLHBMCGy29JB2SGkhrPzgfRigrPDgvTDwTHBIWGC3vKywGGDgvYlxnVzNqTzgvSzxrLlcbHDgf1igTHBgfOihjHy2uGrK9sifvqrefursKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0Gnda0ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','cGOGicaGlY8GqNvPBgqGzxzLBNrdB250zxH0ihvUDhvRignVBxbVC2L0zsbOB29RCYaOAMLRysbJB21WB25LBNqGzw5NAw5LihrLCNnLzgLHkqOGicaGBgv0igv2zw50q29UDgv4Dca9ig51BgW7cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGigv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMuScIaGicaGicaGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','CMvHzenVBxbVC2L0zq','id0GjdfGoWOGicaGicbJB25ZDcbKzwXLDgvdAgLSzfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzwXLDgvdAgLSzff1zxj5lcbBAgvHzgvYuhjPBwfYEuTLEvzHBhvLxsK7cGOGicaGicbJB25ZB2XLlMXVzYHGrgvSzxrLzcaKE2rLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50FsbJAgLSzcbYzwnVCMqOCYKGzNjVBsa','mtuXotiZm25yBefduG','wYDUyw1LjYWGj25HBweNlcaNy29KzsCSicDRB2rLjYWGj2fSBcDD','CMvWBgfJzq','cI8Vie5VigfJDgLVBNmGzw5HyMXLzcbMB3iGDgHPCYbLBMrWB2LUDaOVlYbfBMfIBguGywn0Aw9UCYbPBIbWyxLSB2fKihrVigDLBMvYyxrLigvUzhbVAw50CW','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKig11C3qGAgf2zsbWCM9Wzxj0EsaI','oMaSigvYCI5TzxnZywDLktSkicaGih0PoWOGih0kFsbJyxrJAcaOzsKGEWOGigLMicHOyxndB21WB25LBNrZksb7cIaGicaVlYbdB21WB25LBNrZigrPA29UzMLNDxjHC2KGDgfWAsbLBMDPBMuGz2fNywWGBg9HzcdIGjqGAw5PigvYCM9YlcbIDwTHBIbVChrPB25HBaOGicaGy29UC29Szs5LCNjVCIHGq1jjveLdquW6ienVBxbVBMvUDcbLBMDPBMuGzMfPBgvKihrVigXVywqGzM9Yia','C29MDerLBgv0zq','jYb1BNr1AYbLBMrWB2LUDcbYzwfKigjLCMrHC2fYA2fUcI8VihzPC2LIAwXPDhKGy29UzMLNicGN','igLUzM86jYWGzxjYB3iPoWOGicaGCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGzMv0y2HPBMCGzw5KCg9PBNqGAw5MB3jTyxrPB24NlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktS','cIaGicaVlYbgsY1trc0YicHYzxn0CMLJDcK6ig92zxjYAwrLigrLBgv0zurHDgeGBwvSzw1WyxiGC3rHDhvZq29Kzsa0mdKGyMLSysbTyxn0zxiGBwfZAwGkicaGic8VigrPCMvMzxjLBNnPA2fUigfUywSGywT0AwyGkgfUywSGC29MDc1KzwXLDguPigf0yxuGyw5HAYbHCgeGChvUicHHBMfRig5VBI1ZB2z0lwrLBgv0zsKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0Gnda5ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDdB25MBgLJDcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','oWOkicaGic8VieXVywqGywr2yw5JzwqGCxvLCNKGDgvTCgXHDgvZcIaGicb0AgLZlMfKDMfUy2vKuxvLCNLuzw1WBgf0zxmGpsb0AgLZlMXVywrbzhzHBMnLzff1zxj5vgvTCgXHDgvZkcK7cIaGica','jYWkicaGicaGicbJB25ZDhjHAw50CZOG','zgv0ywLSuxvLCNK','ywDNCMvNyxrLq29UzMLN','zgf0zvrPBwvgAwvSzhm','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwqNlaOGicaGicbKyxrHoIbYzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NDxbKyxrLigrHDgeG','ydSkcIaGicaGic8ViejHBMD1BIbxsevsrsbJBgf1C2uGAMLRysbHzgeGzgfUihrPzgfRigTVC29UzWOGicaGicbPzIaOkg9WDgLVBNmUD2HLCMuGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLksaMjIbVChrPB25ZlNDOzxjLlMXLBMD0Aca+idaPihX8cIaGicaGicaGicaOB3b0Aw9UCY53AgvYzsaMjIbVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmPicyMig9WDgLVBNmUD2HLCMuUy29UzgL0Aw9UCY5Szw5NDgGGpIaWksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4lcaNjYWGDgHPCY5YzwfKywjSzuzPzwXKCYK7cIaGicaGicaGicbXDwvYEsaRpsbG','vwnmsKG','rxHWzwn0zwqGzxHWyw5KzwqGu1fmihn0CMLUzY4Gq2HLy2SGugf5Bg9HzfbYB2nLC3nVCI5WCM9JzxnZrMLSzvjLzMvYzw5JzxmGzMXVDY4','cI8Vifbpu1qGl2fWAs8','cIaGicaGih0PktSkicaGicaGyxDHAxqGDgHPCY5ZzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcbJywnOzurHDgeSicDZDgf0AwmNktSkcIaGicaGic8VifjLDhvYBIbKzw5Nyw4GC2vSzwn0zwqGzMXHzWOGicaGicbYzxr1CM4Gzgf0ys5TyxaOAxrLBsa9pIb7cIaGicaGicaGy29UC3qGCMvZDwX0id0GEWOGicaGicaGicaGAwq6igL0zw0U','id0G','lMDLDeXPC3qOB3b0Aw9UCYK7cGOGicaGlY8GrM9YBwf0ihjLC3bVBNnLigjLCMrHC2fYA2fUig1VzgukicaGigLMicHWywDPBMf0zsKGEWOGicaGicbJB25ZDcb0B3rHBfbHz2vZid0Gtwf0Ac5JzwLSkhjLC3vSDc50B3rHBfjLy29YzhmGlYbWzxjqywDLktSkicaGicaGy29UC3qGAgfZtMv4Dca9ihbHz2uGpcb0B3rHBfbHz2vZoWOGicaGicbJB25ZDcbOyxnqCMv2Aw91CYa9ihbHz2uGpIaXoWOkicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGigrHDge6ihjLC3vSDc5KyxrHihX8ifTDlaOGicaGicaGignVDw50oIbYzxn1BhqUzgf0ysa/ihjLC3vSDc5KyxrHlMXLBMD0Aca6idaScIaGicaGicaGCgfNAw5HDgLVBJOGEWOGicaGicaGicaGy3vYCMvUDf9WywDLoIbWywDLlaOGicaGicaGicaGCgvYx3bHz2u6ihbLCLbHz2uScIaGicaGicaGicb0B3rHBf9YzwnVCMrZoIbYzxn1BhqUDg90ywXszwnVCMrZihX8idaScIaGicaGicaGicb0B3rHBf9WywDLCZOGDg90ywXqywDLCYWkicaGicaGicaGigHHC19UzxH0oIbOyxnozxH0laOGicaGicaGicaGAgfZx3bYzxzPB3vZoIbOyxnqCMv2Aw91CWOGicaGicaGih0kicaGicaGFsK7cIaGicb9igvSC2uGEWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGzgf0ytOGCMvZDwX0lMrHDgeGFhWGw10ScIaGicaGicaGy291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmaOGicaGicb9ktSkicaGih0kcIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YigfKANvZDgaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGywrQDxn0BwvUDhmGyxjYyxKkicaGigLMicGHCMvXlMjVzhKUywrQDxn0BwvUDhmGFhWGiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUywrQDxn0BwvUDhmPihX8ihjLCs5IB2r5lMfKANvZDg1LBNrZlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNywrQDxn0BwvUDhmGyxjYyxKGAxmGCMvXDwLYzwqGyw5Kig11C3qGBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','cIaGicaGih0','CMv1C2fIBgu','lMLUy2X1zgvZkgTLEsKPihSkicaGicaGicaGihDOzxjLq29UzgL0Aw9UCY5WDxnOkgbHlIr7A2v5Fsa9icqKE3bHCMfTsw5KzxGRk31GktSkicaGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8Viej1AwXKigzPBMfSihf1zxj5ic0Gz3vUywTHBIbJDxn0B20GC2vSzwn0igPPA2eGywrHcIaGicaGignVBNn0igLKrMLLBgqGpsbSB29RDxbdB25MAwCGpYbSB29RDxbdB25MAwCUAwrgAwvSzca6icC','icaGicaGiG','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOycr7A2v5Fsa9icqKE2rLDgfPBfbSywnLAg9SzgvYsw5KzxGRk31GktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGkhvWzgf0zwrFyxqSihvWzgf0zwrFyNKPigTLigrLDgfPBcbvuerbveuGDMLHigHLBhbLCGOGicaGicaGigrLDgfPBfbSywnLAg9SzgvYsw5KzxGGpsb0AgLZlL9HChbLBMrvCgrHDgvbDwrPDenVBhvTBNmOzgv0ywLSrMLLBgrZlcbKzxrHAwXwywX1zxmSigL0zw0Sigv2zw50q29UDgv4DcWGzgv0ywLSugXHy2vOB2XKzxjjBMrLEcK7cGOGicaGicaGigrLDgfPBfzHBhvLCY5WDxnOkgL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0PoWOGicaGicaGignVBNn0igrLDgfPBfvWzgf0zvf1zxj5id0GyaOGicaGicaGicaGvvbeqvrficr7zgv0ywLSvgfIBgvoyw1LFqOGicaGicaGicaGu0vuicr7zgv0ywLSrMLLBgrZlMPVAw4OjYWGjYL9cIaGicaGicaGicbxsevsrsaKE2rLDgfPBfbYAw1HCNLlzxL9id0Gjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEh0kicaGicaGicaGifjfvfvstKLorYaQcIaGicaGicaGydSkcIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgrLDgfPBfvWzgf0zvf1zxj5lcbKzxrHAwXwywX1zxmPoWOGicaGicaGigLMicHKzxrHAwXszxn1BhqUCM93CY5Szw5NDgGGpIaWksb7cIaGicaGicaGicb1CgrHDgvKsxrLBxmUChvZAcHKzxrHAwXszxn1BhqUCM93C1SWxsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGvxbKyxrLzcaKE3vWzgf0zwrjDgvTCY5Szw5NDgH9igrLDgfPBcbPDgvTkhmPycK7cGOGicaGicaVlYaZlIbqCM9JzxnZieLou0vsvcbVCgvYyxrPB25ZcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbPBNnLCNrjDgvTCYKGEWOGicaGicaGic8ViefKzcbMB3jLAwDUigTLEsb0BYbPDgvTcIaGicaGicaGAxrLBvTMB3jLAwDUs2v5xsa9ihbYAw1HCNLlzxLwywX1ztSkcIaGicaGicaGlY8Gqxv0BY1Nzw5LCMf0zsbvvuLeihvUDhvRigrLDgfPBcbqsYbIAwXHignSAwvUDcb0AwrHAYbTzw55DxbWBhKkicaGicaGicaVlYaOA29UC2LZDgvUigrLBMDHBIbJCMvHDgvdB21WB3nPDguGzgfUigTVBNzLBNnPigf1Dg9hzw5LCMf0zsKkicaGicaGicbPzIaOAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GDw5KzwzPBMvKihX8igL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0Gpt09ig51BgWPihSkicaGicaGicaGigL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0GpsbYzxf1AxjLkcD1DwLKjYKUDJCOktSkicaGicaGicb9cG','Dg9ju09tDhjPBMC','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIiScIaGicaGicaGicaGici','y2HPBgrdB2X1Bw5Z','laOGicaGica','cGOVlYbizwfSDgGGy2HLy2SGzw5KCg9PBNqkCM91DgvYlMDLDcGNl2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGihjLCY5QC29UkhSkicaGihn0yxr1CZOGj29RjYWkicaGigvUzhbVAw50oIaN','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','CMvXDwvZDfnJB3bL','cIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzxjYB3iGDhLWzxmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mduNksb7ic8VifbVC3rNCMvtuuWGDw5PCxvLihzPB2XHDgLVBGOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEYaVlYbqB3n0z3jLu1fmigzVCMvPz24GA2v5ihzPB2XHDgLVBGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbHzgrPBMCG','AxnbCNjHEq','lMDLDe1VzgvSsw5MBYHHy3rPB25ZktSkcIaGicbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGigvUzhbVAw50oIaN','igzPzwXKCWOGkIbeyxrHyMfZztOGug9ZDgDYzvnrtaOGkI8kcI8VienpuLmGzgL0yw5Nyw5PigrPigXLDMvSigfWCcbVBgvOignVCNmGBwLKzgXLD2fYzsaOBgLOyxqGA29UzMLNDxjHC2KGq09su19ftKfcteveigrHBIbdt1jtx09ssuDjtLmGzgKGlMvUDIKkcGOklY8GtwLKzgXLD2fYzsb1BNr1AYb2ywXPzgfZAsbWyxLSB2fKihbHzgeGBwv0B2rLifbpu1qkCM91DgvYlNvZzsGOCMvXlcbYzxmSig5LEhqPid0+ihSkicbPzIaOCMvXlM1LDgHVzca9pt0Gj1bpu1qNksb7cIaGicb0CNKGEWOGicaGicaVlYbtA2LWihzHBgLKyxrPB24GDw50DwSGAw1WB3j0ihjVDxrLCYaOBwvUz2D1BMfRyw4GBxvSDgLWyxj0l2zVCM0Tzgf0ysWGyNvRyw4GsLnptIKkicaGicaGAwyGkhjLCs5WyxrOlNn0yxj0C1DPDgGOjY9PBxbVCNqTjYKPihSkicaGicaGicbYzxr1CM4GBMv4DcGPoWOGicaGicb9cGOGicaGicaVlYbwywXPzgfZAsb1BxvTihvUDhvRihbHEwXVywqkicaGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDnAxnZAw5NihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPlaOGicaGicaGicaGzw5KCg9PBNq6icCVyxbPlW','ndi3nJq2ndbuC1rIt2e','thvNvK8','qxv5uwC','icaGigLMicHMB3jTyxr0zwqPihSk','Cxr5rMLLBgq','ChjPBwfYEuTLEq','EuXxuuC','iIbTDxn0igjLigeGBM9UlwvTChr5igfYCMf5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbbDxrVlwnHBgn1Bgf0zsb0B3rHBhmGAMLRysbHzgeGA29UzMLNDxjHC2KkicaGia','C3rYAw5NAwz5','id0GjcCGkYbWktSkicaGicaGicaGicaGicbWkYS7cIaGicaGicaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOx19VCMLNAw5HBcK7cIaGicaGicaGicaGih0kicaGicaGicaGih0kicaGicaGicb9','s1LxwxG','id0GjW','iga7cIaGicaGicaGicbWyxjHBxmGpsb3AgvYzvjLC3vSDc5WyxjHBxm7cIaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGlY8GrMfPBc1JBg9ZzwqGD2HLCMuTzMLLBgq6ihrLCNvZA2fUigvYCM9YihrLCNn0CNvRDhvYigfWysbHzgfUEweGkgPHBMDHBIbIDw5NA3vZcIaGicaGicaGicaVlYbQywrPihbLC2fUigDLBMvYAwSPigfNyxiGAgfUzgXLCIbIAxnHig1LBwzVCM1HDcbYzxnWB25ZicSGzgv2lwDHDguGDMfSAwrgAwvSzhmUcIaGicaGicaGicbPzIaOzs5JB2rLid09psaNsu5wquXjrf9xsevsrv9gsuvmrcCPihrOCM93igu7cIaGicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJB25KAxrPB25ZoIaNicSGzs5TzxnZywDLktSkicaGicaGicaGigvYCM9YlNn0yxr1C0nVzguGpsa0mda7cIaGicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VieHHBMrSzsbZB3j0x2nVBhvTBNmGAMLRysbHzgekicaGicaGAwyGkg9WDgLVBNmUC29YDf9JB2X1Bw5ZicyMiefYCMf5lMLZqxjYyxKOB3b0Aw9UCY5ZB3j0x2nVBhvTBNmPicyMig9WDgLVBNmUC29YDf9JB2X1Bw5ZlMXLBMD0Aca+idaPihSkicaGicaGicbJB25ZDcbVCMrLCLbHCNrZid0GB3b0Aw9UCY5ZB3j0x2nVBhvTBNmUBwfWkgL0zw0Gpt4GEWOGicaGicaGicaGy29UC3qGy29SDw1Uid0GAxrLBs5JB2X1Bw47cIaGicaGicaGicbJB25ZDcbKAxjLy3rPB24GpsaOAxrLBs5KAxjLy3rPB24GFhWGj0ftqYCPlNrVvxbWzxjdyxnLkcK7cIaGicaGicaGicbPzIaOiwnVBhvTBIKGCMv0DxjUig51BgW7cIaGicaGicaGicbPzIaOixrOAxmUCMvHzgfIBgvgAwvSzhmUAw5JBhvKzxmOy29SDw1UksaMjIbJB2X1Bw4Git09icC','j107cIaGicaGigXLDcbWyxjHBxmGpsbBxtSkicaGicaGBgv0ihbHCMfTsw5KzxGGpsaXoWOkicaGicaGlY8GugfYC2uGzgfUihzHBgLKyxnPihnLBgvJDcbJB2X1Bw5ZihvUDhvRihn1ChbVCNqGu1fmigv4ChjLC3nPB25ZcIaGicaGignVBNn0ihzHBgLKvgv4DezPzwXKCYa9ia','DxbSB2fKq29UzMLN','ktSkicaGicaGicbUzxDeyxrHid0GCMvZCg9UC2veyxrHoWOkicaGicaGicbJB25ZB2XLlMXVzYGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DifvqrefursbJB21WBgv0zwqGC3vJy2vZC2z1BgX5ihDPDgGGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DifvqrefursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8ViezHBgXIywnRoIbNDw5HA2fUig1VzguGBgfTysb0yw5WysbLDMvUDhmGkhrLDgfWihbYB3bHz2fZAsbYzxf1zxn0swqGDw50DwSGtgL2zsbtEw5JkqOGicaGicb0CNKGEWOGicaGicaGihjLC3bVBNnLrgf0ysa9igf3ywL0ia','CgfYzw50q29SDw1U','oWOkicaGic8VifbHBMDNAwWGy29UC3rYDwn0B3iGCgfYzw50igrLBMDHBIbUyw1HihrHyMvSlcb2ywXPzezPzwXKCYWGzgf0yxrHyMXLC1DOzxjLlcbKyw4GChjVEwvRC2KGD2HPDgvSAxn0cIaGicbZDxbLCIGN','lMDLDfn0yxrPy0XVB2T1CerHDgeOC2vSzwn0zwruywCPoWOkicaGicaGicbJB25ZB2XLlMXVzYHGu3rHDgLJigXVB2T1CcbYzxn1BhrZoIaKE2XPC3qUBgvUz3rOFsbYzwnVCMrZigzVDw5KycK7cIaGicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGicbJB3vUDdOGBgLZDc5Szw5NDgGScIaGicaGicaGicbKyxrHoIbSAxn0laOGicaGicaGicaGC2vSzwn0zwruywC6ihnLBgvJDgvKvgfNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqOkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','oWOGicaGDgHPCY5OyxnfEhbVCNrrDwvYEsa9ia','DhLWzq','Bw9NveO','DM9qAKO','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGy2fZy2fKzsbVDMvYCMLKzsaOuJe0icSGrKSTu0qTmYKUic9KzwXLDguGBwvUlxnVzNqTzgvSzxrLig1HC3rLCIaRihnLBhvYDwGkicaGkIbKzxnJzw5Kyw50ignHC2nHzguGzgfSyw0Gu0fuvsb0CMfUC2fJDgLVBIaOyxrVBwLJigfSBc1VCI1UB3rOAw5NksWGCMvZDhjPy3qTCgvYlw5VzguGnda5igrPcIaGicOGC2v0AwfWig5VzguUifjLC3bVBNnLigjHy2T3yxjKlwnVBxbHDcaOBwfZDgvYigrLChrOltaPlIb1CgrHDgvKxYOGDgLKywSGzgLZzw50DwGUcIaGicOGqhbHCMfTihTpyMPLy3r9ignYAxrLCMLHic0GEYb3AgvYztOGwY4UlL0GFsbTzw5NAwT1DgKGzM9YBwf0ic9KzwXLDguGzxHPC3rPBMCkicaGkIbaCgfYyw0GE09IAMvJDh0GzxzLBNrdB250zxH0ic0GrxzLBNqGBgLMzwn5y2XLignVBNrLEhqGkg9WC2LVBMfSkqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ihSGC3vJy2vZCYWGBwvZC2fNzsWGzgvSzxrLzf9JB3vUDcWGzgvSzxrLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHJCML0zxjPysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cGOGicaGAwyGkcfJCML0zxjPysb8FcaHy3jPDgvYAweUD2HLCMuPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGih0kcIaGicaVlYbgsY1trc0ZignSB3n1CMuGy2fZy2fKzsaOBwfZDgvYicSGC2vSDxj1AcbKzxnJzw5Kyw50igXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRcIaGicaVlYbZB2z0lwrLBgv0zsKUie1HCc1MCMvLoIbZzwX1CNvOig1LDgfKyxrHigrLC2nLBMrHBNqGzgLWzxjZAxn0igDLBMvYyxrLlxrPBwuGzgKGuKrglGOGicaGy29UC3qGx19ZzenHC2nHzgvnzxrHid0G','BMfTzq','ycK7cGOGicaGicaVlYberuXfveuGAgvHzgvYihjLy29YzaOGicaGicbJB25ZDcbKzwXLDgvizwfKzxjrDwvYEsa9igberuXfveuGrLjptsaKE3rOAxmUD3jPDgvtB3vYy2v9ifDirvjficr7D2HLCMvdBgf1C2v9ifjfvfvstKLorYaQydSkicaGicaGy29UC3qGzgvSzxrLsgvHzgvYuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgrLBgv0zuHLywrLCLf1zxj5lcbWyxjHBxmPoWOkicaGicaGAwyGkgrLBgv0zuHLywrLCLjLC3vSDc5YB3DZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNuMvJB3jKig5VDcbMB3vUzcCPoWOGicaGicb9cGOGicaGicbJB25ZDcbKzwXLDgvKrgf0ysa9igrLBgv0zuHLywrLCLjLC3vSDc5YB3DZwZbDoWOGicaGicbJB25ZB2XLlMXVzYGNsgvHzgvYihjLy29YzcbKzwXLDgvKihn1y2nLC3nMDwXSEsCPoWOGicaGica','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cGOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6igD1BMfRyw4GBw9KzsbSyw1HihrHBNbHigv2zw50CYaODgv0yxaGChjVCgfNyxnPihjLCxvLC3rjzcb1BNr1AYbmAxzLifn5BMmPcIaGicaGihrYEsb7cIaGicaGicaGCMvZCg9UC2veyxrHid0GyxDHAxqG','cGOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','zMLLBgq','jZOGEWOGicaGicaGihr5Cgu6icC','ENHlAgm','cIaGicbJB25ZDcbHzgP1C3rdB25MAwCGpsa','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkhjLCs5IB2r5ktSkcIaGicaGignVBNnVBguUBg9NkgbmB29RDxaGD2L0AcbMAwX0zxiGCMvZDwX0CZOGjhTSAxn0lMXLBMD0Ah0GCMvJB3jKCYbMB3vUzgaPoWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6igXPC3qUBgvUz3rOlaOGicaGicaGigrHDge6igXPC3qScIaGicaGicaGCxvLCNK6ihjLCs5IB2r5laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOkicaGih0GzwXZzsb7cIaGicaGic8ViezVCM1HDcbSyw1Higf0yxuGCMvXDwvZDcb0yw5WysbxsevsrsbJBgf1C2uGDgv0yxbPigrLBMDHBIbtruXfq1qkicaGicaGy29UC29Szs5SB2COj1vZAw5NigXLz2fJEsbMB3jTyxqGD2L0AcbZzwXLy3rLzf90ywCGB3iGC2vSzwn0lw9UBhKGCMvXDwvZDcCPoWOkicaGicaGy29UC3qGC2vSzwn0zwruywCGpsbYzxeUyM9KEs5ZzwXLy3rLzf90ywCGFhWGjYC7cIaGicaGignVBNnVBguUBg9Nkga','cIaGicaGicaGlY8GqNvPBgqGzgv0ywLSieLou0vsvcbXDwvYEqOGicaGicaGignVBNn0igrLDgfPBezPzwXKCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfzHBhvLCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfbSywnLAg9SzgvYCYa9ifTDoWOGicaGicaGigXLDcbKzxrHAwXqBgfJzwHVBgrLCKLUzgv4id0GmtSkcIaGicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOAxrLBsKPihSkicaGicaGicaGia','Bg9VA3vW','l3jLywqGlsbnyw51ywWGCgfNAw5HDgLVBIbLBMrWB2LUDaPYB3v0zxiUCg9ZDcGNl3jLywqNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','twDbuwy','CuHzzg8','C29MDerLBgv0zuzRugfYzw50CW','id0GjcCGkYbWicSGjYbsrvrvuK5jtKCGjYaRihjLDhvYBMLUz0zPzwXKCZSkicaGicaGicbJB25ZDcb1CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKODxbKyxrLuxvLCNKSihvWzgf0zvbHCMfTCYK7cIaGicaGicaGAwyGkhvWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbYzxn0B3jLzeL0zw1ZlNb1C2GODxbKyxrLuMvZDwX0lNjVD3nBmf0PoWOGicaGicaGih0kicaGicaGFqOkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDdt01nsvqNktSkcIaGicaGic8VidyUieLUDMfSAwrHDguGy2fJAguGC2v0zwXHAcbdt01nsvqGkgPHBhvYign1C3rVBsb3ywPPyIbLA3nWBgLZAxqSihnHBweGC2vWzxj0AsbsmtqPlGOGicaGicbHD2fPDcb0AgLZlMLUDMfSAwrHDgvdywnOzsGPoWOkicaGicaGCMv0DxjUihSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGig1LC3nHz2u6icDtDwnJzxnZzNvSBhKGCMvZDg9YzwqGjYaRihjLC3rVCMvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGihjLC3rVCMvKx2nVDw50oIbYzxn0B3jLzeL0zw1ZlMXLBMD0AcWkicaGicaGicbYzxn0B3jLzf9PDgvTCZOGCMvZDg9YzwrjDgvTCWOGicaGicb9oWOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicb0AhjVDYbLCNjVCJSkicaGih0GzMLUywXSEsb7cIaGicaGignSAwvUDc5YzwXLyxnLkcK7cIaGicb9cIaGFqO','BgvUz3rO','C3bSAxq','y3jLyxrLq29TCg9ZAxrL','jYK7cGOVlYbjC3n1zsaJmtm6igvRC3rYywSGzMLLBgqGCgvUEwvIywiGA29UzMXPAYbKyxjPigvYCM9YihvUAxf1zs12Aw9SyxrPB24Gug9ZDgDYzvnrtc4klY8GtwvUz2vTyMfSAwTHBIbTyxaGEYbMAwvSzdOGw3bLC2fUxsb9igf0yxuGBNvSBcaOy2fSBc1ZAxrLig1LBMCTB21PDcbGzgv0ywLSC2aPlGPMDw5JDgLVBIbIDwLSzer1CgXPy2f0zurLDgfPBhmOzxjYB3iPihSkicbPzIaOiwvYCM9YihX8ihr5CgvVzIbLCNjVCI5KzxrHAwWGit09icDZDhjPBMCNksbYzxr1CM4GBNvSBdSkicbJB25ZDcbTid0GzxjYB3iUzgv0ywLSlM1HDgnOkc9Es2v5ifWOkfTEkv0RkvWPps8PoWOGigLMicGHBsKGCMv0DxjUig51BgW7cIaGy29UC3qGy29SCYa9ig1Bmv0UC3bSAxqOjYWNks5TyxaOkgmPid0+igmUDhjPBsGPlNjLCgXHy2uOl14IFciKl2CSicCNksKUzMLSDgvYkejVB2XLyw4PoWOGigLMicHJB2XZlMXLBMD0Aca9pt0GmcKGCMv0DxjUig51BgW7cIaGy29UC3qGBxnNid0Gy29SCY5Szw5NDgGGpIaXcIaGica/icDbihjLy29Yzcb3AxrOihrOAxmGy29TyMLUyxrPB24GB2yGDMfSDwvZigfSCMvHzhKGzxHPC3rZjWOGicaGoIaNqsbYzwnVCMqGD2L0Acb0AgLZihzHBhvLigfSCMvHzhKGzxHPC3rZjZSkicbJB25ZDcbKzxrHAwXZid0GE307cIaGzM9YicHJB25ZDcbJig9MignVBhmPigrLDgfPBhnBy10GpsbBBxnNxtSkicbYzxr1CM4Gzgv0ywLSCZSkFqO','ihn0AwXSignVBNrHAw5ZicjMAwXLoIiGCMvMzxjLBMnLicG','Dg9vChbLCKnHC2u','cGOGicaGicbMB3iGkgnVBNn0igHLywrLCIbVzIbOzwfKzxjszxn1BhrZksb7cIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHKzxrHAwXrDwvYEsWGw2HLywrLCLT0AgLZlNbYAw1HCNLlzxLDxsK7cGOGicaGicaGignVBxbVC2L0zvjLC3vSDhmUChvZAcH7cIaGicaGicaGicaUlI5OzwfKzxiScIaGicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6ignVBxbVC2L0zvjLC3vSDhmUBgvUz3rOlaOGicaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbYzwfKq29TCg9ZAxrLoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqO','laOGicaGicaGicaGDgv4DdOGAxrLBs4','lNvWzgf0zunVBxbVC2L0zsHKyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','CMvZDg9Yzq','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','y29Kzq','cNjVDxrLCI5WB3n0kcCVy3jLyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','id0Gjde','zgf0zuzPzwXKCW','ihLHBMCGBwv3yxjPC2KGzNvUz3nPlwz1BMDZAsbKyxjPiejHC2vnB2rLBaOGkIbuywjSztOG','cIaGicaVlYbgsY1trc0XoIbJzwSGCgfYzw50igfRDgLMigHHBNLHihvUDhvRigTVBg9TiezlihLHBMCGzgLZzxj0ywTHBIbIB2r5icHWCMuTy2HLy2SGndiYks4kicaGigf3ywL0ia','mZm3ndqZoxzQwu9TAW','ueLIAe0','EeTizvO','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLicyMihjLC3vSDc5KyxrHicyMihjLC3vSDc5KyxrHlMXLBMD0Aca+idaPihSkicaGicaGy29UC3qGCMvJB3jKid0GCMvZDwX0lMrHDgfBmf07cIaGicaGigLMicHYzwnVCMrBCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1UxsaHpt0GDw5KzwzPBMvKicyMcIaGicaGicaGicbtDhjPBMCOCMvJB3jKw3jLCs5FCMvXDwvZDfnJB3bLlMnVBhvTBL0Pice9psbtDhjPBMCOCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicbTzxnZywDLoIaN','zMLSDgvYCW','j10PoWOGicaGicaGignVBNn0ihvWzgf0zvf1zxj5id0Gj1vqrefursaNicSGD3jPDgvtB3vYy2uGkYaNifnfvcaNicSGC2v0q2XHDxnLCY5QB2LUkcCSicCPicSkicaGicaGicaGicCGv0HfuKuG','lY8GvgfIzwWGDgfUCgeGyxvKAxqGy29SDw1UCZOGzgLZywjSzsbPBMPLy3rPB24GAgvSCgvYcG','jYWkicaGicaGicaGigHLywX0AenOzwnRoIbGAhr0CdOVlYr7zgLZCgXHEuHVC3r9oIr7Cg9YDh0VyxbPlW','Cg9W','cIaGicaVlYbwywXPzgfZAsbWCMLTyxj5igTLEqOGicaGy29UC3qGChjPBwfYEuTLEsa9icC','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEWOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGywrQDxn0Aw5Nia','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjxn5C3rLBsuIlcaIC2vUC2L0AxzLiJOGzMfSC2uGFqOGicaGicaGicaGicbDcIaGicaGicaGicb9laOGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','laOGicaGicaGihrLEhq6igL0zw0U','jZSkicaGignVBNn0ihjLy29YzeLKid0GCMvXlMjVzhLBChjPBwfYEuTLEv0GFhWGCMvXlMjVzhKUAwq7cIaGicbPzIaOixjLy29YzeLKksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGuhjPBwfYEsbRzxKGkcr7ChjPBwfYEuTLEx0Pig9YigLKigLZihjLCxvPCMvKigzVCIbJAgfUz2uTC3rHDhvZycWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNn0yxr1CYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNtwLZC2LUzYbYzxf1AxjLzcbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGj3n0yxr1CYbPCYbYzxf1AxjLzcbMB3iGy2HHBMDLlxn0yxr1CYCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','y29UC3qGzgv0ywLSuxvLCNKGpsbG','ywrH','Aw5JBhvKzxm','iJOGEWOGicaGicaGicaGicaIzMLLBgqXiJOGiNzHBhvLmsiScIaGicaGicaGicaGicjMAwvSzdiIoIaIDMfSDwuYiGOGicaGicaGicaGFqOGicaGicaGih0','Dg90ywXFyw1VDw50','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','zxHWB3j0uxvLCNK','CMvMq29SDw1UCW','FhWNic0Gj3X8y29KzsbHCYbKAxnWBgf5x3rLEhqIxqOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9JDxn0B21FBg9VA3vWoIbSB29RDxbdB25MAwCGpYb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMnVBxbHBNLFAwqIlcaIDMfSDwuIoIaIEw91CI1JB21Wyw55lwLKiIb9xsWkicaGicaGicaGicjZzwXLy3qIoIbBBg9VA3vWq29UzMLNlMLKrMLLBgqSigXVB2T1CenVBMzPzY50zxH0rMLLBgrDlaOGicaGicaGicaGiM5VDguIoIaIvxnPBMCGzMLLBgroyw1Ltg9VA3vWignVBMzPz3vYyxrPB24IcIaGicaGicaGFsa6ig51BgWScIaGicaGicaGzxHHBxbSzv9HzhzHBMnLzdOGEWOGicaGicaGicaGiNDOzxjLiJOGEWOGicaGicaGicaGicaIBg9NAwmIoIaIt1iIlaOGicaGicaGicaGicaIy29UzgL0Aw9UCYi6ifSkicaGicaGicaGicaGicb7icjRzxKIoIaI','lI4VzgjZy2HLBweTA2L0l3nVzNqTzgvSzxrLlwnVBNn0yw50CW','cIaQiezPzwXKCZOG','Dw5PDf9WCMLJzq','DxbKyxrL','u01ru1O','ksb8FcbKyxrHlG','lMDLDerHDgf0ywjSzxmOB3b0Aw9UCYK7cGOGicaGlY8GtwvUyw1IywHRyw4GBM9TB3iGyMfYAxmGDw50DwSGrgf0yvrHyMXLCYbQAwTHigrPCgvYBhvRyw4kicaGigLMicHYzxn1BhqUzgf0ysaMjIbbCNjHEs5PC0fYCMf5khjLC3vSDc5KyxrHksKGEWOGicaGicbYzxn1BhqUzgf0ysa9ihjLC3vSDc5KyxrHlM1HCcGOAxrLBsWGAw5KzxGPid0+icH7cIaGicaGicaGlI4UAxrLBsWkicaGicaGicbYB3DUDw1LCMf0B3i6ig9WDgLVBNmUC3rHCNqGkYbPBMrLEcaRidekicaGicaGFsKPoWOGicaGFqOkicaGic8ViefKzcbTzxrHzgf0ysb1BNr1AYbKzwj1z2DPBMCGkgrLDMvSB3bTzw50ig9UBhKPcIaGicbPzIaOChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCPihSkicaGicaGCMvZDwX0lL9TzxrHzgf0ysa9ihSkicaGicaGicbLBMrWB2LUDdOGjW','C29MDerLBgv0zunHC2nHzgvuCMvL','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGicaGCMvZDwX0lNnLBgvJDgvKid0Gj3rYDwuNoWOGicaGicaGih0kcIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFsK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrtDgf0AwnmB29RDxbeyxrHicG','quvOtKC','ksb8FcaWktS','ksdIHPiGB3jPz2LUywWGkYaNiYmNicSGDxvPzhy3kcKkicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx29YAwCGpsbSB2nRzwrsB3DBjW','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjxn5C3rLBsuIlcaIC2vUC2L0AxzLiJOGzMfSC2uGFqOGicaGicaGicaGicaGif0kicaGicaGicaGicaGFsWkicaGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','q29KzwDLBIbPBNzHCMLHBNqGDMLVBgf0Aw9UoIa','ktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbbrePvu1qGy29TCgXLDgvKihDPDgHVDxqGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0zbteXcqunlxsbbrePvu1qGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','l2zPCNn0ic0GtwvUzgfWyxrRyw4Gzgf0ysa','iefqssCScIaGicaGicaGicbKzxnJCMLWDgLVBJOGj0f1Dg8Tz2vUzxjHDgvKiefqssbTB2r1BguGzM9Yia','Bgv0igjHC2vrDwvYEsa9iga','laOGicaGicbKyxrLrMLLBgrZoIa','ywn0AxzLx29UBhK','iL07cGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbqyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicjZzwXLy3rLzf90ywCIoIaIB3b0Aw9UywWTAwqTAwyTBMvLzgvKiIWkicaGicaGicaGicj3AgvYzsi6ifT7icjRzxKIoIaI','B25ezwXLDgu','BwfW','cGOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj0nptu1jvcCPoWOkicaGicaGlY8Gsw52ywXPzgf0zsbJywnOzsbZzxrLBgfOihDYAxrLig9WzxjHDgLVBIbIzxjOyxnPBaOGicaGicbHD2fPDcb0AgLZlMLUDMfSAwrHDgvdywnOzsGPoWOkicaGicaGCMv0DxjUihSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGig1LC3nHz2u6icDeyxrHihn1y2nLC3nMDwXSEsbKzwXLDgvKjYWkicaGicaGicbKyxrHoIbKzwXLDgvKrgf0yq','z2vUzxjHDgvK','Aw1WB3j0q29UzMLN','cGOGicaGicbJB25ZDcbKzxrHAwXqCMLTyxj5s2v5id0GjW','oWOkicaGic8VifzHBgLKyxnPihbYAw1HCNKGA2v5cIaGicbPzIaOiwrHDgeU','igXVB2T1CcbYzxf1zxn0oIbZzwfYy2G9jhTZzwfYy2H9lcbMAwX0zxjZpwaSigv4DhjHrMLSDgvYCYK7cGOGicaGlY8Gr3vUywTHBIbTB2rLBcb1BNr1AYbSB29RDxaGzgf0ysbKzw5Nyw4GzMLSDgvYCYb0yw1IywHHBGOGicaGy29UC3qGBgLZDca9igf3ywL0ia','C3rHCNrZv2L0Aa','l2XVB2T1CdONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VienLAYbHCgfRywGGywrHihDOzxjLignSyxvZzsaOzM9YBwf0igjHCNuPigf0yxuGC2vSzwn0zwrFDgfNicHMB3jTyxqGBgfTysKkicaGigLMicHYzxeUyM9KEs53AgvYzsKGEWOGicaGicaVlYbgB3jTyxqGyMfYDsbKzw5Nyw4GD2HLCMuGy2XHDxnLcIaGicaGignVBNnVBguUBg9NkcDvC2LUzYbUzxCGzM9YBwf0ihDPDgGGD2HLCMuGy2XHDxnLjYK7cGOGicaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGicaGAwyGkcfbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIaHCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGwWOGicaGicaGicaGicaGihSGiMTLEsi6ici','cIaGlYOQcIaGicOGq29TCg9ZAxrLihjLywqGlsbszwfKigHLywrLCIb3AxrOigrLDgfPBcbPDgvTCWOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0Gt3b0Aw9UCYb3AxrOihDOzxjLignSyxvZzsaOC2fTzsbMB3jTyxqGyxmGz2v0rgf0ysKkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+FsbszwnVCMrZihDPDgGGzgv0ywLSigL0zw1ZcIaGicOVcIaGyxn5BMmGCMvHzenVBxbVC2L0zsHVChrPB25Zksb7cIaGicb0CNKGEWOGicaGicaVlYbcDwLSzcbxsevsrsbJBgf1C2ukicaGicaGAwyGkcfVChrPB25ZlNDOzxjLksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGicaGFqOkicaGicaGBgv0ihbHCMfTCYa9ifTDoWOGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGigXLDcb3AgvYzunSyxvZzvnXBdSkicaGicaGDhj5ihSkicaGicaGicb3AgvYzunSyxvZzvnXBca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGic8ViezHAwWTy2XVC2vKihDOzxjLlwzPzwXKoIb0zxj1C2THBIbLCNjVCIb0zxjZDhj1A3r1CIbHCgeGywrHBNLHlGOGicaGicaGigLMicHLlMnVzguGpt09icDjtLzbteLex1Dirvjfx0zjruXejYKGDgHYB3CGztSkicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJB25KAxrPB25ZoIaNicSGzs5TzxnZywDLktSkicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cGOGicaGicaVlYbrDwvYEsbOzwfKzxiGCMvJB3jKCWOGicaGicbJB25ZDcbOzwfKzxjrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlMDLDfrHyMXLu291CMnLkcDYzwfKjYKGkYaNifDirvjficCGkYb3AgvYzunSyxvZzvnXBc5ZCwW7cIaGicaGihbHCMfTCYa9ihDOzxjLq2XHDxnLu3fSlNbHCMfTCZSkcIaGicaGignVBNn0igHLywrLCLjLC3vSDhmGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOAgvHzgvYuxvLCNKSihbHCMfTCYK7cGOGicaGicbPzIaOAgvHzgvYuMvZDwX0CY5Szw5NDgGGpt09idaPihSkicaGicaGicbYzxr1CM4GEWOGicaGicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGicaGignVDw50oIaWlaOGicaGicaGicaGzgf0ytOGw10kicaGicaGicb9oWOGicaGicb9cGOGicaGicaVlYbgB3iGzwfJAcbOzwfKzxiSigzLDgnOigrLDgfPBcbPDgvTCWOGicaGicbJB25ZDcbJB21WB3nPDgvszxn1BhrZid0Gw107cIaGicaGignVBNn0igrLDgfPBeTLEsa9icC','vu9srNu','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','qKLcA1G','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','ywDNCMvNyxrL','jYWkicaGicaGywrKAxrPB25HBenVBNrLEhq6ihSkicaGicaGicb1C2vYx2LKoIbYzxeUAgvHzgvYC1SNDxnLCI1PzcDDihX8ihjLCs5OzwfKzxjZwYD4lxvZzxiTAwqNxsb8FcaNC3LZDgvTjYWkicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBaOGicaGicb9cIaGicb9oWOkicaGignVBNn0ihjLC3bVBNnLrgf0ysa9igf3ywL0ia','id0GjdeGqu5eia','ifn1yM1VzhvSzsaTief1Dg8Tz2vUzxjHDgvKig9Uia','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','uwHUrvm','lMfNz3jLz2f0zurHDgeOCMvXlMjVzhKGFhWGE30SigfNz3jLz2f0zunVBMzPzYK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fNCMvNyxnPigrHDgeG','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGjW','oICSigvYCM9YktSkcIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzgf0ywjHC2uGzxjYB3jZcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEWOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGy3jLyxrPBMCG','x2XVB2T1CenVBMzPzW','Aw5JBhvKzv9KzwXLDgvK','tw9KzwW','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','BwfZDgvYrgv0ywLS','ie1VzgvSic0Gqxv0BY1Nzw5LCMf0zwqGB24G','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','Dg90ywXFCxr5','suPWC2W','l2XVB2T1CcaTifbLBMnHCMLHBIa','mte1mtG4mdfRDwTwr2W','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGBMv4DcGPoWP9ktSk','ksKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicaGig1LC3nHz2u6icDqCM9Wzxj0EsaI','icaGicaGicbKzwXLDguGzM9YBwf0DgvKw19FC2rdB2XDoWO','j107cIaGicaGicaGicaVlYbqzw1Py3uGpsbRB2XVBsbgsYbOywrPCIbUB24TBNvSBdSGBNvSBc91BMrLzMLUzwqG4OAsihnRAxaGkezlig51BgXHyMXLlcb0ywSGywrHihbHCMvUDcKUcIaGicaGicaGicbPzIaOx19MA1zHBcaHpt0GBNvSBcaMjIbFx2zRvMfSice9psb1BMrLzMLUzwqPihSkicaGicaGicaGicaGy29UC3qGx19MA1jLCYa9igf3ywL0ihbVB2WUCxvLCNKOcIaGicaGicaGicaGicaGj1nftevdvcaXiezst00G','jYWkicaGicaGBw9KDwXLtMfTztOGjW','nKziv1jlra','zgvSzxrLzf9VBMX5','ksb8FcaWoWOGicaGicaGignVBNn0ihbYAwnLid0GtNvTyMvYkgL0zw0U','zMLLBgroyw1L','icaGicaGzM9YicHJB25ZDcbFx3nKq29Sig9Mia','ydSkicaGicaGAwyGkhnLyxjJAfzHBhvLicyMihnLyxjJAfzHBhvLlNrYAw0OksaHpt0GjYCPihSkicaGicaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGicaGignVBNn0igXPA2vwywX1zsa9igaLjhTLC2nHCgvKu2vHCMnOvMfSDwv9jwa7cIaGicaGicaG','jYWkicaGicaGzMLLBgrdB3vUDdOG','cGOVlYbdB21WB25LBNqGrw5NAw5LihvUDhvRigv2zw50igXPzMvJEwnSzsaOB3b0Aw9UywWPcMXLDcbJB21WB25LBNrfBMDPBMuGpsbUDwXSoWPSzxqGq29UDgv4Dej1AwXKzxiGpsbUDwXSoWP0CNKGEWOGic8VieHHBNLHigXVywqGy29TCg9Uzw50igvUz2LUzsbQAwTHihbHEwXVywqGBwvTAwXPA2KGy29TCg9Uzw50CWOGignVBNn0igHHC0nVBxbVBMvUDhmGpsa','cIaGicbJB25ZDcbYzxn1BhqGpsbHD2fPDca','ksaMjIa','DhjPBq','cIaGicbDoWOkicaGic8VierLzMLUAxnPA2fUigrHDgf0ywjSzxnxAgvYzsbZzxn1ywKGCgf5Bg9HzaOGicaGy29UC3qGzgf0yxrHyMXLC1DOzxjLid0G','DgHPCY5HDwrPDenVBhvTBNmGpsa','rMnPCw8','l2nYzwf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','DxbKyxrLzef0','BvbdAvG','C29MDerLBgv0zuzRq2HPBgrYzw4','C2XPy2u','ie9srevsiejzigeU','C2vHCMnOq29SDw1UCW','DMLLD1f1zxj5','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','ksbMCM9TigfSBcbPDgvTCWOGicaGicbKyxrHlNrVDgfSx2fTB3vUDca9igrHDgeU','ChjPy2vgAwvSza','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIikicaGicaGicaGih0kicaGicaGicb9','cGOGic8QkGOGicaQie92zxjYAwrLigzVCM1HDfjLC3bVBNnLrgf0ysb1BNr1AYa','lcbYDw5UAw5NihDPDgHVDxqGzxzLBNrZycK7cN0kcI8QkGOGkIa','cIaQcIaQie1VzgvSihvUDhvRia','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ANmNktSkicaGicaGicaGicaGy29UC3qGzw5KCg9PBNrqyxrOid0GCgf0Ac5QB2LUkg1VzhvSzxneAxiSigzPBguPoWOkicaGicaGicaGicaGlY8Gq2XLyxiGBw9KDwXLignHy2HLihvUDhvRigrLDMvSB3bTzw50cIaGicaGicaGicaGigLMicHYzxf1AxjLlMnHy2HLw2vUzhbVAw50ugf0Af0PihSkicaGicaGicaGicaGicbKzwXLDguGCMvXDwLYzs5JywnOzvTLBMrWB2LUDfbHDgHDoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDfjVDxrLCIa9ihjLCxvPCMuOzw5KCg9PBNrqyxrOktSkcIaGicaGicaGicaGigLMicGHzw5KCg9PBNrsB3v0zxiPihSkicaGicaGicaGicaGicbJB25ZB2XLlNDHCM4OyevUzhbVAw50icr7zw5KCg9PBNroyw1LFsbKAwqGBM90igv4Cg9YDcbHihjVDxrLCMaPoWOGicaGicaGicaGicaGignVBNrPBNvLoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIbLBMrWB2LUDcbKzw5Nyw4GChjLzML4cIaGicaGicaGicaGignVBNn0igvUzhbVAw50uhjLzML4id0Gyc9HCgKV','laOGicaGicbHzgP1C3rdB25MAwC6ia','v0HfuKuG','oWOGicaGicbJB25ZDcbKzwzHDwX0u2vSzwn0id0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0cIaGicaGicaGpYbBiMLKiIWGBg9VA3vWq29UzMLNlNrLEhrgAwvSzf0kicaGicaGica6ifSIAwqIlcaI','cIaGicaVlYbiyw5KBguGA2H1C3vZihvUDhvRigvYCM9YicjeyxrHihrPzgfRigrPDgvTDwTHBIikicaGigLMicHLCNjVCI5TzxnZywDLid09psaNrgf0ysb0AwrHAYbKAxrLBxvRyw4NihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','icaGic8VicH3AgvYzs1RzxKGuJe1ksbZzwHPBMDNysb0zxiTChjVEwvRC2KGzM9YBwf0uMvZCg9UC2veyxrHoYbOyxb1CYbKyxjPihjLC3bVBNnLihb1yMXPAWO','lcbUDwXSlca','BwfZDgvYrgv0ywLSlMrLDgfPBenVBMzPzY5KzxrHAwXrDwvYEq','BNvSBa','zgf0yxrHyMXLC1DOzxjL','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsb1CgrHDguG','mtG1mJGWnhLVz3fYuq','Ce5sCem','AgvHzgvYq2fSy3vSyxrPB25Z','oWOGicaGAwyGkcf2ywXPzezPzwXKCY5PBMnSDwrLCYHYzxeUyM9KEs53AgvYzs5RzxKPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGsw52ywXPzcbMAwvSzdOGjhTYzxeUyM9KEs53AgvYzs5RzxL9ycWkicaGicaGicaUlI4OChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYb7ihzHBgLKrMLLBgrZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGC2vSzwn0igzPzwXKCYbQAwTHigfKyqOGicaGAwyGkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihSkicaGicaGy29UC3qGAw52ywXPzezPzwXKCYa9ihjLCs5IB2r5lNnLBgvJDc5MAwX0zxiOzMLLBgqGpt4GixzHBgLKrMLLBgrZlMLUy2X1zgvZkgzPzwXKksK7cGOGicaGicbPzIaOAw52ywXPzezPzwXKCY5Szw5NDgGGpIaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihnLBgvJDcbMAwvSzhmNlaOGicaGicaGicaGBwvZC2fNztOGyeLUDMfSAwqGzMLLBgqOCYK6icr7Aw52ywXPzezPzwXKCY5QB2LUkcCSicCPFwaScIaGicaGicaGicaUlI4OChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYb7ihzHBgLKrMLLBgrZih0GoIb7FsKScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cIaGicb9cGOGicaGlY8Gq29UDMvYDcbRzsbHCNjHEsbMB3jTyxqGDw50DwSGA29TCgf0AwjPBgL0yxmGzgvUz2fUig1VzgvSlMDLDerHDgeOksaTpIbIDwLSzenVBxbSzxHxAgvYzunSyxvZzsGPcIaGicbJB25ZDcbNzxrqyxLSB2fKid0GEWOGicaGicb3AgvYztOGw3SGA2v5oIbYzxeUyM9KEs53AgvYzs5RzxKSihzHBhvLoIbYzxeUyM9KEs53AgvYzs52ywX1zsb9xsWkicaGicaGC2vSzwn0oIbYzxeUyM9KEs5ZzwXLy3qkicaGih07','AfrUqvu','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','zMLUza','oWOkicaGicaGicbJB25ZDcbYzxf1AxjLzezPzwXKCYa9ifSN','jYWkicaGicaGDgfIBgu6ig1VzgvSsw5MBY50ywjSzsWkicaGicaGzMLLBgrZoIbTB2rLBeLUzM8UzMLLBgrZlaOGicaGicbXDwvYEvnVDxjJzxm6ig1VzgvSsw5MBY5XDwvYEvnVDxjJzxmScIaGicaGigfJDgLVBNm6igfJDgLVBNmScIaGicaGigrHDgfIyxnLvhLWztOGj3bVC3rNCMvZjYWkicaGicaGz2vUzxjHDgvKoIaN','igrHDgeGBM90igzVDw5Kig9Yig5VDcbKzwXLDgvKjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kicaGigLMicHLCNjVCI5ZDgf0DxndB2rLid09psa0mdKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0nVBMzSAwn0jYWkicaGicaGicbTzxnZywDLoIbLCNjVCI5TzxnZywDLlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqYmIKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mJiPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNvw5WCM9JzxnZywjSzsbfBNrPDhKNlaOGicaGicaGig1LC3nHz2u6igvYCM9YlM1LC3nHz2uScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cIaGicaVlYbcywnRC3rVCcbRB25MBgLRoIbvtKLrvuuGDMLVBgf0Aw9UihnHyxqGvvbeqvrficHYywnLigTVBMT1CMvUksdIHPiGnda5lGOGicaGAwyGkgvYCM9YlMnVzguGpt09icCYmZuWnsCPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0nVBMzSAwn0jYWkicaGicaGicbTzxnZywDLoIaNq2fUBM90ihjLC3rVCMu6ihrOzsbYzxvZywjSzsbJB2rLigLZigfSCMvHzhKGAw4GDxnLigj5igfUigfJDgL2zsbYzwnVCMqGkhvUAxf1zsbJB25ZDhjHAw50ksCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLihjLC3rVCMLUzYa','oWOGicaG','cIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','cGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','l3jLC3rVCMuGlsbnzw11BgLOA2fUigrHDgeG','jYWkicaGicaGicaGihrHyMXLtMfTztOGjW','igrHDgeGC3vJy2vZC2z1BgX5igfKANvZDgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fKANvZDcbKyxrHia','igrHDgeGCMvZDg9YzwqGC3vJy2vZC2z1BgX5ycK7cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzs1Yzxn0B3jLigrHDgeG','DxbKyxrLq29TCg9ZAxrL','zgf0yxrHyMXLCW','qM5Rvuy','C090rNG','id0GjcCGkYbWktSkicaGicaGicbWkYS7cIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOzgvSzxrLzej5ktSkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHWA1zHBcK7cGOGicaGicaGic8Vie1HC3rLCIaOzgvWDgGTmcKGzgKTvvbeqvrfigTLihDYAxrLu291CMnLicHYzwfKl3DYAxrLihnWBgL0lwf3yxjLlcbPzgvUDgLRigPHBhvYcIaGicaGicaGlY8GzxHPC3rPBMCPicSGuKvuvvjosu5hihvUDhvRihjLC3bVBNnLlIbezxnJzw5Kyw50igTLig5HBweGDgfIzwWGy2XVC3vYzsaOCxvHBgLMAwvKks4kicaGicaGicbJB25ZDcbFx3rHCMDLDca9ign1CNjLBNqUAxnnyxn0zxiGpYb3CML0zvnVDxjJzsa6ign1CNjLBNqUDgfIBgu7cIaGicaGicaGy29UC3qGx19Yzxr1CM5PBMCGpsbJDxjYzw50lMLZtwfZDgvYid8GkcCGuKvuvvjosu5hicCGkYbYzxr1CM5PBMDgAwvSzhmPidOGjYC7cIaGicaGicaGy29UC3qGx191CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOcIaGicaGicaGicaNvvbeqvrficCGkYbFx3rHCMDLDcaRicCGu0vuicCGkYbZzxrdBgf1C2vZlMPVAw4OjYWGjYKGkYaNifDirvjficCGkYbUB2rLlNbRicSGjYa9icqNicSGCcaRif9FCMv0DxjUAw5NlaOGicaGicaGicaGDxbKyxrLugfYyw1ZcIaGicaGicaGktSkicaGicaGicb0B3vJAgvKlMfKzcHJDxjYzw50lNrHyMXLktSkicaGicaGicbPzIaOy3vYCMvUDc5PC01HC3rLCIaMjIbFx3vWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbTyxn0zxjezwXLDgvKsxrLBxmUChvZAcHFx3vWzgf0zvjLC3vSDc5YB3DZwZbDktSkicaGicaGicb9cGOGicaGicaGic8VicGZksbLEhbHBMq6igfUywSGquTusuyGkgLZx2rLBgv0zwq9rKfmu0uPigXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRihnVzNqTzgvSzxrLlaOGicaGicaGic8VicaGicbgt1iGvvbeqvrficHRDw5JAsbZzwjLBhvTig11DgfZAsKSihnRAxaGCgfYzw50q29SDw1Uie5vteWUievUCxvLDwuGDgLHCcbYB3CUcIaGicaGicaGzM9YicHJB25ZDcbJAcbVzIbUB2rLlMnOAwXKCMvUksb7cIaGicaGicaGicbPzIaOy2GUB25ezwXLDguGit09icDJyxnJywrLjYb8FcbJAc5JAgLSzfnVzNrezwXLDguGit09ihrYDwuPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19LEhbHBMrwywWGpsbJDxjYzw50lNjVD1TJAc5WyxjLBNrdB2X1Bw5DoWOGicaGicaGicaGAwyGkf9FzxHWyw5KvMfSid09psbUDwXSihX8if9FzxHWyw5KvMfSid09psb1BMrLzMLUzwqPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19JAgLSze5VzguGpsbFx3nKq2fZy2fKzu1LDgeUBM9KzxnBy2GUy2HPBgruywjSzv07cIaGicaGicaGicaVlYbpuKrfuIbcwsa8y2HPBgrqAZ4GC2vIzwX1Bsbgt1iGvvbeqvrfiokgKIb1CNv0yw4GywT1AxnPC2KGBg9JAYbKzxrLCM1PBMLZDgLRicHTAxrPz2fZAqOGicaGicaGicaGlY8GCMLUz2fUigTVBMT1CMvUC2K7igrLywrSB2nRihbLBNvOid0GugHHC2uGmdrKks4GsgfUEweGBwvUz3vIywGGvvjvvefoigjHCMLZlcbIDwTHBGOGicaGicaGicaGlY8GAgLTChvUyw4GAgfZAwWG4OAsigHHC2LSignHC2nHzguGAwrLBNrPAY4kicaGicaGicaGignVBNn0if9Fy2HPBgrsB3DZid0Gkgf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGj1nftevdvcaNicSGx19ZzfnLBgvJDenVBhmOx19JAgLSze5VzguPicSGjYbguK9nicCGkYbJAc5JAgLSzfrHyMXLicSGjYbxsevsrsaNicSGy2GUy2HPBgrdB2X1Bw4GkYaNid0GjdeGqu5eia','y29SDw1UCW','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGzgvMyxvSDfnLBgvJDaOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9ZCwXFzxHWCMvZC2LVBJOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjJB21Wyw55x2LKiIWGiNzHBhvLiJOGiNLVDxiTy29TCgfUEs1PzciGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','icaGic8ViezHBgXIywnRoIbNDw5HA2fUihjLywrtB3vYy2uGBgfUz3n1BMCGkhnLBxvHigTVBg9TihrLCNnLzgLHkqOGicaGCMv0DxjUicDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','CMvMvgfIBgu','cNjVDxrLCI5WB3n0kcCVDxbKyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','ywrQDxn0','id0GtLvmtcCPoWOkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHSB2nRzwrsB3DBjW','cIaGicaGicaGlY8GCMv1C2fIBguGjW','id0GtK9xkcKNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','icSGjW','id0GjdeGt1jerviGqLKGBgLUzv9UDw1IzxjGoW','zgv0ywLSvgfIBgu','ksb8FcaWksaQicHoDw1IzxiOAxrLBs4','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ici','icHWyxjLBNrtB2z0rgvSzxrLpq','EKDKDwy','cGOGicaGCMv0DxjUihrLBxbSyxrLCZSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDeXPC3rrDwvYEsb1BNr1AYbTzw55zxn1ywLRyw4GzgvUz2fUigTLyNv0DwHHBIa','yxv0B0nHBgn1Bgf0zuzPzwXKCW','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOA2v5ktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGicbKzxrHAwXqBgfJzwHVBgrLCNmUChvZAcHGjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEcSRFwaPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGA2uGzgv0ywLSieLou0vsvcb2AweGAgvSCgvYcIaGicaGicaGzgv0ywLSugXHy2vOB2XKzxjjBMrLEca9ihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHKzxrHAwXgAwvSzhmSigrLDgfPBfzHBhvLCYWGzgv0ywLSugXHy2vOB2XKzxjZlcbPDgvTlcbLDMvUDenVBNrLEhqSigrLDgfPBfbSywnLAg9SzgvYsw5KzxGPoWOkicaGicaGicbJB25ZDcbKzxrHAwXjBNnLCNrrDwvYEsa9igakicaGicaGicaGieLou0vsvcbjtLrpicr7zgv0ywLSvgfIBgvoyw1LFsaOjhTKzxrHAwXgAwvSzhmUAM9PBIGNlcaNkx0PcIaGicaGicaGicbwquXvrvmGkcr7zgv0ywLSugXHy2vOB2XKzxjZlMPVAw4OjYWGjYL9kqOGicaGicaGicaGuKvuvvjosu5hicOkicaGicaGicbGoWOkicaGicaGicbJB25ZDcbKzxrHAwXszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgv0ywLSsw5Zzxj0uxvLCNKSigrLDgfPBfzHBhvLCYK7cIaGicaGicaGAw5Zzxj0zwrjDgvTCY5WDxnOkgrLDgfPBfjLC3vSDc5YB3DZwZbDktSkicaGicaGFqOkicaGicaGy29UC29Szs5SB2COyeLUC2vYDgvKicr7Aw5Zzxj0zwrjDgvTCY5Szw5NDgH9ig5LDYbKzxrHAwWGAxrLBsHZkwaPoWOkicaGicaGlY8Gr2v0igfSBcbJDxjYzw50igrLDgfPBcbPDgvTCWOGicaGicbJB25ZDcbHBgXjDgvTC1f1zxj5id0GyfnftevdvcaQiezst00GjhTKzxrHAwXuywjSzu5HBwv9ifDirvjficr7zM9YzwLNBKTLEx0GpsaKmsbpuKrfuIbcwsbSAw5Lx251BwjLCMa7cIaGicaGignVBNn0igfSBeL0zw1ZuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgfSBeL0zw1ZuxvLCNKSifTWCMLTyxj5s2v5vMfSDwvDktSkicaGicaGy29UC3qGywXSsxrLBxmGpsbHBgXjDgvTC1jLC3vSDc5YB3DZoWOkicaGicaGlY8GuMvJywXJDwXHDguGAgvHzgvYihrVDgfSCYbMCM9TigzPBMfSigL0zw1ZcIaGicaGia','jZSkicaGicaGBgv0ihrLEhrgAwvSzca9icC','C3rYAw5N','zMLLBgrmywjLBhm','sxHjC0q','laOGicaGicbPBxbVCNrdB25MAwC6ia','oWOGicaGD29YA2zSB3DdB25MAwCUx3bYB2PLy3qGpsaN','ywXS','jYa6cIaGicaGicaGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','oICSigvYCM9YktSkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbYzwfKAw5Nia','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0','cIaGicaVlYbwywXPzgfZAsb4lwnVCNjLBgf0Aw9UlwLKigHLywrLCIaOtuforefut1jzigPPA2eGs2fMA2eGzw5HyMXLzcKkicaGignVBNn0ignVCNjLBgf0Aw9UswqGpsbYzxeUAgvHzgvYC1SNEc1JB3jYzwXHDgLVBI1PzcDDoWOGicaGAwyGkcfJB3jYzwXHDgLVBKLKksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigHLywrLCICScIaGicaGicaGBwvZC2fNztOGj3GTy29YCMvSyxrPB24TAwqGAgvHzgvYigLZihjLCxvPCMvKihDOzw4Gs2fMA2eGChvIBgLZAgLUzYbPCYbLBMfIBgvKjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','zxHWB3j0','icH3AxrOigrLDgfPBcbPDgvTCYK','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGvvbeqvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKvxbKyxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrvCgrHDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI51CgrHDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HvCgrHDguOcIaGicaGicaGjW','mKvPsxnhtq','ieforca','uwLwrvm','laOGicaGicaGihrLEhq6igL0zw1BBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0id8Gj2rPC3bSyxLFDgv4DcCGoIb0zxH0rMLLBgrZwZbDxsb8FcaNjWOGicaGicb9ksK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHrhLUyw1PyYaO','cIaGicb9oWOkicaGigzVCIaOy29UC3qGw3f1zxj5tMfTzsWGCxvLCNLtB3vYy2vDig9Mie9IAMvJDc5LBNrYAwvZkhf1zxj5rgvMAw5PDgLVBNmPksb7cIaGicaGihrYEsb7cIaGicaGicaGlY8Gq2vRigfWywTHAcbZDhjPBMCGzgLTDwXHAsbKzw5Nyw4GiMzPBgu6iIb1BNr1AYbTzw5LBNr1A2fUigfWywTHAcbPBMKGCgf0AcbMAwXLcIaGicaGicaGAwyGkhr5CgvVzIbXDwvYEvnVDxjJzsa9pt0Gj3n0CMLUzYCGjIyGCxvLCNLtB3vYy2uUC3rHCNrZv2L0AcGNzMLSztONksKGEWOGicaGicaGicaGlY8Gqw1IAwWGCgf0AcbYzwXHDgLMigrHCMKGCxvLCNLtB3vYy2ukicaGicaGicaGignVBNn0ihjLBgf0AxzLugf0Aca9ihf1zxj5u291CMnLlNjLCgXHy2uOj2zPBgu6jYWGjYCPoWOGicaGicaGicaGy29UC3qGzMLSzvbHDgGGpsbWyxrOlMPVAw4Ox19KAxjUyw1LlcbYzwXHDgL2zvbHDgGPoWOkicaGicaGicaGignVBNnVBguUBg9NkgbbDhrLBxb0Aw5NihrVihjLywqGDgvTCgXHDguGzMLSzsaKE3f1zxj5tMfTzx0GzNjVBsbWyxrOoIaKE2zPBgvqyxrOFwaPoWOkicaGicaGicaGigLMicHMCY5LEgLZDhntEw5JkgzPBgvqyxrOksKGEWOGicaGicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9igzZlNjLywrgAwXLu3LUyYHMAwXLugf0AcWGj3v0zJGNktSkicaGicaGicaGicaGy29UC29Szs5SB2COyfnrtcb0zw1WBgf0zsaKE3f1zxj5tMfTzx0GBg9HzgvKihn1y2nLC3nMDwXSEsbMCM9TigzPBgu6icr7CMvSyxrPDMvqyxrOFwaPoWOGicaGicaGicaGFsbLBhnLihSkicaGicaGicaGicaGy29UC29Szs5LCNjVCIHGu1fmihrLBxbSyxrLigzPBguGjhTXDwvYEu5HBwv9ig5VDcbMB3vUzdOGjhTMAwXLugf0Ah1GktSkicaGicaGicaGicaGDgvTCgXHDgvZw3f1zxj5tMfTzv0GpsbUDwXSoWOGicaGicaGicaGFqOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaVlYbkAwTHigj1A2fUihbHDgGGzMLSzsWGz3vUywTHBIbZDhjPBMCGu1fmigXHBMDZDw5NcIaGicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9ihf1zxj5u291CMnLoWOGicaGicaGicaGy29UC29Szs5SB2COyfnrtcb0zw1WBgf0zsaKE3f1zxj5tMfTzx0GBg9HzgvKihn1y2nLC3nMDwXSEsbMCM9TifnrtcbZDhjPBMDGktSkicaGicaGicb9cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGrxjYB3iGBg9HzgLUzYbtuuWGDgvTCgXHDguGjhTXDwvYEu5HBwv9oMaSigvYCM9YktSkicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9ig51BgW7cIaGicaGih0kicaGih0','C29Tzq','lY8Gu2TPCcbhru5fuKfuruqGquXxqvLtignVBhvTBNmkicaGicaGicaGigLMicHNzw5LCMf0zwrgAwvSzhmUAw5JBhvKzxmOA2v5ksKGy29UDgLUDwu7','zMLYC3q','ydSkcIaGicaGignVBNn0ihbHCMfTCYa9ifTGjsr7C2vHCMnOihX8icCNFsvGxtSkcIaGicaGignVBNn0igrHDgeGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOCxvLCNKSihbHCMfTCYK7cGOGicaGicbJB25ZDcbYzxn1BhqGpsbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw0U','lY8Gv0fstKLorZOGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx2fTB3vUDcbZA2LWCgvKiokaLcbUBYbXDhKGzMLLBgqGy29UzMLNDxjLza','ywr2yw5JzwrrDwvYAwvZ','zM9YBxvSyq','cIaGicOVcIaGz2v0tgLZDff1zxj5kg9WDgLVBNmGpsb7FsKGEWOGicaGlY8Gtg9HzcbXDwvYEsbKyxnHCIbKzw5Nyw4GCgXHy2vOB2XKzxiGCMvWBgfJzw1LBNqkicaGia','cIaGicaGicaGAxrLBs4','igrHDgeGBM90igzVDw5Kig9YigfSCMvHzhKGzgvSzxrLzcCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','jYWkicaGicaGicaGigrLDgfPBfrHyMXLoIaN','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGzgv0ywLSvgfIBgu6icC','ksb7cIaGicaGigrLBgv0zsbYzxeUyM9KEvTFx3nKq29SxtSkicaGih0','oIbTDxn0igjLigzHBhnLlcbUDwXSlcbVCIbVyMPLy3q','y2HPBgruywjSzq','igrHDgeGywrKzwqGC3vJy2vZC2z1BgX5oIaKE3jLC3bVBNnLrgf0ys4','jYWGDMfSDwu6ihnJB3bLvMfSDwuGFtSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGy29UC3qGC2nVCgvdB25KAxrPB24Gpsb7igTLEtOGjW','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFqOGicaGicaGicaGxqOGicaGicaGih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','BwfZDgvY','cIaGicaGia','y29UC3qGzgv0ywLSuxvLCNKGpsbGu0vmrunuicOGrLjptsa','ohjcr2vRDG','rgfutfu','jYaOB25ezwXLDgu6ihjLC3rYAwn0ksiPoWOGicaGicaGicaGicaGihjLC3rYAwn0rxjYB3iUC3rHDhvZq29Kzsa9idqWotSkicaGicaGicaGicaGicb0AhjVDYbYzxn0CMLJDevYCM9YoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cIaGicaGicaGFq','cIaGicaGih0kcIaGicaGic8VidmUifbYB3nLCYbWyxjHBwv0zxiGD2HLCMuGzgvUz2fUigzVCM1HDcbHzhzHBMnLzcbJB25KAxrPB25ZcIaGicaGigXLDcb3AgvYzvbHCMfTCYa9ifTDoWOGicaGicbPzIaOD2HLCMuGjIyGkefYCMf5lMLZqxjYyxKOD2HLCMuPihX8icH3AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOD2HLCMuUy29UzgL0Aw9UCYKPksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOD2HLCMuSihbHCMfTCYWGCgfYyw1jBMrLEcWGjYCSihrOAxmUCMvHzgfIBgvgAwvSzhmPoWOGicaGicaGicaGAwyGkhDOzxjLuMvZDwX0lNnXBcKGEWOGicaGicaGicaGicbPzIaOD2HLCMvdBgf1C2uPihSkicaGicaGicaGicaGicb3AgvYzunSyxvZzsaRpsaNieforcaOjYaRihDOzxjLuMvZDwX0lNnXBcaRicCPjZSkicaGicaGicaGicaGFsbLBhnLihSkicaGicaGicaGicaGicb3AgvYzunSyxvZzsa9icDxsevsrsaNicSGD2HLCMvszxn1BhqUC3fSoWOGicaGicaGicaGicb9cIaGicaGicaGicaGihDOzxjLugfYyw1Zid0GD2HLCMvszxn1BhqUCgfYyw1ZoWOGicaGicaGicaGFqOGicaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicaGic8ViezHAwWTy2XVC2vKihDOzxjLlwzPzwXKoIb0zxj1C2THBIbLCNjVCIb0zxjZDhj1A3r1CIbHCgeGywrHBNLHicHQyw5Nyw4GyNvUz2T1CWOGicaGicaGicaGlY8GAMfKAsbWzxnHBIbNzw5LCMLRksbHz2fYigHHBMrSzxiGyMLZysbTzw1MB3jTyxqGCMvZCg9UCYaRigrLDI1NyxrLihzHBgLKrMLLBgrZlGOGicaGicaGicaGAwyGkguUy29Kzsa9pt0Gj0LovKfmsurFv0HfuKvFrKLfteqNksb0AhjVDYbLoWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GkhrHBNbHigzPBhrLCIKkicaGicaGy29UC3qGy291BNruB3rHBff1zxj5id0GBMvLzhntDwjXDwvYEqOGicaGicaGid8Gj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicGNicSGyMfZzvf1zxj5icSGjYKGyMfZzv9XDwvYEq','oWOGicaGicbJB25ZDcbYzwnHBgn1Bgf0zwrgAwvSzhmGpsbBxtSkicaGicaGy29UC3qGCMvJywXJDwXHDgvKvMfSDwvZid0Gw107cIaGicaGigXLDcbYzwnHBgnqBgfJzwHVBgrLCIa9ide7cGOGicaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx2L0zw1Zksb7cIaGicaGicaGCMvJywXJDwXHDgvKrMLLBgrZlNb1C2GOyhrVDgfSx2L0zw1Zid0Gjcr7CMvJywXJugXHy2vOB2XKzxiRk31GktSkicaGicaGicbYzwnHBgn1Bgf0zwrwywX1zxmUChvZAcHHBgXjDgvTCY5Szw5NDgGPoWOGicaGicb9cGOGicaGicbPzIaOy2fSy3vSyxrPB25ZlNrVDgfSx3f0EsaMjIbJywXJDwXHDgLVBNmUDg90ywXFCxr5lNnVDxjJzsKGEWOGicaGicaGignVBNn0ihf0EuzPzwXKid0Gy2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uUCMvWBgfJzsGNAxrLBxmUjYWGjYCPoWOGicaGicaGignVBNn0ihrVDgfSuxr5id0GywXSsxrLBxmUCMvKDwnLkcHZDw0SigL0zw0Pid0+ihn1BsaRicHoDw1IzxiOAxrLBvTXDhLgAwvSzf0PihX8idaPlcaWktSkicaGicaGicbYzwnHBgn1Bgf0zwrgAwvSzhmUChvZAcHGDg90ywXFCxr5id0Gjcr7CMvJywXJugXHy2vOB2XKzxiRk31GktSkicaGicaGicbYzwnHBgn1Bgf0zwrwywX1zxmUChvZAcH0B3rHBff0EsK7cIaGicaGih0kcIaGicaGia','l3vWzgf0zsaTie1LBMD1CgrHDguGzgf0ysa','jYWkicaGicaGzMLLBgroyw1LoIa','laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGignVBNn0igrHDgeGpsbYzxeUyM9KEs4','y3jLyxrLzej5','tKXpy2O','DMLZAwjPBgL0Eq','DgfIBgvoyw1L','ksb7cIaGicaGigLMicH0ExbLB2yGzgf0ys4','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkg1VzgLMAwvKqM9KEsK7cGOGicaGicaGignVBNnVBguUBg9NkgbtDgf0AwmGBg9VA3vWihDPDgGGC2vSzwn0l29YzgvYihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGicaGigrHDge6igXPC3qScIaGicaGicaGicbZzwXLy3rLzfrHzZOGC2vSzwn0zwruywCScIaGicaGicaGicbXDwvYEtOGBw9KAwzPzwrcB2r5laOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFsbLBhnLihSkicaGicaGicaVlYbhDw5HA2fUig1VzgvSihvUDhvRig1LBMrHCgf0A2fUigrHDgeGzgvUz2fUig1LDgHVzcbSyw1HcIaGicaGicaGy29UC3qGBgLZDca9igf3ywL0ia','cIaGicbDoWOGicaGy29UC3qGzgf0yxrHyMXLC0zPzwXKCYa9ifSkicaGicaG','iIbTDxn0igjLigfUig9IAMvJDcb3AxrOihn0CNvJDhvYzsb7Aw5Zzxj0oIbBxsWGDxbKyxrLoIbBxsWGzgvSzxrLoIbBxx0NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GvMfSAwrHC2KGC3rYDwn0DxjLoIbPBNnLCNqSihvWzgf0zsWGzgvSzxrLigHHCNvZigfYCMf5igPPA2eGywrHcIaGicaGignVBNn0ig9WzxjHDgLVBNmGpsbKyxrHlG','lNvWzgf0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4Da','zMfSC2u','cIaGicaGic8VignHC2nHzgvezwXLDguGpsb0CNvLoIberuXfveuGy2HPBgqGCMvJB3jKCYbMAxjZDcWGDgHLBIbOzwfKzxikicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NignOAwXKihjLy29YzhmGzNjVBsa','rgvXCuW','cIaGicaGicaGlY8GrKSTu0qTmIbYzxn0CMLJDcaJ'];a0_0x5526=function(){return _0xd92e9d;};return a0_0x5526();}function generateRestoreFunction(_0x36fa3a,_0x49eb5c,_0xffe319,_0x5bb727=null){const _0x1c4d4d=a0_0x265454;if(!_0x5bb727){const _0x5357bf=FileUtils['toCamelCase'](_0x49eb5c);_0x5bb727=_0x5357bf+'Model';}return _0x1c4d4d(0x235)+_0x36fa3a+'/'+_0x49eb5c+_0x1c4d4d(0x119)+_0x49eb5c+'\x20yang\x20ter-soft-delete\x20(R20)\x0arouter.post(\x27/restore\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20request\x20format:\x20where\x20parameter\x20is\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Restore\x20adalah\x20event\x20lifecycle:\x20model.restoreData\x20menjalankan\x20transaksinya\x20sendiri\x0a\x20\x20\x20\x20//\x20(SELECT\x20FOR\x20UPDATE\x20→\x20strip/konflik/FK\x20→\x20reset\x20→\x20COMMIT\x20→\x20invalidateCache).\x0a\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0xffe319['tableName']+_0x1c4d4d(0xbd)+_0x5bb727+'.restoreData(req.body,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x49eb5c+_0x1c4d4d(0x11c)+_0x49eb5c+_0x1c4d4d(0x1d7)+_0x49eb5c+_0x1c4d4d(0x115)+_0x49eb5c+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateFirstFunction(_0x3e3d78,_0x1c0d58,_0x409242,_0x111f5a,_0x4ba665,_0x3f9006=null){const _0x3ed35d=a0_0x265454,_0x146f42={'UORFu':function(_0x91586e,_0x55cf19){return _0x91586e(_0x55cf19);}};if(!_0x3f9006){const _0x403de0=FileUtils[_0x3ed35d(0x215)](_0x1c0d58);_0x3f9006=_0x403de0+_0x3ed35d(0xc7);}const _0x295a04=_0x409242[_0x3ed35d(0x17d)]||{},_0x10e175=_0x295a04[_0x3ed35d(0x20c)]||_0x409242[_0x3ed35d(0xe3)]||[],_0x24c25b=_0x409242[_0x3ed35d(0x245)]?_0x3ed35d(0x289)+_0x1c0d58+'\x20data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'',_0x4fa5ab=_0x146f42[_0x3ed35d(0xaf)](softDeleteVisibilityFilter,_0x409242),_0x49fa59=_0x4fa5ab!==null?_0x3ed35d(0xca)+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x4fa5ab+'\x20});':'',_0x199084=_0x4fa5ab!==null?'\x0a\x20\x20\x20\x20if\x20(!result.data\x20||\x20result.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x1c0d58+_0x3ed35d(0x181):'';return _0x3ed35d(0x235)+_0x3e3d78+'/'+_0x1c0d58+_0x3ed35d(0x2ad)+_0x1c0d58+'\x20berdasarkan\x20kriteria\x0arouter.post(\x27/first\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x1c0d58+_0x3ed35d(0x131)+(_0x409242['primaryKey']||'id')+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where.key\x20dan\x20where.value\x0a\x20\x20\x20\x20if\x20(!req.body.where.key\x20||\x20req.body.where.value\x20===\x20undefined\x20||\x20req.body.where.value\x20===\x20null\x20||\x20req.body.where.value\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20key\x20and\x20value\x20are\x20required\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22'+(_0x409242['primaryKey']||'id')+_0x3ed35d(0x17b)+JSON['stringify'](_0x10e175)+_0x3ed35d(0x10f)+_0x49fa59+_0x3ed35d(0xe8)+_0x3f9006+'.getData(getPayload);'+_0x199084+'\x0a'+_0x24c25b+'\x0a\x20\x20\x20\x20//\x20Add\x20metadata\x20untuk\x20debugging\x20(development\x20only)\x0a\x20\x20\x20\x20if\x20(process.env.NODE_ENV\x20===\x20\x27development\x27\x20&&\x20result.success)\x20{\x0a\x20\x20\x20\x20\x20\x20result._metadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x1c0d58+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20query:\x20req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20resultCount:\x20result.data\x20?\x20result.data.length\x20:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20mendapatkan\x20data\x20'+_0x1c0d58+':\x27,\x20error);\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x1c0d58+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateLookupFunction(_0x349604,_0x55e717,_0x662726,_0x4554dc,_0x45af82,_0x463a26=null){const _0x5c1f39=a0_0x265454,_0x5cf9c3={'QiVES':_0x5c1f39(0x280),'MgAQf':'\x22,\x20\x22'};if(!_0x463a26){const _0x4fe5d1=FileUtils['toCamelCase'](_0x55e717);_0x463a26=_0x4fe5d1+_0x5c1f39(0xc7);}const _0x190d34=_0x662726['_lookupConfig']||null,_0x28aa7e=_0x662726['_fieldProjections']||{},_0x1a6c82=_0x28aa7e[_0x5c1f39(0x20c)]||_0x662726[_0x5c1f39(0xe3)]||[];return _0x5c1f39(0x1d8)+_0x349604+'/'+_0x55e717+_0x5c1f39(0xd9)+_0x55e717+_0x5c1f39(0x180)+_0x55e717+_0x5c1f39(0x2ba)+_0x463a26+_0x5c1f39(0x18c)+_0x55e717+_0x5c1f39(0x27e)+_0x55e717+_0x5c1f39(0xcf)+_0x349604+'/'+_0x55e717+'/lookup\x20-\x20Mendapatkan\x20data\x20'+_0x55e717+'\x20untuk\x20lookup\x20dengan\x20filtering\x0arouter.post(\x27/lookup\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20Validasi\x20X-Request-Mode\x20header\x0a\x20\x20\x20\x20const\x20requestMode\x20=\x20req.headers[\x27x-request-mode\x27];\x0a\x20\x20\x20\x20console.log(`X-Request-Mode\x20header\x20for\x20POST\x20lookup:\x20${requestMode}`);\x0a\x0a\x20\x20\x20\x20if\x20(requestMode\x20!==\x20\x27static\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20Request\x20Mode\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27X-Request-Mode\x20header\x20must\x20be\x20set\x20to\x20static\x20for\x20POST\x20method\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20\x27Contoh\x20penggunaan:\x20Tambahkan\x20header\x20X-Request-Mode:\x20static\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20payload\x0a\x20\x20\x20\x20if\x20(!req.body)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Support\x20untuk\x20fieldNameLookup\x20config\x0a\x20\x20\x20\x20\x20\x20const\x20lookupConfig\x20=\x20'+JSON[_0x5c1f39(0x252)](_0x190d34)+_0x5c1f39(0x104)+_0x45af82+_0x5c1f39(0x2b2)+(_0x4554dc['all']?_0x4554dc['all']['find'](_0x3aa8f7=>_0x3aa8f7!=='id')||_0x5cf9c3['QiVES']:_0x5cf9c3[_0x5c1f39(0x147)])+_0x5c1f39(0x123)+_0x45af82+_0x5c1f39(0x29d)+_0x45af82+_0x5c1f39(0x1e9)+_0x45af82+_0x5c1f39(0x291)+(_0x4554dc[_0x5c1f39(0x17f)]?_0x4554dc[_0x5c1f39(0x17f)][_0x5c1f39(0xf3)](0x0,0x4)['join'](_0x5cf9c3[_0x5c1f39(0x26e)]):_0x662726['fieldName'][_0x5c1f39(0xf3)](0x0,0x4)['join'](_0x5cf9c3[_0x5c1f39(0x26e)]))+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20example_with_ordering:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+_0x45af82+'\x22],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22sort_columns\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22column\x22:\x20\x22'+(_0x662726['fieldName'][0x1]||_0x45af82)+'\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22direction\x22:\x20\x22ASC\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22column\x22:\x20\x22'+_0x45af82+_0x5c1f39(0x15b)+_0x55e717+_0x5c1f39(0xad)+(_0x4554dc[_0x5c1f39(0x13d)]?_0x4554dc[_0x5c1f39(0x13d)][_0x5c1f39(0x112)](_0xd95339=>_0xd95339!=='id')||'code':_0x5c1f39(0x280))+'\x22,\x20\x22value\x22:\x20\x22AP2506-01\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20],\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+_0x45af82+_0x5c1f39(0x1fd)+_0x45af82+'\x22,\x20\x22operator\x22:\x20\x22like\x22,\x20\x22value\x22:\x20\x22%Portal%\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+_0x45af82+_0x5c1f39(0x2aa)+(_0x4554dc['textFields']?_0x4554dc[_0x5c1f39(0x17f)][_0x5c1f39(0xf3)](0x0,0x4)['join']('\x22,\x20\x22'):_0x662726['fieldName']['slice'](0x0,0x4)['join'](_0x5cf9c3[_0x5c1f39(0x26e)]))+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20select\x20fields\x20jika\x20ada\x20(support\x20SQL\x20expressions)\x0a\x20\x20\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0x1a6c82)+';\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20[];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20setiap\x20field\x20dalam\x20select\x0a\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20field\x20of\x20req.body.select)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20untuk\x20field\x20\x27id\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(field.toLowerCase()\x20===\x20\x27id\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20jika\x20ada\x20SQL\x20expression\x20dengan\x20AS\x20(alias)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/\x5cs+as\x5cs+\x5cw+$/i.test(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validasi\x20jika\x20ada\x20SQL\x20operators/functions\x20(||,\x20CONCAT,\x20dll)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(/\x5c|\x5c||CONCAT|COALESCE|CASE|WHEN/i.test(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Validasi\x20normal\x20field\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!validFields.includes(field))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20invalidFields.push(field);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20sqlExpressionNote:\x20\x27SQL\x20expressions\x20dengan\x20operator\x20||\x20atau\x20AS\x20alias\x20diperbolehkan\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20method\x20getLookupDataWithFilter\x0a\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x463a26+_0x5c1f39(0x26a)+_0x55e717+_0x5c1f39(0xcb)+_0x463a26+_0x5c1f39(0x16c)+_0x463a26+_0x5c1f39(0x25c)+_0x55e717+'\x20static\x20lookup:\x27,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20res.status(500).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x55e717+_0x5c1f39(0x1c2);}function generateReadFunction(_0x3d9a79,_0x49b482,_0x4afe3d,_0x51d637=null){const _0x45ad55=a0_0x265454;if(!_0x51d637){const _0x5927e5=FileUtils['toCamelCase'](_0x49b482);_0x51d637=_0x5927e5+'Model';}const _0x455e2c=_0x4afe3d[_0x45ad55(0x17d)]||{},_0xc301de=_0x455e2c[_0x45ad55(0x20c)]||_0x4afe3d[_0x45ad55(0xe3)]||[];return _0x45ad55(0x235)+_0x3d9a79+'/'+_0x49b482+_0x45ad55(0x26d)+_0x49b482+_0x45ad55(0xd6)+(_0x4afe3d['primaryKey']||_0x4afe3d[_0x45ad55(0xe3)][0x0]||'id')+'\x27;\x0a\x0a\x20\x20\x20\x20//\x20Parse\x20sort_columns\x0a\x20\x20\x20\x20let\x20sort_columns\x20=\x20[];\x0a\x20\x20\x20\x20if\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)\x20&&\x20req.body.sort_columns.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20sort_columns\x20=\x20req.body.sort_columns.map(item\x20=>\x20({\x0a\x20\x20\x20\x20\x20\x20\x20\x20column:\x20item.column,\x0a\x20\x20\x20\x20\x20\x20\x20\x20direction:\x20(item.direction\x20||\x20\x27ASC\x27).toUpperCase()\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20where\x20dengan\x20format\x20advanced\x20conditions\x0a\x20\x20\x20\x20let\x20where\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.where\x20&&\x20typeof\x20req.body.where\x20===\x20\x27object\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20||\x20(req.body.where.conditions\x20&&\x20Array.isArray(req.body.where.conditions)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20where\x20=\x20req.body.where;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Proses\x20parameter\x20select\x20untuk\x20kolom\x20selektif\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0xc301de)+';\x0a\x20\x20\x20\x20let\x20select\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(req.body.select\x20&&\x20Array.isArray(req.body.select))\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20invalidFields\x20=\x20req.body.select.filter(field\x20=>\x20!validFields.includes(field));\x0a\x20\x20\x20\x20\x20\x20if\x20(invalidFields.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20select\x20fields\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field(s):\x20${invalidFields.join(\x27,\x20\x27)}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20select\x20=\x20req.body.select;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20parameter\x20paginasi\x20(hanya\x20jika\x20mode\x20paginasi)\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(page\x20<\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20page:\x20[\x27Page\x20must\x20be\x20greater\x20than\x200\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(perPage\x20<\x201\x20||\x20perPage\x20>\x20100)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20per_page:\x20[\x27Per\x20page\x20must\x20be\x20between\x201\x20and\x20100\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(searchValue.length\x20>\x20255)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search_value:\x20[\x27Search\x20value\x20must\x20not\x20exceed\x20255\x20characters\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20kolom\x20searching\x0a\x20\x20\x20\x20if\x20(!validFields.includes(searchBy))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search_by:\x20[process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20`Invalid\x20search\x20field.\x20Valid\x20fields:\x20${validFields.join(\x27,\x20\x27)}`\x20:\x20\x27Invalid\x20search\x20field\x27]\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Build\x20options\x20untuk\x20model\x0a\x20\x20\x20\x20const\x20options\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20searchValue:\x20searchValue,\x0a\x20\x20\x20\x20\x20\x20searchBy:\x20searchBy,\x0a\x20\x20\x20\x20\x20\x20sort_columns:\x20sort_columns,\x0a\x20\x20\x20\x20\x20\x20where:\x20where,\x0a\x20\x20\x20\x20\x20\x20select:\x20select\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20options.page\x20=\x20page;\x0a\x20\x20\x20\x20\x20\x20options.perPage\x20=\x20perPage;\x0a\x20\x20\x20\x20\x20\x20options.offset\x20=\x20(page\x20-\x201)\x20*\x20perPage;\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20options.limit\x20=\x20limit;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x20list\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x51d637+_0x45ad55(0x238)+_0x49b482+'\x20list:\x27,\x20error);\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27INVALID_WHERE_FIELD\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20where\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Invalid\x20field:\x20${error.invalidField}`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20...(process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20{\x20validFields:\x20error.validFields\x20}\x20:\x20{}),\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20const\x20statusCode\x20=\x20error.statusCode\x20||\x20500;\x0a\x20\x20\x20\x20return\x20res.status(statusCode).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20error:\x20statusCode\x20===\x20400\x20?\x20\x27Bad\x20Request\x27\x20:\x20\x27Internal\x20Server\x20Error\x27,\x0a\x20\x20\x20\x20\x20\x20message:\x20statusCode\x20===\x20400\x20?\x20error.message\x20:\x20\x27An\x20error\x20occurred\x20while\x20fetching\x20'+_0x49b482+'\x20list\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateCreateCompositeFunction(_0x4feb86,_0x4525a7,_0xe25a0c,_0x46b202=null){const _0xda158a=a0_0x265454,_0x4a3d9e={'vDXRJ':_0xda158a(0x19a),'BCoyA':_0xda158a(0xbb),'mPCiX':_0xda158a(0x143)};if(!_0x46b202){const _0x27b6ca=FileUtils['toCamelCase'](_0x4525a7);_0x46b202=_0x27b6ca+_0xda158a(0xc7);}const _0xafe858=_0xe25a0c['masterDetail']&&_0xe25a0c['masterDetail']['enabled'],_0x4427b3=_0xafe858?_0xe25a0c['masterDetail'][_0xda158a(0x12d)]:null,_0x3a4a36=_0x4427b3?_0x4427b3['split']('.')['pop']():_0x4a3d9e[_0xda158a(0x21d)],_0x2d5333=_0x4525a7['replace'](/-/g,'_'),_0x239d6f=_0xe25a0c[_0xda158a(0xd2)]?.[_0xda158a(0x1ea)]?.[_0xda158a(0x135)]?.[_0xda158a(0x298)]?.[_0xda158a(0x150)]||'',_0xa28840=_0x239d6f['split']('*')[_0xda158a(0x2b4)](_0x4db1ba=>_0x4db1ba['trim']()),_0x51870f=_0xe25a0c[_0xda158a(0xd2)]?.['headerCalculations']?.['total_qty']?.[_0xda158a(0x178)]?.['replace']('items.','')||'',_0x23e8be=_0xa28840[0x0]||_0x51870f,_0x35ec12=_0xa28840[0x1]||_0xda158a(0x2a0);return'\x0a//\x20POST\x20/api/'+_0x4feb86+'/'+_0x4525a7+'/create-composite\x20-\x20Composite\x20create\x20'+(_0xafe858?_0xda158a(0x1b2):'')+_0xda158a(0x281)+_0x4525a7+_0xda158a(0xee)+_0x2d5333+_0xda158a(0x226)+_0x2d5333+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20'+(_0xafe858?_0xda158a(0x1f6)+_0x2d5333+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field1\x22:\x20\x22value1\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22field2\x22:\x20\x22value2\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x3a4a36+'\x22:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x201,\x20\x22field\x22:\x20\x22value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22line_number\x22:\x202,\x20\x22field\x22:\x20\x22value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}':_0xda158a(0x1f6)+_0x2d5333+_0xda158a(0x297))+_0xda158a(0x166)+_0x2d5333+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0x46b202+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20saja\x20(exclude\x20detail\x20array)\x20untuk\x20validation\x0a\x20\x20\x20\x20\x20\x20const\x20headerDataForValidation\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20'+(_0xafe858?'delete\x20headerDataForValidation.'+_0x3a4a36+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x46b202+_0xda158a(0x1a7)+(_0xafe858?'\x0a\x20\x20\x20\x20//\x20Validasi\x20detail\x20items\x20untuk\x20master-detail\x0a\x20\x20\x20\x20if\x20(!data.'+_0x3a4a36+'\x20||\x20!Array.isArray(data.'+_0x3a4a36+_0xda158a(0x2a3)+_0x3a4a36+'.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x3a4a36+_0xda158a(0x251)+(_0xe25a0c['masterDetail']['headerCalculations']?'\x0a\x20\x20\x20\x20const\x20headerCalc\x20=\x20'+JSON[_0xda158a(0x252)](_0xe25a0c[_0xda158a(0xd2)][_0xda158a(0x10e)])+';\x0a\x20\x20\x20\x20if\x20(headerCalc.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20data.total_items\x20=\x20data.'+_0x3a4a36+'.length;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(headerCalc.total_qty\x20&&\x20headerCalc.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20qtyField\x20=\x20headerCalc.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20data.total_qty\x20=\x20data.'+_0x3a4a36+'.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'+(_0x23e8be?'if\x20(headerCalc.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Calculate\x20total_amount\x20as\x20sum\x20of\x20('+_0x23e8be+'\x20*\x20'+_0x35ec12+_0xda158a(0xf8)+_0x3a4a36+_0xda158a(0x1f8)+_0x23e8be+_0xda158a(0xe2)+_0x35ec12+_0xda158a(0x1e5):_0x4a3d9e['BCoyA'])+'\x0a\x20\x20\x20\x20':'')+'\x0a\x0a\x20\x20\x20\x20console.log(\x27Calculated\x20totals:\x27,\x20{\x0a\x20\x20\x20\x20\x20\x20total_items:\x20data.total_items,\x0a\x20\x20\x20\x20\x20\x20total_qty:\x20data.total_qty,\x0a\x20\x20\x20\x20\x20\x20total_amount:\x20data.total_amount\x0a\x20\x20\x20\x20});\x0a\x20\x20\x20\x20':'')+_0xda158a(0x21f)+_0xe25a0c['tableName']+_0xda158a(0x155)+_0x4427b3+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0xafe858?_0xe25a0c[_0xda158a(0xd2)][_0xda158a(0x1a8)]:'')+_0xda158a(0x186)+_0x46b202+'.createComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x4525a7+_0xda158a(0xb3)+_0x4525a7+_0xda158a(0x1d9)+(_0xafe858?_0x4a3d9e[_0xda158a(0xf1)]:'')+_0xda158a(0xef)+_0x4525a7+_0xda158a(0xc4)+_0x4525a7+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateUpdateCompositeFunction(_0x3c7cc2,_0x1dcaea,_0x40b1a6,_0xf0b782=null){const _0x386b6e=a0_0x265454,_0x3b6faa={'whgYM':_0x386b6e(0x143)};if(!_0xf0b782){const _0x9109cb=FileUtils['toCamelCase'](_0x1dcaea);_0xf0b782=_0x9109cb+'Model';}const _0x3ae1d3=_0x40b1a6[_0x386b6e(0xd2)]&&_0x40b1a6['masterDetail']['enabled'],_0x3f02e3=_0x3ae1d3?_0x40b1a6['masterDetail']['detailTable']:null,_0x2b5e17=_0x3f02e3?_0x3f02e3[_0x386b6e(0x273)]('.')[_0x386b6e(0x28e)]():'items',_0x496eed=_0x1dcaea[_0x386b6e(0x224)](/-/g,'_'),_0x386a87=_0x40b1a6[_0x386b6e(0x24f)]||'id',_0x157bbb=_0x40b1a6['requestScope']?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x20—\x20master\x20record\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0xf0b782+_0x386b6e(0xc3)+_0x386a87+'\x27,\x20value:\x20data.'+_0x386a87+'\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20req._requestScope.column,\x20value:\x20req._requestScope.value\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20if\x20(!scopeCheck.success\x20||\x20!scopeCheck.data\x20||\x20scopeCheck.data.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Master\x20record\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'';return'\x0a//\x20POST\x20/api/'+_0x3c7cc2+'/'+_0x1dcaea+'/update-composite\x20-\x20Composite\x20update\x20'+(_0x3ae1d3?'(master-detail\x20transaction)':'')+_0x386b6e(0x126)+_0x1dcaea+_0x386b6e(0x1a4)+_0x496eed+_0x386b6e(0x226)+_0x496eed+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20'+(_0x3ae1d3?_0x386b6e(0x1f6)+_0x496eed+_0x386b6e(0x217)+_0x386a87+_0x386b6e(0x240)+_0x2b5e17+_0x386b6e(0xce):'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x496eed+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x386a87+_0x386b6e(0xfa))+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20data\x20=\x20req.body.'+_0x496eed+_0x386b6e(0x2b9)+_0x386a87+')\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Primary\x20key\x20('+_0x386a87+')\x20is\x20required\x20for\x20update\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a'+_0x157bbb+'\x0a\x20\x20\x20\x20//\x20Validasi\x20dan\x20sanitasi\x20header\x20data\x20dengan\x20constraint\x20(termasuk\x20hash)\x0a\x20\x20\x20\x20if\x20(typeof\x20'+_0xf0b782+_0x386b6e(0x1fc)+(_0x3ae1d3?'delete\x20headerDataForValidation.'+_0x2b5e17+';':'')+_0x386b6e(0x265)+_0xf0b782+_0x386b6e(0x111)+(_0x3ae1d3?'\x0a\x20\x20\x20\x20//\x20Validasi\x20detail\x20items\x20untuk\x20master-detail\x20(opsional\x20untuk\x20update)\x0a\x20\x20\x20\x20//\x20Untuk\x20updateComposite,\x20detail\x20items\x20berupa\x20object\x20dengan\x20{insert:\x20[],\x20update:\x20[],\x20delete:\x20[]}\x0a\x20\x20\x20\x20if\x20(data.'+_0x2b5e17+_0x386b6e(0x16b)+_0x2b5e17+'\x20!==\x20\x27object\x27\x20||\x20Array.isArray(data.'+_0x2b5e17+_0x386b6e(0xdc)+_0x2b5e17+_0x386b6e(0x16e)+_0x2b5e17+';\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.insert\x20&&\x20!Array.isArray(operations.insert))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x2b5e17+'.insert\x22\x20must\x20be\x20an\x20array\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20if\x20(operations.update\x20&&\x20!Array.isArray(operations.update))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Property\x20\x22'+_0x2b5e17+_0x386b6e(0x1ed)+_0x2b5e17+_0x386b6e(0x1e2):'')+_0x386b6e(0x21f)+_0x40b1a6['tableName']+_0x386b6e(0x155)+_0x3f02e3+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x3ae1d3?_0x40b1a6['masterDetail']['foreignKey']:'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20model\x20composite\x20update\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0xf0b782+_0x386b6e(0x27a)+_0x1dcaea+_0x386b6e(0x1cf)+_0x386a87+_0x386b6e(0x19d)+_0x386a87+_0x386b6e(0x184)+_0x1dcaea+'\x20data\x20successfully\x20updated'+(_0x3ae1d3?_0x3b6faa['whgYM']:'')+_0x386b6e(0x10b)+_0x1dcaea+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20\x22Data\x20tidak\x20ditemukan\x22\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Data\x20tidak\x20ditemukan\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x1dcaea+_0x386b6e(0xb0)+_0x1dcaea+'\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateReadCompositeFunction(_0x531f40,_0x3e4db4,_0x1ca157,_0x4a1cc1=null){const _0x4bee7f=a0_0x265454;if(!_0x4a1cc1){const _0x18f47a=FileUtils['toCamelCase'](_0x3e4db4);_0x4a1cc1=_0x18f47a+'Model';}const _0x247551=JSON[_0x4bee7f(0x252)](_0x1ca157['fieldName']||[]);return'\x0a//\x20POST\x20/api/'+_0x531f40+'/'+_0x3e4db4+'/read-composite\x20-\x20Read\x20header\x20with\x20detail\x20items\x0arouter.post(\x27/read-composite\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20console.log(\x27Request\x20body\x20'+_0x3e4db4+_0x4bee7f(0x1c7)+(_0x1ca157[_0x4bee7f(0x24f)]||'id')+'\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20]\x0a\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20model\x20readComposite\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x4a1cc1+_0x4bee7f(0x1eb)+_0x3e4db4+'\x20composite\x20read\x20successful:\x20${result.count\x20||\x200}\x20record(s)`);\x0a\x0a\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20...result,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x0a\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20console.error(\x27Error\x20saat\x20composite\x20read\x20'+_0x3e4db4+_0x4bee7f(0x13f)+_0x3e4db4+'\x20composite\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\x0a\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20});\x0a\x20\x20}\x0a});\x0a\x0a';}function generateWorkflowFunction(_0x4c02ff,_0x15d15b,_0x3ed309,_0x2c3e62=null){const _0x3525e7=a0_0x265454;if(!_0x2c3e62){const _0x439a87=FileUtils[_0x3525e7(0x215)](_0x15d15b);_0x2c3e62=_0x439a87+'Model';}const _0x3e0a09=_0x3ed309[_0x3525e7(0x177)]?JSON[_0x3525e7(0x252)](_0x3ed309['workflow']):'{}',_0x446444=_0x3ed309[_0x3525e7(0x245)]?'\x0a\x20\x20\x20\x20//\x20Request\x20scope\x20ownership\x20verification\x20(Layer\x201\x20RLS)\x0a\x20\x20\x20\x20if\x20(req._requestScope)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20scopeCheck\x20=\x20await\x20'+_0x2c3e62+_0x3525e7(0x192)+_0x15d15b+'\x20data\x20not\x20found\x20or\x20access\x20denied\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a':'';return _0x3525e7(0x235)+_0x4c02ff+'/'+_0x15d15b+'/change-status\x20-\x20Change\x20status\x20'+_0x15d15b+_0x3525e7(0xb8)+(_0x3ed309['primaryKey']||'id')+_0x3525e7(0x293)+_0x446444+'\x0a\x20\x20\x20\x20const\x20workflowConfig\x20=\x20'+_0x3e0a09+_0x3525e7(0x13c)+_0x4c02ff+'\x27;\x0a\x20\x20\x20\x20let\x20result\x20=\x20null;\x0a\x0a\x20\x20\x20\x20//\x20===\x20Integrated\x20Transaction\x20dengan\x20Event\x20Lifecycle\x20===\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20componentEngine:\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder:\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x3ed309[_0x3525e7(0x16a)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20services:\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id:\x20req.headers[\x27user-id\x27]\x20||\x20req.headers[\x27x-user-id\x27]\x20||\x20req.body.updated_by\x20||\x20\x27system\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20JWT\x20forwarding\x20(Layer\x201\x20RLS):\x20Authorization\x20header\x20dari\x20request\x20asli\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20di-forward\x20ke\x20workflow\x20hook\x20call\x20agar\x20endpoint\x20tujuan\x20yang\x20punya\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20requestScope\x20aktif\x20tetap\x20menerima\x20req.user\x20dengan\x20scope\x20yang\x20sama.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Selalu\x20di-set\x20(bukan\x20kondisional\x20pada\x20payload.requestScope)\x20karena\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20hook\x20URL\x20tujuan\x20mungkin\x20punya\x20requestScope\x20sendiri\x20walaupun\x20module\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20sumber\x20tidak.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20authHeader:\x20req.headers.authorization\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Inject\x20services\x20jika\x20tersedia\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20resolveServices\x20}\x20=\x20require(\x27@restforgejs/platform/src/utils/service-resolver\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20eventContext.services\x20=\x20resolveServices();\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(e)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Service\x20resolver\x20opsional\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20result\x20=\x20await\x20'+_0x2c3e62+'.changeStatusData(req.body,\x20workflowConfig,\x20eventContext);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20completed\x20successfully\x20with\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[INTEGRATED\x20TRANSACTION]\x20CHANGE-STATUS\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Fallback:\x20tanpa\x20component\x20engine\x20events\x0a\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20result\x20=\x20await\x20'+_0x2c3e62+'.changeStatusData(req.body,\x20workflowConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27[FALLBACK]\x20CHANGE-STATUS\x20completed\x20without\x20component\x20events\x27);\x0a\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.error(\x27[FALLBACK]\x20CHANGE-STATUS\x20failed:\x27,\x20error.message);\x0a\x20\x20\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Log\x20successful\x20operation\x0a\x20\x20\x20\x20console.log(`'+_0x15d15b+_0x3525e7(0x17a)+_0x15d15b+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Status\x20transition\x20not\x20allowed\x0a\x20\x20\x20\x20if\x20(error.statusCode\x20===\x20422\x20||\x20error.message.includes(\x27Cannot\x20change\x20status\x27)\x20||\x20error.message.includes(\x27No\x20transitions\x20defined\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(422).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Status\x20transition\x20not\x20allowed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Concurrent\x20modification\x20(optimistic\x20concurrency\x20check\x20via\x20status\x20guard\x20clause)\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x27WORKFLOW_CONCURRENT_MODIFICATION\x27\x20||\x20error.statusCode\x20===\x20409)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(409).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Concurrent\x20modification\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validation\x20errors\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27is\x20required\x20for\x27)\x20||\x20error.message.includes(\x27is\x20not\x20a\x20valid\x20field\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Validation\x20error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Hook\x20execution\x20failed\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27hook\x20failed\x27)\x20||\x20error.message.includes(\x27onBefore\x27)\x20||\x20error.message.includes(\x27onAfter\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(502).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Workflow\x20hook\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Record\x20not\x20found\x0a\x20\x20\x20\x20if\x20(error.message\x20===\x20\x27Record\x20not\x20found\x27\x20||\x20error.message.includes(\x27not\x20found\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(404).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Data\x20not\x20found\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27'+_0x15d15b+_0x3525e7(0xd1);}function createPostgresSubmoduleTemplate(_0x14ac90,_0x5df74e,_0x342829){const _0x30d7d2=a0_0x265454,_0x5af44e={'JMZHF':function(_0x27bf11,_0x3ea702){return _0x27bf11===_0x3ea702;},'wNawc':'null','tfkZN':'//\x20Endpoint\x20/info\x20dinonaktifkan\x20via\x20action.info\x20=\x20false'},_0x41d01e=FileUtils['toPascalCase'](_0x5df74e),_0xca0fbc=new Date()[_0x30d7d2(0x23f)]()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x262413=_0x342829['_extendedFields']||{'all':_0x342829[_0x30d7d2(0xe3)]||[]},_0x1987f6=FileUtils['detectTextColumn'](_0x342829['fieldName']||[]),_0x6c218b=FileUtils[_0x30d7d2(0x215)](_0x5df74e),_0x2197ce=_0x6c218b+'Model',_0x27061e=_0x342829['kafka']&&_0x5af44e['JMZHF'](_0x342829['kafka'][_0x30d7d2(0x20b)],!![]),_0x445ac5=buildEndpointFunctions(_0x14ac90,_0x5df74e,_0x342829,_0x262413,_0x1987f6,_0x2197ce,_0x27061e),_0x3ec1d7=_0x27061e?'\x0a//\x20Kafka\x20Producer\x20Service\x20untuk\x20event\x20publishing\x0alet\x20kafkaService\x20=\x20null;\x0atry\x20{\x0a\x20\x20kafkaService\x20=\x20require(\x27@restforgejs/platform/src/services/kafkaService\x27).getInstance();\x0a}\x20catch\x20(e)\x20{\x0a\x20\x20console.error(\x27CRITICAL:\x20Kafka\x20service\x20failed\x20to\x20load\x20but\x20Kafka\x20publishing\x20is\x20configured:\x27,\x20e.message);\x0a\x20\x20throw\x20e;\x0a}\x0a\x0a//\x20Kafka\x20configuration\x20dari\x20payload\x0aconst\x20kafkaConfig\x20=\x20'+JSON['stringify'](_0x342829['kafka']||{'enabled':![]})+';\x0a':'';return _0x30d7d2(0xd0)+_0x2197ce+'\x20=\x20require(\x27../../models/'+_0x14ac90+'/'+_0x5df74e+_0x30d7d2(0x275)+_0x3ec1d7+_0x30d7d2(0xe7)+JSON[_0x30d7d2(0x252)](_0x342829['components'])+_0x30d7d2(0x1c6)+JSON[_0x30d7d2(0x252)](_0x342829[_0x30d7d2(0x1bb)])+_0x30d7d2(0xe9)+JSON['stringify'](_0x342829['components'])+_0x30d7d2(0x1b5)+_0x342829[_0x30d7d2(0x16a)]+_0x30d7d2(0x165)+JSON[_0x30d7d2(0x252)](_0x342829[_0x30d7d2(0xe3)])+',\x0a\x20\x20\x20\x20\x20\x20exportQuery:\x20'+(_0x342829['exportQuery']?'\x27'+_0x342829['exportQuery']+'\x27':'null')+',\x0a\x20\x20\x20\x20\x20\x20columnFormats:\x20'+(_0x342829['columnFormats']?JSON[_0x30d7d2(0x252)](_0x342829['columnFormats']):'null')+_0x30d7d2(0x1d1)+(_0x342829[_0x30d7d2(0x139)]?JSON[_0x30d7d2(0x252)](_0x342829[_0x30d7d2(0x139)]):_0x5af44e['wNawc'])+',\x0a\x20\x20\x20\x20\x20\x20components:\x20'+JSON['stringify'](_0x342829['components'])+_0x30d7d2(0x13b)+(_0x342829[_0x30d7d2(0x2b7)]?JSON[_0x30d7d2(0x252)](_0x342829[_0x30d7d2(0x2b7)]):_0x30d7d2(0x109))+_0x30d7d2(0x102)+(_0x342829[_0x30d7d2(0x194)]?JSON['stringify'](_0x342829['adjustConfig']):_0x30d7d2(0x109))+',\x0a\x20\x20\x20\x20\x20\x20workflowConfig:\x20'+(_0x342829['workflow']?JSON[_0x30d7d2(0x252)](_0x342829['workflow']):_0x5af44e[_0x30d7d2(0x197)])+',\x0a\x20\x20\x20\x20\x20\x20uploadConfig:\x20'+(_0x342829[_0x30d7d2(0x258)]?JSON['stringify'](_0x342829[_0x30d7d2(0x258)]):_0x30d7d2(0x109))+',\x0a\x20\x20\x20\x20\x20\x20requestScope:\x20'+(_0x342829['requestScope']?JSON[_0x30d7d2(0x252)](_0x342829[_0x30d7d2(0x245)]):_0x5af44e['wNawc'])+'\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20componentEngine.loadConfigurationFromObject(componentConfig).then(result\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20if\x20(result.success)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Component\x20configuration\x20loaded\x20for\x20'+_0x14ac90+'/'+_0x5df74e+_0x30d7d2(0x1f5)+_0x14ac90+'/'+_0x5df74e+_0x30d7d2(0x227)+_0x14ac90+'/'+_0x5df74e+'\x20but\x20components\x20are\x20configured:`,\x20e.message);\x0a\x20\x20\x20\x20throw\x20e;\x0a\x20\x20}\x0a\x20\x20//\x20Jika\x20tidak\x20ada\x20components,\x20silent\x20skip\x20wajar\x0a\x20\x20console.log(`No\x20component\x20engine\x20required\x20for\x20'+_0x14ac90+'/'+_0x5df74e+_0x30d7d2(0xfc)+_0x41d01e+_0x30d7d2(0xbf)+_0xca0fbc+'\x0a\x20*\x0a\x20*\x20Endpoints\x20untuk\x20'+_0x5df74e+'\x20dengan\x20actions:\x20'+getEnabledActions(_0x342829)['join'](',\x20')+'\x0a\x20*\x20Table:\x20'+_0x342829[_0x30d7d2(0x16a)]+'\x0a\x20*\x20Fields:\x20'+(_0x342829[_0x30d7d2(0xe3)]?_0x342829['fieldName'][_0x30d7d2(0x272)]:0x0)+_0x30d7d2(0x249)+_0x14ac90+'/'+_0x5df74e+'\x27\x20+\x20req.path\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20spesifik\x20untuk\x20endpoint\x20tertentu\x0a\x20\x20\x20\x20\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x20//\x20menghapus\x20/\x20di\x20awal\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20get\x20membutuhkan\x20where\x20dalam\x20format\x20{key,\x20value}\x20atau\x20[{key,\x20value}]\x20(1\x20elemen)\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27first\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Normalize:\x20array\x201\x20elemen\x20->\x20object\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!req.body.where\x20||\x20typeof\x20req.body.where\x20!==\x20\x27object\x27\x20||\x20Array.isArray(req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Where\x20must\x20be\x20a\x20single\x20condition\x20{key,\x20value}\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22field1\x22,\x20\x22field2\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(req.body.where.conditions\x20||\x20req.body.where.logic)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Advanced\x20where\x20format\x20is\x20not\x20supported\x20in\x20/first\x20endpoint.\x20Use\x20/read\x20endpoint\x20for\x20complex\x20queries\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20{\x20\x22key\x22:\x20\x22field_name\x22,\x20\x22value\x22:\x20\x22field_value\x22\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20delete\x20membutuhkan\x20where\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27delete\x27\x20&&\x20(!req.body.where))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27DELETE\x20payload\x20must\x20include\x20a\x20where\x20property\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22id\x22,\x20\x22value\x22:\x20\x22your-id-value\x22\x20}]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Endpoint\x20add\x20membutuhkan\x20data\x20yang\x20valid\x0a\x20\x20\x20\x20\x20\x20if\x20(endpoint\x20===\x20\x27add\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Filter\x20field\x20yang\x20memiliki\x20autoGenerate\x20dari\x20required\x20check\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20autoGenerateFields\x20=\x20'+(_0x342829[_0x30d7d2(0x19f)]?JSON[_0x30d7d2(0x252)](_0x342829[_0x30d7d2(0x19f)]['filter'](_0x5a12e6=>_0x5a12e6['constraints']&&_0x5a12e6['constraints']['autoGenerate'])['map'](_0x375c4e=>_0x375c4e[_0x30d7d2(0x262)])):'[]')+_0x30d7d2(0x113)+_0x342829['fieldName']['filter'](_0x23661e=>_0x23661e!=='id')['slice'](0x0,0x1)[_0x30d7d2(0x182)]('\x27,\x20\x27')+_0x30d7d2(0x18a)+(_0x342829[_0x30d7d2(0x24f)]||'id')+'\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!req.body[primaryKey])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Missing\x20required\x20field\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20update`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Error\x20validating\x20payload\x20for\x20${req.path}:`,\x20error);\x0a\x20\x20\x20\x20\x20\x20return\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x0a\x20\x20next();\x0a});\x0a'+buildRequestScopeMiddleware(_0x342829,_0x5df74e)+buildSoftDeleteReadMiddleware(_0x342829)+'\x0a'+_0x445ac5+'\x0a\x0a'+(_0x342829['action']?.[_0x30d7d2(0x1c5)]!==![]?'//\x20Endpoint\x20info\x20—\x20self-documenting\x20API\x0arouter.get(\x27/info\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20const\x20actions\x20=\x20'+JSON['stringify']({'datatables':!!_0x342829[_0x30d7d2(0x174)]?.[_0x30d7d2(0x11e)],'read':!!_0x342829[_0x30d7d2(0x174)]?.[_0x30d7d2(0x1c3)],'first':!!_0x342829['action']?.[_0x30d7d2(0x14c)],'create':!!_0x342829['action']?.[_0x30d7d2(0x1ee)],'update':!!_0x342829[_0x30d7d2(0x174)]?.['update'],'delete':!!_0x342829[_0x30d7d2(0x174)]?.['delete'],'lookup':!!_0x342829['action']?.['lookup'],'export':!!_0x342829['action']?.[_0x30d7d2(0x142)],'import':!!_0x342829[_0x30d7d2(0x174)]?.['import'],'workflow':!!_0x342829['action']?.['workflow'],'info':_0x342829['action']?.[_0x30d7d2(0x1c5)]!==![]})+';\x0a\x0a\x20\x20\x20\x20const\x20modelInfo\x20=\x20await\x20'+_0x2197ce+_0x30d7d2(0x248)+_0x5df74e+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x14ac90+_0x30d7d2(0x114)+_0xca0fbc+_0x30d7d2(0x175)+_0x5df74e+_0x30d7d2(0x22a):_0x5af44e['tfkZN'])+_0x30d7d2(0x243)+_0x5df74e+_0x30d7d2(0xc8);}function createPostgresMainModuleTemplate(_0x277fec){const _0x55eb85=a0_0x265454,_0x2d980a=FileUtils[_0x55eb85(0x1de)](_0x277fec),_0x40eaa2=FileUtils['toCamelCase'](_0x277fec),_0x1dc4bd=new Date()['toISOString']()['replace']('T','\x20')[_0x55eb85(0x224)](/\.\d{3}Z$/,'');return'const\x20express\x20=\x20require(\x27express\x27);\x0aconst\x20bodyParser\x20=\x20require(\x27body-parser\x27);\x0aconst\x20path\x20=\x20require(\x27path\x27);\x0aconst\x20fs\x20=\x20require(\x27fs\x27);\x0aconst\x20{\x20v7:\x20uuidv7\x20}\x20=\x20require(\x27uuid\x27);\x0aconst\x20{\x20logger,\x20logServerReady,\x20logEndpointRegistered,\x20createRequestLogger,\x20logRequest\x20}\x20=\x20require(\x27@restforgejs/platform/src/utils/logger\x27);\x0aconst\x20ExportHandler\x20=\x20require(\x27@restforgejs/platform/src/components/handlers/export_handler\x27);\x0aconst\x20ImportHandler\x20=\x20require(\x27@restforgejs/platform/src/components/handlers/import_handler\x27);\x0aconst\x20UploadHandler\x20=\x20require(\x27@restforgejs/platform/src/components/handlers/upload_handler\x27);\x0aconst\x20{\x20extractExportConfigFromEndpoint,\x20extractImportConfigFromEndpoint,\x20extractUploadConfigFromEndpoint\x20}\x20=\x20require(\x27@restforgejs/platform/src/utils/config-extractor\x27);\x0aconst\x20rateLimiter\x20=\x20require(\x27@restforgejs/platform/src/middleware/rate-limiter\x27);\x0aconst\x20idempotencyMiddleware\x20=\x20require(\x27@restforgejs/platform/src/middleware/idempotency\x27);\x0aconst\x20bodyOptionsMiddleware\x20=\x20require(\x27@restforgejs/platform/src/middleware/body-options\x27);\x0aconst\x20corsMiddleware\x20=\x20require(\x27@restforgejs/platform/src/middleware/cors\x27);\x0aconst\x20securityHeaders\x20=\x20require(\x27@restforgejs/platform/src/middleware/security-headers\x27);\x0a\x0a/**\x0a\x20*\x20'+_0x2d980a+'\x20Module\x20-\x20Auto-generated\x20on\x20'+_0x1dc4bd+_0x55eb85(0x1dd)+_0x277fec+_0x55eb85(0xb6)+_0x2d980a+'\x27;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Configuration\x20options\x0a\x20\x20\x20\x20\x20\x20const\x20loggingEnabled\x20=\x20config.logging\x20!==\x20false;\x0a\x20\x20\x20\x20\x20\x20const\x20apiKeyRequired\x20=\x20!!config.key;\x0a\x0a\x20\x20\x20\x20\x20\x20logger.info({\x0a\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27module_starting\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20module:\x20moduleNameCapitalized,\x0a\x20\x20\x20\x20\x20\x20\x20\x20port,\x0a\x20\x20\x20\x20\x20\x20\x20\x20cors:\x20process.env.CORS_ENABLED\x20!==\x20\x27false\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20helmet:\x20process.env.HELMET_ENABLED\x20===\x20\x27true\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20logging:\x20loggingEnabled,\x0a\x20\x20\x20\x20\x20\x20\x20\x20apiKey:\x20apiKeyRequired\x0a\x20\x20\x20\x20\x20\x20},\x20`Starting\x20${moduleNameCapitalized}\x20module`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20CORS\x20middleware\x20(konfigurasi\x20via\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x20\x20\x20\x20\x20\x20app.use(corsMiddleware.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Security\x20headers\x20middleware\x20(konfigurasi\x20via\x20HELMET_ENABLED\x20di\x20.env)\x0a\x20\x20\x20\x20\x20\x20app.use(securityHeaders.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20JSON\x20parsing\x20middleware\x20dengan\x20error\x20handling\x0a\x20\x20\x20\x20\x20\x20app.use(bodyParser.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20limit:\x20\x2710mb\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20verify:\x20(req,\x20res,\x20buf,\x20encoding)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20empty\x20buffer\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(buf.length\x20===\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JSON.parse(buf);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(error)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20console.error(`JSON\x20Parse\x20Error\x20from\x20${req.ip}:\x20${error.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20res.status(400).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Invalid\x20JSON\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27The\x20payload\x20sent\x20is\x20not\x20a\x20valid\x20JSON\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20details:\x20error.message,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27Invalid\x20JSON\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20URL-encoded\x20parsing\x20middleware\x0a\x20\x20\x20\x20\x20\x20app.use(bodyParser.urlencoded({\x0a\x20\x20\x20\x20\x20\x20\x20\x20extended:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20limit:\x20\x2710mb\x27\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Request\x20logging\x20middleware\x20(Pino-based)\x0a\x20\x20\x20\x20\x20\x20if\x20(loggingEnabled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20app.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Generate\x20request\x20ID\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.id\x20=\x20req.headers[\x27x-request-id\x27]\x20||\x20uuidv7();\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20res.set(\x27X-Request-ID\x27,\x20req.id);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Create\x20scoped\x20logger\x20untuk\x20request\x20ini\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20req.log\x20=\x20createRequestLogger({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20method:\x20req.method,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20path:\x20req.path,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ip:\x20req.ip\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Capture\x20start\x20time\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20startTime\x20=\x20process.hrtime();\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Log\x20response\x20ketika\x20selesai\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20res.on(\x27finish\x27,\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20[seconds,\x20nanoseconds]\x20=\x20process.hrtime(startTime);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20durationMs\x20=\x20parseFloat((seconds\x20*\x201000\x20+\x20nanoseconds\x20/\x201e6).toFixed(2));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logRequest(req,\x20res,\x20durationMs);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20API\x20Key\x20validation\x20middleware\x20(constant-time\x20comparison)\x0a\x20\x20\x20\x20\x20\x20if\x20(apiKeyRequired)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20crypto\x20=\x20require(\x27crypto\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20expectedKey\x20=\x20Buffer.from(config.key);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20(req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20apiKey\x20=\x20req.headers[\x27x-api-key\x27];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!apiKey)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(401).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unauthorized\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20or\x20missing\x20API\x20Key\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20providedKey\x20=\x20Buffer.from(apiKey);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(expectedKey.length\x20!==\x20providedKey.length\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!crypto.timingSafeEqual(expectedKey,\x20providedKey))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20res.status(401).json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20success:\x20false,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20\x27Unauthorized\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20or\x20missing\x20API\x20Key\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20next();\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Rate\x20limiting\x20middleware\x20(store:\x20memory\x20untuk\x20single\x20mode,\x20Redis\x20untuk\x20cluster\x20mode)\x0a\x20\x20\x20\x20\x20\x20rateLimiter.setStore(config.cluster\x20?\x20\x27redis\x27\x20:\x20\x27memory\x27);\x0a\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20rateLimiter.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Idempotency\x20middleware\x20(protects\x20mutation\x20endpoints\x20from\x20duplicate\x20execution)\x0a\x20\x20\x20\x20\x20\x20if\x20(process.env.IDEMPOTENCY_ENABLED\x20===\x20\x27true\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20idempotencyMiddleware.middleware());\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Body\x20options\x20middleware\x20(extract\x20{data,\x20options}\x20format\x20dari\x20request\x20body)\x0a\x20\x20\x20\x20\x20\x20app.use(\x27/api\x27,\x20bodyOptionsMiddleware.middleware());\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Auto-load\x20plugin\x20(jika\x20ada)\x0a\x20\x20\x20\x20\x20\x20const\x20moduleName\x20=\x20\x27'+_0x277fec+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20pluginPath\x20=\x20path.join(__dirname,\x20\x27..\x27,\x20\x27plugins\x27,\x20`${moduleName}-plugin.js`);\x0a\x20\x20\x20\x20\x20\x20let\x20plugin\x20=\x20null;\x0a\x20\x20\x20\x20\x20\x20if\x20(fs.existsSync(pluginPath))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20plugin\x20=\x20require(pluginPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plugin.onBeforeEndpointsLoad)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20plugin.onBeforeEndpointsLoad(app,\x20config);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x20event:\x20\x27plugin_loaded\x27,\x20plugin:\x20`${moduleName}-plugin`\x20},\x20`Plugin\x20loaded:\x20${moduleName}-plugin.js`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(pluginError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x20event:\x20\x27plugin_load_error\x27,\x20error:\x20pluginError.message\x20},\x20`Failed\x20to\x20load\x20plugin:\x20${moduleName}-plugin.js`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Global\x20health\x20check\x20endpoint\x20(tanpa\x20prefix\x20module)\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/health\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20healthInfo\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27ok\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString().replace(\x27T\x27,\x20\x27\x20\x27).replace(/\x5c.\x5cd{3}Z$/,\x20\x27\x27),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20service:\x20\x27'+_0x277fec+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Module-specific\x20health\x20check\x20endpoint\x20(dengan\x20prefix\x20module)\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/api/'+_0x277fec+'/health\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20healthInfo\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20status:\x20\x27ok\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString().replace(\x27T\x27,\x20\x27\x20\x27).replace(/\x5c.\x5cd{3}Z$/,\x20\x27\x27),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20service:\x20\x27'+_0x277fec+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20uptime:\x20process.uptime(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20memory:\x20process.memoryUsage(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20system:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20platform:\x20process.platform,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nodeVersion:\x20process.version,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20pid:\x20process.pid\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20res.json(healthInfo);\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Service\x20info\x20endpoint\x0a\x20\x20\x20\x20\x20\x20app.get(\x27/api/'+_0x277fec+_0x55eb85(0xb5)+_0x2d980a+_0x55eb85(0x2ae)+_0x277fec+_0x55eb85(0xcc)+_0x1dc4bd+'\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Load\x20dan\x20register\x20endpoint\x20modules\x0a\x20\x20\x20\x20\x20\x20//\x20Binary-compatible:\x20Use\x20working\x20directory\x20instead\x20of\x20__dirname\x0a\x20\x20\x20\x20\x20\x20const\x20isBunCompiled\x20=\x20typeof\x20Bun\x20!==\x20\x27undefined\x27\x20&&\x20!process.argv[1];\x0a\x20\x20\x20\x20\x20\x20const\x20getWorkingDir\x20=\x20()\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Check\x20if\x20running\x20as\x20compiled\x20binary\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(isBunCompiled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Running\x20as\x20compiled\x20binary:\x20use\x20directory\x20where\x20binary\x20is\x20located\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20path.dirname(process.execPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Running\x20as\x20Node.js/Bun\x20script:\x20__dirname\x20is\x20already\x20in\x20src/modules\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20So\x20we\x20just\x20need\x20to\x20add\x20the\x20module\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20__dirname;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20workingDir\x20=\x20getWorkingDir();\x0a\x20\x20\x20\x20\x20\x20//\x20For\x20compiled\x20binary:\x20workingDir\x20is\x20binary\x20directory,\x20need\x20full\x20path\x20src/modules/moduleName\x0a\x20\x20\x20\x20\x20\x20//\x20For\x20script:\x20workingDir\x20is\x20already\x20src/modules/,\x20just\x20add\x20moduleName\x0a\x20\x20\x20\x20\x20\x20const\x20modulesDir\x20=\x20isBunCompiled\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20path.join(workingDir,\x20\x27src\x27,\x20\x27modules\x27,\x20\x27'+_0x277fec+'\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20path.join(workingDir,\x20\x27'+_0x277fec+_0x55eb85(0x101)+_0x277fec+'/${endpointName}`;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20app.use(endpointPrefix,\x20endpointRouter);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logEndpointRegistered(endpointName,\x20endpointPrefix);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20export\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20exportConfig\x20=\x20extractExportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(exportConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ExportHandler.registerRoutes(app,\x20\x27'+_0x277fec+'\x27,\x20endpointName,\x20exportConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(exportError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27export_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20exportError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Export\x20registration\x20failed\x20for\x20${endpointName}:\x20${exportError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20import\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20importConfig\x20=\x20extractImportConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(importConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ImportHandler.registerRoutes(app,\x20\x27'+_0x277fec+'\x27,\x20endpointName,\x20importConfig);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.info({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27import_routes_registered\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20table:\x20importConfig.tableName\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Import\x20routes\x20registered\x20for\x20${endpointName}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(importError)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20logger.error({\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20event:\x20\x27import_registration_error\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20endpointName,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20error:\x20importError.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x20`Import\x20registration\x20failed\x20for\x20${endpointName}:\x20${importError.message}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Register\x20upload\x20routes\x20untuk\x20endpoint\x20ini\x20(auto-detect\x20dari\x20embedded\x20config)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20uploadConfig\x20=\x20extractUploadConfigFromEndpoint(endpointPath);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(uploadConfig)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UploadHandler.registerRoutes(app,\x20\x27'+_0x277fec+_0x55eb85(0x1ff)+_0x277fec+_0x55eb85(0x28d)+_0x277fec+'/health`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20serviceInfo:\x20`http://${displayHost}:${port}/api/'+_0x277fec+_0x55eb85(0x1c9)+_0x40eaa2+'\x20=\x20{\x20execute\x20};\x0amodule.exports.moduleName\x20=\x20\x27'+_0x277fec+_0x55eb85(0xfe)+_0x1dc4bd+'\x27;';}module[a0_0x265454(0x1da)]={'createPostgresModelTemplate':createPostgresModelTemplate,'createPostgresSubmoduleTemplate':createPostgresSubmoduleTemplate,'createPostgresMainModuleTemplate':createPostgresMainModuleTemplate};
|