@restforgejs/platform 5.2.4 → 5.2.10
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/generators/cli/fast-track.js +235 -30
- package/generators/lib/migrate/backend-payload-migrator.js +39 -17
- package/generators/lib/migrate/field-type-resolver.js +64 -7
- package/generators/lib/payload/payload-runner.js +72 -6
- 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
|
-
const a0_0x1dae89=a0_0x231e;(function(_0x1f632f,_0x15cd8d){const _0x1f15aa=a0_0x231e,_0x4dc002=_0x1f632f();while(!![]){try{const _0x58d77a=-parseInt(_0x1f15aa(0x1ae))/0x1+-parseInt(_0x1f15aa(0x1a4))/0x2+-parseInt(_0x1f15aa(0x2cb))/0x3*(parseInt(_0x1f15aa(0x242))/0x4)+-parseInt(_0x1f15aa(0x1b0))/0x5*(-parseInt(_0x1f15aa(0x22b))/0x6)+-parseInt(_0x1f15aa(0x1a6))/0x7*(parseInt(_0x1f15aa(0x25c))/0x8)+parseInt(_0x1f15aa(0x2d3))/0x9+-parseInt(_0x1f15aa(0x24e))/0xa*(-parseInt(_0x1f15aa(0x211))/0xb);if(_0x58d77a===_0x15cd8d)break;else _0x4dc002['push'](_0x4dc002['shift']());}catch(_0x4873ee){_0x4dc002['push'](_0x4dc002['shift']());}}}(a0_0x4b4b,0xb662c));const FileUtils=require('../utils/file-utils'),{IS_DELETED_COLUMN,DELETED_AT_COLUMN,DELETED_BY_COLUMN,SOFT_DELETE_COLUMNS,isSoftDeleteEnabled}=require(a0_0x1dae89(0x31f));function softDeleteVisibilityFilter(_0x58386d){const _0x1e7aaa=a0_0x1dae89,_0x136121={'wnawt':_0x1e7aaa(0x33b),'hYkcx':function(_0x5aa45a,_0x4b15ce){return _0x5aa45a===_0x4b15ce;},'OfsLT':_0x1e7aaa(0x2be),'KChqr':function(_0x2b75ae,_0x100f71){return _0x2b75ae===_0x100f71;},'Mtqrt':'false'};if(!isSoftDeleteEnabled(_0x58386d))return null;const _0x1f5a9c=_0x58386d['softDelete']&&_0x58386d[_0x1e7aaa(0x1b8)]['visibility']||_0x136121[_0x1e7aaa(0x1eb)];if(_0x136121[_0x1e7aaa(0x251)](_0x1f5a9c,_0x136121[_0x1e7aaa(0x1f5)]))return null;return _0x136121['KChqr'](_0x1f5a9c,_0x1e7aaa(0x33f))?_0x1e7aaa(0x190):_0x136121['Mtqrt'];}function assertNoFileReferenceLeftover(_0xb3660){const _0x3e1024=a0_0x1dae89,_0x69341a={'XBQMI':'viewQuery','TNtgG':_0x3e1024(0x2a4),'pySLi':function(_0x17f19b,_0x520895){return _0x17f19b+_0x520895;}},_0x149039=[['datatablesQuery',_0xb3660['datatablesQuery']],[_0x69341a['XBQMI'],_0xb3660[_0x3e1024(0x178)]],['masterDetail.detailConfig.detailQuery',_0xb3660['masterDetail']&&_0xb3660[_0x3e1024(0x261)][_0x3e1024(0x354)]&&_0xb3660['masterDetail']['detailConfig']['detailQuery']]];for(const [_0x9f7d74,_0x167b92]of _0x149039){if(typeof _0x167b92===_0x69341a[_0x3e1024(0x253)]&&_0x167b92['startsWith'](_0x3e1024(0x312)))throw new Error(_0x69341a[_0x3e1024(0x313)](_0x3e1024(0x1cb)+_0x9f7d74+'\x20still\x20contains\x20\x22file:\x22\x20reference\x20('+_0x167b92+_0x3e1024(0x295),'Expected\x20expanded\x20SQL\x20string.\x20Check\x20PayloadProcessor.processFileReferences\x20flow.'));}}function buildValidFieldsString(_0x3d8d67){const _0x578aac=a0_0x1dae89,_0x12256f={'aqiVP':function(_0x4101ae,_0x2d7980){return _0x4101ae(_0x2d7980);}},_0x47491a=(_0x3d8d67[_0x578aac(0x224)]||[])['slice']();if(_0x12256f[_0x578aac(0x2b0)](isSoftDeleteEnabled,_0x3d8d67))for(const _0x4c7f36 of SOFT_DELETE_COLUMNS){if(!_0x47491a['includes'](_0x4c7f36))_0x47491a['push'](_0x4c7f36);}return _0x47491a[_0x578aac(0x171)](_0xae042e=>'\x27'+_0xae042e+'\x27')['join'](_0x578aac(0x24b));}function buildFormatResponseDataBody(_0x2719ef){const _0x34083a=a0_0x1dae89,_0x2a6e68={'OYXSw':'\x20\x20\x20\x20return\x20super.formatResponseData(data);','jmeKO':function(_0x127fa5,_0x238fd8){return _0x127fa5+_0x238fd8;},'qHceg':function(_0x4d0e0d,_0xc72fa2){return _0x4d0e0d+_0xc72fa2;},'BdPFa':function(_0x39d5b4,_0x289ea4){return _0x39d5b4+_0x289ea4;},'UJTQP':function(_0x2a183a,_0x25295d){return _0x2a183a+_0x25295d;},'KKBgG':_0x34083a(0x1b5),'cUFmH':'\x20\x20\x20\x20//\x20Soft-delete\x20middle-ground\x20(audit-parity):\x20tiga\x20kolom\x20soft-delete\x20tetap\x20di\x20validFields\x0a','pDjxj':_0x34083a(0x301),'OVdgi':'\x20\x20\x20\x20//\x20(/read,\x20/first,\x20datatables,\x20create,\x20update)\x20di\x20satu\x20chokepoint,\x20tanpa\x20ubah\x20BaseModel/getReadQuery.\x0a','YlURf':_0x34083a(0x29d)},_0x19eb1b='\x20\x20\x20\x20//\x20Gunakan\x20parent\x20method\x20yang\x20sudah\x20include\x20datetime\x20formatting\x0a'+_0x2a6e68[_0x34083a(0x205)];if(!isSoftDeleteEnabled(_0x2719ef))return _0x19eb1b;return _0x2a6e68['jmeKO'](_0x2a6e68['qHceg'](_0x2a6e68[_0x34083a(0x202)](_0x2a6e68[_0x34083a(0x2c5)](_0x2a6e68['BdPFa']('\x20\x20\x20\x20//\x20Gunakan\x20parent\x20method\x20yang\x20sudah\x20include\x20datetime\x20formatting\x0a',_0x2a6e68[_0x34083a(0x2ba)]),_0x2a6e68[_0x34083a(0x263)])+_0x2a6e68['pDjxj'],_0x2a6e68[_0x34083a(0x235)])+_0x34083a(0x2c7),'\x20\x20\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON[_0x34083a(0x199)](SOFT_DELETE_COLUMNS)+')\x20{\x0a'),'\x20\x20\x20\x20\x20\x20\x20\x20delete\x20formatted[__sdCol];\x0a')+'\x20\x20\x20\x20\x20\x20}\x0a'+_0x2a6e68[_0x34083a(0x1e3)]+'\x20\x20\x20\x20return\x20formatted;';}function buildAuditColumnsSection(_0x3d06f8,_0x2ee223){const _0x593dfe=a0_0x1dae89,_0x6424e8={'CqkUs':function(_0x1a696c,_0x59a632){return _0x1a696c===_0x59a632;},'MnYzz':'object','UwzkE':_0x593dfe(0x237)};if(!(_0x593dfe(0x221)in _0x3d06f8))return'';const _0x503fd3=_0x3d06f8[_0x593dfe(0x221)];if(_0x6424e8['CqkUs'](_0x503fd3,![])||_0x503fd3===null)return'\x0a'+_0x2ee223+'//\x20Tabel\x20tanpa\x20audit\x20columns:\x20disable\x20injection\x20helper\x0a'+_0x2ee223+_0x593dfe(0x2eb);if(typeof _0x503fd3===_0x6424e8[_0x593dfe(0x2ec)]&&!Array['isArray'](_0x503fd3)){const _0x17f28a=['createdAt',_0x593dfe(0x2b5),_0x6424e8[_0x593dfe(0x16f)],_0x593dfe(0x27c)],_0x16afd0={};_0x17f28a[_0x593dfe(0x306)](_0x111368=>{if(_0x503fd3[_0x111368]!==undefined)_0x16afd0[_0x111368]=_0x503fd3[_0x111368];});const _0xbac50b=JSON['stringify'](_0x16afd0,null,0x2)['split']('\x0a')['map']((_0x215e0d,_0x104ada)=>_0x104ada===0x0?_0x215e0d:_0x2ee223+_0x215e0d)['join']('\x0a');return'\x0a'+_0x2ee223+_0x593dfe(0x191)+_0x2ee223+'this.auditColumns\x20=\x20'+_0xbac50b+';\x0a';}throw new Error(_0x593dfe(0x1d8)+_0x3d06f8[_0x593dfe(0x1f8)]+':\x20must\x20be\x20false,\x20null,\x20or\x20object');}function buildSearchColumnsCode(_0x353ff8){const _0x12c5bb=a0_0x1dae89;if(!_0x353ff8[_0x12c5bb(0x366)]||!Array[_0x12c5bb(0x2fc)](_0x353ff8[_0x12c5bb(0x366)]))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'](_0x353ff8[_0x12c5bb(0x366)],null,0x4)+';\x0a\x20\x20}\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Build\x20search\x20WHERE\x20clause\x20berdasarkan\x20searchable\x20columns\x0a\x20\x20\x20*\x20@param\x20{string}\x20searchValue\x20-\x20Nilai\x20pencarian\x0a\x20\x20\x20*\x20@param\x20{string}\x20searchBy\x20-\x20Kolom\x20yang\x20dicari\x0a\x20\x20\x20*\x20@returns\x20{string}\x20WHERE\x20clause\x0a\x20\x20\x20*/\x0a\x20\x20buildSearchWhereClause(searchValue,\x20searchBy\x20=\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20if\x20(!searchValue\x20||\x20searchValue.trim()\x20===\x20\x27\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20const\x20searchableColumns\x20=\x20this.getSearchableColumns();\x0a\x20\x20\x20\x20const\x20escapedSearchValue\x20=\x20searchValue.replace(/\x27/g,\x20\x22\x27\x27\x22);\x0a\x20\x20\x20\x20const\x20likeValue\x20=\x20`%${escapedSearchValue}%`;\x0a\x0a\x20\x20\x20\x20if\x20(searchBy\x20&&\x20searchBy\x20!==\x20\x27all\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Cari\x20di\x20kolom\x20spesifik\x0a\x20\x20\x20\x20\x20\x20const\x20column\x20=\x20searchableColumns.find(col\x20=>\x20col.name\x20===\x20searchBy);\x0a\x20\x20\x20\x20\x20\x20if\x20(column\x20&&\x20column.searchable)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20`WHERE\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Cari\x20di\x20semua\x20kolom\x20searchable\x0a\x20\x20\x20\x20const\x20conditions\x20=\x20searchableColumns\x0a\x20\x20\x20\x20\x20\x20.filter(col\x20=>\x20col.searchable)\x0a\x20\x20\x20\x20\x20\x20.map(col\x20=>\x20`UPPER(${col.name})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`);\x0a\x0a\x20\x20\x20\x20if\x20(conditions.length\x20>\x200)\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20`WHERE\x20(${conditions.join(\x27\x20OR\x20\x27)})`;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20\x27\x27;\x0a\x20\x20}';}function buildFiltersCode(_0x4b2341){const _0x5d0d56=a0_0x1dae89;if(!_0x4b2341['filters']||!Array['isArray'](_0x4b2341['filters']))return'';return _0x5d0d56(0x262)+JSON['stringify'](_0x4b2341['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(_0x36899f,_0x27cd2c='a.'){const _0x731a9d=a0_0x1dae89,_0x4bb633={'rekmf':function(_0x35f05d,_0xdff2e1){return _0x35f05d!==_0xdff2e1;},'ZBgnb':'boolean','GGYwk':function(_0x56c95f,_0x1fb4e8){return _0x56c95f===_0x1fb4e8;},'FkfJa':'string','bMyOY':'number'};if(!_0x36899f||_0x4bb633[_0x731a9d(0x1b2)](typeof _0x36899f,_0x731a9d(0x343)))return'';const _0x4e8c51=[];for(const [_0x2a8bdc,_0xdf51af]of Object[_0x731a9d(0x2a8)](_0x36899f)){if(typeof _0xdf51af===_0x4bb633[_0x731a9d(0x2c0)])_0x4e8c51[_0x731a9d(0x209)](''+_0x27cd2c+_0x2a8bdc+_0x731a9d(0x280)+_0xdf51af);else{if(_0x4bb633['GGYwk'](typeof _0xdf51af,_0x4bb633[_0x731a9d(0x1f4)]))_0x4e8c51[_0x731a9d(0x209)](''+_0x27cd2c+_0x2a8bdc+'\x20=\x20\x27'+_0xdf51af['replace'](/'/g,'\x27\x27')+'\x27');else typeof _0xdf51af===_0x4bb633[_0x731a9d(0x170)]&&_0x4e8c51[_0x731a9d(0x209)](''+_0x27cd2c+_0x2a8bdc+_0x731a9d(0x280)+_0xdf51af);}}return _0x4e8c51['join'](_0x731a9d(0x333));}function buildRequestScopeMiddleware(_0x4c948f,_0x4c1b55){const _0x192083=a0_0x1dae89;if(!_0x4c948f['requestScope'])return'';const {column:_0x1d882d,source:_0x2cd880,bypassRoles:_0xb674d5}=_0x4c948f['requestScope'],_0x1ec878=JSON['stringify'](_0xb674d5||[]),_0x54c48e=(_0x4c1b55||'')[_0x192083(0x1c6)](/-/g,'_');return'\x0a//\x20───\x20Request\x20Scope\x20Middleware\x20(Layer\x201\x20RLS)\x20──────────────────────────\x0a//\x20Dynamic\x20per-request\x20filtering\x20by\x20\x27'+_0x1d882d+'\x27\x20from\x20'+_0x2cd880+_0x192083(0x266)+_0x1ec878+';\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'+_0x2cd880+_0x192083(0x282)+_0x1d882d+_0x192083(0x1a0)+_0x1d882d+'\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'+_0x1d882d+_0x192083(0x232)+_0x1d882d+_0x192083(0x2f3)+_0x54c48e+_0x192083(0x328)+_0x1d882d+'\x27]\x20=\x20scopeValue;\x0a\x20\x20}\x0a\x0a\x20\x20next();\x0a});\x0a';}function buildSoftDeleteReadMiddleware(_0x43ca3b){const _0x107389=a0_0x1dae89,_0x5d17b1={'QJwKq':function(_0x291d4a,_0xd642db){return _0x291d4a(_0xd642db);},'tmYCw':function(_0x59ffa7,_0x1c233d){return _0x59ffa7===_0x1c233d;},'krahJ':'active_only'},_0x47e2ed=_0x5d17b1['QJwKq'](softDeleteVisibilityFilter,_0x43ca3b);if(_0x5d17b1[_0x107389(0x31c)](_0x47e2ed,null))return'';const _0x429e12=_0x43ca3b[_0x107389(0x1b8)]&&_0x43ca3b['softDelete'][_0x107389(0x357)]||_0x5d17b1[_0x107389(0x2f6)];return _0x107389(0x1a8)+IS_DELETED_COLUMN+'\x27\x20untuk\x20endpoint\x20read\x20berdasarkan\x0a//\x20visibility\x20config\x20(\x27'+_0x429e12+'\x27).\x20Config-driven\x20(tanpa\x20body\x20options),\x20diterapkan\x20tanpa\x0a//\x20syarat\x20auth\x20(visibility\x20filter,\x20BUKAN\x20RLS\x20—\x20karena\x20itu\x20tidak\x20ada\x20guard\x20!req.user).\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20!==\x20\x27POST\x27)\x20return\x20next();\x0a\x0a\x20\x20const\x20endpoint\x20=\x20req.path.substring(1);\x0a\x20\x20if\x20(![\x27datatables\x27,\x20\x27read\x27,\x20\x27lookup\x27,\x20\x27aggregate\x27].includes(endpoint))\x20return\x20next();\x0a\x0a\x20\x20const\x20softDeleteCondition\x20=\x20{\x20key:\x20\x27'+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x47e2ed+_0x107389(0x358);}function buildLookupOverrideCode(_0x2d9ce9,_0x6c24f3){const _0x529e0c=a0_0x1dae89,_0x3d7fa6={'xKbuw':function(_0x1ae5c4,_0xdd2b44){return _0x1ae5c4(_0xdd2b44);},'NfPQP':function(_0x1dde64,_0x250c2a){return _0x1dde64!==_0x250c2a;},'eRbmz':function(_0x1f025e,_0x2eb2ba){return _0x1f025e+_0x2eb2ba;},'lFjLG':'\x20=\x20','mXZpc':_0x529e0c(0x198)},_0x5b4c46=FileUtils[_0x529e0c(0x359)](_0x6c24f3[_0x529e0c(0x224)]||[]),_0x12d212=FileUtils[_0x529e0c(0x213)](_0x2d9ce9),_0x2d2257=_0x6c24f3[_0x529e0c(0x2ae)]||{'all':_0x6c24f3[_0x529e0c(0x224)]||[]},_0x3c16c5=_0x6c24f3[_0x529e0c(0x18c)]||_0x6c24f3[_0x529e0c(0x224)]&&_0x6c24f3['fieldName'][0x0]||'id',_0xe63bb9=_0x6c24f3['defaultScope']&&_0x6c24f3[_0x529e0c(0x23b)][_0x529e0c(0x1f6)]?buildDefaultScopeSQL(_0x6c24f3[_0x529e0c(0x23b)]['lookup']):'',_0x2d234b=((()=>{const _0x24a9d7=_0x529e0c,_0x2123fb=_0x3d7fa6[_0x24a9d7(0x17c)](softDeleteVisibilityFilter,_0x6c24f3);return _0x3d7fa6['NfPQP'](_0x2123fb,null)?_0x3d7fa6[_0x24a9d7(0x18f)]('a.',IS_DELETED_COLUMN)+_0x3d7fa6[_0x24a9d7(0x17b)]+_0x2123fb:'';})()),_0x532870=[_0xe63bb9,_0x2d234b]['filter'](Boolean)[_0x529e0c(0x2f7)](_0x529e0c(0x333));return _0x529e0c(0x326)+_0x5b4c46+'\x27\x20yang\x20benar\x0a\x20\x20\x20*\x20@param\x20{string}\x20search\x20-\x20Kata\x20kunci\x20pencarian\x0a\x20\x20\x20*\x20@returns\x20{Array}\x20Array\x20objek\x20hasil\x20lookup\x0a\x20\x20\x20*/\x0a\x20\x20async\x20getLookupData(search)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20query\x20=\x20\x27SELECT\x20'+_0x3c16c5+',\x20'+_0x5b4c46+'\x20FROM\x20\x27\x20+\x20this.getLookupSource()\x20+\x20`\x20WHERE\x20upper(a.'+_0x5b4c46+_0x529e0c(0x21a)+(_0xe63bb9?_0x529e0c(0x333)+_0xe63bb9:'')+(_0x2d234b?'\x20AND\x20'+_0x2d234b:'')+'\x20ORDER\x20BY\x20a.'+_0x5b4c46+'`;\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.'+_0x3c16c5+_0x529e0c(0x344)+_0x5b4c46+_0x529e0c(0x1ab)+_0x12d212+'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[_0x529e0c(0x199)](_0x6c24f3[_0x529e0c(0x362)]||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['stringify'](_0x2d2257['textFields']||[_0x5b4c46])+_0x529e0c(0x2a5)+(_0xe63bb9?'\x0a\x20\x20\x20\x20\x20\x20//\x20Default\x20scope\x20filter\x0a\x20\x20\x20\x20\x20\x20whereConditions.push(`'+_0xe63bb9+'`);\x0a':'')+(_0x2d234b?_0x529e0c(0x19e)+_0x2d234b+'`);\x0a':'')+_0x529e0c(0x29c)+JSON[_0x529e0c(0x199)](_0x6c24f3['fieldName']||[])+'.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'+_0x3c16c5+'\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.'+_0x3c16c5+_0x529e0c(0x204)+_0x12d212+_0x529e0c(0x1c4)+_0x5b4c46+'\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'+_0x3c16c5+',\x20'+_0x5b4c46+'\x20FROM\x20\x27\x20+\x20this.getLookupSource()\x20+\x20`'+(_0x532870?_0x529e0c(0x23c)+_0x532870:'')+_0x529e0c(0x1ea)+_0x5b4c46+_0x529e0c(0x21b)+_0x3c16c5+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x5b4c46+'\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20cacheData,\x20\x27static\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Return\x20dengan\x20selected\x20flag\x0a\x20\x20\x20\x20\x20\x20return\x20data.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x3c16c5+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x5b4c46+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(item.'+_0x3c16c5+_0x529e0c(0x1d6)+_0x12d212+_0x529e0c(0x2e0)+_0x3c16c5+'\x27,\x20\x27'+_0x5b4c46+_0x529e0c(0x2af)+JSON[_0x529e0c(0x199)](_0x2d2257['textFields']||[])+_0x529e0c(0x1d7)+_0x3c16c5+'\x27;\x0a\x20\x20\x20\x20\x20\x20let\x20textField\x20=\x20\x27'+_0x5b4c46+'\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'+_0x3c16c5+_0x529e0c(0x214)+_0x5b4c46+_0x529e0c(0x31a)+(_0xe63bb9?_0x529e0c(0x36a)+_0xe63bb9+'\x20':'')+_0x529e0c(0x2e1)+(_0xe63bb9?_0x3d7fa6['mXZpc']:'WHERE\x20')+'${whereResult.sql}'+(_0xe63bb9?')':'')+_0x529e0c(0x2b7)+_0x3c16c5+_0x529e0c(0x355)+_0x2d9ce9['toUpperCase']()+'\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.'+_0x3c16c5+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item[textFieldName]\x20||\x20item.'+_0x5b4c46+_0x529e0c(0x30a)+_0x12d212+_0x529e0c(0x2bd);}function buildAdvancedQuerySection(_0x1d66bf){const _0xc4d130=a0_0x1dae89,_0x351526={'QIuOW':'//\x20No\x20advanced\x20queries\x20defined'},_0x1e61b2=_0x1d66bf[_0xc4d130(0x302)]||{};if(Object['keys'](_0x1e61b2)[_0xc4d130(0x2b2)]===0x0)return _0x351526['QIuOW'];return _0xc4d130(0x1d0)+Object[_0xc4d130(0x2a8)](_0x1e61b2)['map'](([_0x55feff,_0x12565f])=>'\x20\x20\x20\x20\x20\x20\x22'+_0x55feff+'\x22:\x20'+JSON[_0xc4d130(0x199)](_0x12565f))['join'](',\x0a')+_0xc4d130(0x21e);}function buildQueryLoadingCode(_0x59670b,_0x153bd6){const _0xc8b8cf=a0_0x1dae89,_0x2a25da={'Qhqzf':'${payload.tableName\x20||\x20\x22undefined_table\x22}'};if(!_0x59670b)return _0xc8b8cf(0x2dc);const _0x1ad764=_0x59670b[_0xc8b8cf(0x1c6)](/\$\{tableName\}/g,'${payload.tableName\x20||\x20\x22undefined_table\x22}')['replace'](/\$\{this\.table\}/g,_0x2a25da[_0xc8b8cf(0x32a)]);return _0xc8b8cf(0x231)+_0x1ad764+'`.trim();';}function buildFieldMappingCode(_0x451792){const _0x24403f=a0_0x1dae89,_0x2653ae=_0x451792['_extendedFields']||{};return _0x24403f(0x26f)+JSON[_0x24403f(0x199)](_0x2653ae['textFields']||[])+',\x0a\x20\x20\x20\x20\x20\x20dateFields:\x20'+JSON['stringify'](_0x2653ae[_0x24403f(0x269)]||[])+_0x24403f(0x277)+JSON['stringify'](_0x2653ae[_0x24403f(0x34d)]||[])+_0x24403f(0x283)+(_0x2653ae[_0x24403f(0x20a)]||_0x24403f(0x34c))+'\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(_0x2abb05){const _0x13017a=a0_0x1dae89;if(!_0x2abb05||!Array['isArray'](_0x2abb05)||_0x2abb05['length']===0x0)return'\x20\x20\x20\x20this.validationConfig\x20=\x20{};\x20//\x20No\x20field\x20validation\x20config\x0a';const _0x2ee768=_0x2abb05[_0x13017a(0x171)](_0x1b4efe=>{const _0x4539b7=_0x13017a,_0x2dd893=JSON[_0x4539b7(0x199)](_0x1b4efe['constraints']||{},null,0x6)[_0x4539b7(0x1c6)](/\n/g,'\x0a\x20\x20\x20\x20\x20\x20');return _0x4539b7(0x1d5)+_0x1b4efe['name']+_0x4539b7(0x1db)+_0x1b4efe['type']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20constraints:\x20'+_0x2dd893+_0x4539b7(0x1d1);})[_0x13017a(0x2f7)](',\x0a');return _0x13017a(0x322)+_0x2ee768+_0x13017a(0x1b9);}function _generateValidateFieldConstraints(){const _0x2f3200=a0_0x1dae89;return _0x2f3200(0x23a);}function generateCompositeMethods(_0x2e3507){const _0x4820d5=a0_0x1dae89,_0x59f0d6={'RiiNy':function(_0x2b66af,_0x39e1a0){return _0x2b66af>_0x39e1a0;},'ZKQAa':function(_0xea65fc,_0x52397d){return _0xea65fc+_0x52397d;},'zKVAQ':function(_0x201a7e,_0x2f2a40){return _0x201a7e>_0x2f2a40;},'ezRMU':function(_0x1830a4,_0x47f1e5){return _0x1830a4===_0x47f1e5;},'huuQK':'generated','eqtLE':function(_0x354aea,_0x3636b9){return _0x354aea+_0x3636b9;}},_0x19f050=_0x2e3507['action']||{},_0x432846=_0x2e3507['masterDetail']&&_0x2e3507['masterDetail']['enabled'];if(!_0x432846||!_0x19f050['createComposite']&&!_0x19f050[_0x4820d5(0x30b)]&&!_0x19f050['readComposite'])return'';const _0x4da0af=_0x2e3507['masterDetail'][_0x4820d5(0x352)],_0x473ed9=_0x2e3507[_0x4820d5(0x261)]['foreignKey'],_0x4a81b9=_0x2e3507['primaryKey']||'id';let _0x5de768='\x0a';if(_0x19f050[_0x4820d5(0x1f9)]){const _0x31878c=_0x2e3507['masterDetail']?.[_0x4820d5(0x354)]?.['primaryKey']||_0x4da0af['split']('.')[_0x4820d5(0x1b3)]()+_0x4820d5(0x1d3),_0x1c5d4b=_0x2e3507['masterDetail']?.[_0x4820d5(0x354)]?.[_0x4820d5(0x18e)]||{},_0x12f131=[],_0x319172=[];for(const [_0x46a4e4,_0x106a85]of Object[_0x4820d5(0x2a8)](_0x1c5d4b)){if(_0x106a85[_0x4820d5(0x225)]==='generated')_0x12f131['push'](_0x46a4e4);else{const _0x534522=(_0x106a85[_0x4820d5(0x34e)]||'')[_0x4820d5(0x238)]('*')[_0x4820d5(0x171)](_0xd72300=>_0xd72300['trim']());_0x319172[_0x4820d5(0x209)]({'fieldName':_0x46a4e4,'qtyField':_0x534522[0x0],'priceField':_0x534522[0x1]});}}const _0x20d669=_0x319172['map'](_0x5d51c1=>{const _0x40d101=_0x4820d5;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x5d51c1['fieldName']+'\x20=\x20'+_0x5d51c1['qtyField']+_0x40d101(0x2c1)+_0x5d51c1['priceField']+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0x5d51c1[_0x40d101(0x224)]+'\x20=\x20(Number(item.'+_0x5d51c1['qtyField']+')\x20||\x200)\x20*\x20(Number(item.'+_0x5d51c1['priceField']+_0x40d101(0x1f1);})[_0x4820d5(0x2f7)]('\x0a');_0x5de768+=_0x4820d5(0x1ca)+_0x4da0af[_0x4820d5(0x238)]('.')[_0x4820d5(0x1b3)]()+'\x27;\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeInsert\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\x20detailItems\x20=\x20data[detailKey]\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeCtx\x20=\x20CB.buildCompositeInsertBeforeContext(headerData,\x20detailItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2e3507['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x4da0af+_0x4820d5(0x195)+_0x473ed9+'\x27,\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(\x27insert\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(`onBeforeCompositeInsert\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\x20INSERT\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\x20const\x20headerPlaceholders\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);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerValues.push(value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20headerPlaceholders.push(`$${placeholderIndex++}`);\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(created_at,\x20created_by,\x20updated_at,\x20updated_by)\x20via\x20helper\x0a\x20\x20\x20\x20\x20\x20placeholderIndex\x20=\x20this._appendCreateAuditColumns(headerFields,\x20headerValues,\x20headerPlaceholders,\x20headerData,\x20eventContext,\x20placeholderIndex);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20headerInsertQuery\x20=\x20`\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20${this.writeSource}\x20(${headerFields.join(\x27,\x20\x27)})\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(${headerPlaceholders.join(\x27,\x20\x27)})\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\x20INSERT:\x27,\x20{\x20query:\x20headerInsertQuery,\x20values:\x20headerValues\x20});\x0a\x20\x20\x20\x20\x20\x20const\x20headerResult\x20=\x20await\x20client.query(headerInsertQuery,\x20headerValues);\x0a\x20\x20\x20\x20\x20\x20const\x20insertedHeader\x20=\x20headerResult.rows[0];\x0a\x20\x20\x20\x20\x20\x20const\x20masterPrimaryKeyValue\x20=\x20insertedHeader[this.primaryKey];\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Header\x20inserted\x20successfully:\x20${this.primaryKey}=${masterPrimaryKeyValue}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Insert\x20detail\x20items\x0a\x20\x20\x20\x20\x20\x20const\x20insertedItems\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20detailTableName\x20=\x20\x27'+_0x4da0af+_0x4820d5(0x293)+_0x473ed9+_0x4820d5(0x24c)+(_0x59f0d6[_0x4820d5(0x2fa)](_0x12f131['length'],0x0)?_0x4820d5(0x2ff)+JSON['stringify'](_0x12f131)+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20detailPrimaryKey\x20=\x20\x27'+_0x31878c+_0x4820d5(0x2f8)+(_0x20d669?_0x59f0d6[_0x4820d5(0x1ce)]('\x0a'+_0x20d669,'\x0a'):'')+_0x4820d5(0x19b)+(_0x59f0d6['zKVAQ'](_0x12f131[_0x4820d5(0x2b2)],0x0)?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+_0x4820d5(0x32b)+_0x2e3507['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x4da0af+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x473ed9+'\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(_0x19f050[_0x4820d5(0x30b)]){const _0xaa0b3=_0x2e3507[_0x4820d5(0x261)]?.['detailConfig']?.['primaryKey']||_0x4da0af[_0x4820d5(0x238)]('.')[_0x4820d5(0x1b3)]()+_0x4820d5(0x1d3),_0x522bb2=_0x2e3507['masterDetail']?.['headerCalculations']||null,_0x26c44b=_0x2e3507['masterDetail']?.['detailConfig']?.[_0x4820d5(0x18e)]||{},_0x302134=[],_0x52f52d=[];for(const [_0x401edf,_0x2c624c]of Object[_0x4820d5(0x2a8)](_0x26c44b)){if(_0x59f0d6['ezRMU'](_0x2c624c['type'],_0x59f0d6[_0x4820d5(0x201)]))_0x302134['push'](_0x401edf);else{const _0x1e5a14=(_0x2c624c['formula']||'')['split']('*')['map'](_0xc50fa0=>_0xc50fa0[_0x4820d5(0x185)]());_0x52f52d['push']({'fieldName':_0x401edf,'qtyField':_0x1e5a14[0x0],'priceField':_0x1e5a14[0x1]});}}const _0x23cdcc=_0x52f52d[_0x4820d5(0x171)](_0x4c2e49=>{const _0x14bf45=_0x4820d5;return'\x20\x20\x20\x20\x20\x20\x20\x20//\x20Auto-calculate\x20'+_0x4c2e49[_0x14bf45(0x224)]+_0x14bf45(0x280)+_0x4c2e49['qtyField']+'\x20*\x20'+_0x4c2e49[_0x14bf45(0x1dc)]+_0x14bf45(0x2e9)+_0x4c2e49[_0x14bf45(0x224)]+'\x20=\x20(Number(item.'+_0x4c2e49[_0x14bf45(0x1cc)]+_0x14bf45(0x2d8)+_0x4c2e49[_0x14bf45(0x1dc)]+')\x20||\x200);';})['join']('\x0a'),_0x12e161=_0x2e3507['masterDetail']?.['detailConfig']?.[_0x4820d5(0x18e)]?.['total_amount']?.['formula']||'',_0x47c0c2=_0x12e161['split']('*')[_0x4820d5(0x171)](_0x318b68=>_0x318b68['trim']()),_0x1b925d=_0x2e3507[_0x4820d5(0x261)]?.[_0x4820d5(0x223)]?.['total_qty']?.[_0x4820d5(0x345)]?.['replace']('items.','')||'',_0x59ede3=_0x47c0c2[0x0]||_0x1b925d,_0x26f2f2=_0x47c0c2[0x1]||'unit_price';_0x5de768+=_0x4820d5(0x1e4)+_0x4da0af['split']('.')[_0x4820d5(0x1b3)]()+_0x4820d5(0x240)+_0x2e3507['tableName']+_0x4820d5(0x254)+_0x4da0af+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+_0x473ed9+'\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'+_0x4da0af+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20foreignKey\x20=\x20\x27'+_0x473ed9+_0x4820d5(0x255)+_0xaa0b3+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+(_0x302134[_0x4820d5(0x2b2)]>0x0?'const\x20generatedFields\x20=\x20'+JSON['stringify'](_0x302134)+';':'')+'\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'+(_0x23cdcc?_0x59f0d6[_0x4820d5(0x1ce)]('\x0a',_0x23cdcc)+'\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'+(_0x302134['length']>0x0?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+_0x4820d5(0x2b3)+(_0x23cdcc?_0x59f0d6['eqtLE']('\x0a'+_0x23cdcc,'\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'+(_0x302134['length']>0x0?'//\x20Skip\x20GENERATED\x20ALWAYS\x20columns\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(generatedFields.includes(key))\x20continue;':'')+_0x4820d5(0x19f)+(_0x522bb2?'\x0a\x20\x20\x20\x20\x20\x20const\x20calculations\x20=\x20'+JSON['stringify'](_0x522bb2)+';\x0a\x20\x20\x20\x20\x20\x20const\x20recalculatedFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20recalculatedValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20recalcPlaceholder\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(calculations.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_items\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(allItems.length);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(calculations.total_qty\x20&&\x20calculations.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qtyField\x20=\x20calculations.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalQty\x20=\x20allItems.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_qty\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(totalQty);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20'+(_0x59ede3?_0x4820d5(0x30f)+_0x59ede3+_0x4820d5(0x181)+_0x26f2f2+_0x4820d5(0x26c):_0x4820d5(0x1c5))+'\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':'')+_0x4820d5(0x351)+_0x2e3507['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x4da0af+_0x4820d5(0x195)+_0x473ed9+'\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(_0x19f050[_0x4820d5(0x2bc)]){const _0x31a9e0=_0x2e3507['masterDetail']?.[_0x4820d5(0x354)]?.['detailQuery']||null;let _0x2726ea;_0x31a9e0?_0x2726ea='const\x20detailQuery\x20=\x20`'+_0x31a9e0+'`;':_0x2726ea='const\x20detailQuery\x20=\x20`SELECT\x20*\x20FROM\x20'+_0x4da0af+'\x20WHERE\x20'+_0x473ed9+_0x4820d5(0x1ec),_0x5de768+=_0x4820d5(0x1ba)+_0x4da0af[_0x4820d5(0x238)]('.')['pop']()+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+_0x2726ea+_0x4820d5(0x1a1);}return _0x5de768;}function generateSoftDeleteOverride(_0x30d563){const _0xa2b72=a0_0x1dae89,_0x2c9984={'GcQbV':function(_0x564aa6,_0x14e09b){return _0x564aa6===_0x14e09b;},'iviLY':function(_0xf73e55,_0x4ecee8){return _0xf73e55(_0x4ecee8);}},_0x258b07=_0x30d563['primaryKey']||_0x30d563['fieldName']&&_0x30d563['fieldName'][0x0]||'id',_0xf8ecb7=_0x30d563['softDelete']&&Array[_0xa2b72(0x2fc)](_0x30d563[_0xa2b72(0x1b8)]['reusable'])?_0x30d563[_0xa2b72(0x1b8)][_0xa2b72(0x192)]:[];if(hasCascadeChildren(_0x30d563))return _0x2c9984[_0xa2b72(0x193)](generateSoftDeleteCascadeOverride,_0x30d563);const _0x1fb358=Array[_0xa2b72(0x2fc)](_0x30d563[_0xa2b72(0x361)])?_0x30d563[_0xa2b72(0x361)]['filter'](_0x2c1674=>_0x2c1674&&_0x2c1674['onDelete']==='restrict'&&typeof _0x2c1674[_0xa2b72(0x342)]===_0xa2b72(0x2a4)&&_0x2c1674['childTable']&&Array[_0xa2b72(0x2fc)](_0x2c1674['childColumns'])&&_0x2c1674[_0xa2b72(0x268)][_0xa2b72(0x2b2)]===0x1&&typeof _0x2c1674[_0xa2b72(0x268)][0x0]==='string'&&typeof _0x2c1674['parentColumn']==='string'&&_0x2c1674['parentColumn']):[],_0x8b559d=[_0x258b07];for(const _0x838110 of _0xf8ecb7){if(_0x838110&&_0x838110[_0xa2b72(0x24d)]&&!_0x8b559d[_0xa2b72(0x30d)](_0x838110['field']))_0x8b559d[_0xa2b72(0x209)](_0x838110['field']);}for(const _0x37ebdf of _0x1fb358){if(!_0x8b559d['includes'](_0x37ebdf['parentColumn']))_0x8b559d[_0xa2b72(0x209)](_0x37ebdf[_0xa2b72(0x1de)]);}const _0x53e9e9=_0x8b559d[_0xa2b72(0x2f7)](',\x20'),_0x2cd939=_0x1fb358['map']((_0x299168,_0x15d555)=>{const _0x19f912=_0xa2b72,_0x4236f6=_0x299168[_0x19f912(0x342)],_0x49d452=_0x299168['childColumns'][0x0],_0x22c0ac=_0x299168['parentColumn'],_0x5ad8f7=_0x2c9984[_0x19f912(0x2dd)](_0x299168[_0x19f912(0x284)],!![]),_0x1969e8=_0x5ad8f7?'\x20AND\x20'+IS_DELETED_COLUMN+'\x20=\x20FALSE':'';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK-SD-2\x20restrict\x20#'+_0x15d555+_0x19f912(0x21f)+_0x4236f6+'\x27.'+_0x49d452+'\x20→\x20master.'+_0x22c0ac+_0x19f912(0x20d)+_0x5ad8f7+_0x19f912(0x1ad)+_0x22c0ac+'\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'+_0x4236f6+'\x20WHERE\x20'+_0x49d452+'\x20=\x20$1'+_0x1969e8+'\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'+_0x4236f6+'\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}';})[_0xa2b72(0x2f7)](''),_0x490194=_0xf8ecb7['map'](_0x3b585e=>{const _0x207aa2=_0xa2b72,_0x2e1ec5=_0x3b585e['field'],_0x5146db=_0x3b585e[_0x207aa2(0x2b2)];return _0x207aa2(0x28c)+_0x2e1ec5+'\x27\x20(base\x20length\x20'+_0x5146db+')\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'+_0x2e1ec5+'\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'+_0x5146db+')\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20throw\x20new\x20Error(\x27soft-delete:\x20column\x20'+_0x2e1ec5+'\x20value\x20(\x27\x20+\x20__str.length\x20+\x20\x27\x20chars)\x20exceeds\x20base\x20length\x20'+_0x5146db+_0x207aa2(0x260)+_0x2e1ec5+_0x207aa2(0x2cf);})[_0xa2b72(0x2f7)]('');return _0xa2b72(0x370)+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'+_0x53e9e9+_0xa2b72(0x317)+IS_DELETED_COLUMN+_0xa2b72(0x228)+_0x2cd939+_0x490194+_0xa2b72(0x2ee)+IS_DELETED_COLUMN+'\x20=\x20TRUE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+_0xa2b72(0x318)+DELETED_BY_COLUMN+_0xa2b72(0x349)+_0x258b07+_0xa2b72(0x365)+_0x258b07+'\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(_0x20debe){const _0x5bfbb5=a0_0x1dae89,_0xc13f01=_0x20debe[_0x5bfbb5(0x26a)];return _0x5bfbb5(0x220)+JSON['stringify'](_0xc13f01)+_0x5bfbb5(0x2ea)+DELETED_BY_COLUMN+_0x5bfbb5(0x203)+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+_0x5bfbb5(0x2c2)+DELETED_AT_COLUMN+_0x5bfbb5(0x318)+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\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(pkVal);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Master\x20(depth-0)\x20di-UPDATE\x20ke\x20writeSource\x20(read/write\x20split-aware,\x20identik\x20jalur\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20existing)\x20+\x20RETURNING\x20untuk\x20response.\x20Descendant\x20ke\x20nama\x20tabel\x20closure\x20(qualified).\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20__target\x20=\x20current.isMaster\x20?\x20writeSource\x20:\x20current.table;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20__returning\x20=\x20current.isMaster\x20?\x20(\x27\x20RETURNING\x20\x27\x20+\x20returningFields)\x20:\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20__updateResult\x20=\x20await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27UPDATE\x20\x27\x20+\x20__target\x20+\x20\x27\x20SET\x20\x27\x20+\x20setClauses.join(\x27,\x20\x27)\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20node.pk\x20+\x20\x27\x20=\x20$\x27\x20+\x20p\x20+\x20__returning,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updateParams\x0a\x20\x20\x20\x20\x20\x20\x20\x20);\x0a\x20\x20\x20\x20\x20\x20\x20\x20touched.add(current.table);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(current.isMaster\x20&&\x20__updateResult.rows[0])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20masterDeletedItems.push(__updateResult.rows[0]);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20(3)\x20expand:\x20anak\x20AKTIF\x20(is_deleted=FALSE)\x20lewat\x20edge\x20cascade\x20ke\x20anak\x20soft-delete,\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x20FOR\x20UPDATE\x20(kunci\x20sebelum\x20mutasi),\x20skip\x20parentColumn\x20NULL.\x20Enqueue\x20tiap\x20row.\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\x27cascade\x27\x20||\x20ch.childSoftDelete\x20!==\x20true)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__expandVal\x20=\x20current.row[ch.parentColumn];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__expandVal\x20===\x20null\x20||\x20__expandVal\x20===\x20undefined)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__childNode\x20=\x20__sdCascadeMeta.nodes[ch.childTable];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20ORDER\x20BY\x20<childPk>\x20sebelum\x20FOR\x20UPDATE\x20→\x20urutan\x20akuisisi\x20lock\x20deterministik\x20(mitigasi\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20ringan\x20konkurensi;\x20deadlock\x20penuh\x20=\x20Phase\x2004d).\x20Hanya\x20mengubah\x20URUTAN\x20baris,\x20bukan\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20himpunan\x20hasil\x20→\x20hasil\x20cascade\x20identik.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__childRows\x20=\x20(await\x20client.query(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27SELECT\x20\x27\x20+\x20__sdSelectCols(__childNode)\x20+\x20\x27\x20FROM\x20\x27\x20+\x20ch.childTable\x20+\x20\x27\x20WHERE\x20\x27\x20+\x20ch.childColumn\x20+\x20\x27\x20=\x20$1\x20AND\x20'+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+'\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.\x20Walk\x20cascade:\x20soft-delete\x20master\x20+\x20seluruh\x20descendant\x20cascade\x20dalam\x20transaksi\x20ini.\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20Restrict-per-node\x20409\x20/\x20overflow\x20→\x20throw\x20→\x20ROLLBACK\x20(atomic\x20all-or-nothing).\x0a\x20\x20\x20\x20\x20\x20const\x20{\x20masterDeletedItems,\x20touched\x20}\x20=\x20await\x20__cascadeSoftDelete(client,\x20lockResult.rows,\x20deletedBy);\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Invalidasi\x20cache.\x20Master:\x20this.invalidateCache()\x20existing\x20(jalur\x20custom\x20tidak\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20auto-invalidate;\x20bila\x20terlewat\x20/datatables\x20&\x20/read\x20ter-cache\x20menyajikan\x20record\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20Descendant\x20lintas-tabel\x20(FK-SD-3\x20Phase\x2004c,\x20D-2-enhanced):\x20master\x20TIDAK\x20tahu\x20path\x20model\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20descendant\x20(module/endpoint\x20berasal\x20dari\x20endpoint-create,\x20bukan\x20SDF\x20closure),\x20sehingga\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20me-REPLIKASI\x20logika\x20invalidateCache()\x20untuk\x20tiap\x20tabel\x20descendant\x20tersentuh,\x20diturunkan\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20dari\x20NAMA\x20TABEL.\x20Cache\x20key\x20descendant\x20murni\x20turunan\x20tableName\x20bare\x20yang\x20dipass\x20model\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20descendant\x20ke\x20super()\x20(single-schema\x20\x27public\x27\x20Fase\x201.5,\x20terverifikasi:\x20cacheModule=\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x27default\x27);\x20closure\x20membawa\x20qualified\x20(schema.table)\x20sehingga\x20schema\x20di-strip\x20agar\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20module/endpoint\x20IDENTIK\x20dengan\x20invalidateCache()\x20descendant.\x20Post-COMMIT\x20+\x20graceful:\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20kegagalan\x20invalidasi\x20cache\x20tidak\x20membatalkan\x20soft-delete\x20(konsisten\x20BaseModel).\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x20\x20\x20\x20\x20\x20if\x20(this.cacheEnabled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cacheMgr\x20=\x20require(\x27@restforgejs/platform/src/utils/cache-manager\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cacheReg\x20=\x20require(\x27@restforgejs/platform/src/utils/cache-invalidation-registry\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__prefix\x20=\x20__cacheMgr.prefix;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20__t\x20of\x20touched)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Master\x20sudah\x20di-invalidate\x20via\x20this.invalidateCache()\x20existing\x20→\x20hindari\x20dobel.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__t\x20===\x20__sdCascadeMeta.master)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Strip\x20schema\x20→\x20bentuk\x20bare\x20yang\x20dipakai\x20model\x20descendant\x20pada\x20super(tableName).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20extractCacheModule\x20atas\x20nama\x20bare\x20→\x20\x27default\x27;\x20extractCacheEndpoint\x20→\x20bare\x20itu\x20sendiri.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__bare\x20=\x20__t.indexOf(\x27.\x27)\x20>=\x200\x20?\x20__t.substring(__t.lastIndexOf(\x27.\x27)\x20+\x201)\x20:\x20__t;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__mod\x20=\x20\x27default\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__ep\x20=\x20__bare;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20__cacheMgr.invalidatePattern(__prefix\x20+\x20__mod\x20+\x20\x27:\x27\x20+\x20__ep\x20+\x20\x27:*\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cascade\x20processor/dashboard\x20yang\x20bergantung\x20pada\x20tabel\x20descendant\x20(registry\x20by-endpoint).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__regPatterns\x20=\x20__cacheReg.getInvalidationPatterns(__ep,\x20__prefix);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20__rp\x20of\x20__regPatterns)\x20await\x20__cacheMgr.invalidatePattern(__rp);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Graceful\x20—\x20kegagalan\x20invalidasi\x20cache\x20descendant\x20tidak\x20membatalkan\x20soft-delete.\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\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+\x20masterDeletedItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_count:\x20masterDeletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_items:\x20masterDeletedItems\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 generateDeleteMethod(_0x4e6420){const _0x24878f=a0_0x1dae89,_0x12838={'GDkQR':function(_0x5b1ff0,_0x38e65c){return _0x5b1ff0(_0x38e65c);}},_0x367814=_0x4e6420[_0x24878f(0x2f4)]||{},_0x3da782=_0x4e6420[_0x24878f(0x261)]&&_0x4e6420[_0x24878f(0x261)][_0x24878f(0x276)],_0x1d4742=_0x4e6420[_0x24878f(0x261)]?.[_0x24878f(0x307)]||![];if(!_0x367814[_0x24878f(0x350)])return'';const _0x130e92=_0x4e6420[_0x24878f(0x18c)]||'id';if(_0x12838['GDkQR'](isSoftDeleteEnabled,_0x4e6420))return generateSoftDeleteOverride(_0x4e6420);if(!_0x3da782)return'';const _0x29987c=_0x4e6420['masterDetail'][_0x24878f(0x352)],_0x88c6a1=_0x4e6420['masterDetail'][_0x24878f(0x26e)];let _0x3e36e9='\x0a';return _0x3e36e9+='\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'+(_0x1d4742?_0x24878f(0x216)+_0x29987c+'...\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'+_0x130e92+_0x24878f(0x2cc)+_0x130e92+_0x24878f(0x1e0)+_0x29987c+_0x24878f(0x23c)+_0x88c6a1+_0x24878f(0x279)+_0x29987c+'`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20DELETE\x20header\x20record\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':'\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')+_0x24878f(0x2a1)+(_0x1d4742?',\x0a\x20\x20\x20\x20\x20\x20\x20\x20deletedChildRecords:\x20deleteChildResult.rowCount':'')+_0x24878f(0x1fd),_0x3e36e9;}function generateSoftDeleteRestoreOverride(_0x5d2517){const _0x4f6af6=a0_0x1dae89,_0x37679c={'IvQrc':'missing\x20or\x20soft-deleted'},_0x27f9b8=_0x5d2517['primaryKey']||_0x5d2517[_0x4f6af6(0x224)]&&_0x5d2517['fieldName'][0x0]||'id',_0xcc993c=_0x5d2517['softDelete']&&Array['isArray'](_0x5d2517['softDelete'][_0x4f6af6(0x192)])?_0x5d2517[_0x4f6af6(0x1b8)]['reusable']:[],_0x30e655=Array['isArray'](_0x5d2517['softDeleteFkChecks'])?_0x5d2517[_0x4f6af6(0x339)]['filter'](_0x14e5c4=>_0x14e5c4&&Array['isArray'](_0x14e5c4['columns'])&&_0x14e5c4[_0x4f6af6(0x299)]['length']>0x0&&typeof _0x14e5c4[_0x4f6af6(0x243)]===_0x4f6af6(0x2a4)&&_0x14e5c4[_0x4f6af6(0x243)]&&Array['isArray'](_0x14e5c4[_0x4f6af6(0x200)])&&_0x14e5c4['refColumns']['length']===_0x14e5c4[_0x4f6af6(0x299)][_0x4f6af6(0x2b2)]):[],_0x2e7656=[_0x27f9b8];for(const _0x51f533 of _0xcc993c){if(_0x51f533&&_0x51f533['field']&&!_0x2e7656['includes'](_0x51f533['field']))_0x2e7656[_0x4f6af6(0x209)](_0x51f533['field']);}for(const _0x1eb81d of _0x30e655){for(const _0x1389d3 of _0x1eb81d['columns']){if(_0x1389d3&&!_0x2e7656['includes'](_0x1389d3))_0x2e7656[_0x4f6af6(0x209)](_0x1389d3);}}const _0x298039=_0x2e7656[_0x4f6af6(0x2f7)](',\x20'),_0x1a18ae=_0xcc993c['map'](_0x96b094=>{const _0x260e20=_0x4f6af6,_0x318327=_0x96b094[_0x260e20(0x24d)],_0x227164=_0x96b094[_0x260e20(0x2b2)];return _0x260e20(0x28c)+_0x318327+_0x260e20(0x1c3)+_0x227164+'):\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'+_0x318327+'\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'+_0x318327+'\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+_0x260e20(0x23e)+_0x27f9b8+'\x20<>\x20$2\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__original,\x20lockedRow[\x27'+_0x27f9b8+_0x260e20(0x25d)+_0x318327+'\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'+_0x318327+'\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}';})['join'](''),_0x293ec2=_0x30e655['map']((_0x160709,_0x17b9e3)=>{const _0x6478dd=_0x4f6af6,_0x5f445d=_0x160709[_0x6478dd(0x226)]===!![],_0x1257cc=_0x160709['refTable'],_0x2e2bc5=_0x160709[_0x6478dd(0x299)]['map'](_0x2d7816=>_0x6478dd(0x321)+_0x2d7816+'\x27]')[_0x6478dd(0x2f7)](',\x20'),_0xd67711=_0x160709['refColumns']['map']((_0x43b617,_0x226374)=>_0x43b617+'\x20=\x20$'+(_0x226374+0x1))[_0x6478dd(0x2f7)]('\x20AND\x20'),_0x55eb4d=_0x5f445d?_0x6478dd(0x333)+IS_DELETED_COLUMN+'\x20=\x20FALSE':'',_0x594570=_0x5f445d?_0x37679c[_0x6478dd(0x196)]:'missing';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x17b9e3+_0x6478dd(0x2fe)+_0x1257cc+_0x6478dd(0x34a)+_0x5f445d+_0x6478dd(0x288)+(_0x5f445d?_0x6478dd(0x28e):'ada')+_0x6478dd(0x219)+_0x2e2bc5+'];\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'+_0x1257cc+_0x6478dd(0x23c)+_0xd67711+_0x55eb4d+'\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'+_0x1257cc+_0x6478dd(0x28a)+_0x594570+'\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 _0x4f6af6(0x1a9)+_0x298039+_0x4f6af6(0x317)+IS_DELETED_COLUMN+_0x4f6af6(0x368)+_0x1a18ae+_0x293ec2+'\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+_0x4f6af6(0x2ac)+DELETED_AT_COLUMN+'\x20=\x20NULL\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+'\x20=\x20NULL\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(lockedRow[\x27'+_0x27f9b8+_0x4f6af6(0x365)+_0x27f9b8+_0x4f6af6(0x1c1);}function generateRestoreMethod(_0x3c9cd3){const _0x3f8803=_0x3c9cd3['action']||{};if(!_0x3f8803['restore']||!isSoftDeleteEnabled(_0x3c9cd3))return'';return generateSoftDeleteRestoreOverride(_0x3c9cd3);}function hasSoftDeleteFkParents(_0x2e9c15){const _0x1993a3=a0_0x1dae89,_0x44a9dc={'eYEQJ':function(_0x2123aa,_0x4e15da){return _0x2123aa>_0x4e15da;}};return Array['isArray'](_0x2e9c15['softDeleteFkParents'])&&_0x44a9dc['eYEQJ'](_0x2e9c15[_0x1993a3(0x2c6)][_0x1993a3(0x2b2)],0x0);}function generateSoftDeleteFkParentsCheck(_0x4c8a3c){const _0x47f29f=a0_0x1dae89;if(!hasSoftDeleteFkParents(_0x4c8a3c))return'';const _0x4544a8=_0x4c8a3c[_0x47f29f(0x2c6)]['map']((_0x10ff90,_0x495694)=>{const _0x5a0758=_0x47f29f,_0xa457ce=_0x10ff90[_0x5a0758(0x299)][0x0],_0x404e1a=_0x10ff90[_0x5a0758(0x243)],_0x1aad4e=_0x10ff90['refColumns'][0x0];return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20FK\x20#'+_0x495694+'\x20\x27'+_0xa457ce+'\x27\x20→\x20'+_0x404e1a+'.'+_0x1aad4e+':\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'+_0xa457ce+_0x5a0758(0x29b)+_0x404e1a+'\x20WHERE\x20'+_0x1aad4e+'\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+_0x5a0758(0x2c3)+_0x404e1a+_0x5a0758(0x332);})[_0x47f29f(0x2f7)]('');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'+_0x4544a8+'\x0a\x20\x20}\x0a';}function createPostgresModelTemplate(_0x22d1e7,_0x45ac0d,_0xb77fc9){const _0x4c53ec=a0_0x1dae89,_0x199459={'fiYaP':function(_0x5cc876,_0x4e66c5){return _0x5cc876(_0x4e66c5);},'hyvsU':function(_0x538a1d,_0x5e8a62){return _0x538a1d!==_0x5e8a62;},'TMImV':function(_0x52f152,_0x3def19){return _0x52f152+_0x3def19;},'pMjzM':function(_0x206da6,_0x373193){return _0x206da6+_0x373193;},'VAjhs':'\x20=\x20','kDsdz':function(_0x56c9e3,_0x34e364){return _0x56c9e3(_0x34e364);},'rfMHp':function(_0x7bd721,_0x34e436,_0x59f951){return _0x7bd721(_0x34e436,_0x59f951);},'YIikv':function(_0x58aa20,_0x3a89d5){return _0x58aa20(_0x3a89d5);},'OwDcy':_0x4c53ec(0x176),'ULHGd':_0x4c53ec(0x310),'bXHpx':function(_0x71ec40,_0x4206e0,_0x3a163f){return _0x71ec40(_0x4206e0,_0x3a163f);},'JHMDU':'datatablesQuery','glVFV':_0x4c53ec(0x178),'NcYpM':function(_0xb8632f,_0x21fe30){return _0xb8632f(_0x21fe30);}};assertNoFileReferenceLeftover(_0xb77fc9);const _0x229a43=FileUtils['toPascalCase'](_0x45ac0d),_0x4050b1=new Date()['toISOString']()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x190b0c=buildValidFieldsString(_0xb77fc9),_0xb36dfc=_0x199459[_0x4c53ec(0x210)](buildSearchColumnsCode,_0xb77fc9),_0x5182b4=_0x199459['fiYaP'](buildFiltersCode,_0xb77fc9),_0x1e6709=_0x199459[_0x4c53ec(0x1fb)](buildLookupOverrideCode,_0x45ac0d,_0xb77fc9),_0x1d3f38=buildAdvancedQuerySection(_0xb77fc9),_0xc5e2c7=_0x199459['YIikv'](buildFieldMappingCode,_0xb77fc9),_0x2bc730=buildAuditColumnsSection(_0xb77fc9,_0x199459['OwDcy']),_0x29c6e9=_0x199459[_0x4c53ec(0x272)](buildFormatResponseDataBody,_0xb77fc9),_0x2cd1a8=isSoftDeleteEnabled(_0xb77fc9)?'(data\x20||\x20[]).map(__row\x20=>\x20{\x20const\x20__r\x20=\x20{\x20...__row\x20};\x20for\x20(const\x20__sdCol\x20of\x20'+JSON[_0x4c53ec(0x199)](SOFT_DELETE_COLUMNS)+')\x20delete\x20__r[__sdCol];\x20return\x20__r;\x20})':_0x199459[_0x4c53ec(0x24a)],_0x15cebe=_0xb77fc9['defaultScope']&&_0xb77fc9[_0x4c53ec(0x23b)][_0x4c53ec(0x1aa)]?_0x199459['bXHpx'](buildDefaultScopeSQL,_0xb77fc9[_0x4c53ec(0x23b)][_0x4c53ec(0x1aa)],''):'',_0x45d622=((()=>{const _0x470ef9=_0x4c53ec,_0x163b1d=_0x199459[_0x470ef9(0x272)](softDeleteVisibilityFilter,_0xb77fc9);return _0x199459[_0x470ef9(0x33d)](_0x163b1d,null)?_0x199459['TMImV'](_0x199459[_0x470ef9(0x35a)](_0x470ef9(0x23c),IS_DELETED_COLUMN),_0x199459['VAjhs'])+_0x163b1d:'';})()),_0x3cd9ac=_0xb77fc9[_0x4c53ec(0x341)]||_0xb77fc9['tableName'],_0x138057=_0xb77fc9['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'+_0x229a43+'\x20Model\x20-\x20Auto-generated\x20on\x20'+_0x4050b1+_0x4c53ec(0x319)+_0x45ac0d+'\x20yang\x20mewarisi\x20fungsi-fungsi\x20dari\x20BaseModel\x0a\x20*\x20Table:\x20'+_0xb77fc9[_0x4c53ec(0x1f8)]+(_0xb77fc9[_0x4c53ec(0x341)]?'\x0a\x20*\x20View:\x20'+_0xb77fc9['viewName']:'')+'\x0a\x20*\x20Fields:\x20'+(_0xb77fc9[_0x4c53ec(0x224)]?_0xb77fc9['fieldName']['length']:0x0)+_0x4c53ec(0x27a)+_0x229a43+_0x4c53ec(0x335)+_0x45ac0d+'\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20[\x0a\x20\x20\x20\x20\x20\x20'+_0x190b0c+_0x4c53ec(0x17e)+(_0xb77fc9[_0x4c53ec(0x1f0)]?JSON[_0x4c53ec(0x199)](_0xb77fc9['datatablesWhere']):'[\x27name\x27,\x20\x27nama\x27,\x20\x27code\x27,\x20\x27kode\x27,\x20\x27all\x27]')+_0x4c53ec(0x241)+_0xb77fc9[_0x4c53ec(0x1f8)]+'\x27,\x20validFields,\x20datatablesWhere);\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'+(_0xb77fc9['primaryKey']||_0xb77fc9['fieldName']&&_0xb77fc9['fieldName'][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'+_0x3cd9ac+'\x27;\x0a\x20\x20\x20\x20this.readSource\x20=\x20\x27'+_0x3cd9ac+_0x4c53ec(0x285)+_0x138057+_0x4c53ec(0x173)+_0x2bc730+'\x0a\x20\x20\x20\x20//\x20Flag\x20untuk\x20self-documenting\x20API\x20(endpoint\x20/info)\x0a\x20\x20\x20\x20this.hasViewQuery\x20=\x20'+!!_0xb77fc9['viewQuery']+';\x0a\x20\x20\x20\x20this.hasExportQuery\x20=\x20'+!!_0xb77fc9['exportQuery']+';\x0a\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20this.advancedQueryTemplates\x20=\x20this.loadAdvancedQueryTemplates();\x0a\x20\x20\x20\x20'+(_0xb77fc9['dateTimeFields']&&Object['keys'](_0xb77fc9['dateTimeFields'])[_0x4c53ec(0x2b2)]>0x0?'\x0a\x20\x20\x20\x20//\x20DateTime\x20fields\x20configuration\x0a\x20\x20\x20\x20this.dateTimeFields\x20=\x20'+JSON[_0x4c53ec(0x199)](_0xb77fc9['dateTimeFields'],null,0x6)+_0x4c53ec(0x208):'')+(_0xb77fc9[_0x4c53ec(0x1d2)]&&_0xb77fc9['uploadConfig']['fields']?'\x0a\x20\x20\x20\x20//\x20File\x20upload\x20fields\x20(JSONB\x20columns)\x0a\x20\x20\x20\x20this.fileFields\x20=\x20'+JSON['stringify'](Object[_0x4c53ec(0x1cf)](_0xb77fc9['uploadConfig'][_0x4c53ec(0x303)]))+_0x4c53ec(0x208):'')+'\x0a'+_generateValidationConfig(_0xb77fc9[_0x4c53ec(0x2a2)])+'\x0a\x20\x20\x20\x20//\x20Model\x20metadata\x0a\x20\x20\x20\x20this.modelMetadata\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20endpointName:\x20\x27'+_0x45ac0d+_0x4c53ec(0x19d)+_0x22d1e7+'\x27,\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0xb77fc9[_0x4c53ec(0x1f8)]+_0x4c53ec(0x1f2)+_0x3cd9ac+'\x27,\x0a\x20\x20\x20\x20\x20\x20fieldCount:\x20'+(_0xb77fc9[_0x4c53ec(0x224)]?_0xb77fc9[_0x4c53ec(0x224)][_0x4c53ec(0x2b2)]:0x0)+',\x0a\x20\x20\x20\x20\x20\x20databaseType:\x20\x27postgres\x27,\x0a\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0x4050b1+_0x4c53ec(0x172)+JSON['stringify'](_0xb77fc9[_0x4c53ec(0x29a)]?.[_0x4c53ec(0x31b)]||[])+'\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'+_0x1d3f38+'\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'+_0x45ac0d+'\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'+_0x45ac0d+'\x0a\x20\x20\x20*/\x0a\x20\x20getListQuery(options\x20=\x20{})\x20{\x0a\x20\x20\x20\x20//\x20Load\x20query\x20dasar\x20dengan\x20placeholder\x20replacement\x0a\x20\x20\x20\x20'+buildQueryLoadingCode(_0xb77fc9[_0x4c53ec(0x290)],_0x199459['JHMDU'])+'\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'+(_0xb77fc9[_0x4c53ec(0x178)]?'\x20\x20\x20\x20//\x20Priority\x202:\x20viewQuery\x20(virtual\x20view\x20dari\x20payload)\x0a\x20\x20\x20\x20'+_0x199459['bXHpx'](buildQueryLoadingCode,_0xb77fc9['viewQuery'],_0x199459[_0x4c53ec(0x294)])+'\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;':'\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20readSource\x20langsung\x20(semua\x20kolom\x20tersedia)\x0a\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;')+'\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);\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);\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\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'+_0x45d622+_0x4c53ec(0x297)+(_0x45d622?'\x20+\x20\x27'+_0x45d622+'\x27':'')+_0x4c53ec(0x229)+(_0x15cebe?_0x4c53ec(0x36a)+_0x15cebe:'')+'`;\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'+(_0x15cebe?'whereClause\x20+=\x20`\x20AND\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;':_0x4c53ec(0x18d))+_0x4c53ec(0x311)+_0x45d622+_0x4c53ec(0x296)+(_0x45d622?_0x4c53ec(0x330)+_0x45d622+'\x27':'')+_0x4c53ec(0x2b9)+_0x2cd1a8+_0x4c53ec(0x340)+_0xb36dfc+'\x0a\x0a'+_0x5182b4+'\x0a\x0a'+_0x1e6709+'\x0a\x0a'+_0xc5e2c7+'\x0a\x0a\x20\x20/**\x0a\x20\x20\x20*\x20Override\x20formatResponseData\x20untuk\x20'+_0x45ac0d+_0x4c53ec(0x1c8)+_0x45ac0d+'\x0a\x20\x20\x20*/\x0a\x20\x20formatResponseData(data)\x20{\x0a'+_0x29c6e9+_0x4c53ec(0x28f)+_generateValidateFieldConstraints()+'\x0a\x20\x20'+_0x199459['NcYpM'](generateCompositeMethods,_0xb77fc9)+generateDeleteMethod(_0xb77fc9)+generateRestoreMethod(_0xb77fc9)+_0x199459['fiYaP'](generateSoftDeleteFkParentsCheck,_0xb77fc9)+'\x0a}\x0a\x0a//\x20Export\x20singleton\x20instance\x0amodule.exports\x20=\x20new\x20'+_0x229a43+'Model();';}function getEnabledActions(_0x4ac542){const _0x1a4660=a0_0x1dae89;if(!_0x4ac542['action']||typeof _0x4ac542[_0x1a4660(0x2f4)]!==_0x1a4660(0x343))return[];return Object[_0x1a4660(0x2a8)](_0x4ac542['action'])['filter'](([,_0x6d1fb2])=>_0x6d1fb2)[_0x1a4660(0x171)](([_0x5b9231])=>_0x5b9231);}function buildEndpointFunctions(_0x454446,_0x1ac0ab,_0x5661ea,_0x10718c,_0x3fa04a,_0x31420f=null,_0x3585f9=![]){const _0xc326ef=a0_0x1dae89,_0x463ee0={'GlLda':function(_0x430bec,_0x274ff8){return _0x430bec(_0x274ff8);},'jmyGg':function(_0x31605a,_0x1339bc,_0x595108,_0x4acaf7,_0x55933d){return _0x31605a(_0x1339bc,_0x595108,_0x4acaf7,_0x55933d);},'iPVoW':function(_0x36dbda,_0x20573a,_0x42a068,_0x21cca6,_0x1e266c,_0x1be152){return _0x36dbda(_0x20573a,_0x42a068,_0x21cca6,_0x1e266c,_0x1be152);},'tEavq':function(_0x559f15,_0x9ada75,_0x433717,_0x44da52,_0x37237d,_0x418a6d,_0x4b4c27){return _0x559f15(_0x9ada75,_0x433717,_0x44da52,_0x37237d,_0x418a6d,_0x4b4c27);},'duzvB':function(_0x31261e,_0x248d91,_0x3fb1b5,_0x2d59ff,_0x3c4f11){return _0x31261e(_0x248d91,_0x3fb1b5,_0x2d59ff,_0x3c4f11);},'EQfMc':function(_0x245528,_0x4be3e1,_0x1b788f,_0x4c102d,_0x22d31b){return _0x245528(_0x4be3e1,_0x1b788f,_0x4c102d,_0x22d31b);},'Zcnbp':function(_0x1b9f24,_0x31b785){return _0x1b9f24===_0x31b785;}},_0x285d51=_0x5661ea[_0xc326ef(0x2f4)]||{},_0x12e4cf=_0x463ee0[_0xc326ef(0x356)](getEnabledActions,_0x5661ea);let _0x272bb7='';if(!_0x31420f){const _0x46015f=FileUtils['toCamelCase'](_0x1ac0ab);_0x31420f=_0x46015f+'Model';}return _0x285d51['datatables']&&(_0x272bb7+=_0x463ee0[_0xc326ef(0x233)](generateDatatablesFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51['create']&&(_0x272bb7+=_0x463ee0[_0xc326ef(0x316)](generateCreateFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f,_0x3585f9)),_0x285d51[_0xc326ef(0x291)]&&(_0x272bb7+=_0x463ee0['iPVoW'](generateUpdateFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f,_0x3585f9)),_0x285d51[_0xc326ef(0x1af)]&&(_0x272bb7+=generateAdjustFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51[_0xc326ef(0x320)]&&(_0x272bb7+=generateAggregateFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51[_0xc326ef(0x350)]&&(_0x272bb7+=_0x463ee0[_0xc326ef(0x316)](generateDeleteFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f,_0x3585f9)),_0x285d51['restore']&&isSoftDeleteEnabled(_0x5661ea)&&(_0x272bb7+=generateRestoreFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51['first']&&(_0x272bb7+=generateFirstFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x10718c,_0x3fa04a,_0x31420f)),_0x285d51['lookup']&&(_0x272bb7+=_0x463ee0['tEavq'](generateLookupFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x10718c,_0x3fa04a,_0x31420f)),_0x285d51[_0xc326ef(0x1aa)]&&(_0x272bb7+=generateReadFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51['createComposite']&&(_0x272bb7+=generateCreateCompositeFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51['updateComposite']&&(_0x272bb7+=generateUpdateCompositeFunction(_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51['readComposite']&&(_0x272bb7+=_0x463ee0[_0xc326ef(0x2f9)](generateReadCompositeFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x285d51[_0xc326ef(0x275)]&&(_0x272bb7+=_0x463ee0['EQfMc'](generateWorkflowFunction,_0x454446,_0x1ac0ab,_0x5661ea,_0x31420f)),_0x463ee0['Zcnbp'](_0x12e4cf[_0xc326ef(0x2b2)],0x0)&&(_0x272bb7+='\x0a//\x20No\x20actions\x20enabled\x20for\x20this\x20endpoint\x0a//\x20Enable\x20actions\x20in\x20payload\x20to\x20generate\x20endpoints'),_0x272bb7;}function generateDatatablesFunction(_0xc90925,_0x1ea612,_0x4333cf,_0x274f73=null){const _0x3c8912=a0_0x1dae89;if(!_0x274f73){const _0x336dec=FileUtils[_0x3c8912(0x1ff)](_0x1ea612);_0x274f73=_0x336dec+'Model';}return'\x0a//\x20POST\x20/api/'+_0xc90925+'/'+_0x1ea612+'/datatables\x20-\x20Data\x20untuk\x20DataTables\x0arouter.post(\x27/datatables\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x1ea612+_0x3c8912(0x2f1)+_0x274f73+_0x3c8912(0x1f7)+_0x1ea612+_0x3c8912(0x1e8)+_0x1ea612+_0x3c8912(0x1f3)+_0x1ea612+'\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(_0x4b6cdd,_0xc578a4,_0x46d667,_0x132b48=null,_0x50d2dc=![]){const _0x1b2c21=a0_0x1dae89,_0x384cf9={'eKrzO':function(_0x23e2e6,_0x39006a){return _0x23e2e6(_0x39006a);},'zMkrC':function(_0x20cff8,_0x53560d){return _0x20cff8(_0x53560d);},'DXDoX':function(_0x5190c8,_0x5a2705){return _0x5190c8(_0x5a2705);}};if(!_0x132b48){const _0x1cb2c5=FileUtils['toCamelCase'](_0xc578a4);_0x132b48=_0x1cb2c5+'Model';}const _0x44b4b3=_0x384cf9[_0x1b2c21(0x305)](isSoftDeleteEnabled,_0x46d667)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+_0x1b2c21(0x264):'',_0x1be413=_0x384cf9[_0x1b2c21(0x230)](hasSoftDeleteFkParents,_0x46d667)?'\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'+_0x132b48+_0x1b2c21(0x33c):'',_0x19ee13=_0x384cf9[_0x1b2c21(0x1e6)](hasSoftDeleteFkParents,_0x46d667)?'\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':'',_0x303d5e=_0x50d2dc?_0x1b2c21(0x2d4)+_0x4b6cdd+_0x1b2c21(0x2db)+_0xc578a4+'\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'+(_0x46d667[_0x1b2c21(0x18c)]||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x46d667[_0x1b2c21(0x1f8)]+'\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':'',_0x5d3c82=_0x50d2dc?_0x1b2c21(0x1ef):'\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 _0x1b2c21(0x1b1)+_0x4b6cdd+'/'+_0xc578a4+_0x1b2c21(0x36c)+_0xc578a4+_0x1b2c21(0x239)+_0xc578a4+_0x1b2c21(0x244)+_0x5d3c82+_0x1b2c21(0x1cd)+_0x132b48+_0x1b2c21(0x324)+_0x132b48+_0x1b2c21(0x300)+_0x44b4b3+'\x0a'+_0x1be413+'\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'+_0x46d667['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'+_0x132b48+'.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'+_0x132b48+_0x1b2c21(0x304)+_0xc578a4+_0x1b2c21(0x25f)+(_0x46d667[_0x1b2c21(0x18c)]||'id')+'\x20||\x20\x27new\x20record\x27}`);\x0a'+_0x303d5e+_0x1b2c21(0x18b)+_0xc578a4+'\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'+_0xc578a4+':\x27,\x20error);\x0a'+_0x19ee13+_0x1b2c21(0x1df)+_0xc578a4+_0x1b2c21(0x2d1);}function generateUpdateFunction(_0x9b2c5f,_0x94781f,_0x1d3d9a,_0x6ded64=null,_0x30c6be=![]){const _0x450845=a0_0x1dae89,_0x45eda3={'ZVfww':function(_0xceb3eb,_0x367374){return _0xceb3eb(_0x367374);},'KSZja':function(_0x29fc7e,_0x238b40){return _0x29fc7e(_0x238b40);}};if(!_0x6ded64){const _0x3390cc=FileUtils['toCamelCase'](_0x94781f);_0x6ded64=_0x3390cc+'Model';}const _0x27661d=_0x1d3d9a[_0x450845(0x180)]?',\x20'+JSON['stringify'](_0x1d3d9a[_0x450845(0x180)]):'',_0x438825=_0x1d3d9a['requestScope']?_0x450845(0x32f)+_0x6ded64+_0x450845(0x19c)+_0x94781f+_0x450845(0x19a):'',_0xdb1305=softDeleteVisibilityFilter(_0x1d3d9a),_0x18495a=_0xdb1305!==null?'\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20__sdCheck\x20=\x20await\x20'+_0x6ded64+'.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+_0x450845(0x331)+_0xdb1305+'\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'+_0x94781f+_0x450845(0x2e8):'',_0x5662c9=_0x45eda3['ZVfww'](isSoftDeleteEnabled,_0x1d3d9a)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20{\x0a\x20\x20\x20\x20\x20\x20delete\x20req.body[__sdCol];\x0a\x20\x20\x20\x20}':'',_0x2de4cf=hasSoftDeleteFkParents(_0x1d3d9a)?_0x450845(0x246)+_0x6ded64+'.checkSoftDeleteFkParents(req.body,\x20\x27update\x27);\x0a':'',_0x596f9a=_0x45eda3[_0x450845(0x17f)](hasSoftDeleteFkParents,_0x1d3d9a)?_0x450845(0x1d9):'',_0x3459b2=_0x30c6be?_0x450845(0x1da)+_0x9b2c5f+_0x450845(0x2db)+_0x94781f+'\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'+(_0x1d3d9a['primaryKey']||'id')+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x1d3d9a[_0x450845(0x1f8)]+'\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':'',_0x26d92b=_0x30c6be?_0x450845(0x1ef):_0x450845(0x2e4);return _0x450845(0x1b1)+_0x9b2c5f+'/'+_0x94781f+'/update\x20-\x20Mengupdate\x20data\x20'+_0x94781f+_0x450845(0x25e)+_0x94781f+'/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'+_0x26d92b+_0x450845(0x179)+(_0x1d3d9a[_0x450845(0x18c)]||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\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`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20update`,\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'+_0x438825+_0x18495a+_0x450845(0x1fc)+_0x6ded64+_0x450845(0x324)+_0x6ded64+_0x450845(0x281)+_0x5662c9+'\x0a'+_0x2de4cf+_0x450845(0x2e6)+_0x1d3d9a[_0x450845(0x1f8)]+'\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'+_0x6ded64+_0x450845(0x32e)+_0x27661d+');\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]\x20UPDATE\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]\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}\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'+_0x6ded64+'.updateData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20}'+_0x27661d+_0x450845(0x34f)+_0x94781f+'\x20data\x20updated\x20successfully:\x20${primaryKey}=${req.body[primaryKey]}`);\x0a'+_0x3459b2+'\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'+_0x94781f+'\x20data\x20successfully\x20updated\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\x20mengupdate\x20data\x20'+_0x94781f+_0x450845(0x1bb)+_0x596f9a+_0x450845(0x207)+_0x94781f+_0x450845(0x24f)+_0x94781f+_0x450845(0x2d1);}function generateAdjustFunction(_0x3ecb19,_0xcb764f,_0x555ad5,_0x14db86=null){const _0x46382b=a0_0x1dae89;if(!_0x14db86){const _0x3cfe39=FileUtils['toCamelCase'](_0xcb764f);_0x14db86=_0x3cfe39+'Model';}const _0x3cb407=_0x555ad5[_0x46382b(0x26b)]?JSON['stringify'](_0x555ad5['adjustConfig']):'{}',_0x32b17d=_0x555ad5['fieldPolicy']?',\x20'+JSON[_0x46382b(0x199)](_0x555ad5[_0x46382b(0x180)]):'',_0x8a0270=_0x555ad5['fieldPolicy']?',\x20null,\x20'+JSON['stringify'](_0x555ad5[_0x46382b(0x180)]):'',_0x5ade5b=_0x555ad5['requestScope']?_0x46382b(0x32f)+_0x14db86+'.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'+_0xcb764f+_0x46382b(0x19a):'';return'\x0a//\x20POST\x20/api/'+_0x3ecb19+'/'+_0xcb764f+_0x46382b(0x194)+_0xcb764f+_0x46382b(0x2bb)+(_0x555ad5['primaryKey']||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\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`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20adjust`,\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\x20adjustments\x20array\x0a\x20\x20\x20\x20if\x20(!req.body.adjustments\x20||\x20!Array.isArray(req.body.adjustments)\x20||\x20req.body.adjustments.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\x27adjustments\x20array\x20is\x20required\x20and\x20must\x20not\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'+_0x5ade5b+_0x46382b(0x28b)+_0x3cb407+_0x46382b(0x23d)+_0x555ad5[_0x46382b(0x1f8)]+_0x46382b(0x334)+_0x14db86+'.adjustData(req.body,\x20adjustConfig,\x20eventContext'+_0x32b17d+_0x46382b(0x2a0)+_0x14db86+_0x46382b(0x1dd)+_0x8a0270+');\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(`'+_0xcb764f+_0x46382b(0x2d7)+_0xcb764f+_0x46382b(0x20e)+_0xcb764f+':\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'+_0xcb764f+_0x46382b(0x21d)+_0xcb764f+'\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(_0x10d6f9,_0x56de4d,_0x577f8b,_0x5b7d54=null){const _0x350b0b=a0_0x1dae89;if(!_0x5b7d54){const _0x3d3a58=FileUtils['toCamelCase'](_0x56de4d);_0x5b7d54=_0x3d3a58+'Model';}const _0x15c675=_0x577f8b[_0x350b0b(0x27f)]?JSON['stringify'](_0x577f8b['aggregateConfig']):'{}';return _0x350b0b(0x1b1)+_0x10d6f9+'/'+_0x56de4d+_0x350b0b(0x367)+_0x15c675+_0x350b0b(0x1b7)+_0x5b7d54+_0x350b0b(0x2c8)+_0x56de4d+_0x350b0b(0x1e5)+_0x56de4d+_0x350b0b(0x2d1);}function hasSoftDeleteFkRestrictChildren(_0x345e65){const _0xf197ad=a0_0x1dae89;return Array['isArray'](_0x345e65[_0xf197ad(0x361)])&&_0x345e65[_0xf197ad(0x361)][_0xf197ad(0x189)](_0x3e70ed=>_0x3e70ed&&_0x3e70ed['onDelete']===_0xf197ad(0x336));}function hasCascadeChildren(_0x558b0c){const _0x378aff=a0_0x1dae89,_0xc03bec={'MTfVS':function(_0x480e6b,_0x411769){return _0x480e6b===_0x411769;},'DRrks':_0x378aff(0x343)},_0x420df9=_0x558b0c&&_0x558b0c['softDeleteCascadeTree'];return!!(_0x420df9&&_0xc03bec['MTfVS'](typeof _0x420df9,_0xc03bec[_0x378aff(0x289)])&&_0xc03bec['MTfVS'](typeof _0x420df9[_0x378aff(0x197)],_0x378aff(0x2a4))&&_0x420df9[_0x378aff(0x197)]&&_0x420df9['nodes']&&_0xc03bec[_0x378aff(0x2f0)](typeof _0x420df9[_0x378aff(0x2b6)],_0x378aff(0x343))&&_0x420df9['nodes'][_0x420df9['master']]);}function generateDeleteFunction(_0x1f74e1,_0x55cd7a,_0x23f9b4,_0x187eea=null,_0x2a9588=![]){const _0x235756=a0_0x1dae89,_0x23e37c={'XEnui':function(_0x14c72e,_0x3e195d){return _0x14c72e(_0x3e195d);}};if(!_0x187eea){const _0x231cc2=FileUtils[_0x235756(0x1ff)](_0x55cd7a);_0x187eea=_0x231cc2+'Model';}const _0x1521e1=_0x2a9588?_0x235756(0x346)+_0x1f74e1+_0x235756(0x2db)+_0x55cd7a+_0x235756(0x287)+(_0x23f9b4[_0x235756(0x18c)]||'id')+_0x235756(0x175)+_0x23f9b4['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':'',_0x13c80d=_0x2a9588?'\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':_0x235756(0x2e4);return _0x235756(0x1b1)+_0x1f74e1+'/'+_0x55cd7a+_0x235756(0x33a)+_0x55cd7a+'\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'+_0x55cd7a+'/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'+_0x13c80d+_0x235756(0x292)+_0x187eea+_0x235756(0x250)+_0x55cd7a+_0x235756(0x265)+_0x23f9b4[_0x235756(0x1f8)]+'\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'+_0x187eea+_0x235756(0x35b)+_0x187eea+_0x235756(0x2f5)+_0x55cd7a+_0x235756(0x25a)+_0x1521e1+'\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\x20menghapus\x20data\x20'+_0x55cd7a+_0x235756(0x1bb)+(_0x23f9b4[_0x235756(0x1b8)]?.['enabled']?_0x235756(0x174)+_0x55cd7a+_0x235756(0x2a6):'')+(hasSoftDeleteFkRestrictChildren(_0x23f9b4)||_0x23e37c[_0x235756(0x22a)](hasCascadeChildren,_0x23f9b4)?_0x235756(0x27d):'')+_0x235756(0x247)+_0x55cd7a+_0x235756(0x2d1);}function generateRestoreFunction(_0x2cdb9f,_0x2abdc7,_0x23cbd6,_0x371a3a=null){const _0x2776dd=a0_0x1dae89;if(!_0x371a3a){const _0x5d99a8=FileUtils['toCamelCase'](_0x2abdc7);_0x371a3a=_0x5d99a8+_0x2776dd(0x29e);}return _0x2776dd(0x1b1)+_0x2cdb9f+'/'+_0x2abdc7+'/restore\x20-\x20Memulihkan\x20data\x20'+_0x2abdc7+_0x2776dd(0x35e)+_0x23cbd6['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\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\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20responseData\x20=\x20await\x20'+_0x371a3a+_0x2776dd(0x314)+_0x2abdc7+_0x2776dd(0x1ac)+_0x2abdc7+_0x2776dd(0x2fd)+_0x2abdc7+'\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'+_0x2abdc7+_0x2776dd(0x2d1);}function generateFirstFunction(_0x250a29,_0x192834,_0xe89eb,_0x3c8704,_0x1955a9,_0x108d8a=null){const _0x3a3125=a0_0x1dae89,_0x2127bc={'mSzWJ':function(_0x18f502,_0x10859f){return _0x18f502(_0x10859f);},'wCCBv':function(_0x3abcb1,_0x4be8c0){return _0x3abcb1!==_0x4be8c0;}};if(!_0x108d8a){const _0x2fe4a2=FileUtils['toCamelCase'](_0x192834);_0x108d8a=_0x2fe4a2+_0x3a3125(0x29e);}const _0xa35f10=_0xe89eb['requestScope']?_0x3a3125(0x33e)+_0x192834+'\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':'',_0x382243=_0x2127bc[_0x3a3125(0x373)](softDeleteVisibilityFilter,_0xe89eb),_0x27f51f=_0x382243!==null?_0x3a3125(0x1b4)+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x382243+_0x3a3125(0x1a5):'',_0x35c1b5=_0x2127bc[_0x3a3125(0x30c)](_0x382243,null)?_0x3a3125(0x218)+_0x192834+'\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/'+_0x250a29+'/'+_0x192834+'/first\x20-\x20Mendapatkan\x20data\x20'+_0x192834+_0x3a3125(0x234)+_0x192834+_0x3a3125(0x2ed)+(_0xe89eb['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'+(_0xe89eb['primaryKey']||'id')+_0x3a3125(0x25b)+JSON['stringify'](_0xe89eb['fieldName']||[])+_0x3a3125(0x35c)+_0x27f51f+'\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x108d8a+'.getData(getPayload);'+_0x35c1b5+'\x0a'+_0xa35f10+'\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'+_0x192834+'\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'+_0x192834+':\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'+_0x192834+_0x3a3125(0x2d1);}function generateLookupFunction(_0x57b796,_0x38fa26,_0x1b4bac,_0x32ee59,_0x20d4e9,_0x5caddb=null){const _0x1c56ca=a0_0x1dae89,_0x3118b6={'fQtSX':'code','vWBit':_0x1c56ca(0x222)};if(!_0x5caddb){const _0x4b63eb=FileUtils['toCamelCase'](_0x38fa26);_0x5caddb=_0x4b63eb+_0x1c56ca(0x29e);}const _0x2aaac0=_0x1b4bac[_0x1c56ca(0x362)]||null;return'\x0a//\x20GET\x20/api/'+_0x57b796+'/'+_0x38fa26+_0x1c56ca(0x298)+_0x38fa26+'\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(`'+_0x38fa26+_0x1c56ca(0x2e3)+_0x5caddb+_0x1c56ca(0x2df)+_0x38fa26+'\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'+_0x38fa26+_0x1c56ca(0x183)+_0x57b796+'/'+_0x38fa26+_0x1c56ca(0x22f)+_0x38fa26+_0x1c56ca(0x2cd)+JSON['stringify'](_0x2aaac0)+_0x1c56ca(0x227)+_0x20d4e9+'\x22];\x0a\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\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22selected_tag\x22:\x20\x22optional-id-if-needed\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22'+(_0x32ee59['all']?_0x32ee59['all']['find'](_0x4920bc=>_0x4920bc!=='id')||_0x1c56ca(0x245):_0x3118b6[_0x1c56ca(0x2ab)])+_0x1c56ca(0x371)+_0x20d4e9+'||\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'+_0x20d4e9+'\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\x22key\x22:\x20\x22'+_0x20d4e9+_0x1c56ca(0x329)+(_0x32ee59['textFields']?_0x32ee59[_0x1c56ca(0x273)][_0x1c56ca(0x2f2)](0x0,0x4)['join'](_0x3118b6['vWBit']):_0x1b4bac['fieldName'][_0x1c56ca(0x2f2)](0x0,0x4)[_0x1c56ca(0x2f7)](_0x1c56ca(0x222)))+_0x1c56ca(0x2ef)+_0x20d4e9+'\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'+(_0x1b4bac['fieldName'][0x1]||_0x20d4e9)+'\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'+_0x20d4e9+_0x1c56ca(0x2a9)+_0x38fa26+'/lookup:\x27,\x20JSON.stringify(req.body,\x20null,\x202));\x0a\x0a\x20\x20\x20\x20//\x20Cek\x20apakah\x20ada\x20where\x20clause\x20(format\x20baru)\x20atau\x20selected_tag\x20(format\x20lama)\x0a\x20\x20\x20\x20if\x20(req.body.where)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20baru\x20dengan\x20where\x20clause\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Using\x20new\x20format\x20with\x20where\x20clause\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20format\x20where\x0a\x20\x20\x20\x20\x20\x20if\x20(!Array.isArray(req.body.where)\x20&&\x20!req.body.where.conditions)\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\x20where\x20format\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20where\x20format\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[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20\x22key\x22:\x20\x22'+(_0x32ee59['all']?_0x32ee59['all'][_0x1c56ca(0x2ce)](_0x2e1041=>_0x2e1041!=='id')||_0x3118b6['fQtSX']:_0x1c56ca(0x245))+_0x1c56ca(0x186)+_0x20d4e9+_0x1c56ca(0x1ee)+_0x20d4e9+_0x1c56ca(0x217)+_0x20d4e9+_0x1c56ca(0x2d0)+(_0x32ee59['textFields']?_0x32ee59[_0x1c56ca(0x273)]['slice'](0x0,0x4)[_0x1c56ca(0x2f7)]('\x22,\x20\x22'):_0x1b4bac['fieldName'][_0x1c56ca(0x2f2)](0x0,0x4)[_0x1c56ca(0x2f7)](_0x3118b6['vWBit']))+'\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'](_0x1b4bac['fieldName']||[])+';\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\x20validFields:\x20validFields,\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'+_0x5caddb+'.getLookupDataWithFilter(req.body);\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Lookup\x20with\x20filter\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20query:\x20req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20lama\x20atau\x20request\x20tanpa\x20WHERE\x20clause\x20tetapi\x20dengan\x20SELECT\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Using\x20legacy\x20format\x20with\x20selected_tag\x20or\x20select-only\x20request\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20selectedTag\x20=\x20req.body.selected_tag\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20console.log(`'+_0x38fa26+'\x20static\x20lookup\x20request\x20with\x20selected_tag:\x20${selectedTag}`);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Jika\x20ada\x20field\x20select\x20atau\x20sort_columns,\x20gunakan\x20getLookupDataWithFilter\x20dengan\x20body\x20yang\x20dimodifikasi\x0a\x20\x20\x20\x20\x20\x20if\x20((req.body.select\x20&&\x20Array.isArray(req.body.select))\x20||\x20(req.body.sort_columns\x20&&\x20Array.isArray(req.body.sort_columns)))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(\x27Found\x20select\x20fields\x20or\x20sort_columns,\x20using\x20getLookupDataWithFilter\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Buat\x20body\x20baru\x20dengan\x20where\x20kosong\x20untuk\x20mengambil\x20semua\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20modifiedBody\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20...req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[]\x20//\x20Empty\x20where\x20untuk\x20mengambil\x20semua\x20data\x0a\x20\x20\x20\x20\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0x5caddb+_0x1c56ca(0x34b)+_0x5caddb+'.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'+_0x38fa26+'\x20static\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\x20fetching\x20'+_0x38fa26+_0x1c56ca(0x2d1);}function generateReadFunction(_0x6305de,_0x8ce2b,_0x25ff74,_0x18f2d3=null){const _0x2a3c54=a0_0x1dae89;if(!_0x18f2d3){const _0x4d7914=FileUtils[_0x2a3c54(0x1ff)](_0x8ce2b);_0x18f2d3=_0x4d7914+_0x2a3c54(0x29e);}return'\x0a//\x20POST\x20/api/'+_0x6305de+'/'+_0x8ce2b+_0x2a3c54(0x274)+_0x8ce2b+'/read:\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\x0a\x20\x20\x20\x20//\x20Deteksi\x20mode:\x20paginasi\x20(page\x20dikirim)\x20atau\x20non-paginasi\x20(page\x20tidak\x20dikirim)\x0a\x20\x20\x20\x20const\x20paginate\x20=\x20req.body.page\x20!==\x20undefined;\x0a\x20\x20\x20\x20const\x20page\x20=\x20paginate\x20?\x20parseInt(req.body.page,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20perPage\x20=\x20paginate\x20?\x20parseInt(req.body.per_page\x20||\x2010,\x2010)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20limit\x20=\x20!paginate\x20?\x20Math.min(Math.max(parseInt(req.body.limit\x20||\x201000,\x2010),\x201),\x205000)\x20:\x20null;\x0a\x20\x20\x20\x20const\x20searchValue\x20=\x20req.body.search_value\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20const\x20searchBy\x20=\x20req.body.search_by\x20||\x20\x27'+(_0x25ff74['primaryKey']||_0x25ff74['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[_0x2a3c54(0x199)](_0x25ff74['fieldName']||[])+_0x2a3c54(0x1e9)+_0x18f2d3+_0x2a3c54(0x315)+_0x8ce2b+'\x20list:\x27,\x20error);\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'+_0x8ce2b+_0x2a3c54(0x182);}function a0_0x231e(_0x462161,_0x4050e3){_0x462161=_0x462161-0x16f;const _0x4b4bc7=a0_0x4b4b();let _0x231e76=_0x4b4bc7[_0x462161];if(a0_0x231e['fKnpdx']===undefined){var _0x414f91=function(_0x4c8f95){const _0x3f5522='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x160bd7='',_0x3da0f2='';for(let _0x49dd0f=0x0,_0x4ebbae,_0x594730,_0x3974ab=0x0;_0x594730=_0x4c8f95['charAt'](_0x3974ab++);~_0x594730&&(_0x4ebbae=_0x49dd0f%0x4?_0x4ebbae*0x40+_0x594730:_0x594730,_0x49dd0f++%0x4)?_0x160bd7+=String['fromCharCode'](0xff&_0x4ebbae>>(-0x2*_0x49dd0f&0x6)):0x0){_0x594730=_0x3f5522['indexOf'](_0x594730);}for(let _0x4125c7=0x0,_0x5c988f=_0x160bd7['length'];_0x4125c7<_0x5c988f;_0x4125c7++){_0x3da0f2+='%'+('00'+_0x160bd7['charCodeAt'](_0x4125c7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3da0f2);};a0_0x231e['oYWmax']=_0x414f91,a0_0x231e['VOedIj']={},a0_0x231e['fKnpdx']=!![];}const _0x59cfa3=_0x4b4bc7[0x0],_0x330c9c=_0x462161+_0x59cfa3,_0x264f7a=a0_0x231e['VOedIj'][_0x330c9c];return!_0x264f7a?(_0x231e76=a0_0x231e['oYWmax'](_0x231e76),a0_0x231e['VOedIj'][_0x330c9c]=_0x231e76):_0x231e76=_0x264f7a,_0x231e76;}function generateCreateCompositeFunction(_0x52bbd5,_0x2c76bc,_0x1c2382,_0x50f9e6=null){const _0x5cd41b=a0_0x1dae89,_0x158273={'ygUXv':_0x5cd41b(0x1c7),'rVoQs':_0x5cd41b(0x31e),'Lcrui':_0x5cd41b(0x372),'CatVn':'\x20(with\x20detail\x20items)'};if(!_0x50f9e6){const _0x4e55cd=FileUtils[_0x5cd41b(0x1ff)](_0x2c76bc);_0x50f9e6=_0x4e55cd+'Model';}const _0x2419db=_0x1c2382['masterDetail']&&_0x1c2382[_0x5cd41b(0x261)][_0x5cd41b(0x276)],_0x4948f6=_0x2419db?_0x1c2382[_0x5cd41b(0x261)][_0x5cd41b(0x352)]:null,_0x533e8a=_0x4948f6?_0x4948f6[_0x5cd41b(0x238)]('.')[_0x5cd41b(0x1b3)]():_0x158273[_0x5cd41b(0x278)],_0x4abbda=_0x2c76bc[_0x5cd41b(0x1c6)](/-/g,'_'),_0xcd4e1b=_0x1c2382['masterDetail']?.[_0x5cd41b(0x354)]?.[_0x5cd41b(0x18e)]?.[_0x5cd41b(0x27e)]?.[_0x5cd41b(0x34e)]||'',_0x481fb4=_0xcd4e1b[_0x5cd41b(0x238)]('*')[_0x5cd41b(0x171)](_0x415793=>_0x415793[_0x5cd41b(0x185)]()),_0x46827e=_0x1c2382['masterDetail']?.['headerCalculations']?.['total_qty']?.['source']?.['replace']('items.','')||'',_0x122c91=_0x481fb4[0x0]||_0x46827e,_0x20d170=_0x481fb4[0x1]||_0x158273['rVoQs'];return _0x5cd41b(0x1b1)+_0x52bbd5+'/'+_0x2c76bc+'/create-composite\x20-\x20Composite\x20create\x20'+(_0x2419db?_0x5cd41b(0x23f):'')+_0x5cd41b(0x1e7)+_0x2c76bc+_0x5cd41b(0x22c)+_0x4abbda+_0x5cd41b(0x2a3)+_0x4abbda+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20'+(_0x2419db?_0x5cd41b(0x270)+_0x4abbda+'\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'+_0x533e8a+_0x5cd41b(0x2d9):'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x4abbda+'\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.'+_0x4abbda+_0x5cd41b(0x248)+_0x50f9e6+'.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'+(_0x2419db?_0x5cd41b(0x1bd)+_0x533e8a+';':'')+_0x5cd41b(0x1be)+_0x50f9e6+'.validateData(headerDataForValidation,\x20\x27insert\x27);\x0a\x20\x20\x20\x20\x20\x20if\x20(!validation.isValid)\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\x27Validation\x20failed\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Invalid\x20data\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20errors:\x20validation.errors,\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//\x20Merge\x20sanitized\x20data\x20(termasuk\x20hash\x20result)\x20kembali\x20ke\x20data\x0a\x20\x20\x20\x20\x20\x20Object.assign(data,\x20validation.sanitizedData);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20'+(_0x2419db?'\x0a\x20\x20\x20\x20//\x20Validasi\x20detail\x20items\x20untuk\x20master-detail\x0a\x20\x20\x20\x20if\x20(!data.'+_0x533e8a+'\x20||\x20!Array.isArray(data.'+_0x533e8a+_0x5cd41b(0x17a)+_0x533e8a+_0x5cd41b(0x2b4)+_0x533e8a+'\x22\x20must\x20be\x20a\x20non-empty\x20array\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//\x20Auto-calculate\x20totals\x20jika\x20ada\x20konfigurasi\x0a\x20\x20\x20\x20'+(_0x1c2382[_0x5cd41b(0x261)]['headerCalculations']?_0x5cd41b(0x364)+JSON['stringify'](_0x1c2382['masterDetail']['headerCalculations'])+';\x0a\x20\x20\x20\x20if\x20(headerCalc.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20data.total_items\x20=\x20data.'+_0x533e8a+'.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.'+_0x533e8a+_0x5cd41b(0x26d)+(_0x122c91?_0x5cd41b(0x184)+_0x122c91+_0x5cd41b(0x2c1)+_0x20d170+')\x20from\x20all\x20items\x0a\x20\x20\x20\x20\x20\x20data.total_amount\x20=\x20data.'+_0x533e8a+'.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x122c91+_0x5cd41b(0x36e)+_0x20d170+_0x5cd41b(0x1c9):_0x158273[_0x5cd41b(0x31d)])+_0x5cd41b(0x2bf):'')+'\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':'')+'\x0a\x0a\x20\x20\x20\x20//\x20Build\x20eventContext\x20untuk\x20composite\x20hooks\x20(jika\x20component\x20engine\x20tersedia)\x0a\x20\x20\x20\x20let\x20eventContext\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x1c2382[_0x5cd41b(0x1f8)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x4948f6+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x2419db?_0x1c2382[_0x5cd41b(0x261)][_0x5cd41b(0x26e)]:'')+_0x5cd41b(0x2d5)+_0x50f9e6+_0x5cd41b(0x2ad)+_0x2c76bc+'\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'+_0x2c76bc+_0x5cd41b(0x1e1)+(_0x2419db?_0x158273[_0x5cd41b(0x2da)]:'')+_0x5cd41b(0x22d)+_0x2c76bc+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\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{\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\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\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\x20creating\x20'+_0x2c76bc+_0x5cd41b(0x2d1);}function generateUpdateCompositeFunction(_0x182839,_0x5970da,_0x562053,_0x43e6f8=null){const _0x17f915=a0_0x1dae89,_0x1b2bfb={'zzSTd':'\x20(with\x20detail\x20items)'};if(!_0x43e6f8){const _0x1f6655=FileUtils[_0x17f915(0x1ff)](_0x5970da);_0x43e6f8=_0x1f6655+_0x17f915(0x29e);}const _0x5d67fa=_0x562053['masterDetail']&&_0x562053[_0x17f915(0x261)][_0x17f915(0x276)],_0x473ee4=_0x5d67fa?_0x562053[_0x17f915(0x261)][_0x17f915(0x352)]:null,_0x13ae16=_0x473ee4?_0x473ee4['split']('.')[_0x17f915(0x1b3)]():_0x17f915(0x1c7),_0xbfd0c0=_0x5970da[_0x17f915(0x1c6)](/-/g,'_'),_0x14db75=_0x562053[_0x17f915(0x18c)]||'id',_0x254b23=_0x562053[_0x17f915(0x257)]?'\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'+_0x43e6f8+_0x17f915(0x36f)+_0x14db75+_0x17f915(0x2e2)+_0x14db75+'\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 _0x17f915(0x1b1)+_0x182839+'/'+_0x5970da+'/update-composite\x20-\x20Composite\x20update\x20'+(_0x5d67fa?'(master-detail\x20transaction)':'')+'\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'+_0x5970da+'/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.'+_0xbfd0c0+_0x17f915(0x2a3)+_0xbfd0c0+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20'+(_0x5d67fa?_0x17f915(0x270)+_0xbfd0c0+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x14db75+_0x17f915(0x325)+_0x13ae16+'\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}':_0x17f915(0x270)+_0xbfd0c0+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x14db75+_0x17f915(0x2b1))+',\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.'+_0xbfd0c0+';\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20primary\x20key\x0a\x20\x20\x20\x20if\x20(!data.'+_0x14db75+')\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('+_0x14db75+_0x17f915(0x2fb)+_0x254b23+_0x17f915(0x1c0)+_0x43e6f8+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20saja\x20(exclude\x20detail)\x20untuk\x20validation\x0a\x20\x20\x20\x20\x20\x20const\x20headerDataForValidation\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20'+(_0x5d67fa?_0x17f915(0x1bd)+_0x13ae16+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x43e6f8+_0x17f915(0x177)+(_0x5d67fa?_0x17f915(0x323)+_0x13ae16+_0x17f915(0x187)+_0x13ae16+'\x20!==\x20\x27object\x27\x20||\x20Array.isArray(data.'+_0x13ae16+'))\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'+_0x13ae16+_0x17f915(0x369)+_0x13ae16+_0x17f915(0x1c2)+_0x13ae16+_0x17f915(0x2de)+_0x13ae16+'.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'+_0x13ae16+'.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':'')+'\x0a\x0a\x20\x20\x20\x20//\x20Build\x20eventContext\x20untuk\x20composite\x20hooks\x20(jika\x20component\x20engine\x20tersedia)\x0a\x20\x20\x20\x20let\x20eventContext\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x562053['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x473ee4+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x5d67fa?_0x562053['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'+_0x43e6f8+'.updateComposite(data,\x20eventContext);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x5970da+'\x20composite\x20update\x20successful:\x20'+_0x14db75+_0x17f915(0x2b8)+_0x14db75+'}`);\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\x27'+_0x5970da+_0x17f915(0x27b)+(_0x5d67fa?_0x1b2bfb[_0x17f915(0x215)]:'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\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\x20update\x20'+_0x5970da+':\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'+_0x5970da+'\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{\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{\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\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\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'+_0x5970da+_0x17f915(0x2d1);}function a0_0x4b4b(){const _0x9b680d=['ie9srevsiejzigeU','D25HD3q','id0GjdeGt1jerviGqLKGBgLUzv9UDw1IzxjGoW','id0GCMvXDwLYzsGNlI4VlI4VBw9KzwXZlW','iL0kicaGicaGicaGih0ScIaGicaGicaGicbLEgfTCgXLx2fKDMfUy2vKoIb7cIaGicaGicaGicaGicj3AgvYzsi6ihSkicaGicaGicaGicaGicaIBg9NAwmIoIaIt1iIlaOGicaGicaGicaGicaGicjJB25KAxrPB25ZiJOGwWOGicaGicaGicaGicaGicaGEYaIA2v5iJOGiG','cIaGicaVlYbwywXPzgfZAsb4lwnVCNjLBgf0Aw9UlwLKigHLywrLCIaOtuforefut1jzigPPA2eGs2fMA2eGzw5HyMXLzcKkicaGignVBNn0ignVCNjLBgf0Aw9UswqGpsbYzxeUAgvHzgvYC1SNEc1JB3jYzwXHDgLVBI1PzcDDoWOGicaGAwyGkcfJB3jYzwXHDgLVBKLKksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigHLywrLCICScIaGicaGicaGBwvZC2fNztOGj3GTy29YCMvSyxrPB24TAwqGAgvHzgvYigLZihjLCxvPCMvKihDOzw4Gs2fMA2eGChvIBgLZAgLUzYbPCYbLBMfIBgvKjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','zgf0yxrHyMXLC1DOzxjL','ksb8FcaWktS','jYWkicaGicaGDMLLD05HBwu6icC','igrHDgf0ywjSzxm6jYWGzxjYB3iPoWOGicaGy29UC3qGC3rHDhvZq29Kzsa9igvYCM9YlNn0yxr1C0nVzguGFhWGntaWoWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOC3rHDhvZq29KzsKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGC3rHDhvZq29Kzsa9pt0GndaWid8Gj0jHzcbszxf1zxn0jYa6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIbZDgf0DxndB2rLid09psa0mdaGpYbLCNjVCI5TzxnZywDLidOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigzLDgnOAw5Nia','rMTMsMe','t2zZtfq','Bg9VA3vW','lMDLDerHDgf0ywjSzxmOB3b0Aw9UCYK7cGOGicaGlY8GtwvUyw1IywHRyw4GBM9TB3iGyMfYAxmGDw50DwSGrgf0yvrHyMXLCYbQAwTHigrPCgvYBhvRyw4kicaGigLMicHYzxn1BhqUzgf0ysaMjIbbCNjHEs5PC0fYCMf5khjLC3vSDc5KyxrHksKGEWOGicaGicbYzxn1BhqUzgf0ysa9ihjLC3vSDc5KyxrHlM1HCcGOAxrLBsWGAw5KzxGPid0+icH7cIaGicaGicaGlI4UAxrLBsWkicaGicaGicbYB3DUDw1LCMf0B3i6ig9WDgLVBNmUC3rHCNqGkYbPBMrLEcaRidekicaGicaGFsKPoWOGicaGFqOkicaGic8ViefKzcbTzxrHzgf0ysb1BNr1AYbKzwj1z2DPBMCGkgrLDMvSB3bTzw50ig9UBhKPcIaGicbPzIaOChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCPihSkicaGicaGCMvZDwX0lL9TzxrHzgf0ysa9ihSkicaGicaGicbLBMrWB2LUDdOGjW','DgfIBgvoyw1L','y3jLyxrLq29TCg9ZAxrL','Aw1WB3j0q29UzMLN','CMznsha','cIaGicaVlYbdzwSGyxbHA2fOihbYAw1HCNKGA2v5igfKywXHAcbvvuLeihLHBMCGDMfSAwqGkgPPA2eGChjPBwfYEsbRzxKGywrHBgfOicDPzcCPcIaGicbJB25ZDcb1DwLKuMvNzxGGpsaVxLSWltLHlwzDEZH9lvSWltLHlwzDEZr9lvSXltvDwZaToweTzL17m30TwZG5ywjDwZaToweTzL17m30TwZaToweTzL17mtj9jc9PoWOGicaGy29UC3qGAxnwywXPzfvvsuqGpsbWCMLTyxj5s2v5id09psaNAwqNicyMihv1AwrszwDLEc50zxn0khjLCs5IB2r5w3bYAw1HCNLlzxLDktSkcIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','cIaGicaGih07cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbKzwXLDgveyxrHoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9igzPBMfSBhKGEWOGicaGicbJBgLLBNqUCMvSzwfZzsGPoWOGicaGFqOGih0k','ihn0yxr1CYbJAgfUz2vKoIaKE3jLC3vSDc53B3jRzMXVDY5WCMv2Aw91C1n0yxr1C30G4OAsicr7CMvZDwX0lNDVCMTMBg93lM5LD1n0yxr1C31GktSkcIaGicbYzxr1CM4GCMvZlNn0yxr1CYGYmdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicbTzxnZywDLoIbGu3rHDhvZignOyw5NzwqGzNjVBsaKE3jLC3vSDc53B3jRzMXVDY5WCMv2Aw91C1n0yxr1C30GDg8GjhTYzxn1BhqUD29YA2zSB3CUBMv3u3rHDhvZFwaScIaGicaGigrHDge6ihjLC3vSDc5KyxrHlaOGicaGicb3B3jRzMXVDZOGCMvZDwX0lNDVCMTMBg93laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGy2HHBMDLlxn0yxr1CYa','Dg9dyw1LBenHC2u','CMvMq29SDw1UCW','Ahv1uuS','qMrqrMe','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','t1Lyu3C','lNjLywrdB21WB3nPDguOCMvXlMjVzhKPoWOkicaGignVBNnVBguUBg9Nkga','cIaGicaVlYbiyw5KBguGA2H1C3vZihvUDhvRigvYCM9YicjeyxrHihrPzgfRigrPDgvTDwTHBIikicaGigLMicHLCNjVCI5TzxnZywDLid09psaNrgf0ysb0AwrHAYbKAxrLBxvRyw4NihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','oWOGicaG','ChvZAa','ChjPBwfYEvrLEhrgAwvSza','oMaSigvYCI5TzxnZywDLktSkicaGih0PoWOGih0kFsbJyxrJAcaOzsKGEWOGigLMicHOyxndB21WB25LBNrZksb7cIaGicaVlYbdB21WB25LBNrZigrPA29UzMLNDxjHC2KGDgfWAsbLBMDPBMuGz2fNywWGBg9HzcdIGjqGAw5PigvYCM9YlcbIDwTHBIbVChrPB25HBaOGicaGy29UC29Szs5LCNjVCIHGq1jjveLdquW6ienVBxbVBMvUDcbLBMDPBMuGzMfPBgvKihrVigXVywqGzM9Yia','wgjmwxO','icHJAgLSzfnVzNrezwXLDgu9','igrHDgeGC3vJy2vZC2z1BgX5igfKANvZDgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fKANvZDcbKyxrHia','jZSkicaGigXLDcbYzxn1BhqGpsbUDwXSoWOkicaGic8Vid09psbjBNrLz3jHDgvKifrYyw5Zywn0Aw9UigrLBMDHBIbfDMvUDcbmAwzLy3LJBguGpt09cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxzLBNrdB250zxH0id0GEWOGicaGicaGicaGy29TCg9Uzw50rw5NAw5LoIbJB21WB25LBNrfBMDPBMuScIaGicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGicb0ywjSzu5HBwu6icC','A0rZzhO','mtffvMntuwO','jYWGjW','Dg9qyxnJywXdyxnL','jY50B0XVD2vYq2fZzsGPksb7cIaGicaGicaGicbJB250Aw51ztSGlY8GChjPBwfYEsbRzxKGC3vKywGGywrHcIaGicaGicaGFqOkicaGicaGicaVlYbdAgvJAYbQAwTHigfKysbtuuWGzxHWCMvZC2LVBIbKzw5Nyw4GywXPyxmGkg1LBMDNDw5HA2fUieftkqOGicaGicaGignVBNn0igfSAwfZuMvNzxGGpsbUzxCGuMvNrxHWkcCOlISPxfXZk2fZxfXZkYHCxhCRksqNlcaNAsCPoWOGicaGicaGignVBNn0igfSAwfZtwf0y2GGpsbJB2X1Bw4UBwf0y2GOywXPyxnszwDLEcK7cIaGicaGicaGAwyGkgfSAwfZtwf0y2GPihSkicaGicaGicaGignVBNn0igv4ChjLC3nPB24GpsbHBgLHC01HDgnOwZfDlNrYAw0OktSkicaGicaGicaGignVBNn0igfSAwfZid0GywXPyxnnyxrJAfSYxs50CMLTkcK7cIaGicaGicaGicbZzwXLy3rdBgf1C2uGkZ0GycWGjhTLEhbYzxnZAw9UFsbbuYaKE2fSAwfZFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbHBgLHCZSkicaGicaGicaGigfSAwfZrMLLBgqGpsbHBgLHCZSkicaGicaGicaGigjYzwfRoYaVlYbNDw5HA2fUihLHBMCGCgvYDgfTysbZzwjHz2fPihrLEhqGzMLLBgqkicaGicaGicb9cGOGicaGicaGic8VienOzwnRigPPA2eGC2LTCgXLigzPzwXKig5HBwukicaGicaGicbPzIaODMfSAwruzxH0rMLLBgrZlMLUy2X1zgvZkgnVBhvTBIKGFhWGy29SDw1Uid09psaN','ENPtvgq','cIaGicaGic8VignHC2nHzgvezwXLDguGpsb0CNvLoIberuXfveuGy2HPBgqGCMvJB3jKCYbMAxjZDcWGDgHLBIbOzwfKzxikicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NignOAwXKihjLy29YzhmGzNjVBsa','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjvbVCNrHBcuIih0ScIaGicaGicaGicaGicaGicb7icjRzxKIoIaI','cIaGicbPzIaOixjLC3vSDc5KyxrHihX8ihjLC3vSDc5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','icG0mJiPcIaGicaGicaGEWOGicaGicaGicaGy29UC3qGx19MA1zHBhmGpsbB','ksbmsuTfihvWCgvYkcqXkq','ydSkcIaGicaGignVBNn0igrHDgeGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOCxvLCNKPoWOkicaGicaGlY8Gq2fJAguGCMvZDwX0ihrHBNbHihnLBgvJDgvKigzSywCkicaGicaGy29UC3qGy2fJAgveyxrHid0Gzgf0ys5TyxaOAxrLBsa9pIaOEWOGicaGicaGigLKoIbPDgvTlG','zMLSDgvY','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','oIbHBMfRicC','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGy2fZy2fKzsbVDMvYCMLKzsaOuJe0icSGrKSTu0qTmYKUic9KzwXLDguGBwvUlxnVzNqTzgvSzxrLig1HC3rLCIaRihnLBhvYDwGkicaGkIbKzxnJzw5Kyw50ignHC2nHzguGzgfSyw0Gu0fuvsb0CMfUC2fJDgLVBIaOyxrVBwLJigfSBc1VCI1UB3rOAw5NksWGCMvZDhjPy3qTCgvYlw5VzguGnda5igrPcIaGicOGC2v0AwfWig5VzguUifjLC3bVBNnLigjHy2T3yxjKlwnVBxbHDcaOBwfZDgvYigrLChrOltaPlIb1CgrHDgvKxYOGDgLKywSGzgLZzw50DwGUcIaGicOGqhbHCMfTihTpyMPLy3r9ignYAxrLCMLHic0GEYb3AgvYztOGwY4UlL0GFsbTzw5NAwT1DgKGzM9YBwf0ic9KzwXLDguGzxHPC3rPBMCkicaGkIbaCgfYyw0GE09IAMvJDh0GzxzLBNrdB250zxH0ic0GrxzLBNqGBgLMzwn5y2XLignVBNrLEhqGkg9WC2LVBMfSkqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ihSGC3vJy2vZCYWGBwvZC2fNzsWGzgvSzxrLzf9JB3vUDcWGzgvSzxrLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHJCML0zxjPysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cGOGicaGAwyGkcfJCML0zxjPysb8FcaHy3jPDgvYAweUD2HLCMuPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGih0kcIaGicaVlYbgsY1trc0ZignSB3n1CMuGy2fZy2fKzsaOBwfZDgvYicSGC2vSDxj1AcbKzxnJzw5Kyw50igXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRcIaGicaVlYbZB2z0lwrLBgv0zsKUie1HCc1MCMvLoIbZzwX1CNvOig1LDgfKyxrHigrLC2nLBMrHBNqGzgLWzxjZAxn0igDLBMvYyxrLlxrPBwuGzgKGuKrglGOGicaGy29UC3qGx19ZzenHC2nHzgvnzxrHid0G','yxvKAxrdB2X1Bw5Z','iIWGiG','AgvHzgvYq2fSy3vSyxrPB25Z','zMLLBgroyw1L','DhLWzq','CgfYzw50u29MDerLBgv0zq','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','wevUDwK','mJGYnZm4vfjHBuDN','l2nYzwf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','lMnOyw5Nzvn0yxr1C0rHDgeOCMvXlMjVzhKSihDVCMTMBg93q29UzMLNktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbdsefor0uTu1rbvfvtignVBxbSzxrLzcb3AxrOB3v0ignVBxbVBMvUDcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDieniqu5hrs1tvefuvvmGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','l2XVB2T1CcaTie1LBMrHCgf0A2fUigrHDgeG','EK1RCKm','Bgv0igjHC2vrDwvYEsa9iga','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGlY8GvvbeqvrfoIbMB3jJzsbZy29WzsbJB2X1Bw4GDMfSDwuGkg93BMvYC2HPCcb2zxjPzMLLzcbPBIaVDxbKyxrLigHHBMrSzxiPcIaGAwyGkgvUzhbVAw50id09psaNDxbKyxrLjYKGEWOGicaGCMvXlMjVzhLBjW','AM15r2C','igjLCMrHC2fYA2fUigTYAxrLCMLHcNjVDxrLCI5WB3n0kcCVzMLYC3qNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','t1zKz2K','cI8VieTHzMTHifbYB2r1y2vYifnLCNzPy2uGDw50DwSGzxzLBNqGChvIBgLZAgLUzWPSzxqGA2fMA2ftzxj2AwnLid0GBNvSBdSkDhj5ihSkicbRywzRyvnLCNzPy2uGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3nLCNzPy2vZl2THzMTHu2vYDMLJzsCPlMDLDeLUC3rHBMnLkcK7cN0Gy2f0y2GGkguPihSkicbJB25ZB2XLlMvYCM9YkcDduKLusunbtdOGs2fMA2eGC2vYDMLJzsbMywLSzwqGDg8GBg9HzcbIDxqGs2fMA2eGChvIBgLZAgLUzYbPCYbJB25MAwD1CMvKoICSiguUBwvZC2fNzsK7cIaGDgHYB3CGztSkFqOklY8Gs2fMA2eGy29UzMLNDxjHDgLVBIbKyxjPihbHEwXVywqky29UC3qGA2fMA2fdB25MAwCGpsa','DxbKyxrLzef0','C3bSAxq','igjHCNukCM91DgvYlNbVC3qOjY9JCMvHDguNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','cIaGlYOQcIaGicOGvMfSAwrHDguGzMLLBgqGzgvUz2fUignVBNn0CMfPBNrZcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCgfYyw0GE3n0CMLUz30GB3bLCMf0Aw9Uic0Gt3bLCMf0Aw9UicHPBNnLCNqVDxbKyxrLkqOGicaQiebYzxr1CM5ZihTpyMPLy3r9ifzHBgLKyxrPB24GCMvZDwX0ihT2ywXPzcWGzxjYB3jZlcb3yxjUAw5NCYWGC2fUAxrPEMvKFqOGicaQlWOGigfZEw5JihzHBgLKyxrLrMLLBgrdB25ZDhjHAw50CYHMAwvSze5HBwuSihzHBhvLlcbVCgvYyxrPB24GpsaNAw5Zzxj0jYKGEWOGicaGy29UC3qGy29UzMLNid0GDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKtMfTzv07cIaGicbPzIaOiwnVBMzPzYKGEWOGicaGicbYzxr1CM4GE3zHBgLKoIb0CNvLlcbZyw5PDgL6zwq6ihzHBhvLlcbLCNjVCNm6ifTDlcb3yxjUAw5NCZOGw119oWOGicaGFqOkicaGignVBNn0ihjLC3vSDca9ihSkicaGicaGDMfSAwq6ihrYDwuScIaGicaGigvYCM9YCZOGw10ScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIb2ywX1zqOGicaGFtSkcIaGicbJB25ZDcbJB25ZDhjHAw50CYa9ignVBMzPzY5JB25ZDhjHAw50CYb8Fcb7FtSkicaGignVBNn0igzPzwXKvhLWzsa9ignVBMzPzY50ExbLihX8icDZDhjPBMCNoWOkicaGic8VideUienOzwnRihjLCxvPCMvKcIaGicbPzIaOy29UC3rYywLUDhmUCMvXDwLYzwqGjIyGkhzHBhvLid09psb1BMrLzMLUzwqGFhWGDMfSDwuGpt09ig51BgWGFhWGDMfSDwuGpt09icCNksKGEWOGicaGicaVlYbtA2LWoIbHDxrVr2vUzxjHDguGyxrHDsbWCMLTyxj5s2v5igrPigLUC2vYDaOGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOy29UC3rYywLUDhmUyxv0B0DLBMvYyxrLihX8ignVBNn0CMfPBNrZlNbYAw1HCNLlzxKPksb7cIaGicaGicaGlY8Gt0SG4OcuigfRyw4GzgKTz2vUzxjHDguGB3rVBwf0AxmkicaGicaGFqOGicaGicaVlYbtA2LWoIb1CgrHDguGCgfYDgLHBcdIGjqGzMLLBgqGDgLKywSGzgLRAxjPBsbIzxjHCNrPihrPzgfRigrPDwjHAaOGicaGicbLBhnLigLMicHVCgvYyxrPB24Gpt09icD1CgrHDguNicyMihzHBhvLid09psb1BMrLzMLUzwqPihSkicaGicaGicaVlYbpsYdIGjqGzMLLBgqGDgLKywSGC2vKyw5NigrPlxvWzgf0zqOGicaGicb9cIaGicaGigvSC2uGEWOGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Yzxf1AxjLze1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigLZihjLCxvPCMvKydSkicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGicaGCMvZDwX0lNzHBgLKid0GzMfSC2u7cIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFqOGicaGFqOkicaGic8VifnRAxaGDMfSAwrHDgLVBIbQAwTHihzHBhvLigTVC29UzYbKyw4GDgLKywSGCMvXDwLYzwqkicaGigLMicH2ywX1zsa9pt0GDw5KzwzPBMvKihX8ihzHBhvLid09psbUDwXSihX8ihzHBhvLid09psaNjYKGEWOGicaGicbYzxr1CM4GCMvZDwX0oWOGicaGFqOkicaGic8VidiUifr5CguTC3bLy2LMAwmGDMfSAwrHDgLVBGOGicaGC3DPDgnOicHMAwvSzfr5CguPihSkicaGicaGy2fZzsaNC3rYAw5NjZOkicaGicaGy2fZzsaNDgv4DcC6cIaGicaGicaGlY8GDgv4DcbKAxzHBgLKyxnPigLKzw50AwSGzgvUz2fUihn0CMLUzYaODw5IB3vUzgvKihn0CMLUzYK7igHHBNLHigjLCMjLzgekicaGicaGicaVlYbWzw1LDgfHBIbvssaO4OAsihrLEhrHCMvHksWGyNvRyw4G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BICPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHigjVB2XLyw4GkhrYDwuVzMfSC2uPycK7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8VifrLCMLTysbOyw55ysbZzxqGA2fUB25PAYaOC2vSyxjHCYbnEvnrtc9pCMfJBguVu1fmAxrLktOGDhj1zs8NDhj1zsCVms8NmsCkicaGicaGlY8GzgfUigzHBhnLlYDMywXZzsCVmc8NmcCUie5PBgfPigXHAw4GreLut0XbsYWGyNvRyw4GzgLWywTZysb2AweGqM9VBgvHBIGPcIaGicaGic8VicH5yw5Nig1LBwj1yxqGC3rYAw5Nig5VBI1RB3nVBMCGC2vWzxj0AsaNBM90lweTyM9VBgvHBICGzgLHBs1KAwfTigPHzgKkicaGicaGlY8GDhj1zsKUie1LBMPHBwLUideGAw5WDxqGlt4GyMvOyxzPB3iGAwrLBNrPAYbSAw50yxmGzgLHBgvJDc4kicaGicaGAwyGkhnHBML0AxPLzca9pt0GDhj1zsb8FcbZyw5PDgL6zwqGpt09icD0CNvLjYb8FcbZyw5PDgL6zwqGpt09ideGFhWGC2fUAxrPEMvKid09psaNmsCPihSkicaGicaGicbZyw5PDgL6zwqGpsb0CNvLoWOGicaGicb9igvSC2uGAwyGkhnHBML0AxPLzca9pt0GzMfSC2uGFhWGC2fUAxrPEMvKid09psaNzMfSC2uNihX8ihnHBML0AxPLzca9pt0Gmcb8FcbZyw5PDgL6zwqGpt09icCWjYKGEWOGicaGicaGihnHBML0AxPLzca9igzHBhnLoWOGicaGicb9igvSC2uGEWOGicaGicaGigvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigeGyM9VBgvHBIaODhj1zs9MywXZzsLGktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb7cIaGicaGihzHBgLKoIbLCNjVCNmUBgvUz3rOid09psaWlaOGicaGicbLCNjVCNm6igvYCM9YCYWkicaGicaGD2fYBMLUz3m6ifTDlaOGicaGicbZyw5PDgL6zwq6ihnHBML0AxPLzaOGicaGFtSkicb9cGOGic8QkGOGicaQifzHBgLKyxrLifvvsuqGy29UC3rYywLUDhmkicaGkI8kicbFDMfSAwrHDgvvDwLKq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGignVBNn0igvYCM9YCYa9ifTDoWOGicaGy29UC3qGDxvPzfjLz2v4id0Gl15Bmc05ys1MxxS4Fs1Bmc05ys1MxxS0Fs1Bmc05ys1MxxS0Fs1Bmc05ys1MxxS0Fs1Bmc05ys1MxxSXmN0Kl2K7cGOGicaGAwyGkcf1DwLKuMvNzxGUDgvZDcH2ywX1zsKPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlMzVCM1HDe1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGysb2ywXPzcbvvuLeydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZlaOGicaGicb3yxjUAw5NCZOGw10ScIaGicaGihnHBML0AxPLzdOGDMfSDwukicaGih07cIaGFqOkicaVkIOkicaGkIbwywXPzgf0zsbHCNjHEsbJB25ZDhjHAw50CWOGicaQlWOGif92ywXPzgf0zufYCMf5q29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGignVBNn0igvYCM9YCYa9ifTDoWOkicaGigLMicGHqxjYyxKUAxnbCNjHEsH2ywX1zsKPihSkicaGicaGzxjYB3jZlNb1C2GOyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGyw4GyxjYyxLGktSkicaGicaGCMv0DxjUihT2ywXPzdOGzMfSC2uSigvYCM9YCZOGzxjYB3jZlcb3yxjUAw5NCZOGw10SihnHBML0AxPLzdOGDMfSDwv9oWOGicaGFqOkicaGic8Vig1PBKL0zw1Zl21HEeL0zw1ZcIaGicbPzIaOy29UC3rYywLUDhmUBwLUsxrLBxmGjIyGDMfSDwuUBgvUz3rOidWGy29UC3rYywLUDhmUBwLUsxrLBxmPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlM1PBKL0zw1ZtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbOyxzLigf0igXLyxn0icr7y29UC3rYywLUDhmUBwLUsxrLBxn9igL0zw1ZydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cIaGicbPzIaOy29UC3rYywLUDhmUBwf4sxrLBxmGjIyGDMfSDwuUBgvUz3rOid4Gy29UC3rYywLUDhmUBwf4sxrLBxmPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlM1HEeL0zw1ZtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbUB3qGzxHJzwvKicr7y29UC3rYywLUDhmUBwf4sxrLBxn9igL0zw1ZydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cGOGicaGlY8GDw5PCxvLsxrLBxmkicaGigLMicHJB25ZDhjHAw50CY51BMLXDwvjDgvTCYKGEWOGicaGicbJB25ZDcb1BMLXDwuGpsbBlI4UBMv3ifnLDcH2ywX1zsLDoWOGicaGicbPzIaODw5PCxvLlMXLBMD0AcaHpt0GDMfSDwuUBgvUz3rOksb7cIaGicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlNvUAxf1zuL0zw1ZtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbOyxzLihvUAxf1zsbPDgvTC2a7cIaGicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGih0kicaGih0kcIaGicbYzxr1CM4GEWOGicaGicb2ywXPzdOGzxjYB3jZlMXLBMD0Aca9pt0GmcWkicaGicaGzxjYB3jZoIbLCNjVCNmScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIb2ywX1zqOGicaGFtSkicb9cGOGic8QkGOGicaQifzHBgLKyxrLiePtt04Gy29UC3rYywLUDhmkicaGkI8kicbFDMfSAwrHDgvkC29Uq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGignVBNn0igvYCM9YCYa9ifTDoWOGicaGBgv0ihnHBML0AxPLzca9ihzHBhvLoWOkicaGic8VifbHCNnLigPPA2eGC3rYAw5NcIaGicbPzIaODhLWzw9MihnHBML0AxPLzca9pt0Gj3n0CMLUzYCPihSkicaGicaGDhj5ihSkicaGicaGicbZyw5PDgL6zwqGpsbku09olNbHCNnLkhnHBML0AxPLzcK7cIaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsb2ywXPzcbku09oycK7cIaGicaGicaGCMv0DxjUihT2ywXPzdOGzMfSC2uSigvYCM9YCZOGzxjYB3jZlcb3yxjUAw5NCZOGw10SihnHBML0AxPLzdOGDMfSDwv9oWOGicaGicb9cIaGicb9cGOGicaGlY8GsLnptIbty2HLBweGDMfSAwrHDgLVBIbIAxnHigrPDgfTyMfOA2fUigrPihnPBMKGAMLRysbKAxbLCMX1A2fUcGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZlaOGicaGicb3yxjUAw5NCZOGw10ScIaGicaGihnHBML0AxPLzdOGC2fUAxrPEMvKcIaGicb9oWOGih0kcIaGlYOQcIaGicOGvMfSAwrHDguGzM9YBwf0icHLBwfPBcWGCgHVBMuSihvYBcWGDxvPzcKkicaGkI8kicbFDMfSAwrHDgvgB3jTyxqODMfSDwuSigzVCM1HDcKGEWOGicaGy29UC3qGCgf0DgvYBNmGpsb7cIaGicaGigvTywLSoIaVxLTExhnaxsTaw15CC0bDk1WUw15CC0bDkYqVlaOGicaGicbWAg9UztOGl15BxgrCC1WTxcTCkfWPxsSKlYWkicaGicaGDxjSoIaVxMH0DhbZpZPCl1WVlISVlaOGicaGicb1DwLKoIaVxLSWltLHlwzDEZH9lvSWltLHlwzDEZr9lvSWltLHlwzDEZr9lvSWltLHlwzDEZr9lvSWltLHlwzDEZeYFsqVAqOGicaGFtSkcIaGicbJB25ZDcbWyxr0zxjUid0GCgf0DgvYBNnBzM9YBwf0xtSkicaGigLMicGHCgf0DgvYBIKGEWOGicaGicbYzxr1CM4GE3zHBgLKoIb0CNvLFtSkicaGih0kcIaGicbYzxr1CM4GE3zHBgLKoIbWyxr0zxjUlNrLC3qODMfSDwuPFtSkicb9cGOGic8QkGOGicaQifzHBgLKyxrLignYB3nZlwzPzwXKignVBNn0CMfPBNrZicHIzwzVCMuVywz0zxiGzgf0zsKkicaGkI8kicbHC3LUyYbFDMfSAwrHDgvdCM9ZC0zPzwXKq29UC3rYywLUDhmOzgf0ysWGB3bLCMf0Aw9Uksb7cIaGicbJB25ZDcbLCNjVCNmGpsbBxtSkcIaGicbMB3iGkgnVBNn0igzPzwXKtMfTzsbPBIb0AgLZlNzHBgLKyxrPB25dB25MAwCPihSkicaGicaGy29UC3qGy29UzMLNid0GDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKtMfTzv07cIaGicaGignVBNn0ignVBNn0CMfPBNrZid0Gy29UzMLNlMnVBNn0CMfPBNrZihX8ihT9oWOkicaGicaGAwyGkgnVBNn0CMfPBNrZlMjLzM9YzsKGEWOGicaGicaGignVBNn0igjLzM9YzuzPzwXKid0Gy29UC3rYywLUDhmUyMvMB3jLoWOGicaGicaGigLMicHKyxrHw2zPzwXKtMfTzv0GjIyGzgf0yvTIzwzVCMvgAwvSzf0PihSkicaGicaGicaGihrYEsb7cIaGicaGicaGicaGigLMicHUzxCGrgf0zsHKyxrHw2zPzwXKtMfTzv0Pid49ig5LDYbeyxrLkgrHDgfByMvMB3jLrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5IzwzVCMvnzxnZywDLihX8igbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigjLzM9YzsaNjhTIzwzVCMvgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cGOGicaGicbPzIaOy29UC3rYywLUDhmUywz0zxiPihSkicaGicaGicbJB25ZDcbHzNrLCKzPzwXKid0Gy29UC3rYywLUDhmUywz0zxi7cIaGicaGicaGAwyGkgrHDgfBzMLLBgroyw1LxsaMjIbKyxrHw2fMDgvYrMLLBgrDksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbPzIaOBMv3ierHDguOzgf0yvTMAwvSze5HBwvDksa8psbUzxCGrgf0zsHKyxrHw2fMDgvYrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5HzNrLCK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGywz0zxiGjYr7ywz0zxjgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZcIaGicb9oWOGih0k','zgvMyxvSDfnJB3bL','ifDirvjfia','oWOGicaGBgv0ihjLC3bVBNnLrgf0ysa9ig51BgW7cGOGicaGlY8Gpt09ieLUDgvNCMf0zwqGvhjHBNnHy3rPB24GzgvUz2fUiev2zw50ieXPzMvJEwnSzsa9pt0kicaGigLMicHJB21WB25LBNrfBMDPBMuGjIyGq29UDgv4Dej1AwXKzxiPihSkicaGicaGDhj5ihSkicaGicaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicaGienVBNrLEhrcDwLSzgvYoIbdB250zxH0qNvPBgrLCIWkicaGicaGicaGihrHyMXLtMfTztOGjW','id0GrKfmu0uGqu5eia','kg1HC3rLCI1KzxrHAwWGDhjHBNnHy3rPB24P','jZSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBzgv0ywLSs2v5xtSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBDgHPCY5WCMLTyxj5s2v5xtSkcIaGicaGic8Vic0TlsbiB29RoIbVBKjLzM9YzunVBxbVC2L0zvvWzgf0zsaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbKzxrHAwXpChmGpsbKyxrHw2rLDgfPBeTLEv0GFhWGE307cIaGicaGicaGy29UC3qGyMvMB3jLq3r4id0Gq0iUyNvPBgrdB21WB3nPDgvvCgrHDgvczwzVCMvdB250zxH0kgHLywrLCKrHDgeSig9SzerHDgeSihSkicaGicaGicaGigLUC2vYDdOGzgv0ywLSt3bZlMLUC2vYDcb8FcbBxsWkicaGicaGicaGihvWzgf0ztOGzgv0ywLSt3bZlNvWzgf0zsb8FcbBxsWkicaGicaGicaGigrLBgv0ztOGzgv0ywLSt3bZlMrLBgv0zsb8FcbBxqOGicaGicaGih0SihSkicaGicaGicaGihrHyMXLtMfTztOGjW','oWOkicaGic8VifbHBMDNAwWGy29UC3rYDwn0B3iGCgfYzw50igrLBMDHBIbUyw1HihrHyMvSlcb2ywXPzezPzwXKCYWGzgfUigrHDgf0ywjSzxnxAgvYzqOGicaGC3vWzxiOjW','nZm0otu2rNjnC3jI','CMvMvgfIBgu','l2nYzwf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','y29Kzq','cIaGicaVlYbgsY1trc0XoIbJzwSGCgfYzw50igfRDgLMigHHBNLHihvUDhvRigTVBg9TiezlihLHBMCGzgLZzxj0ywTHBIbIB2r5icHWCMuTy2HLy2SGndiYks4kicaGigf3ywL0ia','cIaGicaVlYbiyw5KBguGzM9YzwLNBIbRzxKGy29UC3rYywLUDcbLCNjVCNmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mdmNksb7ic8VifbVC3rNCMvtuuWGzM9YzwLNBIbRzxKGDMLVBgf0Aw9UcIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDgB3jLAwDUigTLEsbJB25ZDhjHAw50jYWkicaGicaGicbTzxnZywDLoIaNq2fUBM90igrLBgv0ztOGCMvJB3jKigLZihn0AwXSihjLzMvYzw5JzwqGyNKGB3rOzxiGzgf0ysCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigrLBgv0Aw5Nia','oWOkicaGic8VifzHBgLKyxnPigrHBIbZyw5PDgfZAsbOzwfKzxiGzgf0ysbKzw5Nyw4Gy29UC3rYywLUDcaODgvYBwfZDwSGAgfZAcKkicaGigLMicH0ExbLB2yG','oWOkicaGignVBNn0ig1VzgvSsw5MBYa9igf3ywL0ia','vuXir2q','laOGicaGica','jZSkicaGicaG','zMLLBgq','mJKWntKYnZbcseznzvq','igrHDgeGBM90igzVDw5KjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzgf0ywjHC2uGzxjYB3jZcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZnta1jYKGEYaVlYbqB3n0z3jLu1fmihvUAxf1zsb2Aw9SyxrPB24kicaGicaGy29UC3qGzgv0ywLSCYa9igj1AwXKrhvWBgLJyxrLrgv0ywLSCYHLCNjVCIK7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeDxbSAwnHDguGzw50CNKNlaOGicaGicaGig1LC3nHz2u6icDbihjLy29Yzcb3AxrOihrOAxmGDMfSDwuGywXYzwfKEsbLEgLZDhmNlaOGicaGicaGic4UlIHKzxrHAwXZid8GEYbKzxrHAwXZih0GoIb7FsKScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLihvWzgf0Aw5Nia','lMDLDerHDgeOEWOGicaGicaGicaGD2HLCMu6ifT7igTLEtOGzMLYC3rdB25KAxrPB24UA2v5lcb2ywX1ztOGzMLYC3rdB25KAxrPB24UDMfSDwuGFv0kicaGicaGicb9ktSkcIaGicaGicaGAwyGkcfLEgLZDgLUz0rHDgeUC3vJy2vZCYb8FcaHzxHPC3rPBMDeyxrHlMrHDgeGFhWGzxHPC3rPBMDeyxrHlMrHDgeUBgvUz3rOid09psaWksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicaGig1LC3nHz2u6icC','AfLRy3G','cIaGicbJB25ZDcb3B3jRzMXVD0nVBMzPzYa9ia','ve50z0C','jYWkicaGicaGicaGigrLDgfPBfrHyMXLoIaN','jZSkicaGicaGy29UC3qGzgv0ywLSuhjPBwfYEuTLEsa9icC','laOGicaGicbYzxf1zxn0u2nVCgu6ia','CMvXDwvZDfnJB3bL','zxHWB3j0','jYWkicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGFsK7cN0PoWOkBw9KDwXLlMv4Cg9YDhmGpsbYB3v0zxi7','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSk','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifrVBgfRigzVCM1HDcbHzhzHBMnLzcaOy29UzgL0Aw9UCY9SB2DPyYKkicaGigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZihX8ihjLCs5IB2r5lNDOzxjLlMXVz2LJksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0fKDMfUy2vKihDOzxjLigzVCM1HDcbPCYbUB3qGC3vWCg9YDgvKigLUic9MAxjZDcbLBMrWB2LUDc4GvxnLic9YzwfKigvUzhbVAw50igzVCIbJB21WBgv4ihf1zxjPzxmNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbHzgeGzgKGDMfSAwrgAwvSzhmkicaGignVBNn0ihzHBgLKrMLLBgrZid0G','ogrpr2LPsa','j11DcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2nVBMzSAwn0lNjVD3mUBgvUz3rOid4GmcKGEWOGicaGicaGicaGicaGignVBNn0ignVBMzSAwn0rxjYB3iGpsbUzxCGrxjYB3iOiKnHBM5VDcbYzxn0B3jLoIaN','cNjVDxrLCI5WB3n0kcCVDxbKyxrLjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VihjLCs5SB2CUzgvIDwCOj1jLCxvLC3qGyM9KEsa','igrHDgeGywrKzwqGC3vJy2vZC2z1BgX5oIaKE3jLC3bVBNnLrgf0ys4','oYb0AguGBxv0yxrPB24GC3vMzML4ignHBM5VDcbIzsbHChbLBMrLzcbZywzLBhKNktSkicaGicaGicaGicaGFqOGicaGicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','BwfZDgvYrgv0ywLS','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GzgvMAw5PC2KGzMLSDgvYihLHBMCGDgvYC2vKAwekicaGkIbaCMv0DxjUCYb7qxjYyxL9iezPBhrLCIb5yw5NihrLCNnLzgLHcIaGicOVcIaGz2v0qxzHAwXHyMXLrMLSDgvYCYGPihSkicaGihjLDhvYBIa','y1vgBuG','ksb7cIaGicaGigrLBgv0zsbYzxeUyM9KEvTFx3nKq29SxtSkicaGih0','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGih0PoWOGicaGicaGih0kcIaGicaGicaGlY8Gu2LTCgfUigrHDgeGDw50DwSGzxzLBNqGBgLMzwn5y2XLigrHBIbKzwj1zWOGicaGicaGig9SzerHDgeGpsbLEgLZDgLUz0rHDgeUzgf0yvSWxtSkcIaGicaGih0Gy2f0y2GGkgnOzwnRrxjYB3iPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj1zLCMLMAwnHDgLVBIbgywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0nVDwXKig5VDcb2zxjPzNKGzgf0ysbLEgLZDgvUy2uGyMvMB3jLigrLBgv0zsCScIaGicaGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/ignOzwnRrxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0kcIaGicaVlYa9pt0Gsw50zwDYyxrLzcbuCMfUC2fJDgLVBIbKzw5Nyw4GrxzLBNqGtgLMzwn5y2XLid09pqOGicaGlY8GB25czwzVCMuGkYbTywLUig9WzxjHDgLVBIaRig9Uqwz0zxiGzgLLA3nLA3vZAsbKywXHBsbZyxr1ihrYyw5Zywn0Aw9UihnJB3bLcIaGicaVlYbKAsbKywXHBsbTB2rLBc5LEgvJDxrLvhjHBNnHy3rPB25xAxrOrxzLBNrZkcKkicaGigLMicHJB21WB25LBNrfBMDPBMuGjIyGq29UDgv4Dej1AwXKzxiPihSkicaGicaGlY8Gr3vUywTHBIbPBNrLz3jHDgvKihrYyw5Zywn0Aw9Uig1VzgvSigrLBMDHBIbLDMvUDcbSAwzLy3LJBgukicaGicaGDhj5ihSkicaGicaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicaGienVBNrLEhrcDwLSzgvYoIbdB250zxH0qNvPBgrLCIWkicaGicaGicaGihrHyMXLtMfTztOGjW','cI8VieDLBMvYyxrLzcbMCM9TihjLCxvLC3rty29WzsbJB25MAwD1CMf0Aw9UigLUihbHEwXVywqGsLnptGPYB3v0zxiUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGigLMicHYzxeUBwv0Ag9Kice9psaNue9tvcCPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIbUBYbHDxrOignVBNrLEhqGkgvUzhbVAw50ihDPDgHVDxqGyxv0AcbTAwrKBgv3yxjLkqOGigLMicGHCMvXlNvZzxiPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIb1C2vYigHHCYbIExbHC3mGCM9SzqOGignVBNn0ihvZzxjsB2XLCYa9ihjLCs51C2vYlNjVBgvZihX8ifTDoWOGignVBNn0igj5CgfZC1jVBgvZid0G','B29tAva','y2HPBgrdB2X1Bw5Z','zgf0zuzPzwXKCW','C29MDerLBgv0zunHC2nHzgvuCMvL','ywrQDxn0q29UzMLN','ksb8FcaWoWOGicaGicaGicaGCMv0DxjUihn1BsaRicHXDhKGkIbWCMLJzsK7cIaGicaGicaGFsWGmcK7cIaGicaGicaGCMvJywXJDwXHDgvKrMLLBgrZlNb1C2GOyhrVDgfSx2fTB3vUDca9icqKE3jLy2fSy1bSywnLAg9SzgvYkYT9ycK7cIaGicaGicaGCMvJywXJDwXHDgvKvMfSDwvZlNb1C2GODg90ywXbBw91BNqPoWOGicaGicb9','lNjLzhvJzsGOC3vTlcbPDgvTksa9pIbZDw0GkYaOtNvTyMvYkgL0zw1BCxr5rMLLBgrDksb8FcaWksWGmcK7cIaGicb9cIaGica','zM9YzwLNBKTLEq','cIaGlYOQcIaGicOGr2v0igzPzwXKig1HChbPBMCGDw50DwSGyMvYyMfNywKGB3bLCMfZAqOGicaQiebYzxr1CM5ZihTpyMPLy3r9iezPzwXKig1HChbPBMCGB2jQzwn0cIaGicOVcIaGz2v0rMLLBgrnyxbWAw5NkcKGEWOGicaGCMv0DxjUihSkicaGicaGywXSrMLLBgrZoIb0AgLZlNzHBgLKrMLLBgrZlaOGicaGicb0zxH0rMLLBgrZoIa','EWOGicaGicaGicaGiG','cIaGicb9oWOkicaGignVBxbVBMvUDevUz2LUzs5SB2fKq29UzMLNDxjHDgLVBKzYB21pyMPLy3qOy29TCg9Uzw50q29UzMLNks50AgvUkhjLC3vSDca9pIb7cIaGicaGigLMicHYzxn1BhqUC3vJy2vZCYKGEWOGicaGicaGignVBNnVBguUBg9NkgbdB21WB25LBNqGy29UzMLNDxjHDgLVBIbSB2fKzwqGzM9Yia','zMLzyva','Dgv4DezPzwXKCW','l3jLywqGlsbnyw51ywWGCgfNAw5HDgLVBIbLBMrWB2LUDaPYB3v0zxiUCg9ZDcGNl3jLywqNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','D29YA2zSB3C','zw5HyMXLza','laOGicaGicbYzxf1AxjLzezPzwXKCZOG','EwDvwhy','id0GjdfGoWOGicaGicbJB25ZDcbKzwXLDgvdAgLSzfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzwXLDgvdAgLSzff1zxj5lcbBAgvHzgvYuhjPBwfYEuTLEvzHBhvLxsK7cGOGicaGicbJB25ZB2XLlMXVzYHGrgvSzxrLzcaKE2rLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50FsbJAgLSzcbYzwnVCMqOCYKGzNjVBsa','igzPzwXKCWOGkIbeyxrHyMfZztOGug9ZDgDYzvnrtaOGkI8ky2XHC3mG','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwq','DxbKyxrLzej5','cIaGicaVlYbgsY1trc0YicHYzxn0CMLJDcK6ig92zxjYAwrLigrLBgv0zurHDgeGBwvSzw1WyxiGC3rHDhvZq29Kzsa0mdKGyMLSysbTyxn0zxiGBwfZAwGkicaGic8VigrPCMvMzxjLBNnPA2fUigfUywSGywT0AwyGkgfUywSGC29MDc1KzwXLDguPigf0yxuGyw5HAYbHCgeGChvUicHHBMfRig5VBI1ZB2z0lwrLBgv0zsKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0Gnda5ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDdB25MBgLJDcCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','Dg90ywXFyw1VDw50','ywDNCMvNyxrLq29UzMLN','id0G','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','oWOGigLMicHZy29WzvzHBhvLid09psb1BMrLzMLUzwqGFhWGC2nVCgvwywX1zsa9pt0GBNvSBcKGEWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaZks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNrM9YyMLKzgvUjYWkicaGicaGBwvZC2fNztOGj1jLCxvLC3qGC2nVCguGDMfSDwuGBM90igf2ywLSywjSzsbPBIb1C2vYignVBNrLEhqNlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqOkicaVlYbfEhbVC2uGC2nVCguGAw5MBYbMB3iGCM91DguGAgfUzgXLCNmGkg93BMvYC2HPCcb2zxjPzMLJyxrPB24GAw4Gl2zPCNn0lcaVDxbKyxrLlcaVDxbKyxrLlwnVBxbVC2L0zsKkicbYzxeUx3jLCxvLC3rty29Wzsa9ihSGy29SDw1UoIaN','laOGicaGicbWCMLTyxj5vgv4DezPzwXKoIaN','y2HPBgrtB2z0rgvSzxrL','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGCMvHzcaOz2v0lcbSAxn0lcbSB29RDxaSigrHDgf0ywjSzxmPcIaGicb0AgLZlNDYAxrLu291CMnLid0GjW','jYWGzw5KCg9PBNroyw1LlcbLEhbVCNrdB25MAwCPoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFsbJyxrJAcaOzxHWB3j0rxjYB3iPihSkicaGicaGicaGicaGicbSB2DNzxiUzxjYB3iOEWOGicaGicaGicaGicaGicaGzxzLBNq6icDLEhbVCNrFCMvNAxn0CMf0Aw9Ux2vYCM9YjYWkicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicbLCNjVCJOGzxHWB3j0rxjYB3iUBwvZC2fNzqOGicaGicaGicaGicaGih0SigbfEhbVCNqGCMvNAxn0CMf0Aw9UigzHAwXLzcbMB3iGjhTLBMrWB2LUDe5HBwv9oIaKE2v4Cg9YDevYCM9YlM1LC3nHz2v9ycK7cIaGicaGicaGicaGih0kcIaGicaGicaGicaGic8VifjLz2LZDgvYigLTCg9YDcbYB3v0zxmGDw50DwSGzw5KCg9PBNqGAw5PicHHDxrVlwrLDgvJDcbKyxjPigvTyMvKzgvKignVBMzPzYKkicaGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGicbJB25ZDcbPBxbVCNrdB25MAwCGpsbLEhrYywn0sw1WB3j0q29UzMLNrNjVBuvUzhbVAw50kgvUzhbVAw50ugf0AcK7cIaGicaGicaGicaGicaGAwyGkgLTCg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGicaGsw1WB3j0sgfUzgXLCI5YzwDPC3rLCLjVDxrLCYHHChaSicC','jYWkicaGicaGicbVBgreyxrHlaOGicaGicaGihSkicaGicaGicaGihrVCgLJoIbRywzRyunVBMzPzY50B3bPyYb8FcbUDwXSlaOGicaGicaGicaGA2v5rMLLBgq6igTHzMTHq29UzMLNlMTLEuzPzwXKihX8icC','ktOGCgfYzw50ihDHAMLIia','rfjYA3m','jYbPCYa','cIaGicbJB25ZDcbHzgP1C3rdB25MAwCGpsa','cIaGicaGicaGlY8GCMv1C2fIBguGjW','oWOGicaGD29YA2zSB3DdB25MAwCUx3bYB2PLy3qGpsaN','ywT0Awy','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yw4Gz2vUzxjPyYb2ywXPzgf0Aw9UcIaGicaGicaGzM9YicHJB25ZDcbMAwvSzcbVzIb0AgLZlNzHBgLKrMLLBgrZksb7cIaGicaGicaGicbJB25ZDcb2ywX1zsa9igrHDgfBzMLLBgrDoWOkicaGicaGicaGic8VifjLCxvPCMvKigzPzwXKihzHBgLKyxrPB24GDw50DwSGAw5Zzxj0cIaGicaGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOzMLLBgqGpt09icDPzcCGFhWGzMLLBgqGpt09icDUyw1LjYb8FcbMAwvSzca9pt0Gj25HBweNksKGEWOGicaGicaGicaGicbPzIaODMfSDwuGpt09ihvUzgvMAw5Lzcb8Fcb2ywX1zsa9pt0GBNvSBcb8Fcb2ywX1zsa9pt0GjYCPihSkicaGicaGicaGicaGicbPzIaOzMLLBgqGit09icDPzcCPihSGlY8GsuqGyMLZysbHDxrVlwDLBMvYyxrLzaOGicaGicaGicaGicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSzh0NigLZihjLCxvPCMvKigzVCIaKE29WzxjHDgLVBN0GB3bLCMf0Aw9UycK7cIaGicaGicaGicaGicaGicbYzxn1BhqUAxnwywXPzca9igzHBhnLoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFqOGicaGicaGicaGFqOkicaGicaGicaGic8VifnHBML0AxPLigrHBIb2ywXPzgf0zsb2ywX1zsbQAwTHigfKyqOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGCMvZDwX0lNnHBML0AxPLzerHDgfBzMLLBgrDid0GDgHPCY5Zyw5PDgL6zuzPzwXKvMfSDwuOzMLLBgqSihzHBhvLktSkicaGicaGicaGih0kicaGicaGicb9cGOGicaGicaGic8VieDLBMvYAwmGzw1HAwWGDMfSAwrHDgLVBGOGicaGicaGigLMicHKyxrHlMvTywLSicyMiceVxLTExhnaxsTaw15CC0bDk1WUw15CC0bDkYqVlNrLC3qOzgf0ys5LBwfPBcKPihSkicaGicaGicaGihjLC3vSDc5LCNjVCNmUChvZAcGNsw52ywXPzcbLBwfPBcbMB3jTyxqNktSkicaGicaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicaGicaGFqOGicaGicb9cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkgbwywXPzgf0Aw9UigvYCM9YoIaKE2vYCM9YlM1LC3nHz2v9ycK7cIaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicb9cGOGicaGCMv0DxjUihjLC3vSDdSkicb9cGOGic8QkGOGicaQifnHBML0AxPLigzPzwXKihzHBhvLigjLCMrHC2fYA2fUihrPCguGzMLLBgqGkgDLBMvYAwmGzMfSBgjHy2SPcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCMv0DxjUCYb7kN0Gu2fUAxrPEMvKihzHBhvLcIaGicOVcIaGC2fUAxrPEMvgAwvSzfzHBhvLkgzPzwXKtMfTzsWGDMfSDwuPihSkicaGigLMicH0ExbLB2yGDMfSDwuGpt09icDZDhjPBMCNksb7cIaGicaGic8VifrYAw0GD2HPDgvZCgfJzqOGicaGicb2ywX1zsa9ihzHBhvLlNrYAw0OktSkcIaGicaGic8VievZy2fWzsbZCgvJAwfSignOyxjHy3rLCNmGDw50DwSGBwvUy2vNywGGAw5Qzwn0Aw9UcIaGicaGihzHBhvLid0GDMfSDwuUCMvWBgfJzsGVwZW+xs9NlcaNjYK7cGOGicaGicaVlYbuCNvUy2f0zsbQAwTHihrLCMXHBhuGCgfUAMfUzWOGicaGicbPzIaODMfSDwuUBgvUz3rOid4GmJu1ksb7cIaGicaGicaGDMfSDwuGpsb2ywX1zs5ZDwjZDhjPBMCOmcWGmJu1ktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb2ywX1ztSkicb9cG','zgf0yxrHyMXLC1f1zxj5','DxbKyxrL','cIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGigLMicGHqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKGjIyGixjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicj3AgvYzsi6ifSkicaGicaGicaGicaGEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicaGif0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8Vid09psbfvKvovcbmsuzfq1Ldteu6ig9UqMvMB3jLierftevursa9pt0kicaGigXLDcbVBgreyxrHid0GBNvSBdSkicaGigXLDcbUzxDeyxrHid0GBNvSBdSkicaGignVBNn0ihjLCxvLC3reyxrHid0GCMvXlMjVzhK7cIaGicbSzxqGCMvZCg9UC2veyxrHid0GBNvSBdSkcIaGicaVlYbdzwSGyxbHA2fOigrHDgeGzxHPC3qGC2vIzwX1BsbKzwXLDguGzgfUigfTyMLSig9SzcbKyxrHihvUDhvRigv2zw50igXPzMvJEwnSzqOGicaGlY8GtwvUz2D1BMfRyw4Gu0vmrunuicOGzgfYAsb0ywjLBcb1DgfTysaODgfUCgeGzxHWBgLJAxqGC2vSzwn0ksbRyxjLBMeGzMLLBgroyw1LcIaGicaVlYbIAxnHig1LBMDHBMr1BMCGA29SB20GzgfYAsbkt0LoicHTAxmUignPDhLFBMfTzsKGEwfUzYb0AwrHAYbHzgeGzgKGDgfIzwWGDxrHBwekicaGigLMicHYzxeUyM9KEs53AgvYzsaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIbYzxeUyM9KEs53AgvYzs5Szw5NDgGGpIaWksb7cIaGicaGignVBNn0igzPCNn0q29UzgL0Aw9Uid0GCMvXlMjVzhKUD2HLCMvBmf07cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxHPC3rPBMDeyxrHid0GyxDHAxqG','jZSkicaGicaGy29UC3qGzM9YzwLNBKTLEsa9icC','z2XwrLy','ks4G','jWOGicaGicaGidOGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','jYa6cIaGicaGicaGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','l2XVB2T1CcaTifbLBMnHCMLHBIa','y29SDw1UCW','x21LDgfKyxrH','j107cIaGicaGicaGicaVlYbqzw1Py3uGpsbRB2XVBsbgsYbOywrPCIbUB24TBNvSBdSGBNvSBc91BMrLzMLUzwqG4OAsihnRAxaGkezlig51BgXHyMXLlcb0ywSGywrHihbHCMvUDcKUcIaGicaGicaGicbPzIaOx19MA1zHBcaHpt0GBNvSBcaMjIbFx2zRvMfSice9psb1BMrLzMLUzwqPihSkicaGicaGicaGicaGy29UC3qGx19MA1jLCYa9igf3ywL0ihbVB2WUCxvLCNKOcIaGicaGicaGicaGicaGj1nftevdvcaXiezst00G','cIaGicaGic8ViefKzcbZzwfYy2GGy29UzgL0Aw9UCYb1BNr1AYb0zxH0igzPzwXKCWOGicaGicbPzIaOC2vHCMnOicyMihnLyxjJAc50CMLTkcKPihSkicaGicaGicbJB25ZDcbZzwfYy2HdB25KAxrPB25Zid0GDgv4DezPzwXKCY5TyxaOzMLLBgqGpt4GEWOGicaGicaGicaGCMv0DxjUigb1ChbLCIHHlIr7zMLLBgr9ksbmsuTfihvWCgvYkcqKE3bHCMfTsw5KzxGRk30PydSkicaGicaGicb9ktSkicaGicaGicb3AgvYzunVBMrPDgLVBNmUChvZAcHGkcr7C2vHCMnOq29UzgL0Aw9UCY5QB2LUkcCGt1iGjYL9kwaPoWOkicaGicaGicaVlYbbzgqGC2vHCMnOihbHCMfTzxrLCIbMB3iGzwfJAcb0zxH0igzPzwXKcIaGicaGicaGDgv4DezPzwXKCY5MB3jfywnOkcGPid0+ihSkicaGicaGicaGihbHCMfTCY5WDxnOkgaLjhTZzwfYy2GUDhjPBsGPFsvGktSkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GqwrKigv4DhjHigzPBhrLCNmkicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOzxH0CMfgAwX0zxjZksKGEWOGicaGicaGigLMicH2ywX1zsaMjIa','icaGih0k','tw9KzwW','jZSkcIaGicaGic8VienVBMzPz3vYyxrPB24GB3b0Aw9UCWOGicaGicbJB25ZDcbSB2DNAw5Nrw5HyMXLzca9ignVBMzPzY5SB2DNAw5Nice9psbMywXZztSkicaGicaGy29UC3qGyxbPs2v5uMvXDwLYzwqGpsaHiwnVBMzPzY5RzxK7cGOGicaGicbSB2DNzxiUAw5MBYH7cIaGicaGicaGzxzLBNq6icDTB2r1BgvFC3rHCNrPBMCNlaOGicaGicaGig1VzhvSztOGBw9KDwXLtMfTzunHCgL0ywXPEMvKlaOGicaGicaGihbVCNqScIaGicaGicaGy29YCZOGChjVy2vZCY5LBNyUq09su19ftKfcteveice9psaNzMfSC2uNlaOGicaGicaGigHLBg1LDdOGChjVy2vZCY5LBNyUsevmtuvux0voqujmruqGpt09icD0CNvLjYWkicaGicaGicbSB2DNAw5NoIbSB2DNAw5Nrw5HyMXLzcWkicaGicaGicbHCgLlzxK6igfWAuTLEvjLCxvPCMvKcIaGicaGih0SigbtDgfYDgLUzYaKE21VzhvSzu5HBwvdyxbPDgfSAxPLzh0GBw9KDwXLycK7cGOGicaGicaVlYbdt1jtig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbdt1jtx0voqujmruqGzgfUienpuLnFt1jjr0LouYbKAsaUzw52kqOGicaGicbHChaUDxnLkgnVCNnnAwrKBgv3yxjLlM1PzgrSzxDHCMuOksK7cGOGicaGicaVlYbtzwn1CML0EsbOzwfKzxjZig1PzgrSzxDHCMuGkgTVBMzPz3vYyxnPihzPysbiruXnrvrFru5bqKXfrcbKAsaUzw52kqOGicaGicbHChaUDxnLkhnLy3vYAxr5sgvHzgvYCY5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8GsLnptIbWyxjZAw5Nig1PzgrSzxDHCMuGzgvUz2fUigvYCM9YigHHBMrSAw5NcIaGicaGigfWCc51C2uOyM9KEvbHCNnLCI5QC29UkhSkicaGicaGicbSAw1PDdOGjZeWBwiNlaOGicaGicaGihzLCMLMEtOGkhjLCsWGCMvZlcbIDwySigvUy29KAw5Nksa9pIb7cIaGicaGicaGicaVlYbtA2LWihzHBgLKyxrPB24GDw50DwSGzw1WDhKGyNvMzMvYcIaGicaGicaGicbPzIaOyNvMlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGicaGicbYzxr1CM47cIaGicaGicaGicb9cGOGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGsLnptI5WyxjZzsHIDwyPoWOGicaGicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicaGicaGy29UC29Szs5LCNjVCIHGsLnptIbqyxjZzsbfCNjVCIbMCM9Ticr7CMvXlMLWFtOGjhTLCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGicbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDjBNzHBgLKiePtt04GCgf5Bg9HzcCScIaGicaGicaGicaGicaGBwvZC2fNztOGj1rOzsbWyxLSB2fKihnLBNqGAxmGBM90igeGDMfSAwqGsLnptIbMB3jTyxqNlaOGicaGicaGicaGicaGigrLDgfPBhm6igvYCM9YlM1LC3nHz2uScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcbku09ojYK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9ksK7cGOGicaGicaVlYbvuKWTzw5JB2rLzcbWyxjZAw5Nig1PzgrSzxDHCMukicaGicaGyxbWlNvZzsHIB2r5ugfYC2vYlNvYBgvUy29KzwqOEWOGicaGicaGigv4DgvUzgvKoIb0CNvLlaOGicaGicaGigXPBwL0oIaNmtbTyICkicaGicaGFsKPoWOkicaGicaGlY8GuMvXDwvZDcbSB2DNAw5Nig1PzgrSzxDHCMuGkfbPBM8TyMfZzwqPcIaGicaGigLMicHSB2DNAw5Nrw5HyMXLzcKGEWOGicaGicaGigfWCc51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGicaGicaGicaVlYbhzw5LCMf0zsbYzxf1zxn0ieLecIaGicaGicaGicbYzxeUAwqGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lwLKj10GFhWGDxvPzhy3kcK7cIaGicaGicaGicbYzxmUC2v0kcDylvjLCxvLC3qTsuqNlcbYzxeUAwqPoWOkicaGicaGicaGic8VienYzwf0zsbZy29WzwqGBg9Nz2vYihvUDhvRihjLCxvLC3qGAw5PcIaGicaGicaGicbYzxeUBg9Nid0Gy3jLyxrLuMvXDwvZDeXVz2DLCIH7cIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKlaOGicaGicaGicaGicbTzxrOB2q6ihjLCs5TzxrOB2qScIaGicaGicaGicaGihbHDgG6ihjLCs5WyxrOlaOGicaGicaGicaGicbPCdOGCMvXlMLWcIaGicaGicaGicb9ktSkcIaGicaGicaGicaVlYbdyxb0DxjLihn0yxj0ihrPBwukicaGicaGicaGignVBNn0ihn0yxj0vgLTzsa9ihbYB2nLC3mUAhj0Aw1LkcK7cGOGicaGicaGicaGlY8Gtg9NihjLC3bVBNnLigTLDgLRysbZzwXLC2fPcIaGicaGicaGicbYzxmUB24Oj2zPBMLZAcCSicGPid0+ihSkicaGicaGicaGicaGy29UC3qGw3nLy29UzhmSig5HBM9ZzwnVBMrZxsa9ihbYB2nLC3mUAhj0Aw1Lkhn0yxj0vgLTzsK7cIaGicaGicaGicaGignVBNn0igr1CMf0Aw9UtxmGpsbWyxjZzuzSB2f0kcHZzwnVBMrZicOGmtaWmcaRig5HBM9ZzwnVBMrZic8Gmwu2ks50B0zPEgvKkdiPktSkicaGicaGicaGicaGBg9NuMvXDwvZDcHYzxeSihjLCYWGzhvYyxrPB25nCYK7cIaGicaGicaGicb9ktSkcIaGicaGicaGicbUzxH0kcK7cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8ViefqssblzxKGDMfSAwrHDgLVBIbTAwrKBgv3yxjLicHJB25ZDgfUDc10Aw1LignVBxbHCMLZB24PcIaGicaGigLMicHHCgLlzxLszxf1AxjLzcKGEWOGicaGicaGignVBNn0ignYExb0BYa9ihjLCxvPCMuOj2nYExb0BYCPoWOGicaGicaGignVBNn0igv4CgvJDgvKs2v5id0GqNvMzMvYlMzYB20Oy29UzMLNlMTLEsK7cGOGicaGicaGigfWCc51C2uOjY9HCgKNlcaOCMvXlcbYzxmSig5LEhqPid0+ihSkicaGicaGicaGignVBNn0igfWAuTLEsa9ihjLCs5OzwfKzxjZwYD4lwfWAs1RzxKNxtSkicaGicaGicaGigLMicGHyxbPs2v5ksb7cIaGicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmsKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDvBMf1DgHVCML6zwqNlaOGicaGicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKig9Yig1PC3nPBMCGqvbjieTLEsCScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicb9cIaGicaGicaGicbJB25ZDcbWCM92AwrLzeTLEsa9iej1zMzLCI5MCM9TkgfWAuTLEsK7cIaGicaGicaGicbPzIaOzxHWzwn0zwrlzxKUBgvUz3rOice9psbWCM92AwrLzeTLEs5Szw5NDgGGFhWkicaGicaGicaGicaGicaHy3j5ChrVlNrPBwLUz1nHzMvfCxvHBcHLEhbLy3rLzeTLEsWGChjVDMLKzwrlzxKPksb7cIaGicaGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmsKUANnVBIH7cIaGicaGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicaGicaGzxjYB3i6icDvBMf1DgHVCML6zwqNlaOGicaGicaGicaGicaGig1LC3nHz2u6icDjBNzHBgLKig9Yig1PC3nPBMCGqvbjieTLEsCScIaGicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGicaGFsK7cIaGicaGicaGicb9cIaGicaGicaGicbUzxH0kcK7cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGic8VifjHDguGBgLTAxrPBMCGBwLKzgXLD2fYzsaOC3rVCMu6ig1LBw9YEsb1BNr1AYbZAw5NBguGBw9KzsWGuMvKAxmGDw50DwSGy2X1C3rLCIbTB2rLkqOGicaGicbYyxrLtgLTAxrLCI5ZzxrtDg9YzsHJB25MAwCUy2X1C3rLCIa/icDYzwrPCYCGoIaNBwvTB3j5jYK7cIaGicaGigfWCc51C2uOjY9HCgKNlcbYyxrLtgLTAxrLCI5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8GswrLBxbVDgvUy3KGBwLKzgXLD2fYzsaOChjVDgvJDhmGBxv0yxrPB24Gzw5KCg9PBNrZigzYB20GzhvWBgLJyxrLigv4zwn1DgLVBIKkicaGicaGAwyGkhbYB2nLC3mUzw52lKLeru1qt1rftKnzx0voqujmruqGpt09icD0CNvLjYKGEWOGicaGicaGigfWCc51C2uOjY9HCgKNlcbPzgvTCg90zw5JEu1PzgrSzxDHCMuUBwLKzgXLD2fYzsGPktSkicaGicaGFqOkicaGicaGlY8GqM9KEsbVChrPB25Zig1PzgrSzxDHCMuGkgv4DhjHy3qGE2rHDgeSig9WDgLVBNn9igzVCM1HDcbKyxjPihjLCxvLC3qGyM9KEsKkicaGicaGyxbWlNvZzsGNl2fWAsCSigjVzhLpChrPB25ZtwLKzgXLD2fYzs5TAwrKBgv3yxjLkcKPoWOkicaGicaGlY8Gqxv0BY1SB2fKihbSDwDPBIaOAMLRysbHzgePcIaGicaGignVBNn0ig1VzhvSzu5HBwuGpsaN','ktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DiefesLvtvcbJB21WBgv0zwqGC3vJy2vZC2z1BgX5ihDPDgGGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0LovevhuKfuruqGvfjbtLnbq1rjt05DiefesLvtvcbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8ViezHBgXIywnRoIb0yw5WysbLDMvUDhmkicaGicaGDhj5ihSkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','cGOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj0nptu1jvcCPoWOkicaGicaGlY8Gsw52ywXPzgf0zsbJywnOzsbZzxrLBgfOihDYAxrLig9WzxjHDgLVBIbIzxjOyxnPBaOGicaGicbHD2fPDcb0AgLZlMLUDMfSAwrHDgvdywnOzsGPoWOkicaGicaGCMv0DxjUihSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGig1LC3nHz2u6icDeyxrHihn1y2nLC3nMDwXSEsbKzwXLDgvKjYWkicaGicaGicbKyxrHoIbKzwXLDgvKrgf0yq','zMLLBgrwywXPzgf0Aw9U','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKig11C3qGAgf2zsbWCM9Wzxj0EsaI','C3rYAw5N','oWOkicaGicaGBgv0ihDOzxjLq29UzgL0Aw9UCYa9ifTDoWOGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSk','igrHDgeGBM90igzVDw5Kig9YigfSCMvHzhKGzgvSzxrLzcCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','BNvSBa','zw50CMLLCW','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFqOGicaGicaGicaGxqOGicaGicaGih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','ksaMjIa','zLf0u1G','id0GrKfmu0uNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','lMnYzwf0zunVBxbVC2L0zsHKyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','x2v4DgvUzgvKrMLLBgrZ','j107cIaGicaGigXLDcbWyxjHBxmGpsbBxtSkicaGicaGBgv0ihbHCMfTsw5KzxGGpsaXoWOkicaGicaGlY8GugfYC2uGzgfUihzHBgLKyxnPihnLBgvJDcbJB2X1Bw5ZihvUDhvRihn1ChbVCNqGu1fmigv4ChjLC3nPB25ZcIaGicaGignVBNn0ihzHBgLKvgv4DezPzwXKCYa9ia','yxfPvLa','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIikicaGicaGicaGih0kicaGicaGicb9','BgvUz3rO','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOycr7A2v5Fsa9icqKE2rLDgfPBfbSywnLAg9SzgvYsw5KzxGRk31GktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGkhvWzgf0zwrFyxqSihvWzgf0zwrFyNKPigTLigrLDgfPBcbvuerbveuGDMLHigHLBhbLCGOGicaGicaGigrLDgfPBfbSywnLAg9SzgvYsw5KzxGGpsb0AgLZlL9HChbLBMrvCgrHDgvbDwrPDenVBhvTBNmOzgv0ywLSrMLLBgrZlcbKzxrHAwXwywX1zxmSigL0zw0Sigv2zw50q29UDgv4DcWGzgv0ywLSugXHy2vOB2XKzxjjBMrLEcK7cGOGicaGicaGigrLDgfPBfzHBhvLCY5WDxnOkgL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0PoWOGicaGicaGignVBNn0igrLDgfPBfvWzgf0zvf1zxj5id0GyaOGicaGicaGicaGvvbeqvrficr7zgv0ywLSvgfIBgvoyw1LFqOGicaGicaGicaGu0vuicr7zgv0ywLSrMLLBgrZlMPVAw4OjYWGjYL9cIaGicaGicaGicbxsevsrsaKE2rLDgfPBfbYAw1HCNLlzxL9id0Gjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEh0kicaGicaGicaGifjfvfvstKLorYaQcIaGicaGicaGydSkcIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgrLDgfPBfvWzgf0zvf1zxj5lcbKzxrHAwXwywX1zxmPoWOGicaGicaGigLMicHKzxrHAwXszxn1BhqUCM93CY5Szw5NDgGGpIaWksb7cIaGicaGicaGicb1CgrHDgvKsxrLBxmUChvZAcHKzxrHAwXszxn1BhqUCM93C1SWxsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGvxbKyxrLzcaKE3vWzgf0zwrjDgvTCY5Szw5NDgH9igrLDgfPBcbPDgvTkhmPycK7cGOGicaGicaVlYaZlIbqCM9JzxnZieLou0vsvcbVCgvYyxrPB25ZcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbPBNnLCNrjDgvTCYKGEWOGicaGicaGic8ViefKzcbMB3jLAwDUigTLEsb0BYbPDgvTcIaGicaGicaGAxrLBvTMB3jLAwDUs2v5xsa9ihbYAw1HCNLlzxLwywX1ztSkcIaGicaGicaGlY8Gqxv0BY1Nzw5LCMf0zsbvvuLeihvUDhvRigrLDgfPBcbqsYbIAwXHignSAwvUDcb0AwrHAYbTzw55DxbWBhKkicaGicaGicaVlYaOA29UC2LZDgvUigrLBMDHBIbJCMvHDgvdB21WB3nPDguGzgfUigTVBNzLBNnPigf1Dg9hzw5LCMf0zsKkicaGicaGicbPzIaOAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GDw5KzwzPBMvKihX8igL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0Gpt09ig51BgWPihSkicaGicaGicaGigL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0GpsbYzxf1AxjLkcD1DwLKjYKUDJCOktSkicaGicaGicb9cG','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','y3jLyxrLzej5','BM9Kzxm','iga7cIaGicaGicaGicbWyxjHBxmGpsb3AgvYzvjLC3vSDc5WyxjHBxm7cIaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYbiyw5KBguGC29YDf9JB2X1Bw5ZigPPA2eGywrHcIaGicaGigLMicHVChrPB25ZlNnVCNrFy29SDw1UCYaMjIbbCNjHEs5PC0fYCMf5kg9WDgLVBNmUC29YDf9JB2X1Bw5ZksaMjIbVChrPB25ZlNnVCNrFy29SDw1UCY5Szw5NDgGGpIaWksb7cIaGicaGicaGy29UC3qGB3jKzxjqyxj0CYa9ig9WDgLVBNmUC29YDf9JB2X1Bw5ZlM1HCcHPDgvTid0+ihSkicaGicaGicaGignVBNn0ignVBhvTBIa9igL0zw0Uy29SDw1UoWOGicaGicaGicaGy29UC3qGzgLYzwn0Aw9Uid0GkgL0zw0UzgLYzwn0Aw9UihX8icDbu0mNks50B1vWCgvYq2fZzsGPoWOGicaGicaGicaGAwyGkcfJB2X1Bw4PihjLDhvYBIbUDwXSoWOGicaGicaGicaGAwyGkcf0AgLZlNzHBgLKrMLLBgrZlMLUy2X1zgvZkgnVBhvTBIKGjIyGy29SDw1Uice9psaN','psr7zgf0ys4','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','s0Tcz0C','icHHDg9TAwmGAw5JCMvTzw50l2rLy3jLBwvUDcKkCM91DgvYlNbVC3qOjY9HzgP1C3qNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GvMfSAwrHC2KGCgf5Bg9HzaOGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKignHBM5VDcbIzsbLBxb0EsCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGChjPBwfYEsbRzxKkicaGignVBNn0ihbYAw1HCNLlzxKGpsaN','CMvHzenVBxbVC2L0zq','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFq','Aw5JBhvKzv9KzwXLDgvK','cIaGica','wKjNBMi','icOG','id0GvfjvrsCPoWOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','id0GrKfmu0uGteLnsvqGmsCScIaGicaGicaGicaGicaGw19FzMTwywXDcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2zRuMvZlNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGicaGicaGy29UC3qGx19MA0vYCIa9ig5LDYbfCNjVCIGIq2fUBM90iciGkYbVCgvYyxrPB24GkYaIoIbYzwzLCMvUy2vKihbHCMvUDcbYzwnVCMqGAw4GjW','jZSkicaGignVBNn0ihjLy29YzeLKid0GCMvXlMjVzhLBChjPBwfYEuTLEv0GFhWGCMvXlMjVzhKUAwq7cIaGicbPzIaOixjLy29YzeLKksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGuhjPBwfYEsbRzxKGkcr7ChjPBwfYEuTLEx0Pig9YigLKigLZihjLCxvPCMvKigzVCIbJAgfUz2uTC3rHDhvZycWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNn0yxr1CYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNtwLZC2LUzYbYzxf1AxjLzcbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGj3n0yxr1CYbPCYbYzxf1AxjLzcbMB3iGy2HHBMDLlxn0yxr1CYCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','vuPuuva','C29MDerLBgv0zuzRugfYzw50CW','icaGigLMicHMB3jTyxr0zwqPihSk','lMfNz3jLz2f0zurHDgeOCMvXlMjVzhKGFhWGE30SigfNz3jLz2f0zunVBMzPzYK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fNCMvNyxnPigrHDgeG','iefqssCScIaGicaGicaGicbKzxnJCMLWDgLVBJOGj0f1Dg8Tz2vUzxjHDgvKiefqssbTB2r1BguGzM9Yia','laOGicaGicbHzgP1C3rdB25MAwC6ia','nMfywKTksW','iezst00GjhT0AgLZlNDYAxrLu291CMnLFsbxsevsrsaKE3DOzxjLq2XHDxnLFwa7cIaGicaGignVBNn0igHLywrLCLjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhqUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicb0AhjVDYbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqNktSkicaGicaGFqOkicaGicaGy29UC3qGAgvHzgvYuhjPBwfYEuTLEvzHBhvLid0GAgvHzgvYuMvZDwX0lNjVD3nBmf1BjW','ihvUDhvRigXVB2T1CcbKzw5Nyw4GzMLSDgvYAw5NcNjVDxrLCI5WB3n0kcCVBg9VA3vWjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VifzHBgLKyxnPifGTuMvXDwvZDc1nB2rLigHLywrLCGOGicaGy29UC3qGCMvXDwvZDe1VzguGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lw1VzguNxtSkicaGignVBNnVBguUBg9NkgbylvjLCxvLC3qTtw9KzsbOzwfKzxiGzM9Yifbpu1qGBg9VA3vWoIaKE3jLCxvLC3rnB2rLFwaPoWOkicaGigLMicHYzxf1zxn0tw9KzsaHpt0Gj3n0yxrPyYCPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGuMvXDwvZDcbnB2rLjYWkicaGicaGicbTzxnZywDLoIaNwc1szxf1zxn0lu1VzguGAgvHzgvYig11C3qGyMuGC2v0ihrVihn0yxrPyYbMB3iGue9tvcbTzxrOB2qNlaOGicaGicaGigrLDgfPBhm6icDdB250B2GGCgvUz2D1BMfHBJOGvgfTyMfOA2fUigHLywrLCIbylvjLCxvLC3qTtw9KztOGC3rHDgLJjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKcIaGicbPzIaOixjLCs5IB2r5ksb7cIaGicaGic8Vifn1ChbVCNqGDw50DwSGzMLLBgroyw1Ltg9VA3vWignVBMzPzWOGicaGicbJB25ZDcbSB29RDxbdB25MAwCGpsa','zMLUza','id0GjcCGkYbWktSkicaGicaGicaGicaGCcSRoWOGicaGicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHFx3n0CIaRicCJiYCGkYb1DwLKDJCOksK7cIaGicaGicaGicb9cIaGicaGicaGFq','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjxn5C3rLBsuIlcaIC2vUC2L0AxzLiJOGzMfSC2uGFqOGicaGicaGicaGicaGif0kicaGicaGicaGicaGFsWkicaGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','A2fMA2e','odC2ndy1DLDivwXL','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGsu5trvjuievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwqGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5PBNnLCNqPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HjBNnLCNqOcIaGicaGicaGjW','jYWkicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicb9cIaGicaGih07cIaGicb9cGOGicaGlY8GugfUz2DPBcbTB2rLBcbJB21WB3nPDguGy3jLyxrLig1LDgHVzaOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','cNjVDxrLCI5WB3n0kcCVy2HHBMDLlxn0yxr1CYCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicaVlYbwywXPzgfZAsbWyxLSB2fKcIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbYzxf1AxjLzcbMAwvSzhm6igLKl3bYAw1HCNKGA2v5igrHBIbZDgf0DxmkicaGignVBNn0ihbYAw1HCNLlzxKGpsaN','igrHDgeGywrQDxn0zwqGC3vJy2vZC2z1BgX5oIaKE3bYAw1HCNLlzxL9psr7CMvXlMjVzhLBChjPBwfYEuTLEv19ycK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','ksb8FcaWksaQicHoDw1IzxiOAxrLBs4','iJOGwWOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmsWGiMzPzwXKiJOGiNzHBhvLiIb9laOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmIWGiMzPzwXKiJOGiNzHBhvLiIb9cIaGicaGicaGicaGif0kicaGicaGicaGih0kicaGicaGicb9','q2f0vM4','jYWkicaGicaGicaN','Bgv0igjHC2vrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7','r2nryLy','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','jYWGDMfSDwu6igrHDgeU','igXVB2T1CcbYzxf1zxn0oIbZzwfYy2G9jhTZzwfYy2H9lcbMAwX0zxjZpwaSigv4DhjHrMLSDgvYCYK7cGOGicaGlY8Gr3vUywTHBIbTB2rLBcb1BNr1AYbSB29RDxaGzgf0ysbKzw5Nyw4GzMLSDgvYCYb0yw1IywHHBGOGicaGy29UC3qGBgLZDca9igf3ywL0ia','cIaGicaVlYbhzxqGy29YCMvSyxrPB24GsuqGzNjVBsbOzwfKzxiGkg9WDgLVBMfSkqOGicaGy29UC3qGy29YCMvSyxrPB25jzca9ihjLCs5OzwfKzxjZwYD4lwnVCNjLBgf0Aw9UlwLKj10GFhWGBNvSBdSk','Aw5MBW','cIaGicaVlYbfDMvUDcbSAwzLy3LJBguGDMfYAwfIBgvZcIaGicbSzxqGB2XKrgf0ysa9ig51BgW7cIaGicbSzxqGBMv3rgf0ysa9ig51BgW7cIaGicbJB25ZDcbYzxf1zxn0rgf0ysa9ihjLCs5IB2r5oWOGicaGBgv0ihjLC3bVBNnLrgf0ysa9ig51BgW7cGOGicaGlY8Gpt09ieLUDgvNCMf0zwqGvhjHBNnHy3rPB24GzgvUz2fUiev2zw50ieXPzMvJEwnSzsa9pt0kicaGic8Vig9SzerHDgeGzMv0y2GGkYbVBKjLzM9YzsaRig1HAw4GB3bLCMf0Aw9UicSGB25bzNrLCIbKAwvRC2vRDxnPigrHBgfTihnHDhuGDhjHBNnHy3rPB24GC2nVCgukicaGic8VigrPigrHBgfTig1VzgvSlMv4zwn1DgvuCMfUC2fJDgLVBLDPDgHfDMvUDhmOkqOGicaGAwyGkgnVBxbVBMvUDevUz2LUzsaMjIbdB250zxH0qNvPBgrLCIKGEWOGicaGicaVlYbhDw5HA2fUigLUDgvNCMf0zwqGDhjHBNnHy3rPB24GBw9KzwWGzgvUz2fUigv2zw50igXPzMvJEwnSzqOGicaGicb0CNKGEWOGicaGicaGignVBNn0igv2zw50q29UDgv4Dca9ihSkicaGicaGicaGignVBxbVBMvUDevUz2LUztOGy29TCg9Uzw50rw5NAw5LlaOGicaGicaGicaGq29UDgv4Dej1AwXKzxi6ienVBNrLEhrcDwLSzgvYlaOGicaGicaGicaGDgfIBgvoyw1LoIaN','laOGicaGicbJB21WB25LBNrZoIa','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0','cIaGicaGicaGAxrLBs4','oWOkicaGignVBNn0ihDYAxrLu291CMnLid0GDgHPCY5NzxruywjSzvnVDxjJzsGND3jPDguNktSkicaGignVBNn0ihjLDhvYBMLUz0zPzwXKCYa9ihrOAxmUz2v0uMv0DxjUAw5NrMLLBgrZkcK7cIaGicaVlYbKzwXLDgvKx2j5oIbIB2r5igvRC3bSAxnPDcdIHPiGzxzLBNrdB250zxH0lMfKzgL0Aw9UywXdB250zxH0lNvZzxjFAwqG4OAsicDZExn0zw0NlIbszxnVBhvZAqOGicaGlY8GEwfUzYbtqu1bigrPCgfRywKGDw50DwSGBwfZDgvYierbtIbZzwX1CNvOigrLC2nLBMrHBNqGCgfKysbJyxnJywrLicHgsY1trc0Zicm2ks4kicaGignVBNn0igrLBgv0zwrcEsa9ihrOAxmUx3jLC29SDMvbDwrPDfvZzxjjzcHJCML0zxjPysWGzxzLBNrdB250zxH0lcaN','DgHPCY5HDwrPDenVBhvTBNmGpsbUDwXSoWO','tw5zENO','l2zPCNn0oICSiePtt04UC3rYAw5NAwz5khjLCs5IB2r5lcbUDwXSlcaYksK7cGOGicaGlY8GvMfSAwrHC2KGCMvXDwvZDcbIB2r5cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYboB3jTywXPEMu6igfYCMf5ideGzwXLBwvUic0+ig9IAMvJDcaOyMfJA3DHCMqGy29TCgf0AwjSzsKkicaGigLMicHbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIbYzxeUyM9KEs53AgvYzs5Szw5NDgGGpt09idePihSkicaGicaGCMvXlMjVzhKUD2HLCMuGpsbYzxeUyM9KEs53AgvYzvSWxtSkicaGih0kcIaGicaVlYbwywXPzgfZAsb3AgvYzsbJBgf1C2uGlsbOyxj1CYbVyMPLy3qGDhvUz2DHBcb7A2v5lcb2ywX1zx0kicaGigLMicGHCMvXlMjVzhKUD2HLCMuGFhWGDhLWzw9MihjLCs5IB2r5lNDOzxjLice9psaNB2jQzwn0jYb8FcbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNtwLZC2LUzYbYzxf1AxjLzcbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGj1bYB3bLCNr5ihDOzxjLigLZihjLCxvPCMvKigfZihTRzxKSihzHBhvLFsbVyMPLy3qNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicj3AgvYzsi6ihSGiMTLEsi6ici','cGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','iL0kicaGicaGicb9laOGicaGicaGigv4yw1WBgvFD2L0Af9VCMrLCMLUzZOGEWOGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','tvrMvLm','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','C2XPy2u','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGlY8Gq1jfqvrflunptvbpu0LursaVifvqrefurs1dt01qt1njveu6igzVCMnLihnJB3bLignVBhvTBIbPBNnPzguGBwfZDgvYigjVzhKUcIaGlY8GtwfZDgvYigLZihDYyxbWzwqGyxqGCMvXlMjVzhLBCM9VDeTLEv07igrLDgfPBcbYB3DZigLUAgvYAxqGC2nVCguGDhjHBNnPDgL2zwX5cIaGlY8GDMLHig1HC3rLCIbVD25LCNnOAxaGkg5VigrPCMvJDcbZy29WzsbJB2X1Bw4GB24Gzgv0ywLSihrHyMXLks4kicbPzIaOzw5KCg9PBNqGpt09icDJCMvHDguTy29TCg9ZAxrLjYb8FcbLBMrWB2LUDca9pt0Gj3vWzgf0zs1JB21WB3nPDguNksb7cIaGicbJB25ZDcbTyxn0zxjcB2r5id0GCMvXlMjVzhLBjW','ywn0Aw9U','lMrLBgv0zurHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicaGignVBNnVBguUBg9NkcDBrKfmtejbq0TDierftevursbJB21WBgv0zwqGD2L0Ag91DcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDierftevursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0kcIaGicaVlYbmB2CGC3vJy2vZC2z1BcbVCgvYyxrPB24kicaGignVBNnVBguUBg9Nkga','A3jHAeO','AM9PBG','jZSkcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbKyxrHw2rLDgfPBeTLEv0GFhWGw10PihSkicaGicaGicaVlYbbzgqGzM9YzwLNBIbRzxKGDg8GAxrLBqOGicaGicaGigL0zw1BzM9YzwLNBKTLEv0GpsbTyxn0zxjqCMLTyxj5s2v5vMfSDwu7cGOGicaGicaGic8Vief1Dg8Tz2vUzxjHDguGvvvjrcb1BNr1AYbKzxrHAwWGueSGyMLSysbJBgLLBNqGDgLKywSGBwvUExvWCgX5lGOGicaGicaGic8VieTVBNnPC3rLBIbKzw5Nyw4GA29UDMvUC2KGyxv0B0DLBMvYyxrLk3bYAw1HCNLlzxKGzgKGC2LUz2XLlxrHyMXLcIaGicaGicaGlY8GkgXPAgf0ihzHBgLKyxrLrgf0ysKGzgfUihnLCMfNyw0GBgLUDgfZigrPywXLy3q6ihnLBxvHigDLBMvYyxrVCGOGicaGicaGic8Vig1LBwfRywKGDxvPzc52nYGPihnLAgLUz2DHigzVCM1HDcbvvuLeigrHBIb0AxrPAYbNzw5LCMfZAqOGicaGicaGic8VigLKzw50AwSSigLUzgvWzw5Kzw4GzgfYAsberuzbvuXuigv4ChjLC3nPB24GzgKGrermlGOGicaGicaGigLMicHPDgvTw2rLDgfPBfbYAw1HCNLlzxLDid09psb1BMrLzMLUzwqGFhWGAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GBNvSBcKGEWOGicaGicaGicaGAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9ihjLCxvPCMuOj3v1AwqNks52nYGPoWOGicaGicaGih0k','zhv6DKi','uMLPtNK','ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','AxnbCNjHEq','oICSigvYCM9YktSkcIaGicaVlYbsmJa6ihjLC3rVCMveyxrHig1LBgvTCgfYihn0yxr1C0nVzguGDw50DwSGA29UzgLZAsb0zxjRB250CM9SlGOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqWncKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','iokgKIa','y29UC3qGz2vUzxjHDgvKrMLLBgrZid0G','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','icaGic8VicH3AgvYzs1RzxKGuJe1ksbZzwHPBMDNysb0zxiTChjVEwvRC2KGzM9YBwf0uMvZCg9UC2veyxrHoYbOyxb1CYbKyxjPihjLC3bVBNnLihb1yMXPAWO','ywr2yw5JzwrrDwvYAwvZ','zMLLBgrZ','lMfKzerHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicaGig5LD0rHDgeGpsbYzxnWB25ZzurHDge7cIaGicaGicaGy29UC29Szs5SB2COj1TgquXmqKfds10Gsu5trvjuignVBxbSzxrLzcb3AxrOB3v0igv2zw50CYCPoWOGicaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj1TgquXmqKfds10Gsu5trvjuigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFqOkicaGic8VieXVzYbZDwnJzxnZzNvSig9WzxjHDgLVBGOGicaGy29UC29Szs5SB2COya','zuTYEK8','zM9YrwfJAa','y2fZy2fKzurLBgv0zq','l3jLywqTy29TCg9ZAxrLoICSiePtt04UC3rYAw5NAwz5khjLCs5IB2r5lcbUDwXSlcaYksK7cGOGicaGlY8GvMfSAwrHC2KGCMvXDwvZDcbIB2r5cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsb3AgvYzsbJBgf1C2ukicaGigLMicGHCMvXlMjVzhKUD2HLCMuPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6icDqCM9Wzxj0Esb3AgvYzsbPCYbYzxf1AxjLzcCScIaGicaGicaGzxHHBxbSztOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjMAwvSzf9Uyw1LiIWGiNzHBhvLiJOGiMzPzwXKx3zHBhvLiIb9xqOGicaGicaGih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGzM9YBwf0ihDOzxjLcIaGicbPzIaOiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPicyMicfYzxeUyM9KEs53AgvYzs5JB25KAxrPB25Zksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBcIaGicaGicaGicaGihSGiMTLEsi6ici','Aw1WB3j0','ihX8igL0zw0UBMfTzsb8FcbPDgvTlMnVzguGFhWGAxrLBs5KzxnJCMLWDgLVBIb8FcaNjWOGicaGicb9ksK7cGOGicaGicaVlYbdywnOzsb0AguGCMvZDwX0icHPzIbLBMfIBgvKkqOGicaGicbHD2fPDcb0AgLZlNnLDenHy2HLzeXVB2T1CcHJywnOzu9WDgLVBNmSihjLC3vSDcWGj2zPBhrLCICPoWOkicaGicaGCMv0DxjUihjLC3vSDdSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHv2L0AezPBhrLCIaO','DxbKyxrLq29TCg9ZAxrL','D0ndqNy','Aw5JBhvKzxm','cGOVlYbizwfSDgGGy2HLy2SGzw5KCg9PBNqkCM91DgvYlMDLDcGNl2HLywX0AcCSicHYzxeSihjLCYKGpt4GEWOGihjLCY5QC29UkhSkicaGihn0yxr1CZOGj29RjYWkicaGigvUzhbVAw50oIaN','AwyGkgnHBgn1Bgf0Aw9UCY50B3rHBf9HBw91BNqPihSkicaGicaGicbJB25ZDcb0B3rHBefTB3vUDca9igfSBeL0zw1ZlNjLzhvJzsGOC3vTlcbPDgvTksa9pIb7cIaGicaGicaGicbJB25ZDcbXDhKGpsboDw1IzxiOAxrLBs4','zgf0ysb8FcbBxq','cIaGicaGih0kcIaGicaGic8VidmUifbYB3nLCYbWyxjHBwv0zxiGD2HLCMuGzgvUz2fUigzVCM1HDcbHzhzHBMnLzcbJB25KAxrPB25ZcIaGicaGigXLDcb3AgvYzvbHCMfTCYa9ifTDoWOGicaGicbPzIaOD2HLCMuGjIyGkefYCMf5lMLZqxjYyxKOD2HLCMuPihX8icH3AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOD2HLCMuUy29UzgL0Aw9UCYKPksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOD2HLCMuSihbHCMfTCYWGCgfYyw1jBMrLEcK7cIaGicaGicaGicbPzIaOD2HLCMvszxn1BhqUC3fSksb7cIaGicaGicaGicaGigLMicH3AgvYzunSyxvZzsKGEWOGicaGicaGicaGicaGihDOzxjLq2XHDxnLicS9icCGqu5eicGNicSGD2HLCMvszxn1BhqUC3fSicSGjYKNoWOGicaGicaGicaGicb9igvSC2uGEWOGicaGicaGicaGicaGihDOzxjLq2XHDxnLid0Gj1DirvjficCGkYb3AgvYzvjLC3vSDc5ZCwW7cIaGicaGicaGicaGih0kicaGicaGicaGicaGD2HLCMvqyxjHBxmGpsb3AgvYzvjLC3vSDc5WyxjHBxm7cIaGicaGicaGicb9cIaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GkhrHBNbHigzPBhrLCIKkicaGicaGy29UC3qGy291BNruB3rHBff1zxj5id0GBMvLzhntDwjXDwvYEqOGicaGicaGid8Gj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicGNicSGyMfZzvf1zxj5icSGjYKGyMfZzv9XDwvYEq','zMLSztO','ChLttgK','lNjLC3rVCMveyxrHkhjLCs5IB2r5lcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','lMDLDeXPC3qOB3b0Aw9UCYK7cGOGicaGlY8GrM9YBwf0ihjLC3bVBNnLigjLCMrHC2fYA2fUig1VzgukicaGigLMicHWywDPBMf0zsKGEWOGicaGicbJB25ZDcb0B3rHBfbHz2vZid0Gtwf0Ac5JzwLSkhjLC3vSDc50B3rHBfjLy29YzhmGlYbWzxjqywDLktSkicaGicaGy29UC3qGAgfZtMv4Dca9ihbHz2uGpcb0B3rHBfbHz2vZoWOGicaGicbJB25ZDcbOyxnqCMv2Aw91CYa9ihbHz2uGpIaXoWOkicaGicaGCMv0DxjUihjLCY5QC29UkhSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGigrHDge6ihjLC3vSDc5KyxrHihX8ifTDlaOGicaGicaGignVDw50oIbYzxn1BhqUzgf0ysa/ihjLC3vSDc5KyxrHlMXLBMD0Aca6idaScIaGicaGicaGCgfNAw5HDgLVBJOGEWOGicaGicaGicaGy3vYCMvUDf9WywDLoIbWywDLlaOGicaGicaGicaGCgvYx3bHz2u6ihbLCLbHz2uScIaGicaGicaGicb0B3rHBf9YzwnVCMrZoIbYzxn1BhqUDg90ywXszwnVCMrZihX8idaScIaGicaGicaGicb0B3rHBf9WywDLCZOGDg90ywXqywDLCYWkicaGicaGicaGigHHC19UzxH0oIbOyxnozxH0laOGicaGicaGicaGAgfZx3bYzxzPB3vZoIbOyxnqCMv2Aw91CWOGicaGicaGih0kicaGicaGFsK7cIaGicb9igvSC2uGEWOGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGzgf0ytOGCMvZDwX0lMrHDgeGFhWGw10ScIaGicaGicaGy291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmaOGicaGicb9ktSkicaGih0kcIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','AvbwB1C','iezst00GjYaRihDYAxrLu291CMnLicSkicaGicaGicaNifDirvjficGNicSGD2HLCMvcDwLSDc5ZCwWGkYaNksbbtKqG','id0GtK9xkcKNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','cIaQcIaQie1VzgvSihvUDhvRia','jYKGEWOGicaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbJB2X1Bw47cIaGicaGicaGicbICMvHAZSGlY8Gz3vUywTHBIb5yw5NihbLCNrHBweGC2vIywDHAsb0zxH0igzPzwXKcIaGicaGicaGFqOkicaGicaGicaVlYbkAwTHigj1A2fUihjLy29NBML6zwqGzMLLBgqSig1HC2LOihrHBwjHAgTHBIaOBxvUz2TPBIbJB21WDxrLzcbJB2X1Bw4PcIaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGDgv4DezPzwXKid0Gy29SDw1UoWOGicaGicb9cGOGicaGicaVlYbcyw5NDw4GCxvLCNKGu0vmrunuigrLBMDHBIbZDxbWB3j0igv4ChjLC3nPB25ZcIaGicaGigXLDcbXDwvYEsa9igbtruXfq1qGjhTZzwXLy3rdBgf1C2v9iezst00GjhT0AgLZlMDLDeXVB2T1CfnVDxjJzsGPFsa','zMvHDhvYzxm','Dg1zq3C','tgnYDwK','Dw5PDf9WCMLJzq','lI4VzgjZy2HLBweTA2L0l3nVzNqTzgvSzxrLlwnVBNn0yw50CW','ywDNCMvNyxrL','Bg9JA2vKuM93wYC','icaGic8ViezPzwXKihzHBgLKyxrPB24Gy29UzMLNDxjHDgLVBGOGicaGDgHPCY52ywXPzgf0Aw9Uq29UzMLNid0GEWO','cIaGicaVlYbwywXPzgfZAsbKzxrHAwWGAxrLBxmGDw50DwSGBwfZDgvYlwrLDgfPBcaOB3bZAw9UywWGDw50DwSGDxbKyxrLkqOGicaGlY8Gvw50DwSGDxbKyxrLq29TCg9ZAxrLlcbKzxrHAwWGAxrLBxmGyMvYDxbHig9IAMvJDcbKzw5Nyw4GE2LUC2vYDdOGw10SihvWzgf0ztOGw10SigrLBgv0ztOGw119cIaGicbPzIaOzgf0ys4','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIiScIaGicaGicaGicaGici','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GrLjptsbJBgf1C2uGDw50DwSGBg9VA3vWigjLCMrHC2fYA2fUihbYAw9YAxrHCYbYzxnVBhvZAsbZDw1IzxiGzgf0yqOGicaQifbYAw9YAxrHCZOGDMLLD05HBwuG4OAsihzPzxDrDwvYEsdIHPiGDgfIBgvoyw1LicHRB25ZAxn0zw4GzgvUz2fUic9YzwfKigrHBIaVzMLYC3qPcIaGicOGqhjLDhvYBNmGE3n0CMLUz30GrLjptsbJBgf1C2uGzgvUz2fUigfSAwfZicDHjWOGicaQlWOGigDLDeXVB2T1CfnVDxjJzsGPihSkicaGignVBNn0ihjLywrrDwvYEsa9ihrOAxmUz2v0uMvHzff1zxj5kcK7cIaGicbJB25ZDcbZAw1WBgvrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7cIaGicbPzIaOCMvHzff1zxj5lNrYAw0OksaHpt0GC2LTCgXLuxvLCNKPihSkicaGicaGlY8GDMLLD05HBwuGyxrHDsb2Awv3uxvLCNKGywT0AwyG4Ocuigj1BMDRDxmGC2vIywDHAsbZDwjXDwvYEqOGicaGicbYzxr1CM4GjYGNicSGCMvHzff1zxj5icSGjYKGysC7cIaGicb9cIaGicbYzxr1CM4GDgHPCY5YzwfKu291CMnLicSGjYbHjZSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDeXVB2T1CerHDgeGDw50DwSGBwvUz2D1BMfRyw4GA29SB20GjW','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','uwHXEMy','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOA2v5ktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGicbKzxrHAwXqBgfJzwHVBgrLCNmUChvZAcHGjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEcSRFwaPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGA2uGzgv0ywLSieLou0vsvcb2AweGAgvSCgvYcIaGicaGicaGzgv0ywLSugXHy2vOB2XKzxjjBMrLEca9ihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHKzxrHAwXgAwvSzhmSigrLDgfPBfzHBhvLCYWGzgv0ywLSugXHy2vOB2XKzxjZlcbPDgvTlcbLDMvUDenVBNrLEhqSigrLDgfPBfbSywnLAg9SzgvYsw5KzxGPoWOkicaGicaGicbJB25ZDcbKzxrHAwXjBNnLCNrrDwvYEsa9igakicaGicaGicaGieLou0vsvcbjtLrpicr7zgv0ywLSvgfIBgvoyw1LFsaOjhTKzxrHAwXgAwvSzhmUAM9PBIGNlcaNkx0PcIaGicaGicaGicbwquXvrvmGkcr7zgv0ywLSugXHy2vOB2XKzxjZlMPVAw4OjYWGjYL9kqOGicaGicaGicaGuKvuvvjosu5hicOkicaGicaGicbGoWOkicaGicaGicbJB25ZB2XLlMXVzYGNrxHLy3v0Aw5NigrLDgfPBcbjtLnfuLq6jYWGEYbXDwvYEtOGzgv0ywLSsw5Zzxj0uxvLCNKSihzHBhvLCZOGzgv0ywLSvMfSDwvZih0PoWOGicaGicaGignVBNn0igrLDgfPBfjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHKzxrHAwXjBNnLCNrrDwvYEsWGzgv0ywLSvMfSDwvZktSkicaGicaGicbPBNnLCNrLzeL0zw1ZlNb1C2GOzgv0ywLSuMvZDwX0lNjVD3nBmf0PoWOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGsw5Zzxj0zwqGjhTPBNnLCNrLzeL0zw1ZlMXLBMD0Ah0Gzgv0ywLSigL0zw0OCYLGktSkcIaGicaGic8Vic0TlsbiB29RoIbVBKfMDgvYq29TCg9ZAxrLsw5Zzxj0ic0TlqOGicaGicbPzIaOzxzLBNrdB250zxH0icyMigv2zw50q29UDgv4Dc5JB21WB25LBNrfBMDPBMuPihSkicaGicaGicbJB25ZDcb7ignVBxbVBMvUDevUz2LUztOGy2uSienVBNrLEhrcDwLSzgvYoIbdqIb9id0GzxzLBNrdB250zxH0oWOGicaGicaGignVBNn0igfMDgvYq3r4id0Gq0iUyNvPBgrdB21WB3nPDgvjBNnLCNrbzNrLCKnVBNrLEhqOAgvHzgvYrgf0ysWGAw5Zzxj0zwrizwfKzxiSigLUC2vYDgvKsxrLBxmSihSkicaGicaGicaGihrHyMXLtMfTztOGjW','jZSkBw9KDwXLlMv4Cg9YDhmUz2vUzxjHDgvKid0GjW','igLUzM86jYWGzxjYB3iPoWOGicaGCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGzMv0y2HPBMCGzw5KCg9PBNqGAw5MB3jTyxrPB24NlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktS','lNvWzgf0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4Da','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','icSGjW','jYWGDMfSDwu6ia','jYbPCYbTAxnZAw5Nig9YihnVzNqTzgvSzxrLzciPoWOGicaGicaGicaGicaGif9FzMTfCNiUC3rHDhvZq29Kzsa9idqYmJSkicaGicaGicaGicaGicb0AhjVDYbFx2zRrxjYoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cIaGicaGicaGFq','ieforca','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','tw9KzwWGzxH0zw5KCYbcyxnLtw9KzwWGEWOGic8QkGOGicaQienVBNn0CNvJDg9YcIaGicOVcIaGy29UC3rYDwn0B3iOksb7cIaGicaVlYbezwzPBMLZAwTHBIb2ywXPzezPzwXKCYaTihnLBxvHigzPzwXKihLHBMCGDMfSAwqGDw50DwSGDgfIzwWG','CMvZDhjPy3q','zxHWB3j0uxvLCNK','oWOkicaGicaGicbJB25ZDcbYzxf1AxjLzezPzwXKCYa9ifSN','C29MDerLBgv0zuzRq2HLy2TZ','l2rLBgv0zsaTie1LBMDOyxb1CYbKyxrHia','ywn0AxzLx29UBhK','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj2nYzwf0zsCPoWO','AhL2C1u','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLicyMihjLC3vSDc5KyxrHicyMihjLC3vSDc5KyxrHlMXLBMD0Aca+idaPihSkicaGicaGy29UC3qGCMvJB3jKid0GCMvZDwX0lMrHDgfBmf07cIaGicaGigLMicHYzwnVCMrBCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1UxsaHpt0GDw5KzwzPBMvKicyMcIaGicaGicaGicbtDhjPBMCOCMvJB3jKw3jLCs5FCMvXDwvZDfnJB3bLlMnVBhvTBL0Pice9psbtDhjPBMCOCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGicbTzxnZywDLoIaN','zgvSzxrLzf9VBMX5','laOGicaGicaGihrVDgfSuMvJB3jKCZOGzMLSDgvYzwrszwnVCMrZlaOGicaGicaGihrVDgfSvw5MAwX0zxjLzdOGDg90ywXszwnVCMrZcIaGicaGih07cGOGicaGicbPzIaOCgfNAw5HDguPihSkicaGicaGicbYzxn1BhqUCgfNzsa9ihbHz2u7cIaGicaGicaGCMvZDwX0lNbLCLbHz2uGpsbWzxjqywDLoWOGicaGicb9cGOGicaGicaVlYbdywnOztOGu3rVCMuGCMvZDwX0igLUignHy2HLcIaGicaGigf3ywL0ihrOAxmUC2v0q2fJAgvKtgLZDcHVChrPB25ZlcbYzxn1BhqPoWOGicaGicbJB25ZB2XLlMXVzYHGw0nHy2HLxsbtrvqGzM9YigXPC3qGlsaKE2nHy2HLsw5MB31GktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmAxn0oICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbnzw1Iyw5NDw4Gv0HfuKuGy2XHDxnLigrHCMKGzMLSDgvYig9IAMvJDaOGicaQiebWyxjHBsb7t2jQzwn0FsbMAwX0zxjZic0Gt2jQzwn0igzPBhrLCIbKzw5Nyw4GzM9YBwf0ihTJB2X1Bw46ihzHBhvLFqOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifDirvjfignSyxvZzsbtuuWGyxrHDsbLBxb0EsbZDhjPBMCkicaGkI8kicbIDwLSze9IAMvJDezPBhrLCKnSyxvZzsHMAwX0zxjZksb7cIaGicbPzIaOiwzPBhrLCNmGFhWGDhLWzw9MigzPBhrLCNmGit09icDVyMPLy3qNihX8ie9IAMvJDc5RzxLZkgzPBhrLCNmPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGy29UC3qGy29UzgL0Aw9UCYa9ifTDoWOkicaGigzVCIaOy29UC3qGw2nVBhvTBIWGDMfSDwvDig9Mie9IAMvJDc5LBNrYAwvZkgzPBhrLCNmPksb7cIaGicaGic8VifzHBgLKyxnPigTVBg9TigHHCNvZigfKysbKywXHBsb2ywXPzezPzwXKCWOGicaGicbPzIaODgHPCY52ywXPzezPzwXKCY5PBMnSDwrLCYHJB2X1Bw4PicyMihzHBhvLice9psbUDwXSicyMihzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09icCNksb7cIaGicaGicaGlY8GrxnJyxbLihzHBhvLihvUDhvRig1LBMnLz2fOifnrtcbPBMPLy3rPB24kicaGicaGicbJB25ZDcbLC2nHCgvKvMfSDwuGpsb2ywX1zs50B1n0CMLUzYGPlNjLCgXHy2uOlYCVzYWGiICNiIK7cIaGicaGicaGy29UzgL0Aw9UCY5WDxnOkgaKE2nVBhvTBN0GpsaNjhTLC2nHCgvKvMfSDwv9j2aPoWOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUignVBMrPDgLVBNmUBgvUz3rOid4Gmca/ignVBMrPDgLVBNmUAM9PBIGNieforcaNksa6icCNoWOGih0kcG','DMLLD05HBwu','y2HPBgruywjSzq','B2jQzwn0','laOGicaGicaGihrLEhq6igL0zw0U','C291CMnL','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGrevmrvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKrgvSzxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrezwXLDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5KzwXLDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HezwXLDguOcIaGicaGicaGjW','ignVBxbVC2L0zsbYzwfKihn1y2nLC3nMDwW6icr7CMvZDwX0lMnVDw50ihX8idb9ihjLy29YzcHZkwaPoWOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbJB21WB3nPDguGCMvHzca','jYWkicaGicaGDgfIBgu6ig1VzgvSsw5MBY50ywjSzsWkicaGicaGzMLLBgrZoIbTB2rLBeLUzM8UzMLLBgrZlaOGicaGicbXDwvYEvnVDxjJzxm6ig1VzgvSsw5MBY5XDwvYEvnVDxjJzxmScIaGicaGigfJDgLVBNm6igfJDgLVBNmScIaGicaGigrHDgfIyxnLvhLWztOGj3bVC3rNCMvZjYWkicaGicaGz2vUzxjHDgvKoIaN','id0GjcCGkYbWktSkicaGicaGicbWkYS7cIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOzgvSzxrLzej5ktSkcIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOBg9JA2vKuM93wYC','icHWyxjLBNrtB2z0rgvSzxrLpq','lMDLDeXVB2T1CerHDgfxAxrOrMLSDgvYkg1VzgLMAwvKqM9KEsK7cGOGicaGicaGignVBNnVBguUBg9NkgbtDgf0AwmGBg9VA3vWihDPDgGGC2vSzwn0l29YzgvYihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGicaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGicaGigrHDge6igXPC3qScIaGicaGicaGicbZzwXLy3rLzfrHzZOGC2vSzwn0zwruywCScIaGicaGicaGicbXDwvYEtOGBw9KAwzPzwrcB2r5laOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFsbLBhnLihSkicaGicaGicaVlYbhDw5HA2fUig1VzgvSihvUDhvRig1LBMrHCgf0A2fUigrHDgeGzgvUz2fUig1LDgHVzcbSyw1HcIaGicaGicaGy29UC3qGBgLZDca9igf3ywL0ia','BMfTzq','CMvXDwLYzwrgAwvSzhm','zM9YBxvSyq','ktSkicaGicaGicbUzxDeyxrHid0GCMvZCg9UC2veyxrHoWOGicaGicaGignVBNnVBguUBg9NkcDBrKfmtejbq0TDifvqrefursbJB21WBgv0zwqGD2L0Ag91DcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDifvqrefursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0kcIaGicaVlYbmB2CGC3vJy2vZC2z1BcbVCgvYyxrPB24kicaGignVBNnVBguUBg9Nkga','zgvSzxrL','cGOGicaGicaVlYaTls0Gsg9VAZOGB25bzNrLCKnVBxbVC2L0zvvWzgf0zsaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbHzNrLCKn0Eca9ienclMj1AwXKq29TCg9ZAxrLvxbKyxrLqwz0zxjdB250zxH0kgHLywrLCKrHDgeSig9SzerHDgeSihvWzgf0zwrizwfKzxiSihSkicaGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlaOGicaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlaOGicaGicaGicaGzgvSzxrLzdOGzgvSzxrLzeL0zw1ZcIaGicaGicaGFsWGEWOGicaGicaGicaGDgfIBgvoyw1LoIaN','zgv0ywLSvgfIBgu','Dg9ju09tDhjPBMC','zgv0ywLSq29UzMLN','jYKGCMv0DxjUig51BgW7cIaGicaGicaGicbPzIaOzgLYzwn0Aw9Uice9psaNqvndjYaMjIbKAxjLy3rPB24Git09icDervndjYKGCMv0DxjUig51BgW7cIaGicaGicaGicbYzxr1CM4Gycr7y29SDw1UFsaKE2rPCMvJDgLVBN1GoWOGicaGicaGih0PlMzPBhrLCIHcB29SzwfUktSkcIaGicaGicaGAwyGkg9YzgvYugfYDhmUBgvUz3rOid09psaWksb7cIaGicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNtM8GDMfSAwqGC29YDcbJB2X1Bw5ZihbYB3zPzgvKjYK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicaGihf1zxj5icS9igbpuKrfuIbcwsaKE29YzgvYugfYDhmUAM9PBIGNlcaNkx1GoWOGicaGicb9igvSC2uGEWOGicaGicaGic8Vie9YzgvYigj5ihrLEhqGzMLLBgqGkgD1BMfRyw4GywXPyxmGAMLRysbHzgePic0GzgvMyxvSDcbIzwHHDMLVCGOGicaGicaGihf1zxj5icS9igbpuKrfuIbcwsaKE2fSAwfZrMLLBgqGFhWGDgv4DezPzwXKFwa7cIaGicaGih0kcIaGicaGignVBNnVBguUBg9NkcC9pt0GrevcvuCG','r2Xmzge','DMLZAwjPBgL0Eq','ih07cGOGigLMicGHCMvXlMjVzhKUD2HLCMuPihSkicaGihjLCs5IB2r5lNDOzxjLid0Gw3nVzNrezwXLDgvdB25KAxrPB25DoWOGih0GzwXZzsbPzIaOqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKPihSkicaGihjLCs5IB2r5lNDOzxjLlNvUC2HPzNqOC29MDerLBgv0zunVBMrPDgLVBIK7cIaGFsbLBhnLigLMicHYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKPihSkicaGignVBNn0ig9YAwDPBMfStg9NAwmGpsbYzxeUyM9KEs53AgvYzs5SB2DPyYb8FcaNqu5ejZSkicaGigLMicHVCMLNAw5HBeXVz2LJid09psaNqu5ejYKGEWOGicaGicbYzxeUyM9KEs53AgvYzs5JB25KAxrPB25ZlNvUC2HPzNqOC29MDerLBgv0zunVBMrPDgLVBIK7cIaGicb9igvSC2uGEWOGicaGicbYzxeUyM9KEs53AgvYzsa9ihSkicaGicaGicbSB2DPyZOGj0forcCScIaGicaGicaGy29UzgL0Aw9UCZOGwWOGicaGicaGicaGC29MDerLBgv0zunVBMrPDgLVBIWkicaGicaGicaGihSGBg9NAwm6ig9YAwDPBMfStg9NAwmSignVBMrPDgLVBNm6ihjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmGFqOGicaGicaGif0kicaGicaGFtSkicaGih0kicb9cGOGig5LEhqOktSkFsK7cG','zgv0zwn0vgv4DenVBhvTBG','Ce1QEK0','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cGOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6igD1BMfRyw4GBw9KzsbSyw1HihrHBNbHigv2zw50CYaODgv0yxaGChjVCgfNyxnPihjLCxvLC3rjzcb1BNr1AYbmAxzLifn5BMmPcIaGicaGihrYEsb7cIaGicaGicaGCMvZCg9UC2veyxrHid0GyxDHAxqG','oWOGicaGAwyGkcf2ywXPzezPzwXKCY5PBMnSDwrLCYHYzxeUyM9KEs53AgvYzs5RzxKPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGsw52ywXPzcbMAwvSzdOGjhTYzxeUyM9KEs53AgvYzs5RzxL9ycWkicaGicaGicb2ywXPzezPzwXKCZOGDMfSAwrgAwvSzhmScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGC2vSzwn0igzPzwXKCYbQAwTHigfKyqOGicaGAwyGkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihSkicaGicaGy29UC3qGAw52ywXPzezPzwXKCYa9ihjLCs5IB2r5lNnLBgvJDc5MAwX0zxiOzMLLBgqGpt4GixzHBgLKrMLLBgrZlMLUy2X1zgvZkgzPzwXKksK7cGOGicaGicbPzIaOAw52ywXPzezPzwXKCY5Szw5NDgGGpIaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihnLBgvJDcbMAwvSzhmNlaOGicaGicaGicaGBwvZC2fNztOGyeLUDMfSAwqGzMLLBgqOCYK6icr7Aw52ywXPzezPzwXKCY5QB2LUkcCSicCPFwaScIaGicaGicaGicb2ywXPzezPzwXKCZOGDMfSAwrgAwvSzhmScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cIaGicb9cGOGicaGlY8Gq29UDMvYDcbRzsbHCNjHEsbMB3jTyxqGDw50DwSGA29TCgf0AwjPBgL0yxmGzgvUz2fUig1VzgvSlMDLDerHDgeOksaTpIbIDwLSzenVBxbSzxHxAgvYzunSyxvZzsGPcIaGicbJB25ZDcbNzxrqyxLSB2fKid0GEWOGicaGicb3AgvYztOGw3SGA2v5oIbYzxeUyM9KEs53AgvYzs5RzxKSihzHBhvLoIbYzxeUyM9KEs53AgvYzs52ywX1zsb9xsWkicaGicaGC2vSzwn0oIbYzxeUyM9KEs5ZzwXLy3qkicaGih07','qLfyA3u','ihLHBMCGDgvYlxnVzNqTzgvSzxrLicHsmJaPcNjVDxrLCI5WB3n0kcCVCMvZDg9YzsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPicyMicfYzxeUyM9KEs53AgvYzs5JB25KAxrPB25Zksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBcIaGicaGicaGicaGihSGiMTLEsi6icjPzciSicj2ywX1zsi6icj5B3vYlwLKlxzHBhvLiIb9cIaGicaGicaGicbDcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbszxn0B3jLigfKywXHAcbLDMvUDcbSAwzLy3LJBgu6ig1VzgvSlNjLC3rVCMveyxrHig1LBMPHBgfUA2fUihrYyw5ZywTZAw55ysbZzw5KAxjPcIaGicaVlYaOu0vmrunuiezpuIbvuerbveuG4OAsihn0CMLWl2TVBMzSAwSVrKSG4OAsihjLC2v0iokgKIbdt01nsvqG4OAsigLUDMfSAwrHDgvdywnOzsKUcIaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGihrHyMXLtMfTztOGjW','y29UC3rYywLUDhm','jYWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIa','C29MDerLBgv0zuzRq2HPBgrYzw4','x2XVB2T1CenVBMzPzW','EfDAq0m','cIaGicbJB25ZDcbOzwfKzxjdywXJid0G','j10PoWOGicaGicaGignVBNn0ihvWzgf0zvf1zxj5id0Gj1vqrefursaNicSGD3jPDgvtB3vYy2uGkYaNifnfvcaNicSGC2v0q2XHDxnLCY5QB2LUkcCSicCPicSkicaGicaGicaGicCGv0HfuKuG','C2vHCMnOq29SDw1UCW','l2fNz3jLz2f0zsaTiefNz3jLz2f0zsbKyxrHicHJB3vUDcWGC3vTlcbHDMCSig1PBIWGBwf4kqPYB3v0zxiUCg9ZDcGNl2fNz3jLz2f0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZDcbHz2DYzwDHDgvdB25MAwCGpsa','id0Gvfjvrsbgt1iGvvbeqvrfjZSkicaGicaGy29UC3qGBg9JA1jLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHSB2nRuxvLCNKSihDOzxjLqNvPBhqUCgfYyw1ZktSkcIaGicaGigLMicHSB2nRuMvZDwX0lNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGlY8GvgLKywSGywrHihjVDYb0zxjOyxb1CZOGDgLKywSGzgL0zw11A2fUlcbHDgf1ihjLy29YzcbHA3rPzIaOyNvRyw4GDgvYAgfWDxmPlGOGicaGicaGignVBNn0ig5VDezVDw5KrxjYB3iGpsbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqGB3iGBM90igrLBgv0zwqNktSkicaGicaGicbUB3rgB3vUzevYCM9YlNn0yxr1C0nVzguGpsa0mdq7cIaGicaGicaGDgHYB3CGBM90rM91BMrfCNjVCJSkicaGicaGFqOkicaGicaGlY8GmI4GuMvZDg9Yzsb0AwfWihjVDYb0zxjOyxb1CYaOC3rYAxaGC3vMzML4iokgKIbRB25MBgLRiokgKIbgsYdIHPiGCMvZzxqPlGOGicaGicbJB25ZDcbYzxn0B3jLzeL0zw1Zid0Gw107cIaGicaGigzVCIaOy29UC3qGBg9JA2vKuM93ig9MigXVy2Tszxn1BhqUCM93CYKGEWOGicaGicaGignVBNn0ihnLDenSyxvZzxmGpsbBxtSkicaGicaGicbJB25ZDcb1CgrHDgvqyxjHBxmGpsbBxtSkicaGicaGicbSzxqGCca9ide7cG','iIbTDxn0igjLigfUig9IAMvJDcb3AxrOihn0CNvJDhvYzsb7Aw5Zzxj0oIbBxsWGDxbKyxrLoIbBxsWGzgvSzxrLoIbBxx0NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GvMfSAwrHC2KGC3rYDwn0DxjLoIbPBNnLCNqSihvWzgf0zsWGzgvSzxrLigHHCNvZigfYCMf5igPPA2eGywrHcIaGicaGignVBNn0ig9WzxjHDgLVBNmGpsbKyxrHlG','v0HfuKuG','zMLLBgrmywjLBhm','l2nYzwf0zsaTie1LBMfTyMfOA2fUigrHDgeG','l3jLywqTy29TCg9ZAxrLic0GuMvHzcbOzwfKzxiGD2L0AcbKzxrHAwWGAxrLBxmkCM91DgvYlNbVC3qOjY9YzwfKlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','ksb8FcaWoWOGicaGicaGignVBNn0ihbYAwnLid0GtNvTyMvYkgL0zw0U','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGjW','cIaGlYOQcIaGicOGu29MDc1KzwXLDguGB3zLCNjPzguGkfiXncKUic9KzwXLDguGBwvSywT1A2fUihnVzNqGzgvSzxrLlcbIDwTHBIbOyxjKigrLBgv0zs4kicaGkIbbDg9TAwmGkhnHDhuGDhjHBNnHy3rPB24PoIbtruXfq1qGrK9sifvqrefursbYB3CGywT0AwyG4OAsig11DgfZAsbYzxvZywjSzsdIHPiGvvbeqvrfcIaGicOGAxnFzgvSzxrLzc9KzwXLDgvKx2f0l2rLBgv0zwrFyNKG4OAsienptu1jvcdIHPiGAw52ywXPzgf0zunHy2HLlIb1CgrHDgvKxYOGDgLKywSGzgLZzw50DwGUcIaGicOGuMvZCg9UC2uGAwrLBNrPAYbOyxjKigrLBgv0zsaOyMfJA3DHCMqTy29TCgf0ignSAwvUDcKUcIaGicOGqhbHCMfTihTpyMPLy3r9ignYAxrLCMLHic0GEYb3AgvYztOGwY4UlL0GFsbTzw5NAwT1DgKGzM9YBwf0ic9KzwXLDguGzxHPC3rPBMCkicaGkIbaCgfYyw0GE09IAMvJDh0GzxzLBNrdB250zxH0ic0GrxzLBNqGBgLMzwn5y2XLignVBNrLEhqGkg9WC2LVBMfSkqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ihSGC3vJy2vZCYWGBwvZC2fNzsWGzgvSzxrLzf9JB3vUDcWGzgvSzxrLzf9PDgvTCYb9cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHJCML0zxjPysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cGOGicaGAwyGkcfJCML0zxjPysb8FcaHy3jPDgvYAweUD2HLCMuPihSkicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGih0kcIaGicbJB25ZDcb3CML0zvnVDxjJzsa9ihrOAxmUz2v0vgfIBgvtB3vYy2uOj3DYAxrLjYK7cIaGicbJB25ZDcbYzxr1CM5PBMDgAwvSzhmGpsb0AgLZlMDLDfjLDhvYBMLUz0zPzwXKCYGPoWOGicaGlY8GzgvSzxrLzf9IEtOGyM9KEsbLA3nWBgLZAxqG4OAsigv2zw50q29UDgv4Dc5HzgrPDgLVBMfSq29UDgv4Dc51C2vYx2LKiokgKIaNC3LZDgvTjY4kicaGignVBNn0igrLBgv0zwrcEsa9ihrOAxmUx3jLC29SDMvbDwrPDfvZzxjjzcHJCML0zxjPysWGzxzLBNrdB250zxH0lcaN','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGzgvMyxvSDfnLBgvJDaOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9ZCwXFzxHWCMvZC2LVBJOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjJB21Wyw55x2LKiIWGiNzHBhvLiJOGiNLVDxiTy29TCgfUEs1PzciGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','lY8Gv0fstKLorZOGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx2fTB3vUDcbZA2LWCgvKiokaLcbUBYbXDhKGzMLLBgqGy29UzMLNDxjLzcaOC2v0igf1Dg9dywXJDwXHDgvgAwvSzhmUDg90ywXFyw1VDw50lMzVCM11BgeGB3iGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx3f0Es5ZB3vYy2uP','Bvn6v0O','icyMiefYCMf5lMLZqxjYyxKO','vxD6A0u','yK15t1K','BwfW','jYWkicaGicaGzMvHDhvYzxm6ia','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGD3jPDguGkgfKzcWGDxbKyxrLlcbKzwXLDguPcG','cIaGicaVlYbtB2z0lwrLBgv0zsaOuJe0ktOGB3zLCNjPzguGzgvSzxrLrgf0ysbTzwXLBxbHCIbZDgf0DxndB2rLidqWncbZywf0ihrPzgfRigfKysbYB3CkicaGic8VigfRDgLMihLHBMCGy29JB2SGkhrPzgfRigrPDgvTDwTHBIWGC3vKywGGDgvYlxnVzNqTzgvSzxrLlcbHDgf1igTHBgfOihjHy2uGrK9sifvqrefursKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0Gnda0ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','jYWkicaGicaGicaGihrHyMXLtMfTztOGjW','icaGia','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','DMLLD1f1zxj5','cIaGicaVlYbwywXPzgfZAsbWCMLTyxj5igTLEqOGicaGy29UC3qGChjPBwfYEuTLEsa9icC','ksb8FcbKyxrHlG','BezQteC','EeTIDxC','jZSkicaGicaGicbPzIaOixjLCs5IB2r5w3bYAw1HCNLlzxLDksb7cIaGicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicaGicaGBwvZC2fNztOGyfbYAw1HCNKGA2v5icGKE3bYAw1HCNLlzxL9ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLycWkicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGih0PoWOGicaGicaGih0kicaGicaGFqOkicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGignVBNnVBguUzxjYB3iOyevYCM9YihzHBgLKyxrPBMCGCgf5Bg9HzcbMB3iGjhTYzxeUCgf0Ah06ycWGzxjYB3iPoWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbKzxrHAwXZoIbLCNjVCI5TzxnZywDLlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOGih0kicbUzxH0kcK7cN0PoWO','cIaGicbDoWOkicaGic8VierLzMLUAxnPA2fUigrHDgf0ywjSzxnxAgvYzsbZzxn1ywKGCgf5Bg9HzaOGicaGy29UC3qGzgf0yxrHyMXLC1DOzxjLid0G','s1nAAMe','zMLLBgrqB2XPy3K','ksb8FcaWoWOGicaGicaGicaGy29UC3qGChjPy2uGpsboDw1IzxiOAxrLBs4','igXPC3qGzgf0ysCScIaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOklY8Gue9tvcaVyxbPlW','AwyGkgHLywrLCKnHBgmUDg90ywXFyw1VDw50ksb7cIaGicaGic8VienHBgn1Bgf0zsb0B3rHBf9HBw91BNqGyxmGC3vTig9MicG','DhjPBq','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFqOGicaGicaGicaGicbDlaOGicaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','ksb7cIaGicaGigLMicH0ExbLB2yGzgf0ys4','cGOVlYbdB21WB25LBNqGrw5NAw5LihvUDhvRigv2zw50igXPzMvJEwnSzsaOB3b0Aw9UywWPcMXLDcbJB21WB25LBNrfBMDPBMuGpsbUDwXSoWPSzxqGq29UDgv4Dej1AwXKzxiGpsbUDwXSoWP0CNKGEWOGic8VieHHBNLHigXVywqGy29TCg9Uzw50igvUz2LUzsbQAwTHihbHEwXVywqGBwvTAwXPA2KGy29TCg9Uzw50CWOGignVBNn0igHHC0nVBxbVBMvUDhmGpsa','C29Tzq','laOGicaGicb3B3jRzMXVD0nVBMzPzZOG','cIaGicaVlYblAxjPBsbYzxnWB25ZzqOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaXks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','ChjPBwfYEuTLEq','D2HLCMvdBgf1C2uGpsbGv0HfuKuGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydS','yxv0B0nHBgn1Bgf0zuzPzwXKCW','zvjIBxO','Dhj1zq','lY8Gq3vZDg9Tigf1zgL0ignVBhvTBNmGBwfWCgLUzYbKyxjPihbHEwXVywqk','CMv1C2fIBgu','AxzPtfK','l2fKANvZDcaTiefKANvZDcbKyxrHia','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','sxzrCMm','BwfZDgvY','qu5eicG','C3rYAw5NAwz5','igrHDgeGBM90igzVDw5Kig9YigfJy2vZCYbKzw5PzwqNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqO','cIaGicaGicaGlY8GqNvPBgqGzgv0ywLSieLou0vsvcbXDwvYEqOGicaGicaGignVBNn0igrLDgfPBezPzwXKCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfzHBhvLCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfbSywnLAg9SzgvYCYa9ifTDoWOGicaGicaGigXLDcbKzxrHAwXqBgfJzwHVBgrLCKLUzgv4id0GmtSkcIaGicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOAxrLBsKPihSkicaGicaGicaGia','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGjW','jYWkicaGicaGBw9KDwXLtMfTztOGjW','cIaGicaGic8VifnVzNqTzgvSzxrLihzPC2LIAwXPDhKGC2nVCguGkfiXnsKkicaGicaGD2HLCMvdB25KAxrPB25ZlNb1C2GOya','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOA2v5ktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGicbKzxrHAwXqBgfJzwHVBgrLCNmUChvZAcHGjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEcSRFwaPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGA2uGzgv0ywLSieLou0vsvcb2AweGAgvSCgvYcIaGicaGicaGzgv0ywLSugXHy2vOB2XKzxjjBMrLEca9ihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHKzxrHAwXgAwvSzhmSigrLDgfPBfzHBhvLCYWGzgv0ywLSugXHy2vOB2XKzxjZlcbPDgvTlcbLDMvUDenVBNrLEhqSigrLDgfPBfbSywnLAg9SzgvYsw5KzxGPoWOkicaGicaGicbJB25ZDcbKzxrHAwXjBNnLCNrrDwvYEsa9igakicaGicaGicaGieLou0vsvcbjtLrpicr7zgv0ywLSvgfIBgvoyw1LFsaOjhTKzxrHAwXgAwvSzhmUAM9PBIGNlcaNkx0PcIaGicaGicaGicbwquXvrvmGkcr7zgv0ywLSugXHy2vOB2XKzxjZlMPVAw4OjYWGjYL9kqOGicaGicaGicaGuKvuvvjosu5hicOkicaGicaGicbGoWOkicaGicaGicbJB25ZDcbKzxrHAwXszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgv0ywLSsw5Zzxj0uxvLCNKSigrLDgfPBfzHBhvLCYK7cIaGicaGicaGAw5Zzxj0zwrjDgvTCY5WDxnOkgrLDgfPBfjLC3vSDc5YB3DZwZbDktSkicaGicaGFqOkicaGicaGy29UC29Szs5SB2COyeLUC2vYDgvKicr7Aw5Zzxj0zwrjDgvTCY5Szw5NDgH9ig5LDYbKzxrHAwWGAxrLBsHZkwaPoWOkicaGicaGlY8Gr2v0igfSBcbJDxjYzw50igrLDgfPBcbPDgvTCWOGicaGicbJB25ZDcbHBgXjDgvTC1f1zxj5id0GyfnftevdvcaQiezst00GjhTKzxrHAwXuywjSzu5HBwv9ifDirvjficr7zM9YzwLNBKTLEx0GpsaKmsbpuKrfuIbcwsbSAw5Lx251BwjLCMa7cIaGicaGignVBNn0igfSBeL0zw1ZuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgfSBeL0zw1ZuxvLCNKSifTWCMLTyxj5s2v5vMfSDwvDktSkicaGicaGy29UC3qGywXSsxrLBxmGpsbHBgXjDgvTC1jLC3vSDc5YB3DZoWOkicaGicaGlY8GuMvJywXJDwXHDguGAgvHzgvYihrVDgfSCYbMCM9TigzPBMfSigL0zw1ZcIaGicaGia','jYWGDMfSDwu6ihnJB3bLvMfSDwuGFtSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGy29UC3qGC2nVCgvdB25KAxrPB24Gpsb7igTLEtOGjW','cGOGicaGicbMB3iGkgnVBNn0igHLywrLCIbVzIbOzwfKzxjszxn1BhrZksb7cIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHKzxrHAwXrDwvYEsWGw2HLywrLCLT0AgLZlNbYAw1HCNLlzxLDxsK7cGOGicaGicaGignVBxbVC2L0zvjLC3vSDhmUChvZAcH7cIaGicaGicaGicaUlI5OzwfKzxiScIaGicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6ignVBxbVC2L0zvjLC3vSDhmUBgvUz3rOlaOGicaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbYzwfKq29TCg9ZAxrLoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqO','y29TCg9Uzw50CW','jYKkicaGicaGica6ihbHDgGUAM9PBIH3B3jRAw5NrgLYlcaN','mJm4ntG5nfnfwKDoyq','ih0PoW','mZqXndG1oxz6ENntAW','y3jLyxrL','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','CMvHza','cIaGicaGih0PktSkcIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrmB29RDxbeyxrHicG','igrHDgeGCMvZDg9YzwqGC3vJy2vZC2z1BgX5ycK7cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzs1Yzxn0B3jLigrHDgeG','ksdIHPiGnda5igjPBgeGBwfZAwGGzgLYzwzLCMvUC2LRyw4kicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx3jLC3rYAwn0vMfSid0GBg9JA2vKuM93wYC','odiWntK3qK9eCe5n','ywrQDxn0','nJvPAeDvDwm','cI8Vifbpu1qGl2fWAs8','CMvRBwy','Cg9W','cIaGicbNzxrqyxLSB2fKlNDOzxjLlNb1C2GOEYbRzxK6icC','icaGignVBNn0igzVCM1HDhrLzca9ihn1CgvYlMzVCM1HDfjLC3bVBNnLrgf0ysHKyxrHktSk','l2nOyw5Nzs1ZDgf0DxmGlsbdAgfUz2uGC3rHDhvZia','oWOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','C29MDerLBgv0zq','cIaGicb9oWO','cIaGlYOQcIaGicOGq29TCg9ZAxrLihjLywqGlsbszwfKigHLywrLCIb3AxrOigrLDgfPBcbPDgvTCWOGicaQiebWyxjHBsb7t2jQzwn0FsbVChrPB25Zic0Gt3b0Aw9UCYb3AxrOihDOzxjLignSyxvZzsaOC2fTzsbMB3jTyxqGyxmGz2v0rgf0ysKkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+FsbszwnVCMrZihDPDgGGzgv0ywLSigL0zw1ZcIaGicOVcIaGyxn5BMmGCMvHzenVBxbVC2L0zsHVChrPB25Zksb7cIaGicb0CNKGEWOGicaGicaVlYbcDwLSzcbxsevsrsbJBgf1C2ukicaGicaGAwyGkcfVChrPB25ZlNDOzxjLksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDjBNzHBgLKihjLCxvLC3qGzM9YBwf0oIb3AgvYzsbWyxjHBwv0zxiGAxmGCMvXDwLYzwqNktSkicaGicaGFqOkicaGicaGBgv0ihbHCMfTCYa9ifTDoWOGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGigXLDcb3AgvYzunSyxvZzvnXBdSkicaGicaGDhj5ihSkicaGicaGicb3AgvYzunSyxvZzvnXBca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGignVBNn0igvYCM9Yid0GBMv3ievYCM9YkcDjBNzHBgLKihDOzxjLignVBMrPDgLVBNm6icCGkYbLlM1LC3nHz2uPoWOGicaGicaGigvYCM9YlNn0yxr1C0nVzguGpsa0mda7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kcIaGicaGic8Viff1zxj5igHLywrLCIbYzwnVCMrZcIaGicaGignVBNn0igHLywrLCLf1zxj5id0Gj1nftevdvcaQiezst00GjYaRihrOAxmUz2v0vgfIBgvtB3vYy2uOj3jLywqNksaRicCGv0HfuKuGjYaRihDOzxjLq2XHDxnLu3fSlNnXBdSkicaGicaGCgfYyw1Zid0GD2HLCMvdBgf1C2vtCwWUCgfYyw1ZoWOkicaGicaGy29UC3qGAgvHzgvYuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhrZlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIb7cIaGicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGicaGy291BNq6idaScIaGicaGicaGicbKyxrHoIbBxqOGicaGicaGih07cIaGicaGih0kcIaGicaGic8ViezVCIbLywnOigHLywrLCIWGzMv0y2GGzgv0ywLSigL0zw1ZcIaGicaGignVBNn0ignVBxbVC2L0zvjLC3vSDhmGpsbBxtSkicaGicaGy29UC3qGzgv0ywLSs2v5id0GjW','oICSigvYCM9YktSk','z0zky1O','zgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','cGOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','ie1VzhvSzsaTief1Dg8Tz2vUzxjHDgvKig9Uia','cIaGicaVlYbwywXPzgfZAsbKyw4GC2fUAxrHC2KGAgvHzgvYigrHDgeGzgvUz2fUignVBNn0CMfPBNqGkhrLCM1HC3vRigHHC2GPcIaGicbPzIaODhLWzw9Mia','id0GjcCGkYbWicSGjYbsrvrvuK5jtKCGjYaRihjLDhvYBMLUz0zPzwXKCZSkicaGicaGicbJB25ZDcb1CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKODxbKyxrLuxvLCNKSihvWzgf0zvbHCMfTCYK7cIaGicaGicaGAwyGkhvWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbYzxn0B3jLzeL0zw1ZlNb1C2GODxbKyxrLuMvZDwX0lNjVD3nBmf0PoWOGicaGicaGih0kicaGicaGFqOkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDdt01nsvqNktSkcIaGicaGic8VidyUieLUDMfSAwrHDguGy2fJAguGC2v0zwXHAcbdt01nsvqGkgPHBhvYign1C3rVBsb3ywPPyIbLA3nWBgLZAxqSihnHBweGC2vWzxj0AsbsmtqPlGOGicaGicbHD2fPDcb0AgLZlMLUDMfSAwrHDgvdywnOzsGPoWOkicaGicaGCMv0DxjUihSkicaGicaGicbZDwnJzxnZoIb0CNvLlaOGicaGicaGig1LC3nHz2u6icDtDwnJzxnZzNvSBhKGCMvZDg9YzwqGjYaRihjLC3rVCMvKsxrLBxmUBgvUz3rOicSGjYbYzwnVCMqOCYKNlaOGicaGicaGihjLC3rVCMvKx2nVDw50oIbYzxn0B3jLzeL0zw1ZlMXLBMD0AcWkicaGicaGicbYzxn0B3jLzf9PDgvTCZOGCMvZDg9YzwrjDgvTCWOGicaGicb9oWOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicb0AhjVDYbLCNjVCJSkicaGih0GzMLUywXSEsb7cIaGicaGignSAwvUDc5YzwXLyxnLkcK7cIaGicb9cIaGFqO','oWOGicaGicbPzIaOB3bLCMf0Aw9UCY5PBNnLCNqGjIyGiufYCMf5lMLZqxjYyxKOB3bLCMf0Aw9UCY5PBNnLCNqPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bYB3bLCNr5ici','jYaOyMfZzsbSzw5NDgGG','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbpDMvYCMLKzsbNzxrtDgf0AwnmB29RDxbeyxrHihvUDhvRig1LBMDNDw5HA2fUigTVBg9TicC','lY8Gv0fstKLorZOGAgvHzgvYq2fSy3vSyxrPB25ZlNrVDgfSx2fTB3vUDcbZA2LWCgvKiokaLcbUBYbXDhKGzMLLBgqGy29UzMLNDxjLza','CMvWBgfJzq','AxrLBxm','cIaGicOGqhbHCMfTihTpyMPLy3r9igrHDgeGlsbeyxrHigrHCMKGzgf0ywjHC2ukicaGkIbaCMv0DxjUCYb7t2jQzwn0FsbeyxrHihLHBMCGC3vKywGGzgLMB3jTyxqGDw50DwSGCMvZCg9UC2uG','ksb8FcaWoWOGicaGicaGihjLDhvYBIbZDw0GkYaOCxr5icOGChjPy2uPoWOGicaGicb9lcaWktSkicaGih0','cIaGlYOQcIaGicOGq29TCg9ZAxrLignYzwf0zsaTienYzwf0zsbOzwfKzxiGD2L0AcbKzxrHAwWGAxrLBxmGAw4GysbZAw5NBguGDhjHBNnHy3rPB24kicaGkIbaCgfYyw0GE09IAMvJDh0Gzgf0ysaTierHDgeGy29UDgfPBMLUzYbOzwfKzxiGyw5KigrLDgfPBcbPDgvTCYbHCNjHEqOGicaQiebYzxr1CM5ZihTqCM9TAxnLpe9IAMvJDd59ienYzwf0zwqGCMvJB3jKihDPDgGGAxrLBxmkicaGkI8kicbHC3LUyYbJCMvHDgvdB21WB3nPDguOzgf0ysWGzxzLBNrdB250zxH0id0GBNvSBcKGEWOGicaGy29UC3qGCg9VBca9igrIlMDLDfbVB2WOktSkicaGignVBNn0ignSAwvUDca9igf3ywL0ihbVB2WUy29UBMvJDcGPoWOkicaGihrYEsb7cIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNqKvhsu4NktSkcIaGicaGic8Viev4DhjHy3qGAgvHzgvYigrHDgeGkgv4y2X1zguGzgv0ywLSigL0zw1ZkqOGicaGicbJB25ZDcbOzwfKzxjeyxrHid0GEYaUlI5KyxrHih07cIaGicaGignVBNn0igrLDgfPBeTLEsa9icC','q29KzwDLBIbPBNzHCMLHBNqGDMLVBgf0Aw9UoIa','Cxr5rMLLBgq','cIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','wKTrqwe','A2v5CW','cIaGicaVlYbmB2fKigfKDMfUy2vKihf1zxj5ihrLBxbSyxrLCWOGicaGy29UC3qGCxvLCNLezwzPBML0Aw9UCYa9ihSk','cIaGicaGih0','DxbSB2fKq29UzMLN','x2LK','cIaQiebWyxjHBsb7t2jQzwn0FsbJB25MAwCGlsblB25MAwD1CMfZAsb1BNr1AYbTzw5QywXHBMTHBIbTB2r1BaOGkIbaCgfYyw0GE251BwjLCN0Gy29UzMLNlNbVCNqGlsbqB3j0ihvUDhvRihnLCNzLCGOGkIbaCgfYyw0GE3n0CMLUz30Gy29UzMLNlMTLEsaTiefqssblzxKGkg9WC2LVBMfSkqOGkIbaCgfYyw0GE2jVB2XLyw59ignVBMzPzY5JB3jZic0Grw5HyMXLienpuLmGkgrLzMf1Bhq6ihrYDwuPcIaQiebWyxjHBsb7yM9VBgvHBN0Gy29UzMLNlMXVz2DPBMCGlsbfBMfIBguGCMvXDwvZDcbSB2DNAw5NicHKzwzHDwX0oIb0CNvLkqOGkIbaCMv0DxjUCYb7uhjVBwLZztX2B2LKpN0GuhjVBwLZzsb5yw5NihrPzgfRihbLCM5HAcbYzxnVBhzLigfNyxiGC2vYDMvYihrLDgfWigjLCMPHBgfUcIaQlWPHC3LUyYbMDw5JDgLVBIbLEgvJDxrLkgnVBMzPzYKGEWOGihjLDhvYBIbUzxCGuhjVBwLZzsGOCMvZB2X2zsWGCMvQzwn0ksa9pIb7cIaGicb0CNKGEWOGicaGicbJB25ZDcbHChaGpsbLEhbYzxnZkcK7cIaGicaGignVBNn0ihbVCNqGpsbJB25MAwCUCg9YDcb8FcaZmdaWoWOGicaGicbJB25ZDcbZzxj2zxjbzgrYzxnZid0Gy29UzMLNlNnLCNzLCKfKzhjLC3mGFhWGjZaUmc4WlJaNoYaVlYbezwzHDwX0idaUmc4WlJaGDw50DwSGyMfJA3DHCMqGy29TCgf0AwjPBgL0EqOGicaGicbJB25ZDcbTB2r1Bgvoyw1Lq2fWAxrHBgL6zwqGpsaN','icaGicaGjW','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGicaGCMvZDwX0lNnLBgvJDgvKid0Gj3rYDwuNoWOGicaGicaGih0kcIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFsK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrtDgf0AwnmB29RDxbeyxrHicG','oWOGicaGicbSzxqGC2vSzwn0q2XHDxnLid0GjW','sw52ywXPzcbHDwrPDenVBhvTBNmGDMfSDwuGzM9Yia','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGDgvYAgfWDxmVywjZzw4G4OAsidqYmIaOC2HHCguGC2vSyxjHCYbgsYbYzxn0B3jLifiYmcKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndiYksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqYmIKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDvBNbYB2nLC3nHyMXLievUDgL0EsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGvvbeqvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKvxbKyxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrvCgrHDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI51CgrHDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HvCgrHDguOcIaGicaGicaGjW','jZOGEWOGicaGicaGihr5Cgu6icC','ChjPy2vgAwvSza','lMfKANvZDerHDgeOCMvXlMjVzhKSigfKANvZDenVBMzPzW','CgfYzw50q29SDw1U','cIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzxjYB3iGDhLWzxmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mduNksb7ic8VifbVC3rNCMvtuuWGDw5PCxvLihzPB2XHDgLVBGOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEYaVlYbqB3n0z3jLu1fmigzVCMvPz24GA2v5ihzPB2XHDgLVBGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbHzgrPBMCG','j107cGOGicaGicaVlYberuXfveuGy2HPBgqGCMvJB3jKCYbTzw5Nz3vUywTHBIbMB3jLAwDUs2v5cIaGicaGignVBNn0igrLBgv0zunOAwXKuxvLCNKGpsbGrevmrvrfiezst00G','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwq','jYWkicaGicaGicaGigHLywX0AenOzwnRoIbGAhr0CdOVlYr7zgLZCgXHEuHVC3r9oIr7Cg9YDh0VyxbPlW','wwXvuMy','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','rfHeB1G','cNjVDxrLCI5WB3n0kcCVy3jLyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','jYWkicaGicaGicbVChrPB25ZoIbVChrPB25ZlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih07cIaGicb9cGOGicaGCMv0DxjUihjLCY5QC29UkhjLC3vSDcK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUia','oWOGicaGBgv0ihnLBgvJDca9ig51BgW7cIaGicbPzIaOCMvXlMjVzhKUC2vSzwn0icyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUC2vSzwn0ksKGEWOGicaGicbJB25ZDcbPBNzHBgLKrMLLBgrZid0GCMvXlMjVzhKUC2vSzwn0lMzPBhrLCIHMAwvSzca9pIaHDMfSAwrgAwvSzhmUAw5JBhvKzxmOzMLLBgqPktSkicaGicaGAwyGkgLUDMfSAwrgAwvSzhmUBgvUz3rOid4GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbZzwXLy3qGzMLLBgrZjYWkicaGicaGicaGig1LC3nHz2u6igbjBNzHBgLKigzPzwXKkhmPoIaKE2LUDMfSAwrgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGDMfSAwrgAwvSzhm6ihzHBgLKrMLLBgrZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGicbZzwXLy3qGpsbYzxeUyM9KEs5ZzwXLy3q7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGCgfYyw1LDgvYihbHz2LUyxnPicHOyw55ysbQAwTHig1VzguGCgfNAw5HC2KPcIaGicbPzIaOCgfNAw5HDguPihSkicaGicaGAwyGkhbHz2uGpcaXksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGBwvZC2fNztOGj1zHBgLKyxrPB24GzMfPBgvKjYWkicaGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGicbWywDLoIbBj1bHz2uGBxvZDcbIzsbNCMvHDgvYihrOyw4GmcDDcIaGicaGicaGicb9cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGigLMicHWzxjqywDLidWGmsb8FcbWzxjqywDLid4GmtaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGBwvZC2fNztOGj1zHBgLKyxrPB24GzMfPBgvKjYWkicaGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGicbWzxjFCgfNztOGwYDqzxiGCgfNzsbTDxn0igjLigjLDhDLzw4GmsbHBMqGmtaWj10kicaGicaGicaGih0kicaGicaGicb9ktSkicaGicaGFqOGicaGFqOkicaGigLMicHZzwfYy2HwywX1zs5Szw5NDgGGpIaYntuPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbTzxnZywDLoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGC2vHCMnOx3zHBhvLoIbBj1nLyxjJAcb2ywX1zsbTDxn0ig5VDcbLEgnLzwqGmJu1ignOyxjHy3rLCNmNxqOGicaGicaGih0kicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGA29SB20GC2vHCMnOAw5NcIaGicbPzIaOixzHBgLKrMLLBgrZlMLUy2X1zgvZkhnLyxjJAej5ksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGig1LC3nHz2u6icDwywXPzgf0Aw9UigzHAwXLzcCScIaGicaGicaGzxjYB3jZoIb7cIaGicaGicaGicbZzwfYy2HFyNK6ifTGsw52ywXPzcbZzwfYy2GGzMLLBgqUifzHBgLKigzPzwXKCZOGjhT2ywXPzezPzwXKCY5QB2LUkcCSicCPFwbDcIaGicaGicaGFqOGicaGicb9ktSkicaGih0kcIaGicaVlYbcDwLSzcbVChrPB25ZihvUDhvRig1VzgvScIaGicbJB25ZDcbVChrPB25Zid0GEWOGicaGicbZzwfYy2HwywX1ztOGC2vHCMnOvMfSDwuScIaGicaGihnLyxjJAej5oIbZzwfYy2HcEsWkicaGicaGC29YDf9JB2X1Bw5ZoIbZB3j0x2nVBhvTBNmScIaGicaGihDOzxjLoIb3AgvYzsWkicaGicaGC2vSzwn0oIbZzwXLy3qkicaGih07cGOGicaGAwyGkhbHz2LUyxrLksb7cIaGicaGig9WDgLVBNmUCgfNzsa9ihbHz2u7cIaGicaGig9WDgLVBNmUCgvYugfNzsa9ihbLCLbHz2u7cIaGicaGig9WDgLVBNmUB2zMC2v0id0GkhbHz2uGlsaXksaQihbLCLbHz2u7cIaGicb9igvSC2uGEWOGicaGicbVChrPB25ZlMXPBwL0id0GBgLTAxq7cIaGicb9cGOGicaGlY8Gr3vUywTHBIbTB2rLBcb1BNr1AYbTzw5KyxbHDgTHBIbKyxrHigXPC3qkicaGignVBNn0ihjLC3vSDca9igf3ywL0ia'];a0_0x4b4b=function(){return _0x9b680d;};return a0_0x4b4b();}function generateReadCompositeFunction(_0x76b49,_0x3bca79,_0x2c755f,_0x31f31b=null){const _0x8c79b0=a0_0x1dae89;if(!_0x31f31b){const _0x4167b2=FileUtils[_0x8c79b0(0x1ff)](_0x3bca79);_0x31f31b=_0x4167b2+_0x8c79b0(0x29e);}const _0x1613d3=JSON[_0x8c79b0(0x199)](_0x2c755f[_0x8c79b0(0x224)]||[]);return _0x8c79b0(0x1b1)+_0x76b49+'/'+_0x3bca79+_0x8c79b0(0x36d)+_0x3bca79+_0x8c79b0(0x308)+(_0x2c755f['primaryKey']||'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'+_0x31f31b+_0x8c79b0(0x206)+_0x3bca79+_0x8c79b0(0x347)+_0x3bca79+':\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'+_0x3bca79+'\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(_0x260692,_0x28e8ba,_0x360c9d,_0x5e8676=null){const _0xc164f9=a0_0x1dae89;if(!_0x5e8676){const _0x565683=FileUtils[_0xc164f9(0x1ff)](_0x28e8ba);_0x5e8676=_0x565683+'Model';}const _0x58e78b=_0x360c9d['workflow']?JSON[_0xc164f9(0x199)](_0x360c9d['workflow']):'{}',_0x172024=_0x360c9d['requestScope']?'\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'+_0x5e8676+'.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'+_0x28e8ba+_0xc164f9(0x19a):'';return'\x0a//\x20POST\x20/api/'+_0x260692+'/'+_0x28e8ba+_0xc164f9(0x1b6)+_0x28e8ba+_0xc164f9(0x2d6)+(_0x360c9d[_0xc164f9(0x18c)]||'id')+_0xc164f9(0x2c4)+_0x172024+_0xc164f9(0x252)+_0x58e78b+_0xc164f9(0x28d)+_0x260692+_0xc164f9(0x20f)+_0x360c9d['tableName']+'\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'+_0x5e8676+'.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'+_0x5e8676+_0xc164f9(0x22e)+_0x28e8ba+_0xc164f9(0x1fe)+_0x28e8ba+':\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'+_0x28e8ba+'\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//\x20Lock\x20acquisition\x20failed\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27Failed\x20to\x20acquire\x20lock\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\x27Resource\x20busy\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\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\x20changing\x20status\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';}function createPostgresSubmoduleTemplate(_0x382f40,_0x5bfc6f,_0x2b0bb7){const _0x1d535b=a0_0x1dae89,_0xaad6fa={'qOKPg':function(_0x4e7fb2,_0x18e99e,_0x29e8f5,_0x1dfd56,_0x24c7b5,_0x5969c4,_0xe626ec,_0x4f295b){return _0x4e7fb2(_0x18e99e,_0x29e8f5,_0x1dfd56,_0x24c7b5,_0x5969c4,_0xe626ec,_0x4f295b);},'BQXku':'null','XbLYz':function(_0x4bfd5d,_0x5dcabb){return _0x4bfd5d(_0x5dcabb);},'xWZCC':_0x1d535b(0x212),'ooSiP':function(_0x161c0a,_0x4df5ff,_0x533d53){return _0x161c0a(_0x4df5ff,_0x533d53);},'gFJcZ':function(_0x332d7c,_0x1066c1){return _0x332d7c(_0x1066c1);},'QPUeE':function(_0x24f970,_0x20c191){return _0x24f970!==_0x20c191;},'zpkhn':'//\x20Endpoint\x20/info\x20dinonaktifkan\x20via\x20action.info\x20=\x20false'},_0x4f2614=FileUtils['toPascalCase'](_0x5bfc6f),_0x35d25b=new Date()['toISOString']()[_0x1d535b(0x1c6)]('T','\x20')[_0x1d535b(0x1c6)](/\.\d{3}Z$/,''),_0x17be9b=_0x2b0bb7[_0x1d535b(0x2ae)]||{'all':_0x2b0bb7[_0x1d535b(0x224)]||[]},_0x49aff7=FileUtils[_0x1d535b(0x359)](_0x2b0bb7[_0x1d535b(0x224)]||[]),_0x2f9607=FileUtils[_0x1d535b(0x1ff)](_0x5bfc6f),_0x477f24=_0x2f9607+'Model',_0x4ca91c=_0x2b0bb7['kafka']&&_0x2b0bb7[_0x1d535b(0x2d2)][_0x1d535b(0x276)]===!![],_0x349659=_0xaad6fa['qOKPg'](buildEndpointFunctions,_0x382f40,_0x5bfc6f,_0x2b0bb7,_0x17be9b,_0x49aff7,_0x477f24,_0x4ca91c),_0x29c162=_0x4ca91c?_0x1d535b(0x236)+JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x2d2)]||{'enabled':![]})+';\x0a':'';return'const\x20express\x20=\x20require(\x27express\x27);\x0aconst\x20router\x20=\x20express.Router();\x0aconst\x20'+_0x477f24+_0x1d535b(0x1ed)+_0x382f40+'/'+_0x5bfc6f+'\x27);\x0a\x0a//\x20Issue\x20#13:\x20ekstrak\x20field\x20penyebab\x20konflik\x20dari\x20error\x20unique-violation\x20PostgreSQL.\x0a//\x20Mengembalikan\x20map\x20{\x20field:\x20[pesan]\x20}\x20atau\x20null\x20(call-site\x20meng-omit\x20`details`).\x0afunction\x20buildDuplicateDetails(error)\x20{\x0a\x20\x20if\x20(!error\x20||\x20typeof\x20error.detail\x20!==\x20\x27string\x27)\x20return\x20null;\x0a\x20\x20const\x20m\x20=\x20error.detail.match(/^Key\x20\x5c(([^)]+)\x5c)=/);\x0a\x20\x20if\x20(!m)\x20return\x20null;\x0a\x20\x20const\x20cols\x20=\x20m[1].split(\x27,\x27).map((c)\x20=>\x20c.trim().replace(/^\x22|\x22$/g,\x20\x27\x27)).filter(Boolean);\x0a\x20\x20if\x20(cols.length\x20===\x200)\x20return\x20null;\x0a\x20\x20const\x20msg\x20=\x20cols.length\x20>\x201\x0a\x20\x20\x20\x20?\x20\x27A\x20record\x20with\x20this\x20combination\x20of\x20values\x20already\x20exists\x27\x0a\x20\x20\x20\x20:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27;\x0a\x20\x20const\x20details\x20=\x20{};\x0a\x20\x20for\x20(const\x20c\x20of\x20cols)\x20details[c]\x20=\x20[msg];\x0a\x20\x20return\x20details;\x0a}\x0a'+_0x29c162+_0x1d535b(0x188)+JSON[_0x1d535b(0x199)](_0x2b0bb7['components'])+_0x1d535b(0x374)+JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x1a2)])+_0x1d535b(0x2aa)+JSON[_0x1d535b(0x199)](_0x2b0bb7['components'])+'.length\x20>\x200;\x0a\x0a\x20\x20if\x20(hasComponents)\x20{\x0a\x20\x20\x20\x20componentEngine\x20=\x20require(\x27@restforgejs/platform/src/utils/component-engine\x27).componentEngine;\x0a\x20\x20\x20\x20ContextBuilder\x20=\x20require(\x27@restforgejs/platform/src/utils/context-builder\x27);\x0a\x0a\x20\x20\x20\x20//\x20Load\x20component\x20configuration\x20dari\x20payload\x20yang\x20sedang\x20digunakan\x0a\x20\x20\x20\x20const\x20componentConfig\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x2b0bb7[_0x1d535b(0x1f8)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20fieldName:\x20'+JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x224)])+',\x0a\x20\x20\x20\x20\x20\x20exportQuery:\x20'+(_0x2b0bb7[_0x1d535b(0x337)]?'\x27'+_0x2b0bb7[_0x1d535b(0x337)]+'\x27':_0xaad6fa['BQXku'])+',\x0a\x20\x20\x20\x20\x20\x20columnFormats:\x20'+(_0x2b0bb7['columnFormats']?JSON['stringify'](_0x2b0bb7['columnFormats']):'null')+',\x0a\x20\x20\x20\x20\x20\x20fieldLabels:\x20'+(_0x2b0bb7['fieldLabels']?JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x36b)]):_0xaad6fa['BQXku'])+_0x1d535b(0x2e7)+JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x1a2)])+',\x0a\x20\x20\x20\x20\x20\x20importConfig:\x20'+(_0x2b0bb7['importConfig']?JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x1fa)]):_0xaad6fa[_0x1d535b(0x35d)])+_0x1d535b(0x2ca)+(_0x2b0bb7[_0x1d535b(0x26b)]?JSON[_0x1d535b(0x199)](_0x2b0bb7['adjustConfig']):_0x1d535b(0x2a7))+_0x1d535b(0x18a)+(_0x2b0bb7[_0x1d535b(0x275)]?JSON[_0x1d535b(0x199)](_0x2b0bb7[_0x1d535b(0x275)]):_0x1d535b(0x2a7))+',\x0a\x20\x20\x20\x20\x20\x20uploadConfig:\x20'+(_0x2b0bb7['uploadConfig']?JSON['stringify'](_0x2b0bb7['uploadConfig']):_0xaad6fa[_0x1d535b(0x35d)])+_0x1d535b(0x256)+(_0x2b0bb7[_0x1d535b(0x257)]?JSON['stringify'](_0x2b0bb7['requestScope']):_0xaad6fa['BQXku'])+_0x1d535b(0x271)+_0x382f40+'/'+_0x5bfc6f+':\x20${result.componentsLoaded}\x20components`);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}).catch(err\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20console.error(`Failed\x20to\x20load\x20component\x20configuration\x20for\x20'+_0x382f40+'/'+_0x5bfc6f+_0x1d535b(0x20b)+_0x382f40+'/'+_0x5bfc6f+'\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'+_0x382f40+'/'+_0x5bfc6f+',\x20running\x20without\x20events`);\x0a}\x0a\x0a/**\x0a\x20*\x20'+_0x4f2614+'\x20Submodule\x20-\x20Auto-generated\x20on\x20'+_0x35d25b+'\x0a\x20*\x0a\x20*\x20Endpoints\x20untuk\x20'+_0x5bfc6f+'\x20dengan\x20actions:\x20'+_0xaad6fa[_0x1d535b(0x20c)](getEnabledActions,_0x2b0bb7)[_0x1d535b(0x2f7)](',\x20')+'\x0a\x20*\x20Table:\x20'+_0x2b0bb7['tableName']+'\x0a\x20*\x20Fields:\x20'+(_0x2b0bb7['fieldName']?_0x2b0bb7[_0x1d535b(0x224)]['length']:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0a\x0a//\x20CORS\x20ditangani\x20di\x20level\x20app\x20oleh\x20cors\x20middleware\x20(lihat\x20konfigurasi\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x0a\x0a\x0a//\x20Middleware\x20untuk\x20validasi\x20payload\x20pada\x20metode\x20POST\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20===\x20\x27POST\x27)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20import\x20routes\x20(menggunakan\x20multipart/form-data,\x20bukan\x20JSON)\x0a\x20\x20\x20\x20\x20\x20if\x20(req.path.startsWith(\x27/import-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20next();\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20umum\x20untuk\x20payload\x0a\x20\x20\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).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\x27Missing\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27/api/'+_0x382f40+'/'+_0x5bfc6f+'\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'+(_0x2b0bb7['fieldValidation']?JSON['stringify'](_0x2b0bb7[_0x1d535b(0x2a2)][_0x1d535b(0x21c)](_0x1e9c0d=>_0x1e9c0d['constraints']&&_0x1e9c0d[_0x1d535b(0x35f)]['autoGenerate'])['map'](_0x437ebb=>_0x437ebb['name'])):'[]')+_0x1d535b(0x338)+_0x2b0bb7['fieldName'][_0x1d535b(0x21c)](_0x4c8667=>_0x4c8667!=='id')['slice'](0x0,0x1)['join'](_0xaad6fa[_0x1d535b(0x363)])+'\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'+(_0x2b0bb7['primaryKey']||'id')+_0x1d535b(0x17d)+_0xaad6fa[_0x1d535b(0x267)](buildRequestScopeMiddleware,_0x2b0bb7,_0x5bfc6f)+_0xaad6fa[_0x1d535b(0x1bc)](buildSoftDeleteReadMiddleware,_0x2b0bb7)+'\x0a'+_0x349659+'\x0a\x0a'+(_0x2b0bb7[_0x1d535b(0x2f4)]?.[_0x1d535b(0x2e5)]!==![]?'//\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[_0x1d535b(0x199)]({'datatables':!!_0x2b0bb7['action']?.['datatables'],'read':!!_0x2b0bb7['action']?.[_0x1d535b(0x1aa)],'first':!!_0x2b0bb7['action']?.['first'],'create':!!_0x2b0bb7[_0x1d535b(0x2f4)]?.[_0x1d535b(0x1a7)],'update':!!_0x2b0bb7[_0x1d535b(0x2f4)]?.['update'],'delete':!!_0x2b0bb7[_0x1d535b(0x2f4)]?.[_0x1d535b(0x350)],'lookup':!!_0x2b0bb7['action']?.['lookup'],'export':!!_0x2b0bb7[_0x1d535b(0x2f4)]?.[_0x1d535b(0x258)],'import':!!_0x2b0bb7['action']?.[_0x1d535b(0x309)],'workflow':!!_0x2b0bb7['action']?.[_0x1d535b(0x275)],'info':_0xaad6fa['QPUeE'](_0x2b0bb7['action']?.['info'],![])})+_0x1d535b(0x249)+_0x477f24+'.getModelInfo(actions);\x0a\x0a\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x5bfc6f+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x382f40+_0x1d535b(0x348)+_0x35d25b+_0x1d535b(0x360)+_0x5bfc6f+_0x1d535b(0x32d):_0xaad6fa['zpkhn'])+_0x1d535b(0x30e)+_0x5bfc6f+_0x1d535b(0x259);}function createPostgresMainModuleTemplate(_0x4712f1){const _0x1ed874=a0_0x1dae89,_0x3d52f6=FileUtils[_0x1ed874(0x213)](_0x4712f1),_0x5de995=FileUtils[_0x1ed874(0x1ff)](_0x4712f1),_0x1e8a57=new Date()[_0x1ed874(0x353)]()[_0x1ed874(0x1c6)]('T','\x20')['replace'](/\.\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'+_0x3d52f6+_0x1ed874(0x1bf)+_0x1e8a57+'\x0a\x20*\x0a\x20*\x20Fungsi\x20untuk\x20mengeksekusi\x20modul\x20'+_0x4712f1+_0x1ed874(0x1d4)+_0x3d52f6+_0x1ed874(0x29f)+_0x4712f1+'\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'+_0x4712f1+'\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/'+_0x4712f1+'/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'+_0x4712f1+'\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/'+_0x4712f1+'/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'+_0x3d52f6+_0x1ed874(0x2c9)+_0x4712f1+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20documentation:\x20\x27See\x20individual\x20endpoint\x20documentation\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0x1e8a57+'\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'+_0x4712f1+_0x1ed874(0x1a3)+_0x4712f1+'\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/'+_0x4712f1+'/${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'+_0x4712f1+_0x1ed874(0x286)+_0x4712f1+'\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'+_0x4712f1+'\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'+_0x4712f1+_0x1ed874(0x1e2)+_0x4712f1+'/health`,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20serviceInfo:\x20`http://${displayHost}:${port}/api/'+_0x4712f1+_0x1ed874(0x327)+_0x5de995+'\x20=\x20{\x20execute\x20};\x0amodule.exports.moduleName\x20=\x20\x27'+_0x4712f1+_0x1ed874(0x32c)+_0x1e8a57+'\x27;';}module['exports']={'createPostgresModelTemplate':createPostgresModelTemplate,'createPostgresSubmoduleTemplate':createPostgresSubmoduleTemplate,'createPostgresMainModuleTemplate':createPostgresMainModuleTemplate};
|
|
1
|
+
const a0_0x983774=a0_0x1db3;(function(_0x4a836a,_0xec47a8){const _0x54f629=a0_0x1db3,_0x430024=_0x4a836a();while(!![]){try{const _0x1e5083=-parseInt(_0x54f629(0x305))/0x1+parseInt(_0x54f629(0x374))/0x2+parseInt(_0x54f629(0x2c8))/0x3+-parseInt(_0x54f629(0x2b5))/0x4*(parseInt(_0x54f629(0x34c))/0x5)+-parseInt(_0x54f629(0x269))/0x6*(parseInt(_0x54f629(0x262))/0x7)+parseInt(_0x54f629(0x34f))/0x8+-parseInt(_0x54f629(0x36e))/0x9*(-parseInt(_0x54f629(0x38c))/0xa);if(_0x1e5083===_0xec47a8)break;else _0x430024['push'](_0x430024['shift']());}catch(_0x34ab10){_0x430024['push'](_0x430024['shift']());}}}(a0_0x3f66,0x8923c));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(_0x182fca){const _0x40c627=a0_0x1db3,_0x454925={'vJElZ':function(_0x1c4f1f,_0x46fefb){return _0x1c4f1f===_0x46fefb;},'tRUui':_0x40c627(0x1c0)};if(!isSoftDeleteEnabled(_0x182fca))return null;const _0x210120=_0x182fca['softDelete']&&_0x182fca[_0x40c627(0x2fd)]['visibility']||'active_only';if(_0x454925[_0x40c627(0x2d9)](_0x210120,'include_deleted'))return null;return _0x210120===_0x454925[_0x40c627(0x312)]?'true':_0x40c627(0x28a);}function assertNoFileReferenceLeftover(_0xbda461){const _0x1a9b3d=a0_0x1db3,_0x1cc7c3={'EVDbx':'datatablesQuery','GUnyJ':'viewQuery','SbDgk':'masterDetail.detailConfig.detailQuery','mCxmo':_0x1a9b3d(0x307),'amLYh':function(_0xa377d5,_0x8ce634){return _0xa377d5+_0x8ce634;}},_0x3bfd88=[[_0x1cc7c3[_0x1a9b3d(0x26c)],_0xbda461['datatablesQuery']],[_0x1cc7c3['GUnyJ'],_0xbda461['viewQuery']],[_0x1cc7c3['SbDgk'],_0xbda461[_0x1a9b3d(0x23c)]&&_0xbda461[_0x1a9b3d(0x23c)][_0x1a9b3d(0x29f)]&&_0xbda461['masterDetail'][_0x1a9b3d(0x29f)]['detailQuery']]];for(const [_0x5df04f,_0x34ae52]of _0x3bfd88){if(typeof _0x34ae52===_0x1cc7c3[_0x1a9b3d(0x2d3)]&&_0x34ae52[_0x1a9b3d(0x22f)](_0x1a9b3d(0x1bf)))throw new Error(_0x1cc7c3['amLYh'](_0x1a9b3d(0x1c4)+_0x5df04f+_0x1a9b3d(0x2e1)+_0x34ae52+').\x20','Expected\x20expanded\x20SQL\x20string.\x20Check\x20PayloadProcessor.processFileReferences\x20flow.'));}}function buildValidFieldsString(_0x11e327){const _0x1715f1=a0_0x1db3,_0x26fa97={'XVuNb':_0x1715f1(0x337)},_0x4d6265=(_0x11e327[_0x1715f1(0x2cc)]||[])[_0x1715f1(0x38d)]();if(isSoftDeleteEnabled(_0x11e327))for(const _0x32c969 of SOFT_DELETE_COLUMNS){if(!_0x4d6265['includes'](_0x32c969))_0x4d6265[_0x1715f1(0x2af)](_0x32c969);}return _0x4d6265['map'](_0x2f5619=>'\x27'+_0x2f5619+'\x27')['join'](_0x26fa97['XVuNb']);}function buildFormatResponseDataBody(_0x2c7587){const _0x38871b=a0_0x1db3,_0x437795={'rvzNd':function(_0x2dafab,_0x43f7ca){return _0x2dafab+_0x43f7ca;},'UcHPA':_0x38871b(0x22c),'LGqOp':'\x20\x20\x20\x20return\x20super.formatResponseData(data);','EJMsK':function(_0x2ff100,_0x403e91){return _0x2ff100+_0x403e91;},'WBzrI':function(_0x3855e1,_0x38fdd4){return _0x3855e1+_0x38fdd4;},'QOYZL':'\x20\x20\x20\x20const\x20formatted\x20=\x20super.formatResponseData(data);\x0a','YimFb':_0x38871b(0x2b2),'kiLnL':_0x38871b(0x252),'cJGNJ':_0x38871b(0x207)},_0x5e39d8=_0x437795[_0x38871b(0x2e9)](_0x437795['UcHPA'],_0x437795[_0x38871b(0x2a7)]);if(!isSoftDeleteEnabled(_0x2c7587))return _0x5e39d8;return _0x437795['EJMsK'](_0x437795['WBzrI'](_0x437795[_0x38871b(0x1db)](_0x437795['WBzrI'](_0x437795[_0x38871b(0x2e9)](_0x437795[_0x38871b(0x37f)](_0x38871b(0x22c),_0x437795[_0x38871b(0x1f4)]),_0x38871b(0x376)),'\x20\x20\x20\x20//\x20(where-key\x20R15)\x20sehingga\x20ter-proyeksi\x20formatResponseData;\x20hapus\x20dari\x20response\x20publik\x0a')+_0x437795[_0x38871b(0x2e6)]+_0x38871b(0x355)+(_0x38871b(0x341)+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20{\x0a'),_0x437795[_0x38871b(0x34a)]),'\x20\x20\x20\x20\x20\x20}\x0a'),'\x20\x20\x20\x20}\x0a')+_0x437795[_0x38871b(0x1d4)];}function buildAuditColumnsSection(_0xbc82f5,_0x282841){const _0x424d10=a0_0x1db3,_0x33ab8a={'TRRtF':function(_0x4e1fa2,_0x38eb6e){return _0x4e1fa2!==_0x38eb6e;},'qWCwZ':function(_0xf4b65c,_0x3f3598){return _0xf4b65c===_0x3f3598;},'KdJMO':function(_0x2b7e9e,_0x5a1dd4){return _0x2b7e9e===_0x5a1dd4;},'kvrch':_0x424d10(0x1af),'WDcCt':_0x424d10(0x1e7),'Bmphb':'updatedAt'};if(!('auditColumns'in _0xbc82f5))return'';const _0x12aa01=_0xbc82f5[_0x424d10(0x265)];if(_0x12aa01===![]||_0x33ab8a[_0x424d10(0x288)](_0x12aa01,null))return'\x0a'+_0x282841+'//\x20Tabel\x20tanpa\x20audit\x20columns:\x20disable\x20injection\x20helper\x0a'+_0x282841+_0x424d10(0x342);if(_0x33ab8a[_0x424d10(0x293)](typeof _0x12aa01,_0x33ab8a[_0x424d10(0x1ee)])&&!Array['isArray'](_0x12aa01)){const _0x196bd7=[_0x424d10(0x1a4),_0x33ab8a[_0x424d10(0x346)],_0x33ab8a['Bmphb'],'updatedBy'],_0x2c0c3f={};_0x196bd7['forEach'](_0x156969=>{if(_0x33ab8a['TRRtF'](_0x12aa01[_0x156969],undefined))_0x2c0c3f[_0x156969]=_0x12aa01[_0x156969];});const _0x3c5705=JSON[_0x424d10(0x2c4)](_0x2c0c3f,null,0x2)['split']('\x0a')['map']((_0x3b7922,_0x53ce17)=>_0x53ce17===0x0?_0x3b7922:_0x282841+_0x3b7922)['join']('\x0a');return'\x0a'+_0x282841+_0x424d10(0x239)+_0x282841+'this.auditColumns\x20=\x20'+_0x3c5705+';\x0a';}throw new Error(_0x424d10(0x382)+_0xbc82f5[_0x424d10(0x1e9)]+_0x424d10(0x27e));}function buildSearchColumnsCode(_0x784136){const _0x3e4982=a0_0x1db3;if(!_0x784136['searchColumns']||!Array['isArray'](_0x784136[_0x3e4982(0x1d9)]))return'';return _0x3e4982(0x1dc)+JSON[_0x3e4982(0x2c4)](_0x784136['searchColumns'],null,0x4)+_0x3e4982(0x300);}function buildFiltersCode(_0x1b1aa6){const _0x1050c4=a0_0x1db3;if(!_0x1b1aa6[_0x1050c4(0x2db)]||!Array[_0x1050c4(0x1bc)](_0x1b1aa6[_0x1050c4(0x2db)]))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[_0x1050c4(0x2c4)](_0x1b1aa6['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(_0x4990c6,_0x37a9b1='a.'){const _0x50c261=a0_0x1db3,_0x3ca6a6={'XZwNc':_0x50c261(0x296)};if(!_0x4990c6||typeof _0x4990c6!==_0x50c261(0x1af))return'';const _0x4b8212=[];for(const [_0x17e1ef,_0x51ccb1]of Object[_0x50c261(0x1e4)](_0x4990c6)){if(typeof _0x51ccb1==='boolean')_0x4b8212[_0x50c261(0x2af)](''+_0x37a9b1+_0x17e1ef+'\x20=\x20'+_0x51ccb1);else{if(typeof _0x51ccb1==='string')_0x4b8212['push'](''+_0x37a9b1+_0x17e1ef+_0x50c261(0x2dd)+_0x51ccb1['replace'](/'/g,'\x27\x27')+'\x27');else typeof _0x51ccb1===_0x3ca6a6['XZwNc']&&_0x4b8212['push'](''+_0x37a9b1+_0x17e1ef+'\x20=\x20'+_0x51ccb1);}}return _0x4b8212[_0x50c261(0x2b9)]('\x20AND\x20');}function buildRequestScopeMiddleware(_0x46044b,_0x131acd){const _0x581221=a0_0x1db3;if(!_0x46044b[_0x581221(0x1a8)])return'';const {column:_0x10c3a1,source:_0x3499ae,bypassRoles:_0x38125c}=_0x46044b['requestScope'],_0x123ed3=JSON['stringify'](_0x38125c||[]),_0xa2cb52=(_0x131acd||'')[_0x581221(0x2f5)](/-/g,'_');return'\x0a//\x20───\x20Request\x20Scope\x20Middleware\x20(Layer\x201\x20RLS)\x20──────────────────────────\x0a//\x20Dynamic\x20per-request\x20filtering\x20by\x20\x27'+_0x10c3a1+_0x581221(0x31e)+_0x3499ae+_0x581221(0x196)+_0x123ed3+';\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'+_0x3499ae+';\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'+_0x10c3a1+_0x581221(0x1ed)+_0x10c3a1+_0x581221(0x2fa)+_0x10c3a1+'\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'+_0x10c3a1+'\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'+_0xa2cb52+_0x581221(0x338)+_0x10c3a1+_0x581221(0x2a5);}function buildSoftDeleteReadMiddleware(_0x43ca51){const _0x2e211a=a0_0x1db3,_0x224e7c={'kEXuV':function(_0x545206,_0xb3a95a){return _0x545206(_0xb3a95a);},'nNptf':function(_0x413a03,_0x4fd8a4){return _0x413a03===_0x4fd8a4;},'ORVvv':_0x2e211a(0x282)},_0x54660c=_0x224e7c['kEXuV'](softDeleteVisibilityFilter,_0x43ca51);if(_0x224e7c[_0x2e211a(0x2b6)](_0x54660c,null))return'';const _0xd772ad=_0x43ca51['softDelete']&&_0x43ca51['softDelete']['visibility']||_0x224e7c['ORVvv'];return _0x2e211a(0x390)+IS_DELETED_COLUMN+_0x2e211a(0x19b)+_0xd772ad+_0x2e211a(0x36d)+IS_DELETED_COLUMN+_0x2e211a(0x28e)+_0x54660c+'\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 a0_0x1db3(_0x58edbd,_0x6dc505){_0x58edbd=_0x58edbd-0x192;const _0x3f667f=a0_0x3f66();let _0x1db37e=_0x3f667f[_0x58edbd];if(a0_0x1db3['DlPvXl']===undefined){var _0x9a0986=function(_0x450ec5){const _0x3f135c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x572a09='',_0x216b56='';for(let _0x2a8594=0x0,_0x433588,_0x15f819,_0x3a4da6=0x0;_0x15f819=_0x450ec5['charAt'](_0x3a4da6++);~_0x15f819&&(_0x433588=_0x2a8594%0x4?_0x433588*0x40+_0x15f819:_0x15f819,_0x2a8594++%0x4)?_0x572a09+=String['fromCharCode'](0xff&_0x433588>>(-0x2*_0x2a8594&0x6)):0x0){_0x15f819=_0x3f135c['indexOf'](_0x15f819);}for(let _0x3b9a0b=0x0,_0x44ce93=_0x572a09['length'];_0x3b9a0b<_0x44ce93;_0x3b9a0b++){_0x216b56+='%'+('00'+_0x572a09['charCodeAt'](_0x3b9a0b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x216b56);};a0_0x1db3['xVLdND']=_0x9a0986,a0_0x1db3['kfiRQW']={},a0_0x1db3['DlPvXl']=!![];}const _0x37c737=_0x3f667f[0x0],_0x1221ff=_0x58edbd+_0x37c737,_0x39f9a4=a0_0x1db3['kfiRQW'][_0x1221ff];return!_0x39f9a4?(_0x1db37e=a0_0x1db3['xVLdND'](_0x1db37e),a0_0x1db3['kfiRQW'][_0x1221ff]=_0x1db37e):_0x1db37e=_0x39f9a4,_0x1db37e;}function buildLookupOverrideCode(_0x2794cb,_0x15d0d8){const _0x56cf38=a0_0x1db3,_0x5b2537={'Vffle':function(_0x1d1c16,_0x3ada82){return _0x1d1c16(_0x3ada82);},'aiHjF':_0x56cf38(0x2c7),'tCJiU':_0x56cf38(0x24d)},_0x31d57a=FileUtils['detectTextColumn'](_0x15d0d8[_0x56cf38(0x2cc)]||[]),_0x13a876=FileUtils['toPascalCase'](_0x2794cb),_0x32783d=_0x15d0d8[_0x56cf38(0x383)]||{'all':_0x15d0d8['fieldName']||[]},_0x13f276=_0x15d0d8[_0x56cf38(0x33a)]||_0x15d0d8['fieldName']&&_0x15d0d8[_0x56cf38(0x2cc)][0x0]||'id',_0x198cc8=_0x15d0d8[_0x56cf38(0x2ec)]&&_0x15d0d8[_0x56cf38(0x2ec)]['lookup']?_0x5b2537['Vffle'](buildDefaultScopeSQL,_0x15d0d8[_0x56cf38(0x2ec)][_0x56cf38(0x30b)]):'',_0x34b7a0=((()=>{const _0x2a4e28=_0x56cf38,_0x179d78=softDeleteVisibilityFilter(_0x15d0d8);return _0x179d78!==null?'a.'+IS_DELETED_COLUMN+_0x2a4e28(0x1de)+_0x179d78:'';})()),_0x5a7d77=[_0x198cc8,_0x34b7a0]['filter'](Boolean)['join'](_0x5b2537[_0x56cf38(0x23f)]);return _0x56cf38(0x241)+_0x31d57a+_0x56cf38(0x322)+_0x13f276+',\x20'+_0x31d57a+'\x20FROM\x20\x27\x20+\x20this.getLookupSource()\x20+\x20`\x20WHERE\x20upper(a.'+_0x31d57a+_0x56cf38(0x1ea)+(_0x198cc8?'\x20AND\x20'+_0x198cc8:'')+(_0x34b7a0?_0x56cf38(0x2c7)+_0x34b7a0:'')+_0x56cf38(0x264)+_0x31d57a+_0x56cf38(0x32e)+_0x13f276+_0x56cf38(0x2eb)+_0x31d57a+'\x0a\x20\x20\x20\x20\x20\x20}));\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\x20getLookupData\x20('+_0x13a876+_0x56cf38(0x2ce)+JSON['stringify'](_0x15d0d8[_0x56cf38(0x1fc)]||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[_0x56cf38(0x2c4)](_0x32783d['textFields']||[_0x31d57a])+';\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'+(_0x198cc8?_0x56cf38(0x219)+_0x198cc8+'`);\x0a':'')+(_0x34b7a0?_0x56cf38(0x377)+_0x34b7a0+_0x56cf38(0x324):'')+'\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['stringify'](_0x15d0d8[_0x56cf38(0x2cc)]||[])+_0x56cf38(0x35b)+_0x13f276+_0x56cf38(0x2a8)+_0x13f276+',\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('+_0x13a876+_0x56cf38(0x1d5)+_0x31d57a+_0x56cf38(0x320)+_0x13f276+',\x20'+_0x31d57a+_0x56cf38(0x28f)+(_0x5a7d77?_0x56cf38(0x36b)+_0x5a7d77:'')+'\x20ORDER\x20BY\x20a.'+_0x31d57a+_0x56cf38(0x392)+_0x13f276+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item.'+_0x31d57a+'\x0a\x20\x20\x20\x20\x20\x20}));\x0a\x20\x20\x20\x20\x20\x20await\x20this.setCachedLookup(cacheOptions,\x20cacheData,\x20\x27static\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Return\x20dengan\x20selected\x20flag\x0a\x20\x20\x20\x20\x20\x20return\x20data.map(item\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20result\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20id:\x20item.'+_0x13f276+_0x56cf38(0x1c9)+_0x31d57a+_0x56cf38(0x20a)+_0x13f276+_0x56cf38(0x2b3)+_0x13a876+'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'+_0x13f276+_0x56cf38(0x1d0)+_0x31d57a+'\x27];\x0a\x20\x20\x20\x20\x20\x20let\x20params\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20paramIndex\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Parse\x20dan\x20validasi\x20select\x20columns\x20untuk\x20support\x20SQL\x20expressions\x0a\x20\x20\x20\x20\x20\x20const\x20validTextFields\x20=\x20'+JSON['stringify'](_0x32783d[_0x56cf38(0x308)]||[])+';\x0a\x20\x20\x20\x20\x20\x20let\x20selectClause\x20=\x20\x27'+_0x13f276+'\x27;\x0a\x20\x20\x20\x20\x20\x20let\x20textField\x20=\x20\x27'+_0x31d57a+'\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'+_0x13f276+_0x56cf38(0x271)+_0x31d57a+_0x56cf38(0x272)+(_0x198cc8?'WHERE\x20'+_0x198cc8+'\x20':'')+_0x56cf38(0x30f)+(_0x198cc8?_0x5b2537['tCJiU']:_0x56cf38(0x198))+_0x56cf38(0x2de)+(_0x198cc8?')':'')+'\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\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.validFields.includes(column)\x20&&\x20column\x20!==\x20\x27'+_0x13f276+'\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'+_0x2794cb[_0x56cf38(0x25e)]()+_0x56cf38(0x1e2)+_0x13f276+',\x0a\x20\x20\x20\x20\x20\x20\x20\x20text:\x20item[textFieldName]\x20||\x20item.'+_0x31d57a+'\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('+_0x13a876+'Model):\x27,\x20error);\x0a\x20\x20\x20\x20\x20\x20throw\x20error;\x0a\x20\x20\x20\x20}\x0a\x20\x20}';}function buildAdvancedQuerySection(_0x480d6a){const _0x5aa278=a0_0x1db3,_0x9cbdf4={'QqVKs':'//\x20No\x20advanced\x20queries\x20defined'},_0x1e7c42=_0x480d6a['advancedQueries']||{};if(Object['keys'](_0x1e7c42)['length']===0x0)return _0x9cbdf4[_0x5aa278(0x214)];return'\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20const\x20queryDefinitions\x20=\x20{\x0a'+Object['entries'](_0x1e7c42)[_0x5aa278(0x1c1)](([_0x2160fa,_0x5f76f3])=>'\x20\x20\x20\x20\x20\x20\x22'+_0x2160fa+'\x22:\x20'+JSON[_0x5aa278(0x2c4)](_0x5f76f3))[_0x5aa278(0x2b9)](',\x0a')+_0x5aa278(0x35e);}function buildQueryLoadingCode(_0x544fe8,_0x27428b){const _0x11c1f9=a0_0x1db3;if(!_0x544fe8)return'let\x20baseQuery\x20=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;';const _0x57435a=_0x544fe8[_0x11c1f9(0x2f5)](/\$\{tableName\}/g,'${payload.tableName\x20||\x20\x22undefined_table\x22}')[_0x11c1f9(0x2f5)](/\$\{this\.table\}/g,_0x11c1f9(0x268));return'let\x20baseQuery\x20=\x20`'+_0x57435a+_0x11c1f9(0x24b);}function buildFieldMappingCode(_0x53b208){const _0x531087=a0_0x1db3,_0x359a0e={'bxJjc':_0x531087(0x249)},_0x44b771=_0x53b208['_extendedFields']||{};return _0x531087(0x192)+JSON['stringify'](_0x44b771['textFields']||[])+_0x531087(0x2ed)+JSON[_0x531087(0x2c4)](_0x44b771['dateFields']||[])+',\x0a\x20\x20\x20\x20\x20\x20requiredFields:\x20'+JSON['stringify'](_0x44b771['requiredFields']||[])+_0x531087(0x231)+(_0x44b771['primaryTextField']||_0x359a0e[_0x531087(0x2a1)])+_0x531087(0x22e);}function _generateValidationConfig(_0x50de2e){const _0x242358=a0_0x1db3,_0x3688e6={'qqoEc':function(_0x278bcf,_0x2c7456){return _0x278bcf===_0x2c7456;},'Jfygj':'\x20\x20\x20\x20this.validationConfig\x20=\x20{};\x20//\x20No\x20field\x20validation\x20config\x0a'};if(!_0x50de2e||!Array['isArray'](_0x50de2e)||_0x3688e6['qqoEc'](_0x50de2e['length'],0x0))return _0x3688e6['Jfygj'];const _0x41dc3c=_0x50de2e[_0x242358(0x1c1)](_0xd4bfa3=>{const _0x92fc5f=_0x242358,_0x3f8778=JSON[_0x92fc5f(0x2c4)](_0xd4bfa3['constraints']||{},null,0x6)['replace'](/\n/g,'\x0a\x20\x20\x20\x20\x20\x20');return'\x20\x20\x20\x20\x20\x20\x27'+_0xd4bfa3[_0x92fc5f(0x249)]+'\x27:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20type:\x20\x27'+_0xd4bfa3['type']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20constraints:\x20'+_0x3f8778+_0x92fc5f(0x245);})['join'](',\x0a');return _0x242358(0x1cc)+_0x41dc3c+_0x242358(0x1c7);}function _generateValidateFieldConstraints(){const _0x4fbe82=a0_0x1db3;return _0x4fbe82(0x1c5);}function generateCompositeMethods(_0x26335a){const _0x4d2869=a0_0x1db3,_0x186336={'wqgfI':function(_0x32821b,_0x2c5ecc){return _0x32821b===_0x2c5ecc;},'LFDCh':function(_0x27f85f,_0xbb98fb){return _0x27f85f>_0xbb98fb;},'JPWDl':function(_0x26f4d9,_0x40e8cb){return _0x26f4d9+_0x40e8cb;},'BNIeL':function(_0x212059,_0x46e45a){return _0x212059>_0x46e45a;},'uUtbe':function(_0x1d71d1,_0xc3cb2e){return _0x1d71d1===_0xc3cb2e;},'CQQjU':'generated','hBuTO':_0x4d2869(0x370),'VbNLN':_0x4d2869(0x1a3),'ZkewK':function(_0x5a089d,_0x11a45c){return _0x5a089d+_0x11a45c;},'BaiAN':function(_0xcffc4b,_0x287643){return _0xcffc4b+_0x287643;}},_0x16c53d=_0x26335a[_0x4d2869(0x30a)]||{},_0x34ae53=_0x26335a[_0x4d2869(0x23c)]&&_0x26335a['masterDetail']['enabled'];if(!_0x34ae53||!_0x16c53d['createComposite']&&!_0x16c53d['updateComposite']&&!_0x16c53d[_0x4d2869(0x365)])return'';const _0x582454=_0x26335a['masterDetail']['detailTable'],_0x350802=_0x26335a[_0x4d2869(0x23c)]['foreignKey'],_0x2f2a9c=_0x26335a['primaryKey']||'id';let _0x4aaa16='\x0a';if(_0x16c53d[_0x4d2869(0x336)]){const _0x312204=_0x26335a['masterDetail']?.['detailConfig']?.[_0x4d2869(0x33a)]||_0x582454[_0x4d2869(0x278)]('.')['pop']()+'_id',_0xbda1e1=_0x26335a[_0x4d2869(0x23c)]?.[_0x4d2869(0x29f)]?.['autoCalculateFields']||{},_0x2e1270=[],_0x488f8b=[];for(const [_0x2afda1,_0xdeea60]of Object['entries'](_0xbda1e1)){if(_0x186336['wqgfI'](_0xdeea60[_0x4d2869(0x372)],'generated'))_0x2e1270[_0x4d2869(0x2af)](_0x2afda1);else{const _0x2382da=(_0xdeea60[_0x4d2869(0x327)]||'')[_0x4d2869(0x278)]('*')['map'](_0x5747c7=>_0x5747c7[_0x4d2869(0x364)]());_0x488f8b['push']({'fieldName':_0x2afda1,'qtyField':_0x2382da[0x0],'priceField':_0x2382da[0x1]});}}const _0x57d823=_0x488f8b[_0x4d2869(0x1c1)](_0x3679f2=>{const _0x529e8c=_0x4d2869;return _0x529e8c(0x387)+_0x3679f2[_0x529e8c(0x2cc)]+'\x20=\x20'+_0x3679f2[_0x529e8c(0x2fb)]+_0x529e8c(0x208)+_0x3679f2['priceField']+_0x529e8c(0x1ff)+_0x3679f2['fieldName']+'\x20=\x20(Number(item.'+_0x3679f2['qtyField']+_0x529e8c(0x38b)+_0x3679f2['priceField']+_0x529e8c(0x2e7);})[_0x4d2869(0x2b9)]('\x0a');_0x4aaa16+='\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'+_0x582454['split']('.')['pop']()+'\x27;\x0a\x20\x20\x20\x20\x20\x20delete\x20headerData[detailKey];\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20---\x20Hook:\x20onBeforeCompositeInsert\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\x20detailItems\x20=\x20data[detailKey]\x20||\x20[];\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20beforeCtx\x20=\x20CB.buildCompositeInsertBeforeContext(headerData,\x20detailItems,\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x26335a['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x582454+_0x4d2869(0x32c)+_0x350802+_0x4d2869(0x23a)+_0x582454+_0x4d2869(0x27c)+_0x350802+_0x4d2869(0x2f0)+(_0x186336[_0x4d2869(0x31c)](_0x2e1270[_0x4d2869(0x302)],0x0)?'const\x20generatedFields\x20=\x20'+JSON[_0x4d2869(0x2c4)](_0x2e1270)+';':'')+_0x4d2869(0x2f3)+_0x312204+_0x4d2869(0x21f)+(_0x57d823?_0x186336['JPWDl'](_0x186336[_0x4d2869(0x2d8)]('\x0a',_0x57d823),'\x0a'):'')+_0x4d2869(0x328)+(_0x186336[_0x4d2869(0x235)](_0x2e1270[_0x4d2869(0x302)],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'+_0x26335a['tableName']+_0x4d2869(0x243)+_0x582454+_0x4d2869(0x32c)+_0x350802+'\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(_0x16c53d[_0x4d2869(0x299)]){const _0x262a84=_0x26335a[_0x4d2869(0x23c)]?.['detailConfig']?.[_0x4d2869(0x33a)]||_0x582454['split']('.')['pop']()+_0x4d2869(0x2f9),_0x8f2c7f=_0x26335a[_0x4d2869(0x23c)]?.[_0x4d2869(0x211)]||null,_0x432360=_0x26335a[_0x4d2869(0x23c)]?.['detailConfig']?.['autoCalculateFields']||{},_0x271397=[],_0x32720e=[];for(const [_0x48fe5c,_0x549cfe]of Object[_0x4d2869(0x1e4)](_0x432360)){if(_0x186336[_0x4d2869(0x2ca)](_0x549cfe['type'],_0x186336['CQQjU']))_0x271397[_0x4d2869(0x2af)](_0x48fe5c);else{const _0x18b27f=(_0x549cfe['formula']||'')['split']('*')['map'](_0x1f6435=>_0x1f6435[_0x4d2869(0x364)]());_0x32720e['push']({'fieldName':_0x48fe5c,'qtyField':_0x18b27f[0x0],'priceField':_0x18b27f[0x1]});}}const _0x561edf=_0x32720e[_0x4d2869(0x1c1)](_0x7719df=>{const _0x52685f=_0x4d2869;return _0x52685f(0x387)+_0x7719df['fieldName']+'\x20=\x20'+_0x7719df['qtyField']+'\x20*\x20'+_0x7719df[_0x52685f(0x26e)]+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20item.'+_0x7719df[_0x52685f(0x2cc)]+_0x52685f(0x295)+_0x7719df['qtyField']+')\x20||\x200)\x20*\x20(Number(item.'+_0x7719df[_0x52685f(0x26e)]+')\x20||\x200);';})[_0x4d2869(0x2b9)]('\x0a'),_0x1d080c=_0x26335a['masterDetail']?.['detailConfig']?.[_0x4d2869(0x2b0)]?.[_0x4d2869(0x2ff)]?.[_0x4d2869(0x327)]||'',_0x527cd2=_0x1d080c['split']('*')[_0x4d2869(0x1c1)](_0x518dff=>_0x518dff['trim']()),_0x1c49bc=_0x26335a[_0x4d2869(0x23c)]?.[_0x4d2869(0x211)]?.['total_qty']?.[_0x4d2869(0x1b3)]?.['replace'](_0x186336['hBuTO'],'')||'',_0x51a04a=_0x527cd2[0x0]||_0x1c49bc,_0x15d345=_0x527cd2[0x1]||_0x186336[_0x4d2869(0x287)];_0x4aaa16+='\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'+_0x582454[_0x4d2869(0x278)]('.')['pop']()+_0x4d2869(0x284)+_0x26335a[_0x4d2869(0x1e9)]+_0x4d2869(0x243)+_0x582454+_0x4d2869(0x32c)+_0x350802+'\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'+_0x582454+'\x27;\x0a\x20\x20\x20\x20\x20\x20const\x20foreignKey\x20=\x20\x27'+_0x350802+_0x4d2869(0x347)+_0x262a84+'\x27;\x0a\x20\x20\x20\x20\x20\x20'+(_0x186336[_0x4d2869(0x235)](_0x271397['length'],0x0)?'const\x20generatedFields\x20=\x20'+JSON[_0x4d2869(0x2c4)](_0x271397)+';':'')+'\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'+(_0x561edf?_0x186336[_0x4d2869(0x358)](_0x186336['BaiAN']('\x0a',_0x561edf),'\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'+(_0x271397[_0x4d2869(0x302)]>0x0?_0x4d2869(0x1bd):'')+_0x4d2869(0x33f)+(_0x561edf?_0x186336[_0x4d2869(0x1cf)]('\x0a',_0x561edf)+'\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'+(_0x186336[_0x4d2869(0x31c)](_0x271397[_0x4d2869(0x302)],0x0)?_0x4d2869(0x1bd):'')+_0x4d2869(0x356)+(_0x8f2c7f?'\x0a\x20\x20\x20\x20\x20\x20const\x20calculations\x20=\x20'+JSON['stringify'](_0x8f2c7f)+';\x0a\x20\x20\x20\x20\x20\x20const\x20recalculatedFields\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20const\x20recalculatedValues\x20=\x20[];\x0a\x20\x20\x20\x20\x20\x20let\x20recalcPlaceholder\x20=\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(calculations.total_items)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_items\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(allItems.length);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20if\x20(calculations.total_qty\x20&&\x20calculations.total_qty.source)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qtyField\x20=\x20calculations.total_qty.source.replace(\x27items.\x27,\x20\x27\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20totalQty\x20=\x20allItems.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedFields.push(`total_qty\x20=\x20$${recalcPlaceholder++}`);\x0a\x20\x20\x20\x20\x20\x20\x20\x20recalculatedValues.push(totalQty);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20'+(_0x51a04a?'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.'+_0x51a04a+_0x4d2869(0x237)+_0x15d345+')\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}':'//\x20WARNING:\x20headerCalculations.total_amount\x20skipped\x20—\x20no\x20qty\x20field\x20configured')+_0x4d2869(0x1b6):'')+'\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'+_0x26335a['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x582454+_0x4d2869(0x32c)+_0x350802+_0x4d2869(0x209);}if(_0x16c53d['readComposite']){const _0x5b63be=_0x26335a['masterDetail']?.[_0x4d2869(0x29f)]?.['detailQuery']||null;let _0x234704;_0x5b63be?_0x234704=_0x4d2869(0x2df)+_0x5b63be+'`;':_0x234704=_0x4d2869(0x1dd)+_0x582454+'\x20WHERE\x20'+_0x350802+'\x20=\x20$1\x20ORDER\x20BY\x20line_number`;',_0x4aaa16+=_0x4d2869(0x1e3)+_0x582454[_0x4d2869(0x278)]('.')[_0x4d2869(0x1ce)]()+_0x4d2869(0x2f0)+_0x234704+_0x4d2869(0x385);}return _0x4aaa16;}function generateSoftDeleteOverride(_0x147377){const _0x1588b2=a0_0x1db3,_0x4b1163={'QcWxw':function(_0x3434a8,_0x44a967){return _0x3434a8===_0x44a967;}},_0x4544c3=_0x147377['primaryKey']||_0x147377['fieldName']&&_0x147377['fieldName'][0x0]||'id',_0x2fac5a=_0x147377['softDelete']&&Array[_0x1588b2(0x1bc)](_0x147377['softDelete']['reusable'])?_0x147377[_0x1588b2(0x2fd)][_0x1588b2(0x2a6)]:[];if(hasCascadeChildren(_0x147377))return generateSoftDeleteCascadeOverride(_0x147377);const _0x4a4004=Array[_0x1588b2(0x1bc)](_0x147377['softDeleteFkChildren'])?_0x147377['softDeleteFkChildren']['filter'](_0x2cf688=>_0x2cf688&&_0x2cf688['onDelete']===_0x1588b2(0x1c8)&&typeof _0x2cf688['childTable']===_0x1588b2(0x307)&&_0x2cf688['childTable']&&Array[_0x1588b2(0x1bc)](_0x2cf688[_0x1588b2(0x21c)])&&_0x2cf688['childColumns']['length']===0x1&&typeof _0x2cf688['childColumns'][0x0]==='string'&&typeof _0x2cf688[_0x1588b2(0x256)]===_0x1588b2(0x307)&&_0x2cf688[_0x1588b2(0x256)]):[],_0x4c8d55=[_0x4544c3];for(const _0x3b232c of _0x2fac5a){if(_0x3b232c&&_0x3b232c['field']&&!_0x4c8d55[_0x1588b2(0x229)](_0x3b232c['field']))_0x4c8d55['push'](_0x3b232c['field']);}for(const _0x4ac9f9 of _0x4a4004){if(!_0x4c8d55['includes'](_0x4ac9f9[_0x1588b2(0x256)]))_0x4c8d55[_0x1588b2(0x2af)](_0x4ac9f9[_0x1588b2(0x256)]);}const _0x1be732=_0x4c8d55['join'](',\x20'),_0x100122=_0x4a4004[_0x1588b2(0x1c1)]((_0x217c3d,_0x328c68)=>{const _0x309c2e=_0x1588b2,_0x1066c1=_0x217c3d[_0x309c2e(0x213)],_0x140f02=_0x217c3d[_0x309c2e(0x21c)][0x0],_0x113d5b=_0x217c3d['parentColumn'],_0xc7e35f=_0x4b1163[_0x309c2e(0x36a)](_0x217c3d['childSoftDelete'],!![]),_0x1baf22=_0xc7e35f?_0x309c2e(0x2c7)+IS_DELETED_COLUMN+_0x309c2e(0x321):'';return _0x309c2e(0x1da)+_0x328c68+':\x20anak\x20\x27'+_0x1066c1+'\x27.'+_0x140f02+'\x20→\x20master.'+_0x113d5b+'\x20(childSoftDelete='+_0xc7e35f+_0x309c2e(0x1f0)+_0x113d5b+'\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'+_0x1066c1+'\x20WHERE\x20'+_0x140f02+_0x309c2e(0x24a)+_0x1baf22+'\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'+_0x1066c1+_0x309c2e(0x2ba);})[_0x1588b2(0x2b9)](''),_0x28fa91=_0x2fac5a['map'](_0x2e3179=>{const _0x2661b4=_0x1588b2,_0x1d6686=_0x2e3179['field'],_0x34b6b5=_0x2e3179[_0x2661b4(0x302)];return _0x2661b4(0x2d7)+_0x1d6686+_0x2661b4(0x257)+_0x34b6b5+_0x2661b4(0x2bc)+_0x1d6686+_0x2661b4(0x330)+_0x34b6b5+_0x2661b4(0x1eb)+_0x1d6686+_0x2661b4(0x275)+_0x34b6b5+';\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'+_0x1d6686+'\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}';})['join']('');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+_0x1588b2(0x258)+_0x1be732+_0x1588b2(0x35a)+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'+_0x100122+_0x28fa91+'\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+IS_DELETED_COLUMN+'\x20=\x20TRUE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+_0x1588b2(0x294)+DELETED_BY_COLUMN+_0x1588b2(0x1a5)+_0x4544c3+_0x1588b2(0x25f)+_0x4544c3+'\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(_0x1e46c7){const _0x3dccdc=a0_0x1db3,_0x42c6b0=_0x1e46c7[_0x3dccdc(0x343)];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['stringify'](_0x42c6b0)+_0x3dccdc(0x1d2)+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+_0x3dccdc(0x2e3)+IS_DELETED_COLUMN+'\x20=\x20TRUE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+_0x3dccdc(0x294)+DELETED_BY_COLUMN+_0x3dccdc(0x354)+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+'\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.\x20Walk\x20cascade:\x20soft-delete\x20master\x20+\x20seluruh\x20descendant\x20cascade\x20dalam\x20transaksi\x20ini.\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20Restrict-per-node\x20409\x20/\x20overflow\x20→\x20throw\x20→\x20ROLLBACK\x20(atomic\x20all-or-nothing).\x0a\x20\x20\x20\x20\x20\x20const\x20{\x20masterDeletedItems,\x20touched\x20}\x20=\x20await\x20__cascadeSoftDelete(client,\x20lockResult.rows,\x20deletedBy);\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20//\x203.\x20Invalidasi\x20cache.\x20Master:\x20this.invalidateCache()\x20existing\x20(jalur\x20custom\x20tidak\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20auto-invalidate;\x20bila\x20terlewat\x20/datatables\x20&\x20/read\x20ter-cache\x20menyajikan\x20record\x20terhapus).\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20Descendant\x20lintas-tabel\x20(FK-SD-3\x20Phase\x2004c,\x20D-2-enhanced):\x20master\x20TIDAK\x20tahu\x20path\x20model\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20descendant\x20(module/endpoint\x20berasal\x20dari\x20endpoint-create,\x20bukan\x20SDF\x20closure),\x20sehingga\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20me-REPLIKASI\x20logika\x20invalidateCache()\x20untuk\x20tiap\x20tabel\x20descendant\x20tersentuh,\x20diturunkan\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20dari\x20NAMA\x20TABEL.\x20Cache\x20key\x20descendant\x20murni\x20turunan\x20tableName\x20bare\x20yang\x20dipass\x20model\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20descendant\x20ke\x20super()\x20(single-schema\x20\x27public\x27\x20Fase\x201.5,\x20terverifikasi:\x20cacheModule=\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20\x27default\x27);\x20closure\x20membawa\x20qualified\x20(schema.table)\x20sehingga\x20schema\x20di-strip\x20agar\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20module/endpoint\x20IDENTIK\x20dengan\x20invalidateCache()\x20descendant.\x20Post-COMMIT\x20+\x20graceful:\x0a\x20\x20\x20\x20\x20\x20//\x20\x20\x20\x20kegagalan\x20invalidasi\x20cache\x20tidak\x20membatalkan\x20soft-delete\x20(konsisten\x20BaseModel).\x0a\x20\x20\x20\x20\x20\x20await\x20this.invalidateCache();\x0a\x20\x20\x20\x20\x20\x20if\x20(this.cacheEnabled)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cacheMgr\x20=\x20require(\x27@restforgejs/platform/src/utils/cache-manager\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__cacheReg\x20=\x20require(\x27@restforgejs/platform/src/utils/cache-invalidation-registry\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__prefix\x20=\x20__cacheMgr.prefix;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20__t\x20of\x20touched)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Master\x20sudah\x20di-invalidate\x20via\x20this.invalidateCache()\x20existing\x20→\x20hindari\x20dobel.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(__t\x20===\x20__sdCascadeMeta.master)\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Strip\x20schema\x20→\x20bentuk\x20bare\x20yang\x20dipakai\x20model\x20descendant\x20pada\x20super(tableName).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20extractCacheModule\x20atas\x20nama\x20bare\x20→\x20\x27default\x27;\x20extractCacheEndpoint\x20→\x20bare\x20itu\x20sendiri.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__bare\x20=\x20__t.indexOf(\x27.\x27)\x20>=\x200\x20?\x20__t.substring(__t.lastIndexOf(\x27.\x27)\x20+\x201)\x20:\x20__t;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__mod\x20=\x20\x27default\x27;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__ep\x20=\x20__bare;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20await\x20__cacheMgr.invalidatePattern(__prefix\x20+\x20__mod\x20+\x20\x27:\x27\x20+\x20__ep\x20+\x20\x27:*\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Cascade\x20processor/dashboard\x20yang\x20bergantung\x20pada\x20tabel\x20descendant\x20(registry\x20by-endpoint).\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20__regPatterns\x20=\x20__cacheReg.getInvalidationPatterns(__ep,\x20__prefix);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20for\x20(const\x20__rp\x20of\x20__regPatterns)\x20await\x20__cacheMgr.invalidatePattern(__rp);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20catch\x20(err)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20//\x20Graceful\x20—\x20kegagalan\x20invalidasi\x20cache\x20descendant\x20tidak\x20membatalkan\x20soft-delete.\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\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+\x20masterDeletedItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_count:\x20masterDeletedItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20deleted_items:\x20masterDeletedItems\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 generateDeleteMethod(_0x34a820){const _0x2de097=a0_0x1db3,_0x580c84={'EXRAv':function(_0x1f595b,_0x4ee94d){return _0x1f595b(_0x4ee94d);}},_0x3e46b5=_0x34a820['action']||{},_0x4bf44b=_0x34a820['masterDetail']&&_0x34a820[_0x2de097(0x23c)][_0x2de097(0x2aa)],_0x1b2c76=_0x34a820[_0x2de097(0x23c)]?.['cascadeDelete']||![];if(!_0x3e46b5[_0x2de097(0x236)])return'';const _0x1ea648=_0x34a820['primaryKey']||'id';if(isSoftDeleteEnabled(_0x34a820))return _0x580c84[_0x2de097(0x2ae)](generateSoftDeleteOverride,_0x34a820);if(!_0x4bf44b)return'';const _0x42b452=_0x34a820['masterDetail']['detailTable'],_0x52e98d=_0x34a820[_0x2de097(0x23c)][_0x2de097(0x1fb)];let _0x2291ef='\x0a';return _0x2291ef+=_0x2de097(0x2c5)+(_0x1b2c76?'\x0a\x20\x20\x20\x20\x20\x20//\x20cascadeDelete\x20=\x20true:\x20DELETE\x20child\x20records\x20first,\x20then\x20header\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Deleting\x20child\x20records\x20from\x20'+_0x42b452+'...\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'+_0x1ea648+_0x2de097(0x291)+_0x1ea648+_0x2de097(0x37e)+_0x42b452+_0x2de097(0x36b)+_0x52e98d+'\x20=\x20$1`;\x0a\x20\x20\x20\x20\x20\x20const\x20deleteChildResult\x20=\x20await\x20client.query(deleteChildQuery,\x20[headerPrimaryKeyValue]);\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Deleted\x20${deleteChildResult.rowCount}\x20child\x20record(s)\x20from\x20'+_0x42b452+_0x2de097(0x221):_0x2de097(0x335))+'\x0a\x0a\x20\x20\x20\x20\x20\x20await\x20client.query(\x27COMMIT\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\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Data\x20successfully\x20deleted\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20deletedData'+(_0x1b2c76?_0x2de097(0x194):'')+_0x2de097(0x2d6),_0x2291ef;}function generateSoftDeleteRestoreOverride(_0x3ea6b1){const _0x410d54=a0_0x1db3,_0x1b3503={'yXVIb':function(_0x902210,_0x16d0c0){return _0x902210===_0x16d0c0;},'lsELG':_0x410d54(0x2c7),'RllBG':'missing\x20or\x20soft-deleted','dsmpx':_0x410d54(0x332),'ASaOn':_0x410d54(0x389)},_0x5a26bf=_0x3ea6b1[_0x410d54(0x33a)]||_0x3ea6b1[_0x410d54(0x2cc)]&&_0x3ea6b1[_0x410d54(0x2cc)][0x0]||'id',_0x57cd94=_0x3ea6b1['softDelete']&&Array[_0x410d54(0x1bc)](_0x3ea6b1['softDelete'][_0x410d54(0x2a6)])?_0x3ea6b1[_0x410d54(0x2fd)]['reusable']:[],_0x4b69b3=Array[_0x410d54(0x1bc)](_0x3ea6b1[_0x410d54(0x28b)])?_0x3ea6b1['softDeleteFkChecks']['filter'](_0x375b98=>_0x375b98&&Array[_0x410d54(0x1bc)](_0x375b98['columns'])&&_0x375b98['columns'][_0x410d54(0x302)]>0x0&&typeof _0x375b98['refTable']===_0x410d54(0x307)&&_0x375b98[_0x410d54(0x251)]&&Array['isArray'](_0x375b98['refColumns'])&&_0x375b98['refColumns']['length']===_0x375b98[_0x410d54(0x2f8)]['length']):[],_0x592d93=[_0x5a26bf];for(const _0x1cf70e of _0x57cd94){if(_0x1cf70e&&_0x1cf70e[_0x410d54(0x2c3)]&&!_0x592d93[_0x410d54(0x229)](_0x1cf70e['field']))_0x592d93['push'](_0x1cf70e['field']);}for(const _0x5026f7 of _0x4b69b3){for(const _0x47b8be of _0x5026f7[_0x410d54(0x2f8)]){if(_0x47b8be&&!_0x592d93[_0x410d54(0x229)](_0x47b8be))_0x592d93[_0x410d54(0x2af)](_0x47b8be);}}const _0x42c7a5=_0x592d93['join'](',\x20'),_0x82398a=_0x57cd94[_0x410d54(0x1c1)](_0x19e9fc=>{const _0x474d66=_0x410d54,_0x5f1561=_0x19e9fc['field'],_0x4a997f=_0x19e9fc[_0x474d66(0x302)];return _0x474d66(0x2d7)+_0x5f1561+'\x27\x20(base\x20length\x20'+_0x4a997f+_0x474d66(0x230)+_0x5f1561+_0x474d66(0x240)+_0x5f1561+'\x20=\x20$1\x20AND\x20'+IS_DELETED_COLUMN+_0x474d66(0x394)+_0x5a26bf+'\x20<>\x20$2\x20LIMIT\x201\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20[__original,\x20lockedRow[\x27'+_0x5a26bf+'\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'+_0x5f1561+_0x474d66(0x339)+_0x5f1561+'\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}';})[_0x410d54(0x2b9)](''),_0x3b2609=_0x4b69b3['map']((_0x320b83,_0x51f004)=>{const _0x44d7e7=_0x410d54,_0x2d7efd=_0x1b3503['yXVIb'](_0x320b83['parentSoftDelete'],!![]),_0x5aa239=_0x320b83[_0x44d7e7(0x251)],_0x1b21cf=_0x320b83['columns'][_0x44d7e7(0x1c1)](_0x4e3b8a=>_0x44d7e7(0x359)+_0x4e3b8a+'\x27]')['join'](',\x20'),_0x302fb2=_0x320b83[_0x44d7e7(0x2e8)]['map']((_0xeaaa17,_0x330e41)=>_0xeaaa17+'\x20=\x20$'+(_0x330e41+0x1))[_0x44d7e7(0x2b9)](_0x1b3503['lsELG']),_0x3165f1=_0x2d7efd?'\x20AND\x20'+IS_DELETED_COLUMN+_0x44d7e7(0x321):'',_0x25586e=_0x2d7efd?_0x1b3503[_0x44d7e7(0x1d7)]:_0x1b3503['dsmpx'];return _0x44d7e7(0x202)+_0x51f004+'\x20→\x20'+_0x5aa239+'\x20(parentSoftDelete='+_0x2d7efd+_0x44d7e7(0x2c1)+(_0x2d7efd?_0x44d7e7(0x352):_0x1b3503[_0x44d7e7(0x33b)])+'\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['+_0x1b21cf+'];\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'+_0x5aa239+_0x44d7e7(0x36b)+_0x302fb2+_0x3165f1+_0x44d7e7(0x200)+_0x5aa239+'\x27\x20is\x20'+_0x25586e+_0x44d7e7(0x1ec);})['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'+_0x42c7a5+_0x410d54(0x35a)+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'+_0x82398a+_0x3b2609+_0x410d54(0x292)+IS_DELETED_COLUMN+'\x20=\x20FALSE\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_AT_COLUMN+'\x20=\x20NULL\x27);\x0a\x20\x20\x20\x20\x20\x20\x20\x20setClauses.push(\x27'+DELETED_BY_COLUMN+'\x20=\x20NULL\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20updateParams.push(lockedRow[\x27'+_0x5a26bf+_0x410d54(0x25f)+_0x5a26bf+'\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\x20restoredItems.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//\x206.\x20Invalidate\x20cache\x20setelah\x20COMMIT\x20(jalur\x20custom\x20wajib\x20eksplisit,\x20sama\x20seperti\x20R14).\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\x20restored\x20\x27\x20+\x20restoredItems.length\x20+\x20\x27\x20record(s)\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20restored_count:\x20restoredItems.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20restored_items:\x20restoredItems\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 generateRestoreMethod(_0x59d1ae){const _0x363c66=a0_0x1db3,_0x233dec={'UvRIz':function(_0x4ae540,_0x3347ca){return _0x4ae540(_0x3347ca);}},_0x2fd356=_0x59d1ae[_0x363c66(0x30a)]||{};if(!_0x2fd356['restore']||!isSoftDeleteEnabled(_0x59d1ae))return'';return _0x233dec[_0x363c66(0x1ae)](generateSoftDeleteRestoreOverride,_0x59d1ae);}function hasSoftDeleteFkParents(_0x1f44b5){const _0x16792b=a0_0x1db3,_0x5d2dc3={'FZPge':function(_0x4e574a,_0x381979){return _0x4e574a>_0x381979;}};return Array[_0x16792b(0x1bc)](_0x1f44b5[_0x16792b(0x201)])&&_0x5d2dc3[_0x16792b(0x1ef)](_0x1f44b5[_0x16792b(0x201)][_0x16792b(0x302)],0x0);}function generateSoftDeleteFkParentsCheck(_0x30d8db){const _0x525a28=a0_0x1db3,_0x9f350b={'dEWsL':function(_0x11c777,_0x37bbd1){return _0x11c777(_0x37bbd1);}};if(!_0x9f350b['dEWsL'](hasSoftDeleteFkParents,_0x30d8db))return'';const _0xb0ae74=_0x30d8db[_0x525a28(0x201)][_0x525a28(0x1c1)]((_0x2ad491,_0x23d302)=>{const _0x175af0=_0x525a28,_0x4782ca=_0x2ad491['columns'][0x0],_0x8bf31f=_0x2ad491['refTable'],_0x2d817b=_0x2ad491[_0x175af0(0x2e8)][0x0];return _0x175af0(0x202)+_0x23d302+'\x20\x27'+_0x4782ca+_0x175af0(0x360)+_0x8bf31f+'.'+_0x2d817b+_0x175af0(0x29e)+_0x4782ca+_0x175af0(0x254)+_0x8bf31f+_0x175af0(0x36b)+_0x2d817b+_0x175af0(0x2d5)+IS_DELETED_COLUMN+_0x175af0(0x24f)+_0x8bf31f+'\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 _0x525a28(0x2ac)+_0xb0ae74+_0x525a28(0x263);}function createPostgresModelTemplate(_0x326840,_0x9af10d,_0x213503){const _0x4c012a=a0_0x1db3,_0x24eb74={'HXzOC':function(_0x42d08b,_0x596f0d){return _0x42d08b!==_0x596f0d;},'tusaR':function(_0x38a09e,_0x4209ed){return _0x38a09e+_0x4209ed;},'mxpwi':'\x20WHERE\x20','CnCHD':'\x20=\x20','LSlOk':function(_0x449856,_0x3b12a8){return _0x449856(_0x3b12a8);},'mFZLF':function(_0x393223,_0x5eca59){return _0x393223(_0x5eca59);},'DGRVg':function(_0x46f4d7,_0x234ffa){return _0x46f4d7(_0x234ffa);},'mvBjf':function(_0x59f3e0,_0x12860b,_0x30eed5){return _0x59f3e0(_0x12860b,_0x30eed5);},'hTefM':function(_0x51a8ef,_0x19240c,_0x238195){return _0x51a8ef(_0x19240c,_0x238195);},'SZnXF':function(_0x48c303,_0x1f1438){return _0x48c303(_0x1f1438);},'eDbin':'data\x20||\x20[]','jqEZh':function(_0x212fbb,_0x41845e,_0x3844cc){return _0x212fbb(_0x41845e,_0x3844cc);},'kGJIy':function(_0x5ea192,_0x445710){return _0x5ea192>_0x445710;},'rqdCs':'datatablesQuery','EdIUD':_0x4c012a(0x232),'WfeKo':function(_0x28030e,_0x1db7ad){return _0x28030e+_0x1db7ad;},'pRmmW':function(_0x1cf2c6,_0x158aef){return _0x1cf2c6+_0x158aef;},'lrHVe':_0x4c012a(0x333),'NeOaa':function(_0x533eb2){return _0x533eb2();},'oeXIS':function(_0x41e93e,_0x211c83){return _0x41e93e(_0x211c83);}};_0x24eb74['LSlOk'](assertNoFileReferenceLeftover,_0x213503);const _0x343088=FileUtils['toPascalCase'](_0x9af10d),_0x4d64dd=new Date()[_0x4c012a(0x378)]()[_0x4c012a(0x2f5)]('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x4d97c0=_0x24eb74[_0x4c012a(0x38a)](buildValidFieldsString,_0x213503),_0x2c2550=_0x24eb74['mFZLF'](buildSearchColumnsCode,_0x213503),_0xa11b94=_0x24eb74['DGRVg'](buildFiltersCode,_0x213503),_0x3ea495=_0x24eb74['mvBjf'](buildLookupOverrideCode,_0x9af10d,_0x213503),_0x5ef5c4=_0x24eb74[_0x4c012a(0x38a)](buildAdvancedQuerySection,_0x213503),_0x3eb60e=buildFieldMappingCode(_0x213503),_0x1389d5=_0x24eb74[_0x4c012a(0x368)](buildAuditColumnsSection,_0x213503,'\x20\x20\x20\x20'),_0x270c74=_0x24eb74[_0x4c012a(0x2e2)](buildFormatResponseDataBody,_0x213503),_0x414ead=_0x24eb74[_0x4c012a(0x19a)](isSoftDeleteEnabled,_0x213503)?'(data\x20||\x20[]).map(__row\x20=>\x20{\x20const\x20__r\x20=\x20{\x20...__row\x20};\x20for\x20(const\x20__sdCol\x20of\x20'+JSON[_0x4c012a(0x2c4)](SOFT_DELETE_COLUMNS)+')\x20delete\x20__r[__sdCol];\x20return\x20__r;\x20})':_0x24eb74[_0x4c012a(0x2f4)],_0x1504c3=_0x213503[_0x4c012a(0x2ec)]&&_0x213503['defaultScope']['read']?_0x24eb74['jqEZh'](buildDefaultScopeSQL,_0x213503[_0x4c012a(0x2ec)]['read'],''):'',_0x1d548c=((()=>{const _0x1a1eee=_0x4c012a,_0x227eb8=softDeleteVisibilityFilter(_0x213503);return _0x24eb74['HXzOC'](_0x227eb8,null)?_0x24eb74['tusaR'](_0x24eb74['tusaR'](_0x24eb74[_0x1a1eee(0x1b0)](_0x24eb74[_0x1a1eee(0x260)],IS_DELETED_COLUMN),_0x24eb74[_0x1a1eee(0x36c)]),_0x227eb8):'';})()),_0x5cb891=_0x213503['viewName']||_0x213503[_0x4c012a(0x1e9)],_0x540baf=_0x213503['tableName'];return _0x4c012a(0x24c)+_0x343088+'\x20Model\x20-\x20Auto-generated\x20on\x20'+_0x4d64dd+_0x4c012a(0x1b1)+_0x9af10d+'\x20yang\x20mewarisi\x20fungsi-fungsi\x20dari\x20BaseModel\x0a\x20*\x20Table:\x20'+_0x213503['tableName']+(_0x213503['viewName']?'\x0a\x20*\x20View:\x20'+_0x213503['viewName']:'')+'\x0a\x20*\x20Fields:\x20'+(_0x213503[_0x4c012a(0x2cc)]?_0x213503['fieldName'][_0x4c012a(0x302)]:0x0)+_0x4c012a(0x311)+_0x343088+_0x4c012a(0x345)+_0x9af10d+_0x4c012a(0x217)+_0x4d97c0+_0x4c012a(0x20f)+(_0x213503[_0x4c012a(0x35c)]?JSON[_0x4c012a(0x2c4)](_0x213503['datatablesWhere']):'[\x27name\x27,\x20\x27nama\x27,\x20\x27code\x27,\x20\x27kode\x27,\x20\x27all\x27]')+';\x0a\x0a\x20\x20\x20\x20//\x20Panggil\x20constructor\x20parent\x20dengan\x20nama\x20tabel,\x20validFields,\x20dan\x20datatablesWhere\x0a\x20\x20\x20\x20super(\x27'+_0x213503['tableName']+'\x27,\x20validFields,\x20datatablesWhere);\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'+(_0x213503['primaryKey']||_0x213503[_0x4c012a(0x2cc)]&&_0x213503[_0x4c012a(0x2cc)][0x0]||'id')+_0x4c012a(0x380)+_0x5cb891+'\x27;\x0a\x20\x20\x20\x20this.readSource\x20=\x20\x27'+_0x5cb891+'\x27;\x20//\x20Source\x20untuk\x20operasi\x20read\x20(get,\x20list,\x20lookup,\x20datatables)\x0a\x20\x20\x20\x20this.writeSource\x20=\x20\x27'+_0x540baf+_0x4c012a(0x247)+_0x1389d5+'\x0a\x20\x20\x20\x20//\x20Flag\x20untuk\x20self-documenting\x20API\x20(endpoint\x20/info)\x0a\x20\x20\x20\x20this.hasViewQuery\x20=\x20'+!!_0x213503[_0x4c012a(0x232)]+_0x4c012a(0x22b)+!!_0x213503['exportQuery']+';\x0a\x0a\x20\x20\x20\x20//\x20Load\x20advanced\x20query\x20templates\x0a\x20\x20\x20\x20this.advancedQueryTemplates\x20=\x20this.loadAdvancedQueryTemplates();\x0a\x20\x20\x20\x20'+(_0x213503['dateTimeFields']&&_0x24eb74[_0x4c012a(0x248)](Object[_0x4c012a(0x280)](_0x213503[_0x4c012a(0x1ac)])[_0x4c012a(0x302)],0x0)?'\x0a\x20\x20\x20\x20//\x20DateTime\x20fields\x20configuration\x0a\x20\x20\x20\x20this.dateTimeFields\x20=\x20'+JSON['stringify'](_0x213503[_0x4c012a(0x1ac)],null,0x6)+_0x4c012a(0x297):'')+(_0x213503[_0x4c012a(0x26b)]&&_0x213503[_0x4c012a(0x26b)]['fields']?'\x0a\x20\x20\x20\x20//\x20File\x20upload\x20fields\x20(JSONB\x20columns)\x0a\x20\x20\x20\x20this.fileFields\x20=\x20'+JSON['stringify'](Object[_0x4c012a(0x280)](_0x213503['uploadConfig'][_0x4c012a(0x27b)]))+';\x0a\x20\x20\x20\x20':'')+'\x0a'+_generateValidationConfig(_0x213503['fieldValidation'])+_0x4c012a(0x1e1)+_0x9af10d+'\x27,\x0a\x20\x20\x20\x20\x20\x20moduleName:\x20\x27'+_0x326840+_0x4c012a(0x29c)+_0x213503[_0x4c012a(0x1e9)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20viewName:\x20\x27'+_0x5cb891+'\x27,\x0a\x20\x20\x20\x20\x20\x20fieldCount:\x20'+(_0x213503[_0x4c012a(0x2cc)]?_0x213503[_0x4c012a(0x2cc)]['length']:0x0)+_0x4c012a(0x37d)+_0x4d64dd+_0x4c012a(0x2bb)+JSON['stringify'](_0x213503[_0x4c012a(0x298)]?.['features']||[])+_0x4c012a(0x281)+_0x5ef5c4+_0x4c012a(0x373)+_0x9af10d+_0x4c012a(0x393)+_0x9af10d+'\x0a\x20\x20\x20*/\x0a\x20\x20getListQuery(options\x20=\x20{})\x20{\x0a\x20\x20\x20\x20//\x20Load\x20query\x20dasar\x20dengan\x20placeholder\x20replacement\x0a\x20\x20\x20\x20'+_0x24eb74['hTefM'](buildQueryLoadingCode,_0x213503['datatablesQuery'],_0x24eb74[_0x4c012a(0x242)])+'\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'+(_0x213503['viewQuery']?_0x4c012a(0x1aa)+buildQueryLoadingCode(_0x213503[_0x4c012a(0x232)],_0x24eb74[_0x4c012a(0x26a)])+'\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;':'\x20\x20\x20\x20//\x20Fallback:\x20gunakan\x20readSource\x20langsung\x20(semua\x20kolom\x20tersedia)\x0a\x20\x20\x20\x20return\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;')+_0x4c012a(0x325)+_0x1d548c+_0x4c012a(0x386)+(_0x1d548c?_0x24eb74[_0x4c012a(0x285)](_0x24eb74['pRmmW'](_0x24eb74[_0x4c012a(0x29a)],_0x1d548c),'\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);\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.validFields.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\x20baseQuery\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=\x20\x27SELECT\x20*\x20FROM\x20\x27\x20+\x20this.readSource;\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`'+(_0x1504c3?_0x4c012a(0x198)+_0x1504c3:'')+_0x4c012a(0x22d)+(_0x1504c3?'whereClause\x20+=\x20`\x20AND\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;':'whereClause\x20=\x20`WHERE\x20UPPER(${searchBy})\x20LIKE\x20UPPER(\x27${likeValue}\x27)`;')+_0x4c012a(0x199)+_0x1d548c+_0x4c012a(0x276)+(_0x1d548c?_0x24eb74[_0x4c012a(0x29a)]+_0x1d548c+'\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);\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'+_0x414ead+',\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'+_0x2c2550+'\x0a\x0a'+_0xa11b94+'\x0a\x0a'+_0x3ea495+'\x0a\x0a'+_0x3eb60e+_0x4c012a(0x388)+_0x9af10d+'\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'+_0x9af10d+'\x0a\x20\x20\x20*/\x0a\x20\x20formatResponseData(data)\x20{\x0a'+_0x270c74+_0x4c012a(0x22a)+_0x24eb74['NeOaa'](_generateValidateFieldConstraints)+_0x4c012a(0x1fa)+generateCompositeMethods(_0x213503)+generateDeleteMethod(_0x213503)+generateRestoreMethod(_0x213503)+_0x24eb74[_0x4c012a(0x210)](generateSoftDeleteFkParentsCheck,_0x213503)+'\x0a}\x0a\x0a//\x20Export\x20singleton\x20instance\x0amodule.exports\x20=\x20new\x20'+_0x343088+_0x4c012a(0x1a1);}function a0_0x3f66(){const _0x5ce196=['icaGic8VicGVCMvHzcWGl2zPCNn0lcbKyxrHDgfIBgvZlcbJCMvHDguSihvWzgf0zsKGzgKGC2f0DsbJAg9RzxbVAw50lcb0yw5Wysb1yMfOiejHC2vnB2rLBc9NzxrszwfKuxvLCNKUcG','id09psbZzwXLy3rLzfrHzYKGEWOGicaGicaGicaGCMvZDwX0lNnLBgvJDgvKid0Gj3rYDwuNoWOGicaGicaGih0kcIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFsK7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbNzxrtDgf0AwnmB29RDxbeyxrHicG','y29Kzq','mta3ndi4zeTrvvDU','BK5WDgy','iefqssCScIaGicaGicaGicbKzxnJCMLWDgLVBJOGj0f1Dg8Tz2vUzxjHDgvKiefqssbTB2r1BguGzM9Yia','igXPC3qGzgf0ysCScIaGicaGigrLDgfPBhm6ihbYB2nLC3mUzw52lK5prevFru5wid09psaNzgv2zwXVCg1LBNqNid8GzxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0kFsK7cGO','AM9PBG','jYaOB25ezwXLDgu6ihjLC3rYAwn0ksiPoWOGicaGicaGicaGicaGihjLC3rYAwn0rxjYB3iUC3rHDhvZq29Kzsa9idqWotSkicaGicaGicaGicaGicb0AhjVDYbYzxn0CMLJDevYCM9YoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cIaGicaGicaGFq','jYWkicaGicaGzMvHDhvYzxm6ia','ksdIHPiGB3jPz2LUywWGkYaNiYmNicSGDxvPzhy3kcKkicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx29YAwCGpsbSB2nRzwrsB3DBjW','igrHDgeGC3vJy2vZC2z1BgX5igfKzgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUyw1IywHRyw4Gzgf0ysa','zgf0yxrHyMXLCW','zgvSzxrLigHLywrLCKrHDgfgB3jwywXPzgf0Aw9UlG','jYWkicaGicaGicaGigrVy3vTzw50yxrPB246icDtzwuGAw5KAxzPzhvHBcbLBMrWB2LUDcbKB2n1BwvUDgf0Aw9UjYWkicaGicaGicaGigDLBMvYyxrLzdOGjW','ktOGCgfYzw50ihDHAMLIia','cIaGicaVlYbwywXPzgfZAsbWCMLTyxj5igTLEqOGicaGy29UC3qGChjPBwfYEuTLEsa9icC','zMLLBgq','C3rYAw5NAwz5','cIaGlYOQcIaGicOGrgvSzxrLigrHDgeGD2L0AcbJyxnJywrLrgvSzxrLihn1ChbVCNqkicaGkIbaCgfYyw0GE09IAMvJDh0GB3b0Aw9UCYaTierLBgv0zsbVChrPB25ZihDPDgGGD2HLCMuGy2XHDxnLcIaGicOGqhbHCMfTihTpyMPLy3r9igv2zw50q29UDgv4DcaTiev2zw50igXPzMvJEwnSzsbJB250zxH0icHVChrPB25HBcKkicaGkIbaCMv0DxjUCYb7uhjVBwLZztXpyMPLy3q+FsbezwXLDguGCMvZDwX0cIaGicOVcIaGyxn5BMmGzgvSzxrLrgf0ysHVChrPB25ZlcbLDMvUDenVBNrLEhqGpsbUDwXSksb7cIaGicbJB25ZDcbWB29Sid0GzgiUz2v0ug9VBcGPoWOGicaGy29UC3qGy2XPzw50id0GyxDHAxqGCg9VBc5JB25Uzwn0kcK7cGOGicaGDhj5ihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDcruDjtICPoWOkicaGicaGlY8GrxH0CMfJDcb3AgvYzsbJBgf1C2ukicaGicaGy29UC3qGD2HLCMuGpsbVChrPB25ZlNDOzxjLihX8ifTDoWOGicaGicbPzIaOixDOzxjLihX8ihDOzxjLlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNv2HLCMuGy2XHDxnLigLZihjLCxvPCMvKigzVCIbKzwXLDguGB3bLCMf0Aw9UjYK7cIaGicaGih0kcIaGicaGic8Viej1AwXKifDirvjfignSyxvZzqOGicaGicbSzxqGD2HLCMvdBgf1C2uGpsaNjZSkicaGicaGy29UC3qGCgfYyw1Zid0Gw107cIaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSkcIaGicaGigLMicHbCNjHEs5PC0fYCMf5khDOzxjLksKGEWOGicaGicaGignVBNn0ignVBMrPDgLVBNmGpsb3AgvYzs5TyxaOy29UzgL0Aw9Uid0+ihSkicaGicaGicaGihbHCMfTCY5WDxnOkgnVBMrPDgLVBI52ywX1zsK7cIaGicaGicaGicbYzxr1CM4Gycr7y29UzgL0Aw9UlMTLEx0GpsaKjhTWyxjHBuLUzgv4kYT9ydSkicaGicaGicb9ktSkicaGicaGicb3AgvYzunSyxvZzsa9ignVBMrPDgLVBNmUAM9PBIGNieforcaNktSkicaGicaGFsbLBhnLigLMicH3AgvYzs5JB25KAxrPB25Zksb7cIaGicaGicaGlY8GsgfUzgXLignVBxbSzxGGD2HLCMuGzM9YBwf0cIaGicaGicaGy29UC3qGy29UzgL0Aw9UCYa9ihDOzxjLlMnVBMrPDgLVBNmUBwfWkgnVBMrPDgLVBIa9pIb7cIaGicaGicaGicbWyxjHBxmUChvZAcHJB25KAxrPB24UDMfSDwuPoWOGicaGicaGicaGy29UC3qGB3bLCMf0B3iGpsbJB25KAxrPB24UB3bLCMf0B3iGFhWGjZ0NoWOGicaGicaGicaGCMv0DxjUigaKE2nVBMrPDgLVBI5RzxL9icr7B3bLCMf0B3j9icqKE3bHCMfTsw5KzxGRk31GoWOGicaGicaGih0PoWOGicaGicaGignVBNn0igXVz2LJid0GD2HLCMuUBg9NAwmGFhWGj0forcC7cIaGicaGicaGD2HLCMvdBgf1C2uGpsbJB25KAxrPB25ZlMPVAw4OycaKE2XVz2LJFsbGktSkicaGicaGFqOkicaGicaGAwyGkcf3AgvYzunSyxvZzsKGEWOGicaGicaGihrOCM93ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJBgf1C2uGzM9YBwf0jYK7cIaGicaGih0kcIaGicaGia','A2fMA2e','ieforca','ntG1ndqXCgnlEKrc','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj2LUC2vYDcCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','Dvv0yMu','EWOGicaGicaGicaGiG','zMLLBgroyw1L','BwfZDgvY','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbeEw5HBwLJigXVB2T1CcbKzw5Nyw4GC3vWCg9YDcbMAwX0zxjPBMCGDgfTyMfOyw4GzgfUihbLBMnHCMLHBIbTDwX0As1MAwvSzaOGicaQiebWyxjHBsb7C3rYAw5NFsbZzwfYy2GGlsblyxrHigT1BMnPihbLBMnHCMLHBGOGicaQiebWyxjHBsb7t2jQzwn0FsbLEhrYyuzPBhrLCNmGlsbgAwX0zxiGDgfTyMfOyw4Gkg1PC2fSoIbJB21Wyw55x2LKkqOGicaQiebYzxr1CM5ZihTbCNjHEx0GqxjYyxKGB2jQzwSGAgfZAwWGBg9VA3vWcIaGicOVcIaGyxn5BMmGz2v0tg9VA3vWrgf0yur5BMfTAwmOC2vHCMnOlcbLEhrYyuzPBhrLCNmGpsb7FsKGEWOGicaGDhj5ihSkicaGicaGlY8Gr3vUywTHBIbJDxn0B20GBg9VA3vWignVBMzPzYbQAwTHigfKysWGzMfSBgjHy2SGA2uGDgv4DezPzwXKCYbKzxrLy3rPB24kicaGicaGy29UC3qGBg9VA3vWq29UzMLNid0G','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj2nYzwf0zsCPoWO','ywDNCMvNyxrLq29UzMLN','cI8VieDfvcaVyxbPlW','ywrQDxn0q29UzMLN','Bun4Bw8','jYWkicaGicaGzgf0ytOGCMvZDwX0laOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cGOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ignVBxbVC2L0zsbJCMvHDguG','id0GjdeGqu5eia','cIaGicaGih07cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbKzwXLDgveyxrHoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9igzPBMfSBhKGEWOGicaGicbJBgLLBNqUCMvSzwfZzsGPoWOGicaGFqOGih0k','cIaGicaGicaGlY8GCMv1C2fIBguGjW','sLbxrgW','DKPfBfO','cI8Vifbpu1qGl2fWAs8','zMLSDgvYCW','AxrLBxm','id0GjW','jhT3AgvYzvjLC3vSDc5ZCwX9','y29UC3qGzgv0ywLSuxvLCNKGpsbG','id0GCMvXDwLYzsGNlI4VlI4VBw9KzwXZlW','ihn0AwXSignVBNrHAw5ZicjMAwXLoIiGCMvMzxjLBMnLicG','u1PUwey','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','wwLTrMi','ksb8FcaWktS','CMvMq29SDw1UCW','CNz6tMq','lNvWzgf0zunVBxbVC2L0zsHKyxrHlcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','laOGicaGicaGihrLEhq6igL0zw0U','zgvMyxvSDfnJB3bL','laOGicaGicbKyxrLrMLLBgrZoIa','lNzHBgLKyxrLrgf0ysHOzwfKzxjeyxrHrM9YvMfSAwrHDgLVBIWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GtwvYz2uGC2fUAxrPEMvKigrHDgeGkhrLCM1HC3vRigHHC2GGCMvZDwX0ksbRzw1IywXPigTLigrHDgekicaGicaGt2jQzwn0lMfZC2LNBIHKyxrHlcb2ywXPzgf0Aw9UlNnHBML0AxPLzerHDgePoWOGicaGFqOkicaGia','ignVBxbVC2L0zsbKyxrHjYWkicaGicaGzgv0ywLSCZOGChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCGpYbLCNjVCI5TzxnZywDLidOGDw5KzwzPBMvKlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktSkcG','jZSkicaGicaG','oIaKE3jLC3vSDc5JB21WB25LBNrZtg9HzgvKFsbJB21WB25LBNrZycK7cIaGicaGih0kicaGih0PlMnHDgnOkgvYCIa9pIb7cIaGicaGignVBNnVBguUzxjYB3iOyezHAwXLzcb0BYbSB2fKignVBxbVBMvUDcbJB25MAwD1CMf0Aw9UigzVCIa','ihLHBMCGDgvYlxnVzNqTzgvSzxrLicHsmJaPcNjVDxrLCI5WB3n0kcCVCMvZDg9YzsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOiufYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPicyMicfYzxeUyM9KEs53AgvYzs5JB25KAxrPB25Zksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBcIaGicaGicaGicaGihSGiMTLEsi6icjPzciSicj2ywX1zsi6icj5B3vYlwLKlxzHBhvLiIb9cIaGicaGicaGicbDcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbszxn0B3jLigfKywXHAcbLDMvUDcbSAwzLy3LJBgu6ig1VzgvSlNjLC3rVCMveyxrHig1LBMPHBgfUA2fUihrYyw5ZywTZAw55ysbZzw5KAxjPcIaGicaVlYaOu0vmrunuiezpuIbvuerbveuG4OAsihn0CMLWl2TVBMzSAwSVrKSG4OAsihjLC2v0iokgKIbdt01nsvqG4OAsigLUDMfSAwrHDgvdywnOzsKUcIaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGihrHyMXLtMfTztOGjW','cGOGicaGicbJB25ZDcbKzxrHAwXqCMLTyxj5s2v5id0GjW','zurIAw4','CMvWBgfJzq','igXPC3q6jYWGzxjYB3iPoWOGicaGy29UC3qGC3rHDhvZq29Kzsa9igvYCM9YlNn0yxr1C0nVzguGFhWGntaWoWOGicaGCMv0DxjUihjLCY5ZDgf0DxmOC3rHDhvZq29KzsKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGC3rHDhvZq29Kzsa9pt0GndaWid8Gj0jHzcbszxf1zxn0jYa6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIbZDgf0DxndB2rLid09psa0mdaGpYbLCNjVCI5TzxnZywDLidOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigzLDgnOAw5Nia','oWOGicaGicbJB25ZDcbKzwzHDwX0u2vSzwn0id0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0cIaGicaGicaGpYbBiMLKiIWGBg9VA3vWq29UzMLNlNrLEhrgAwvSzf0kicaGicaGica6ifSIAwqIlcaI','y29SDw1UCW','x2LK','jYWGDMfSDwu6ihnJB3bLvMfSDwuGFtSkcIaGlY8GuKvbrcbVCgvYyxrPB25ZoIbPBMPLy3qGC2nVCguGAw50BYbYzxeUyM9KEs53AgvYzqOGigLMicHBj2rHDgf0ywjSzxmNlcaNCMvHzcCSicDSB29RDxaNlcaNCMvHzc1JB21WB3nPDguNxs5PBMnSDwrLCYHLBMrWB2LUDcKPihSkicaGigLMicGHCMvXlMjVzhKUD2HLCMuPihSkicaGicaGCMvXlMjVzhKUD2HLCMuGpsbBC2nVCgvdB25KAxrPB25DoWOGicaGFsbLBhnLigLMicHbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksKGEWOGicaGicbYzxeUyM9KEs53AgvYzs51BNnOAwz0khnJB3bLq29UzgL0Aw9UktSkicaGih0GzwXZzsbPzIaOCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPksb7cIaGicaGignVBNn0ig9YAwDPBMfStg9NAwmGpsbYzxeUyM9KEs53AgvYzs5SB2DPyYb8FcaNqu5ejZSkicaGicaGAwyGkg9YAwDPBMfStg9NAwmGpt09icDbtKqNksb7cIaGicaGicaGCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCY51BNnOAwz0khnJB3bLq29UzgL0Aw9UktSkicaGicaGFsbLBhnLihSkicaGicaGicbYzxeUyM9KEs53AgvYzsa9ihSkicaGicaGicaGigXVz2LJoIaNqu5ejYWkicaGicaGicaGignVBMrPDgLVBNm6ifSkicaGicaGicaGicaGC2nVCgvdB25KAxrPB24ScIaGicaGicaGicaGihSGBg9NAwm6ig9YAwDPBMfStg9NAwmSignVBMrPDgLVBNm6ihjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmGFqOGicaGicaGicaGxqOGicaGicaGih07cIaGicaGih0kicaGih0kicb9cGOGic8VierftevurtOGChjLCgvUzcbZy29WzsbJB25KAxrPB24GDg8GD2HLCMuGyxjYyxKkicbPzIaOzw5KCg9PBNqGpt09icDKzwXLDguNksb7cIaGicbPzIaOCMvXlMjVzhKUD2HLCMuPihSkicaGicaGAwyGkefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUD2HLCMuPksb7cIaGicaGicaGCMvXlMjVzhKUD2HLCMuUDw5ZAgLMDcHZy29WzunVBMrPDgLVBIK7cIaGicaGih0kicaGih0kicb9cGOGic8ViensrufursaVieferdOGzM9Yy2uGC2nVCguGy29SDw1UihzHBhvLcIaGAwyGkgvUzhbVAw50id09psaNywrKjYb8FcbLBMrWB2LUDca9pt0Gj2nYzwf0zsCPihSkicaGihjLCs5IB2r5wYC','Cxr5rMLLBgq','cI8VieTHzMTHifbYB2r1y2vYifnLCNzPy2uGDw50DwSGzxzLBNqGChvIBgLZAgLUzWPSzxqGA2fMA2ftzxj2AwnLid0GBNvSBdSkDhj5ihSkicbRywzRyvnLCNzPy2uGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3nLCNzPy2vZl2THzMTHu2vYDMLJzsCPlMDLDeLUC3rHBMnLkcK7cN0Gy2f0y2GGkguPihSkicbJB25ZB2XLlMvYCM9YkcDduKLusunbtdOGs2fMA2eGC2vYDMLJzsbMywLSzwqGDg8GBg9HzcbIDxqGs2fMA2eGChvIBgLZAgLUzYbPCYbJB25MAwD1CMvKoICSiguUBwvZC2fNzsK7cIaGDgHYB3CGztSkFqOklY8Gs2fMA2eGy29UzMLNDxjHDgLVBIbKyxjPihbHEwXVywqky29UC3qGA2fMA2fdB25MAwCGpsa','C29MDerLBgv0zq','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGDgvYAgfWDxmVywjZzw4G4OAsidqYmIaOC2HHCguGC2vSyxjHCYbgsYbYzxn0B3jLifiYmcKUcIaGicbPzIaOzxjYB3iUC3rHDhvZq29Kzsa9pt0GndiYksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqYmIKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDvBNbYB2nLC3nHyMXLievUDgL0EsCScIaGicaGicaGBwvZC2fNztOGzxjYB3iUBwvZC2fNzsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','Dg90ywXFyw1VDw50','oWOGih0kcIaGlYOQcIaGicOGqNvPBgqGC2vHCMnOifDirvjfignSyxvZzsbIzxjKyxnHCMTHBIbZzwfYy2HHyMXLignVBhvTBNmkicaGkIbaCgfYyw0GE3n0CMLUz30GC2vHCMnOvMfSDwuGlsboAwXHAsbWzw5JyxjPyw4kicaGkIbaCgfYyw0GE3n0CMLUz30GC2vHCMnOqNKGlsblB2XVBsb5yw5NigrPy2fYAqOGicaQiebYzxr1CM5ZihTZDhjPBMD9ifDirvjfignSyxvZzqOGicaQlWOGigj1AwXKu2vHCMnOv2HLCMvdBgf1C2uOC2vHCMnOvMfSDwuSihnLyxjJAej5id0Gj2fSBcCPihSkicaGigLMicGHC2vHCMnOvMfSDwuGFhWGC2vHCMnOvMfSDwuUDhjPBsGPid09psaNjYKGEWOGicaGicbYzxr1CM4GjYC7cIaGicb9cGOGicaGy29UC3qGC2vHCMnOywjSzunVBhvTBNmGpsb0AgLZlMDLDfnLyxjJAgfIBgvdB2X1Bw5ZkcK7cIaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGy29UC3qGBgLRzvzHBhvLid0GycuKE2vZy2fWzwrtzwfYy2HwywX1zx0LydSkcIaGicbPzIaOC2vHCMnOqNKGjIyGC2vHCMnOqNKGit09icDHBgWNksb7cIaGicaGic8VienHCMKGzgKGA29SB20GC3bLC2LMAwSkicaGicaGy29UC3qGy29SDw1Uid0GC2vHCMnOywjSzunVBhvTBNmUzMLUzcHJB2WGpt4Gy29SlM5HBwuGpt09ihnLyxjJAej5ktSkicaGicaGAwyGkgnVBhvTBIaMjIbJB2X1Bw4UC2vHCMnOywjSzsKGEWOGicaGicaGihjLDhvYBIbGv0HfuKuGvvbqrviOjhTZzwfYy2HcEx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPydSkicaGicaGFqOGicaGFqOkicaGic8VienHCMKGzgKGC2vTDweGA29SB20GC2vHCMnOywjSzqOGicaGy29UC3qGy29UzgL0Aw9UCYa9ihnLyxjJAgfIBgvdB2X1Bw5ZcIaGicaGic5MAwX0zxiOy29Sid0+ignVBc5ZzwfYy2HHyMXLkqOGicaGicaUBwfWkgnVBca9pIbGvvbqrviOjhTJB2WUBMfTzx0PieXjs0uGvvbqrviOjYr7BgLRzvzHBhvLFsCPycK7cGOGicaGAwyGkgnVBMrPDgLVBNmUBgvUz3rOid4GmcKGEWOGicaGicbYzxr1CM4GyfDirvjficGKE2nVBMrPDgLVBNmUAM9PBIGNie9sicCPFsLGoWOGicaGFqOkicaGihjLDhvYBIaNjZSkicb9','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicaGih0PoWOGicaGicaGih0kcIaGicaGicaGlY8Gu2LTCgfUigrHDgeGDw50DwSGzxzLBNqGBgLMzwn5y2XLigrHBIbKzwj1zWOGicaGicaGig9SzerHDgeGpsbLEgLZDgLUz0rHDgeUzgf0yvSWxtSkcIaGicaGih0Gy2f0y2GGkgnOzwnRrxjYB3iPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj1zLCMLMAwnHDgLVBIbgywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0nVDwXKig5VDcb2zxjPzNKGzgf0ysbLEgLZDgvUy2uGyMvMB3jLigrLBgv0zsCScIaGicaGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/ignOzwnRrxjYB3iUBwvZC2fNzsa6ihvUzgvMAw5LzcWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0kcIaGicaVlYa9pt0Gsw50zwDYyxrLzcbuCMfUC2fJDgLVBIbKzw5Nyw4GrxzLBNqGtgLMzwn5y2XLid09pqOGicaGlY8GB25czwzVCMuGkYbTywLUig9WzxjHDgLVBIaRig9Uqwz0zxiGzgLLA3nLA3vZAsbKywXHBsbZyxr1ihrYyw5Zywn0Aw9UihnJB3bLcIaGicaVlYbKAsbKywXHBsbTB2rLBc5LEgvJDxrLvhjHBNnHy3rPB25xAxrOrxzLBNrZkcKkicaGigLMicHJB21WB25LBNrfBMDPBMuGjIyGq29UDgv4Dej1AwXKzxiPihSkicaGicaGlY8Gr3vUywTHBIbPBNrLz3jHDgvKihrYyw5Zywn0Aw9Uig1VzgvSigrLBMDHBIbLDMvUDcbSAwzLy3LJBgukicaGicaGDhj5ihSkicaGicaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicaGienVBNrLEhrcDwLSzgvYoIbdB250zxH0qNvPBgrLCIWkicaGicaGicaGihrHyMXLtMfTztOGjW','BgvUz3rO','cIaGicaVlYbhzxqGy29YCMvSyxrPB24GsuqGzNjVBsbOzwfKzxiGkg9WDgLVBMfSkqOGicaGy29UC3qGy29YCMvSyxrPB25jzca9ihjLCs5OzwfKzxjZwYD4lwnVCNjLBgf0Aw9UlwLKj10GFhWGBNvSBdSk','ksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKig11C3qGAgf2zsbWCM9Wzxj0EsaI','nZuZntG4vxjLvvzl','iIWkicaGicaGicaGicaGicaIzgLYzwn0Aw9UiJOGiKftqYikicaGicaGicaGicaGFqOGicaGicaGicaGxqOGicaGicaGih0ScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','C3rYAw5N','Dgv4DezPzwXKCW','jYK7cGOGicaGicb0CNKGEWOGicaGicaGic8VievUC3vYzsbTB2r1BgvZigrPCMvJDg9YEsbLEgLZDhmkicaGicaGicbPzIaOiwzZlMv4Axn0C1n5BMmOBw9KDwXLC0rPCIKPihSkicaGicaGicaGigzZlM1RzgLYu3LUyYHTB2r1BgvZrgLYlcb7ihjLy3vYC2L2ztOGDhj1zsb9ktSkicaGicaGicaGignVBNnVBguUBg9NkgbdCMvHDgvKig1VzhvSzxmGzgLYzwn0B3j5oIaKE21VzhvSzxneAxj9ycK7cIaGicaGicaGFqOkicaGicaGicaVlYbszwfKigrHBIbSB2fKihnLBxvHigvUzhbVAw50igzPBgvZcIaGicaGicaGy29UC3qGzMLSzxmGpsbMCY5YzwfKzgLYu3LUyYHTB2r1BgvZrgLYktSkicaGicaGicbJB25ZDcbLBMrWB2LUDezPBgvZid0GzMLSzxmUzMLSDgvYkgzPBguGpt4GzMLSzs5LBMrZv2L0AcGNlMPZjYKPoWOkicaGicaGicbPzIaOzw5KCg9PBNrgAwXLCY5Szw5NDgGGpt09idaPihSkicaGicaGicaGignVBNnVBguUBg9NkgboBYbLBMrWB2LUDcbMAwXLCYbMB3vUzcbPBIaKE21VzhvSzxneAxj9ycK7cIaGicaGicaGicbJB25ZB2XLlMXVzYHGqwrKigvUzhbVAw50igzPBgvZihrVigvUywjSzsbbueKGzNvUy3rPB25HBgL0EwaPoWOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicbSB2DNzxiUAw5MBYH7igv2zw50oIaNzw5KCg9PBNrZx2XVywrPBMCNlcbJB3vUDdOGzw5KCg9PBNrgAwXLCY5Szw5NDgGGFsWGyeXVywrPBMCGjhTLBMrWB2LUDezPBgvZlMXLBMD0Ah0Gzw5KCg9PBNqOCYLGktSkicaGicaGicb9cGOGicaGicaGic8VifjLz2LZDgvYihnLDgLHCcbLBMrWB2LUDaOGicaGicaGigzVCIaOy29UC3qGzMLSzsbVzIbLBMrWB2LUDezPBgvZksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDe5HBwuGpsbWyxrOlMjHC2vUyw1LkgzPBguSicCUANmNktSkicaGicaGicaGicaGy29UC3qGzw5KCg9PBNrqyxrOid0GCgf0Ac5QB2LUkg1VzhvSzxneAxiSigzPBguPoWOkicaGicaGicaGicaGlY8Gq2XLyxiGBw9KDwXLignHy2HLihvUDhvRigrLDMvSB3bTzw50cIaGicaGicaGicaGigLMicHYzxf1AxjLlMnHy2HLw2vUzhbVAw50ugf0Af0PihSkicaGicaGicaGicaGicbKzwXLDguGCMvXDwLYzs5JywnOzvTLBMrWB2LUDfbHDgHDoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicbJB25ZDcbLBMrWB2LUDfjVDxrLCIa9ihjLCxvPCMuOzw5KCg9PBNrqyxrOktSkcIaGicaGicaGicaGigLMicGHzw5KCg9PBNrsB3v0zxiPihSkicaGicaGicaGicaGicbJB25ZB2XLlNDHCM4OyevUzhbVAw50icr7zw5KCg9PBNroyw1LFsbKAwqGBM90igv4Cg9YDcbHihjVDxrLCMaPoWOGicaGicaGicaGicaGignVBNrPBNvLoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIbLBMrWB2LUDcbKzw5Nyw4GChjLzML4cIaGicaGicaGicaGignVBNn0igvUzhbVAw50uhjLzML4id0Gyc9HCgKV','ywn0Aw9U','Bg9VA3vW','oICSigvYCM9YktSkcIaGicaVlYbsmJa6ihjLC3rVCMveyxrHig1LBgvTCgfYihn0yxr1C0nVzguGDw50DwSGA29UzgLZAsb0zxjRB250CM9SlGOGicaGAwyGkgvYCM9YlNn0yxr1C0nVzguGpt09idqWncKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGig1LC3nHz2u6icC','igrHDgeGBM90igzVDw5Kig9YigfJy2vZCYbKzw5PzwqNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqO','y29UC3rYywLUDhm','ydSkcIaGicaGic8ViejHBMD1BIbxsevsrsbJBgf1C2uGAMLRysbHzgeGzgfUihrPzgfRigTVC29UzWOGicaGicbPzIaOkg9WDgLVBNmUD2HLCMuGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLksaMjIbVChrPB25ZlNDOzxjLlMXLBMD0Aca+idaPihX8cIaGicaGicaGicaOB3b0Aw9UCY53AgvYzsaMjIbVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsHVChrPB25ZlNDOzxjLlMnVBMrPDgLVBNmPicyMig9WDgLVBNmUD2HLCMuUy29UzgL0Aw9UCY5Szw5NDgGGpIaWksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOB3b0Aw9UCY53AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGicaGihf1zxj5icS9iga','cIaGicaVlYbszxf1zxn0ihnJB3bLig93BMvYC2HPCcb2zxjPzMLJyxrPB24GkeXHEwvYideGuKXtkqOGicaGAwyGkhjLCs5FCMvXDwvZDfnJB3bLksb7cIaGicaGignVBNn0ihnJB3bLq2HLy2SGpsbHD2fPDca','igzPzwXKCWOGkIbeyxrHyMfZztOGug9ZDgDYzvnrtaOGkI8ky2XHC3mG','DfjvDwK','cIaGicbMB3iGkgnVBNn0if9FC2rdB2WGB2yG','ktSkicaGicaGicbJB25ZB2XLlMXVzYGNw0zbteXcqunlxsbbrePvu1qGy29TCgXLDgvKihDPDgHVDxqGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0zbteXcqunlxsbbrePvu1qGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9cGOGicaGlY8Gtg9Nihn1y2nLC3nMDwWGB3bLCMf0Aw9UcIaGicbJB25ZB2XLlMXVzYHG','laOGicaGicbJB21WB25LBNrZoIa','oMaSigvYCI5TzxnZywDLktSkicaGih0PoWOGih0kFsbJyxrJAcaOzsKGEWOGigLMicHOyxndB21WB25LBNrZksb7cIaGicaVlYbdB21WB25LBNrZigrPA29UzMLNDxjHC2KGDgfWAsbLBMDPBMuGz2fNywWGBg9HzcdIGjqGAw5PigvYCM9YlcbIDwTHBIbVChrPB25HBaOGicaGy29UC29Szs5LCNjVCIHGq1jjveLdquW6ienVBxbVBMvUDcbLBMDPBMuGzMfPBgvKihrVigXVywqGzM9Yia','vNzrqNu','l3vWzgf0zsaTie1LBMD1CgrHDguGzgf0ysa','ksb8FcaWoWOGicaGicaGignVBNn0ihbYAwnLid0GtNvTyMvYkgL0zw0U','oICSigvYCM9YktSkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbYzwfKAw5Nia','igjHCNukCM91DgvYlNbVC3qOjY9JCMvHDguNlcbHC3LUyYaOCMvXlcbYzxmPid0+ihSkicb0CNKGEWOGicaGlY8GCMvXlMXVzY5Kzwj1zYGNuMvXDwvZDcbIB2r5ia','tezeq2G','y29TCg9Uzw50CW','jYbMCM9Tia','iIbTDxn0igjLigfUig9IAMvJDcb3AxrOihn0CNvJDhvYzsb7Aw5Zzxj0oIbBxsWGDxbKyxrLoIbBxsWGzgvSzxrLoIbBxx0NlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8GvMfSAwrHC2KGC3rYDwn0DxjLoIbPBNnLCNqSihvWzgf0zsWGzgvSzxrLigHHCNvZigfYCMf5igPPA2eGywrHcIaGicaGignVBNn0ig9WzxjHDgLVBNmGpsbKyxrHlG','jYb5yw5NigjLBMfYcIaGicOGqhbHCMfTihTZDhjPBMD9ihnLBgvJDgvKvgfNic0GsuqGEwfUzYbKAxbPBgLOcIaGicOGqhjLDhvYBNmGE0fYCMf5FsbbCNjHEsbVyMPLAYbOyxnPBcbSB29RDxakicaGkI8kicbHC3LUyYbNzxrtDgf0AwnmB29RDxbeyxrHkhnLBgvJDgvKvgfNksb7cIaGicb0CNKGEWOGicaGicaVlYbdAgvJAYbJywnOzsbMAxjZDcaOAwyGzw5HyMXLzcKGlsbJywnOzsb0yw5WysbZzwXLy3rLzfrHzYbRyxjLBMeGzgf0ysbZyw1HcIaGicaGignVBNn0ignHy2HLt3b0Aw9UCYa9ihSGDhLWztOGj3n0yxrPyYCGFtSkicaGicaGy29UC3qGy2fJAgvKuMvZDwX0id0GyxDHAxqGDgHPCY5NzxrdywnOzwrmB29RDxaOy2fJAgvpChrPB25ZlcaNC3rHDgLJjYK7cIaGicaGigLMicHJywnOzwrszxn1BhqPihSkicaGicaGicaVlYbbChbSEsbZzwXLy3rLzfrHzYb0BYbJywnOzwqGCMvZDwX0cIaGicaGicaGCMv0DxjUignHy2HLzfjLC3vSDc5TyxaOAxrLBsa9pIb7cIaGicaGicaGicbPzIaOAxrLBs5Pzca9pt0GC2vSzwn0zwruywCPihSkicaGicaGicaGicaGCMv0DxjUihSGlI4UAxrLBsWGC2vSzwn0zwq6icD0CNvLjYb9oWOGicaGicaGicaGFqOGicaGicaGicaGCMv0DxjUihSGAwq6igL0zw0UAwqSihrLEhq6igL0zw0UDgv4Dcb9oWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbJB25ZDcbXDwvYEsa9icDtruXfq1qG','id0GrKfmu0u','jYb5yw5NigjLBMfYcIaGicOGqhbHCMfTihTZDhjPBMD9ihnLyxjJAcaTieTHDgeGA3vUy2KGCgvUy2fYAwfUcIaGicOGqhjLDhvYBNmGE0fYCMf5FsbbCNjHEsbVyMPLAYbOyxnPBcbSB29RDxakicaGkI8kicbHC3LUyYbNzxrmB29RDxbeyxrHkhnLyxjJAcKGEWOGicaGDhj5ihSkicaGicaGy29UC3qGCxvLCNKGpsaNu0vmrunuia','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOklY8Gue9tvcaVyxbPlW','ycK7cG','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zsa9icDxsevsrsaNicSGzMLSDgvYq2XHDxnLoWOGicaGicaGih0kicaGicaGFqOkicaGicaGlY8Gnc4GuhjVC2vZihbHCMfTzxrLCIb3AgvYzsbKzw5Nyw4GzM9YBwf0igfKDMfUy2vKignVBMrPDgLVBNmkicaGicaGBgv0ihDOzxjLugfYyw1Zid0Gw107cIaGicaGigLMicH3AgvYzsaMjIaOqxjYyxKUAxnbCNjHEsH3AgvYzsKGFhWGkhDOzxjLlMnVBMrPDgLVBNmGjIyGqxjYyxKUAxnbCNjHEsH3AgvYzs5JB25KAxrPB25ZksKPksb7cIaGicaGicaGDhj5ihSkicaGicaGicaGigXLDcbWyxjHBxmGpsbBxtSkicaGicaGicaGigXLDcbWyxjHBuLUzgv4id0GmtSkicaGicaGicaGignVBNn0ihDOzxjLuMvZDwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsH3AgvYzsWGCgfYyw1ZlcbWyxjHBuLUzgv4ktSkicaGicaGicaGigLMicH3AgvYzvjLC3vSDc5ZCwWPihSkicaGicaGicaGicaGAwyGkhDOzxjLq2XHDxnLksb7cIaGicaGicaGicaGicaGD2HLCMvdBgf1C2uGkZ0GjYbbtKqGkcCGkYb3AgvYzvjLC3vSDc5ZCwWGkYaNksC7cIaGicaGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaGicaGD2HLCMvdBgf1C2uGpsaNv0HfuKuGjYaRihDOzxjLuMvZDwX0lNnXBdSkicaGicaGicaGicaGFqOGicaGicaGicaGicb3AgvYzvbHCMfTCYa9ihDOzxjLuMvZDwX0lNbHCMfTCZSkicaGicaGicaGih0kicaGicaGicb9ignHDgnOicHLksb7cIaGicaGicaGicbJB25ZDcbLCNjVCIa9ig5LDYbfCNjVCIGNsw52ywXPzcb3AgvYzsbJB25KAxrPB25ZoIaNicSGzs5TzxnZywDLktSkicaGicaGicaGigvYCM9YlNn0yxr1C0nVzguGpsa0mda7cIaGicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8VienOzwnRigLMihf1zxj5ig5LzwrZihn1yNf1zxj5ihDYyxbWAw5NicHdveuGB3iGsK9jtIKkicaGicaGy29UC3qGAxndDgvrDwvYEsa9igjHC2vrDwvYEs50B0XVD2vYq2fZzsGPlNrYAw0Oks5ZDgfYDhnxAxrOkcD3AxrOjYK7cIaGicaGignVBNn0igHHC0PVAw4GpsaVxgiOAw5Uzxj8BgvMDhXYAwDODhXJCM9ZC3XMDwXSkvXZk2PVAw5CyI9PlNrLC3qOyMfZzvf1zxj5ksb8FcaVxgjQB2LUxgiVAs50zxn0kgjHC2vrDwvYEsK7cIaGicaGignVBNn0ig5LzwrZu3vICxvLCNKGpsbPC0n0zvf1zxj5ihX8igHHC0PVAw47cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GlsbNDw5HA2fUihjLywrtB3vYy2uGDw50DwSGCMvHzcbVCgvYyxrPB25ZcIaGicaGignVBNn0ignVDw50vg90ywXrDwvYEsa9ig5LzwrZu3vICxvLCNKGpWOGicaGicaGicDtruXfq1qGq09vtLqOkIKGyxmGDg90ywWGrLjptsaOjYaRigjHC2vrDwvYEsaRicCPigjHC2vFCxvLCNK','l3jLywq6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbYzxf1zxn0igjVzhKkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VierLDgvRC2KGBw9KztOGCgfNAw5HC2KGkhbHz2uGzgLRAxjPBsKGyxrHDsbUB24TCgfNAw5HC2KGkhbHz2uGDgLKywSGzgLRAxjPBsKkicaGignVBNn0ihbHz2LUyxrLid0GCMvXlMjVzhKUCgfNzsaHpt0GDw5KzwzPBMvKoWOGicaGy29UC3qGCgfNzsa9ihbHz2LUyxrLid8GCgfYC2vjBNqOCMvXlMjVzhKUCgfNzsWGmtaPidOGBNvSBdSkicaGignVBNn0ihbLCLbHz2uGpsbWywDPBMf0zsa/ihbHCNnLsw50khjLCs5IB2r5lNbLCL9WywDLihX8ideWlcaXmcKGoIbUDwXSoWOGicaGy29UC3qGBgLTAxqGpsaHCgfNAw5HDguGpYbnyxrOlM1PBIHnyxrOlM1HEcHWyxjZzuLUDcHYzxeUyM9KEs5SAw1PDcb8FcaXmdaWlcaXmcKSidePlca1mdaWksa6ig51BgW7cIaGicbJB25ZDcbZzwfYy2HwywX1zsa9ihjLCs5IB2r5lNnLyxjJAf92ywX1zsb8FcaNjZSkicaGignVBNn0ihnLyxjJAej5id0GCMvXlMjVzhKUC2vHCMnOx2j5ihX8icC','zM9YBxvSyq','cIaGicaGicaGlY8GqNvPBgqGzgv0ywLSieLou0vsvcbXDwvYEqOGicaGicaGignVBNn0igrLDgfPBezPzwXKCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfzHBhvLCYa9ifTDoWOGicaGicaGignVBNn0igrLDgfPBfbSywnLAg9SzgvYCYa9ifTDoWOGicaGicaGigXLDcbKzxrHAwXqBgfJzwHVBgrLCKLUzgv4id0GmtSkcIaGicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOAxrLBsKPihSkicaGicaGicaGia','jZSkicaGigXLDcbYzxn1BhqGpsbUDwXSoWOkicaGic8Vid09psbjBNrLz3jHDgvKifrYyw5Zywn0Aw9UigrLBMDHBIbfDMvUDcbmAwzLy3LJBguGpt09cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxzLBNrdB250zxH0id0GEWOGicaGicaGicaGy29TCg9Uzw50rw5NAw5LoIbJB21WB25LBNrfBMDPBMuScIaGicaGicaGicbdB250zxH0qNvPBgrLCJOGq29UDgv4Dej1AwXKzxiScIaGicaGicaGicb0ywjSzu5HBwu6icC','q1bfsem','iJOGiMv4Axn0Aw5NlwLKiIWkicaGicaGicaGicaGiMzPzwXKmsi6icj2ywX1zteIlaOGicaGicaGicaGicaIzMLLBgqYiJOGiNzHBhvLmIikicaGicaGicaGih0kicaGicaGicb9','jYWkicaGicaGicaGigzVCMvPz25lzxK6icC','jYWkicaGicaGicbHzgrPDgLVBMfSq29UDgv4DdOGEWOGicaGicaGicaGzgv0ywLSvgfIBgu6icC','ydSkcIaGicaGignVBNn0ihbHCMfTCYa9ifTGjsr7C2vHCMnOihX8icCNFsvGxtSkcIaGicaGignVBNn0igrHDgeGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOCxvLCNKSihbHCMfTCYK7cGOGicaGicbJB25ZDcbYzxn1BhqGpsbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw0U','oWOkicaGicaGicbJB25ZDcbYzxf1AxjLzezPzwXKCYa9ifSN','j107cIaGicaGicaGicbPzIaOx19VCMLNice9psbUDwXSicyMif9FB3jPzYaHpt0GDw5KzwzPBMvKksb7cIaGicaGicaGicaGignVBNn0if9FC3rYid0Gu3rYAw5Nkf9FB3jPzYK7cIaGicaGicaGicaGigLMicHFx3n0CI5Szw5NDgGGpIa','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwqNlaOGicaGicbKyxrHoIbYzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzw5NDxbKyxrLigrHDgeG','BwLZC2LUzW','icSGjW','ihn0yxrPyYbSB29RDxaGCMvXDwvZDcb3AxrOihnLBgvJDgvKx3rHzZOGjhTZzwXLy3rLzfrHz31GktSkcIaGicaGic8ViePPA2eGywrHigzPzwXKihnLBgvJDcbHDgf1ihnVCNrFy29SDw1UCYWGz3vUywTHBIbNzxrmB29RDxbeyxrHv2L0AezPBhrLCIbKzw5Nyw4GyM9KEsb5yw5NigrPBw9KAwzPA2fZAqOGicaGicbPzIaOkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihX8icHYzxeUyM9KEs5ZB3j0x2nVBhvTBNmGjIyGqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs5ZB3j0x2nVBhvTBNmPksKGEWOGicaGicaGignVBNnVBguUBg9NkcDgB3vUzcbZzwXLy3qGzMLLBgrZig9YihnVCNrFy29SDw1UCYWGDxnPBMCGz2v0tg9VA3vWrgf0yvDPDgHgAwX0zxiNktSkcIaGicaGicaGlY8GqNvHDcbIB2r5igjHCNuGzgvUz2fUihDOzxjLigTVC29UzYb1BNr1AYbTzw5Nyw1IAwWGC2vTDweGzgf0yqOGicaGicaGignVBNn0ig1VzgLMAwvKqM9KEsa9ihSkicaGicaGicaGic4UlNjLCs5IB2r5laOGicaGicaGicaGD2HLCMu6ifTDic8VievTChr5ihDOzxjLihvUDhvRig1LBMDHBwjPBcbZzw11ysbKyxrHcIaGicaGicaGFtSkcIaGicaGicaGy29UC3qGBgLZDca9igf3ywL0ia','cIaGicaGic8VignHC2nHzgvezwXLDguGpsbMywXZztOGt25SEsberuXfveuGAgvHzgvYihjLy29YzaOGicaGicaVlYbeyxrHyMfZzsbMB3jLAwDUigTLEsbJB25ZDhjHAw50igfRyw4GAgfUzgXLihzHBgLKyxnPignOAwXKihjLy29YzhmkicaGicaGy29UC29Szs5SB2COj0rLBgv0Aw5NigHLywrLCIbYzwnVCMqGkgnHC2nHzgvezwXLDguGpsbMywXZzsKUlI4NktSkcIaGicaGignVBNn0igrLBgv0zuHLywrLCLf1zxj5id0GyerftevursbguK9nicr7DgHPCY53CML0zvnVDxjJzx0Gv0HfuKuGjhT3AgvYzunSyxvZzx0GuKvuvvjosu5hicPGoWOGicaGicbJB25ZDcbKzwXLDgvizwfKzxjszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgvSzxrLsgvHzgvYuxvLCNKSihbHCMfTCYK7cGOGicaGicbPzIaOzgvSzxrLsgvHzgvYuMvZDwX0lNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDszwnVCMqGBM90igzVDw5KjYK7cIaGicaGih0kcIaGicaGignVBNn0igrLBgv0zwreyxrHid0GzgvSzxrLsgvHzgvYuMvZDwX0lNjVD3nBmf07cIaGicaGignVBNnVBguUBg9NkcDizwfKzxiGCMvJB3jKigrLBgv0zwqGC3vJy2vZC2z1BgX5jYK7cIaGicaGia','y3jLyxrLq29TCg9ZAxrL','laOGicaGica','j10GFhWGCMvXlMjVzhK7cIaGicbTyxn0zxjcB2r5wYC','jYb2ywX1zsaNiIaRif9FB3jPz2LUywWGkYaIjYbPCYbHBhjLywr5igLUihvZzsbIEsbHBIbHy3rPDMuGCMvJB3jKiIK7cIaGicaGicaGicaGicaGy29UzMXPy3rfCNjVCI5ZDgf0DxndB2rLid0Gnda5oWOGicaGicaGicaGicaGihrOCM93ignVBMzSAwn0rxjYB3i7cIaGicaGicaGicaGih0kicaGicaGicaGicaGlY8Gu3rYAxaGAgfUEweGyMLSysbHzgeGC3vMzML4icCJiYCGkgXLz2fJEsbKAwjPyxjRyw4GyxbHigfKyw55ysWGy3vRDxaGCMvZzxqGA29SB20PlGOGicaGicaGicaGicbPzIaOx19ZzxbjzhGGpJ0GmcKGEWOGicaGicaGicaGicaGihnLDenSyxvZzxmUChvZAcGN','ChjPBwfYEuTLEq','qvnHt24','oWOkicaGic8VifzHBgLKyxnPigrHBIbZyw5PDgfZAsbOzwfKzxiGzgf0ysbKzw5Nyw4Gy29UC3rYywLUDcaODgvYBwfZDwSGAgfZAcKkicaGigLMicH0ExbLB2yG','zMLLBgrqB2XPy3K','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGsu5trvjuievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwqGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5PBNnLCNqPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HjBNnLCNqOcIaGicaGicaGjW','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOycr7A2v5Fsa9icqKE2rLDgfPBfbSywnLAg9SzgvYsw5KzxGRk31GktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGkhvWzgf0zwrFyxqSihvWzgf0zwrFyNKPigTLigrLDgfPBcbvuerbveuGDMLHigHLBhbLCGOGicaGicaGigrLDgfPBfbSywnLAg9SzgvYsw5KzxGGpsb0AgLZlL9HChbLBMrvCgrHDgvbDwrPDenVBhvTBNmOzgv0ywLSrMLLBgrZlcbKzxrHAwXwywX1zxmSigL0zw0Sigv2zw50q29UDgv4DcWGzgv0ywLSugXHy2vOB2XKzxjjBMrLEcK7cGOGicaGicaGigrLDgfPBfzHBhvLCY5WDxnOkgL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0PoWOGicaGicaGignVBNn0igrLDgfPBfvWzgf0zvf1zxj5id0GyaOGicaGicaGicaGvvbeqvrficr7zgv0ywLSvgfIBgvoyw1LFqOGicaGicaGicaGu0vuicr7zgv0ywLSrMLLBgrZlMPVAw4OjYWGjYL9cIaGicaGicaGicbxsevsrsaKE2rLDgfPBfbYAw1HCNLlzxL9id0Gjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEh0kicaGicaGicaGifjfvfvstKLorYaQcIaGicaGicaGydSkcIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgrLDgfPBfvWzgf0zvf1zxj5lcbKzxrHAwXwywX1zxmPoWOGicaGicaGigLMicHKzxrHAwXszxn1BhqUCM93CY5Szw5NDgGGpIaWksb7cIaGicaGicaGicb1CgrHDgvKsxrLBxmUChvZAcHKzxrHAwXszxn1BhqUCM93C1SWxsK7cIaGicaGicaGFqOGicaGicb9cGOGicaGicbJB25ZB2XLlMXVzYHGvxbKyxrLzcaKE3vWzgf0zwrjDgvTCY5Szw5NDgH9igrLDgfPBcbPDgvTkhmPycK7cGOGicaGicaVlYaZlIbqCM9JzxnZieLou0vsvcbVCgvYyxrPB25ZcIaGicaGigzVCIaOy29UC3qGAxrLBsbVzIbPBNnLCNrjDgvTCYKGEWOGicaGicaGic8ViefKzcbMB3jLAwDUigTLEsb0BYbPDgvTcIaGicaGicaGAxrLBvTMB3jLAwDUs2v5xsa9ihbYAw1HCNLlzxLwywX1ztSkcIaGicaGicaGlY8Gqxv0BY1Nzw5LCMf0zsbvvuLeihvUDhvRigrLDgfPBcbqsYbIAwXHignSAwvUDcb0AwrHAYbTzw55DxbWBhKkicaGicaGicaVlYaOA29UC2LZDgvUigrLBMDHBIbJCMvHDgvdB21WB3nPDguGzgfUigTVBNzLBNnPigf1Dg9hzw5LCMf0zsKkicaGicaGicbPzIaOAxrLBvTKzxrHAwXqCMLTyxj5s2v5xsa9pt0GDw5KzwzPBMvKihX8igL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0Gpt09ig51BgWPihSkicaGicaGicaGigL0zw1Bzgv0ywLSuhjPBwfYEuTLEv0GpsbYzxf1AxjLkcD1DwLKjYKUDJCOktSkicaGicaGicb9cG','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjxn5C3rLBsuIlcaIC2vUC2L0AxzLiJOGzMfSC2uGFqOGicaGicaGicaGicaGif0kicaGicaGicaGicaGFsWkicaGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','icaGicaGzM9YicHJB25ZDcbFx3nKq29Sig9Mia','DgHPCY5HDwrPDenVBhvTBNmGpsbUDwXSoWO','C29MDerLBgv0zunHC2nHzgvuCMvL','jZSkicaGignVBNn0ihjLy29YzeLKid0GCMvXlMjVzhLBChjPBwfYEuTLEv0GFhWGCMvXlMjVzhKUAwq7cIaGicbPzIaOixjLy29YzeLKksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIbGuhjPBwfYEsbRzxKGkcr7ChjPBwfYEuTLEx0Pig9YigLKigLZihjLCxvPCMvKigzVCIbJAgfUz2uTC3rHDhvZycWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOixjLCs5IB2r5lNn0yxr1CYKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNtwLZC2LUzYbYzxf1AxjLzcbMAwvSzcCScIaGicaGicaGBwvZC2fNztOGj3n0yxr1CYbPCYbYzxf1AxjLzcbMB3iGy2HHBMDLlxn0yxr1CYCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','tw9KzwWGzxH0zw5KCYbcyxnLtw9KzwWGEWOGic8QkGOGicaQienVBNn0CNvJDg9YcIaGicOVcIaGy29UC3rYDwn0B3iOksb7cIaGicaVlYbezwzPBMLZAwTHBIb2ywXPzezPzwXKCYaTihnLBxvHigzPzwXKihLHBMCGDMfSAwqGDw50DwSGDgfIzwWG','v0rJq3q','jZSkicaGicaGy29UC3qGzgv0ywLSuhjPBwfYEuTLEsa9icC','cNjVDxrLCI5WB3n0kcCVy3jLyxrLlwnVBxbVC2L0zsCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicbJB25ZB2XLlMXVzYGNuMvXDwvZDcbIB2r5ia','y29UC3qGzxHWCMvZCYa9ihjLCxvPCMuOj2v4ChjLC3mNktSky29UC3qGyM9KEvbHCNnLCIa9ihjLCxvPCMuOj2jVzhKTCgfYC2vYjYK7cMnVBNn0ihbHDgGGpsbYzxf1AxjLkcDWyxrOjYK7cMnVBNn0igzZid0GCMvXDwLYzsGNzNmNktSky29UC3qGEYb2nZOGDxvPzhy3ih0GpsbYzxf1AxjLkcD1DwLKjYK7cMnVBNn0ihSGBg9Nz2vYlcbSB2Dtzxj2zxjszwfKEsWGBg9Nrw5KCg9PBNrszwDPC3rLCMvKlcbJCMvHDgvszxf1zxn0tg9Nz2vYlcbSB2Dszxf1zxn0ih0GpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl2XVz2DLCICPoWPJB25ZDcbfEhbVCNriyw5KBgvYid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9JB21WB25LBNrZl2HHBMrSzxjZl2v4Cg9YDf9Oyw5KBgvYjYK7cMnVBNn0ieLTCg9YDeHHBMrSzxiGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl2nVBxbVBMvUDhmVAgfUzgXLCNmVAw1WB3j0x2HHBMrSzxiNktSky29UC3qGvxbSB2fKsgfUzgXLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVy29TCg9Uzw50CY9Oyw5KBgvYCY91CgXVywrFAgfUzgXLCICPoWPJB25ZDcb7igv4DhjHy3rfEhbVCNrdB25MAwDgCM9Trw5KCg9PBNqSigv4DhjHy3rjBxbVCNrdB25MAwDgCM9Trw5KCg9PBNqSigv4DhjHy3rvCgXVywrdB25MAwDgCM9Trw5KCg9PBNqGFsa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVDxrPBhmVy29UzMLNlwv4DhjHy3rVCICPoWPJB25ZDcbYyxrLtgLTAxrLCIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVBwLKzgXLD2fYzs9YyxrLlwXPBwL0zxiNktSky29UC3qGAwrLBxbVDgvUy3LnAwrKBgv3yxjLid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9TAwrKBgv3yxjLl2LKzw1WB3rLBMn5jYK7cMnVBNn0igjVzhLpChrPB25ZtwLKzgXLD2fYzsa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVBwLKzgXLD2fYzs9IB2r5lw9WDgLVBNmNktSky29UC3qGy29YC01PzgrSzxDHCMuGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl21PzgrSzxDHCMuVy29YCYCPoWPJB25ZDcbZzwn1CML0EuHLywrLCNmGpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl21PzgrSzxDHCMuVC2vJDxjPDhKTAgvHzgvYCYCPoWOklYOQcIaQia','A2LmBKW','kg1HC3rLCI1KzxrHAwWGDhjHBNnHy3rPB24P','nuj2A1bgwq','ihvUDhvRigrYB3bKB3DUicHKEw5HBwLJkqPYB3v0zxiUz2v0kcCVBg9VA3vWjYWGyxn5BMmGkhjLCsWGCMvZksa9pIb7cIaGDhj5ihSkicaGic8VifzHBgLKyxnPifGTuMvXDwvZDc1nB2rLigHLywrLCGOGicaGy29UC3qGCMvXDwvZDe1VzguGpsbYzxeUAgvHzgvYC1SNEc1Yzxf1zxn0lw1VzguNxtSkicaGignVBNnVBguUBg9NkgbylvjLCxvLC3qTtw9KzsbOzwfKzxi6icr7CMvXDwvZDe1Vzgv9ycK7cGOGicaGAwyGkhjLCxvLC3rnB2rLice9psaNzhLUyw1PyYCPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGuMvXDwvZDcbnB2rLjYWkicaGicaGicbTzxnZywDLoIaNwc1szxf1zxn0lu1VzguGAgvHzgvYig11C3qGyMuGC2v0ihrVigr5BMfTAwmNlaOGicaGicaGigrLDgfPBhm6icDdB250B2GGCgvUz2D1BMfHBJOGvgfTyMfOA2fUigHLywrLCIbylvjLCxvLC3qTtw9KztOGzhLUyw1PyYCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGlY8Gqw1IAwWGCgfYyw1LDgvYihnLyxjJAcaOzgvMyxvSDcbJyxnLlwLUC2vUC2L0AxzLkqOGicaGBgv0ihnLyxjJAca9ihjLCs5XDwvYEs5ZzwfYy2GGFhWGjYC7cIaGicbPzIaOqxjYyxKUAxnbCNjHEsHZzwfYy2GPksb7cIaGicaGihnLyxjJAca9ihnLyxjJAfSWxsb8FcaNjZSkicaGih0kcIaGicaVlYbbBwjPBcbWyxjHBwv0zxiGDgfTyMfOyw4GDw50DwSGzMLSDgvYAw5NcIaGicbJB25ZDcbJB21Wyw55swqGpsbYzxeUCxvLCNKUy29TCgfUEv9Pzcb8FcbYzxeUCxvLCNKUy29TCgfUEuLKoWOGicaGy29UC3qGzxH0CMfgAwX0zxjZid0GE307cGOGicaGlY8Gq29SBgvJDcbHzgrPDgLVBMfSigzPBhrLCIbWyxjHBwv0zxjZcIaGicbPzIaOy29TCgfUEuLKksb7cIaGicaGigv4DhjHrMLSDgvYCY5JB21Wyw55x2LKid0Gy29TCgfUEuLKoWOGicaGFqOkicaGic8VifzHBgLKyxnPihnLyxjJAcbWyxjHBwv0zxikicaGigLMicHZzwfYy2GUBgvUz3rOid4GmtaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihnLyxjJAcbWyxjHBwv0zxiNlaOGicaGicaGig1LC3nHz2u6icDtzwfYy2GGCgfYyw1LDgvYigLZihrVBYbSB25NicHTyxGGmtaWignOyxjHy3rLCNmPjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbJB25ZB2XLlMXVzYHG','DxbKyxrL','nJqXntaWohnhAxjNEq','cGOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','C29MDerLBgv0zuzRq2HPBgrYzw4','ywT0Awy','jYWkicaGicaGicaGigHLywX0AenOzwnRoIbGAhr0CdOVlYr7zgLZCgXHEuHVC3r9oIr7Cg9YDh0VyxbPlW','id0GjcCGkYbWktSkicaGicaGicbWkYS7cIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOzgvSzxrLzej5ktSkicaGicaGicb1CgrHDgvqyxjHBxmUChvZAcHWA1zHBcK7cGOGicaGicaGic8Vie1HC3rLCIaOzgvWDgGTmcKGzgKTvvbeqvrfigTLihDYAxrLu291CMnLicHYzwfKl3DYAxrLihnWBgL0lwf3yxjLlcbPzgvUDgLRigPHBhvYcIaGicaGicaGlY8GzxHPC3rPBMCPicSGuKvuvvjosu5hihvUDhvRihjLC3bVBNnLlIbezxnJzw5Kyw50igTLig5HBweGDgfIzwWGy2XVC3vYzsaOCxvHBgLMAwvKks4kicaGicaGicbJB25ZDcbFx3rHCMDLDca9ign1CNjLBNqUAxnnyxn0zxiGpYb3CML0zvnVDxjJzsa6ign1CNjLBNqUDgfIBgu7cIaGicaGicaGy29UC3qGx19Yzxr1CM5PBMCGpsbJDxjYzw50lMLZtwfZDgvYid8GkcCGuKvuvvjosu5hicCGkYbYzxr1CM5PBMDgAwvSzhmPidOGjYC7cIaGicaGicaGy29UC3qGx191CgrHDgvszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOcIaGicaGicaGicaNvvbeqvrficCGkYbFx3rHCMDLDcaRicCGu0vuicCGkYbZzxrdBgf1C2vZlMPVAw4OjYWGjYKGkYaNifDirvjficCGkYbUB2rLlNbRicSGjYa9icqNicSGCcaRif9FCMv0DxjUAw5NlaOGicaGicaGicaGDxbKyxrLugfYyw1ZcIaGicaGicaGktSkicaGicaGicb0B3vJAgvKlMfKzcHJDxjYzw50lNrHyMXLktSkicaGicaGicbPzIaOy3vYCMvUDc5PC01HC3rLCIaMjIbFx3vWzgf0zvjLC3vSDc5YB3DZwZbDksb7cIaGicaGicaGicbTyxn0zxjezwXLDgvKsxrLBxmUChvZAcHFx3vWzgf0zvjLC3vSDc5YB3DZwZbDktSkicaGicaGicb9cGOGicaGicaGic8VicGZksbLEhbHBMq6igfUywSGquTusuyGkgLZx2rLBgv0zwq9rKfmu0uPigXLD2f0igvKz2uGy2fZy2fKzsbRzsbHBMfRihnVzNqTzgvSzxrLlaOGicaGicaGic8VicaGicbgt1iGvvbeqvrficHRDw5JAsbZzwjLBhvTig11DgfZAsKSihnRAxaGCgfYzw50q29SDw1Uie5vteWUievUCxvLDwuGDgLHCcbYB3CUcIaGicaGicaGzM9YicHJB25ZDcbJAcbVzIbUB2rLlMnOAwXKCMvUksb7cIaGicaGicaGicbPzIaOy2GUB25ezwXLDguGit09icDJyxnJywrLjYb8FcbJAc5JAgLSzfnVzNrezwXLDguGit09ihrYDwuPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19LEhbHBMrwywWGpsbJDxjYzw50lNjVD1TJAc5WyxjLBNrdB2X1Bw5DoWOGicaGicaGicaGAwyGkf9FzxHWyw5KvMfSid09psbUDwXSihX8if9FzxHWyw5KvMfSid09psb1BMrLzMLUzwqPignVBNrPBNvLoWOGicaGicaGicaGy29UC3qGx19JAgLSze5VzguGpsbFx3nKq2fZy2fKzu1LDgeUBM9KzxnBy2GUy2HPBgruywjSzv07cIaGicaGicaGicaVlYbpuKrfuIbcwsa8y2HPBgrqAZ4GC2vIzwX1Bsbgt1iGvvbeqvrfiokgKIb1CNv0yw4GywT1AxnPC2KGBg9JAYbKzxrLCM1PBMLZDgLRicHTAxrPz2fZAqOGicaGicaGicaGlY8GCMLUz2fUigTVBMT1CMvUC2K7igrLywrSB2nRihbLBNvOid0GugHHC2uGmdrKks4GsgfUEweGBwvUz3vIywGGvvjvvefoigjHCMLZlcbIDwTHBGOGicaGicaGicaGlY8GAgLTChvUyw4GAgfZAwWG4OAsigHHC2LSignHC2nHzguGAwrLBNrPAY4kicaGicaGicaGignVBNn0if9Fy2HPBgrsB3DZid0Gkgf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGj1nftevdvcaNicSGx19ZzfnLBgvJDenVBhmOx19JAgLSze5VzguPicSGjYbguK9nicCGkYbJAc5JAgLSzfrHyMXLicSGjYbxsevsrsaNicSGy2GUy2HPBgrdB2X1Bw4GkYaNid0GjdeGqu5eia','icaGigLMicHMB3jTyxr0zwqPihSk','cGOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGzgv0ywLSrMLLBgrZlNb1C2GOA2v5ktSkicaGicaGicaGicaGzgv0ywLSvMfSDwvZlNb1C2GODMfSDwuPoWOGicaGicaGicaGicbKzxrHAwXqBgfJzwHVBgrLCNmUChvZAcHGjcr7zgv0ywLSugXHy2vOB2XKzxjjBMrLEcSRFwaPoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8Gsw5Qzwn0igf1zgL0ignVBhvTBNmGA2uGzgv0ywLSieLou0vsvcb2AweGAgvSCgvYcIaGicaGicaGzgv0ywLSugXHy2vOB2XKzxjjBMrLEca9ihrOAxmUx2fWCgvUzenYzwf0zuf1zgL0q29SDw1UCYHKzxrHAwXgAwvSzhmSigrLDgfPBfzHBhvLCYWGzgv0ywLSugXHy2vOB2XKzxjZlcbPDgvTlcbLDMvUDenVBNrLEhqSigrLDgfPBfbSywnLAg9SzgvYsw5KzxGPoWOkicaGicaGicbJB25ZDcbKzxrHAwXjBNnLCNrrDwvYEsa9igakicaGicaGicaGieLou0vsvcbjtLrpicr7zgv0ywLSvgfIBgvoyw1LFsaOjhTKzxrHAwXgAwvSzhmUAM9PBIGNlcaNkx0PcIaGicaGicaGicbwquXvrvmGkcr7zgv0ywLSugXHy2vOB2XKzxjZlMPVAw4OjYWGjYL9kqOGicaGicaGicaGuKvuvvjosu5hicOkicaGicaGicbGoWOkicaGicaGicbJB25ZDcbKzxrHAwXszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOzgv0ywLSsw5Zzxj0uxvLCNKSigrLDgfPBfzHBhvLCYK7cIaGicaGicaGAw5Zzxj0zwrjDgvTCY5WDxnOkgrLDgfPBfjLC3vSDc5YB3DZwZbDktSkicaGicaGFqOkicaGicaGy29UC29Szs5SB2COyeLUC2vYDgvKicr7Aw5Zzxj0zwrjDgvTCY5Szw5NDgH9ig5LDYbKzxrHAwWGAxrLBsHZkwaPoWOkicaGicaGlY8Gr2v0igfSBcbJDxjYzw50igrLDgfPBcbPDgvTCWOGicaGicbJB25ZDcbHBgXjDgvTC1f1zxj5id0GyfnftevdvcaQiezst00GjhTKzxrHAwXuywjSzu5HBwv9ifDirvjficr7zM9YzwLNBKTLEx0GpsaKmsbpuKrfuIbcwsbSAw5Lx251BwjLCMa7cIaGicaGignVBNn0igfSBeL0zw1ZuMvZDwX0id0GyxDHAxqGy2XPzw50lNf1zxj5kgfSBeL0zw1ZuxvLCNKSifTWCMLTyxj5s2v5vMfSDwvDktSkicaGicaGy29UC3qGywXSsxrLBxmGpsbHBgXjDgvTC1jLC3vSDc5YB3DZoWOkicaGicaGlY8GuMvJywXJDwXHDguGAgvHzgvYihrVDgfSCYbMCM9TigzPBMfSigL0zw1ZcIaGicaGia','oWOkicaGignVBNn0ig1VzgvSsw5MBYa9igf3ywL0ia','wMTLD0S','Bg9JA2vKuM93wYC','iezst00GjYaRihDYAxrLu291CMnLicSkicaGicaGicaNifDirvjficGNicSGD2HLCMvcDwLSDc5ZCwWGkYaNksbbtKqG','lMLUy2X1zgvZkgTLEsKPihSkicaGicaGicaGihDOzxjLq29UzgL0Aw9UCY5WDxnOkgbHlIr7A2v5Fsa9icqKE3bHCMfTsw5KzxGRk31GktSkicaGicaGicaGihbHCMfTCY5WDxnOkhzHBhvLktSkicaGicaGicb9cIaGicaGih0kcIaGicaGic8Viej1AwXKigzPBMfSihf1zxj5ic0Gz3vUywTHBIbJDxn0B20GC2vSzwn0igPPA2eGywrHcIaGicaGignVBNn0igLKrMLLBgqGpsbSB29RDxbdB25MAwCGpYbSB29RDxbdB25MAwCUAwrgAwvSzca6icC','zgf0yxrHyMXLC1DOzxjL','zxHWB3j0','cIaGicb9oWOkicaGigzVCIaOy29UC3qGw3f1zxj5tMfTzsWGCxvLCNLtB3vYy2vDig9Mie9IAMvJDc5LBNrYAwvZkhf1zxj5rgvMAw5PDgLVBNmPksb7cIaGicaGihrYEsb7cIaGicaGicaGlY8Gq2vRigfWywTHAcbZDhjPBMCGzgLTDwXHAsbKzw5Nyw4GiMzPBgu6iIb1BNr1AYbTzw5LBNr1A2fUigfWywTHAcbPBMKGCgf0AcbMAwXLcIaGicaGicaGAwyGkhr5CgvVzIbXDwvYEvnVDxjJzsa9pt0Gj3n0CMLUzYCGjIyGCxvLCNLtB3vYy2uUC3rHCNrZv2L0AcGNzMLSztONksKGEWOGicaGicaGicaGlY8Gqw1IAwWGCgf0AcbYzwXHDgLMigrHCMKGCxvLCNLtB3vYy2ukicaGicaGicaGignVBNn0ihjLBgf0AxzLugf0Aca9ihf1zxj5u291CMnLlNjLCgXHy2uOj2zPBgu6jYWGjYCPoWOGicaGicaGicaGy29UC3qGzMLSzvbHDgGGpsbWyxrOlMPVAw4Ox19KAxjUyw1LlcbYzwXHDgL2zvbHDgGPoWOkicaGicaGicaGignVBNnVBguUBg9NkgbbDhrLBxb0Aw5NihrVihjLywqGDgvTCgXHDguGzMLSzsaKE3f1zxj5tMfTzx0GzNjVBsbWyxrOoIaKE2zPBgvqyxrOFwaPoWOkicaGicaGicaGigLMicHMCY5LEgLZDhntEw5JkgzPBgvqyxrOksKGEWOGicaGicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9igzZlNjLywrgAwXLu3LUyYHMAwXLugf0AcWGj3v0zJGNktSkicaGicaGicaGicaGy29UC29Szs5SB2COyfnrtcb0zw1WBgf0zsaKE3f1zxj5tMfTzx0GBg9HzgvKihn1y2nLC3nMDwXSEsbMCM9TigzPBgu6icr7CMvSyxrPDMvqyxrOFwaPoWOGicaGicaGicaGFsbLBhnLihSkicaGicaGicaGicaGy29UC29Szs5LCNjVCIHGu1fmihrLBxbSyxrLigzPBguGjhTXDwvYEu5HBwv9ig5VDcbMB3vUzdOGjhTMAwXLugf0Ah1GktSkicaGicaGicaGicaGDgvTCgXHDgvZw3f1zxj5tMfTzv0GpsbUDwXSoWOGicaGicaGicaGFqOGicaGicaGih0GzwXZzsb7cIaGicaGicaGicaVlYbkAwTHigj1A2fUihbHDgGGzMLSzsWGz3vUywTHBIbZDhjPBMCGu1fmigXHBMDZDw5NcIaGicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9ihf1zxj5u291CMnLoWOGicaGicaGicaGy29UC29Szs5SB2COyfnrtcb0zw1WBgf0zsaKE3f1zxj5tMfTzx0GBg9HzgvKihn1y2nLC3nMDwXSEsbMCM9TifnrtcbZDhjPBMDGktSkicaGicaGicb9cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIHGrxjYB3iGBg9HzgLUzYbtuuWGDgvTCgXHDguGjhTXDwvYEu5HBwv9oMaSigvYCM9YktSkicaGicaGicb0zw1WBgf0zxnBCxvLCNLoyw1Lxsa9ig51BgW7cIaGicaGih0kicaGih0','lNjLC3rVCMveyxrHkhjLCs5IB2r5lcbLDMvUDenVBNrLEhqPoWOkicaGignVBNnVBguUBg9Nkga','jYdIHPiG','l2rLBgv0zsaTie1LBMDOyxb1CYbKyxrHia','Aw1WB3j0q29UzMLN','cIaGicaVlYa9pt0Gs0fgs0eGufvcteLtsdOGrevmrvrfievwru5uid09pqOGicaGlY8Gq2HLy2SGyM90AcbYDw50Aw1LigvUDIaOs0fgs0fFru5bqKXfrcKGyw5KihbHEwXVywqGy29UzMLNcIaGicbJB25ZDcbRywzRyvj1BNrPBwvfBMfIBgvKrgvSzxrLid0GChjVy2vZCY5LBNyUs0fgs0fFru5bqKXfrca9pt0Gj3rYDwuNoWOGicaGAwyGkgTHzMTHuNvUDgLTzuvUywjSzwrezwXLDguGjIyGA2fMA2ftzxj2AwnLicyMigTHzMTHq29UzMLNicyMigTHzMTHq29UzMLNlMvUywjSzwqGjIyGA2fMA2fdB25MAwCUChvIBgLZAe9UicyMigTHzMTHq29UzMLNlNb1yMXPC2HpBI5KzwXLDguPihSkicaGicaGA2fMA2ftzxj2AwnLlNb1yMXPC2HezwXLDguOcIaGicaGicaGjW','DhjPBq','CMvHzenVBxbVC2L0zq','wef4why','cIaGicaVlYbiyw5KBguGC3bLy2LMAwmGzxjYB3iGDhLWzxmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mduNksb7ic8VifbVC3rNCMvtuuWGDw5PCxvLihzPB2XHDgLVBGOGicaGicbJB25ZDcbKzxrHAwXZid0GyNvPBgreDxbSAwnHDgvezxrHAwXZkgvYCM9YktSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda5ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0r1CgXPy2f0zsbLBNrYEsCScIaGicaGicaGBwvZC2fNztOGj0eGCMvJB3jKihDPDgGGDgHPCYb2ywX1zsbHBhjLywr5igv4Axn0CYCScIaGicaGicaGlI4UkgrLDgfPBhmGpYb7igrLDgfPBhmGFsa6ihT9ksWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicbPzIaOzxjYB3iUy29Kzsa9pt0GjZiZntaZjYKGEYaVlYbqB3n0z3jLu1fmigzVCMvPz24GA2v5ihzPB2XHDgLVBGOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNrM9YzwLNBIbRzxKGy29UC3rYywLUDcCScIaGicaGicaGBwvZC2fNztOGj1jLzMvYzw5JzwqGzgf0ysbUB3qGzM91BMqNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbHzgrPBMCG','AfrLzK0','cGOGicaGlY8GqNvPBgqGzxzLBNrdB250zxH0ihvUDhvRignVBxbVC2L0zsbOB29RCYaOAMLRysbJB21WB25LBNqGzw5NAw5LihrLCNnLzgLHkqOGicaGBgv0igv2zw50q29UDgv4Dca9ig51BgW7cIaGicbPzIaOy29TCg9Uzw50rw5NAw5LicyMienVBNrLEhrcDwLSzgvYksb7cIaGicaGigv2zw50q29UDgv4Dca9ihSkicaGicaGicbJB21WB25LBNrfBMDPBMuScIaGicaGicaGq29UDgv4Dej1AwXKzxiScIaGicaGicaGDgfIBgvoyw1LoIaN','uwnxEhC','ifDirvjfia','q25dseq','jYKUienVBMzPzY1KCML2zw4GkhrHBNbHigjVzhKGB3b0Aw9UCYKSigrPDgvYyxbRyw4GDgfUCgeklY8GC3LHCMf0igf1DgGGkhzPC2LIAwXPDhKGzMLSDgvYlcbcvuTbtIbstfmG4OcuigTHCMvUysbPDhuGDgLKywSGywrHigD1yxjKicfYzxeUDxnLCIKUcNjVDxrLCI51C2uOkhjLCsWGCMvZlcbUzxH0ksa9pIb7cIaGAwyGkhjLCs5TzxrOB2qGit09icDqt1nujYKGCMv0DxjUig5LEhqOktSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGAwyGkcfBj2rHDgf0ywjSzxmNlcaNCMvHzcCSicDSB29RDxaNlcaNywDNCMvNyxrLj10UAw5JBhvKzxmOzw5KCg9PBNqPksbYzxr1CM4GBMv4DcGPoWOkicbJB25ZDcbZB2z0rgvSzxrLq29UzgL0Aw9Uid0GEYbRzxK6icC','mJC5ue9gwLnq','Aw5MBW','AxrLBxmU','cIaGicbJB25ZDcbYzxn1BhqGpsbHD2fPDca','DhLWzq','cGOGicaGCMv0DxjUihrLBxbSyxrLCZSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDeXPC3rrDwvYEsb1BNr1AYbTzw55zxn1ywLRyw4GzgvUz2fUigTLyNv0DwHHBIa','mta1nJu3nhHnqwzlrG','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0','icaGic8VifnVzNqTzgvSzxrLig1PzgrSzs1NCM91BMqGkgf1zgL0lxbHCML0EsK6ihrPz2eGA29SB20GC29MDc1KzwXLDguGDgv0yxaGzgKGDMfSAwrgAwvSzhmk','cIaGicaGic8VifnVzNqTzgvSzxrLihzPC2LIAwXPDhKGC2nVCguGkfiXnsKkicaGicaGD2HLCMvdB25KAxrPB25ZlNb1C2GOya','Dg9ju09tDhjPBMC','igrHDgeGzgvSzxrLzcbZDwnJzxnZzNvSBhLGktSk','zxHWB3j0CW','lMDLDerHDgf0ywjSzxmOB3b0Aw9UCYK7cGOGicaGlY8GtwvUyw1IywHRyw4GBM9TB3iGyMfYAxmGDw50DwSGrgf0yvrHyMXLCYbQAwTHigrPCgvYBhvRyw4kicaGigLMicHYzxn1BhqUzgf0ysaMjIbbCNjHEs5PC0fYCMf5khjLC3vSDc5KyxrHksKGEWOGicaGicbYzxn1BhqUzgf0ysa9ihjLC3vSDc5KyxrHlM1HCcGOAxrLBsWGAw5KzxGPid0+icH7cIaGicaGicaGlI4UAxrLBsWkicaGicaGicbYB3DUDw1LCMf0B3i6ig9WDgLVBNmUC3rHCNqGkYbPBMrLEcaRidekicaGicaGFsKPoWOGicaGFqOkicaGic8ViefKzcbTzxrHzgf0ysb1BNr1AYbKzwj1z2DPBMCGkgrLDMvSB3bTzw50ig9UBhKPcIaGicbPzIaOChjVy2vZCY5LBNyUtK9erv9ftLyGpt09icDKzxzLBg9WBwvUDcCPihSkicaGicaGCMvZDwX0lL9TzxrHzgf0ysa9ihSkicaGicaGicbLBMrWB2LUDdOGjW','jYWkicaGicaGicaN','laOGicaGicbKyxrHyMfZzvr5Cgu6icDWB3n0z3jLCYCScIaGicaGigDLBMvYyxrLzdOGjW','j107cGOGicaGicaVlYberuXfveuGy2HPBgqGCMvJB3jKCYbTzw5Nz3vUywTHBIbMB3jLAwDUs2v5cIaGicaGignVBNn0igrLBgv0zunOAwXKuxvLCNKGpsbGrevmrvrfiezst00G','ruPnC0S','jZSkcIaGicaVlYbtzxr1Ccb2Awv3tMfTzsb1BNr1AYbVCgvYyxnPihjLywqGAMLRysbIzxjIzwrHigrHCMKGDgfIBgvoyw1LcIaGicb0AgLZlNzPzxDoyw1Lid0GjW','ksb7cIaGicaGigLMicH0ExbLB2yGzgf0ys4','sw52ywXPzcbHDwrPDenVBhvTBNmGDMfSDwuGzM9Yia','x2v4DgvUzgvKrMLLBgrZ','ih0PoW','cGOGicaGicbMB3iGkgnVBNn0igHLywrLCIbVzIbOzwfKzxjszxn1BhrZksb7cIaGicaGicaGy29UC3qGzgv0ywLSuMvZDwX0CYa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHKzxrHAwXrDwvYEsWGw2HLywrLCLT0AgLZlNbYAw1HCNLlzxLDxsK7cGOGicaGicaGignVBxbVC2L0zvjLC3vSDhmUChvZAcH7cIaGicaGicaGicaUlI5OzwfKzxiScIaGicaGicaGicbBzgv0ywLSs2v5xtOGzgv0ywLSuMvZDwX0CWOGicaGicaGih0PoWOGicaGicb9cGOGicaGicbYzxr1CM4GEWOGicaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGicaGy291BNq6ignVBxbVC2L0zvjLC3vSDhmUBgvUz3rOlaOGicaGicaGigrHDge6ignVBxbVC2L0zvjLC3vSDhmkicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbPBIbYzwfKq29TCg9ZAxrLoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqO','jYa6cIaGicaGicaGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','icaGicaGicaVlYbbDxrVlwnHBgn1Bgf0zsa','cGOGic8QkGOGicaQie92zxjYAwrLigzVCM1HDfjLC3bVBNnLrgf0ysb1BNr1AYa','ywrH','BuzAtey','ksb8FcaWksaQicHoDw1IzxiOAxrLBs4','mtyWotmWAfz5zuvv','C2XPy2u','l2rLBgv0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihjLCxvLC3qGyM9KEqOGicaGAwyGkcfYzxeUyM9KEsb8FcbpyMPLy3qUA2v5CYHYzxeUyM9KEsKUBgvUz3rOid09psaWksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGig1LC3nHz2u6icDqyxLSB2fKignHBM5VDcbIzsbLBxb0EsCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','oWOGicaGicbPzIaOB3bLCMf0Aw9UCY5PBNnLCNqGjIyGiufYCMf5lMLZqxjYyxKOB3bLCMf0Aw9UCY5PBNnLCNqPksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGzxjYB3i6icDjBNzHBgLKihbHEwXVywqNlaOGicaGicaGicaGBwvZC2fNztOGj1bYB3bLCNr5ici','cI8ViokuGokuGokuGcbtB2z0lurLBgv0zsbszwfKiezPBhrLCIbnAwrKBgv3yxjLicHsmtuPiokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGokuGaOVlYbezwzHDwX0ieLUDMLZAwjSztOGAw5Qzwn0igzPBhrLCIaN','Aw1WB3j0','ydSkcIaGicaGignVBNn0igrHDgeGpsbHD2fPDcbKyI5LEgvJDxrLuxvLCNKOCxvLCNKPoWOkicaGicaGlY8Gq2fJAguGCMvZDwX0ihrHBNbHihnLBgvJDgvKigzSywCkicaGicaGy29UC3qGy2fJAgveyxrHid0Gzgf0ys5TyxaOAxrLBsa9pIaOEWOGicaGicaGigLKoIbPDgvTlG','cIaGicOGqhbHCMfTihTpyMPLy3r9ig9WDgLVBNmGlsbrDwvYEsbVChrPB25ZcIaGicOGqhjLDhvYBNmGE3n0CMLUz30Gu1fmihf1zxj5igrHC2fYihvUDhvRia','id0GrKfmu0uGqu5eia','cIaGlYOQcIaGicOGr2v0igzPzwXKig1HChbPBMCGDw50DwSGyMvYyMfNywKGB3bLCMfZAqOGicaQiebYzxr1CM5ZihTpyMPLy3r9iezPzwXKig1HChbPBMCGB2jQzwn0cIaGicOVcIaGz2v0rMLLBgrnyxbWAw5NkcKGEWOGicaGCMv0DxjUihSkicaGicaGywXSrMLLBgrZoIb0AgLZlNzHBgLKrMLLBgrZlaOGicaGicb0zxH0rMLLBgrZoIa','jYWkicaGicaGicbXDwvYEtOGCMvXlMjVzhKScIaGicaGicaGCMvZDwX0q291BNq6ihjLC3vSDc5KyxrHid8GCMvZDwX0lMrHDgeUBgvUz3rOidOGmcWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9oWOGicaGFqOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicbJB25ZB2XLlMvYCM9YkcDfCNjVCIbZywf0ig1LBMrHCgf0A2fUigrHDgeG','laOGicaGicaGigrLBgv0zwrdAgLSzfjLy29Yzhm6igrLBgv0zunOAwXKuMvZDwX0lNjVD0nVDw50','ywDNCMvNyxrL','cI8VieDLBMvYyxrLzcbMCM9TihjLCxvLC3rty29WzsbJB25MAwD1CMf0Aw9UigLUihbHEwXVywqGsLnptGPYB3v0zxiUDxnLkcHYzxeSihjLCYWGBMv4DcKGpt4GEWOGigLMicHYzxeUBwv0Ag9Kice9psaNue9tvcCPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIbUBYbHDxrOignVBNrLEhqGkgvUzhbVAw50ihDPDgHVDxqGyxv0AcbTAwrKBgv3yxjLkqOGigLMicGHCMvXlNvZzxiPihjLDhvYBIbUzxH0kcK7cGOGic8VifnRAxaGD2HLBIb1C2vYigHHCYbIExbHC3mGCM9SzqOGignVBNn0ihvZzxjsB2XLCYa9ihjLCs51C2vYlNjVBgvZihX8ifTDoWOGignVBNn0igj5CgfZC1jVBgvZid0G','igLUzM86jYWGzxjYB3iPoWOGicaGCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGzMv0y2HPBMCGzw5KCg9PBNqGAw5MB3jTyxrPB24NlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFqP9ktS','v0HfuKuG','cIaGicaGih0kcIaGicaGic8VidmUifbYB3nLCYbWyxjHBwv0zxiGD2HLCMuGzgvUz2fUigzVCM1HDcbHzhzHBMnLzcbJB25KAxrPB25ZcIaGicaGigXLDcb3AgvYzvbHCMfTCYa9ifTDoWOGicaGicbPzIaOD2HLCMuGjIyGkefYCMf5lMLZqxjYyxKOD2HLCMuPihX8icH3AgvYzs5JB25KAxrPB25ZicyMiefYCMf5lMLZqxjYyxKOD2HLCMuUy29UzgL0Aw9UCYKPksKGEWOGicaGicaGihrYEsb7cIaGicaGicaGicbSzxqGCgfYyw1Zid0Gw107cIaGicaGicaGicbSzxqGCgfYyw1jBMrLEca9ide7cIaGicaGicaGicbJB25ZDcb3AgvYzvjLC3vSDca9ihrOAxmUyNvPBgrdB21WBgv4v2HLCMvdBgf1C2uOD2HLCMuSihbHCMfTCYWGCgfYyw1jBMrLEcK7cIaGicaGicaGicbPzIaOD2HLCMvszxn1BhqUC3fSksb7cIaGicaGicaGicaGigLMicH3AgvYzunSyxvZzsKGEWOGicaGicaGicaGicaGihDOzxjLq2XHDxnLicS9icCGqu5eicGNicSGD2HLCMvszxn1BhqUC3fSicSGjYKNoWOGicaGicaGicaGicb9igvSC2uGEWOGicaGicaGicaGicaGihDOzxjLq2XHDxnLid0Gj1DirvjficCGkYb3AgvYzvjLC3vSDc5ZCwW7cIaGicaGicaGicaGih0kicaGicaGicaGicaGD2HLCMvqyxjHBxmGpsb3AgvYzvjLC3vSDc5WyxjHBxm7cIaGicaGicaGicb9cIaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGy29UC3qGzxjYB3iGpsbUzxCGrxjYB3iOj0LUDMfSAwqGD2HLCMuGy29UzgL0Aw9UCZOGjYaRiguUBwvZC2fNzsK7cIaGicaGicaGicbLCNjVCI5ZDgf0DxndB2rLid0GndaWoWOGicaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGicaGFqOGicaGicb9cGOGicaGicaVlYa0lIbnzw5NAgL0Dw5NihrVDgfSigrHDgeGA2vZzwX1CNvOyw4GkhrHBNbHigzPBhrLCIKkicaGicaGy29UC3qGy291BNruB3rHBff1zxj5id0GBMvLzhntDwjXDwvYEqOGicaGicaGid8Gj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicGNicSGyMfZzvf1zxj5icSGjYKGyMfZzv9XDwvYEq','reDsvMC','jYb1BNr1AYbLBMrWB2LUDcbYzwfKigjLCMrHC2fYA2fUcI8VihzPC2LIAwXPDhKGy29UzMLNicGN','cIaGicaVlYbiyw5KBguGzM9YzwLNBIbRzxKGy29UC3rYywLUDcbLCNjVCNmkicaGigLMicHLCNjVCI5JB2rLid09psaNmJm1mdmNksb7ic8VifbVC3rNCMvtuuWGzM9YzwLNBIbRzxKGDMLVBgf0Aw9UcIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWosKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDgB3jLAwDUigTLEsbJB25ZDhjHAw50jYWkicaGicaGicbTzxnZywDLoIaNq2fUBM90igrLBgv0ztOGCMvJB3jKigLZihn0AwXSihjLzMvYzw5JzwqGyNKGB3rOzxiGzgf0ysCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOntaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGigvYCM9YoIaNsw50zxjUywWGu2vYDMvYievYCM9YjYWkicaGicaGBwvZC2fNztOGj0fUigvYCM9Yig9Jy3vYCMvKihDOAwXLigrLBgv0Aw5Nia','jYWkicaGicaGicaGihvWDgLTztOGChjVy2vZCY51ChrPBwuOksWkicaGicaGicaGig1LBw9YEtOGChjVy2vZCY5Tzw1VCNLvC2fNzsGPlaOGicaGicaGicaGC3LZDgvToIb7cIaGicaGicaGicaGihbSyxrMB3jToIbWCM9JzxnZlNbSyxrMB3jTlaOGicaGicaGicaGicbUB2rLvMvYC2LVBJOGChjVy2vZCY52zxjZAw9UlaOGicaGicaGicaGicbWAwq6ihbYB2nLC3mUCgLKcIaGicaGicaGicb9cIaGicaGicaGFtSkcIaGicaGicaGCMvZlMPZB24OAgvHBhrOsw5MBYK7cIaGicaGih0PoWOkicaGicaGlY8Gtw9KDwXLlxnWzwnPzMLJigHLywX0AcbJAgvJAYbLBMrWB2LUDcaOzgvUz2fUihbYzwzPEcbTB2r1BguPcIaGicaGigfWCc5NzxqOjY9HCgKV','igrHDgeGywrQDxn0zwqGC3vJy2vZC2z1BgX5oIaKE3bYAw1HCNLlzxL9psr7CMvXlMjVzhLBChjPBwfYEuTLEv19ycK7cGOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaWks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','igrHDgeGC3vJy2vZC2z1BgX5igfKANvZDgvKjYWkicaGicaGzgf0ytOGCMvZCg9UC2veyxrHlaOGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGFsK7cIaGFsbJyxrJAcaOzxjYB3iPihSkicaGignVBNnVBguUzxjYB3iOj0vYCM9YihnHyxqGBwvUz2fKANvZDcbKyxrHia','laOGicaGicb1CgXVywrdB25MAwC6ia','tw9KzwWOktS','q3bYBxG','Dw5PDf9WCMLJzq','y3jLyxrLzef0','id0GjcCGkYbWktSkicaGicaGicbWkYS7cIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOzgvSzxrLzej5ktSkcIaGicaGicaGDxbKyxrLugfYyw1ZlNb1C2GOBg9JA2vKuM93wYC','oWOGicaGBgv0ihnLBgvJDca9ig51BgW7cIaGicbPzIaOCMvXlMjVzhKUC2vSzwn0icyMiefYCMf5lMLZqxjYyxKOCMvXlMjVzhKUC2vSzwn0ksKGEWOGicaGicbJB25ZDcbPBNzHBgLKrMLLBgrZid0GCMvXlMjVzhKUC2vSzwn0lMzPBhrLCIHMAwvSzca9pIaHDMfSAwrgAwvSzhmUAw5JBhvKzxmOzMLLBgqPktSkicaGicaGAwyGkgLUDMfSAwrgAwvSzhmUBgvUz3rOid4GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcbZzwXLy3qGzMLLBgrZjYWkicaGicaGicaGig1LC3nHz2u6igbjBNzHBgLKigzPzwXKkhmPoIaKE2LUDMfSAwrgAwvSzhmUAM9PBIGNlcaNkx1GlaOGicaGicaGicaGDMfSAwrgAwvSzhm6ihzHBgLKrMLLBgrZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGicbZzwXLy3qGpsbYzxeUyM9KEs5ZzwXLy3q7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGCgfYyw1LDgvYihbHz2LUyxnPicHOyw55ysbQAwTHig1VzguGCgfNAw5HC2KPcIaGicbPzIaOCgfNAw5HDguPihSkicaGicaGAwyGkhbHz2uGpcaXksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGBwvZC2fNztOGj1zHBgLKyxrPB24GzMfPBgvKjYWkicaGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGicbWywDLoIbBj1bHz2uGBxvZDcbIzsbNCMvHDgvYihrOyw4GmcDDcIaGicaGicaGicb9cIaGicaGicaGFsK7cIaGicaGih0kcIaGicaGigLMicHWzxjqywDLidWGmsb8FcbWzxjqywDLid4GmtaWksb7cIaGicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGicaGBwvZC2fNztOGj1zHBgLKyxrPB24GzMfPBgvKjYWkicaGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGicbWzxjFCgfNztOGwYDqzxiGCgfNzsbTDxn0igjLigjLDhDLzw4GmsbHBMqGmtaWj10kicaGicaGicaGih0kicaGicaGicb9ktSkicaGicaGFqOGicaGFqOkicaGigLMicHZzwfYy2HwywX1zs5Szw5NDgGGpIaYntuPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbTzxnZywDLoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGigvYCM9YCZOGEWOGicaGicaGicaGC2vHCMnOx3zHBhvLoIbBj1nLyxjJAcb2ywX1zsbTDxn0ig5VDcbLEgnLzwqGmJu1ignOyxjHy3rLCNmNxqOGicaGicaGih0kicaGicaGFsK7cIaGicb9cGOGicaGlY8GvMfSAwrHC2KGA29SB20GC2vHCMnOAw5NcIaGicbPzIaOixzHBgLKrMLLBgrZlMLUy2X1zgvZkhnLyxjJAej5ksKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGig1LC3nHz2u6icDwywXPzgf0Aw9UigzHAwXLzcCScIaGicaGicaGzxjYB3jZoIb7cIaGicaGicaGicbZzwfYy2HFyNK6ifTGsw52ywXPzcbZzwfYy2GGzMLLBgqUifzHBgLKigzPzwXKCZOGjhT2ywXPzezPzwXKCY5QB2LUkcCSicCPFwbDcIaGicaGicaGFqOGicaGicb9ktSkicaGih0kcIaGicaVlYbcDwLSzcbVChrPB25ZihvUDhvRig1VzgvScIaGicbJB25ZDcbVChrPB25Zid0GEWOGicaGicbZzwfYy2HwywX1ztOGC2vHCMnOvMfSDwuScIaGicaGihnLyxjJAej5oIbZzwfYy2HcEsWkicaGicaGC29YDf9JB2X1Bw5ZoIbZB3j0x2nVBhvTBNmScIaGicaGihDOzxjLoIb3AgvYzsWkicaGicaGC2vSzwn0oIbZzwXLy3qkicaGih07cGOGicaGAwyGkhbHz2LUyxrLksb7cIaGicaGig9WDgLVBNmUCgfNzsa9ihbHz2u7cIaGicaGig9WDgLVBNmUCgvYugfNzsa9ihbLCLbHz2u7cIaGicaGig9WDgLVBNmUB2zMC2v0id0GkhbHz2uGlsaXksaQihbLCLbHz2u7cIaGicb9igvSC2uGEWOGicaGicbVChrPB25ZlMXPBwL0id0GBgLTAxq7cIaGicb9cGOGicaGlY8Gr3vUywTHBIbTB2rLBcb1BNr1AYbTzw5KyxbHDgTHBIbKyxrHigXPC3qkicaGignVBNn0ihjLC3vSDca9igf3ywL0ia','jYWkicaGicaGicaGignVCNjLBgf0Aw9Uswq6ignVCNjLBgf0Aw9UswqkicaGicaGicb9cIaGicaGicKUy2f0y2GOzxjYid0+ignVBNnVBguUzxjYB3iOj1TlywzRyv0Gqxn5BMmGChvIBgLZAcbLCNjVCJONlcbLCNiUBwvZC2fNzsKPoWOGicaGFqO','CMvXDwvZDfnJB3bL','igrHDgeNlaOGicaGicbKzxrHAwXZoIbWCM9JzxnZlMvUDI5ot0rfx0vovIa9pt0Gj2rLDMvSB3bTzw50jYa/igvYCM9YlM1LC3nHz2uGoIb1BMrLzMLUzwqScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9cN0PoWOk','icaGic8VifbYAw9YAxr5idi6ihzPzxDrDwvYEsaODMLYDhvHBcb2Awv3igrHCMKGCgf5Bg9HzcKkicaGia','cIaGicaVlYbwywXPzgfZAsbKzxrHAwWGAxrLBxmGDw50DwSGBwfZDgvYlwrLDgfPBcaOB3bZAw9UywWGDw50DwSGDxbKyxrLkqOGicaGlY8Gvw50DwSGDxbKyxrLq29TCg9ZAxrLlcbKzxrHAwWGAxrLBxmGyMvYDxbHig9IAMvJDcbKzw5Nyw4GE2LUC2vYDdOGw10SihvWzgf0ztOGw10SigrLBgv0ztOGw119cIaGicbPzIaOzgf0ys4','zgf0zvrPBwvgAwvSzhm','laOGicaGicbJB2X1Bw5gB3jTyxrZoIa','vxzssxO','B2jQzwn0','DhvZyvi','cIaQcIaQie1VzgvSihvUDhvRia','Bg1Mruu','C291CMnL','FwaPoWOkicaGihjLDhvYBIbYzxmUC3rHDhvZkdiWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGig1LC3nHz2u6icC','Dg9qyxnJywXdyxnL','cGOGicaGicbPzIaOCMvJywXJDwXHDgvKrMLLBgrZlMXLBMD0Aca+idaPihSkicaGicaGicaVlYbjBMPLy3qGyxvKAxqGy29SDw1UCYaODxbKyxrLzf9HDcWGDxbKyxrLzf9IEsKGA2uGCMvJywXJifvqrefursb2AweGAgvSCgvYcIaGicaGicaGCMvJywXJugXHy2vOB2XKzxiGpsb0AgLZlL9HChbLBMrvCgrHDgvbDwrPDenVBhvTBNmOCMvJywXJDwXHDgvKrMLLBgrZlcbYzwnHBgn1Bgf0zwrwywX1zxmSigrHDgeSigv2zw50q29UDgv4DcWGCMvJywXJugXHy2vOB2XKzxiPoWOGicaGicaGihjLy2fSy3vSyxrLzfzHBhvLCY5WDxnOkhbYAw1HCNLlzxLwywX1zsK7cIaGicaGicaGy29UC3qGCMvJywXJuxvLCNKGpsbGcIaGicaGicaGicbvuerbveuGjhT0AgLZlNDYAxrLu291CMnLFqOGicaGicaGicaGu0vuicr7CMvJywXJDwXHDgvKrMLLBgrZlMPVAw4OjYWGjYL9cIaGicaGicaGicbxsevsrsaKE3rOAxmUChjPBwfYEuTLEx0GpsaKjhTYzwnHBgnqBgfJzwHVBgrLCN0kicaGicaGicaGifjfvfvstKLorYaQcIaGicaGicaGydSkicaGicaGicbJB25ZB2XLlMXVzYGNuMvJywXJDwXHDgLUzYbOzwfKzxiGDg90ywXZoICSihSGCxvLCNK6ihjLy2fSy1f1zxj5lcb2ywX1zxm6ihjLy2fSy3vSyxrLzfzHBhvLCYb9ktSkicaGicaGicbJB25ZDcbYzwnHBgnszxn1BhqGpsbHD2fPDcbJBgLLBNqUCxvLCNKOCMvJywXJuxvLCNKSihjLy2fSy3vSyxrLzfzHBhvLCYK7cIaGicaGicaGt2jQzwn0lMfZC2LNBIH1CgrHDgvKsgvHzgvYlcbYzwnHBgnszxn1BhqUCM93C1SWxsK7cIaGicaGih0kicaGicaG','laOGicaGicbYzxf1zxn0u2nVCgu6ia','y29SDw1UrM9YBwf0CW','jYWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8icDZExn0zw0NlaOGicaGicaGicaGicbVChrPB25ZoIbYzxeUyM9KEu9WDgLVBNmGFhWGE30ScIaGicaGicaGicaGihjLCxvLC3rjzdOGCMvXlMLKihX8ig51BgWkicaGicaGicaGih0kicaGicaGicb9oWOkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','lMDLDerHDgeOz2v0ugf5Bg9HzcK7','zMLLBgrwywXPzgf0Aw9U','AxnbCNjHEq','lY8Gu2TPCcbhru5fuKfuruqGquXxqvLtignVBhvTBNmkicaGicaGicaGigLMicHNzw5LCMf0zwrgAwvSzhmUAw5JBhvKzxmOA2v5ksKGy29UDgLUDwu7','l2XVB2T1CcaTie1LBMrHCgf0A2fUigrHDgeG','zMLSztO','zgvSzxrLzf9VBMX5','BwfW','tw9KzwW','jYWkicaGicaGzMLLBgroyw1LoIa','q29KzwDLBIbPBNzHCMLHBNqGDMLVBgf0Aw9UoIa','cIaGlYOQcIaGicOGvMfSAwrHDguGzMLLBgqGzgvUz2fUignVBNn0CMfPBNrZcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCgfYyw0GE3n0CMLUz30GB3bLCMf0Aw9Uic0Gt3bLCMf0Aw9UicHPBNnLCNqVDxbKyxrLkqOGicaQiebYzxr1CM5ZihTpyMPLy3r9ifzHBgLKyxrPB24GCMvZDwX0ihT2ywXPzcWGzxjYB3jZlcb3yxjUAw5NCYWGC2fUAxrPEMvKFqOGicaQlWOGigfZEw5JihzHBgLKyxrLrMLLBgrdB25ZDhjHAw50CYHMAwvSze5HBwuSihzHBhvLlcbVCgvYyxrPB24GpsaNAw5Zzxj0jYKGEWOGicaGy29UC3qGy29UzMLNid0GDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKtMfTzv07cIaGicbPzIaOiwnVBMzPzYKGEWOGicaGicbYzxr1CM4GE3zHBgLKoIb0CNvLlcbZyw5PDgL6zwq6ihzHBhvLlcbLCNjVCNm6ifTDlcb3yxjUAw5NCZOGw119oWOGicaGFqOkicaGignVBNn0ihjLC3vSDca9ihSkicaGicaGDMfSAwq6ihrYDwuScIaGicaGigvYCM9YCZOGw10ScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIb2ywX1zqOGicaGFtSkcIaGicbJB25ZDcbJB25ZDhjHAw50CYa9ignVBMzPzY5JB25ZDhjHAw50CYb8Fcb7FtSkicaGignVBNn0igzPzwXKvhLWzsa9ignVBMzPzY50ExbLihX8icDZDhjPBMCNoWOkicaGic8VideUienOzwnRihjLCxvPCMvKcIaGicbPzIaOy29UC3rYywLUDhmUCMvXDwLYzwqGjIyGkhzHBhvLid09psb1BMrLzMLUzwqGFhWGDMfSDwuGpt09ig51BgWGFhWGDMfSDwuGpt09icCNksKGEWOGicaGicaVlYbtA2LWoIbHDxrVr2vUzxjHDguGyxrHDsbWCMLTyxj5s2v5igrPigLUC2vYDaOGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOy29UC3rYywLUDhmUyxv0B0DLBMvYyxrLihX8ignVBNn0CMfPBNrZlNbYAw1HCNLlzxKPksb7cIaGicaGicaGlY8Gt0SG4OcuigfRyw4GzgKTz2vUzxjHDguGB3rVBwf0AxmkicaGicaGFqOGicaGicaVlYbtA2LWoIb1CgrHDguGCgfYDgLHBcdIGjqGzMLLBgqGDgLKywSGzgLRAxjPBsbIzxjHCNrPihrPzgfRigrPDwjHAaOGicaGicbLBhnLigLMicHVCgvYyxrPB24Gpt09icD1CgrHDguNicyMihzHBhvLid09psb1BMrLzMLUzwqPihSkicaGicaGicaVlYbpsYdIGjqGzMLLBgqGDgLKywSGC2vKyw5NigrPlxvWzgf0zqOGicaGicb9cIaGicaGigvSC2uGEWOGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Yzxf1AxjLze1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigLZihjLCxvPCMvKydSkicaGicaGicbYzxn1BhqUzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGicaGCMvZDwX0lNzHBgLKid0GzMfSC2u7cIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGicaGFqOGicaGFqOkicaGic8VifnRAxaGDMfSAwrHDgLVBIbQAwTHihzHBhvLigTVC29UzYbKyw4GDgLKywSGCMvXDwLYzwqkicaGigLMicH2ywX1zsa9pt0GDw5KzwzPBMvKihX8ihzHBhvLid09psbUDwXSihX8ihzHBhvLid09psaNjYKGEWOGicaGicbYzxr1CM4GCMvZDwX0oWOGicaGFqOkicaGic8VidiUifr5CguTC3bLy2LMAwmGDMfSAwrHDgLVBGOGicaGC3DPDgnOicHMAwvSzfr5CguPihSkicaGicaGy2fZzsaNC3rYAw5NjZOkicaGicaGy2fZzsaNDgv4DcC6cIaGicaGicaGlY8GDgv4DcbKAxzHBgLKyxnPigLKzw50AwSGzgvUz2fUihn0CMLUzYaODw5IB3vUzgvKihn0CMLUzYK7igHHBNLHigjLCMjLzgekicaGicaGicaVlYbWzw1LDgfHBIbvssaO4OAsihrLEhrHCMvHksWGyNvRyw4Gyxr1CMfUihzHBgLKyxnPigrHDgeUcIaGicaGicaGCMv0DxjUigf3ywL0ihrOAxmUx3zHBgLKyxrLu3rYAw5Nq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPoWOGicaGicbJyxnLicDPBNrLz2vYjZOkicaGicaGy2fZzsaNzgvJAw1HBcC6cIaGicaGignHC2uGj251BwjLCIC6cIaGicaGicaGCMv0DxjUihrOAxmUx3zHBgLKyxrLtNvTyMvYq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPoWOGicaGicbJyxnLicDKyxrLjZOkicaGicaGy2fZzsaNzgf0zxrPBwuNoGOGicaGicbJyxnLicD0Aw1LC3rHBxaNoGOGicaGicbJyxnLicD0Aw1LjZOkicaGicaGicbYzxr1CM4GDgHPCY5FDMfSAwrHDgveyxrLq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPoWOGicaGicbJyxnLicDIB29SzwfUjZOkicaGicaGicbYzxr1CM4GDgHPCY5FDMfSAwrHDgvcB29SzwfUq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPoWOGicaGicbJyxnLicD1DwLKjZOkicaGicaGicbYzxr1CM4GDgHPCY5FDMfSAwrHDgvvDwLKq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPoWOGicaGicbJyxnLicDHCNjHEsC6cIaGicaGicaGCMv0DxjUihrOAxmUx3zHBgLKyxrLqxjYyxLdB25ZDhjHAw50CYHMAwvSze5HBwuSihzHBhvLlcbJB25ZDhjHAw50CYK7cIaGicaGignHC2uGj2PZB24NoGOGicaGicaGihjLDhvYBIb0AgLZlL92ywXPzgf0zuPZB25dB25ZDhjHAw50CYHMAwvSze5HBwuSihzHBhvLlcbJB25ZDhjHAw50CYK7cIaGicaGigrLzMf1Bhq6cIaGicaGicaGCMv0DxjUihjLC3vSDdSkicaGih0kicb9cGOGic8QkGOGicaQifzHBgLKyxrLihn0CMLUzYbJB25ZDhjHAw50CWOGicaQlWOGigfZEw5Jif92ywXPzgf0zvn0CMLUz0nVBNn0CMfPBNrZkgzPzwXKtMfTzsWGDMfSDwuSignVBNn0CMfPBNrZksb7cIaGicbSzxqGC2fUAxrPEMvKid0Gu3rYAw5NkhzHBhvLktSkicaGignVBNn0igvYCM9YCYa9ifTDoWOGicaGy29UC3qGAxniyxnOrMLLBgqGpsbJB25ZDhjHAw50CY5OyxnOid09psaNyMnYExb0jZSkcIaGicaVlYbuCMLTcIaGicbPzIaOy29UC3rYywLUDhmUDhjPBsKGEWOGicaGicbZyw5PDgL6zwqGpsbZyw5PDgL6zwqUDhjPBsGPoWOGicaGFqOkicaGic8VienHC2uGDhjHBNnMB3jTyxrPB24GkhnRAxaGAMLRysbOyxnOigzPzwXKiokaLcb0AwrHAYbYzwXLDMfUihvUDhvRihbHC3n3B3jKkqOGicaGAwyGkcfPC0HHC2HgAwvSzcKGEWOGicaGicbPzIaOy29UC3rYywLUDhmUBg93zxjJyxnLksb7cIaGicaGicaGC2fUAxrPEMvKid0GC2fUAxrPEMvKlNrVtg93zxjdyxnLkcK7cIaGicaGih0GzwXZzsbPzIaOy29UC3rYywLUDhmUDxbWzxjJyxnLksb7cIaGicaGicaGC2fUAxrPEMvKid0GC2fUAxrPEMvKlNrVvxbWzxjdyxnLkcK7cIaGicaGih0kicaGih0kcIaGicaVlYbmzw5NDgGGDMfSAwrHDgLVBIaODMfSAwrHC2KGCgXHAw50zxH0ihnLyMvSDw0GAgfZAcKkicaGigLMicHJB25ZDhjHAw50CY5TAw5mzw5NDgGGjIyGC2fUAxrPEMvKlMXLBMD0Aca8ignVBNn0CMfPBNrZlM1PBKXLBMD0AcKGEWOGicaGicbJB25ZDcbTzxnZywDLid0Gy29UC3rYywLUDhmUBwLUtgvUz3rOtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHDcbSzwfZDcaKE2nVBNn0CMfPBNrZlM1PBKXLBMD0Ah0Gy2HHCMfJDgvYC2a7cIaGicaGigvYCM9YCY5WDxnOkg1LC3nHz2uPoWOGicaGFqOGicaGAwyGkgnVBNn0CMfPBNrZlM1HEeXLBMD0AcaMjIaHAxniyxnOrMLLBgqGjIyGC2fUAxrPEMvKlMXLBMD0Aca+ignVBNn0CMfPBNrZlM1HEeXLBMD0AcKGEWOGicaGicbJB25ZDcbTzxnZywDLid0Gy29UC3rYywLUDhmUBwf4tgvUz3rOtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbUB3qGzxHJzwvKicr7y29UC3rYywLUDhmUBwf4tgvUz3rOFsbJAgfYywn0zxjZydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cGOGicaGlY8Gugf0DgvYBIb2ywXPzgf0Aw9UicH2ywXPzgfZAsbWBgfPBNrLEhqGC2vIzwX1BsbOyxnOkqOGicaGAwyGkgnVBNn0CMfPBNrZlNbHDhrLCM4PihSkicaGicaGy29UC3qGCMvNzxGGpsbUzxCGuMvNrxHWkgnVBNn0CMfPBNrZlNbHDhrLCM4PoWOGicaGicbPzIaOixjLz2v4lNrLC3qOC2fUAxrPEMvKksKGEWOGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5Wyxr0zxjUtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGzg9LCYbUB3qGBwf0y2GGCMvXDwLYzwqGCgf0DgvYBMa7cIaGicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGih0kicaGih0kcIaGicaVlYbgB3jTyxqGDMfSAwrHDgLVBIaOzw1HAwWSihbOB25Llcb1CMWSihv1AwqPcIaGicbPzIaOy29UC3rYywLUDhmUzM9YBwf0ksb7cIaGicaGignVBNn0igzVCM1HDfzHBgLKid0GDgHPCY5FDMfSAwrHDgvgB3jTyxqOC2fUAxrPEMvKlcbJB25ZDhjHAw50CY5MB3jTyxqPoWOGicaGicbPzIaOiwzVCM1HDfzHBgLKlNzHBgLKksb7cIaGicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlMzVCM1HDe1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0NigHHCYbPBNzHBgLKicr7y29UC3rYywLUDhmUzM9YBwf0FsbMB3jTyxrGoWOGicaGicaGigvYCM9YCY5WDxnOkg1LC3nHz2uPoWOGicaGicb9cIaGicb9cGOGicaGlY8Grw51Bsb2ywXPzgf0Aw9UcIaGicbPzIaOy29UC3rYywLUDhmUzw51BsaMjIbbCNjHEs5PC0fYCMf5kgnVBNn0CMfPBNrZlMvUDw0Pksb7cIaGicaGigLMicGHy29UC3rYywLUDhmUzw51Bs5PBMnSDwrLCYHZyw5PDgL6zwqPksb7cIaGicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlMvUDw1nzxnZywDLihX8igbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLig9UzsbVzJOGjhTJB25ZDhjHAw50CY5LBNvTlMPVAw4OjYWGjYL9ydSkicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGFqOGicaGFqOkicaGic8VifnRAxaGDw5PCxvLignVBNn0CMfPBNqGlsbKyxrHyMfZzsbHA2fUigHHBMrSzsb2AweGvu5juvvfigLUzgv4cIaGicaVlYbPzIaOy29UC3rYywLUDhmUDw5PCxvLksb7ic8QigHHBMrSzwqGyNKGzgf0ywjHC2uGkI8GFqOkicaGic8VieHHC2GGDhjHBNnMB3jTyxrPB24GkhnLDgvSywGGC2vTDweGDMfSAwrHDgLVBIbWyxnZlcbZzwjLBhvTihjLDhvYBIKkicaGigLMicHPC0HHC2HgAwvSzcaMjIbLCNjVCNmUBgvUz3rOid09psaWksb7cIaGicaGignVBNn0igjJCNLWDca9ihjLCxvPCMuOj2jJCNLWDcCPoWOGicaGicbJB25ZDcbJB3n0id0Gy29UC3rYywLUDhmUAgfZAenVC3qGFhWGmta7cIaGicaGihnHBML0AxPLzca9igf3ywL0igjJCNLWDc5OyxnOkhnHBML0AxPLzcWGy29ZDcK7cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZlaOGicaGicb3yxjUAw5NCZOGw10ScIaGicaGihnHBML0AxPLzdOGC2fUAxrPEMvKcIaGicb9oWOGih0kcIaGlYOQcIaGicOGvMfSAwrHDguGBNvTyMvYignVBNn0CMfPBNrZcIaGicOVcIaGx3zHBgLKyxrLtNvTyMvYq29UC3rYywLUDhmOzMLLBgroyw1Llcb2ywX1zsWGy29UC3rYywLUDhmPihSkicaGigXLDcbZyw5PDgL6zwqGpsb2ywX1ztSkicaGignVBNn0igvYCM9YCYa9ifTDoWOkicaGic8VifbHCNnLihrVig51BwjLCGOGicaGAwyGkhr5CgvVzIbZyw5PDgL6zwqGpt09icDZDhjPBMCNksb7cIaGicaGihnHBML0AxPLzca9ihbHCNnLrMXVyxqOC2fUAxrPEMvKktSkicaGih0kcIaGicbPzIaOAxnoyu4OC2fUAxrPEMvKksKGEWOGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHihzHBgLKig51BwjLCMaPoWOGicaGicbYzxr1CM4GE3zHBgLKoIbMywXZzsWGzxjYB3jZoIbLCNjVCNmSihDHCM5PBMDZoIbBxsWGC2fUAxrPEMvKoIb2ywX1zx07cIaGicb9cGOGicaGlY8GtwLUl01HEaOGicaGAwyGkgnVBNn0CMfPBNrZlM1PBIaHpt0GDw5KzwzPBMvKicyMihnHBML0AxPLzca8ignVBNn0CMfPBNrZlM1PBIKGEWOGicaGicbJB25ZDcbTzxnZywDLid0Gy29UC3rYywLUDhmUBwLUtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHDcbSzwfZDcaKE2nVBNn0CMfPBNrZlM1PBN1GoWOGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGih0kicaGigLMicHJB25ZDhjHAw50CY5TyxGGit09ihvUzgvMAw5LzcaMjIbZyw5PDgL6zwqGpIbJB25ZDhjHAw50CY5TyxGPihSkicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlM1HEe1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGBM90igv4y2vLzcaKE2nVBNn0CMfPBNrZlM1HEh1GoWOGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGih0kcIaGicaVlYbqB3nPDgL2zs9ozwDHDgL2zqOGicaGAwyGkgnVBNn0CMfPBNrZlNbVC2L0AxzLicyMihnHBML0AxPLzca8psaWksb7cIaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5WB3nPDgL2zu1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGCg9ZAxrPDMvGoWOGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGih0kicaGigLMicHJB25ZDhjHAw50CY5UzwDHDgL2zsaMjIbZyw5PDgL6zwqGpJ0GmcKGEWOGicaGicbJB25ZDcbTzxnZywDLid0Gy29UC3rYywLUDhmUBMvNyxrPDMvnzxnZywDLihX8igbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLig5Lz2f0AxzLydSkicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicb9cGOGicaGlY8Gsw50zwDLCIbJAgvJAWOGicaGAwyGkgnVBNn0CMfPBNrZlMLUDgvNzxiGjIyGiu51BwjLCI5PC0LUDgvNzxiOC2fUAxrPEMvKksKGEWOGicaGicbJB25ZDcbTzxnZywDLid0Gy29UC3rYywLUDhmUAw50zwDLCK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGyw4GAw50zwDLCMa7cIaGicaGigvYCM9YCY5WDxnOkg1LC3nHz2uPoWOGicaGFqOkicaGic8VifbYzwnPC2LVBI9ty2fSzsbMB3iGzgvJAw1HBaOGicaGAwyGkgnVBNn0CMfPBNrZlNbYzwnPC2LVBIaHpt0GDw5KzwzPBMvKksb7cIaGicaGignVBNn0igrLy2LTywXZid0GkhnHBML0AxPLzc50B1n0CMLUzYGPlNnWBgL0kcCUjYLBmv0GFhWGjYCPlMXLBMD0AdSkicaGicaGAwyGkgrLy2LTywXZid4Gy29UC3rYywLUDhmUChjLy2LZAw9Uksb7cIaGicaGicaGy29UC3qGBwvZC2fNzsa9ignVBNn0CMfPBNrZlNbYzwnPC2LVBK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGAgf2zsbHDcbTB3n0icr7y29UC3rYywLUDhmUChjLy2LZAw9UFsbKzwnPBwfSihbSywnLC2a7cIaGicaGicaGzxjYB3jZlNb1C2GOBwvZC2fNzsK7cIaGicaGih0kicaGih0kcIaGicbYzxr1CM4GEWOGicaGicb2ywXPzdOGzxjYB3jZlMXLBMD0Aca9pt0GmcWkicaGicaGzxjYB3jZoIbLCNjVCNmScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIbZyw5PDgL6zwqkicaGih07cIaGFqOkicaVkIOkicaGkIbwywXPzgf0zsbKyxrLignVBNn0CMfPBNrZcIaGicOVcIaGx3zHBgLKyxrLrgf0zunVBNn0CMfPBNrZkgzPzwXKtMfTzsWGDMfSDwuSignVBNn0CMfPBNrZksb7cIaGicbJB25ZDcbLCNjVCNmGpsbBxtSkicaGigXLDcbZyw5PDgL6zwqGpsb2ywX1ztSkcIaGicaVlYbcyxnPyYbKyxrLihzHBgLKyxrPB24Gkg1VCMuGy29TCgXLEcbWyxjZAw5NigHHBMrSzwqGyNKGrgf0zvrPBwvqyxjZzxiGAw4GyMfZzw1VzgvSkqOGicaGlY8GtwLUl01HEcbKyxrLihjHBMDLcIaGicbPzIaOy29UC3rYywLUDhmUBwLUihX8ignVBNn0CMfPBNrZlM1HEcKGEWOGicaGicb0CNKGEWOGicaGicaGignVBNn0igrHDgvwywX1zsa9ig5LDYbeyxrLkhnHBML0AxPLzcK7cIaGicaGicaGAwyGkgLZtMfokgrHDgvwywX1zs5NzxruAw1LkcKPksb7cIaGicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHihzHBgLKigrHDgvGktSkicaGicaGicb9igvSC2uGEWOGicaGicaGicaGAwyGkgnVBNn0CMfPBNrZlM1PBIKGEWOGicaGicaGicaGicbJB25ZDcbTAw5eyxrLid0GBMv3ierHDguOy29UC3rYywLUDhmUBwLUktSkicaGicaGicaGicaGAwyGkgrHDgvwywX1zsa8ig1PBKrHDguPihSkicaGicaGicaGicaGicbJB25ZDcbTzxnZywDLid0Gy29UC3rYywLUDhmUBwLUtwvZC2fNzsb8FcbGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbVBIbVCIbHzNrLCIaKE2nVBNn0CMfPBNrZlM1PBN1GoWOGicaGicaGicaGicaGigvYCM9YCY5WDxnOkg1LC3nHz2uPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cIaGicaGicaGicbPzIaOy29UC3rYywLUDhmUBwf4ksb7cIaGicaGicaGicaGignVBNn0ig1HEerHDguGpsbUzxCGrgf0zsHJB25ZDhjHAw50CY5TyxGPoWOGicaGicaGicaGicbPzIaOzgf0zvzHBhvLid4GBwf4rgf0zsKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5TyxHnzxnZywDLihX8igbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLig9Uig9YigjLzM9YzsaKE2nVBNn0CMfPBNrZlM1HEh1GoWOGicaGicaGicaGicaGigvYCM9YCY5WDxnOkg1LC3nHz2uPoWOGicaGicaGicaGicb9cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9ignHDgnOicHLksb7cIaGicaGicaGzxjYB3jZlNb1C2GOyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGysb2ywXPzcbKyxrLycK7cIaGicaGih0kicaGih0kcIaGicaVlYbczwzVCMuVqwz0zxiGCMvSyxnPigfRyw4GzgL2ywXPzgfZAsbKAsbFDMfSAwrHDgvdCM9ZC0zPzwXKq29UC3rYywLUDhmkcIaGicbYzxr1CM4GEWOGicaGicb2ywXPzdOGzxjYB3jZlMXLBMD0Aca9pt0GmcWkicaGicaGzxjYB3jZoIbLCNjVCNmScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKoIbZyw5PDgL6zwqkicaGih07cIaGFqOkicaVkIOkicaGkIbwywXPzgf0zsbIB29SzwfUignVBNn0CMfPBNrZcIaGicOVcIaGx3zHBgLKyxrLqM9VBgvHBKnVBNn0CMfPBNrZkgzPzwXKtMfTzsWGDMfSDwuSignVBNn0CMfPBNrZksb7cIaGicbJB25ZDcbLCNjVCNmGpsbBxtSkicaGigXLDcbZyw5PDgL6zwqGpsb2ywX1ztSkcIaGicbPzIaOy29UC3rYywLUDhmUC3rYAwn0ksb7cIaGicaGigLMicH0ExbLB2yGC2fUAxrPEMvKice9psaNyM9VBgvHBICPihSkicaGicaGicbLCNjVCNmUChvZAcHGrMLLBgqGjYr7zMLLBgroyw1LFsCGBxvZDcbIzsbHigjVB2XLyw4GkhrYDwuVzMfSC2uPycK7cIaGicaGih0kicaGih0GzwXZzsb7cIaGicaGic8VifrLCMLTysbOyw55ysbZzxqGA2fUB25PAYaOC2vSyxjHCYbnEvnrtc9pCMfJBguVu1fmAxrLktOGDhj1zs8NDhj1zsCVms8NmsCkicaGicaGlY8GzgfUigzHBhnLlYDMywXZzsCVmc8NmcCUie5PBgfPigXHAw4GreLut0XbsYWGyNvRyw4GzgLWywTZysb2AweGqM9VBgvHBIGPcIaGicaGic8VicH5yw5Nig1LBwj1yxqGC3rYAw5Nig5VBI1RB3nVBMCGC2vWzxj0AsaNBM90lweTyM9VBgvHBICGzgLHBs1KAwfTigPHzgKkicaGicaGlY8GDhj1zsKUie1LBMPHBwLUideGAw5WDxqGlt4GyMvOyxzPB3iGAwrLBNrPAYbSAw50yxmGzgLHBgvJDc4kicaGicaGAwyGkhnHBML0AxPLzca9pt0GDhj1zsb8FcbZyw5PDgL6zwqGpt09icD0CNvLjYb8FcbZyw5PDgL6zwqGpt09ideGFhWGC2fUAxrPEMvKid09psaNmsCPihSkicaGicaGicbZyw5PDgL6zwqGpsb0CNvLoWOGicaGicb9igvSC2uGAwyGkhnHBML0AxPLzca9pt0GzMfSC2uGFhWGC2fUAxrPEMvKid09psaNzMfSC2uNihX8ihnHBML0AxPLzca9pt0Gmcb8FcbZyw5PDgL6zwqGpt09icCWjYKGEWOGicaGicaGihnHBML0AxPLzca9igzHBhnLoWOGicaGicb9igvSC2uGEWOGicaGicaGigvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSze5HBwv9jYbTDxn0igjLigeGyM9VBgvHBIaODhj1zs9MywXZzsLGktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb7cIaGicaGihzHBgLKoIbLCNjVCNmUBgvUz3rOid09psaWlaOGicaGicbLCNjVCNm6igvYCM9YCYWkicaGicaGD2fYBMLUz3m6ifTDlaOGicaGicbZyw5PDgL6zwq6ihnHBML0AxPLzaOGicaGFtSk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zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cGOGicaGicbPzIaOy29UC3rYywLUDhmUywz0zxiPihSkicaGicaGicbJB25ZDcbHzNrLCKzPzwXKid0Gy29UC3rYywLUDhmUywz0zxi7cIaGicaGicaGAwyGkgrHDgfBzMLLBgroyw1LxsaMjIbKyxrHw2fMDgvYrMLLBgrDksb7cIaGicaGicaGicb0CNKGEWOGicaGicaGicaGicbPzIaOBMv3ierHDguOzgf0yvTMAwvSze5HBwvDksa8psbUzxCGrgf0zsHKyxrHw2fMDgvYrMLLBgrDksKGEWOGicaGicaGicaGicaGignVBNn0ig1LC3nHz2uGpsbJB25ZDhjHAw50CY5HzNrLCK1LC3nHz2uGFhWGyezPzwXKicCKE2zPzwXKtMfTzx0Nig11C3qGyMuGywz0zxiGjYr7ywz0zxjgAwvSzh0NydSkicaGicaGicaGicaGicbLCNjVCNmUChvZAcHTzxnZywDLktSkicaGicaGicaGicaGFqOGicaGicaGicaGFsbJyxrJAcaOzsKGEWOGicaGicaGicaGicbLCNjVCNmUChvZAcHGsw52ywXPzcbKyxrLigzVCM1HDcbMB3iGzMLLBgqGjYr7zMLLBgroyw1LFsC6ignHBM5VDcbJB21WyxjLigrHDgvZycK7cIaGicaGicaGicb9cIaGicaGicaGFqOGicaGicb9cIaGicb9cGOGicaGCMv0DxjUihSkicaGicaGDMfSAwq6igvYCM9YCY5Szw5NDgGGpt09idaScIaGicaGigvYCM9YCZOGzxjYB3jZcIaGicb9oWOGih0k','lNzHBgLKyxrLrgf0ysHYzxeUyM9KEsWGj3vWzgf0zsCPoWOGicaGicbPzIaOixzHBgLKyxrPB24UAxnwywXPzcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNvMfSAwrHDgLVBIbMywLSzwqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGzgf0ysCScIaGicaGicaGicbLCNjVCNm6ihzHBgLKyxrPB24UzxjYB3jZlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOkicaGicaGlY8Gr3vUywTHBIbZyw5PDgL6zwqGzgf0yqOGicaGicbYzxeUyM9KEsa9ihSGlI4UCMvXlMjVzhKSic4UlNzHBgLKyxrPB24UC2fUAxrPEMvKrgf0ysb9oWOGicaGFq','cIaGicb9oWO','CMvZDhjPy3q','laOGicaGicaGicaGDgv4DdOGAxrLBs4','lMnOzwnRu29MDerLBgv0zuzRugfYzw50CYHYzxeUyM9KEsWGj3vWzgf0zsCPoWO','vfHTv2O','icaGic8ViezPzwXKihzHBgLKyxrPB24Gy29UzMLNDxjHDgLVBGOGicaGDgHPCY52ywXPzgf0Aw9Uq29UzMLNid0GEWO','l3vWzgf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','Cg9W','qMfPqu4','jYWGjW','ksbMCM9TigfSBcbPDgvTCWOGicaGicbKyxrHlNrVDgfSx2fTB3vUDca9igrHDgeU','oWOkicaGignVBNn0ihDYAxrLu291CMnLid0GDgHPCY5NzxruywjSzvnVDxjJzsGND3jPDguNktSkicaGignVBNn0ihjLDhvYBMLUz0zPzwXKCYa9ihrOAxmUz2v0uMv0DxjUAw5NrMLLBgrZkcK7cIaGicaVlYbKzwXLDgvKx2j5oIbIB2r5igvRC3bSAxnPDcdIHPiGzxzLBNrdB250zxH0lMfKzgL0Aw9UywXdB250zxH0lNvZzxjFAwqG4OAsicDZExn0zw0NlIbszxnVBhvZAqOGicaGlY8GEwfUzYbtqu1bigrPCgfRywKGDw50DwSGBwfZDgvYierbtIbZzwX1CNvOigrLC2nLBMrHBNqGCgfKysbJyxnJywrLicHgsY1trc0Zicm2ks4kicaGignVBNn0igrLBgv0zwrcEsa9ihrOAxmUx3jLC29SDMvbDwrPDfvZzxjjzcHJCML0zxjPysWGzxzLBNrdB250zxH0lcaN','laOGicaGicbMAwvSzeXHyMvSCZOG','y0PhtKO','tw9KzwWPoICSigvYCM9YktSkicaGicaGDgHYB3CGzxjYB3i7cIaGicb9cIaGFqOkicaVkIOkicaGkIbpDMvYCMLKzsbNzxrtDgf0AwnmB29RDxbeyxrHihvUDhvRig1LBMDNDw5HA2fUigTVBg9TicC','ih0ScIaGicaGicaGicb7igTLEtOGCMvXlL9Yzxf1zxn0u2nVCguUy29SDw1Ulcb2ywX1ztOGCMvXlL9Yzxf1zxn0u2nVCguUDMfSDwuGFqOGicaGicaGif0kicaGicaGFsK7cIaGicaGigLMicGHC2nVCgvdAgvJAY5ZDwnJzxnZihX8icfZy29WzunOzwnRlMrHDgeGFhWGC2nVCgvdAgvJAY5KyxrHlMXLBMD0Aca9pt0GmcKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNrgf0ysbUB3qGzM91BMqNlaOGicaGicaGicaGBwvZC2fNztOGj01HC3rLCIbYzwnVCMqGBM90igzVDw5Kig9YigfJy2vZCYbKzw5PzwqNlaOGicaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGicb9ktSkicaGicaGFqOGicaGFqO','uMXSqKC','cIaGicaVlYbwywXPzgfZAsbKyw4GC2fUAxrHC2KGAgvHzgvYigrHDgeGzgvUz2fUignVBNn0CMfPBNqGkhrLCM1HC3vRigHHC2GPcIaGicbPzIaODhLWzw9Mia','C2vHCMnOq29SDw1UCW','cIaGicaGicaGlY8GrKSTu0qTmIbYzxn0CMLJDcaJ','v0j6CKK','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GzgvMAw5PC2KGA29SB20GEwfUzYbKyxbHDcbKAwnHCMKkicaGkIbaCMv0DxjUCYb7qxjYyxL9ieTVBg9TihLHBMCGzgfWyxqGzgLJyxjPcIaGicOVcIaGz2v0u2vHCMnOywjSzunVBhvTBNmOksb7cIaGicbYzxr1CM4G','y29UC3qGzgv0ywLSuxvLCNKGpsbGu0vmrunuicOGrLjptsa','id0G','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','zw50CMLLCW','jZSkicaGigLMicGHCMvXlMjVzhLBChjPBwfYEuTLEv0PihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj01PC3nPBMCGCMvXDwLYzwqGzMLLBgqNlaOGicaGicaGig1LC3nHz2u6igbqCMLTyxj5igTLEsaOjhTWCMLTyxj5s2v5FsKGAxmGCMvXDwLYzwqGzM9YihvWzgf0zwaScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','psr7zgf0ys4','y3jLyxrLzej5','t1nNr3e','DgfIBgvoyw1L','ksbmsuTfihvWCgvYkcqXkq','ksb7cIaGicaGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkcDZB2z0lwrLBgv0ztOGy29SDw1Uia','iIK7cIaGicaGicaGicaGicaGzMTfCNjVCI5ZDgf0DxndB2rLid0GndiYoWOGicaGicaGicaGicaGihrOCM93igzRrxjYB3i7cIaGicaGicaGicaGih0kicaGicaGicaGih0kicaGicaGicb9','jYWGDMfSDwu6ihnJB3bLvMfSDwuGFtSkcIaGy29UC3qGzw5KCg9PBNqGpsbYzxeUCgf0Ac5ZDwjZDhjPBMCOmsK7cIaGy29UC3qGC2nVCgvdB25KAxrPB24Gpsb7igTLEtOGjW','A3zYy2G','rLPqz2u','ksdIHPiGnda5igjPBgeGBwfZAwGGzgLYzwzLCMvUC2LRyw4kicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx3jLC3rYAwn0vMfSid0GBg9JA2vKuM93wYC','cIaGicbPzIaOixjLCs5IB2r5lNDOzxjLksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDnAxnZAw5NihjLCxvPCMvKigzPzwXKjYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcbYzxf1zxn0igzVCM1HDdOGD2HLCMuGCgfYyw1LDgvYigLZihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIbBEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih1DcIaGicaGicaGFsWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGigLMicGHqxjYyxKUAxnbCNjHEsHYzxeUyM9KEs53AgvYzsKGjIyGixjLCs5IB2r5lNDOzxjLlMnVBMrPDgLVBNmPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicbTzxnZywDLoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicj3AgvYzsi6ifSkicaGicaGicaGicaGEYaIA2v5iJOGiMLKiIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0kicaGicaGicaGif0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8Vid09psbfvKvovcbmsuzfq1Ldteu6ig9UqMvMB3jLierftevursa9pt0kicaGigXLDcbVBgreyxrHid0GBNvSBdSkicaGigXLDcbUzxDeyxrHid0GBNvSBdSkicaGignVBNn0ihjLCxvLC3reyxrHid0GCMvXlMjVzhK7cIaGicbSzxqGCMvZCg9UC2veyxrHid0GBNvSBdSkcIaGicaVlYbdzwSGyxbHA2fOigrHDgeGzxHPC3qGC2vIzwX1BsbKzwXLDguGzgfUigfTyMLSig9SzcbKyxrHihvUDhvRigv2zw50igXPzMvJEwnSzqOGicaGlY8GtwvUz2D1BMfRyw4Gu0vmrunuicOGzgfYAsb0ywjLBcb1DgfTysaODgfUCgeGzxHWBgLJAxqGC2vSzwn0ksbRyxjLBMeGzMLLBgroyw1LcIaGicaVlYbIAxnHig1LBMDHBMr1BMCGA29SB20GzgfYAsbkt0LoicHTAxmUignPDhLFBMfTzsKGEwfUzYb0AwrHAYbHzgeGzgKGDgfIzwWGDxrHBwekicaGigLMicHYzxeUyM9KEs53AgvYzsaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIbYzxeUyM9KEs53AgvYzs5Szw5NDgGGpIaWksb7cIaGicaGignVBNn0igzPCNn0q29UzgL0Aw9Uid0GCMvXlMjVzhKUD2HLCMvBmf07cIaGicaGihrYEsb7cIaGicaGicaGy29UC3qGzxHPC3rPBMDeyxrHid0GyxDHAxqG','cIaGicaVlYbdzwSGyxbHA2fOihbYAw1HCNKGA2v5igfKywXHAcbvvuLeihLHBMCGDMfSAwqGkgPPA2eGChjPBwfYEsbRzxKGywrHBgfOicDPzcCPcIaGicbJB25ZDcb1DwLKuMvNzxGGpsaVxLSWltLHlwzDEZH9lvSWltLHlwzDEZr9lvSXltvDwZaToweTzL17m30TwZG5ywjDwZaToweTzL17m30TwZaToweTzL17mtj9jc9PoWOGicaGy29UC3qGAxnwywXPzfvvsuqGpsbWCMLTyxj5s2v5id09psaNAwqNicyMihv1AwrszwDLEc50zxn0khjLCs5IB2r5w3bYAw1HCNLlzxLDktSkcIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','jYWGDMfSDwu6igrHDgeU','uu9zwKW','cIaGicbJB25ZDcbOzwfKzxjdywXJid0G','cIaQiebWyxjHBsb7t2jQzwn0FsbJB25MAwCGlsblB25MAwD1CMfZAsb1BNr1AYbTzw5QywXHBMTHBIbTB2r1BaOGkIbaCgfYyw0GE251BwjLCN0Gy29UzMLNlNbVCNqGlsbqB3j0ihvUDhvRihnLCNzLCGOGkIbaCgfYyw0GE3n0CMLUz30Gy29UzMLNlMTLEsaTiefqssblzxKGkg9WC2LVBMfSkqOGkIbaCgfYyw0GE2jVB2XLyw59ignVBMzPzY5JB3jZic0Grw5HyMXLienpuLmGkgrLzMf1Bhq6ihrYDwuPcIaQiebWyxjHBsb7yM9VBgvHBN0Gy29UzMLNlMXVz2DPBMCGlsbfBMfIBguGCMvXDwvZDcbSB2DNAw5NicHKzwzHDwX0oIb0CNvLkqOGkIbaCMv0DxjUCYb7uhjVBwLZztX2B2LKpN0GuhjVBwLZzsb5yw5NihrPzgfRihbLCM5HAcbYzxnVBhzLigfNyxiGC2vYDMvYihrLDgfWigjLCMPHBgfUcIaQlWPHC3LUyYbMDw5JDgLVBIbLEgvJDxrLkgnVBMzPzYKGEWOGihjLDhvYBIbUzxCGuhjVBwLZzsGOCMvZB2X2zsWGCMvQzwn0ksa9pIb7cIaGicb0CNKGEWOGicaGicbJB25ZDcbHChaGpsbLEhbYzxnZkcK7cIaGicaGignVBNn0ihbVCNqGpsbJB25MAwCUCg9YDcb8FcaZmdaWoWOGicaGicbJB25ZDcbZzxj2zxjbzgrYzxnZid0Gy29UzMLNlNnLCNzLCKfKzhjLC3mGFhWGjZaUmc4WlJaNoYaVlYbezwzHDwX0idaUmc4WlJaGDw50DwSGyMfJA3DHCMqGy29TCgf0AwjPBgL0EqOGicaGicbJB25ZDcbTB2r1Bgvoyw1Lq2fWAxrHBgL6zwqGpsaN','igrHDgeGCMvZDg9YzwqGC3vJy2vZC2z1BgX5ycK7cIaGicbYzxr1CM4GCMvZlMPZB24OEWOGicaGicaUlI5YzxnWB25ZzurHDgeScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbTzs1Yzxn0B3jLigrHDgeG','jYWkicaGicaGicaGihrHyMXLtMfTztOGjW','iL0kicaGicaGicaGih0ScIaGicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicaGih0PoWOGicaGicb9cGOGicaGicaVlYbwywXPzgfZAsbZzwXLy3qGzMLLBgrZigPPA2eGywrHicHZDxbWB3j0ifnrtcbLEhbYzxnZAw9UCYKkicaGicaGAwyGkhjLCs5IB2r5lNnLBgvJDcaMjIbbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNnLBgvJDcKPihSkicaGicaGicbJB25ZDcb2ywXPzezPzwXKCYa9ia','cIaG','zM9YzwLNBKTLEq','x2XVB2T1CenVBMzPzW','iIWGiNzHBhvLiJOGiKfqmJuWnI0WmsiGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGzgvMyxvSDfnLBgvJDaOGicaGicaGih0ScIaGicaGicaGzxHHBxbSzv9ZCwXFzxHWCMvZC2LVBJOGEWOGicaGicaGicaGiNDOzxjLiJOGw3SGiMTLEsi6icjJB21Wyw55x2LKiIWGiNzHBhvLiJOGiNLVDxiTy29TCgfUEs1PzciGFv0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjPzciSici','BxnTsgq','cIaGicaGicaGAxrLBs4','ieXjtuLuideNlaOGicaGicaGicaGicaGif9FzMTwywXZcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2zRq2HLy2SUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicaGicaGicbJB25ZDcbMA0vYCM9Yid0GBMv3ievYCM9Ykcjdyw5UB3qGCMvZDg9YztOGCMvMzxjLBMnLzcbWyxjLBNqGCMvJB3jKigLUicC','C29MDerLBgv0zuzRugfYzw50CW','cIaGicaGicaGlY8GrKSGiW','lMrLBgv0zurHDgeOCMvXlMjVzhKSihSGywrKAxrPB25HBenVBNrLEhq6ihSGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcb9ih0PoWOGicaGicaGignVBNnVBguUBg9NkcDBrKfmtejbq0TDierftevursbJB21WBgv0zwqGD2L0Ag91DcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBrKfmtejbq0TDierftevursbMywLSzwq6jYWGzxjYB3iUBwvZC2fNzsK7cIaGicaGicaGDgHYB3CGzxjYB3i7cIaGicaGih0kicaGih0kcIaGicaVlYbmB2CGC3vJy2vZC2z1BcbVCgvYyxrPB24kicaGignVBNnVBguUBg9Nkga','oICSigvYCM9YktSkcIaGicaVlYbiyw5KBguGiKrHDgeGDgLKywSGzgL0zw11A2fUiGOGicaGAwyGkgvYCM9YlM1LC3nHz2uGpt09icDeyxrHihrPzgfRigrPDgvTDwTHBICGFhWGzxjYB3iUBwvZC2fNzs5PBMnSDwrLCYGNBM90igzVDw5KjYKPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOnda0ks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0rHDgeGBM90igzVDw5KjYWkicaGicaGicbTzxnZywDLoIaN','DffRu0K','BNvSBa','icaGihjLDhvYBIbMB3jTyxr0zwq7','icOG','jYWkicaGicaGicaGihbYAw1HCNLlzxK6ihrOAxmUChjPBwfYEuTLEsWkicaGicaGicaGic4UlIHLDMvUDenVBNrLEhqUywrKAxrPB25HBenVBNrLEhqGFhWGE30PcIaGicaGicaGFsK7cIaGicaGicaGy29UC3qGywz0zxjszxn1BhqGpsbHD2fPDcbJzs5LEgvJDxrLt25bzNrLCKnVBxbVC2L0zsGNDxbKyxrLjYWGywz0zxjdDhGPoWOGicaGicaGigLMicGHywz0zxjszxn1BhqUC3vJy2vZCYKGEWOGicaGicaGicaGyxDHAxqGy2XPzw50lNf1zxj5kcDst0XmqKfdsYCPoWOGicaGicaGicaGDgHYB3CGBMv3ievYCM9YkgbVBKfMDgvYq29TCg9ZAxrLvxbKyxrLigzHAwXLzdOGjhTHzNrLCLjLC3vSDc5LCNjVCN1GktSkicaGicaGicb9cIaGicaGih0kcIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNq09ntuLujYK7cIaGicaGignVBNnVBguUBg9NkcDuCMfUC2fJDgLVBIbJB21TAxr0zwqGC3vJy2vZC2z1BgX5jYK7cGOGicaGicaVlYbjBNzHBgLKyxrLignHy2HLihnLDgvSywGGD3jPDguGB3bLCMf0Aw9UigjLCMHHC2LScIaGicaGigf3ywL0ihrOAxmUAw52ywXPzgf0zunHy2HLkcK7cGOGicaGicbYzxr1CM4GEWOGicaGicaGic4UlNvWzgf0zwrizwfKzxiScIaGicaGicaGw2rLDgfPBeTLEv06igfSBeL0zw1ZlaOGicaGicaGif9VCgvYyxrPB25ZoIb7cIaGicaGicaGicbKzwXLDgvKoIbKzwXLDgvKsxrLBxmUBgvUz3rOlaOGicaGicaGicaGDxbKyxrLzdOGDxbKyxrLzeL0zw1ZlMXLBMD0AcWkicaGicaGicaGigLUC2vYDgvKoIbPBNnLCNrLzeL0zw1ZlMXLBMD0AaOGicaGicaGih0kicaGicaGFtSkcIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbHD2fPDcbJBgLLBNqUCxvLCNKOj1jpteXcqunljYK7cIaGicaGignVBNnVBguUzxjYB3iOj0vYCM9YigLUihvWzgf0zunVBxbVC2L0ztONlcbLCNjVCIK7cIaGicaGihrOCM93igvYCM9YoWOGicaGFsbMAw5HBgX5ihSkicaGicaGy2XPzw50lNjLBgvHC2uOktSkicaGih0kicb9cG','cIaGicaGicaGFtSkcIaGicaGicaGAwyGkgL0zw0U','zMLLBgrmywjLBhm','iIWGiM9WzxjHDg9YiJOGiMXPA2uIlcaIDMfSDwuIoIaIjvbVCNrHBcuIih0ScIaGicaGicaGicaGicaGEYaIA2v5iJOGiG','cNjVDxrLCI5WB3n0kcCVy2HHBMDLlxn0yxr1CYCSigfZEw5JicHYzxeSihjLCYKGpt4GEWOGihrYEsb7cIaGicaVlYbwywXPzgfZAsbWyxLSB2fKcIaGicbPzIaOixjLCs5IB2r5ihX8ie9IAMvJDc5RzxLZkhjLCs5IB2r5ks5Szw5NDgGGpt09idaPihSkicaGicaGCMv0DxjUihjLCY5ZDgf0DxmOndaWks5QC29UkhSkicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicbLCNjVCJOGj0LUDMfSAwqGCgf5Bg9HzcCScIaGicaGicaGBwvZC2fNztOGj1bHEwXVywqGy2fUBM90igjLigvTChr5jYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0kcIaGicaVlYbwywXPzgfZAsbYzxf1AxjLzcbMAwvSzhm6igLKl3bYAw1HCNKGA2v5igrHBIbZDgf0DxmkicaGignVBNn0ihbYAw1HCNLlzxKGpsaN','l2nOyw5Nzs1ZDgf0DxmGlsbdAgfUz2uGC3rHDhvZia','cIaGicbDoWOkicaGic8VierLzMLUAxnPA2fUigrHDgf0ywjSzxnxAgvYzsbZzxn1ywKGCgf5Bg9HzaOGicaGy29UC3qGzgf0yxrHyMXLC1DOzxjLid0G','B2vysvm','AgvHzgvYq2fSy3vSyxrPB25Z','ih0kicaGicaGicbDcIaGicaGih0PoWOGicaGicbPzIaOiv9FC2rdAgvJAY5ZDwnJzxnZihX8icfFx3nKq2HLy2SUzgf0ysb8FcbFx3nKq2HLy2SUzgf0ys5Szw5NDgGGpt09idaPihSkicaGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdqPlMPZB24OEWOGicaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGicbLCNjVCJOGj0rHDgeGBM90igzVDw5KjYWkicaGicaGicaGig1LC3nHz2u6icC','y2HPBgruywjSzq','uxfws3m','lMfKANvZDerHDgeOCMvXlMjVzhKSigfKANvZDenVBMzPzW','ignVBxbVC2L0zsbJCMvHDguGC3vJy2vZC2z1BgaPoWOkicaGihjLDhvYBIbYzxmUC3rHDhvZkdiWmsKUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGig1LC3nHz2u6icC','cIaGicbJB25ZDcb2ywXPzezPzwXKCYa9ifSkicaGicaG','laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGignVBNn0igrHDgeGpsbYzxeUyM9KEs4','cIaGicaGic8VierLzMf1BhqGC2nVCguGzMLSDgvYcIaGicaGihDOzxjLq29UzgL0Aw9UCY5WDxnOkga','lMDLDeXVB2T1CerHDgfeEw5HBwLJkhnLyxjJAcWGzxH0CMfgAwX0zxjZktSkcIaGicbJB25ZB2XLlMXVzYHGtg9VA3vWihjLC3vSDhm6icr7BgLZDc5Szw5NDgH9ihjLy29YzhmGzM91BMrGktSkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGihn1y2nLC3m6ihrYDwuScIaGicaGignVDw50oIbSAxn0lMXLBMD0AcWkicaGicaGzgf0ytOGBgLZDcWkicaGicaGC2vHCMnOoIbZzwfYy2GScIaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicb9ktSkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGAw4G','sgDNEg4','y2HPBgrdB2X1Bw5Z','ignVBxbVC2L0zsbYzwfKihn1y2nLC3nMDwW6icr7CMvZDwX0lMnVDw50ihX8idb9ihjLy29YzcHZkwaPoWOkicaGihjLDhvYBIbYzxmUANnVBIH7cIaGicaGic4UlNjLC3vSDcWkicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGih0PoWOkicb9ignHDgnOicHLCNjVCIKGEWOGicaGy29UC29Szs5LCNjVCIGNrxjYB3iGC2fHDcbJB21WB3nPDguGCMvHzca','zgv0ywLSvgfIBgu','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','ksb8FcbKyxrHlG','laOGicaGicbHzgP1C3rdB25MAwC6ia','oWOGicaGAwyGkgHLywrLCKnHBgmUDg90ywXFAxrLBxmPihSkicaGicaGzgf0ys50B3rHBf9PDgvTCYa9igrHDgeU','Aw5JBhvKzxm','cIaGFqOkicaVkIOkicaGkIbfEgvJDxrLigfKDMfUy2vKihf1zxj5igjLCMrHC2fYA2fUig5HBwekicaGkIbaCgfYyw0GE3n0CMLUz30GCxvLCNLoyw1Lic0GtMfTysbXDwvYEsbKyxjPigfKDMfUy2vKuxvLCNLuzw1WBgf0zxmkicaGkIbaCgfYyw0GE09IAMvJDh0GCgfYyw1Zic0GugfYyw1LDgvYihvUDhvRihf1zxj5cIaGicOGqhjLDhvYBNmGE0fYCMf5FsbiyxnPBcbXDwvYEqOGicaQlWOGigfZEw5Jigv4zwn1DgvbzhzHBMnLzff1zxj5khf1zxj5tMfTzsWGCgfYyw1Zid0GE30PihSkicaGigLMicGHDgHPCY5HzhzHBMnLzff1zxj5vgvTCgXHDgvZw3f1zxj5tMfTzv0PihSkicaGicaGDgHYB3CGBMv3ievYCM9YkgbbzhzHBMnLzcbXDwvYEsaNjhTXDwvYEu5HBwv9jYbUB3qGzM91BMqUief2ywLSywjSzsbXDwvYAwvZoIaKE09IAMvJDc5RzxLZkhrOAxmUywr2yw5JzwrrDwvYEvrLBxbSyxrLCYKUAM9PBIGNlcaNkx1GktSkicaGih0kcIaGicb0CNKGEWOGicaGicbSzxqGCxvLCNKGpsb0AgLZlMfKDMfUy2vKuxvLCNLuzw1WBgf0zxnBCxvLCNLoyw1LxtSkcIaGicaGic8VifjLCgXHy2uGCgXHy2vOB2XKzxjZcIaGicaGihf1zxj5id0GCxvLCNKUCMvWBgfJzsGVjhT0ywjSzu5HBwv9l2CSihrOAxmUDgfIBguPoWOGicaGicbXDwvYEsa9ihf1zxj5lNjLCgXHy2uOlYr7DgHPCY50ywjSzx0VzYWGDgHPCY50ywjSzsK7cGOGicaGicaVlYbszxbSywnLihbHCMfTzxrLCIbWBgfJzwHVBgrLCNmkicaGicaGzM9YicHJB25ZDcbBA2v5lcb2ywX1zv0GB2yGt2jQzwn0lMvUDhjPzxmOCgfYyw1ZksKGEWOGicaGicaGignVBNn0ihbSywnLAg9SzgvYid0GBMv3ifjLz0v4CcHGxcrCE3bHCMfTC1XClIr7A2v5FvX9ycWGj2CNktSkicaGicaGicbXDwvYEsa9ihf1zxj5lNjLCgXHy2uOCgXHy2vOB2XKzxiSihzHBhvLktSkicaGicaGFqOkicaGicaGy29UC29Szs5SB2COyev4zwn1DgLUzYbHzhzHBMnLzcbXDwvYEsaNjhTXDwvYEu5HBwv9jZOGjhTXDwvYEx1GktSkcIaGicaGignVBNn0ihjLC3vSDca9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHXDwvYEsK7cIaGicaGihjLDhvYBIbYzxn1Bhq7cIaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicbJB25ZB2XLlMvYCM9YkgbfCNjVCIbLEgvJDxrPBMCGywr2yw5JzwqGCxvLCNKGjYr7CxvLCNLoyw1LFsC6ycWGzxjYB3iPoWOGicaGicb0AhjVDYbLCNjVCJSkicaGih0kicb9cGOGic8QkGOGicaQifzHBgLKyxrLigrHDgeGyMvMB3jLigLUC2vYDc91CgrHDguGB3bLCMf0Aw9UCWOGicaQiebWyxjHBsb7t2jQzwn0FsbKyxrHic0Grgf0ysb5yw5NigfRyw4GzgL2ywXPzgfZAqOGicaQiebWyxjHBsb7C3rYAw5NFsbVCgvYyxrPB24GlsbpCgvYyxnPicHPBNnLCNqVDxbKyxrLkqOGicaQiebYzxr1CM5ZihTpyMPLy3r9ifzHBgLKyxrPB24GCMvZDwX0cIaGicOVcIaGyxn5BMmGDMfSAwrHDgveyxrHkgrHDgeSig9WzxjHDgLVBIa9icDPBNnLCNqNksb7cIaGicbJB25ZDcbYzxn1BhqGpsb7cIaGicaGigLZvMfSAwq6ihrYDwuScIaGicaGigvYCM9YCZOGw10ScIaGicaGihDHCM5PBMDZoIbBxsWkicaGicaGC2fUAxrPEMvKrgf0ytOGE30kicaGih07cGOGicaGDhj5ihSkicaGicaGlY8Gq2HLy2SGAwyGD2uGAgf2zsbMAwvSzfzHBgLKyxrPB24Gy29UzMLNcIaGicaGignVBNn0igHHC0zPzwXKvMfSAwrHDgLVBIa9ihrOAxmUDMfSAwrHDgLVBKnVBMzPzYaMjIbpyMPLy3qUA2v5CYH0AgLZlNzHBgLKyxrPB25dB25MAwCPlMXLBMD0Aca+ida7cGOGicaGicbPzIaOAgfZrMLLBgrwywXPzgf0Aw9Uksb7cIaGicaGicaGlY8Gtg9VCcbZzw11ysbMAwvSzcb5yw5NigfKysbKAsb2ywXPzgf0Aw9Uq29UzMLNcIaGicaGicaGzM9YicHJB25ZDcbMAwvSze5HBwuGAw4GDgHPCY52ywXPzgf0Aw9Uq29UzMLNksb7cIaGicaGicaGicbSzxqGDMfSDwuGpsbKyxrHw2zPzwXKtMfTzv07cIaGicaGicaGicbJB25ZDcbJB25MAwCGpsb0AgLZlNzHBgLKyxrPB25dB25MAwDBzMLLBgroyw1LxtSkicaGicaGicaGignVBNn0ignVBNn0CMfPBNrZid0Gy29UzMLNlMnVBNn0CMfPBNrZihX8ihT9oWOkicaGicaGicaGic8Vief1Dg8Tz2vUzxjHDguGDMfSDwuGAMLRysbHDxrVr2vUzxjHDguGzgfUig5PBgfPigTVC29UzY4kicaGicaGicaGic8Vifn0CMLUzYbKyw4GDxvPzcbKAxbLCMXHA3vRyw4GC2fTytOGvvvjrcb2nYb2AweGDxvPzcbWywnRywDLcIaGicaGicaGicaVlYaOA29UC2LZDgvUigXPBNrHCYbKAwfSzwn0oYbJB2nVAYbKzw5Nyw4GA29UDMvUC2KGCgf5Bg9HzcbJyxrLz29YEs5QC29UcIaGicaGicaGicaVlYb5yw5Nig1LBwfRywKGDhLWztOGiNn0CMLUzYiGzgvUz2fUignVBNn0CMfPBNqGyxv0B0DLBMvYyxrLicSGChjPBwfYEuTLEsKUcIaGicaGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIbJB25ZDhjHAw50CY5HDxrVr2vUzxjHDguGjIyGkcf2ywX1zsb8Fcb2ywX1zsa9pt0GjYCPksb7cIaGicaGicaGicaGigLMicHJB25MAwCUDhLWzsa9pt0Gj3v1AwqNihX8ignVBMzPzY50ExbLid09psaNC3rYAw5NjYKGEWOGicaGicaGicaGicaGihzHBhvLid0GCMvXDwLYzsGNDxvPzcCPlNy3kcK7cIaGicaGicaGicaGicaGzgf0yvTMAwvSze5HBwvDid0GDMfSDwu7ic8VifvWzgf0zsbKyxrHigfZBgKGANvNyqOGicaGicaGicaGicb9igvSC2uGAwyGkgnVBMzPzY50ExbLid09psaNDgLTzxn0yw1WjYb8FcbJB25MAwCUDhLWzsa9pt0Gj2rHDgv0Aw1LjYKGEWOGicaGicaGicaGicaGihzHBhvLid0GBMv3ierHDguOks50B0Ltt1n0CMLUzYGPoWOGicaGicaGicaGicaGigrHDgfBzMLLBgroyw1Lxsa9ihzHBhvLoYaVlYbvCgrHDguGzgf0ysbHC2XPigP1z2ekicaGicaGicaGicaGFsbLBhnLigLMicHJB25MAwCUDhLWzsa9pt0Gj2rHDguNksb7cIaGicaGicaGicaGicaGDMfSDwuGpsbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKUC3bSAxqOj1qNkvSWxtSkicaGicaGicaGicaGicbKyxrHw2zPzwXKtMfTzv0Gpsb2ywX1ztSGlY8GvxbKyxrLigrHDgeGyxnSAsbQDwDHcIaGicaGicaGicaGih0kicaGicaGicaGih0kcIaGicaGicaGicaVlYbwywXPzgf0zsbWzxiTzMLLBgqGzgvUz2fUignVBNn0CMfPBNrZcIaGicaGicaGicbJB25ZDcbMAwvSzfjLC3vSDca9igf3ywL0ihrOAxmUDMfSAwrHDgvgAwvSzenVBNn0CMfPBNrZkgzPzwXKtMfTzsWGDMfSDwuSig9WzxjHDgLVBIK7cGOGicaGicaGicaGlY8GqwnJDw11Bgf0zsbLCNjVCNmkicaGicaGicaGigLMicGHzMLLBgrszxn1BhqUDMfSAwqPihSkicaGicaGicaGicaGCMvZDwX0lMLZvMfSAwqGpsbMywXZztSkicaGicaGicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkc4UlMzPzwXKuMvZDwX0lMvYCM9YCYK7cIaGicaGicaGicb9cGOGicaGicaGicaGlY8GqwnJDw11Bgf0zsb3yxjUAw5NCWOGicaGicaGicaGAwyGkgzPzwXKuMvZDwX0lNDHCM5PBMDZicyMigzPzwXKuMvZDwX0lNDHCM5PBMDZlMXLBMD0Aca+idaPihSkicaGicaGicaGicaGCMvZDwX0lNDHCM5PBMDZlNb1C2GOlI4UzMLLBgrszxn1BhqUD2fYBMLUz3mPoWOGicaGicaGicaGFqOkicaGicaGicaGic8VifnLDcbZyw5PDgL6zwqGDMfSDwukicaGicaGicaGigLMicHMAwvSzfjLC3vSDc5Zyw5PDgL6zwqGit09ihvUzgvMAw5LzcKGEWOGicaGicaGicaGicbYzxn1BhqUC2fUAxrPEMvKrgf0yvTMAwvSze5HBwvDid0GzMLLBgrszxn1BhqUC2fUAxrPEMvKoWOGicaGicaGicaGFqOGicaGicaGih0kcIaGicaGicaGlY8GvMfSAwrHDguGzMLLBgqGEwfUzYb0AwrHAYbHzgeGzgKGDMfSAwrHDgLVBKnVBMzPzYaOyMfJA3DHCMqGy29TCgf0AwjPBgL0EsKkicaGicaGicbMB3iGkgnVBNn0igzPzwXKig9MihrOAxmUDMfSAwrgAwvSzhmPihSkicaGicaGicaGigLMicGHDgHPCY52ywXPzgf0Aw9Uq29UzMLNw2zPzwXKxsaMjIbKyxrHw2zPzwXKxsaHpt0GDw5KzwzPBMvKksb7cIaGicaGicaGicaGic8ViezHBgXIywnRigTLigDLBMvYAwmGC2fUAxrPEMf0Aw9UcIaGicaGicaGicaGihjLC3vSDc5Zyw5PDgL6zwreyxrHw2zPzwXKxsa9ihrOAxmUC2fUAxrPEMvgAwvSzfzHBhvLkgzPzwXKlcbKyxrHw2zPzwXKxsK7cIaGicaGicaGicb9cIaGicaGicaGFqOkicaGicaGicaVlYbdCM9ZCY1MAwvSzcb2ywXPzgf0Aw9UicHJB250B2G6igjLzM9Yzs9HzNrLCIbKyxrLkqOGicaGicaGigLMicHYzxn1BhqUAxnwywXPzcKGEWOGicaGicaGicaGy29UC3qGy3jVC3ngAwvSzfjLC3vSDca9igf3ywL0ihrOAxmUx3zHBgLKyxrLq3jVC3ngAwvSzenVBNn0CMfPBNrZkhjLC3vSDc5Zyw5PDgL6zwreyxrHlcbVCgvYyxrPB24PoWOGicaGicaGicaGAwyGkcfJCM9ZC0zPzwXKuMvZDwX0lNzHBgLKksb7cIaGicaGicaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicaGicaGicaGihjLC3vSDc5LCNjVCNmUChvZAcGUlI5JCM9ZC0zPzwXKuMvZDwX0lMvYCM9YCYK7cIaGicaGicaGicb9cIaGicaGicaGFqOkicaGicaGFsbLBhnLihSkicaGicaGicaVlYbgywXSyMfJAZOGvgLKywSGywrHigzPzwXKvMfSAwrHDgLVBIaTigD1BMfRyw4Gz2vUzxjPyYb2ywXPzgf0Aw9UcIaGicaGicaGzM9YicHJB25ZDcbMAwvSzcbVzIb0AgLZlNzHBgLKrMLLBgrZksb7cIaGicaGicaGicbJB25ZDcb2ywX1zsa9igrHDgfBzMLLBgrDoWOkicaGicaGicaGic8VifjLCxvPCMvKigzPzwXKihzHBgLKyxrPB24GDw50DwSGAw5Zzxj0cIaGicaGicaGicbPzIaOB3bLCMf0Aw9Uid09psaNAw5Zzxj0jYaMjIaOzMLLBgqGpt09icDPzcCGFhWGzMLLBgqGpt09icDUyw1LjYb8FcbMAwvSzca9pt0Gj25HBweNksKGEWOGicaGicaGicaGicbPzIaODMfSDwuGpt09ihvUzgvMAw5Lzcb8Fcb2ywX1zsa9pt0GBNvSBcb8Fcb2ywX1zsa9pt0GjYCPihSkicaGicaGicaGicaGicbPzIaOzMLLBgqGit09icDPzcCPihSGlY8GsuqGyMLZysbHDxrVlwDLBMvYyxrLzaOGicaGicaGicaGicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkgbgAwvSzcaNjhTMAwvSzh0NigLZihjLCxvPCMvKigzVCIaKE29WzxjHDgLVBN0GB3bLCMf0Aw9UycK7cIaGicaGicaGicaGicaGicbYzxn1BhqUAxnwywXPzca9igzHBhnLoWOGicaGicaGicaGicaGih0kicaGicaGicaGicaGFqOGicaGicaGicaGFqOkicaGicaGicaGic8VifnHBML0AxPLigrHBIb2ywXPzgf0zsb2ywX1zsbQAwTHigfKyqOGicaGicaGicaGAwyGkhzHBhvLice9psb1BMrLzMLUzwqGjIyGDMfSDwuGit09ig51BgWPihSkicaGicaGicaGicaGCMvZDwX0lNnHBML0AxPLzerHDgfBzMLLBgrDid0GDgHPCY5Zyw5PDgL6zuzPzwXKvMfSDwuOzMLLBgqSihzHBhvLktSkicaGicaGicaGih0kicaGicaGicb9cGOGicaGicaGic8VieDLBMvYAwmGzw1HAwWGDMfSAwrHDgLVBGOGicaGicaGigLMicHKyxrHlMvTywLSicyMiceVxLTExhnaxsTaw15CC0bDk1WUw15CC0bDkYqVlNrLC3qOzgf0ys5LBwfPBcKPihSkicaGicaGicaGihjLC3vSDc5LCNjVCNmUChvZAcGNsw52ywXPzcbLBwfPBcbMB3jTyxqNktSkicaGicaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicaGicaGFqOGicaGicb9cGOGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGCMvZDwX0lMvYCM9YCY5WDxnOkgbwywXPzgf0Aw9UigvYCM9YoIaKE2vYCM9YlM1LC3nHz2v9ycK7cIaGicaGihjLC3vSDc5PC1zHBgLKid0GzMfSC2u7cIaGicb9cGOGicaGCMv0DxjUihjLC3vSDdSkicb9cGOGic8QkGOGicaQifnHBML0AxPLigzPzwXKihzHBhvLigjLCMrHC2fYA2fUihrPCguGzMLLBgqGkgDLBMvYAwmGzMfSBgjHy2SPcIaGicOGqhbHCMfTihTZDhjPBMD9igzPzwXKtMfTzsaTie5HBweGzMLLBgqkicaGkIbaCgfYyw0GEYP9ihzHBhvLic0GtMLSywKGzMLLBgqkicaGkIbaCMv0DxjUCYb7kN0Gu2fUAxrPEMvKihzHBhvLcIaGicOVcIaGC2fUAxrPEMvgAwvSzfzHBhvLkgzPzwXKtMfTzsWGDMfSDwuPihSkicaGigLMicH0ExbLB2yGDMfSDwuGpt09icDZDhjPBMCNksb7cIaGicaGic8VifrYAw0GD2HPDgvZCgfJzqOGicaGicb2ywX1zsa9ihzHBhvLlNrYAw0OktSkcIaGicaGic8VievZy2fWzsbZCgvJAwfSignOyxjHy3rLCNmGDw50DwSGBwvUy2vNywGGAw5Qzwn0Aw9UcIaGicaGihzHBhvLid0GDMfSDwuUCMvWBgfJzsGVwZW+xs9NlcaNjYK7cGOGicaGicaVlYbuCNvUy2f0zsbQAwTHihrLCMXHBhuGCgfUAMfUzWOGicaGicbPzIaODMfSDwuUBgvUz3rOid4GmJu1ksb7cIaGicaGicaGDMfSDwuGpsb2ywX1zs5ZDwjZDhjPBMCOmcWGmJu1ktSkicaGicaGFqOGicaGFqOkicaGihjLDhvYBIb2ywX1ztSkicb9cG','oWOGicaGDgHPCY5OyxnfEhbVCNrrDwvYEsa9ia','icaGic8VieD1BMfRyw4GCgfYzw50ig1LDgHVzcb5yw5Nihn1zgfOigLUy2X1zguGzgf0zxrPBwuGzM9YBwf0DgLUzWO','ydSkicaGicaGAwyGkhnLyxjJAfzHBhvLicyMihnLyxjJAfzHBhvLlNrYAw0OksaHpt0GjYCPihSkicaGicaGicbJB25ZDcbLC2nHCgvKu2vHCMnOvMfSDwuGpsbZzwfYy2HwywX1zs5YzxbSywnLkc8Nl2CSiciNjYiPoWOGicaGicaGignVBNn0igXPA2vwywX1zsa9igaLjhTLC2nHCgvKu2vHCMnOvMfSDwv9jwa7cIaGicaGicaG','jYWkicaGicaGC2vHCMnOywjSzuzPzwXKCZOGDgHPCY5NzxrtzwfYy2HHyMXLq29SDw1UCYa/ihrOAxmUz2v0u2vHCMnOywjSzunVBhvTBNmOks5TyxaOy29Sid0+ignVBc5Uyw1Lksa6ifTDcIaGicb9oWOGih0','C3rHCNrZv2L0Aa','ktOGC3rYAxaGC3vMzML4icCJiYCGkYbRB25MBgLRidqWoqOGicaGicaGihSkicaGicaGicaGignVBNn0if9Fy3vYid0GBg9JA2vKuM93wYC','laOGicaGicbWCMLTyxj5vgv4DezPzwXKoIaN','DMLLD1f1zxj5','cIaGicaVlYbiyw5KBguGA2H1C3vZihvUDhvRigvYCM9YicjeyxrHihrPzgfRigrPDgvTDwTHBIikicaGigLMicHLCNjVCI5TzxnZywDLid09psaNrgf0ysb0AwrHAYbKAxrLBxvRyw4NihX8igvYCM9YlM1LC3nHz2uUAw5JBhvKzxmOj25VDcbMB3vUzcCPksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWncKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDeyxrHig5VDcbMB3vUzcCScIaGicaGicaGBwvZC2fNztOGjW','lMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNuhjVCgvYDhKGiG','qK5jzuW','zgvSzxrL','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','BwfZDgvYrgv0ywLS','l2XVB2T1CdONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VienLAYbHCgfRywGGywrHihDOzxjLignSyxvZzsaOzM9YBwf0igjHCNuPigf0yxuGC2vSzwn0zwrFDgfNicHMB3jTyxqGBgfTysKkicaGigLMicHYzxeUyM9KEs53AgvYzsKGEWOGicaGicaVlYbgB3jTyxqGyMfYDsbKzw5Nyw4GD2HLCMuGy2XHDxnLcIaGicaGignVBNnVBguUBg9NkcDvC2LUzYbUzxCGzM9YBwf0ihDPDgGGD2HLCMuGy2XHDxnLjYK7cGOGicaGicaVlYbwywXPzgfZAsbMB3jTyxqGD2HLCMukicaGicaGAwyGkcfbCNjHEs5PC0fYCMf5khjLCs5IB2r5lNDOzxjLksaMjIaHCMvXlMjVzhKUD2HLCMuUy29UzgL0Aw9UCYKGEWOGicaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGicaGigvYCM9YoIaNsw52ywXPzcb3AgvYzsbMB3jTyxqNlaOGicaGicaGicaGBwvZC2fNztOGj0LUDMfSAwqGD2HLCMuGzM9YBwf0jYWkicaGicaGicaGigv4yw1WBgu6ihSkicaGicaGicaGicaGiNDOzxjLiJOGwWOGicaGicaGicaGicaGihSGiMTLEsi6ici','lMDLDerHDgeOEWOGicaGicaGihDOzxjLoIbBcIaGicaGicaGicb7igTLEtOGChjPBwfYEuTLEsWGDMfSDwu6ihjLCs5IB2r5w3bYAw1HCNLlzxLDih0ScIaGicaGicaGicb7igTLEtOGjW','ywLiAKy','j107cIaGicaGicaGicbPzIaOx19JDxiGit09ig51BgWGjIyGx19JDxiGit09ihvUzgvMAw5LzcKGEWOGicaGicaGicaGicbJB25ZDcbFx2n1CLn0CIa9ifn0CMLUzYHFx2n1CIK7cIaGicaGicaGicaGignVBNn0if9FC2vWswr4id0Gx19JDxjtDhiUBgfZDeLUzgv4t2yOjYmJjYK7cIaGicaGicaGicaGic8VieXLz2fJEsb0yw5WysaNiYmNiokgKIbVCMLNAw5HBca9ig5PBgfPigfWysbHzgfUEweGkhn0CMLWigrPBgv3yxrPigrPigjHD2fOks4kicaGicaGicaGicaGy29UC3qGx19VCMLNAw5HBca9if9FC2vWswr4id49idaGpYbFx2n1CLn0CI5ZDwjZDhjPBMCOmcWGx19ZzxbjzhGPidOGx19JDxjtDhi7cIaGicaGicaGicaGic8VieTVBMzSAwSGkdqWosK6ig9YAwDPBMfSigTPBMKGzgLWywTHAsbYzwnVCMqGywT0AwyGBgfPBIbZzwXHAw4GCM93igLUAs4kicaGicaGicaGicaGy29UC3qGx19JB25MBgLJDca9igf3ywL0ignSAwvUDc5XDwvYEsGkicaGicaGicaGicaGicaNu0vmrunuideGrLjptsaNicSGD3jPDgvtB3vYy2uGkYaNifDirvjfia','cIaGlYOQcIaGicOGtwvUzgfWyxrRyw4GrLjptsbJBgf1C2uGDw50DwSGBg9VA3vWigjLCMrHC2fYA2fUihbYAw9YAxrHCYbYzxnVBhvZAsbZDw1IzxiGzgf0yqOGicaQifbYAw9YAxrHCZOGDMLLD05HBwuG4OAsihzPzxDrDwvYEsdIHPiGDgfIBgvoyw1LicHRB25ZAxn0zw4GzgvUz2fUic9YzwfKigrHBIaVzMLYC3qPcIaGicOGqhjLDhvYBNmGE3n0CMLUz30GrLjptsbJBgf1C2uGzgvUz2fUigfSAwfZicDHjWOGicaQlWOGigDLDeXVB2T1CfnVDxjJzsGPihSkicaGignVBNn0ihjLywrrDwvYEsa9ihrOAxmUz2v0uMvHzff1zxj5kcK7cIaGicbJB25ZDcbZAw1WBgvrDwvYEsa9icDtruXfq1qGkIbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u7cIaGicbPzIaOCMvHzff1zxj5lNrYAw0OksaHpt0GC2LTCgXLuxvLCNKPihSkicaGicaGlY8GDMLLD05HBwuGyxrHDsb2Awv3uxvLCNKGywT0AwyG4Ocuigj1BMDRDxmGC2vIywDHAsbZDwjXDwvYEqOGicaGicbYzxr1CM4GjYGNicSGCMvHzff1zxj5icSGjYKGysC7cIaGicb9cIaGicbYzxr1CM4GDgHPCY5YzwfKu291CMnLicSGjYbHjZSkicb9cGOGic8QkGOGicaQie92zxjYAwrLigDLDeXVB2T1CerHDgeGDw50DwSGBwvUz2D1BMfRyw4GA29SB20GjW','CNfKq3m','jYWkicaGicaGicaGigrLDgfPBfrHyMXLoIaN','igXVB2T1CdONlcbLCNjVCIK7cIaGicbYzxr1CM4GCMvZlNn0yxr1CYG1mdaPlMPZB24OEWOGicaGicbZDwnJzxnZoIbMywXZzsWkicaGicaGzxjYB3i6icDjBNrLCM5HBcbtzxj2zxiGrxjYB3iNlaOGicaGicbTzxnZywDLoIaNqw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGBg9VA2LUzYb1Cca','cIaGicaGih0','tfrPvMS','jZSGlY8Gu291CMnLihvUDhvRig9WzxjHC2KGD3jPDguGkgfKzcWGDxbKyxrLlcbKzwXLDguPcG','A0DksxK','BMfTzq','id0Gjde','yc50CMLTkcK7','y29UC3qGqMfZzu1VzgvSid0GCMvXDwLYzsGNqhjLC3rMB3jNzwPZl3bSyxrMB3jTl3nYyY9TB2rLBhmVyMfZzs1TB2rLBcCPoWPJB25ZDcbKyIa9ihjLCxvPCMuOj0bYzxn0zM9Yz2vQCY9WBgf0zM9YBs9ZCMmVDxrPBhmVzgiNktSky29UC3qGzNmGpsbYzxf1AxjLkcDMCYCPoWPJB25ZDcbWyxrOid0GCMvXDwLYzsGNCgf0AcCPoWOVlYbbzhzHBMnLzezPBhrLCKHLBhbLCIbKAwHHChvZiokaLcbZzw11ysbMAwX0zxjPBMCGzgL0yw5Nyw5Pig9SzwGGyNvPBgrpyMPLy3rgAwX0zxjdBgf1C2uGzgfUigj1AwXKq29TCgXLEfDOzxjLq2XHDxnLcGOVkIOkicOG','qu5eicG','lMnOyw5Nzvn0yxr1C0rHDgeOCMvXlMjVzhKSihDVCMTMBg93q29UzMLNlcbLDMvUDenVBNrLEhqPoWOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0Gq0HbtKDflvnuqvrvuYbJB21WBgv0zwqGC3vJy2vZC2z1BgX5ihDPDgGGzxzLBNrZjYK7cIaGicaGih0Gy2f0y2GGkgvYCM9Yksb7cIaGicaGicaGy29UC29Szs5LCNjVCIGNw0LovevhuKfuruqGvfjbtLnbq1rjt05Dieniqu5hrs1tvefuvvmGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9igvSC2uGEWOGicaGicaVlYbgywXSyMfJAZOGDgfUCgeGy29TCg9Uzw50igvUz2LUzsbLDMvUDhmkicaGicaGDhj5ihSkicaGicaGicbYzxn1BhqGpsbHD2fPDca','id0GrKfmu0uGteLnsvqGmsCScIaGicaGicaGicaGicaGw19FzMTwywXDcIaGicaGicaGicaGicK7cIaGicaGicaGicaGigLMicHFx2zRuMvZlNjVD3mUBgvUz3rOid09psaWksb7cIaGicaGicaGicaGicaGy29UC3qGx19MA0vYCIa9ig5LDYbfCNjVCIGIq2fUBM90iciGkYbVCgvYyxrPB24GkYaIoIbYzwzLCMvUy2vKihbHCMvUDcbYzwnVCMqGAw4GjW','iJOGwWOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmsWGiMzPzwXKiJOGiNzHBhvLiIb9laOGicaGicaGicaGicaGihSGiMXPBMvFBNvTyMvYiJOGmIWGiMzPzwXKiJOGiNzHBhvLiIb9cIaGicaGicaGicaGif0kicaGicaGicaGih0kicaGicaGicb9','CMvMvgfIBgu','icaGicaGicbKzwXLDguGzM9YBwf0DgvKw19FC2rdB2XDoWO','zMLSDgvY','j107cIaGicaGicaGicaVlYbqzw1Py3uGpsbRB2XVBsbgsYbOywrPCIbUB24TBNvSBdSGBNvSBc91BMrLzMLUzwqG4OAsihnRAxaGkezlig51BgXHyMXLlcb0ywSGywrHihbHCMvUDcKUcIaGicaGicaGicbPzIaOx19MA1zHBcaHpt0GBNvSBcaMjIbFx2zRvMfSice9psb1BMrLzMLUzwqPihSkicaGicaGicaGicaGy29UC3qGx19MA1jLCYa9igf3ywL0ihbVB2WUCxvLCNKOcIaGicaGicaGicaGicaGj1nftevdvcaXiezst00G','Chv1BM8','CgfYzw50q29SDw1U','jYaOyMfZzsbSzw5NDgGG','jYK7cGOGicaGy29UC3qGCg9VBca9igrIlMDLDfbVB2WOktSkicaGignVBNn0ignSAwvUDca9igf3ywL0ihbVB2WUy29UBMvJDcGPoWOkicaGihrYEsb7cIaGicaGigf3ywL0ignSAwvUDc5XDwvYEsGNqKvhsu4NktSkcIaGicaGic8VideUieT1BMnPihjVDYbHA3rPzIb5yw5NignVy29RigTYAxrLCMLHlIbgAwX0zxiGAxnFzgvSzxrLzca9iezbtfnfig1LBMnLz2fOcIaGicaGic8VicaGigrVDwjSzsbZB2z0lwrLBgv0zsbKyw4SigjLCNnHBweGrK9sifvqrefursWGBwvUAMfTAw4GC2f0DsbWzw1LBMfUzYbZywf0ihjHy2uUcIaGicaGignVBNn0ihnLBgvJDfbHCMfTCYa9ifTDoWOGicaGicbJB25ZDcb3AgvYzuj1AwX0id0GDgHPCY5IDwLSzenVBxbSzxHxAgvYzunSyxvZzsHJCML0zxjPys53AgvYzsWGC2vSzwn0ugfYyw1ZlcaXktSkicaGicaGy29UC3qGBg9JA1f1zxj5id0Gj1nftevdvca','igrHDgeGDxbKyxrLzcbZDwnJzxnZzNvSBhK6icr7ChjPBwfYEuTLEx09jhTYzxeUyM9KEvTWCMLTyxj5s2v5xx1GktSk','vwPJrLC','oWOGicaGy29UC3qGCMvZDwX0id0GyxDHAxqG','shf2wKC','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','Dg9vChbLCKnHC2u','j10PoWOGicaGicaGignVBNn0ihvWzgf0zvf1zxj5id0Gj1vqrefursaNicSGD3jPDgvtB3vYy2uGkYaNifnfvcaNicSGC2v0q2XHDxnLCY5QB2LUkcCSicCPicSkicaGicaGicaGicCGv0HfuKuG','BxHWD2K','cIaGicbJB25ZDcbHzgP1C3rdB25MAwCGpsa','mtCWnta2wLDtD2zo','cIaGFqO','ie9srevsiejzigeU','yxvKAxrdB2X1Bw5Z','igrHDgeGC3vJy2vZC2z1BgX5ignYzwf0zwq','lYr7zw5KCg9PBNroyw1LFwa7cIaGicaGicaGicaGigfWCc51C2uOzw5KCg9PBNrqCMvMAxGSigvUzhbVAw50uM91DgvYktSkcIaGicaGicaGicaGigXVz0vUzhbVAw50uMvNAxn0zxjLzcHLBMrWB2LUDe5HBwuSigvUzhbVAw50uhjLzML4ktSkcIaGicaGicaGicaGic8VifjLz2LZDgvYigv4Cg9YDcbYB3v0zxmGDw50DwSGzw5KCg9PBNqGAw5PicHHDxrVlwrLDgvJDcbKyxjPigvTyMvKzgvKignVBMzPzYKkicaGicaGicaGicaGDhj5ihSkicaGicaGicaGicaGicbJB25ZDcbLEhbVCNrdB25MAwCGpsbLEhrYywn0rxHWB3j0q29UzMLNrNjVBuvUzhbVAw50kgvUzhbVAw50ugf0AcK7cIaGicaGicaGicaGicaGAwyGkgv4Cg9YDenVBMzPzYKGEWOGicaGicaGicaGicaGicaGrxHWB3j0sgfUzgXLCI5YzwDPC3rLCLjVDxrLCYHHChaSicC','jhTWyxLSB2fKlNrHyMXLtMfTzsb8FcaIDw5KzwzPBMvKx3rHyMXLiN0','mty4sujlyNjZ','rwrjvuq','DxbSB2fKq29UzMLN','rvzeyNG','jYWGzw5KCg9PBNroyw1LlcbPBxbVCNrdB25MAwCPoWOGicaGicaGicaGicaGicaGBg9Nz2vYlMLUzM8OEWOGicaGicaGicaGicaGicaGicbLDMvUDdOGj2LTCg9YDf9YB3v0zxnFCMvNAxn0zxjLzcCScIaGicaGicaGicaGicaGicaGigvUzhbVAw50oIbLBMrWB2LUDe5HBwuScIaGicaGicaGicaGicaGicaGihrHyMXLoIbPBxbVCNrdB25MAwCUDgfIBgvoyw1LcIaGicaGicaGicaGicaGicb9lcbGsw1WB3j0ihjVDxrLCYbYzwDPC3rLCMvKigzVCIaKE2vUzhbVAw50tMfTzx1GktSkicaGicaGicaGicaGicb9cIaGicaGicaGicaGih0Gy2f0y2GGkgLTCg9YDevYCM9Yksb7cIaGicaGicaGicaGicaGBg9Nz2vYlMvYCM9YkhSkicaGicaGicaGicaGicaGigv2zw50oIaNAw1WB3j0x3jLz2LZDhjHDgLVBL9LCNjVCICScIaGicaGicaGicaGicaGicbLBMrWB2LUDdOGzw5KCg9PBNroyw1LlaOGicaGicaGicaGicaGicaGzxjYB3i6igLTCg9YDevYCM9YlM1LC3nHz2ukicaGicaGicaGicaGicb9lcbGsw1WB3j0ihjLz2LZDhjHDgLVBIbMywLSzwqGzM9Yicr7zw5KCg9PBNroyw1LFtOGjhTPBxbVCNrfCNjVCI5TzxnZywDLFwaPoWOGicaGicaGicaGicb9cGOGicaGicaGicaGicaVlYbszwDPC3rLCIb1CgXVywqGCM91DgvZihvUDhvRigvUzhbVAw50igLUAsaOyxv0BY1KzxrLy3qGzgfYAsbLBwjLzgrLzcbJB25MAwCPcIaGicaGicaGicaGihrYEsb7cIaGicaGicaGicaGicaGy29UC3qGDxbSB2fKq29UzMLNid0GzxH0CMfJDfvWBg9HzenVBMzPz0zYB21fBMrWB2LUDcHLBMrWB2LUDfbHDgGPoWOGicaGicaGicaGicaGigLMicH1CgXVywrdB25MAwCPihSkicaGicaGicaGicaGicaGifvWBg9HzeHHBMrSzxiUCMvNAxn0zxjsB3v0zxmOyxbWlcaN','ChjPy2vgAwvSza','l2nYzwf0ztONlcbku09olNn0CMLUz2LMEsHYzxeUyM9KEsWGBNvSBcWGmIKPoWOkicaGic8VifzHBgLKyxnPihbHEwXVywqkicaGigLMicGHCMvXlMjVzhKGFhWGt2jQzwn0lMTLExmOCMvXlMjVzhKPlMXLBMD0Aca9pt0GmcKGEWOGicaGicbYzxr1CM4GCMvZlNn0yxr1CYG0mdaPlMPZB24OEWOGicaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicaGigvYCM9YoIaNsw52ywXPzcbWyxLSB2fKjYWkicaGicaGicbTzxnZywDLoIaNugf5Bg9HzcbJyw5UB3qGyMuGzw1WDhKNlaOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqO','igrHDgeGBM90igzVDw5KjYWkicaGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGicaGFsK7cIaGicaGih0kicaGih0k','jY50B0XVD2vYq2fZzsGPksb7cIaGicaGicaGicbJB250Aw51ztSGlY8GChjPBwfYEsbRzxKGC3vKywGGywrHcIaGicaGicaGFqOkicaGicaGicaVlYbdAgvJAYbQAwTHigfKysbtuuWGzxHWCMvZC2LVBIbKzw5Nyw4GywXPyxmGkg1LBMDNDw5HA2fUieftkqOGicaGicaGignVBNn0igfSAwfZuMvNzxGGpsbUzxCGuMvNrxHWkcCOlISPxfXZk2fZxfXZkYHCxhCRksqNlcaNAsCPoWOGicaGicaGignVBNn0igfSAwfZtwf0y2GGpsbJB2X1Bw4UBwf0y2GOywXPyxnszwDLEcK7cIaGicaGicaGAwyGkgfSAwfZtwf0y2GPihSkicaGicaGicaGignVBNn0igv4ChjLC3nPB24GpsbHBgLHC01HDgnOwZfDlNrYAw0OktSkicaGicaGicaGignVBNn0igfSAwfZid0GywXPyxnnyxrJAfSYxs50CMLTkcK7cIaGicaGicaGicbZzwXLy3rdBgf1C2uGkZ0GycWGjhTLEhbYzxnZAw9UFsbbuYaKE2fSAwfZFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbHBgLHCZSkicaGicaGicaGigfSAwfZrMLLBgqGpsbHBgLHCZSkicaGicaGicaGigjYzwfRoYaVlYbNDw5HA2fUihLHBMCGCgvYDgfTysbZzwjHz2fPihrLEhqGzMLLBgqkicaGicaGicb9cGOGicaGicaGic8VienOzwnRigPPA2eGC2LTCgXLigzPzwXKig5HBwukicaGicaGicbPzIaODMfSAwruzxH0rMLLBgrZlMLUy2X1zgvZkgnVBhvTBIKGFhWGy29SDw1Uid09psaN','jYKGEWOGicaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGicb0zxH0rMLLBgqGpsbJB2X1Bw47cIaGicaGicaGicbICMvHAZSGlY8Gz3vUywTHBIb5yw5NihbLCNrHBweGC2vIywDHAsb0zxH0igzPzwXKcIaGicaGicaGFqOkicaGicaGicaVlYbkAwTHigj1A2fUihjLy29NBML6zwqGzMLLBgqSig1HC2LOihrHBwjHAgTHBIaOBxvUz2TPBIbJB21WDxrLzcbJB2X1Bw4PcIaGicaGicaGC2vSzwn0q2XHDxnLicS9igaSicr7y29SDw1UFwa7cIaGicaGicaGDgv4DezPzwXKid0Gy29SDw1UoWOGicaGicb9cGOGicaGicaVlYbcyw5NDw4GCxvLCNKGu0vmrunuigrLBMDHBIbZDxbWB3j0igv4ChjLC3nPB25ZcIaGicaGigXLDcbXDwvYEsa9igbtruXfq1qGjhTZzwXLy3rdBgf1C2v9iezst00GjhT0AgLZlMDLDeXVB2T1CfnVDxjJzsGPFsa','lMfKzerHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cIaGicaGicaGBMv3rgf0ysa9ihjLC3bVBNnLrgf0ytSkcIaGicaGicaGy29UC29Szs5SB2COj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGy29TCgXLDgvKihn1y2nLC3nMDwXSEsb3AxrOigv2zw50CYCPoWOGicaGicb9ignHDgnOicHLCNjVCIKGEWOGicaGicaGignVBNnVBguUzxjYB3iOj1TjtLrfr1jbveveifrsqu5tqunusu9oxsbjtLnfuLqGzMfPBgvKoICSigvYCM9YlM1LC3nHz2uPoWOGicaGicaGihrOCM93igvYCM9YoWOGicaGicb9cIaGicb9igvSC2uGEWOGicaGicaVlYbgywXSyMfJAZOGz3vUywTHBIbTB2rLigXHBweGDgfUCgeGzxzLBNrZicH0zxrHCcbWCM9WywDHC2KGCMvXDwvZDeLKihvUDhvRieXPDMuGu3LUyYKkicaGicaGDhj5ihSkicaGicaGicbYzxnWB25ZzurHDgeGpsbHD2fPDca','lMrLBgv0zurHDgeOCMvXlMjVzhKSigv2zw50q29UDgv4DcK7cGOGicaGicaGignVBNnVBguUBg9NkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfignVBxbSzxrLzcbZDwnJzxnZzNvSBhKGD2L0AcbLDMvUDhmNktSkicaGicaGFsbJyxrJAcaOzxjYB3iPihSkicaGicaGicbJB25ZB2XLlMvYCM9YkcDBsu5uruDsqvrfrcbuuKfou0fdveLptL0GrevmrvrfigzHAwXLzdONlcbLCNjVCI5TzxnZywDLktSkicaGicaGicb0AhjVDYbLCNjVCJSkicaGicaGFqOGicaGFsbLBhnLihSkicaGicaGlY8GrMfSBgjHy2S6igD1BMfRyw4GBw9KzsbSyw1HihrHBNbHigv2zw50CYaODgv0yxaGChjVCgfNyxnPihjLCxvLC3rjzcb1BNr1AYbmAxzLifn5BMmPcIaGicaGihrYEsb7cIaGicaGicaGCMvZCg9UC2veyxrHid0GyxDHAxqG','ihzHBhvLicGNicSGx19ZDhiUBgvUz3rOicSGjYbJAgfYCYKGzxHJzwvKCYbIyxnLigXLBMD0Aca','jWOGicaGicaGidOGj1nftevdvcbdt1vovcGQksbHCYb0B3rHBcbguK9nicCGkYb0AgLZlNjLywrtB3vYy2u','qvnzz00','C3bSAxq','cIaGicaVlYbwywXPzgfZAsbKyxrHigrLBMDHBIbTB2rLBcbQAwTHihrLCNnLzgLHcIaGicbPzIaODhLWzw9Mia','oICSigvYCM9YktSkicaGihjLDhvYBIbYzxmUC3rHDhvZkduWmcKUANnVBIH7cIaGicaGihn1y2nLC3m6igzHBhnLlaOGicaGicbLCNjVCJOGj0LUDgvYBMfSifnLCNzLCIbfCNjVCICScIaGicaGig1LC3nHz2u6icDbBIbLCNjVCIbVy2n1CNjLzcb3AgLSzsbMzxrJAgLUzYa','zMLLBgrZ','jZSkicaGicaGy29UC3qGzM9YzwLNBKTLEsa9icC','cIaGicaVlYbgsY1trc0XoIbWyxjLBNqGC29MDc1KzwXLDguGD2fQAwiGywT0AwyGDw50DwSGDgLHCcbRB2XVBsbgsYb5yw5NigrPAxnPicHWCMuTy2HLy2SGndiYks4kicaGigf3ywL0ia','oIbTDxn0igjLigzHBhnLlcbUDwXSlcbVCIbVyMPLy3q','l2HLywX0AgaScIaGicaGicaGicbZzxj2AwnLsw5MBZOGygH0Dha6lY8KE2rPC3bSyxLiB3n0FtOKE3bVCNr9l2fWAs8','A2v5CW','cIaGicb9oWOGih0kcIaGlYOQcIaGicOGtg9HzcbHzhzHBMnLzcbXDwvYEsb0zw1WBgf0zxmGzgfYAsbMAwXLcIaGicOGqhjLDhvYBNmGE09IAMvJDh0GvgvTCgXHDgvZifnrtcb1BNr1AYbHzhzHBMnLzcbXDwvYAwvZcIaGicOVcIaGBg9HzefKDMfUy2vKuxvLCNLuzw1WBgf0zxmOksb7cIaGicbJB25ZDcb0zw1WBgf0zxmGpsb7FtSkicaGia','ywn0AxzLx29UBhK','igrHDgeGBM90igzVDw5Kig9YigfSCMvHzhKGzgvSzxrLzcCScIaGicaGicaGDgLTzxn0yw1WoIbUzxCGrgf0zsGPlNrVsvnpu3rYAw5NkcKkicaGicaGFsK7cIaGicb9cG','jZSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBzgv0ywLSs2v5xtSkicaGicaGzgvSzxrLigHLywrLCKrHDgfBDgHPCY5WCMLTyxj5s2v5xtSkcIaGicaGic8Vic0TlsbiB29RoIbVBKjLzM9YzunVBxbVC2L0zvvWzgf0zsaTls0kicaGicaGAwyGkgv2zw50q29UDgv4DcaMjIbLDMvUDenVBNrLEhqUy29TCg9Uzw50rw5NAw5Lksb7cIaGicaGicaGy29UC3qGEYbJB21WB25LBNrfBMDPBMu6ignLlcbdB250zxH0qNvPBgrLCJOGq0iGFsa9igv2zw50q29UDgv4DdSkicaGicaGicbJB25ZDcbKzxrHAwXpChmGpsbKyxrHw2rLDgfPBeTLEv0GFhWGE307cIaGicaGicaGy29UC3qGyMvMB3jLq3r4id0Gq0iUyNvPBgrdB21WB3nPDgvvCgrHDgvczwzVCMvdB250zxH0kgHLywrLCKrHDgeSig9SzerHDgeSihSkicaGicaGicaGigLUC2vYDdOGzgv0ywLSt3bZlMLUC2vYDcb8FcbBxsWkicaGicaGicaGihvWzgf0ztOGzgv0ywLSt3bZlNvWzgf0zsb8FcbBxsWkicaGicaGicaGigrLBgv0ztOGzgv0ywLSt3bZlMrLBgv0zsb8FcbBxqOGicaGicaGih0SihSkicaGicaGicaGihrHyMXLtMfTztOGjW','v2zLs28','jYWkicaGicaGicaGihnLCNzPy2vZoIb7FsWkicaGicaGicaGigfKzgL0Aw9UywXdB250zxH0oIb7cIaGicaGicaGicaGihvZzxjFAwq6ihjLCs5OzwfKzxjZwYD1C2vYlwLKj10GFhWGCMvXlMHLywrLCNnBj3GTDxnLCI1PzcDDihX8ihjLCs5IB2r5lNvWzgf0zwrFyNKGFhWGj3n5C3rLBsCScIaGicaGicaGicaGig9WDgLVBNm6ihjLCs5IB2r5t3b0Aw9UCYb8Fcb7FsWkicaGicaGicaGicaGCMvXDwvZDeLKoIbYzxeUAwqGFhWGBNvSBcWkicaGicaGicaGicaGlY8GsLDuigzVCNDHCMrPBMCGkeXHEwvYideGuKXtktOGqxv0Ag9YAxPHDgLVBIbOzwfKzxiGzgfYAsbYzxf1zxn0igfZBgKkicaGicaGicaGicaGlY8GzgKTzM9YD2fYzcbRzsb3B3jRzMXVDYbOB29RignHBgWGywDHCIbLBMrWB2LUDcb0DwP1yw4GEwfUzYbWDw55yqOGicaGicaGicaGicaVlYbYzxf1zxn0u2nVCguGywT0AwyGDgv0yxaGBwvUzxjPBweGCMvXlNvZzxiGzgvUz2fUihnJB3bLihLHBMCGC2fTys4kicaGicaGicaGicaGlY8Gu2vSywX1igrPlxnLDcaOyNvRyw4GA29UzgLZAw9UywWGCgfKysbWyxLSB2fKlNjLCxvLC3rty29WzsKGA2fYzw5HcIaGicaGicaGicaGic8VigHVB2SGvvjmihr1ANvHBIbTDw5NA2LUihb1BNLHihjLCxvLC3rty29WzsbZzw5KAxjPihDHBgf1ChvUig1VzhvSzqOGicaGicaGicaGicaVlYbZDw1IzxiGDgLKywSUcIaGicaGicaGicaGigf1DgHizwfKzxi6ihjLCs5OzwfKzxjZlMf1DgHVCML6yxrPB24GFhWGBNvSBaOGicaGicaGicaGFqOGicaGicaGih07cGOGicaGicaGic8VieLUAMvJDcbZzxj2AwnLCYbQAwTHihrLCNnLzgLHcIaGicaGicaGDhj5ihSkicaGicaGicaGignVBNn0ihSGCMvZB2X2zvnLCNzPy2vZih0GpsbYzxf1AxjLkcDaCMvZDgzVCMDLANmVCgXHDgzVCM0VC3jJl3v0AwXZl3nLCNzPy2uTCMvZB2X2zxiNktSkicaGicaGicaGigv2zw50q29UDgv4Dc5Zzxj2AwnLCYa9ihjLC29SDMvtzxj2AwnLCYGPoWOGicaGicaGih0Gy2f0y2GGkguPihSkicaGicaGicaGic8VifnLCNzPy2uGCMvZB2X2zxiGB3bZAw9UywWkicaGicaGicb9cGOGicaGicaGihjLC3vSDca9igf3ywL0ia','vMjote4','CvDdD1O','iICScIaGicaGicaGzxHHBxbSztOG','zMfSC2u','C29MDerLBgv0zuzRq2HLy2TZ','igrHDgeGC3vJy2vZC2z1BgX5ihvWzgf0zwq','iIWGiNzHBhvLiJOGiNLVDxiTAwqTDMfSDwuIih0ScIaGicaGicaGicaIC2vSzwn0iJOGwYjMAwvSzdeIlcaIzMLLBgqYiL0kicaGicaGicb9laOGicaGicaGihrPBwvZDgfTCdOGBMv3ierHDguOks50B0Ltt1n0CMLUzYGPcIaGicaGih0PoWOGicaGFqOkicaGic8VifzHBgLKyxnPihDOzxjLlMTLEsbKyw4GD2HLCMuUDMfSDwukicaGigLMicGHCMvXlMjVzhKUD2HLCMuUA2v5ihX8ihjLCs5IB2r5lNDOzxjLlNzHBhvLid09psb1BMrLzMLUzwqGFhWGCMvXlMjVzhKUD2HLCMuUDMfSDwuGpt09ig51BgWGFhWGCMvXlMjVzhKUD2HLCMuUDMfSDwuGpt09icCNksb7cIaGicaGihjLDhvYBIbYzxmUC3rHDhvZkdqWmcKUANnVBIH7cIaGicaGicaGC3vJy2vZCZOGzMfSC2uScIaGicaGicaGzxjYB3i6icDjBNzHBgLKihDOzxjLigzVCM1HDcCScIaGicaGicaGBwvZC2fNztOGj1DOzxjLigTLEsbHBMqGDMfSDwuGyxjLihjLCxvPCMvKjYWkicaGicaGicbLEgfTCgXLoIb7cIaGicaGicaGicaID2HLCMuIoIb7icjRzxKIoIaI','jYWGDMfSDwu6ia','iezst00GjYaRihrOAxmUz2v0tg9VA3vWu291CMnLkcKGkYbG','zMLYC3q','iezst00GjhT0AgLZlNDYAxrLu291CMnLFsbxsevsrsaKE3DOzxjLq2XHDxnLFwa7cIaGicaGignVBNn0igHLywrLCLjLC3vSDca9igf3ywL0ignSAwvUDc5XDwvYEsHOzwfKzxjrDwvYEsWGCgfYyw1ZktSkcIaGicaGigLMicHOzwfKzxjszxn1BhqUCM93CY5Szw5NDgGGpt09idaPihSkicaGicaGicb0AhjVDYbUzxCGrxjYB3iOj1jLy29YzcbUB3qGzM91BMqNktSkicaGicaGFqOkicaGicaGy29UC3qGAgvHzgvYuhjPBwfYEuTLEvzHBhvLid0GAgvHzgvYuMvZDwX0lNjVD3nBmf1BjW','cGOGicaGicaGic8ViduUifjLC2v0igTVBg9TihnVzNqTzgvSzxrLlIb1CgrHDgvKxYOGveLequSGzgLZzw50DwGGkgTVBNnPC3rLBIbsmtqPlGOGicaGicaGihnLDenSyxvZzxmUChvZAcGN','s2rktu8','id0GtK9xkcKNktSkicaGicaGicbZzxrdBgf1C2vZlNb1C2GOjW','id0Gke51BwjLCIHPDgvTlG','BNvTyMvY','oWOGicaG','x21LDgfKyxrH','DxbKyxrLq29TCg9ZAxrL','BhjivMu','zMLUza','jYWkicaGicaGDgfIBgvoyw1LoIaN','cIaGicaVlYblAxjPBsbYzxnWB25ZzqOGicaGCMv0DxjUihjLCY5ZDgf0DxmOmJaXks5QC29UkhSkicaGicaGC3vJy2vZCZOGDhj1zsWkicaGicaGBwvZC2fNztOGjW','oIbWyxjLBNqGD2fQAwiGywT0AwyGkgLZx2rLBgv0zwq9rKfmu0uPiokgKIbLBhnLidqYmI4kicaGicaGicb7cIaGicaGicaGicbJB25ZDcbFx2zRvMfSid0GyM9KEvSN','zgv0ywLSq29UzMLN','l2nYzwf0zs1JB21WB3nPDgu6jYWGsLnptI5ZDhjPBMDPzNKOCMvXlMjVzhKSig51BgWSidiPktSkcIaGicaVlYbwywXPzgfZAsbWyxLSB2fKihn0CNvJDhvYzqOGicaGAwyGkcfYzxeUyM9KEsb8FcaHCMvXlMjVzhKU','yNHkAMm','oWOGicaGBgv0ihjLC3bVBNnLrgf0ysa9ig51BgW7cGOGicaGlY8Gpt09ieLUDgvNCMf0zwqGvhjHBNnHy3rPB24GzgvUz2fUiev2zw50ieXPzMvJEwnSzsa9pt0kicaGigLMicHJB21WB25LBNrfBMDPBMuGjIyGq29UDgv4Dej1AwXKzxiPihSkicaGicaGDhj5ihSkicaGicaGicbJB25ZDcbLDMvUDenVBNrLEhqGpsb7cIaGicaGicaGicbJB21WB25LBNrfBMDPBMu6ignVBxbVBMvUDevUz2LUzsWkicaGicaGicaGienVBNrLEhrcDwLSzgvYoIbdB250zxH0qNvPBgrLCIWkicaGicaGicaGihrHyMXLtMfTztOGjW','ksbPCYbYzxf1AxjLzcbMB3iGDxbKyxrLjYWkicaGicaGicb0Aw1LC3rHBxa6ig5LDYbeyxrLkcKUDg9ju09tDhjPBMCOkqOGicaGicb9ktSkicaGih0k','iL0kicaGicaGicb9laOGicaGicaGigv4yw1WBgvFD2L0Af9VCMrLCMLUzZOGEWOGicaGicaGicaGiNnLBgvJDci6ifSIAwqIlcaI','j10GpsbZy29WzvzHBhvLoWOGih0kcIaGBMv4DcGPoWP9ktSk','CMv1C2fIBgu','teDXt3a','jZSkicaGicaGy29UC3qGDgv4DezPzwXKid0GBg9VA3vWq29UzMLNicyMigXVB2T1CenVBMzPzY5OyxndDxn0B21uzxH0cIaGicaGicaGpYbSB29RDxbdB25MAwCUDgv4DezPzwXKcIaGicaGicaGoIb0zxH0rMLLBgrZwZbDoWOkicaGicaGBgv0ihf1zxj5id0GyfnftevdvcaKE2LKrMLLBgr9lcaKE3rLEhrgAwvSzh0GrLjptsaKE3rOAxmUz2v0tg9VA3vWu291CMnLkcL9ydSkicaGicaGAwyGkhDOzxjLq29UzgL0Aw9UCY5Szw5NDgGGpIaWksb7cIaGicaGicaGCxvLCNKGkZ0GycbxsevsrsaKE3DOzxjLq29UzgL0Aw9UCY5QB2LUkcCGqu5eicCPFwa7cIaGicaGih0kicaGicaGCxvLCNKGkZ0GycbpuKrfuIbcwsaKE2XVB2T1CenVBMzPzYaMjIbSB29RDxbdB25MAwCUAgfZq3vZDg9Tvgv4Dca/icCYjYa6icDHlICGkYb0zxH0rMLLBgrZwZbDFwa7cGOGicaGicbJB25ZB2XLlMXVzYGNpt09ierfqLvhierztKfnsumGte9ps1vqid09psCPoWOGicaGicbJB25ZB2XLlMXVzYGNuxvLCNK6jYWGCxvLCNKPoWOGicaGicbJB25ZB2XLlMXVzYGNugfYyw1ZoICSihbHCMfTCYK7cIaGicaGignVBNnVBguUBg9NkcDfEhrYysbMAwX0zxjZoICSigv4DhjHrMLSDgvYCYK7cIaGicaGignVBNnVBguUBg9NkcDmB29RDxaGy29UzMLNoICSigXVB2T1CenVBMzPzYK7cIaGicaGignVBNnVBguUBg9NkcC9pt0Gru5eierfqLvhid09psCPoWOkicaGicaGy29UC3qGzgf0ysa9igf3ywL0igrIlMv4zwn1DgvrDwvYEsHXDwvYEsWGCgfYyw1ZktSkcIaGicaGihjLDhvYBIbKyxrHlM1HCcHPDgvTid0+icH7cIaGicaGicaGAwq6igL0zw1BAwrgAwvSzf0GFhWGAxrLBs4','oWOkicaGic8VifzHBgLKyxnPihbYAw1HCNKGA2v5cIaGicbPzIaOiwrHDgeU','zw5HyMXLza','lNzHBgLKyxrLrgf0ysa9pt0Gj2z1BMn0Aw9UjYKGEWOGicaGicbJB25ZDcb2ywXPzgf0Aw9Uid0GyxDHAxqG','cIaGlYOQcIaGicOGrKSTu0qTmsbMB3j3yxjKigjSB2nRlIbuB2XHAYbJCMvHDguVDxbKyxrLigfUywSGEwfUzYbTzw51BMP1AYbWyxjLBNqGC29MDc1KzwXLDguGEwfUzWOGicaQihrLCMHHChvZicHPC19KzwXLDgvKpvrsvuuPigf0yxuGDgLKywSGywrHicG0mJiPlIbiyw55ysbgsYbIzxiTCgfYzw50ihnVzNqTzgvSzxrLlwvUywjSzwqkicaGkIaOCMvNAxn0CNKGC29MDerLBgv0zuzRugfYzw50CYKGEwfUzYbKAwnLAZSGrKSGBNvSBc9HyNnLBNqG4OAsihnRAxaUierPCgfUz2DPBcbYB3v0zsaVy3jLyxrLcIaGicOGzgfUic91CgrHDguGC2vIzwX1BsbHzgreyxrHl3vWzgf0zurHDgeUifbYzs1JAgvJAYbWB29SihrLCNbPC2fOicHUB24TDhjHBNnHA3nPB25HBcK6igXPAgf0cIaGicOGy2f0yxrHBIbHDg9TAwnPDhKGqMfNAwfUieiGzgKGCMvWB3j0ifbOyxnLidaYlGOGicaQiebWyxjHBsb7t2jQzwn0FsbIB2r5ic0GCMvXDwvZDcbIB2r5icHYzxeUyM9KEsKkicaGkIbaCgfYyw0GE3n0CMLUz30GB3bLCMf0Aw9Uic0Gj2nYzwf0zsCGFcaNDxbKyxrLjYaODw50DwSGCgvZyw4GzxjYB3iGndiYkqOGicaQlWOGigfZEw5JignOzwnRu29MDerLBgv0zuzRugfYzw50CYHIB2r5lcbVCgvYyxrPB24PihSkicaGigLMicGHyM9KEsb8Fcb0ExbLB2yGyM9KEsaHpt0Gj29IAMvJDcCPihjLDhvYBJSkicaGignVBNn0ihbVB2WGpsbKyI5NzxrqB29SkcK7cG','Dg9dyw1LBenHC2u','rvHsqxy','ChvZAa','yxv0B0nHBgn1Bgf0zuzPzwXKCW','D29YA2zSB3C'];a0_0x3f66=function(){return _0x5ce196;};return a0_0x3f66();}function getEnabledActions(_0x421278){const _0x131aca=a0_0x1db3;if(!_0x421278[_0x131aca(0x30a)]||typeof _0x421278[_0x131aca(0x30a)]!==_0x131aca(0x1af))return[];return Object['entries'](_0x421278['action'])['filter'](([,_0x2810d5])=>_0x2810d5)[_0x131aca(0x1c1)](([_0x4b31e4])=>_0x4b31e4);}function buildEndpointFunctions(_0x151260,_0xaf021f,_0x318897,_0x25b51c,_0x392b35,_0x47e6e7=null,_0x5f106b=![]){const _0x494da6=a0_0x1db3,_0x4e6da6={'qrKti':function(_0x307d3e,_0x4c080e){return _0x307d3e(_0x4c080e);},'XAxXv':function(_0x36095b,_0x53e1a3,_0x53fa55,_0x4f7574,_0x2b404a,_0x437b08){return _0x36095b(_0x53e1a3,_0x53fa55,_0x4f7574,_0x2b404a,_0x437b08);},'LTiVk':function(_0x4af6be,_0x414af9,_0x12af51,_0x5b95cb,_0x4c59b5,_0x5a280c){return _0x4af6be(_0x414af9,_0x12af51,_0x5b95cb,_0x4c59b5,_0x5a280c);},'Hggxn':function(_0x2bb615,_0x1f9185,_0x499287,_0x65a44f,_0x10ad60){return _0x2bb615(_0x1f9185,_0x499287,_0x65a44f,_0x10ad60);},'bErpf':function(_0x32fdb6,_0x555671,_0x1ed35e,_0x338a5a,_0x21f884,_0x5d1683,_0x8ddd2a){return _0x32fdb6(_0x555671,_0x1ed35e,_0x338a5a,_0x21f884,_0x5d1683,_0x8ddd2a);},'oxqoK':function(_0x490936,_0x25a543,_0x5a41cf,_0x34c609,_0x340c70){return _0x490936(_0x25a543,_0x5a41cf,_0x34c609,_0x340c70);},'tQkSI':function(_0x2bec46,_0x5ebe8c){return _0x2bec46===_0x5ebe8c;}},_0x5c47bc=_0x318897[_0x494da6(0x30a)]||{},_0x25540a=_0x4e6da6['qrKti'](getEnabledActions,_0x318897);let _0x17e5f6='';if(!_0x47e6e7){const _0x5867fe=FileUtils[_0x494da6(0x2ad)](_0xaf021f);_0x47e6e7=_0x5867fe+'Model';}return _0x5c47bc['datatables']&&(_0x17e5f6+=generateDatatablesFunction(_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc['create']&&(_0x17e5f6+=_0x4e6da6[_0x494da6(0x366)](generateCreateFunction,_0x151260,_0xaf021f,_0x318897,_0x47e6e7,_0x5f106b)),_0x5c47bc['update']&&(_0x17e5f6+=_0x4e6da6[_0x494da6(0x246)](generateUpdateFunction,_0x151260,_0xaf021f,_0x318897,_0x47e6e7,_0x5f106b)),_0x5c47bc['adjust']&&(_0x17e5f6+=_0x4e6da6[_0x494da6(0x21b)](generateAdjustFunction,_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc[_0x494da6(0x195)]&&(_0x17e5f6+=generateAggregateFunction(_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc['delete']&&(_0x17e5f6+=_0x4e6da6[_0x494da6(0x246)](generateDeleteFunction,_0x151260,_0xaf021f,_0x318897,_0x47e6e7,_0x5f106b)),_0x5c47bc['restore']&&isSoftDeleteEnabled(_0x318897)&&(_0x17e5f6+=generateRestoreFunction(_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc[_0x494da6(0x290)]&&(_0x17e5f6+=_0x4e6da6['bErpf'](generateFirstFunction,_0x151260,_0xaf021f,_0x318897,_0x25b51c,_0x392b35,_0x47e6e7)),_0x5c47bc['lookup']&&(_0x17e5f6+=generateLookupFunction(_0x151260,_0xaf021f,_0x318897,_0x25b51c,_0x392b35,_0x47e6e7)),_0x5c47bc['read']&&(_0x17e5f6+=generateReadFunction(_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc[_0x494da6(0x336)]&&(_0x17e5f6+=generateCreateCompositeFunction(_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc[_0x494da6(0x299)]&&(_0x17e5f6+=_0x4e6da6['oxqoK'](generateUpdateCompositeFunction,_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc['readComposite']&&(_0x17e5f6+=generateReadCompositeFunction(_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x5c47bc[_0x494da6(0x2b1)]&&(_0x17e5f6+=_0x4e6da6['Hggxn'](generateWorkflowFunction,_0x151260,_0xaf021f,_0x318897,_0x47e6e7)),_0x4e6da6[_0x494da6(0x205)](_0x25540a[_0x494da6(0x302)],0x0)&&(_0x17e5f6+='\x0a//\x20No\x20actions\x20enabled\x20for\x20this\x20endpoint\x0a//\x20Enable\x20actions\x20in\x20payload\x20to\x20generate\x20endpoints'),_0x17e5f6;}function generateDatatablesFunction(_0x381212,_0x497c25,_0x46f4c2,_0x25877a=null){const _0x149ac8=a0_0x1db3;if(!_0x25877a){const _0x4d756a=FileUtils[_0x149ac8(0x2ad)](_0x497c25);_0x25877a=_0x4d756a+'Model';}return'\x0a//\x20POST\x20/api/'+_0x381212+'/'+_0x497c25+'/datatables\x20-\x20Data\x20untuk\x20DataTables\x0arouter.post(\x27/datatables\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0x497c25+'/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'+_0x25877a+_0x149ac8(0x37b)+_0x497c25+'\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'+_0x497c25+'\x20datatables:\x27,\x20error);\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'+_0x497c25+'\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(_0x5d6aeb,_0x4552ad,_0x4df22f,_0x2284f5=null,_0x3bb481=![]){const _0x4d5c77=a0_0x1db3,_0x3f35ef={'TXmWj':function(_0x57f4f1,_0x5b4d8a){return _0x57f4f1(_0x5b4d8a);},'qOcev':function(_0x438e52,_0x5be6ed){return _0x438e52(_0x5be6ed);}};if(!_0x2284f5){const _0x5c5aff=FileUtils[_0x4d5c77(0x2ad)](_0x4552ad);_0x2284f5=_0x5c5aff+'Model';}const _0x33219b=_0x3f35ef[_0x4d5c77(0x1cb)](isSoftDeleteEnabled,_0x4df22f)?_0x4d5c77(0x313)+JSON[_0x4d5c77(0x2c4)](SOFT_DELETE_COLUMNS)+')\x20{\x0a\x20\x20\x20\x20\x20\x20delete\x20req.body[__sdCol];\x0a\x20\x20\x20\x20}':'',_0x50cfa6=_0x3f35ef['qOcev'](hasSoftDeleteFkParents,_0x4df22f)?_0x4d5c77(0x27d)+_0x2284f5+_0x4d5c77(0x2cf):'',_0x22a8bb=hasSoftDeleteFkParents(_0x4df22f)?_0x4d5c77(0x2fe):'',_0x370119=_0x3bb481?_0x4d5c77(0x33e)+_0x5d6aeb+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x4552ad+'\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'+(_0x4df22f['primaryKey']||'id')+_0x4d5c77(0x1f8)+_0x4df22f[_0x4d5c77(0x1e9)]+_0x4d5c77(0x1a7):'',_0x573753=_0x3bb481?'\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'\x0a//\x20POST\x20/api/'+_0x5d6aeb+'/'+_0x4552ad+'/create\x20-\x20Menambahkan\x20data\x20'+_0x4552ad+_0x4d5c77(0x31b)+_0x4552ad+_0x4d5c77(0x26f)+_0x573753+_0x4d5c77(0x279)+_0x2284f5+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x2284f5+_0x4d5c77(0x1df)+_0x33219b+'\x0a'+_0x50cfa6+'\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'+_0x4df22f['tableName']+_0x4d5c77(0x1b9)+_0x2284f5+_0x4d5c77(0x273)+_0x2284f5+'.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(`'+_0x4552ad+'\x20data\x20added\x20successfully:\x20${responseData.'+(_0x4df22f[_0x4d5c77(0x33a)]||'id')+'\x20||\x20\x27new\x20record\x27}`);\x0a'+_0x370119+_0x4d5c77(0x29d)+_0x4552ad+_0x4d5c77(0x2bd)+_0x4552ad+':\x27,\x20error);\x0a'+_0x22a8bb+_0x4d5c77(0x367)+_0x4552ad+'\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(_0x27b5e9,_0x335373,_0x1be5f3,_0x4c0537=null,_0x4df5c5=![]){const _0x525716=a0_0x1db3,_0xc12ff1={'Cprmx':function(_0x9e175e,_0x24f5a6){return _0x9e175e(_0x24f5a6);}};if(!_0x4c0537){const _0x21a29d=FileUtils['toCamelCase'](_0x335373);_0x4c0537=_0x21a29d+_0x525716(0x1c2);}const _0x13c681=_0x1be5f3[_0x525716(0x33d)]?',\x20'+JSON['stringify'](_0x1be5f3['fieldPolicy']):'',_0x532758=_0x1be5f3['requestScope']?'\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'+_0x4c0537+'.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'+_0x335373+'\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':'',_0x55a34b=_0xc12ff1['Cprmx'](softDeleteVisibilityFilter,_0x1be5f3),_0x4bc6b2=_0x55a34b!==null?'\x0a\x20\x20\x20\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20__sdCheck\x20=\x20await\x20'+_0x4c0537+_0x525716(0x23e)+IS_DELETED_COLUMN+'\x27,\x20value:\x20'+_0x55a34b+_0x525716(0x212)+_0x335373+_0x525716(0x375):'',_0x3e8657=isSoftDeleteEnabled(_0x1be5f3)?'\x0a\x20\x20\x20\x20for\x20(const\x20__sdCol\x20of\x20'+JSON['stringify'](SOFT_DELETE_COLUMNS)+')\x20{\x0a\x20\x20\x20\x20\x20\x20delete\x20req.body[__sdCol];\x0a\x20\x20\x20\x20}':'',_0x3790bb=_0xc12ff1[_0x525716(0x1a2)](hasSoftDeleteFkParents,_0x1be5f3)?'\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'+_0x4c0537+_0x525716(0x1ca):'',_0x3fa3bc=hasSoftDeleteFkParents(_0x1be5f3)?_0x525716(0x2fe):'',_0x4cdb2e=_0x4df5c5?'\x0a\x20\x20\x20\x20//\x20===\x20KAFKA\x20PUBLISH:\x20UPDATE\x20EVENT\x20===\x0a\x20\x20\x20\x20//\x20Check\x20both\x20runtime\x20env\x20(KAFKA_ENABLED)\x20and\x20payload\x20config\x0a\x20\x20\x20\x20const\x20kafkaRuntimeEnabledUpdate\x20=\x20process.env.KAFKA_ENABLED\x20===\x20\x27true\x27;\x0a\x20\x20\x20\x20if\x20(kafkaRuntimeEnabledUpdate\x20&&\x20kafkaService\x20&&\x20kafkaConfig\x20&&\x20kafkaConfig.enabled\x20&&\x20kafkaConfig.publishOn\x20&&\x20kafkaConfig.publishOn.update)\x20{\x0a\x20\x20\x20\x20\x20\x20kafkaService.publishUpdate(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x27b5e9+_0x525716(0x37c)+_0x335373+'\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'+(_0x1be5f3[_0x525716(0x33a)]||'id')+_0x525716(0x1f8)+_0x1be5f3[_0x525716(0x1e9)]+_0x525716(0x1a7):'',_0x1580b9=_0x4df5c5?'\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'\x0a//\x20POST\x20/api/'+_0x27b5e9+'/'+_0x335373+_0x525716(0x318)+_0x335373+'\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'+_0x335373+'/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'+_0x1580b9+_0x525716(0x2c2)+(_0x1be5f3[_0x525716(0x33a)]||'id')+_0x525716(0x1e5)+_0x532758+_0x4bc6b2+_0x525716(0x1f2)+_0x4c0537+_0x525716(0x2ab)+_0x4c0537+_0x525716(0x1c6)+_0x3e8657+'\x0a'+_0x3790bb+_0x525716(0x1e0)+_0x1be5f3[_0x525716(0x1e9)]+_0x525716(0x1b9)+_0x4c0537+'.updateData(req.body,\x20eventContext'+_0x13c681+_0x525716(0x238)+_0x4c0537+'.updateData(req.body,\x20{\x20additionalContext:\x20{\x20requestId:\x20req.id\x20||\x20null\x20}\x20}'+_0x13c681+');\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(`'+_0x335373+_0x525716(0x259)+_0x4cdb2e+'\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'+_0x335373+_0x525716(0x331)+_0x335373+':\x27,\x20error);\x0a'+_0x3fa3bc+_0x525716(0x233)+_0x335373+'\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'+_0x335373+_0x525716(0x1a9);}function generateAdjustFunction(_0x54d8d3,_0x335b2e,_0x1789a2,_0xfda7cf=null){const _0x90efec=a0_0x1db3;if(!_0xfda7cf){const _0x389bf4=FileUtils[_0x90efec(0x2ad)](_0x335b2e);_0xfda7cf=_0x389bf4+_0x90efec(0x1c2);}const _0x137753=_0x1789a2['adjustConfig']?JSON['stringify'](_0x1789a2[_0x90efec(0x2d2)]):'{}',_0x2a25ba=_0x1789a2[_0x90efec(0x33d)]?',\x20'+JSON['stringify'](_0x1789a2['fieldPolicy']):'',_0x35345b=_0x1789a2['fieldPolicy']?',\x20null,\x20'+JSON['stringify'](_0x1789a2['fieldPolicy']):'',_0x346d2a=_0x1789a2[_0x90efec(0x1a8)]?'\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'+_0xfda7cf+'.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'+_0x335b2e+'\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 _0x90efec(0x2da)+_0x54d8d3+'/'+_0x335b2e+'/adjust\x20-\x20Adjust\x20data\x20'+_0x335b2e+'\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'+(_0x1789a2['primaryKey']||'id')+'\x27;\x0a\x20\x20\x20\x20if\x20(!req.body[primaryKey])\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`Primary\x20key\x20(${primaryKey})\x20is\x20required\x20for\x20adjust`,\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\x20adjustments\x20array\x0a\x20\x20\x20\x20if\x20(!req.body.adjustments\x20||\x20!Array.isArray(req.body.adjustments)\x20||\x20req.body.adjustments.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\x27adjustments\x20array\x20is\x20required\x20and\x20must\x20not\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'+_0x346d2a+_0x90efec(0x261)+_0x137753+_0x90efec(0x2a2)+_0x1789a2['tableName']+_0x90efec(0x1b9)+_0xfda7cf+'.adjustData(req.body,\x20adjustConfig,\x20eventContext'+_0x2a25ba+');\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'+_0xfda7cf+_0x90efec(0x215)+_0x35345b+_0x90efec(0x314)+_0x335b2e+_0x90efec(0x19e)+_0x335b2e+_0x90efec(0x19f)+_0x335b2e+_0x90efec(0x224)+_0x335b2e+'\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\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\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\x20adjusting\x20'+_0x335b2e+'\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(_0x3042ed,_0x4c2236,_0x203d6d,_0xd56cc6=null){const _0x344226=a0_0x1db3;if(!_0xd56cc6){const _0x125bc6=FileUtils[_0x344226(0x2ad)](_0x4c2236);_0xd56cc6=_0x125bc6+'Model';}const _0x51ecfe=_0x203d6d[_0x344226(0x2d0)]?JSON['stringify'](_0x203d6d['aggregateConfig']):'{}';return _0x344226(0x2da)+_0x3042ed+'/'+_0x4c2236+'/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'+_0x51ecfe+_0x344226(0x25b)+_0xd56cc6+'.aggregateData(req.body\x20||\x20{},\x20aggregateConfig);\x0a\x0a\x20\x20\x20\x20return\x20res.status(200).json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\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\x20mengagregasi\x20data\x20'+_0x4c2236+':\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.statusCode\x20===\x20400\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27not\x20a\x20valid\x20field\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27Invalid\x20aggregate\x20function\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27Invalid\x20alias\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27only\x20allowed\x20with\x20COUNT\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27not\x20defined\x20in\x20aggregate\x20config\x27)\x20||\x0a\x20\x20\x20\x20\x20\x20\x20\x20error.message.includes(\x27no\x20join\x20definitions\x20found\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\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\x20aggregating\x20'+_0x4c2236+'\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(_0x4e54ac){const _0x61b850=a0_0x1db3;return Array['isArray'](_0x4e54ac[_0x61b850(0x351)])&&_0x4e54ac[_0x61b850(0x351)]['some'](_0x33fa94=>_0x33fa94&&_0x33fa94['onDelete']===_0x61b850(0x1c8));}function hasCascadeChildren(_0x531ea5){const _0x24a610=a0_0x1db3,_0x1b3ea7={'RnwQz':'object','lmfEE':function(_0x40a687,_0x4fc4ac){return _0x40a687===_0x4fc4ac;}},_0x5876ff=_0x531ea5&&_0x531ea5['softDeleteCascadeTree'];return!!(_0x5876ff&&typeof _0x5876ff===_0x1b3ea7['RnwQz']&&typeof _0x5876ff[_0x24a610(0x2cd)]==='string'&&_0x5876ff['master']&&_0x5876ff['nodes']&&_0x1b3ea7[_0x24a610(0x1b2)](typeof _0x5876ff['nodes'],'object')&&_0x5876ff['nodes'][_0x5876ff[_0x24a610(0x2cd)]]);}function generateDeleteFunction(_0x59f1ea,_0x9ce83,_0xb64b5d,_0x3e89f5=null,_0x5ca881=![]){const _0x535427=a0_0x1db3,_0x5ef51f={'lUATR':function(_0x349ebf,_0x1eec55){return _0x349ebf(_0x1eec55);}};if(!_0x3e89f5){const _0x3efe00=FileUtils['toCamelCase'](_0x9ce83);_0x3e89f5=_0x3efe00+'Model';}const _0x89c0d8=_0x5ca881?_0x535427(0x363)+_0x59f1ea+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x27'+_0x9ce83+'\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'+(_0xb64b5d['primaryKey']||'id')+_0x535427(0x1f8)+_0xb64b5d[_0x535427(0x1e9)]+_0x535427(0x1a7):'',_0x17dca4=_0x5ca881?'\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':_0x535427(0x303);return _0x535427(0x2da)+_0x59f1ea+'/'+_0x9ce83+_0x535427(0x361)+_0x9ce83+'\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'+_0x9ce83+_0x535427(0x38e)+_0x17dca4+_0x535427(0x1f1)+_0x3e89f5+'.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'+_0x9ce83+_0x535427(0x301)+_0xb64b5d['tableName']+_0x535427(0x1b9)+_0x3e89f5+_0x535427(0x274)+_0x3e89f5+_0x535427(0x203)+_0x9ce83+_0x535427(0x379)+_0x89c0d8+'\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\x20menghapus\x20data\x20'+_0x9ce83+':\x27,\x20error);\x0a'+(_0xb64b5d['softDelete']?.[_0x535427(0x2aa)]?_0x535427(0x225)+_0x9ce83+_0x535427(0x283):'')+(_0x5ef51f['lUATR'](hasSoftDeleteFkRestrictChildren,_0xb64b5d)||_0x5ef51f['lUATR'](hasCascadeChildren,_0xb64b5d)?'\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':'')+_0x535427(0x19c)+_0x9ce83+'\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(_0x205a84,_0x352482,_0x4558ee,_0x10a0f5=null){const _0x53ab73=a0_0x1db3;if(!_0x10a0f5){const _0x1a42a9=FileUtils[_0x53ab73(0x2ad)](_0x352482);_0x10a0f5=_0x1a42a9+'Model';}return _0x53ab73(0x2da)+_0x205a84+'/'+_0x352482+'/restore\x20-\x20Memulihkan\x20data\x20'+_0x352482+_0x53ab73(0x2f2)+_0x4558ee['tableName']+'\x27,\x0a\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\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\x20options:\x20req.bodyOptions\x20||\x20{},\x0a\x20\x20\x20\x20\x20\x20\x20\x20requestId:\x20req.id\x20||\x20null\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20};\x0a\x0a\x20\x20\x20\x20const\x20responseData\x20=\x20await\x20'+_0x10a0f5+_0x53ab73(0x35f)+_0x352482+_0x53ab73(0x1f7)+_0x352482+_0x53ab73(0x30c)+_0x352482+'\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'+_0x352482+_0x53ab73(0x1a9);}function generateFirstFunction(_0x569001,_0xf651da,_0xf617d,_0x13546c,_0x2ee19c,_0x193b40=null){const _0x41d369=a0_0x1db3,_0x10898d={'OSgGq':function(_0x5a1f34,_0x23b8dc){return _0x5a1f34!==_0x23b8dc;}};if(!_0x193b40){const _0x3c02a3=FileUtils['toCamelCase'](_0xf651da);_0x193b40=_0x3c02a3+'Model';}const _0x1ac71f=_0xf617d['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'+_0xf651da+_0x41d369(0x270):'',_0x3b369b=softDeleteVisibilityFilter(_0xf617d),_0x2a2121=_0x10898d['OSgGq'](_0x3b369b,null)?'\x0a\x20\x20\x20\x20getPayload.where.push({\x20key:\x20\x27'+IS_DELETED_COLUMN+_0x41d369(0x28e)+_0x3b369b+_0x41d369(0x384):'',_0x247616=_0x10898d[_0x41d369(0x1e8)](_0x3b369b,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'+_0xf651da+'\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/'+_0x569001+'/'+_0xf651da+'/first\x20-\x20Mendapatkan\x20data\x20'+_0xf651da+'\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'+_0xf651da+'/first:\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\x0a\x20\x20\x20\x20//\x20Normalize:\x20array\x201\x20elemen\x20->\x20object\x20(backward\x20compatible)\x0a\x20\x20\x20\x20if\x20(Array.isArray(req.body.where)\x20&&\x20req.body.where.length\x20===\x201)\x20{\x0a\x20\x20\x20\x20\x20\x20req.body.where\x20=\x20req.body.where[0];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\x20-\x20harus\x20object\x20tunggal\x20{key,\x20value}\x0a\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\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\x27Property\x20where\x20is\x20required\x20as\x20{key,\x20value}\x20object\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'+(_0xf617d['primaryKey']||'id')+_0x41d369(0x28d)+(_0xf617d['primaryKey']||'id')+'\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//\x20Tolak\x20format\x20advanced\x20(conditions/logic)\x0a\x20\x20\x20\x20if\x20(req.body.where.conditions\x20||\x20req.body.where.logic)\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\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\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\x20ada\x20di\x20validFields\x0a\x20\x20\x20\x20const\x20validFields\x20=\x20'+JSON['stringify'](_0xf617d['fieldName']||[])+';\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\x20validFields:\x20validFields,\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\x20validFields:\x20validFields,\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};'+_0x2a2121+_0x41d369(0x371)+_0x193b40+_0x41d369(0x1ba)+_0x247616+'\x0a'+_0x1ac71f+'\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'+_0xf651da+_0x41d369(0x193)+_0xf651da+_0x41d369(0x27a)+_0xf651da+'\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(_0x54f0a9,_0x49b2cd,_0xd99265,_0x2afda7,_0x21050c,_0xbe631=null){const _0x19c131=a0_0x1db3,_0x46eff1={'puuno':_0x19c131(0x2b4),'VvQBu':'\x22,\x20\x22'};if(!_0xbe631){const _0xab011e=FileUtils[_0x19c131(0x2ad)](_0x49b2cd);_0xbe631=_0xab011e+'Model';}const _0x20c485=_0xd99265[_0x19c131(0x1fc)]||null;return _0x19c131(0x2d1)+_0x54f0a9+'/'+_0x49b2cd+'/lookup\x20-\x20Pencarian\x20'+_0x49b2cd+_0x19c131(0x34d)+_0x49b2cd+'\x20lookup\x20request:\x20search=${search},\x20filters=`,\x20extraFilters);\x0a\x0a\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20lookup\x20data\x20dengan\x20filters\x20tambahan\x0a\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0xbe631+_0x19c131(0x21a)+_0x49b2cd+_0x19c131(0x244)+_0x49b2cd+_0x19c131(0x323)+_0x54f0a9+'/'+_0x49b2cd+_0x19c131(0x1be)+_0x49b2cd+'\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'](_0x20c485)+_0x19c131(0x2f7)+_0x21050c+'\x22];\x0a\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\x20example:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22selected_tag\x22:\x20\x22optional-id-if-needed\x22,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22where\x22:\x20[{\x20\x22key\x22:\x20\x22'+(_0x2afda7['all']?_0x2afda7['all'][_0x19c131(0x29b)](_0x19bdbb=>_0x19bdbb!=='id')||_0x19c131(0x2b4):_0x46eff1[_0x19c131(0x255)])+_0x19c131(0x1fd)+_0x21050c+'||\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'+_0x21050c+_0x19c131(0x20c)+_0x21050c+'\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]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22select\x22:\x20[\x22id\x22,\x20\x22'+(_0x2afda7[_0x19c131(0x308)]?_0x2afda7['textFields'][_0x19c131(0x38d)](0x0,0x4)[_0x19c131(0x2b9)](_0x46eff1[_0x19c131(0x317)]):_0xd99265[_0x19c131(0x2cc)][_0x19c131(0x38d)](0x0,0x4)['join'](_0x46eff1['VvQBu']))+_0x19c131(0x2a4)+_0x21050c+'\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'+(_0xd99265[_0x19c131(0x2cc)][0x1]||_0x21050c)+'\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'+_0x21050c+_0x19c131(0x306)+_0x49b2cd+_0x19c131(0x23d)+(_0x2afda7['all']?_0x2afda7['all']['find'](_0x1b9f44=>_0x1b9f44!=='id')||_0x46eff1['puuno']:'code')+_0x19c131(0x220)+_0x21050c+'\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20},\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20example_advanced:\x20{\x0a\x20\x20\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\x20\x22logic\x22:\x20\x22OR\x22,\x0a\x20\x20\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\x20{\x20\x22key\x22:\x20\x22'+_0x21050c+'\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'+_0x21050c+_0x19c131(0x340)+(_0x2afda7['textFields']?_0x2afda7[_0x19c131(0x308)][_0x19c131(0x38d)](0x0,0x4)['join'](_0x46eff1[_0x19c131(0x317)]):_0xd99265[_0x19c131(0x2cc)][_0x19c131(0x38d)](0x0,0x4)['join'](_0x46eff1['VvQBu']))+_0x19c131(0x1f9)+JSON[_0x19c131(0x2c4)](_0xd99265[_0x19c131(0x2cc)]||[])+';\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\x20validFields:\x20validFields,\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'+_0xbe631+'.getLookupDataWithFilter(req.body);\x0a\x0a\x20\x20\x20\x20\x20\x20console.log(`Lookup\x20with\x20filter\x20results:\x20${list.length}\x20records\x20found`);\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20list.length,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20list,\x0a\x20\x20\x20\x20\x20\x20\x20\x20query:\x20req.body,\x0a\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20\x20\x20\x20\x20});\x0a\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Format\x20lama\x20atau\x20request\x20tanpa\x20WHERE\x20clause\x20tetapi\x20dengan\x20SELECT\x0a\x20\x20\x20\x20\x20\x20console.log(\x27Using\x20legacy\x20format\x20with\x20selected_tag\x20or\x20select-only\x20request\x27);\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20selectedTag\x20=\x20req.body.selected_tag\x20||\x20\x27\x27;\x0a\x20\x20\x20\x20\x20\x20console.log(`'+_0x49b2cd+_0x19c131(0x334)+_0xbe631+'.getLookupDataWithFilter(modifiedBody);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20console.log(`Static\x20lookup\x20with\x20select/order\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\x20query:\x20modifiedBody,\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}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20//\x20Gunakan\x20model\x20untuk\x20mendapatkan\x20data\x20dengan\x20method\x20lama\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20list\x20=\x20await\x20'+_0xbe631+'.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'+_0x49b2cd+'\x20static\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\x20fetching\x20'+_0x49b2cd+'\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 generateReadFunction(_0x341672,_0xd7898d,_0x5ef2f3,_0x26802c=null){const _0x14152d=a0_0x1db3;if(!_0x26802c){const _0x377ed0=FileUtils[_0x14152d(0x2ad)](_0xd7898d);_0x26802c=_0x377ed0+'Model';}return _0x14152d(0x2da)+_0x341672+'/'+_0xd7898d+'/read\x20-\x20Manual\x20pagination\x20endpoint\x0arouter.post(\x27/read\x27,\x20async\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20try\x20{\x0a\x20\x20\x20\x20//\x20req.log.debug(\x27Request\x20body\x20'+_0xd7898d+_0x14152d(0x326)+(_0x5ef2f3['primaryKey']||_0x5ef2f3[_0x14152d(0x2cc)][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'](_0x5ef2f3[_0x14152d(0x2cc)]||[])+_0x14152d(0x1a6)+_0x26802c+'.getList(options);\x0a\x0a\x20\x20\x20\x20//\x20Format\x20response\x20berdasarkan\x20mode\x0a\x20\x20\x20\x20if\x20(paginate)\x20{\x0a\x20\x20\x20\x20\x20\x20const\x20totalPages\x20=\x20Math.ceil(result.totalRecords\x20/\x20perPage);\x0a\x20\x20\x20\x20\x20\x20const\x20hasNext\x20=\x20page\x20<\x20totalPages;\x0a\x20\x20\x20\x20\x20\x20const\x20hasPrevious\x20=\x20page\x20>\x201;\x0a\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20result.data\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20result.data\x20?\x20result.data.length\x20:\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20pagination:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20current_page:\x20page,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20per_page:\x20perPage,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_records:\x20result.totalRecords\x20||\x200,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20total_pages:\x20totalPages,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20has_next:\x20hasNext,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20has_previous:\x20hasPrevious\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20});\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20return\x20res.json({\x0a\x20\x20\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20\x20\x20data:\x20result.data\x20||\x20[],\x0a\x20\x20\x20\x20\x20\x20\x20\x20count:\x20result.data\x20?\x20result.data.length\x20:\x200\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'+_0xd7898d+_0x14152d(0x2f6)+_0xd7898d+_0x14152d(0x2b8);}function generateCreateCompositeFunction(_0x5c9cb6,_0xbb65d3,_0x9be964,_0x3671ad=null){const _0xdfa8cb=a0_0x1db3,_0x5baf52={'MMOHz':'unit_price','GLPIW':'\x20(with\x20detail\x20items)'};if(!_0x3671ad){const _0x47e834=FileUtils[_0xdfa8cb(0x2ad)](_0xbb65d3);_0x3671ad=_0x47e834+_0xdfa8cb(0x1c2);}const _0x2e731a=_0x9be964[_0xdfa8cb(0x23c)]&&_0x9be964['masterDetail']['enabled'],_0x95da8b=_0x2e731a?_0x9be964[_0xdfa8cb(0x23c)][_0xdfa8cb(0x21e)]:null,_0x126784=_0x95da8b?_0x95da8b[_0xdfa8cb(0x278)]('.')['pop']():_0xdfa8cb(0x2dc),_0x5411e5=_0xbb65d3[_0xdfa8cb(0x2f5)](/-/g,'_'),_0x3b3754=_0x9be964['masterDetail']?.['detailConfig']?.['autoCalculateFields']?.[_0xdfa8cb(0x2ff)]?.[_0xdfa8cb(0x327)]||'',_0x82f01d=_0x3b3754[_0xdfa8cb(0x278)]('*')[_0xdfa8cb(0x1c1)](_0x574f01=>_0x574f01['trim']()),_0x4034cf=_0x9be964['masterDetail']?.[_0xdfa8cb(0x211)]?.['total_qty']?.['source']?.[_0xdfa8cb(0x2f5)](_0xdfa8cb(0x370),'')||'',_0x2b65e7=_0x82f01d[0x0]||_0x4034cf,_0xb37bb1=_0x82f01d[0x1]||_0x5baf52['MMOHz'];return _0xdfa8cb(0x2da)+_0x5c9cb6+'/'+_0xbb65d3+_0xdfa8cb(0x23b)+(_0x2e731a?_0xdfa8cb(0x34b):'')+_0xdfa8cb(0x348)+_0xbb65d3+_0xdfa8cb(0x2a0)+_0x5411e5+_0xdfa8cb(0x304)+_0x5411e5+'\x22\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20example:\x20'+(_0x2e731a?'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x5411e5+'\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'+_0x126784+_0xdfa8cb(0x250):_0xdfa8cb(0x2cb)+_0x5411e5+'\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}')+_0xdfa8cb(0x218)+_0x5411e5+_0xdfa8cb(0x33c)+_0x3671ad+'.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'+(_0x2e731a?_0xdfa8cb(0x2bf)+_0x126784+';':'')+_0xdfa8cb(0x350)+_0x3671ad+_0xdfa8cb(0x2c9)+(_0x2e731a?'\x0a\x20\x20\x20\x20//\x20Validasi\x20detail\x20items\x20untuk\x20master-detail\x0a\x20\x20\x20\x20if\x20(!data.'+_0x126784+'\x20||\x20!Array.isArray(data.'+_0x126784+_0xdfa8cb(0x226)+_0x126784+_0xdfa8cb(0x234)+_0x126784+'\x22\x20must\x20be\x20a\x20non-empty\x20array\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//\x20Auto-calculate\x20totals\x20jika\x20ada\x20konfigurasi\x0a\x20\x20\x20\x20'+(_0x9be964['masterDetail'][_0xdfa8cb(0x211)]?_0xdfa8cb(0x1f5)+JSON['stringify'](_0x9be964['masterDetail'][_0xdfa8cb(0x211)])+_0xdfa8cb(0x228)+_0x126784+'.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.'+_0x126784+'.reduce((sum,\x20item)\x20=>\x20sum\x20+\x20(Number(item[qtyField])\x20||\x200),\x200);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'+(_0x2b65e7?'if\x20(headerCalc.total_amount)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Calculate\x20total_amount\x20as\x20sum\x20of\x20('+_0x2b65e7+_0xdfa8cb(0x208)+_0xb37bb1+_0xdfa8cb(0x1d1)+_0x126784+'.reduce((sum,\x20item)\x20=>\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20const\x20qty\x20=\x20Number(item.'+_0x2b65e7+_0xdfa8cb(0x319)+_0xb37bb1+')\x20||\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20sum\x20+\x20(qty\x20*\x20price);\x0a\x20\x20\x20\x20\x20\x20},\x200);\x0a\x20\x20\x20\x20}':'//\x20WARNING:\x20headerCalculations.total_amount\x20skipped\x20—\x20no\x20qty\x20field\x20configured\x20(set\x20autoCalculateFields.total_amount.formula\x20or\x20headerCalculations.total_qty.source)')+'\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':'')+_0xdfa8cb(0x369)+_0x9be964[_0xdfa8cb(0x1e9)]+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20additionalContext:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20detailTable:\x20\x27'+_0x95da8b+_0xdfa8cb(0x32c)+(_0x2e731a?_0x9be964['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\x20create\x20method\x0a\x20\x20\x20\x20const\x20result\x20=\x20await\x20'+_0x3671ad+_0xdfa8cb(0x222)+_0xbb65d3+_0xdfa8cb(0x216)+_0xbb65d3+_0xdfa8cb(0x266)+(_0x2e731a?_0x5baf52['GLPIW']:'')+_0xdfa8cb(0x2d4)+_0xbb65d3+':\x27,\x20error);\x0a\x0a\x20\x20\x20\x20//\x20Handle\x20specific\x20database\x20errors\x0a\x20\x20\x20\x20if\x20(error.code\x20===\x20\x2723505\x27)\x20{\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{\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\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\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\x20creating\x20'+_0xbb65d3+_0xdfa8cb(0x1a9);}function generateUpdateCompositeFunction(_0x1edc43,_0x481502,_0x32f002,_0x2a4804=null){const _0x4de759=a0_0x1db3,_0x1e5b2e={'UjcFW':_0x4de759(0x2dc),'TMxBx':'(master-detail\x20transaction)'};if(!_0x2a4804){const _0x2688d8=FileUtils[_0x4de759(0x2ad)](_0x481502);_0x2a4804=_0x2688d8+_0x4de759(0x1c2);}const _0x437cb6=_0x32f002['masterDetail']&&_0x32f002[_0x4de759(0x23c)]['enabled'],_0x3fce6a=_0x437cb6?_0x32f002[_0x4de759(0x23c)]['detailTable']:null,_0x1b5330=_0x3fce6a?_0x3fce6a['split']('.')['pop']():_0x1e5b2e[_0x4de759(0x25a)],_0x405490=_0x481502[_0x4de759(0x2f5)](/-/g,'_'),_0x2cdada=_0x32f002['primaryKey']||'id',_0x288013=_0x32f002[_0x4de759(0x1a8)]?'\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'+_0x2a4804+'.getData({\x0a\x20\x20\x20\x20\x20\x20\x20\x20where:\x20[\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{\x20key:\x20\x27'+_0x2cdada+_0x4de759(0x1f3)+_0x2cdada+_0x4de759(0x1d6):'';return _0x4de759(0x2da)+_0x1edc43+'/'+_0x481502+'/update-composite\x20-\x20Composite\x20update\x20'+(_0x437cb6?_0x1e5b2e['TMxBx']:'')+_0x4de759(0x223)+_0x481502+_0x4de759(0x1cd)+_0x405490+_0x4de759(0x304)+_0x405490+_0x4de759(0x289)+(_0x437cb6?'{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x405490+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x2cdada+'\x22:\x20\x22existing-id\x22,\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'+_0x1b5330+'\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}':_0x4de759(0x2cb)+_0x405490+'\x22:\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22'+_0x2cdada+_0x4de759(0x32b))+_0x4de759(0x218)+_0x405490+_0x4de759(0x2a9)+_0x2cdada+')\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('+_0x2cdada+_0x4de759(0x2a3)+_0x288013+_0x4de759(0x1d8)+_0x2a4804+'.validateData\x20===\x20\x27function\x27)\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Extract\x20header\x20data\x20saja\x20(exclude\x20detail)\x20untuk\x20validation\x0a\x20\x20\x20\x20\x20\x20const\x20headerDataForValidation\x20=\x20{\x20...data\x20};\x0a\x20\x20\x20\x20\x20\x20'+(_0x437cb6?_0x4de759(0x2bf)+_0x1b5330+';':'')+'\x0a\x0a\x20\x20\x20\x20\x20\x20const\x20validation\x20=\x20await\x20'+_0x2a4804+_0x4de759(0x2ee)+(_0x437cb6?_0x4de759(0x1ab)+_0x1b5330+_0x4de759(0x381)+_0x1b5330+'\x20!==\x20\x27object\x27\x20||\x20Array.isArray(data.'+_0x1b5330+'))\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'+_0x1b5330+_0x4de759(0x31f)+_0x1b5330+_0x4de759(0x38f)+_0x1b5330+'.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'+_0x1b5330+'.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'+_0x1b5330+'.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':'')+'\x0a\x0a\x20\x20\x20\x20//\x20Build\x20eventContext\x20untuk\x20composite\x20hooks\x20(jika\x20component\x20engine\x20tersedia)\x0a\x20\x20\x20\x20let\x20eventContext\x20=\x20null;\x0a\x20\x20\x20\x20if\x20(componentEngine\x20&&\x20ContextBuilder)\x20{\x0a\x20\x20\x20\x20\x20\x20eventContext\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20componentEngine,\x0a\x20\x20\x20\x20\x20\x20\x20\x20ContextBuilder,\x0a\x20\x20\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x32f002['tableName']+_0x4de759(0x32d)+_0x3fce6a+'\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20foreignKey:\x20\x27'+(_0x437cb6?_0x32f002[_0x4de759(0x23c)][_0x4de759(0x1fb)]:'')+'\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'+_0x2a4804+_0x4de759(0x2ea)+_0x481502+'\x20composite\x20update\x20successful:\x20'+_0x2cdada+_0x4de759(0x1e6)+_0x2cdada+_0x4de759(0x1b4)+_0x481502+_0x4de759(0x28c)+(_0x437cb6?'\x20(with\x20detail\x20items)':'')+'\x27,\x0a\x20\x20\x20\x20\x20\x20data:\x20result,\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\x20update\x20'+_0x481502+_0x4de759(0x204)+_0x481502+'\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{\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{\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\x20details:\x20process.env.NODE_ENV\x20===\x20\x27development\x27\x20?\x20error.message\x20:\x20undefined,\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'+_0x481502+'\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(_0x441c81,_0x1afd07,_0x5c2d81,_0x4fc2c5=null){const _0x11dafc=a0_0x1db3;if(!_0x4fc2c5){const _0x17102c=FileUtils['toCamelCase'](_0x1afd07);_0x4fc2c5=_0x17102c+'Model';}const _0x164e29=JSON[_0x11dafc(0x2c4)](_0x5c2d81['fieldName']||[]);return _0x11dafc(0x2da)+_0x441c81+'/'+_0x1afd07+_0x11dafc(0x2e5)+_0x1afd07+'/read-composite:\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\x0a\x20\x20\x20\x20//\x20Validasi\x20where\x20clause\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\x27Property\x20where\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\x22field_name\x22,\x20\x22value\x22:\x20\x22field_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\x22'+(_0x5c2d81['primaryKey']||'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'+_0x4fc2c5+'.readComposite(req.body);\x0a\x0a\x20\x20\x20\x20console.log(`'+_0x1afd07+_0x11dafc(0x21d)+_0x1afd07+_0x11dafc(0x31a)+_0x1afd07+_0x11dafc(0x2ef);}function generateWorkflowFunction(_0x1ed9bb,_0x3cdda0,_0x4ca5f4,_0xa723b7=null){const _0x1d8d99=a0_0x1db3;if(!_0xa723b7){const _0x2c2b92=FileUtils[_0x1d8d99(0x2ad)](_0x3cdda0);_0xa723b7=_0x2c2b92+_0x1d8d99(0x1c2);}const _0x223417=_0x4ca5f4[_0x1d8d99(0x2b1)]?JSON[_0x1d8d99(0x2c4)](_0x4ca5f4['workflow']):'{}',_0x5880f9=_0x4ca5f4['requestScope']?_0x1d8d99(0x310)+_0xa723b7+'.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'+_0x3cdda0+_0x1d8d99(0x30d):'';return'\x0a//\x20POST\x20/api/'+_0x1ed9bb+'/'+_0x3cdda0+_0x1d8d99(0x20e)+_0x3cdda0+_0x1d8d99(0x20d)+(_0x4ca5f4['primaryKey']||'id')+_0x1d8d99(0x344)+_0x5880f9+'\x0a\x20\x20\x20\x20const\x20workflowConfig\x20=\x20'+_0x223417+';\x0a\x20\x20\x20\x20workflowConfig._project\x20=\x20\x27'+_0x1ed9bb+_0x1d8d99(0x329)+_0x4ca5f4[_0x1d8d99(0x1e9)]+_0x1d8d99(0x286)+_0xa723b7+_0x1d8d99(0x24e)+_0xa723b7+'.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(`'+_0x3cdda0+'\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'+_0x3cdda0+':\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'+_0x3cdda0+'\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//\x20Lock\x20acquisition\x20failed\x0a\x20\x20\x20\x20if\x20(error.message.includes(\x27Failed\x20to\x20acquire\x20lock\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\x27Resource\x20busy\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\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\x20changing\x20status\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';}function createPostgresSubmoduleTemplate(_0x177107,_0x22fd89,_0x48525f){const _0x56607c=a0_0x1db3,_0x25015c={'ASYgM':_0x56607c(0x206),'CPEHC':function(_0x4c1f9e,_0x3b85a5){return _0x4c1f9e(_0x3b85a5);},'yZAsx':'\x27,\x20\x27','HqvZG':function(_0x3a5cec,_0x15b50a,_0x2f721d){return _0x3a5cec(_0x15b50a,_0x2f721d);},'vROGc':function(_0x4f85b5,_0x1ccbf2){return _0x4f85b5!==_0x1ccbf2;},'msmHd':_0x56607c(0x2e4)},_0x10c28d=FileUtils[_0x56607c(0x1b5)](_0x22fd89),_0xad9e97=new Date()['toISOString']()[_0x56607c(0x2f5)]('T','\x20')['replace'](/\.\d{3}Z$/,''),_0x88baa=_0x48525f['_extendedFields']||{'all':_0x48525f['fieldName']||[]},_0x111ab9=FileUtils['detectTextColumn'](_0x48525f['fieldName']||[]),_0x5c6fdc=FileUtils['toCamelCase'](_0x22fd89),_0x3ea061=_0x5c6fdc+_0x56607c(0x1c2),_0x237a3a=_0x48525f['kafka']&&_0x48525f[_0x56607c(0x2c6)]['enabled']===!![],_0x44b3f0=buildEndpointFunctions(_0x177107,_0x22fd89,_0x48525f,_0x88baa,_0x111ab9,_0x3ea061,_0x237a3a),_0x36be81=_0x237a3a?_0x56607c(0x2fc)+JSON['stringify'](_0x48525f[_0x56607c(0x2c6)]||{'enabled':![]})+';\x0a':'';return'const\x20express\x20=\x20require(\x27express\x27);\x0aconst\x20router\x20=\x20express.Router();\x0aconst\x20'+_0x3ea061+_0x56607c(0x2e0)+_0x177107+'/'+_0x22fd89+'\x27);\x0a\x0a//\x20Issue\x20#13:\x20ekstrak\x20field\x20penyebab\x20konflik\x20dari\x20error\x20unique-violation\x20PostgreSQL.\x0a//\x20Mengembalikan\x20map\x20{\x20field:\x20[pesan]\x20}\x20atau\x20null\x20(call-site\x20meng-omit\x20`details`).\x0afunction\x20buildDuplicateDetails(error)\x20{\x0a\x20\x20if\x20(!error\x20||\x20typeof\x20error.detail\x20!==\x20\x27string\x27)\x20return\x20null;\x0a\x20\x20const\x20m\x20=\x20error.detail.match(/^Key\x20\x5c(([^)]+)\x5c)=/);\x0a\x20\x20if\x20(!m)\x20return\x20null;\x0a\x20\x20const\x20cols\x20=\x20m[1].split(\x27,\x27).map((c)\x20=>\x20c.trim().replace(/^\x22|\x22$/g,\x20\x27\x27)).filter(Boolean);\x0a\x20\x20if\x20(cols.length\x20===\x200)\x20return\x20null;\x0a\x20\x20const\x20msg\x20=\x20cols.length\x20>\x201\x0a\x20\x20\x20\x20?\x20\x27A\x20record\x20with\x20this\x20combination\x20of\x20values\x20already\x20exists\x27\x0a\x20\x20\x20\x20:\x20\x27A\x20record\x20with\x20this\x20value\x20already\x20exists\x27;\x0a\x20\x20const\x20details\x20=\x20{};\x0a\x20\x20for\x20(const\x20c\x20of\x20cols)\x20details[c]\x20=\x20[msg];\x0a\x20\x20return\x20details;\x0a}\x0a'+_0x36be81+'\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[_0x56607c(0x2c4)](_0x48525f['components'])+'\x20&&\x20Array.isArray('+JSON[_0x56607c(0x2c4)](_0x48525f['components'])+')\x20&&\x20'+JSON[_0x56607c(0x2c4)](_0x48525f['components'])+'.length\x20>\x200;\x0a\x0a\x20\x20if\x20(hasComponents)\x20{\x0a\x20\x20\x20\x20componentEngine\x20=\x20require(\x27@restforgejs/platform/src/utils/component-engine\x27).componentEngine;\x0a\x20\x20\x20\x20ContextBuilder\x20=\x20require(\x27@restforgejs/platform/src/utils/context-builder\x27);\x0a\x0a\x20\x20\x20\x20//\x20Load\x20component\x20configuration\x20dari\x20payload\x20yang\x20sedang\x20digunakan\x0a\x20\x20\x20\x20const\x20componentConfig\x20=\x20{\x0a\x20\x20\x20\x20\x20\x20tableName:\x20\x27'+_0x48525f['tableName']+_0x56607c(0x1c3)+JSON[_0x56607c(0x2c4)](_0x48525f[_0x56607c(0x2cc)])+',\x0a\x20\x20\x20\x20\x20\x20exportQuery:\x20'+(_0x48525f['exportQuery']?'\x27'+_0x48525f['exportQuery']+'\x27':_0x25015c['ASYgM'])+_0x56607c(0x1ad)+(_0x48525f['columnFormats']?JSON['stringify'](_0x48525f[_0x56607c(0x1b8)]):_0x25015c['ASYgM'])+_0x56607c(0x1d3)+(_0x48525f['fieldLabels']?JSON['stringify'](_0x48525f[_0x56607c(0x20b)]):_0x25015c[_0x56607c(0x277)])+_0x56607c(0x315)+JSON[_0x56607c(0x2c4)](_0x48525f[_0x56607c(0x31d)])+',\x0a\x20\x20\x20\x20\x20\x20importConfig:\x20'+(_0x48525f[_0x56607c(0x362)]?JSON['stringify'](_0x48525f[_0x56607c(0x362)]):'null')+_0x56607c(0x227)+(_0x48525f[_0x56607c(0x2d2)]?JSON['stringify'](_0x48525f['adjustConfig']):'null')+',\x0a\x20\x20\x20\x20\x20\x20workflowConfig:\x20'+(_0x48525f['workflow']?JSON[_0x56607c(0x2c4)](_0x48525f['workflow']):_0x25015c['ASYgM'])+_0x56607c(0x1a0)+(_0x48525f[_0x56607c(0x26b)]?JSON[_0x56607c(0x2c4)](_0x48525f[_0x56607c(0x26b)]):_0x25015c['ASYgM'])+_0x56607c(0x1b7)+(_0x48525f[_0x56607c(0x1a8)]?JSON['stringify'](_0x48525f[_0x56607c(0x1a8)]):_0x25015c[_0x56607c(0x277)])+'\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'+_0x177107+'/'+_0x22fd89+_0x56607c(0x2f1)+_0x177107+'/'+_0x22fd89+_0x56607c(0x316)+_0x177107+'/'+_0x22fd89+'\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'+_0x177107+'/'+_0x22fd89+',\x20running\x20without\x20events`);\x0a}\x0a\x0a/**\x0a\x20*\x20'+_0x10c28d+'\x20Submodule\x20-\x20Auto-generated\x20on\x20'+_0xad9e97+'\x0a\x20*\x0a\x20*\x20Endpoints\x20untuk\x20'+_0x22fd89+'\x20dengan\x20actions:\x20'+_0x25015c[_0x56607c(0x32a)](getEnabledActions,_0x48525f)['join'](',\x20')+'\x0a\x20*\x20Table:\x20'+_0x48525f[_0x56607c(0x1e9)]+'\x0a\x20*\x20Fields:\x20'+(_0x48525f[_0x56607c(0x2cc)]?_0x48525f[_0x56607c(0x2cc)][_0x56607c(0x302)]:0x0)+'\x20fields\x0a\x20*\x20Database:\x20PostgreSQL\x0a\x20*/\x0a\x0a//\x20CORS\x20ditangani\x20di\x20level\x20app\x20oleh\x20cors\x20middleware\x20(lihat\x20konfigurasi\x20CORS_ENABLED\x20dan\x20CORS_ORIGINS\x20di\x20.env)\x0a\x0a\x0a\x0a//\x20Middleware\x20untuk\x20validasi\x20payload\x20pada\x20metode\x20POST\x0arouter.use((req,\x20res,\x20next)\x20=>\x20{\x0a\x20\x20if\x20(req.method\x20===\x20\x27POST\x27)\x20{\x0a\x20\x20\x20\x20try\x20{\x0a\x20\x20\x20\x20\x20\x20//\x20Skip\x20validation\x20untuk\x20import\x20routes\x20(menggunakan\x20multipart/form-data,\x20bukan\x20JSON)\x0a\x20\x20\x20\x20\x20\x20if\x20(req.path.startsWith(\x27/import-\x27))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20next();\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20//\x20Validasi\x20umum\x20untuk\x20payload\x0a\x20\x20\x20\x20\x20\x20if\x20(!req.body\x20||\x20Object.keys(req.body).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\x27Missing\x20payload\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20message:\x20\x27Payload\x20cannot\x20be\x20empty\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20endpoint:\x20\x27/api/'+_0x177107+'/'+_0x22fd89+'\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'+(_0x48525f['fieldValidation']?JSON['stringify'](_0x48525f[_0x56607c(0x1bb)]['filter'](_0x301455=>_0x301455[_0x56607c(0x30e)]&&_0x301455[_0x56607c(0x30e)]['autoGenerate'])[_0x56607c(0x1c1)](_0x24e56a=>_0x24e56a[_0x56607c(0x249)])):'[]')+_0x56607c(0x32f)+_0x48525f[_0x56607c(0x2cc)][_0x56607c(0x253)](_0x236ef7=>_0x236ef7!=='id')[_0x56607c(0x38d)](0x0,0x1)['join'](_0x25015c['yZAsx'])+'\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'+(_0x48525f[_0x56607c(0x33a)]||'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'+_0x25015c[_0x56607c(0x25c)](buildRequestScopeMiddleware,_0x48525f,_0x22fd89)+buildSoftDeleteReadMiddleware(_0x48525f)+'\x0a'+_0x44b3f0+'\x0a\x0a'+(_0x25015c['vROGc'](_0x48525f['action']?.[_0x56607c(0x36f)],![])?'//\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':!!_0x48525f['action']?.[_0x56607c(0x2be)],'read':!!_0x48525f['action']?.['read'],'first':!!_0x48525f['action']?.[_0x56607c(0x290)],'create':!!_0x48525f[_0x56607c(0x30a)]?.['create'],'update':!!_0x48525f['action']?.[_0x56607c(0x34e)],'delete':!!_0x48525f['action']?.['delete'],'lookup':!!_0x48525f[_0x56607c(0x30a)]?.['lookup'],'export':!!_0x48525f['action']?.[_0x56607c(0x35d)],'import':!!_0x48525f['action']?.[_0x56607c(0x391)],'workflow':!!_0x48525f['action']?.[_0x56607c(0x2b1)],'info':_0x25015c['vROGc'](_0x48525f['action']?.[_0x56607c(0x36f)],![])})+_0x56607c(0x357)+_0x3ea061+'.getModelInfo(actions);\x0a\x0a\x20\x20\x20\x20res.json({\x0a\x20\x20\x20\x20\x20\x20success:\x20true,\x0a\x20\x20\x20\x20\x20\x20endpoint:\x20\x27'+_0x22fd89+'\x27,\x0a\x20\x20\x20\x20\x20\x20module:\x20\x27'+_0x177107+'\x27,\x0a\x20\x20\x20\x20\x20\x20table:\x20modelInfo.table,\x0a\x20\x20\x20\x20\x20\x20fields:\x20modelInfo.fields,\x0a\x20\x20\x20\x20\x20\x20querySources:\x20modelInfo.querySources,\x0a\x20\x20\x20\x20\x20\x20actions:\x20actions,\x0a\x20\x20\x20\x20\x20\x20databaseType:\x20\x27postgres\x27,\x0a\x20\x20\x20\x20\x20\x20generated:\x20\x27'+_0xad9e97+'\x27,\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\x20in\x20'+_0x22fd89+_0x56607c(0x197):_0x25015c[_0x56607c(0x1fe)])+'\x0a\x0a//\x20Health\x20check\x20endpoint\x0arouter.get(\x27/health\x27,\x20(req,\x20res)\x20=>\x20{\x0a\x20\x20res.json({\x0a\x20\x20\x20\x20status:\x20\x27ok\x27,\x0a\x20\x20\x20\x20endpoint:\x20\x27'+_0x22fd89+'\x27,\x0a\x20\x20\x20\x20timestamp:\x20new\x20Date().toISOString()\x0a\x20\x20});\x0a});\x0a\x0amodule.exports\x20=\x20router;';}function createPostgresMainModuleTemplate(_0x371eec){const _0x297bec=a0_0x1db3,_0x32eebf=FileUtils['toPascalCase'](_0x371eec),_0x56d36d=FileUtils['toCamelCase'](_0x371eec),_0x346cb2=new Date()['toISOString']()['replace']('T','\x20')['replace'](/\.\d{3}Z$/,'');return _0x297bec(0x349)+_0x32eebf+'\x20Module\x20-\x20Auto-generated\x20on\x20'+_0x346cb2+'\x0a\x20*\x0a\x20*\x20Fungsi\x20untuk\x20mengeksekusi\x20modul\x20'+_0x371eec+_0x297bec(0x1f6)+_0x32eebf+'\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'+_0x371eec+'\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'+_0x371eec+_0x297bec(0x19d)+_0x371eec+'/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'+_0x371eec+'\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/'+_0x371eec+'/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'+_0x32eebf+_0x297bec(0x2b7)+_0x371eec+_0x297bec(0x2c0)+_0x346cb2+'\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'+_0x371eec+'\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20path.join(workingDir,\x20\x27'+_0x371eec+_0x297bec(0x309)+_0x371eec+_0x297bec(0x267)+_0x371eec+'\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'+_0x371eec+_0x297bec(0x26d)+_0x371eec+'\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'+_0x371eec+_0x297bec(0x353)+_0x371eec+_0x297bec(0x27f)+_0x371eec+_0x297bec(0x25d)+_0x56d36d+'\x20=\x20{\x20execute\x20};\x0amodule.exports.moduleName\x20=\x20\x27'+_0x371eec+'\x27;\x0amodule.exports.generated\x20=\x20\x27'+_0x346cb2+'\x27;';}module[a0_0x983774(0x37a)]={'createPostgresModelTemplate':createPostgresModelTemplate,'createPostgresSubmoduleTemplate':createPostgresSubmoduleTemplate,'createPostgresMainModuleTemplate':createPostgresMainModuleTemplate};
|