@researchdatabox/redbox-core 5.1.0-beta.12573 → 5.1.0-beta.13939
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/browser/redoc-library-loader.cjs +20 -0
- package/browser/redoc-standalone.js +143 -0
- package/dist/CoreBase.d.ts +43 -0
- package/dist/CoreBase.d.ts.map +1 -0
- package/dist/CoreBase.js +101 -0
- package/dist/CoreController.d.ts +23 -31
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +142 -131
- package/dist/CoreService.d.ts +13 -33
- package/dist/CoreService.d.ts.map +1 -1
- package/dist/CoreService.js +69 -95
- package/dist/HarvestRunService.d.ts +9 -1
- package/dist/HarvestRunService.d.ts.map +1 -1
- package/dist/HarvestRunService.js +1 -1
- package/dist/RecordRouteForm.d.ts +49 -0
- package/dist/RecordRouteForm.d.ts.map +1 -0
- package/dist/RecordRouteForm.js +188 -0
- package/dist/RecordSaveResponse.d.ts +4 -0
- package/dist/RecordSaveResponse.d.ts.map +1 -1
- package/dist/RecordSaveResponse.js +3 -2
- package/dist/action-execution/executor.d.ts +1 -1
- package/dist/action-execution/executor.d.ts.map +1 -1
- package/dist/action-execution/executor.js +19 -20
- package/dist/action-execution/legacy-result.d.ts +1 -1
- package/dist/action-execution/legacy-result.d.ts.map +1 -1
- package/dist/action-execution/legacy-result.js +43 -10
- package/dist/action-execution/types.d.ts +3 -3
- package/dist/action-execution/types.d.ts.map +1 -1
- package/dist/api-routes/groups/harvest-runs.d.ts +1 -0
- package/dist/api-routes/groups/harvest-runs.d.ts.map +1 -1
- package/dist/api-routes/groups/harvest-runs.js +24 -3
- package/dist/api-routes/groups/records.d.ts.map +1 -1
- package/dist/api-routes/groups/records.js +30 -21
- package/dist/api-routes/groups/reports.d.ts.map +1 -1
- package/dist/api-routes/groups/reports.js +3 -2
- package/dist/api-routes/helpers.d.ts +1 -1
- package/dist/api-routes/helpers.d.ts.map +1 -1
- package/dist/api-routes/helpers.js +10 -6
- package/dist/api-routes/openapi.d.ts.map +1 -1
- package/dist/api-routes/openapi.js +15 -1
- package/dist/api-routes/request-extraction.js +2 -2
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +7 -2
- package/dist/api-routes/schemas/responses.d.ts +38 -12
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +11 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +13 -3
- package/dist/config/agendaQueue.config.d.ts +5 -0
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +29 -2
- package/dist/config/appConfigSecrets.config.d.ts +14 -0
- package/dist/config/appConfigSecrets.config.d.ts.map +1 -0
- package/dist/config/appConfigSecrets.config.js +8 -0
- package/dist/config/brandingConfigurationDefaults.config.d.ts +16 -3
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +1 -1
- package/dist/config/dompurify.config.d.ts.map +1 -1
- package/dist/config/dompurify.config.js +3 -2
- package/dist/config/harvestRuns.config.d.ts +7 -0
- package/dist/config/harvestRuns.config.d.ts.map +1 -1
- package/dist/config/harvestRuns.config.js +2 -1
- package/dist/config/http.config.d.ts +3 -2
- package/dist/config/http.config.d.ts.map +1 -1
- package/dist/config/http.config.js +108 -12
- package/dist/config/i18n.config.d.ts +3 -0
- package/dist/config/i18n.config.d.ts.map +1 -1
- package/dist/config/i18n.config.js +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -1
- package/dist/config/log.config.d.ts +33 -5
- package/dist/config/log.config.d.ts.map +1 -1
- package/dist/config/log.config.js +58 -54
- package/dist/config/record.config.d.ts +17 -0
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +7 -1
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +11 -2
- package/dist/config/session.config.d.ts +2 -2
- package/dist/config/session.config.d.ts.map +1 -1
- package/dist/config/solr.config.d.ts +8 -0
- package/dist/config/solr.config.d.ts.map +1 -1
- package/dist/config/solr.config.js +15 -2
- package/dist/config/storage.config.d.ts.map +1 -1
- package/dist/config/storage.config.js +9 -1
- package/dist/config/vocab.config.d.ts +1 -0
- package/dist/config/vocab.config.d.ts.map +1 -1
- package/dist/config/vocab.config.js +3 -3
- package/dist/config/webpack.config.d.ts.map +1 -1
- package/dist/config/webpack.config.js +23 -5
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +3 -2
- package/dist/configmodels/FigsharePublishing.d.ts +1 -1
- package/dist/controllers/ActionController.d.ts.map +1 -1
- package/dist/controllers/ActionController.js +8 -2
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +21 -2
- package/dist/controllers/DynamicAssetController.d.ts +9 -10
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +67 -53
- package/dist/controllers/EmailController.d.ts.map +1 -1
- package/dist/controllers/EmailController.js +32 -14
- package/dist/controllers/ExportController.d.ts +9 -0
- package/dist/controllers/ExportController.d.ts.map +1 -1
- package/dist/controllers/ExportController.js +154 -3
- package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
- package/dist/controllers/FormVocabularyController.js +62 -33
- package/dist/controllers/RecordAuditController.d.ts.map +1 -1
- package/dist/controllers/RecordAuditController.js +4 -2
- package/dist/controllers/RecordController.d.ts +4 -1
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +248 -114
- package/dist/controllers/ReportController.d.ts +1 -0
- package/dist/controllers/ReportController.d.ts.map +1 -1
- package/dist/controllers/ReportController.js +40 -12
- package/dist/controllers/TranslationController.d.ts.map +1 -1
- package/dist/controllers/TranslationController.js +56 -16
- package/dist/controllers/UserController.d.ts +3 -1
- package/dist/controllers/UserController.d.ts.map +1 -1
- package/dist/controllers/UserController.js +178 -76
- package/dist/controllers/VocabularyController.d.ts +0 -1
- package/dist/controllers/VocabularyController.d.ts.map +1 -1
- package/dist/controllers/VocabularyController.js +18 -16
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
- package/dist/controllers/webservice/AdminController.js +2 -5
- package/dist/controllers/webservice/HarvestRunController.d.ts +1 -0
- package/dist/controllers/webservice/HarvestRunController.d.ts.map +1 -1
- package/dist/controllers/webservice/HarvestRunController.js +46 -2
- package/dist/controllers/webservice/IntegrationAuditController.d.ts +0 -1
- package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
- package/dist/controllers/webservice/IntegrationAuditController.js +13 -6
- package/dist/controllers/webservice/RecordController.d.ts +1 -1
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +13 -4
- package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
- package/dist/controllers/webservice/ReportController.js +15 -10
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/UserManagementController.js +17 -8
- package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
- package/dist/controllers/webservice/VocabularyController.js +19 -13
- package/dist/form-config/generated-view-only.d.ts.map +1 -1
- package/dist/form-config/generated-view-only.js +12 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/loader/index.d.ts +1 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +56 -11
- package/dist/middleware/redboxSession.d.ts.map +1 -1
- package/dist/middleware/redboxSession.js +15 -3
- package/dist/middleware/requestChronicle.d.ts +14 -0
- package/dist/middleware/requestChronicle.d.ts.map +1 -0
- package/dist/middleware/requestChronicle.js +73 -0
- package/dist/model/BuildResponse.d.ts +7 -5
- package/dist/model/BuildResponse.d.ts.map +1 -1
- package/dist/model/RBValidationError.d.ts +18 -5
- package/dist/model/RBValidationError.d.ts.map +1 -1
- package/dist/model/RBValidationError.js +56 -17
- package/dist/model/storage/ExportJobModel.d.ts +33 -0
- package/dist/model/storage/ExportJobModel.d.ts.map +1 -0
- package/dist/model/storage/ExportJobModel.js +3 -0
- package/dist/model/storage/HarvestRunModel.d.ts +20 -0
- package/dist/model/storage/HarvestRunModel.d.ts.map +1 -1
- package/dist/model/storage/HarvestRunModel.js +2 -1
- package/dist/model/storage/index.d.ts +2 -1
- package/dist/model/storage/index.d.ts.map +1 -1
- package/dist/model/storage/index.js +1 -1
- package/dist/policies/checkAuth.d.ts.map +1 -1
- package/dist/policies/checkAuth.js +3 -2
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
- package/dist/policies/contentSecurityPolicy.js +7 -2
- package/dist/policies/noCache.d.ts.map +1 -1
- package/dist/policies/noCache.js +4 -3
- package/dist/record-contract/record-contract-compiler.d.ts.map +1 -1
- package/dist/record-contract/record-contract-compiler.js +3 -19
- package/dist/record-contract/record-contract-context.d.ts +2 -0
- package/dist/record-contract/record-contract-context.d.ts.map +1 -1
- package/dist/record-contract/record-contract-context.js +1 -1
- package/dist/responses/notFound.d.ts.map +1 -1
- package/dist/responses/notFound.js +6 -1
- package/dist/responses/serverError.d.ts.map +1 -1
- package/dist/responses/serverError.js +13 -3
- package/dist/sails.d.ts +27 -17
- package/dist/sails.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.d.ts +11 -2
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +163 -51
- package/dist/services/AppConfigSecrets.d.ts +66 -0
- package/dist/services/AppConfigSecrets.d.ts.map +1 -0
- package/dist/services/AppConfigSecrets.js +396 -0
- package/dist/services/AppConfigService.d.ts +16 -1
- package/dist/services/AppConfigService.d.ts.map +1 -1
- package/dist/services/AppConfigService.js +283 -33
- package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
- package/dist/services/BrandingThemeCssService.js +32 -3
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
- package/dist/services/BrandingThemeTokens.js +10 -1
- package/dist/services/ConfigService.d.ts +1 -0
- package/dist/services/ConfigService.d.ts.map +1 -1
- package/dist/services/ConfigService.js +24 -9
- package/dist/services/DomSanitizerService.d.ts.map +1 -1
- package/dist/services/DomSanitizerService.js +19 -6
- package/dist/services/EmailService.d.ts +10 -2
- package/dist/services/EmailService.d.ts.map +1 -1
- package/dist/services/EmailService.js +53 -53
- package/dist/services/ExportService.d.ts +62 -0
- package/dist/services/ExportService.d.ts.map +1 -0
- package/dist/services/ExportService.js +609 -0
- package/dist/services/FormVocabularyService.d.ts.map +1 -1
- package/dist/services/FormVocabularyService.js +14 -4
- package/dist/services/FormsService.d.ts +3 -0
- package/dist/services/FormsService.d.ts.map +1 -1
- package/dist/services/FormsService.js +10 -3
- package/dist/services/HarvestRunService.d.ts +23 -1
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +155 -22
- package/dist/services/I18nEntriesService.d.ts +5 -0
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +55 -3
- package/dist/services/NamedQueryService.d.ts +1 -0
- package/dist/services/NamedQueryService.d.ts.map +1 -1
- package/dist/services/NamedQueryService.js +67 -31
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +69 -83
- package/dist/services/RaidService.d.ts.map +1 -1
- package/dist/services/RaidService.js +45 -11
- package/dist/services/RecordSchemaService.d.ts +3 -1
- package/dist/services/RecordSchemaService.d.ts.map +1 -1
- package/dist/services/RecordSchemaService.js +2 -1
- package/dist/services/RecordValidationService.d.ts +3 -0
- package/dist/services/RecordValidationService.d.ts.map +1 -1
- package/dist/services/RecordValidationService.js +25 -5
- package/dist/services/RecordsService.d.ts +10 -1
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +194 -93
- package/dist/services/ReportsService.d.ts +1 -0
- package/dist/services/ReportsService.d.ts.map +1 -1
- package/dist/services/ReportsService.js +10 -9
- package/dist/services/RvaImportService.d.ts.map +1 -1
- package/dist/services/RvaImportService.js +6 -5
- package/dist/services/SolrSearchService.d.ts +7 -2
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +205 -81
- package/dist/services/StorageManagerService.d.ts +5 -0
- package/dist/services/StorageManagerService.d.ts.map +1 -1
- package/dist/services/StorageManagerService.js +4 -1
- package/dist/services/TriggerService.d.ts.map +1 -1
- package/dist/services/TriggerService.js +64 -56
- package/dist/services/UsersService.d.ts +13 -1
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +191 -257
- package/dist/services/VocabularyService.d.ts +11 -1
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +120 -24
- package/dist/services/doi-v2/http.d.ts +3 -2
- package/dist/services/doi-v2/http.d.ts.map +1 -1
- package/dist/services/doi-v2/http.js +38 -4
- package/dist/services/doi-v2/runtime.d.ts +4 -3
- package/dist/services/doi-v2/runtime.d.ts.map +1 -1
- package/dist/services/doi-v2/runtime.js +52 -17
- package/dist/services/figshare-v2/assets.d.ts +1 -1
- package/dist/services/figshare-v2/assets.d.ts.map +1 -1
- package/dist/services/figshare-v2/assets.js +1 -1
- package/dist/services/figshare-v2/http.d.ts +3 -2
- package/dist/services/figshare-v2/http.d.ts.map +1 -1
- package/dist/services/figshare-v2/http.js +38 -4
- package/dist/services/figshare-v2/observability.d.ts.map +1 -1
- package/dist/services/figshare-v2/observability.js +3 -3
- package/dist/services/figshare-v2/runtime.d.ts +4 -3
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +48 -13
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +8 -3
- package/dist/services/integration-v2/runtime.d.ts +1 -1
- package/dist/services/integration-v2/runtime.d.ts.map +1 -1
- package/dist/services/integration-v2/runtime.js +7 -7
- package/dist/services/oni-v2/audit.d.ts +3 -2
- package/dist/services/oni-v2/audit.d.ts.map +1 -1
- package/dist/services/oni-v2/audit.js +38 -4
- package/dist/services/oni-v2/bindings.d.ts +1 -1
- package/dist/services/oni-v2/bindings.d.ts.map +1 -1
- package/dist/services/oni-v2/bindings.js +37 -4
- package/dist/services/oni-v2/repository.d.ts +3 -2
- package/dist/services/oni-v2/repository.d.ts.map +1 -1
- package/dist/services/oni-v2/repository.js +42 -7
- package/dist/services/oni-v2/runtime.d.ts +5 -4
- package/dist/services/oni-v2/runtime.d.ts.map +1 -1
- package/dist/services/oni-v2/runtime.js +57 -19
- package/dist/services/oni-v2/templating.d.ts +4 -2
- package/dist/services/oni-v2/templating.d.ts.map +1 -1
- package/dist/services/oni-v2/templating.js +42 -7
- package/dist/services/raid-v2/audit.d.ts +1 -1
- package/dist/services/raid-v2/audit.d.ts.map +1 -1
- package/dist/services/raid-v2/audit.js +39 -5
- package/dist/services/raid-v2/errors.d.ts +9 -9
- package/dist/services/raid-v2/errors.js +44 -11
- package/dist/services/raid-v2/http.d.ts +1 -1
- package/dist/services/raid-v2/http.d.ts.map +1 -1
- package/dist/services/raid-v2/http.js +42 -8
- package/dist/services/raid-v2/logger.d.ts +1 -1
- package/dist/services/raid-v2/logger.d.ts.map +1 -1
- package/dist/services/raid-v2/logger.js +42 -8
- package/dist/services/raid-v2/mapping.d.ts +1 -1
- package/dist/services/raid-v2/mapping.d.ts.map +1 -1
- package/dist/services/raid-v2/mapping.js +41 -7
- package/dist/services/raid-v2/runtime.d.ts +1 -1
- package/dist/services/raid-v2/runtime.d.ts.map +1 -1
- package/dist/services/raid-v2/runtime.js +76 -34
- package/dist/services/raid-v2/tags.d.ts +8 -8
- package/dist/services/raid-v2/tags.d.ts.map +1 -1
- package/dist/services/raid-v2/tags.js +42 -9
- package/dist/services/record-hooks/coordinator.d.ts +11 -0
- package/dist/services/record-hooks/coordinator.d.ts.map +1 -1
- package/dist/services/record-hooks/coordinator.js +70 -6
- package/dist/storage/GridFSDriver.d.ts +16 -9
- package/dist/storage/GridFSDriver.d.ts.map +1 -1
- package/dist/storage/GridFSDriver.js +87 -33
- package/dist/storage/TusStorageManagerDataStore.d.ts +11 -1
- package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
- package/dist/storage/TusStorageManagerDataStore.js +190 -56
- package/dist/utilities/HarvestHistoryRetention.d.ts +17 -0
- package/dist/utilities/HarvestHistoryRetention.d.ts.map +1 -0
- package/dist/utilities/HarvestHistoryRetention.js +141 -0
- package/dist/utilities/HarvestRunIndexes.d.ts +12 -0
- package/dist/utilities/HarvestRunIndexes.d.ts.map +1 -0
- package/dist/utilities/HarvestRunIndexes.js +84 -0
- package/dist/utilities/PinoLoggerUtils.d.ts +9 -0
- package/dist/utilities/PinoLoggerUtils.d.ts.map +1 -0
- package/dist/utilities/PinoLoggerUtils.js +17 -0
- package/dist/utilities/RequestChronicle.d.ts +221 -0
- package/dist/utilities/RequestChronicle.d.ts.map +1 -0
- package/dist/utilities/RequestChronicle.js +770 -0
- package/dist/utilities/RequestChronicleContext.d.ts +6 -0
- package/dist/utilities/RequestChronicleContext.d.ts.map +1 -0
- package/dist/utilities/RequestChronicleContext.js +19 -0
- package/dist/utilities/RequestChronicleSettings.d.ts +29 -0
- package/dist/utilities/RequestChronicleSettings.d.ts.map +1 -0
- package/dist/utilities/RequestChronicleSettings.js +31 -0
- package/dist/utilities/TransactionUtils.d.ts +2 -1
- package/dist/utilities/TransactionUtils.d.ts.map +1 -1
- package/dist/utilities/TransactionUtils.js +1 -1
- package/dist/utilities/TranslationHtml.d.ts.map +1 -1
- package/dist/utilities/TranslationHtml.js +13 -5
- package/dist/utilities/VocabularyAdminAccess.d.ts +10 -0
- package/dist/utilities/VocabularyAdminAccess.d.ts.map +1 -0
- package/dist/utilities/VocabularyAdminAccess.js +42 -0
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +7 -2
- package/dist/visitor/context-variables.visitor.d.ts +1 -2
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
- package/dist/visitor/context-variables.visitor.js +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +5 -1
- package/dist/visitor/related-object-data-inline.visitor.d.ts +1 -1
- package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -1
- package/dist/visitor/related-object-data-inline.visitor.js +57 -23
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +4 -2
- package/dist/visitor/visitor-helpers.js +3 -3
- package/dist/visitor/vocab-inline.visitor.d.ts +1 -2
- package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
- package/dist/visitor/vocab-inline.visitor.js +1 -1
- package/dist/waterline-models/ExportJob.d.ts +38 -0
- package/dist/waterline-models/ExportJob.d.ts.map +1 -0
- package/dist/waterline-models/ExportJob.js +148 -0
- package/dist/waterline-models/HarvestRecordEvent.d.ts.map +1 -1
- package/dist/waterline-models/HarvestRecordEvent.js +3 -9
- package/dist/waterline-models/HarvestRun.d.ts +5 -1
- package/dist/waterline-models/HarvestRun.d.ts.map +1 -1
- package/dist/waterline-models/HarvestRun.js +13 -7
- package/dist/waterline-models/HarvestRunChunk.d.ts.map +1 -1
- package/dist/waterline-models/HarvestRunChunk.js +3 -7
- package/dist/waterline-models/User.d.ts +2 -2
- package/dist/waterline-models/User.d.ts.map +1 -1
- package/dist/waterline-models/User.js +3 -3
- package/dist/waterline-models/index.d.ts +2 -0
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +4 -1
- package/logfmt-transport.cjs +59 -0
- package/package.json +76 -45
- package/dist/Logger.d.ts +0 -16
- package/dist/Logger.d.ts.map +0 -1
- package/dist/Logger.js +0 -3
package/dist/CoreController.js
CHANGED
|
@@ -43,6 +43,8 @@ const siteTitle_1 = require("./responses/siteTitle");
|
|
|
43
43
|
const terminalErrorFallback_1 = require("./responses/terminalErrorFallback");
|
|
44
44
|
const hookResources_1 = require("./hooks/hookResources");
|
|
45
45
|
const model_1 = require("./model");
|
|
46
|
+
const RequestChronicle_1 = require("./utilities/RequestChronicle");
|
|
47
|
+
const CoreBase_1 = require("./CoreBase");
|
|
46
48
|
var Controllers;
|
|
47
49
|
(function (Controllers) {
|
|
48
50
|
var Core;
|
|
@@ -66,17 +68,13 @@ var Controllers;
|
|
|
66
68
|
* @remarks Use `sendResp` for responses so API versioning and the standard response envelope remain consistent.
|
|
67
69
|
* @see https://github.com/redbox-mint/redbox-portal/wiki/Redbox-Loader
|
|
68
70
|
*/
|
|
69
|
-
class Controller {
|
|
71
|
+
class Controller extends CoreBase_1.CoreBase {
|
|
70
72
|
/**
|
|
71
73
|
* Overrides for the settings in `config/controllers.js`
|
|
72
74
|
* (specific to the controller where it's defined)
|
|
73
75
|
* Specific to sails. Don't rename.
|
|
74
76
|
*/
|
|
75
77
|
_config = {};
|
|
76
|
-
/**
|
|
77
|
-
* Exported methods. Must be overridden by the child to add custom methods.
|
|
78
|
-
*/
|
|
79
|
-
_exportedMethods = [];
|
|
80
78
|
/**
|
|
81
79
|
* Theme used by the controller by default.
|
|
82
80
|
* Could be overridden by the user theme. (One day, when the feature will be done...)
|
|
@@ -98,86 +96,7 @@ var Controllers;
|
|
|
98
96
|
// Sails controller custom config.
|
|
99
97
|
'_config',
|
|
100
98
|
];
|
|
101
|
-
|
|
102
|
-
_logger = null;
|
|
103
|
-
getFallbackLogger() {
|
|
104
|
-
const log = (...args) => console.log(...args);
|
|
105
|
-
const noop = () => undefined;
|
|
106
|
-
return {
|
|
107
|
-
silly: log,
|
|
108
|
-
verbose: log,
|
|
109
|
-
trace: (...args) => console.trace(...args),
|
|
110
|
-
debug: (...args) => console.debug(...args),
|
|
111
|
-
log: (...args) => console.log(...args),
|
|
112
|
-
info: (...args) => console.info(...args),
|
|
113
|
-
warn: (...args) => console.warn(...args),
|
|
114
|
-
error: (...args) => console.error(...args),
|
|
115
|
-
crit: (...args) => console.error(...args),
|
|
116
|
-
fatal: (...args) => console.error(...args),
|
|
117
|
-
silent: noop,
|
|
118
|
-
blank: () => console.log(''),
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get a namespaced logger for this controller class.
|
|
123
|
-
* Uses the class constructor name as the namespace.
|
|
124
|
-
* Falls back to sails.log if pino namespaced logging is not available.
|
|
125
|
-
*/
|
|
126
|
-
get logger() {
|
|
127
|
-
if (typeof sails === 'undefined') {
|
|
128
|
-
return this.getFallbackLogger();
|
|
129
|
-
}
|
|
130
|
-
if (this._logger === null && sails?.config?.log?.createNamespaceLogger && sails?.config?.log?.customLogger) {
|
|
131
|
-
const controllerName = this.constructor.name + 'Controller';
|
|
132
|
-
this._logger = sails.config.log.createNamespaceLogger(controllerName, sails.config.log.customLogger);
|
|
133
|
-
}
|
|
134
|
-
if (this._logger !== null) {
|
|
135
|
-
return this._logger;
|
|
136
|
-
}
|
|
137
|
-
const sailsLogger = sails?.log;
|
|
138
|
-
if (sailsLogger && typeof sailsLogger.verbose === 'function') {
|
|
139
|
-
return sailsLogger;
|
|
140
|
-
}
|
|
141
|
-
// Prefer _logger, then sails.log; cast sails.log to ILogger since it implements all required methods
|
|
142
|
-
return this.getFallbackLogger();
|
|
143
|
-
}
|
|
144
|
-
registerSailsHook(action, eventName, handler) {
|
|
145
|
-
if (typeof sails === 'undefined') {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
if (action === 'on') {
|
|
149
|
-
if (typeof sails.on !== 'function') {
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
sails.on(eventName, handler);
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
if (typeof sails.after !== 'function') {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
sails.after(eventName, handler);
|
|
159
|
-
return true;
|
|
160
|
-
}
|
|
161
|
-
constructor() {
|
|
162
|
-
this.processDynamicImports().then(() => {
|
|
163
|
-
this.logger.verbose("Dynamic imports imported");
|
|
164
|
-
this.onDynamicImportsCompleted();
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Function that allows async dynamic imports of modules (such as ECMAScript modules).
|
|
169
|
-
* Called in the constructor and intended to be overridden in sub class to allow imports.
|
|
170
|
-
*/
|
|
171
|
-
async processDynamicImports() {
|
|
172
|
-
// Override in sub class as needed
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Function that is called during the construction of the Controller after the dynamic imports are completed.
|
|
176
|
-
* Intended to be overridden in the sub class
|
|
177
|
-
*/
|
|
178
|
-
onDynamicImportsCompleted() {
|
|
179
|
-
// Override in sub class as needed
|
|
180
|
-
}
|
|
99
|
+
_loggerNamespaceSuffix = 'Controller';
|
|
181
100
|
/**
|
|
182
101
|
**************************************************************************************************
|
|
183
102
|
**************************************** Public methods ******************************************
|
|
@@ -265,8 +184,7 @@ var Controllers;
|
|
|
265
184
|
});
|
|
266
185
|
}
|
|
267
186
|
resolveViewCandidate(viewPath) {
|
|
268
|
-
return (0, hookResources_1.resolveHookViewFile)(sails.config.appPath, viewPath)
|
|
269
|
-
?? this.resolveCoreViewFile(viewPath);
|
|
187
|
+
return (0, hookResources_1.resolveHookViewFile)(sails.config.appPath, viewPath) ?? this.resolveCoreViewFile(viewPath);
|
|
270
188
|
}
|
|
271
189
|
resolveViewFile(branding, portal, view) {
|
|
272
190
|
const candidates = [
|
|
@@ -378,10 +296,10 @@ var Controllers;
|
|
|
378
296
|
}
|
|
379
297
|
// If we can resolve a layout set it explicitly for ejs-locals. Sails' built-in
|
|
380
298
|
// layout calculation assumes one app views root, but hook views live elsewhere.
|
|
381
|
-
if (resolvedLayout !== null && mergedLocal[
|
|
382
|
-
mergedLocal[
|
|
383
|
-
mergedLocal[
|
|
384
|
-
mergedLocal[
|
|
299
|
+
if (resolvedLayout !== null && mergedLocal['layout'] !== false) {
|
|
300
|
+
mergedLocal['_layoutFile'] = path_1.default.relative(path_1.default.dirname(resolvedView.absolutePath), resolvedLayout.absolutePath);
|
|
301
|
+
mergedLocal['layout'] = false;
|
|
302
|
+
mergedLocal['layoutDirectoryLocation'] = `${path_1.default.dirname(resolvedLayout.absolutePath)}${path_1.default.sep}`;
|
|
385
303
|
}
|
|
386
304
|
// Add some properties blueprints usually adds
|
|
387
305
|
// TODO: Doesn't seem to be binding properly. Investigate
|
|
@@ -397,10 +315,8 @@ var Controllers;
|
|
|
397
315
|
this.getCoreMirrorDirectory(resolvedView),
|
|
398
316
|
...(resolvedLayout ? [this.getCoreMirrorDirectory(resolvedLayout)] : []),
|
|
399
317
|
]));
|
|
400
|
-
|
|
401
|
-
this.
|
|
402
|
-
// this.logger.debug("mergedLocal");
|
|
403
|
-
// this.logger.debug(mergedLocal);
|
|
318
|
+
// The merged locals are too large to record; the view path identifies what was rendered.
|
|
319
|
+
this.updateChronicle(req, { view: sailsViewPath });
|
|
404
320
|
res.view(this.getRenderViewPath(resolvedView), mergedLocal);
|
|
405
321
|
}
|
|
406
322
|
getSiteTitle(locals) {
|
|
@@ -466,10 +382,12 @@ var Controllers;
|
|
|
466
382
|
* @deprecated Use `sendResp` instead.
|
|
467
383
|
*/
|
|
468
384
|
apiFail(req, res, statusCode = 500, errorResponse) {
|
|
469
|
-
const displayErrors = [
|
|
385
|
+
const displayErrors = [
|
|
386
|
+
{
|
|
470
387
|
title: errorResponse?.message ?? 'An error has occurred',
|
|
471
|
-
detail: errorResponse?.details
|
|
472
|
-
}
|
|
388
|
+
detail: errorResponse?.details,
|
|
389
|
+
},
|
|
390
|
+
];
|
|
473
391
|
return this.sendResp(req, res, { status: statusCode, displayErrors, headers: this.getNoCacheHeaders() });
|
|
474
392
|
}
|
|
475
393
|
/**
|
|
@@ -509,13 +427,16 @@ var Controllers;
|
|
|
509
427
|
getApiVersion(req) {
|
|
510
428
|
const defaultVersion = model_1.ApiVersion.VERSION_1_0;
|
|
511
429
|
const qs = req.query;
|
|
512
|
-
const qsKey =
|
|
430
|
+
const qsKey = 'apiVersion';
|
|
513
431
|
const qsKeyLower = qsKey.toLowerCase();
|
|
514
432
|
const headers = req.headers;
|
|
515
|
-
const headerKey =
|
|
433
|
+
const headerKey = 'X-ReDBox-Api-Version';
|
|
516
434
|
const headerKeyLower = headerKey.toLowerCase();
|
|
517
435
|
const qsValue = (_.get(qs, qsKey) ?? _.get(qs, qsKeyLower))?.toString()?.trim()?.toLowerCase();
|
|
518
|
-
const headerValue = (_.get(headers, headerKey) ?? _.get(headers, headerKeyLower))
|
|
436
|
+
const headerValue = (_.get(headers, headerKey) ?? _.get(headers, headerKeyLower))
|
|
437
|
+
?.toString()
|
|
438
|
+
?.trim()
|
|
439
|
+
?.toLowerCase();
|
|
519
440
|
if (qsValue && headerValue && qsValue !== headerValue) {
|
|
520
441
|
sails.log.error(`If API version is provided in querystring (${qsValue}) and HTTP header (${headerValue}), they must match. ` +
|
|
521
442
|
`Using default API version (${defaultVersion}).`);
|
|
@@ -560,16 +481,35 @@ var Controllers;
|
|
|
560
481
|
sendResp(req, res, buildResponse) {
|
|
561
482
|
const apiVersion = this.getApiVersion(req);
|
|
562
483
|
// Destructure build response properties and set defaults.
|
|
563
|
-
const { format =
|
|
484
|
+
const { format = 'json', data: suppliedData, headers = {}, errors = [], displayErrors = [], meta = {}, prehydrate = undefined, v1 = null, chronicle = {}, } = buildResponse ?? {};
|
|
564
485
|
const data = suppliedData === undefined ? {} : suppliedData;
|
|
565
486
|
// Response status defaults to 200.
|
|
566
487
|
let { status = 200 } = buildResponse ?? {};
|
|
567
488
|
// Collect and process the errors recursively
|
|
568
|
-
const
|
|
489
|
+
const chronicleRunning = RequestChronicle_1.RequestChronicleHelper.existing(req)?.isRunning === true;
|
|
490
|
+
const { collectedErrors, collectedDisplayErrors } = this.collectAndLogErrors(errors, displayErrors, !chronicleRunning);
|
|
569
491
|
this.ensureDisplayErrors(collectedErrors, collectedDisplayErrors);
|
|
570
492
|
status = this.resolveResponseStatus(status, collectedDisplayErrors);
|
|
571
493
|
this.applyResponseHeaders(res, headers);
|
|
572
494
|
this.applyResponseStatus(res, status);
|
|
495
|
+
// Record the errors in the request chronicle, which is logged when the request finishes.
|
|
496
|
+
this.updateChronicle(req, {
|
|
497
|
+
...chronicle,
|
|
498
|
+
...(collectedDisplayErrors.length > 0
|
|
499
|
+
? {
|
|
500
|
+
// Slice before mapping, as the array may be large; the count is kept.
|
|
501
|
+
displayErrorCount: collectedDisplayErrors.length,
|
|
502
|
+
displayErrors: collectedDisplayErrors
|
|
503
|
+
.slice(0, RequestChronicle_1.RequestChronicleLimits.maxArrayItems)
|
|
504
|
+
.map(({ status, code, title, detail }) => ({
|
|
505
|
+
status,
|
|
506
|
+
code,
|
|
507
|
+
title,
|
|
508
|
+
detail,
|
|
509
|
+
})),
|
|
510
|
+
}
|
|
511
|
+
: {}),
|
|
512
|
+
}, chronicleRunning ? collectedErrors : []);
|
|
573
513
|
if (status === 304) {
|
|
574
514
|
sails.log.verbose('Send bodyless 304 response.');
|
|
575
515
|
return res.end();
|
|
@@ -602,20 +542,91 @@ var Controllers;
|
|
|
602
542
|
collectedDisplayErrors,
|
|
603
543
|
},
|
|
604
544
|
};
|
|
605
|
-
sails.log.error(
|
|
606
|
-
return res.status(500).json({ errors: [{ detail:
|
|
545
|
+
sails.log.error('Unknown API version in sendResp', unknownSituation);
|
|
546
|
+
return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: {} });
|
|
607
547
|
}
|
|
608
|
-
|
|
548
|
+
/**
|
|
549
|
+
* Add details and errors to the request chronicle, which is logged when the request finishes.
|
|
550
|
+
* Values are sanitised and size-bounded, but prefer identifiers, counts, and codes over whole objects.
|
|
551
|
+
* @param req The sails request.
|
|
552
|
+
* @param info The details to add.
|
|
553
|
+
* @param errors The errors to add.
|
|
554
|
+
* @protected
|
|
555
|
+
*/
|
|
556
|
+
updateChronicle(req, info, errors) {
|
|
557
|
+
try {
|
|
558
|
+
const rc = RequestChronicle_1.RequestChronicleHelper.existing(req);
|
|
559
|
+
if (rc === undefined) {
|
|
560
|
+
// No request chronicle (e.g. socket or virtual requests): ignore the details, but don't lose errors.
|
|
561
|
+
for (const error of errors ?? []) {
|
|
562
|
+
sails.log.error((0, RequestChronicle_1.toChronicleLogRecord)({ error: (0, RequestChronicle_1.toChronicleError)(error) }), 'Error recorded without a request chronicle.');
|
|
563
|
+
}
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
rc.addInfo(info ?? {});
|
|
567
|
+
(errors ?? []).forEach(error => rc.addError(error));
|
|
568
|
+
}
|
|
569
|
+
catch {
|
|
570
|
+
try {
|
|
571
|
+
sails.log.warn('Could not update the request chronicle.');
|
|
572
|
+
}
|
|
573
|
+
catch {
|
|
574
|
+
// Recording details must never break the request.
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Record the result of work that is not awaited before the response is sent, such as an audit event.
|
|
580
|
+
* If the work finishes after the response, its result is logged separately with the request id,
|
|
581
|
+
* so failures are never discarded.
|
|
582
|
+
* @param req The sails request.
|
|
583
|
+
* @param operation A short name for the operation, used as the request chronicle key.
|
|
584
|
+
* @param work The work.
|
|
585
|
+
* @protected
|
|
586
|
+
*/
|
|
587
|
+
recordBackgroundOperation(req, operation, work) {
|
|
588
|
+
// Capture the helper now, in case the request options change before the work finishes.
|
|
589
|
+
const rc = RequestChronicle_1.RequestChronicleHelper.existing(req);
|
|
590
|
+
const onResult = (error) => {
|
|
591
|
+
try {
|
|
592
|
+
if (rc !== undefined) {
|
|
593
|
+
rc.addOperationResult(operation, error);
|
|
594
|
+
}
|
|
595
|
+
else if (error !== undefined) {
|
|
596
|
+
const name = (0, RequestChronicle_1.safeChronicleText)(operation, 100);
|
|
597
|
+
sails.log.error((0, RequestChronicle_1.toChronicleLogRecord)({ operation: name, error: (0, RequestChronicle_1.toChronicleError)(error) }), `Operation '${name}' failed.`);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
catch {
|
|
601
|
+
try {
|
|
602
|
+
sails.log.warn('Could not record the result of a background operation.');
|
|
603
|
+
}
|
|
604
|
+
catch {
|
|
605
|
+
// Recording the result must never cause an unhandled rejection.
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
try {
|
|
610
|
+
Promise.resolve(work).then(() => onResult(), (error) => onResult(error ?? new Error('Background operation failed')));
|
|
611
|
+
}
|
|
612
|
+
catch (error) {
|
|
613
|
+
onResult(error);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
collectAndLogErrors(errors, displayErrors, logErrors) {
|
|
609
617
|
const { errors: collectedErrors, displayErrors: collectedDisplayErrors } = model_1.RBValidationError.collectErrors(errors, displayErrors);
|
|
610
|
-
|
|
611
|
-
|
|
618
|
+
if (logErrors) {
|
|
619
|
+
// Without a running request chronicle, log the errors immediately so they are not lost.
|
|
620
|
+
for (const error of collectedErrors) {
|
|
621
|
+
sails.log.error(`Collected error in sendResp:`, error);
|
|
622
|
+
}
|
|
612
623
|
}
|
|
613
624
|
return { collectedErrors, collectedDisplayErrors };
|
|
614
625
|
}
|
|
615
626
|
ensureDisplayErrors(collectedErrors, collectedDisplayErrors) {
|
|
616
627
|
if (collectedErrors.length > 0 && collectedDisplayErrors.length === 0) {
|
|
617
628
|
// If there are any errors, there must be at least one display error to show the user.
|
|
618
|
-
collectedDisplayErrors.push({ code: 'server-error', status:
|
|
629
|
+
collectedDisplayErrors.push({ code: 'server-error', status: '500' });
|
|
619
630
|
}
|
|
620
631
|
const errorsMsg = `${collectedErrors.length} ${collectedErrors.length === 1 ? 'error' : 'errors'}`;
|
|
621
632
|
const displayErrorsMsg = `display ${collectedDisplayErrors.length} ${collectedDisplayErrors.length === 1 ? 'error' : 'errors'}`;
|
|
@@ -630,7 +641,7 @@ var Controllers;
|
|
|
630
641
|
statuses.push(status);
|
|
631
642
|
}
|
|
632
643
|
statuses.push(...collectedDisplayErrors
|
|
633
|
-
.map(i => i?.status ? parseInt(i?.status?.toString()) : 0)
|
|
644
|
+
.map(i => (i?.status ? parseInt(i?.status?.toString()) : 0))
|
|
634
645
|
.filter(i => Number.isFinite(i)));
|
|
635
646
|
if (statuses.length > 0) {
|
|
636
647
|
// Note that Math.max has a maximum number of parameters, which a very long array (10,000+) could exceed.
|
|
@@ -710,9 +721,7 @@ var Controllers;
|
|
|
710
721
|
if (Object.getOwnPropertySymbols(value).length > 0) {
|
|
711
722
|
return false;
|
|
712
723
|
}
|
|
713
|
-
return Object.values(Object.getOwnPropertyDescriptors(value)).every(descriptor => descriptor.enumerable === true &&
|
|
714
|
-
'value' in descriptor &&
|
|
715
|
-
this.isJsonSafeValue(descriptor.value, ancestors));
|
|
724
|
+
return Object.values(Object.getOwnPropertyDescriptors(value)).every(descriptor => descriptor.enumerable === true && 'value' in descriptor && this.isJsonSafeValue(descriptor.value, ancestors));
|
|
716
725
|
}
|
|
717
726
|
finally {
|
|
718
727
|
ancestors.delete(value);
|
|
@@ -720,8 +729,10 @@ var Controllers;
|
|
|
720
729
|
}
|
|
721
730
|
isRawJsonObject(value) {
|
|
722
731
|
try {
|
|
723
|
-
return value !== null &&
|
|
724
|
-
|
|
732
|
+
return (value !== null &&
|
|
733
|
+
typeof value === 'object' &&
|
|
734
|
+
!Array.isArray(value) &&
|
|
735
|
+
this.isJsonSafeValue(value, new Set()));
|
|
725
736
|
}
|
|
726
737
|
catch {
|
|
727
738
|
return false;
|
|
@@ -734,7 +745,7 @@ var Controllers;
|
|
|
734
745
|
bodyKind: data === null ? 'null' : Array.isArray(data) ? 'array' : typeof data,
|
|
735
746
|
});
|
|
736
747
|
res.set('Content-Type', 'application/json');
|
|
737
|
-
return res.status(500).json({ errors: [{ detail:
|
|
748
|
+
return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: {} });
|
|
738
749
|
}
|
|
739
750
|
res.set('Content-Type', mediaType);
|
|
740
751
|
sails.log.verbose(`Send raw JSON response with media type ${mediaType}.`);
|
|
@@ -769,10 +780,10 @@ var Controllers;
|
|
|
769
780
|
const errorResponse = new model_1.APIErrorResponse();
|
|
770
781
|
if (collectedDisplayErrors.length === 1) {
|
|
771
782
|
const displayError = collectedDisplayErrors[0] ?? {};
|
|
772
|
-
const title = displayError.title?.toString()?.trim() || displayError.code?.toString()?.trim() ||
|
|
773
|
-
const detail = displayError.detail?.toString()?.trim() ||
|
|
783
|
+
const title = displayError.title?.toString()?.trim() || displayError.code?.toString()?.trim() || '';
|
|
784
|
+
const detail = displayError.detail?.toString()?.trim() || '';
|
|
774
785
|
if (title || detail) {
|
|
775
|
-
errorResponse.message = title || detail ||
|
|
786
|
+
errorResponse.message = title || detail || 'An error occurred';
|
|
776
787
|
if (title && detail) {
|
|
777
788
|
errorResponse.details = detail;
|
|
778
789
|
}
|
|
@@ -780,14 +791,14 @@ var Controllers;
|
|
|
780
791
|
else {
|
|
781
792
|
errorResponse.message = model_1.RBValidationError.displayMessage({
|
|
782
793
|
t: TranslationService,
|
|
783
|
-
displayErrors: collectedDisplayErrors
|
|
794
|
+
displayErrors: collectedDisplayErrors,
|
|
784
795
|
});
|
|
785
796
|
}
|
|
786
797
|
}
|
|
787
798
|
else {
|
|
788
799
|
errorResponse.message = model_1.RBValidationError.displayMessage({
|
|
789
800
|
t: TranslationService,
|
|
790
|
-
displayErrors: collectedDisplayErrors
|
|
801
|
+
displayErrors: collectedDisplayErrors,
|
|
791
802
|
});
|
|
792
803
|
}
|
|
793
804
|
return errorResponse;
|
|
@@ -795,9 +806,9 @@ var Controllers;
|
|
|
795
806
|
formatV2DisplayErrors(collectedDisplayErrors) {
|
|
796
807
|
const t = TranslationService.t;
|
|
797
808
|
return collectedDisplayErrors.map(displayError => {
|
|
798
|
-
const code = displayError.code?.toString()?.trim() ||
|
|
799
|
-
let title = displayError.title?.toString()?.trim() ||
|
|
800
|
-
const detail = displayError.detail?.toString()?.trim() ||
|
|
809
|
+
const code = displayError.code?.toString()?.trim() || '';
|
|
810
|
+
let title = displayError.title?.toString()?.trim() || '';
|
|
811
|
+
const detail = displayError.detail?.toString()?.trim() || '';
|
|
801
812
|
if (code && !title && !detail) {
|
|
802
813
|
title = code;
|
|
803
814
|
}
|
|
@@ -839,8 +850,8 @@ var Controllers;
|
|
|
839
850
|
collectedDisplayErrors,
|
|
840
851
|
},
|
|
841
852
|
};
|
|
842
|
-
sails.log.error(
|
|
843
|
-
return res.status(500).json({ errors: [{ detail:
|
|
853
|
+
sails.log.error('Unknown v1 situation in sendResp', unknownSituation);
|
|
854
|
+
return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: meta || {} });
|
|
844
855
|
}
|
|
845
856
|
handleV2Response(res, format, status, collectedErrors, collectedDisplayErrors, data, meta, prehydrate) {
|
|
846
857
|
// Success path for v2
|
|
@@ -863,7 +874,7 @@ var Controllers;
|
|
|
863
874
|
format,
|
|
864
875
|
status,
|
|
865
876
|
data,
|
|
866
|
-
meta
|
|
877
|
+
meta,
|
|
867
878
|
},
|
|
868
879
|
errors: {
|
|
869
880
|
collectedErrors,
|
|
@@ -871,13 +882,13 @@ var Controllers;
|
|
|
871
882
|
},
|
|
872
883
|
};
|
|
873
884
|
sails.log.error(`Unknown v2 situation in sendResp`, unknownSituation);
|
|
874
|
-
return res.status(500).json({ errors: [{ detail:
|
|
885
|
+
return res.status(500).json({ errors: [{ detail: 'Check server logs.' }], meta: meta || {} });
|
|
875
886
|
}
|
|
876
887
|
getNoCacheHeaders() {
|
|
877
888
|
return {
|
|
878
889
|
'Cache-control': 'no-cache, private',
|
|
879
|
-
|
|
880
|
-
|
|
890
|
+
Pragma: 'no-cache',
|
|
891
|
+
Expires: '0',
|
|
881
892
|
};
|
|
882
893
|
}
|
|
883
894
|
setNoCacheHeaders(_req, res) {
|
|
@@ -887,4 +898,4 @@ var Controllers;
|
|
|
887
898
|
Core.Controller = Controller;
|
|
888
899
|
})(Core = Controllers.Core || (Controllers.Core = {}));
|
|
889
900
|
})(Controllers || (exports.Controllers = Controllers = {}));
|
|
890
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29yZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29yZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMENBQTRCO0FBQzVCLGdEQUF3QjtBQUV4QixxREFBNkU7QUFDN0UsNkVBQThFO0FBQzlFLHlEQUE0RDtBQUU1RCxtQ0FRaUI7QUFNakIsSUFBaUIsV0FBVyxDQSsrQjNCO0FBLytCRCxXQUFpQixXQUFXO0lBQUMsSUFBQSxJQUFJLENBKytCaEM7SUEvK0I0QixXQUFBLElBQUk7UUFJL0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWtCRztRQUNILE1BQWEsVUFBVTtZQUVyQjs7OztlQUlHO1lBQ08sT0FBTyxHQUE0QixFQUFFLENBQUM7WUFFaEQ7O2VBRUc7WUFDTyxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7WUFFMUM7OztlQUdHO1lBQ08sTUFBTSxHQUFXLFNBQVMsQ0FBQztZQUVyQzs7ZUFFRztZQUNPLE9BQU8sR0FBVyxTQUFTLENBQUM7WUFFdEM7O2VBRUc7WUFDTyxtQkFBbUIsR0FBVyxjQUFjLENBQUM7WUFFdkQ7OztlQUdHO1lBQ0ssdUJBQXVCLEdBQWE7Z0JBQzFDLGtDQUFrQztnQkFDbEMsU0FBUzthQUNWLENBQUM7WUFFRixvQ0FBb0M7WUFDNUIsT0FBTyxHQUFtQixJQUFJLENBQUM7WUFFL0IsaUJBQWlCO2dCQUN2QixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBZSxFQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sSUFBSSxHQUFHLEdBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDbkMsT0FBTztvQkFDTCxLQUFLLEVBQUUsR0FBRztvQkFDVixPQUFPLEVBQUUsR0FBRztvQkFDWixLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQWUsRUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDM0QsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzNELEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBZSxFQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUN2RCxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQWUsRUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDekQsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ3pELEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBZSxFQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUMzRCxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQWUsRUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDMUQsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzNELE1BQU0sRUFBRSxJQUFJO29CQUNaLEtBQUssRUFBRSxHQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztpQkFDbkMsQ0FBQztZQUNKLENBQUM7WUFFRDs7OztlQUlHO1lBQ0gsSUFBYyxNQUFNO2dCQUNsQixJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUscUJBQXFCLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUM7b0JBQzNHLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztvQkFDNUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZHLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3RCLENBQUM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQW1DLENBQUM7Z0JBQy9ELElBQUksV0FBVyxJQUFJLE9BQU8sV0FBVyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDN0QsT0FBTyxXQUFzQixDQUFDO2dCQUNoQyxDQUFDO2dCQUNELHFHQUFxRztnQkFDckcsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1lBT1MsaUJBQWlCLENBQUMsTUFBc0IsRUFBRSxTQUE0QixFQUFFLE9BQXFEO2dCQUNySSxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUNqQyxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUNELElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNwQixJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDbkMsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztvQkFDRCxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVEO2dCQUNFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRDs7O2VBR0c7WUFDTyxLQUFLLENBQUMscUJBQXFCO2dCQUNuQyxrQ0FBa0M7WUFDcEMsQ0FBQztZQUVEOzs7ZUFHRztZQUNPLHlCQUF5QjtnQkFDakMsa0NBQWtDO1lBQ3BDLENBQUM7WUFFRDs7OztlQUlHO1lBRUg7Ozs7O2VBS0c7WUFDSSxPQUFPO2dCQUNaLG1EQUFtRDtnQkFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0UsTUFBTSxlQUFlLEdBQTRCLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBK0IsQ0FBQztnQkFFbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3RDLDhCQUE4QjtvQkFDOUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQzt3QkFDbEMsK0ZBQStGO3dCQUMvRixJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDOzRCQUN0RCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQ0FDekIsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFJLE1BQTBDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUN2RixDQUFDO2lDQUFNLENBQUM7Z0NBQ04sZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQzs0QkFDdkMsQ0FBQzt3QkFDSCxDQUFDOzZCQUFNLENBQUM7NEJBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLFVBQVUsK0NBQStDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDakksQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLFVBQVUsdUJBQXVCLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDekcsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sZUFBZSxDQUFDO1lBQ3pCLENBQUM7WUFFRDs7OztlQUlHO1lBRUg7Ozs7Ozs7Ozs7O2VBV0c7WUFDTyxjQUFjLENBQUMsR0FBYyxFQUFFLEdBQWMsRUFBRSxRQUFvRixFQUFFLFVBQW1DLEVBQUU7Z0JBQ2xMLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFFRDs7OztlQUlHO1lBRUg7Ozs7Ozs7O2VBUUc7WUFDSSxLQUFLLENBQUMsR0FBYyxFQUFFLEdBQWMsRUFBRSxRQUFpQixFQUFFLFdBQW9DLEVBQUU7Z0JBQ3BHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixDQUFDO1lBR08sZUFBZTtnQkFDckIsT0FBTyxjQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFFTyxtQkFBbUIsQ0FBQyxRQUFnQjtnQkFDMUMsT0FBTyxJQUFBLG1DQUFtQixFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtvQkFDekQsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUMvQixTQUFTLEVBQUUsTUFBTTtpQkFDbEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVPLG9CQUFvQixDQUFDLFFBQWdCO2dCQUMzQyxPQUFPLElBQUEsbUNBQW1CLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO3VCQUNyRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVPLGVBQWUsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxJQUFZO2dCQUNwRSxNQUFNLFVBQVUsR0FBRztvQkFDakIsR0FBRyxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtvQkFDL0IsV0FBVyxNQUFNLElBQUksSUFBSSxFQUFFO29CQUMzQixtQkFBbUIsSUFBSSxFQUFFO29CQUN6QixJQUFJO2lCQUNMLENBQUM7Z0JBRUYsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMxRCxJQUFJLFlBQVksRUFBRSxDQUFDO3dCQUNqQixPQUFPLFlBQVksQ0FBQztvQkFDdEIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVPLGlCQUFpQixDQUFDLFFBQWdCLEVBQUUsTUFBYztnQkFDeEQsTUFBTSxVQUFVLEdBQUc7b0JBQ2pCLEdBQUcsUUFBUSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDbEUsV0FBVyxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQzlELG1CQUFtQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDNUQsR0FBRyxRQUFRLElBQUksTUFBTSxnQkFBZ0I7b0JBQ3JDLFdBQVcsTUFBTSxTQUFTO29CQUMxQix3QkFBd0I7aUJBQ3pCLENBQUM7Z0JBRUYsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDbkMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUM1RCxJQUFJLGNBQWMsRUFBRSxDQUFDO3dCQUNuQixPQUFPLGNBQWMsQ0FBQztvQkFDeEIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVPLGdCQUFnQixDQUFDLFlBQThCO2dCQUNyRCxPQUFPLFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDL0MsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQ3BELENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQ2hDLENBQUM7WUFFTyxpQkFBaUIsQ0FBQyxZQUE4QjtnQkFDdEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLFlBQVksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7b0JBQ3JELE9BQU8sYUFBYSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELE9BQU8sWUFBWSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUMvQyxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDcEQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFDaEMsQ0FBQztZQUVPLHNCQUFzQixDQUFDLFlBQThCO2dCQUMzRCxPQUFPLGNBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLGNBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUVPLDJCQUEyQixDQUFDLEdBQWMsRUFBRSxNQUErQjtnQkFDakYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQXNCLEVBQUU7b0JBQ3pELE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzlFLENBQUMsQ0FBQztnQkFDRixNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBc0IsRUFBRTtvQkFDeEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ3BDLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDdEMsQ0FBQztvQkFDRCxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDO2dCQUVGLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFbEUsd0VBQXdFO2dCQUN4RSx1RUFBdUU7Z0JBQ3ZFLGtFQUFrRTtnQkFDbEUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN6QixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pFLE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzdFLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDaEUsSUFBSSxXQUFXLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxDQUFDO3dCQUMvQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ25CLENBQUM7b0JBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN6QixRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN6QixNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixDQUFDO2dCQUNILENBQUM7Z0JBRUQsUUFBUSxLQUFLLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxTQUFTLENBQUM7Z0JBQzdHLE1BQU0sS0FBSyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksU0FBUyxDQUFDO2dCQUMxRyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDekIsQ0FBQztZQUVNLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsTUFBYyxFQUFFLElBQVk7Z0JBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25FLENBQUM7WUFFTSxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLE1BQWM7Z0JBQ3hELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2hFLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN2RSxDQUFDO1lBRU0sUUFBUSxDQUFDLEdBQWMsRUFBRSxHQUFjLEVBQUUsSUFBWSxFQUFFLFNBQWtDLEVBQUU7Z0JBRWhHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixDQUFDO2dCQUNELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQy9CLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBNEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFpQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN0SCxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVuRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFXLENBQUM7Z0JBQ25ELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQVcsQ0FBQztnQkFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUVoRSx3RUFBd0U7Z0JBQ3hFLHdFQUF3RTtnQkFDeEUsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzFCLElBQUEsaURBQXlCLEVBQUMsR0FBRyxDQUFDLENBQUM7b0JBQy9CLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCwrRUFBK0U7Z0JBQy9FLGdGQUFnRjtnQkFDaEYsSUFBSSxjQUFjLEtBQUssSUFBSSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDL0QsV0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNqSCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUM5QixXQUFXLENBQUMseUJBQXlCLENBQUMsR0FBRyxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDckcsQ0FBQztnQkFFRCw4Q0FBOEM7Z0JBQzlDLHlEQUF5RDtnQkFDekQsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDekQsV0FBVyxDQUFDLElBQStCLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztnQkFDeEUsV0FBVyxDQUFDLElBQStCLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDekQsd0JBQXdCO2dCQUN4QixDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuRyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztnQkFDckQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUM7b0JBQ3pDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDekUsQ0FBQyxDQUFDLENBQUM7Z0JBRUosSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqQyxvQ0FBb0M7Z0JBQ3BDLGtDQUFrQztnQkFHbEMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUVTLFlBQVksQ0FBQyxNQUFnQztnQkFDckQsT0FBTyxJQUFBLDRCQUFnQixFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBRVMsbUJBQW1CLENBQUMsU0FBbUIsRUFBRSxNQUFnQztnQkFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUV6RCxJQUFJLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzFELE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO2dCQUVELE9BQU8sR0FBRyxpQkFBaUIsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvQyxDQUFDO1lBRVMsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFnQztnQkFDL0QsT0FBTyxJQUFBLDhCQUFrQixFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBRVMsMEJBQTBCLENBQUMsTUFBZ0M7Z0JBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDWixPQUFPLFNBQVMsQ0FBQztnQkFDbkIsQ0FBQztnQkFFRCxJQUFJLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7d0JBQ3JCLE9BQU8sZ0JBQWdCLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLE1BQU0sQ0FBQyxZQUFZLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9GLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbEIsT0FBTyxTQUFTLENBQUM7Z0JBQ25CLENBQUM7Z0JBRUQsTUFBTSxlQUFlLEdBQUcsSUFBQSw4QkFBa0IsRUFBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2pFLE9BQU8sZUFBZSxJQUFJLFNBQVMsQ0FBQztZQUN0QyxDQUFDO1lBRUQ7O2VBRUc7WUFDSSxPQUFPLENBQUMsR0FBYyxFQUFFLEdBQWMsRUFBRSxNQUFtRCxFQUFFLFFBQXFELEVBQUUsVUFBVSxHQUFHLEtBQUs7Z0JBQzNLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzVDLE9BQU8sTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7WUFFUyxNQUFNLENBQUMsR0FBYztnQkFDN0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsQ0FBQztZQUNoRCxDQUFDO1lBRUQ7O2VBRUc7WUFDTyxNQUFNLENBQUMsR0FBYyxFQUFFLEdBQWMsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLE9BQWdCLElBQUksRUFBRSxVQUFVLEdBQUcsS0FBSztnQkFDakcsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFFRDs7ZUFFRztZQUNPLFFBQVEsQ0FBQyxHQUFjLEVBQUUsR0FBYyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsT0FBZ0IsSUFBSSxFQUFFLFVBQVUsR0FBRyxLQUFLO2dCQUNuRyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDeEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQztZQUVEOztlQUVHO1lBQ08sT0FBTyxDQUFDLEdBQWMsRUFBRSxHQUFjLEVBQUUsVUFBVSxHQUFHLEdBQUcsRUFBRSxhQUFnQztnQkFDbEcsTUFBTSxhQUFhLEdBQUcsQ0FBQzt3QkFDckIsS0FBSyxFQUFFLGFBQWEsRUFBRSxPQUFPLElBQUksdUJBQXVCO3dCQUN4RCxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU87cUJBQy9CLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0csQ0FBQztZQUVEOztlQUVHO1lBQ08sVUFBVSxDQUFDLEdBQWMsRUFBRSxHQUFjLEVBQUUsVUFBbUIsSUFBSSxFQUFFLFVBQVUsR0FBRyxHQUFHO2dCQUM1RixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLENBQUM7WUFFRDs7ZUFFRztZQUNPLFVBQVUsQ0FBQyxHQUFjLEVBQUUsR0FBYyxFQUFFLFVBQW1CLElBQUksRUFBRSxVQUFVLEdBQUcsR0FBRztnQkFDNUYsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRyxDQUFDO1lBRUQ7O2VBRUc7WUFDTyxXQUFXLENBQUMsR0FBYyxFQUFFLEdBQWMsRUFBRSxVQUFtQixJQUFJLEVBQUUsVUFBb0I7Z0JBQ2pHLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFFUyxVQUFVLENBQUMsUUFBZ0I7Z0JBQ25DLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNwRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDN0QsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1lBRUQ7Ozs7OztlQU1HO1lBQ08sYUFBYSxDQUFDLEdBQWM7Z0JBQ3BDLE1BQU0sY0FBYyxHQUFHLGtCQUFVLENBQUMsV0FBVyxDQUFDO2dCQUU5QyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNyQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUM7Z0JBQzNCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFFdkMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFDNUIsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUM7Z0JBQ3pDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFFL0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUMvRixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBRXJILElBQUksT0FBTyxJQUFJLFdBQVcsSUFBSSxPQUFPLEtBQUssV0FBVyxFQUFFLENBQUM7b0JBQ3RELEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxPQUFPLHNCQUFzQixXQUFXLHNCQUFzQjt3QkFDMUgsOEJBQThCLGNBQWMsSUFBSSxDQUFDLENBQUM7b0JBQ3BELE9BQU8sY0FBYyxDQUFDO2dCQUN4QixDQUFDO2dCQUVELGtGQUFrRjtnQkFDbEYsTUFBTSxPQUFPLEdBQUcsV0FBVyxJQUFJLE9BQU8sSUFBSSxjQUFjLENBQUM7Z0JBRXpELE1BQU0sU0FBUyxHQUFhLE1BQU0sQ0FBQyxNQUFNLENBQUMsa0JBQVUsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNqQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsT0FBTyw0Q0FBNEMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTt3QkFDdEgsOEJBQThCLGNBQWMsSUFBSSxDQUFDLENBQUM7b0JBQ3BELE9BQU8sY0FBYyxDQUFDO2dCQUN4QixDQUFDO2dCQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHNCQUFzQixPQUFPLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzFFLE9BQU8sT0FBNEIsQ0FBQztZQUN0QyxDQUFDO1lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQXdCRztZQUNPLFFBQVEsQ0FBQyxHQUFjLEVBQUUsR0FBYyxFQUFFLGFBQWlDO2dCQUNsRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQywwREFBMEQ7Z0JBQzFELE1BQU0sRUFDSixNQUFNLEdBQUcsTUFBTSxFQUNmLElBQUksRUFBRSxZQUFZLEVBQ2xCLE9BQU8sR0FBRyxFQUFFLEVBQ1osTUFBTSxHQUFHLEVBQUUsRUFDWCxhQUFhLEdBQUcsRUFBRSxFQUNsQixJQUFJLEdBQUcsRUFBRSxFQUNULFVBQVUsR0FBRyxTQUFTLEVBQ3RCLEVBQUUsR0FBRyxJQUFJLEdBQ1YsR0FBRyxhQUFhLElBQUksRUFBRSxDQUFDO2dCQUN4QixNQUFNLElBQUksR0FBRyxZQUFZLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDNUQsbUNBQW1DO2dCQUNuQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLGFBQWEsSUFBSSxFQUFFLENBQUM7Z0JBRTNDLDZDQUE2QztnQkFDN0MsTUFBTSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ3BHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztnQkFDbEUsTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFdEMsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ25CLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7b0JBQ2pELE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixDQUFDO2dCQUVELElBQUksTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMxQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDL0UsQ0FBQztnQkFFRCxtRkFBbUY7Z0JBQ25GLElBQUksVUFBVSxLQUFLLGtCQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3RyxDQUFDO2dCQUVELElBQUksVUFBVSxLQUFLLGtCQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNySCxDQUFDO2dCQUVELE1BQU0sZ0JBQWdCLEdBQUc7b0JBQ3ZCLFVBQVU7b0JBQ1YsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTTt3QkFDbkIsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLFdBQVc7cUJBQ3BDO29CQUNELFFBQVEsRUFBRTt3QkFDUixNQUFNO3dCQUNOLE1BQU07d0JBQ04sT0FBTzt3QkFDUCxJQUFJO3dCQUNKLEVBQUU7cUJBQ0g7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLGVBQWU7d0JBQ2Ysc0JBQXNCO3FCQUN2QjtpQkFDRixDQUFDO2dCQUNGLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3JFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUVPLG1CQUFtQixDQUFDLE1BQWUsRUFBRSxhQUFvQztnQkFDL0UsTUFBTSxFQUNKLE1BQU0sRUFBRSxlQUFlLEVBQ3ZCLGFBQWEsRUFBRSxzQkFBc0IsRUFDdEMsR0FBRyx5QkFBaUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUUzRCxLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekQsQ0FBQztnQkFFRCxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLENBQUM7WUFDckQsQ0FBQztZQUVPLG1CQUFtQixDQUFDLGVBQXdCLEVBQUUsc0JBQTZDO2dCQUNqRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEUsc0ZBQXNGO29CQUN0RixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUVELE1BQU0sU0FBUyxHQUFHLEdBQUcsZUFBZSxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkcsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLHNCQUFzQixDQUFDLE1BQU0sSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLFNBQVMsUUFBUSxnQkFBZ0IsZUFBZSxDQUFDLENBQUM7WUFDbkYsQ0FBQztZQUVPLHFCQUFxQixDQUFDLE1BQWMsRUFBRSxzQkFBNkM7Z0JBQ3pGLElBQUksY0FBYyxHQUFrQixNQUFNLENBQUM7Z0JBQzNDLElBQUksc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUM7d0JBQ0gsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO3dCQUM5QixJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDOzRCQUM1QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO3dCQUN2QixDQUFDO3dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxzQkFBc0I7NkJBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDekQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqQyxDQUFBO3dCQUNELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDeEIseUdBQXlHOzRCQUN6RywwRkFBMEY7NEJBQzFGLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7NEJBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0NBQ3JDLGNBQWMsR0FBRyxJQUFJLENBQUM7NEJBQ3hCLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLGNBQWMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUNoRixjQUFjLEdBQUcsR0FBRyxDQUFDO29CQUN2QixDQUFDO29CQUVELCtEQUErRDtvQkFDL0QsSUFBSSxjQUFjLEtBQUssSUFBSSxJQUFJLGNBQWMsS0FBSyxTQUFTLElBQUksY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNwRixjQUFjLEdBQUcsR0FBRyxDQUFDO29CQUN2QixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLGNBQWMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUM7WUFFTyxvQkFBb0IsQ0FBQyxHQUFhLEVBQUUsT0FBK0I7Z0JBQ3pFLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7WUFFTyxtQkFBbUIsQ0FBQyxHQUFhLEVBQUUsTUFBYztnQkFDdkQsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDOUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDO1lBRU8sMEJBQTBCLENBQUMsS0FBYztnQkFDL0MsT0FBTyxpQ0FBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUVPLGVBQWUsQ0FBQyxLQUFjLEVBQUUsU0FBc0I7Z0JBQzVELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzlFLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO2dCQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzlCLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBRUQsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDO29CQUNILElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUN6QixJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ25ELE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUM7d0JBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM1RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ3pELE9BQU8sS0FBSyxDQUFDO3dCQUNmLENBQUM7d0JBQ0QsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUNyRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3RDLElBQ0UsQ0FBQyxVQUFVO2dDQUNYLFVBQVUsQ0FBQyxVQUFVLEtBQUssSUFBSTtnQ0FDOUIsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUM7Z0NBQ3hCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUNsRCxDQUFDO2dDQUNELE9BQU8sS0FBSyxDQUFDOzRCQUNmLENBQUM7d0JBQ0gsQ0FBQzt3QkFDRCxPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9DLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUN6RCxPQUFPLEtBQUssQ0FBQztvQkFDZixDQUFDO29CQUNELElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDbkQsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztvQkFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQy9FLFVBQVUsQ0FBQyxVQUFVLEtBQUssSUFBSTt3QkFDOUIsT0FBTyxJQUFJLFVBQVU7d0JBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FDbEQsQ0FBQztnQkFDSixDQUFDO3dCQUFTLENBQUM7b0JBQ1QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7WUFFTyxlQUFlLENBQUMsS0FBYztnQkFDcEMsSUFBSSxDQUFDO29CQUNILE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzt3QkFDekUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztZQUVPLG1CQUFtQixDQUFDLEdBQWEsRUFBRSxTQUFrQixFQUFFLElBQWE7Z0JBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQy9FLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxFQUFFO3dCQUNwRSxTQUFTLEVBQUUsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUzt3QkFDdkUsUUFBUSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUk7cUJBQy9FLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO29CQUM1QyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RixDQUFDO2dCQUVELEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDMUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUM7WUFFTyxxQkFBcUIsQ0FDM0IsTUFBYyxFQUNkLGVBQXdCLEVBQ3hCLHNCQUE2QyxFQUM3QyxNQUFjLEVBQ2QsSUFBYSxFQUNiLEVBQVcsRUFDWCxVQUE2QjtnQkFFN0IsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ3RCLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3BFLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0UsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFFRCxPQUFPLENBQ0wsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUM7b0JBQ3JDLENBQ0UsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUM7d0JBQzVFLFVBQVUsS0FBSyxrQkFBVSxDQUFDLFdBQVcsQ0FDdEMsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVPLGVBQWUsQ0FDckIsR0FBYSxFQUNiLFVBQTZCLEVBQzdCLE1BQWMsRUFDZCxJQUFhLEVBQ2IsSUFBNkIsRUFDN0IsRUFBVztnQkFFWCxRQUFRLFVBQVUsRUFBRSxDQUFDO29CQUNuQixLQUFLLGtCQUFVLENBQUMsV0FBVzt3QkFDekIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLE1BQU0sNkJBQTZCLENBQUMsQ0FBQzt3QkFDL0UsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFFOUMsS0FBSyxrQkFBVSxDQUFDLFdBQVcsQ0FBQztvQkFDNUI7d0JBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLE1BQU0sNkJBQTZCLENBQUMsQ0FBQzt3QkFDL0UsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNILENBQUM7WUFFTyxvQkFBb0IsQ0FBQyxzQkFBNkM7Z0JBQ3hFLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWdCLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDckQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDcEcsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQzdELElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUNwQixhQUFhLENBQUMsT0FBTyxHQUFHLEtBQUssSUFBSSxNQUFNLElBQUksbUJBQW1CLENBQUM7d0JBQy9ELElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDOzRCQUNwQixhQUFhLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQzt3QkFDakMsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sYUFBYSxDQUFDLE9BQU8sR0FBRyx5QkFBaUIsQ0FBQyxjQUFjLENBQUM7NEJBQ3ZELENBQUMsRUFBRSxrQkFBa0I7NEJBQ3JCLGFBQWEsRUFBRSxzQkFBc0I7eUJBQ3RDLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixhQUFhLENBQUMsT0FBTyxHQUFHLHlCQUFpQixDQUFDLGNBQWMsQ0FBQzt3QkFDdkQsQ0FBQyxFQUFFLGtCQUFrQjt3QkFDckIsYUFBYSxFQUFFLHNCQUFzQjtxQkFDdEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxhQUFhLENBQUM7WUFDdkIsQ0FBQztZQUVPLHFCQUFxQixDQUFDLHNCQUE2QztnQkFDekUsTUFBTSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixPQUFPLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDL0MsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ3pELElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN6RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFFN0QsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDOUIsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDZixDQUFDO29CQUVELElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1YsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDWCxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbEMsQ0FBQztvQkFDRCxPQUFPLFlBQVksQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRU8sZ0JBQWdCLENBQ3RCLEdBQWEsRUFDYixNQUFjLEVBQ2QsTUFBYyxFQUNkLGVBQXdCLEVBQ3hCLHNCQUE2QyxFQUM3QyxFQUFXLEVBQ1gsSUFBYSxFQUNiLElBQTZCO2dCQUU3QixzQkFBc0I7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsa0JBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUMxSCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLGtCQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRixDQUFDO2dCQUVELG9CQUFvQjtnQkFDcEIsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO29CQUN4RSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsTUFBTSx1Q0FBdUMsQ0FBQyxDQUFDO29CQUN6RixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7Z0JBRUQsb0NBQW9DO2dCQUNwQyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNwQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsTUFBTSw2QkFBNkIsQ0FBQyxDQUFDO29CQUMvRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7Z0JBRUQsTUFBTSxnQkFBZ0IsR0FBRztvQkFDdkIsUUFBUSxFQUFFO3dCQUNSLE1BQU07d0JBQ04sTUFBTTt3QkFDTixJQUFJO3dCQUNKLElBQUk7d0JBQ0osRUFBRTtxQkFDSDtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3ZCO2lCQUNGLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDdEUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEcsQ0FBQztZQUVPLGdCQUFnQixDQUN0QixHQUFhLEVBQ2IsTUFBYyxFQUNkLE1BQWMsRUFDZCxlQUF3QixFQUN4QixzQkFBNkMsRUFDN0MsSUFBYSxFQUNiLElBQTZCLEVBQzdCLFVBQW9CO2dCQUVwQixzQkFBc0I7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsa0JBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUM1SCxJQUFJLFVBQVUsS0FBSyxJQUFJLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUNwRCxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsTUFBTSw2Q0FBNkMsQ0FBQyxDQUFDO3dCQUMvRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDMUQsQ0FBQztvQkFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLGtCQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyRixDQUFDO2dCQUVELG9CQUFvQjtnQkFDcEIsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHdCQUF3QixNQUFNLDZCQUE2QixDQUFDLENBQUM7b0JBQy9FLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO29CQUMzRSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsTUFBTSx1Q0FBdUMsQ0FBQyxDQUFDO29CQUN6RixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO2dCQUVELE1BQU0sZ0JBQWdCLEdBQUc7b0JBQ3ZCLFFBQVEsRUFBRTt3QkFDUixNQUFNO3dCQUNOLE1BQU07d0JBQ04sSUFBSTt3QkFDSixJQUFJO3FCQUNMO29CQUNELE1BQU0sRUFBRTt3QkFDTixlQUFlO3dCQUNmLHNCQUFzQjtxQkFDdkI7aUJBQ0YsQ0FBQztnQkFDRixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN0RSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoRyxDQUFDO1lBRVMsaUJBQWlCO2dCQUN6QixPQUFPO29CQUNMLGVBQWUsRUFBRSxtQkFBbUI7b0JBQ3BDLFFBQVEsRUFBRSxVQUFVO29CQUNwQixTQUFTLEVBQUUsR0FBRztpQkFDZixDQUFDO1lBQ0osQ0FBQztZQUVPLGlCQUFpQixDQUFDLElBQWUsRUFBRSxHQUFjO2dCQUN2RCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNGO1FBdjlCWSxlQUFVLGFBdTlCdEIsQ0FBQTtJQUNILENBQUMsRUEvK0I0QixJQUFJLEdBQUosZ0JBQUksS0FBSixnQkFBSSxRQSsrQmhDO0FBQUQsQ0FBQyxFQS8rQmdCLFdBQVcsMkJBQVgsV0FBVyxRQSsrQjNCIn0=
|
|
901
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29yZUNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29yZUNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMENBQTRCO0FBQzVCLGdEQUF3QjtBQUN4QixxREFBNkU7QUFDN0UsNkVBQThFO0FBQzlFLHlEQUE0RDtBQUU1RCxtQ0FRaUI7QUFDakIsbUVBTXNDO0FBQ3RDLHlDQUFzQztBQUV0QyxJQUFpQixXQUFXLENBNmlDM0I7QUE3aUNELFdBQWlCLFdBQVc7SUFBQyxJQUFBLElBQUksQ0E2aUNoQztJQTdpQzRCLFdBQUEsSUFBSTtRQUcvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBa0JHO1FBQ0gsTUFBYSxVQUFXLFNBQVEsbUJBQVE7WUFDdEM7Ozs7ZUFJRztZQUNPLE9BQU8sR0FBNEIsRUFBRSxDQUFDO1lBRWhEOzs7ZUFHRztZQUNPLE1BQU0sR0FBVyxTQUFTLENBQUM7WUFFckM7O2VBRUc7WUFDTyxPQUFPLEdBQVcsU0FBUyxDQUFDO1lBRXRDOztlQUVHO1lBQ08sbUJBQW1CLEdBQVcsY0FBYyxDQUFDO1lBRXZEOzs7ZUFHRztZQUNLLHVCQUF1QixHQUFhO2dCQUMxQyxrQ0FBa0M7Z0JBQ2xDLFNBQVM7YUFDVixDQUFDO1lBRVEsc0JBQXNCLEdBQVcsWUFBWSxDQUFDO1lBRXhEOzs7O2VBSUc7WUFFSDs7Ozs7ZUFLRztZQUNJLE9BQU87Z0JBQ1osbURBQW1EO2dCQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMzRSxNQUFNLGVBQWUsR0FBNEIsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUErQixDQUFDO2dCQUVuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFD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
|