@acorex/modules 20.6.0-next.13 → 20.6.0-next.15
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/dashboard-management/index.d.ts +2 -15
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs} +22 -17
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs} +2 -2
- package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs.map → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs.map} +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs} +16 -16
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs.map → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs.map → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs.map → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs.map → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs.map → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-GEe-dEOj.mjs → acorex-modules-document-management-drive.component-CeBlGsLR.mjs} +6 -5
- package/fesm2022/acorex-modules-document-management-drive.component-CeBlGsLR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs.map → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs.map → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs.map → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs.map → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D8ndB-9C.mjs → acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D8ndB-9C.mjs.map → acorex-modules-document-management-small-icons-view.component-VD2PaT-1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs.map → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs → acorex-modules-notification-management-notification-page.component-XCr4A447.mjs} +35 -23
- package/fesm2022/acorex-modules-notification-management-notification-page.component-XCr4A447.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management.mjs +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs → acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs} +8 -7
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +16 -15
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs → acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs} +18 -19
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs.map → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs → acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs} +20 -17
- package/fesm2022/acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs.map → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs} +5 -4
- package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs.map → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs.map} +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/package.json +14 -14
- package/report-management/index.d.ts +2 -15
- package/settings-management/index.d.ts +2 -2
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-GEe-dEOj.mjs.map +0 -1
- package/fesm2022/acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-report-management.mjs","sources":["../tmp-esm2022/report-management/lib/const.js","../tmp-esm2022/report-management/lib/reports/report.types.js","../tmp-esm2022/report-management/lib/reports/report-definition.provider.js","../tmp-esm2022/report-management/lib/reports/report-definition.service.js","../tmp-esm2022/report-management/lib/reports/report-mapper.js","../tmp-esm2022/report-management/lib/features/report-runner/reports.provider.js","../tmp-esm2022/report-management/lib/menu.keys.js","../tmp-esm2022/report-management/lib/menu.provider.js","../tmp-esm2022/report-management/lib/entities/data-set/column.def.js","../tmp-esm2022/report-management/lib/entities/data-set/data-set.service.js","../tmp-esm2022/report-management/lib/entities/data-set/filter.def.js","../tmp-esm2022/report-management/lib/entities/data-set/sort.def.js","../tmp-esm2022/report-management/lib/entities/data-set/data-set.entity.js","../tmp-esm2022/report-management/lib/entities/report-definition.service.js","../tmp-esm2022/report-management/lib/entities/data-set/data-set.module.js","../tmp-esm2022/report-management/lib/entities/report-definition.module.js","../tmp-esm2022/report-management/lib/entities/index.js","../tmp-esm2022/report-management/lib/features/data-llist/column-evaluator-scope.provider.js","../tmp-esm2022/report-management/lib/features/report/create/report-create.workflow.js","../tmp-esm2022/report-management/lib/report-management.module.js","../tmp-esm2022/report-management/lib/permission.keys.js","../tmp-esm2022/report-management/lib/permission-definition.provider.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer.viewmodel.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-chart-view/report-chart-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-table-view/report-table-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer-page/report-viewer-page.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-bar-chart-view/report-bar-chart-view.component.js","../tmp-esm2022/report-management/acorex-modules-report-management.js"],"sourcesContent":["const config = {\n i18n: 'report-management',\n module: 'ReportManagement'\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'report-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-chart-bar'\n },\n entities: {\n dataSet: {\n name: 'DataSet',\n title: `t(\"dataSet\", { scope: \"${config.i18n}\" })`,\n titlePlural: `t(\"dataSetPlural\", { scope: \"${config.i18n}\" })`,\n icon: 'fa-light fa-default',\n },\n category: {\n name: 'Category',\n fullName: `${config.module}.Category`,\n title: `@${config.i18n}:reports.entities.category.title`,\n titlePlural: `@${config.i18n}:reports.entities.category.plural`,\n icon: 'fa-light fa-folder'\n },\n report: {\n name: 'Report',\n fullName: `${config.module}.Report`,\n title: `@${config.i18n}:reports.entities.report.title`,\n titlePlural: `@${config.i18n}:reports.entities.report.plural`,\n icon: 'fa-light fa-file-chart-pie'\n }\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE1BQU0sR0FBRztJQUNYLElBQUksRUFBRSxtQkFBbUI7SUFDekIsTUFBTSxFQUFDLGtCQUFrQjtDQUM1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxlQUFlO1FBQ3JDLElBQUksRUFBRSx1QkFBdUI7S0FDaEM7SUFDRCxRQUFRLEVBQUU7UUFDVixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSwwQkFBMEIsTUFBTSxDQUFDLElBQUksTUFBTTtZQUNsRCxXQUFXLEVBQUUsZ0NBQWdDLE1BQU0sQ0FBQyxJQUFJLE1BQU07WUFDOUQsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QjtRQUNHLFFBQVEsRUFBRTtZQUNOLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFdBQVc7WUFDckMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksa0NBQWtDO1lBQ3hELFdBQVcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLG1DQUFtQztZQUMvRCxJQUFJLEVBQUUsb0JBQW9CO1NBQzdCO1FBQ0QsTUFBTSxFQUFFO1lBQ0osSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxTQUFTO1lBQ25DLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLGdDQUFnQztZQUN0RCxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxpQ0FBaUM7WUFDN0QsSUFBSSxFQUFFLDRCQUE0QjtTQUNyQztLQUNKO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbmZpZyA9IHtcbiAgICBpMThuOiAncmVwb3J0LW1hbmFnZW1lbnQnLFxuICAgIG1vZHVsZTonUmVwb3J0TWFuYWdlbWVudCdcbn07XG5cbmV4cG9ydCBjb25zdCBSb290Q29uZmlnID0ge1xuICAgIGNvbmZpZyxcbiAgICBtb2R1bGU6IHtcbiAgICAgICAgcm91dGU6ICdyZXBvcnQtbWFuYWdlbWVudCcsXG4gICAgICAgIG5hbWU6IGNvbmZpZy5tb2R1bGUsXG4gICAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59Om1vZHVsZS50aXRsZWAsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jaGFydC1iYXInXG4gICAgfSxcbiAgICBlbnRpdGllczoge1xuICAgIGRhdGFTZXQ6IHtcbiAgICAgIG5hbWU6ICdEYXRhU2V0JyxcbiAgICAgIHRpdGxlOiBgdChcImRhdGFTZXRcIiwgeyBzY29wZTogXCIke2NvbmZpZy5pMThufVwiIH0pYCxcbiAgICAgIHRpdGxlUGx1cmFsOiBgdChcImRhdGFTZXRQbHVyYWxcIiwgeyBzY29wZTogXCIke2NvbmZpZy5pMThufVwiIH0pYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1kZWZhdWx0JyxcbiAgICB9LFxuICAgICAgICBjYXRlZ29yeToge1xuICAgICAgICAgICAgbmFtZTogJ0NhdGVnb3J5JyxcbiAgICAgICAgICAgIGZ1bGxOYW1lOiBgJHtjb25maWcubW9kdWxlfS5DYXRlZ29yeWAsXG4gICAgICAgICAgICB0aXRsZTogYEAke2NvbmZpZy5pMThufTpyZXBvcnRzLmVudGl0aWVzLmNhdGVnb3J5LnRpdGxlYCxcbiAgICAgICAgICAgIHRpdGxlUGx1cmFsOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMuY2F0ZWdvcnkucGx1cmFsYCxcbiAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1mb2xkZXInXG4gICAgICAgIH0sXG4gICAgICAgIHJlcG9ydDoge1xuICAgICAgICAgICAgbmFtZTogJ1JlcG9ydCcsXG4gICAgICAgICAgICBmdWxsTmFtZTogYCR7Y29uZmlnLm1vZHVsZX0uUmVwb3J0YCxcbiAgICAgICAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnRpdGxlYCxcbiAgICAgICAgICAgIHRpdGxlUGx1cmFsOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnBsdXJhbGAsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZS1jaGFydC1waWUnXG4gICAgICAgIH1cbiAgICB9LFxufTtcbiJdfQ==","//#region ---- Imports ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0cy9yZXBvcnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCOztBQThlL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4cG9ydE9wdGlvbnMsIEFYUE9wdGlvbnNEYXRhLCBBWFBDYXRlZ29yeUVudGl0eSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvcmVcIjtcbmltcG9ydCB7IEFYUFdpZGdldENvbHVtbk5vZGUsIEFYUFdpZGdldE5vZGUgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmVcIjtcbmltcG9ydCB7IEFYUFF1ZXJ5U29ydCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuaW1wb3J0IHsgQVhQU3lzdGVtQWN0aW9uVHlwZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvcmVcIjtcbmltcG9ydCB7IEFYUENvbW1hbmQgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lXCI7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvcmUgUmVwb3J0IFR5cGVzIGFuZCBJbnRlcmZhY2VzICAgLS0tLVxuXG5leHBvcnQgdHlwZSBBWFBSZXBvcnRMYXlvdXRUeXBlID0gJ3RhYmxlJyB8ICdjaGFydCcgfCAnY2FyZHMnIHwgJ2N1c3RvbSc7XG5cbi8qKlxuICogUmVwb3J0IENhdGVnb3J5IC0gRXh0ZW5kcyBBWFBDYXRlZ29yeUVudGl0eSBmb3IgY29uc2lzdGVuY3kgYW5kIHBlcmZvcm1hbmNlXG4gKiBcbiAqIEluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gQVhQQ2F0ZWdvcnlFbnRpdHk6XG4gKiAtIGlkOiBzdHJpbmcgICAgICAgICAgICAgICAgICAgLSBVbmlxdWUgaWRlbnRpZmllclxuICogLSB0aXRsZTogc3RyaW5nICAgICAgICAgICAgICAgIC0gRGlzcGxheSBuYW1lXG4gKiAtIGRlc2NyaXB0aW9uPzogc3RyaW5nICAgICAgICAgLSBDYXRlZ29yeSBkZXNjcmlwdGlvblxuICogLSBwYXJlbnRJZD86IHN0cmluZyAgICAgICAgICAgIC0gUGFyZW50IGNhdGVnb3J5IElEXG4gKiAtIGNoaWxkcmVuQ291bnQ6IG51bWJlciAgICAgICAgLSBEaXJlY3QgY2hpbGQgY2F0ZWdvcmllcyBjb3VudCAoZW5hYmxlcyBsYXp5IGxvYWRpbmcpXG4gKiAtIGl0ZW1zQ291bnQ/OiBudW1iZXIgICAgICAgICAgLSBEaXJlY3QgcmVwb3J0cyBjb3VudCAocmVwbGFjZXMgaGFzUmVwb3J0IGJvb2xlYW4pXG4gKiAtIHRvdGFsQ2hpbGRyZW4/OiBudW1iZXIgICAgICAgLSBUb3RhbCBuZXN0ZWQgY2F0ZWdvcmllcyAob3B0aW9uYWwsIGZvciBhbmFseXRpY3MpXG4gKiAtIHRvdGFsSXRlbXM/OiBudW1iZXIgICAgICAgICAgLSBUb3RhbCByZXBvcnRzIGluIHRyZWUgKG9wdGlvbmFsLCBmb3IgYW5hbHl0aWNzKVxuICogXG4gKiBQZXJmb3JtYW5jZSBiZW5lZml0czpcbiAqIC0gTGF6eSBsb2FkaW5nIHN1cHBvcnQgKGNoaWxkcmVuQ291bnQgPiAwIHNob3dzIGV4cGFuZCBpY29uKVxuICogLSBSZXBvcnQgY291bnQgZGlzcGxheSAoaXRlbXNDb3VudCBzaG93cyBcIjUgcmVwb3J0c1wiIGJhZGdlKVxuICogLSBFZmZpY2llbnQgcXVlcmllcyAobm8gbmVlZCB0byBxdWVyeSB0byBrbm93IGlmIGV4cGFuZGFibGUpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q2F0ZWdvcnkgZXh0ZW5kcyBBWFBDYXRlZ29yeUVudGl0eSB7XG4gICAgLy8gTm8gYWRkaXRpb25hbCBwcm9wZXJ0aWVzIG5lZWRlZCAtIGFsbCBpbmhlcml0ZWQgZnJvbSBBWFBDYXRlZ29yeUVudGl0eVxuICAgIC8vIFVzZTogY2hpbGRyZW5Db3VudCBpbnN0ZWFkIG9mIGhhc0NoaWxkXG4gICAgLy8gVXNlOiBpdGVtc0NvdW50IGluc3RlYWQgb2YgaGFzUmVwb3J0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RGVmaW5pdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGNhdGVnb3J5SWRzOiBzdHJpbmdbXTtcbiAgICBwYXJhbWV0ZXJHcm91cHM6IEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwW107XG4gICAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgICBsYXlvdXRzOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uW107ICAvLyBDaGFuZ2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgbGF5b3V0c1xuICAgIGRlZmF1bHRMYXlvdXRJZDogc3RyaW5nOyAgICAgICAgICAgICAgLy8gV2hpY2ggbGF5b3V0IHRvIHNob3cgYnkgZGVmYXVsdFxufVxuXG4vKipcbiAqIExheW91dCBEZWZpbml0aW9uIC0gQXNzb2NpYXRlcyBhIGxheW91dCB3aXRoIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbiB7XG4gICAgaWQ6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgIC8vIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGxheW91dFxuICAgIHRpdGxlOiBzdHJpbmc7ICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IG5hbWUgKGUuZy4sIFwiVGFibGUgVmlld1wiLCBcIkNoYXJ0IFZpZXdcIilcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZzsgICAgICAgICAgLy8gT3B0aW9uYWwgZGVzY3JpcHRpb25cbiAgICBpY29uPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgLy8gSWNvbiBmb3IgbGF5b3V0IHN3aXRjaGVyIFVJXG4gICAgbGF5b3V0OiBBWFBSZXBvcnRMYXlvdXQ7ICAgICAgIC8vIFRoZSBhY3R1YWwgbGF5b3V0IGNvbmZpZ3VyYXRpb25cbiAgICBkYXRhU291cmNlPzogQVhQUmVwb3J0RGF0YVNvdXJjZTsgLy8gT3B0aW9uYWwgbGF5b3V0LXNwZWNpZmljIGRhdGFTb3VyY2UgKG92ZXJyaWRlcyByZXBvcnQtbGV2ZWwpXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhbjsgICAgICAgICAgIC8vIEFsdGVybmF0aXZlIHRvIGRlZmF1bHRMYXlvdXRJZFxuICAgIGV4cG9ydD86IEFYUEV4cG9ydE9wdGlvbnM7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRQYXJhbWV0ZXJHcm91cCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogQVhQUmVwb3J0UGFyYW1ldGVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0UGFyYW1ldGVyIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIERhdGEgU291cmNlIFR5cGVzICAgLS0tLVxuXG5leHBvcnQgdHlwZSBBWFBSZXBvcnREYXRhU291cmNlID1cbiAgICB8IEFYUFF1ZXJ5RGF0YVNvdXJjZVxuICAgIHwgQVhQQ3VzdG9tRGF0YVNvdXJjZVxuICAgIHwgQVhQQWdncmVnYXRlZERhdGFTb3VyY2VcbiAgICB8IEFYUFRyYW5zZm9ybWVkRGF0YVNvdXJjZTtcblxuLyoqXG4gKiBRdWVyeSBEYXRhIFNvdXJjZSAtIFVzZWQgZm9yIGV4ZWN1dGluZyBwcmVkZWZpbmVkIHF1ZXJpZXMgKEFYUFF1ZXJ5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFF1ZXJ5RGF0YVNvdXJjZSB7XG4gICAgdHlwZTogJ3F1ZXJ5JztcbiAgICBuYW1lOiBzdHJpbmc7IC8vIFRoZSByZWdpc3RlcmVkIHF1ZXJ5IG5hbWUsIGUuZy4sICdnZXRFbXBsb3llZUxpc3QnXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107IC8vIE1hcHMgcmVwb3J0IHBhcmFtZXRlcnMgdG8gcXVlcnkgaW5wdXRzXG4gICAgc29ydEZpZWxkcz86IEFYUFF1ZXJ5U29ydFtdOyAgICAgICAgICAvLyBEZWZhdWx0IHNvcnRpbmcgYXBwbGllZCBieSB0aGUgYmFja2VuZFxuICAgIHBhZ2luYXRpb24/OiBib29sZWFuOyAgICAgICAgICAgICAgICAgLy8gRW5hYmxlcyBwYWdpbmcgaW4gcmVzdWx0IHNldFxufVxuXG5cblxuLyoqXG4gKiBDdXN0b20gRGF0YSBTb3VyY2UgLSBVc2VkIGZvciBmZXRjaGluZyBkYXRhIGZyb20gY3VzdG9tIHByb3ZpZGVycyBsaWtlIFJFU1QgQVBJcyBvciBleHRlcm5hbCBzZXJ2aWNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEN1c3RvbURhdGFTb3VyY2Uge1xuICAgIHR5cGU6ICdjdXN0b20nO1xuICAgIHByb3ZpZGVyOiBzdHJpbmc7IC8vIEV4YW1wbGU6ICdodHRwOi8vYXBpL3JlcG9ydCcgb3IgJ2N1c3RvbTpNeUhhbmRsZXInXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107IC8vIE1hcHMgcmVwb3J0IHBhcmFtZXRlcnMgdG8gcGF5bG9hZFxuICAgIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9OyAgICAgLy8gQWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgY3VzdG9tIGhhbmRsZXJcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXIgQmluZGluZyAtIE1hcHMgcmVwb3J0LWxldmVsIHBhcmFtZXRlcnMgdG8gYWN0dWFsIHF1ZXJ5L2NvbW1hbmQgaW5wdXQgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0UGFyYW1ldGVyQmluZGluZyB7XG4gICAgcGFyYW1ldGVyS2V5OiBzdHJpbmc7IC8vIFJlcG9ydCBwYXJhbWV0ZXIga2V5LCBlLmcuLCAnc3RhcnREYXRlJ1xuICAgIGJpbmRUbzogc3RyaW5nOyAgICAgICAvLyBJbnB1dCBrZXkgaW4gdGhlIHF1ZXJ5L2NvbW1hbmQgcGF5bG9hZCwgZS5nLiwgJ2ZpbHRlcnMuZnJvbSdcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGVkIERhdGEgU291cmNlIC0gVXNlZCBmb3IgcHJlLWFnZ3JlZ2F0ZWQgZGF0YSBvcHRpbWl6ZWQgZm9yIGNoYXJ0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFnZ3JlZ2F0ZWREYXRhU291cmNlIHtcbiAgICB0eXBlOiAnYWdncmVnYXRlZCc7XG4gICAgYmFzZVF1ZXJ5OiBzdHJpbmc7ICAgIC8vIEJhc2UgcXVlcnkgdG8gYWdncmVnYXRlIGZyb21cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIGdyb3VwQnk6IHN0cmluZ1tdOyAgICAvLyBGaWVsZHMgdG8gZ3JvdXAgYnlcbiAgICBhZ2dyZWdhdGlvbnM6IEFYUEFnZ3JlZ2F0aW9uW107IC8vIEFnZ3JlZ2F0aW9uIG9wZXJhdGlvbnNcbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107XG59XG5cbi8qKlxuICogVHJhbnNmb3JtZWQgRGF0YSBTb3VyY2UgLSBBcHBsaWVzIHRyYW5zZm9ybWF0aW9ucyB0byBleGlzdGluZyBkYXRhIHNvdXJjZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBUcmFuc2Zvcm1lZERhdGFTb3VyY2Uge1xuICAgIHR5cGU6ICd0cmFuc2Zvcm1lZCc7XG4gICAgYmFzZURhdGFTb3VyY2U6IEFYUFJlcG9ydERhdGFTb3VyY2U7IC8vIFNvdXJjZSB0byB0cmFuc2Zvcm1cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIHRyYW5zZm9ybWF0aW9uczogQVhQRGF0YVRyYW5zZm9ybWF0aW9uW107IC8vIExpc3Qgb2YgdHJhbnNmb3JtYXRpb25zXG4gICAgaW5wdXRzPzogQVhQUmVwb3J0UGFyYW1ldGVyQmluZGluZ1tdO1xufVxuXG4vKipcbiAqIEFnZ3JlZ2F0aW9uIG9wZXJhdGlvbiBmb3IgYWdncmVnYXRlZCBkYXRhIHNvdXJjZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBBZ2dyZWdhdGlvbiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcGVyYXRpb246ICdzdW0nIHwgJ2F2ZycgfCAnY291bnQnIHwgJ21pbicgfCAnbWF4JyB8ICdkaXN0aW5jdCc7XG4gICAgYWxpYXM/OiBzdHJpbmc7IC8vIE91dHB1dCBmaWVsZCBuYW1lXG59XG5cbi8qKlxuICogRGF0YSB0cmFuc2Zvcm1hdGlvbiBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBEYXRhVHJhbnNmb3JtYXRpb24ge1xuICAgIHR5cGU6ICdmaWx0ZXInIHwgJ3NvcnQnIHwgJ2dyb3VwJyB8ICdwaXZvdCcgfCAnZm9ybWF0JztcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIFRyYW5zZm9ybWF0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IFR5cGVzICAgLS0tLVxuXG5leHBvcnQgdHlwZSBBWFBSZXBvcnRMYXlvdXQgPVxuICAgIHwgQVhQUmVwb3J0VGFibGVMYXlvdXRcbiAgICB8IEFYUFJlcG9ydENoYXJ0TGF5b3V0XG5cbi8qKlxuICogVGFibGUgTGF5b3V0IC0gRGlzcGxheXMgZGF0YSBpbiB0YWJ1bGFyIGZvcm1hdFxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0VGFibGVMYXlvdXRSb3dBY3Rpb24gZXh0ZW5kcyBBWFBBY3Rpb25NZW51SXRlbSB7XG4gICAgcHJpb3JpdHk6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknO1xuICAgIHR5cGU6IEFYUFN5c3RlbUFjdGlvblR5cGUgfCBzdHJpbmc7XG4gICAgZGVmYXVsdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0VGFibGVMYXlvdXQge1xuICAgIHR5cGU6ICd0YWJsZSc7XG4gICAgY29sdW1uczogQVhQUmVwb3J0Q29sdW1uW107XG4gICAgYWN0aW9ucz86IEFYUFJlcG9ydFRhYmxlTGF5b3V0Um93QWN0aW9uW107XG4gICAgb3B0aW9ucz86IEFYUFRhYmxlT3B0aW9ucztcbiAgICBncm91cEJ5Pzogc3RyaW5nW107XG4gICAgY29uZGl0aW9uYWxGb3JtYXR0aW5nPzogQVhQQ29uZGl0aW9uYWxGb3JtYXRSdWxlW107XG4gICAgc3VtbWFyeT86IEFYUFJlcG9ydFN1bW1hcnlPcHRpb25zW107XG4gICAgaGVhZGVyPzogQVhQUmVwb3J0SGVhZGVyRm9vdGVyO1xuICAgIGZvb3Rlcj86IEFYUFJlcG9ydEhlYWRlckZvb3Rlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBUYWJsZU9wdGlvbnMge1xuICAgIHBhZ2luYXRpb24/OiBib29sZWFuO1xuICAgIHN0aWNreUhlYWRlcj86IGJvb2xlYW47XG4gICAgc3RyaXBlZFJvd3M/OiBib29sZWFuO1xuICAgIHNvcnRpbmc/OiBBWFBRdWVyeVNvcnRbXTtcbiAgICBzZWxlY3RhYmxlPzoge1xuICAgICAgICBtb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCAnbm9uZSc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDaGFydCBMYXlvdXQgLSBEaXNwbGF5cyBkYXRhIGluIHZhcmlvdXMgY2hhcnQgZm9ybWF0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENoYXJ0TGF5b3V0IHtcbiAgICB0eXBlOiAnY2hhcnQnO1xuICAgIG9wdGlvbnM6IEFYUFJlcG9ydENoYXJ0T3B0aW9ucztcbiAgICBoZWFkZXI/OiBBWFBSZXBvcnRIZWFkZXJGb290ZXI7XG4gICAgZm9vdGVyPzogQVhQUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENoYXJ0T3B0aW9ucyB7XG4gICAgY2hhcnRUeXBlOiAnYmFyJyB8ICdsaW5lJyB8ICdwaWUnIHwgJ2RvdWdobnV0JyB8ICdhcmVhJyB8ICdzY2F0dGVyJyB8ICdyYWRhcicgfCAnbWl4ZWQnO1xuICAgIGRhdGFNYXBwaW5nOiBBWFBDaGFydERhdGFNYXBwaW5nO1xuICAgIHN0eWxpbmc/OiBBWFBDaGFydFN0eWxpbmc7XG4gICAgaW50ZXJhY3Rpdml0eT86IEFYUENoYXJ0SW50ZXJhY3Rpdml0eTtcbn1cblxuLyoqXG4gKiBDaGFydCBEYXRhIE1hcHBpbmcgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUENoYXJ0RGF0YU1hcHBpbmcge1xuICAgIC8vIENvcmUgZmllbGRzXG4gICAgeEZpZWxkOiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAvLyBYLWF4aXMgZGF0YSBmaWVsZFxuICAgIHlGaWVsZHM6IHN0cmluZyB8IHN0cmluZ1tdOyAgICAgICAgLy8gWS1heGlzIGRhdGEgZmllbGQocykgZm9yIG11bHRpcGxlIHNlcmllc1xuXG4gICAgLy8gR3JvdXBpbmcgYW5kIGNhdGVnb3JpemF0aW9uXG4gICAgZ3JvdXBCeT86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBHcm91cCBkYXRhIGJ5IHRoaXMgZmllbGRcbiAgICBzZXJpZXNGaWVsZD86IHN0cmluZzsgICAgICAgICAgICAgIC8vIEZpZWxkIHRvIGNyZWF0ZSBtdWx0aXBsZSBzZXJpZXNcblxuICAgIC8vIFNwZWNpYWwgZmllbGRzIGZvciBzcGVjaWZpYyBjaGFydCB0eXBlc1xuICAgIHNpemVGaWVsZD86IHN0cmluZzsgICAgICAgICAgICAgICAgLy8gRm9yIGJ1YmJsZSBjaGFydHNcbiAgICBjb2xvckZpZWxkPzogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIEZvciBncmFkaWVudC9jb25kaXRpb25hbCBjb2xvcmluZ1xuICAgIGxhYmVsRmllbGQ/OiBzdHJpbmc7ICAgICAgICAgICAgICAgLy8gQ3VzdG9tIGxhYmVsIGZpZWxkXG5cbiAgICAvLyBEYXRhIGFnZ3JlZ2F0aW9uXG4gICAgYWdncmVnYXRpb24/OiB7XG4gICAgICAgIG1ldGhvZDogJ3N1bScgfCAnYXZnJyB8ICdjb3VudCcgfCAnbWluJyB8ICdtYXgnO1xuICAgICAgICBmaWVsZDogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogQ2hhcnQgVmlzdWFsIFN0eWxpbmcgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUENoYXJ0U3R5bGluZyB7XG4gICAgLy8gVGhlbWUgYW5kIGNvbG9yc1xuICAgIGNvbG9yU2NoZW1lPzogJ2RlZmF1bHQnIHwgJ3ByaW1hcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgfCAnY3VzdG9tJztcbiAgICBjdXN0b21Db2xvcnM/OiBzdHJpbmdbXTtcblxuICAgIC8vIENoYXJ0IGFwcGVhcmFuY2VcbiAgICBncmlkTGluZXM/OiBib29sZWFuO1xuICAgIGxlZ2VuZD86IHtcbiAgICAgICAgc2hvdzogYm9vbGVhbjtcbiAgICAgICAgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuICAgIH07XG5cbiAgICAvLyBBeGVzIGNvbmZpZ3VyYXRpb25cbiAgICB4QXhpcz86IEFYUENoYXJ0QXhpc0NvbmZpZztcbiAgICB5QXhpcz86IEFYUENoYXJ0QXhpc0NvbmZpZztcblxuICAgIC8vIEFuaW1hdGlvblxuICAgIGFuaW1hdGlvbj86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgZHVyYXRpb24/OiBudW1iZXI7XG4gICAgfTtcblxuICAgIC8vIENoYXJ0LXNwZWNpZmljIHN0eWxpbmdcbiAgICBjaGFydFNwZWNpZmljPzoge1xuICAgICAgICAvLyBCYXIgY2hhcnQgb3B0aW9uc1xuICAgICAgICBiYXI/OiB7XG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgICAgICAgICAgIG1vZGU6ICdncm91cGVkJyB8ICdzdGFja2VkJztcbiAgICAgICAgICAgIGJhcldpZHRoPzogbnVtYmVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIExpbmUgY2hhcnQgb3B0aW9uc1xuICAgICAgICBsaW5lPzoge1xuICAgICAgICAgICAgc3R5bGU6ICdzdHJhaWdodCcgfCAnY3VydmVkJyB8ICdzdGVwcGVkJztcbiAgICAgICAgICAgIHNob3dQb2ludHM/OiBib29sZWFuO1xuICAgICAgICAgICAgdGVuc2lvbj86IG51bWJlcjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBcmVhIGNoYXJ0IG9wdGlvbnNcbiAgICAgICAgYXJlYT86IHtcbiAgICAgICAgICAgIG1vZGU6ICdub3JtYWwnIHwgJ3N0YWNrZWQnIHwgJ3BlcmNlbnRhZ2UnO1xuICAgICAgICAgICAgb3BhY2l0eT86IG51bWJlcjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQaWUvRG91Z2hudXQgb3B0aW9uc1xuICAgICAgICBwaWU/OiB7XG4gICAgICAgICAgICBzdGFydEFuZ2xlPzogbnVtYmVyO1xuICAgICAgICAgICAgaW5uZXJSYWRpdXM/OiBudW1iZXI7IC8vIEZvciBkb3VnaG51dCBjaGFydHNcbiAgICAgICAgICAgIHNob3dMYWJlbHM/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgIH07XG59XG5cbi8qKlxuICogQ2hhcnQgQXhpcyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnRBeGlzQ29uZmlnIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzaG93PzogYm9vbGVhbjtcbiAgICB0eXBlPzogJ2xpbmVhcicgfCAnbG9nYXJpdGhtaWMnIHwgJ2RhdGV0aW1lJyB8ICdjYXRlZ29yeSc7XG4gICAgbWluPzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIG1heD86IG51bWJlciB8IHN0cmluZztcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgZ3JpZExpbmVzPzogYm9vbGVhbjtcbiAgICB0aWNrSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2hhcnQgSW50ZXJhY3Rpdml0eSBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnRJbnRlcmFjdGl2aXR5IHtcbiAgICAvLyBab29tIGFuZCBwYW5cbiAgICB6b29tPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBtb2RlPzogJ3gnIHwgJ3knIHwgJ3h5JztcbiAgICB9O1xuXG4gICAgLy8gVG9vbHRpcHNcbiAgICB0b29sdGlwcz86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgICAgICBzaG93T25Ib3Zlcj86IGJvb2xlYW47XG4gICAgfTtcblxuICAgIC8vIENsaWNrIGV2ZW50c1xuICAgIG9uQ2xpY2s/OiB7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIGFjdGlvbj86ICdkcmlsbC1kb3duJyB8ICdmaWx0ZXInIHwgJ2N1c3RvbSc7XG4gICAgfTtcblxuICAgIC8vIFNlbGVjdGlvblxuICAgIHNlbGVjdGlvbj86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgbW9kZT86ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcbiAgICB9O1xuXG4gICAgLy8gRXhwb3J0XG4gICAgZXhwb3J0Pzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBmb3JtYXRzPzogKCdwbmcnIHwgJ2pwZycgfCAncGRmJyB8ICdzdmcnKVtdO1xuICAgIH07XG59XG5cblxuLy8jcmVnaW9uIC0tLS0gICBTaGFyZWQgTW9kZWxzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENvbHVtbiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcbiAgICB3aWRnZXQ/OiBBWFBXaWRnZXRDb2x1bW5Ob2RlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0U3VtbWFyeU9wdGlvbnMge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0aW9uOiAnc3VtJyB8ICdhdmcnIHwgJ2NvdW50JyB8ICdtaW4nIHwgJ21heCc7XG4gICAgZGlzcGxheUluOiAnZ3JvdXBGb290ZXInIHwgJ3JlcG9ydEZvb3Rlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29uZGl0aW9uYWxGb3JtYXRSdWxlIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGNvbmRpdGlvbjogJz4nIHwgJzwnIHwgJz0nIHwgJyE9JyB8ICdjb250YWlucyc7XG4gICAgdmFsdWU6IGFueTtcbiAgICBzdHlsZToge1xuICAgICAgICBjb2xvcj86IHN0cmluZztcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgICAgICBmb250V2VpZ2h0PzogJ25vcm1hbCcgfCAnYm9sZCc7XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRIZWFkZXJGb290ZXIge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGxvZ29Vcmw/OiBzdHJpbmc7XG4gICAgc2hvd0RhdGU/OiBib29sZWFuO1xuICAgIHNob3dQYXJhbWV0ZXJzPzogYm9vbGVhbjtcbiAgICBjdXN0b21IdG1sPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIExheW91dCBzd2l0Y2hlciBvcHRpb25zIGZvciBVSSBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0U3dpdGNoZXJPcHRpb24ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHR5cGU6IEFYUFJlcG9ydExheW91dFR5cGU7XG59XG5cbi8qKlxuICogUnVudGltZSBsYXlvdXQgc2VsZWN0aW9uIHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0TGF5b3V0U3RhdGUge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgYWN0aXZlTGF5b3V0SWQ6IHN0cmluZztcbiAgICBhdmFpbGFibGVMYXlvdXRzOiBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbltdO1xufVxuXG4vKipcbiAqIExheW91dCB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dFZhbGlkYXRpb25SZXN1bHQge1xuICAgIGlzVmFsaWQ6IGJvb2xlYW47XG4gICAgZXJyb3JzOiBzdHJpbmdbXTtcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERhdGEgc291cmNlIHJlc29sdXRpb24gcmVzdWx0IGZvciBhIHNwZWNpZmljIGxheW91dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dERhdGFTb3VyY2VSZXNvbHV0aW9uIHtcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xuICAgIGRhdGFTb3VyY2U6IEFYUFJlcG9ydERhdGFTb3VyY2U7XG4gICAgc291cmNlOiAnbGF5b3V0JyB8ICdyZXBvcnQnIHwgJ25vbmUnOyAvLyBXaGVyZSB0aGUgZGF0YVNvdXJjZSBjYW1lIGZyb21cbn1cblxuLyoqXG4gKiBMYXlvdXQgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCByZXNvbHZlZCBkYXRhIHNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dEV4ZWN1dGlvbkNvbnRleHQge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgbGF5b3V0SWQ6IHN0cmluZztcbiAgICBkYXRhU291cmNlOiBBWFBSZXBvcnREYXRhU291cmNlO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cblxuZXhwb3J0IHR5cGUgQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0ID1cbiAgICB8IHsgdHlwZTogJ3RhYmxlJywgaXRlbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10sIHRvdGFsOiBudW1iZXIgfVxuICAgIHwgeyB0eXBlOiAnY2hhcnQnLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9XG4gICAgfCB7IHR5cGU6ICdjYXJkcycsIGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIH1cbiAgICB8IHsgdHlwZTogJ2N1c3RvbScsIGRhdGE6IHVua25vd24gfTtcblxuXG5leHBvcnQgdHlwZSBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0ID0gQVhQUmVwb3J0TGF5b3V0ICYgeyBkYXRhOiBBWFBFeGVjdXRpb25SZXBvcnRSZXN1bHQgfTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmQgZXh0ZW5kcyBBWFBDb21tYW5kPEFYUExheW91dEV4ZWN1dGlvbkNvbnRleHQsIEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQ+IHtcbn1cblxuLyoqXG4gKiBSZXBvcnQgZXhlY3V0aW9uIHN0YXR1cyBhbmQgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRFeGVjdXRpb25TdGF0dXMge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgbGF5b3V0SWQ6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdleGVjdXRpbmcnIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJyB8ICdjYW5jZWxsZWQnO1xuICAgIHN0YXJ0VGltZTogRGF0ZTtcbiAgICBlbmRUaW1lPzogRGF0ZTtcbiAgICBkdXJhdGlvbj86IG51bWJlcjsgLy8gbWlsbGlzZWNvbmRzXG4gICAgcmVjb3JkQ291bnQ/OiBudW1iZXI7XG4gICAgZXJyb3I/OiBBWFBSZXBvcnRFeGVjdXRpb25FcnJvcjtcbn1cblxuLyoqXG4gKiBEZXRhaWxlZCBlcnJvciBpbmZvcm1hdGlvbiBmb3IgcmVwb3J0IGV4ZWN1dGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydEV4ZWN1dGlvbkVycm9yIHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzdGFjaz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXBvcnQgZXhlY3V0aW9uIHJlcXVlc3Qgd2l0aCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RXhlY3V0aW9uUmVxdWVzdCB7XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIG9wdGlvbnM/OiBBWFBSZXBvcnRFeGVjdXRpb25PcHRpb25zO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlcG9ydCBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRFeGVjdXRpb25PcHRpb25zIHtcbiAgICB0aW1lb3V0PzogbnVtYmVyOyAvLyBtaWxsaXNlY29uZHNcbiAgICBwcmlvcml0eT86ICdsb3cnIHwgJ25vcm1hbCcgfCAnaGlnaCc7XG4gICAgY2FjaGU/OiBib29sZWFuO1xuICAgIGNhY2hlVGltZW91dD86IG51bWJlcjsgLy8gc2Vjb25kc1xufVxuXG4vLyNlbmRyZWdpb25cblxuXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const AXP_REPORT_DEFINITION_PROVIDER = new InjectionToken('AXP_REPORT_DEFINITION_PROVIDER', {\n factory: () => [],\n});\nexport const AXP_REPORT_CATEGORY_PROVIDER = new InjectionToken('AXP_REPORT_CATEGORY_PROVIDER', {\n factory: () => [],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9yZXBvcnRzL3JlcG9ydC1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQXFDLGdDQUFnQyxFQUFFO0lBQ25JLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQVlILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQyw4QkFBOEIsRUFBRTtJQUM3SCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2F0ZWdvcnksIEFYUFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuL3JlcG9ydC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclxuICAgIHwgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXI+O1xuXG5leHBvcnQgY29uc3QgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuW10+KCdBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVInLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIGdldExpc3QoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD47XG59XG5cblxuZXhwb3J0IHR5cGUgQVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJcbiAgICB8IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJUb2tlbltdPignQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+O1xufVxuXG5cblxuIl19","//#region ---- Imports ----\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from './report-definition.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Optimized Report Definition Service\n *\n * Performance optimizations:\n * 1. Uses childrenCount to determine if category has children (no query needed)\n * 2. Uses itemsCount to determine if category has reports (no query needed)\n * 3. Aggressive caching prevents duplicate API calls\n * 4. Single pending request per resource prevents race conditions\n * 5. Lazy loading - only loads data when needed\n */\nexport class AXPReportDefinitionService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.categoryProviders = inject(AXP_REPORT_CATEGORY_PROVIDER, { optional: true }) || [];\n this.definitionProviders = inject(AXP_REPORT_DEFINITION_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Cache Storage ----\n /** Cache for categories by id - O(1) lookup */\n this.categoriesById = new Map();\n /** Cache for categories by parentId - O(1) lookup */\n this.categoriesByParentId = new Map();\n /** Cache for report definitions by categoryId - O(1) lookup */\n this.definitionsByCategory = new Map();\n /** Cache for individual report definitions by id - O(1) lookup */\n this.definitionsById = new Map();\n /** Track which provider index owns each category (by category ID) */\n this.categoryOwnership = new Map(); // Maps categoryId → provider index\n /** Pending API requests to prevent duplicate calls */\n this.pendingCategoriesRequests = new Map();\n this.pendingDefinitionsRequests = new Map();\n this.pendingReportRequests = new Map();\n }\n //#endregion\n //#region ---- Public API: Categories ----\n /**\n * Get categories by parentId with aggressive caching\n *\n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls during navigation\n *\n * @param parentId - Parent category ID (undefined = root categories)\n * @returns Array of categories with count metadata (childrenCount, itemsCount)\n */\n async getCategories(parentId) {\n // ✅ Fast path: Return cached result\n if (this.categoriesByParentId.has(parentId)) {\n return this.categoriesByParentId.get(parentId);\n }\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingCategoriesRequests.has(parentId)) {\n return this.pendingCategoriesRequests.get(parentId);\n }\n // ✅ Create single request and cache it\n const requestPromise = this.loadCategoriesFromProviders(parentId);\n this.pendingCategoriesRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single category by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getCategoryById(categoryId) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n // ✅ Search in cached parent-child lists\n for (const categories of this.categoriesByParentId.values()) {\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n this.categoriesById.set(categoryId, found);\n return found;\n }\n }\n // ✅ Load root categories if not loaded\n if (!this.categoriesByParentId.has(undefined)) {\n await this.getCategories();\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n }\n // ✅ Breadth-first search through hierarchy\n return this.searchCategoryInHierarchy(categoryId);\n }\n /**\n * Get category path from root to specified category\n *\n * Optimization: Builds path using cached categories only\n */\n async getCategoriesPathById(categoryId) {\n const path = [];\n let currentCategoryId = categoryId;\n while (currentCategoryId) {\n const category = await this.getCategoryById(currentCategoryId);\n if (!category) {\n throw new Error(`Category '${currentCategoryId}' not found`);\n }\n path.unshift(category);\n currentCategoryId = category.parentId;\n }\n return path;\n }\n //#endregion\n //#region ---- Public API: Report Definitions ----\n /**\n * Get report definitions for a category with smart caching\n *\n * Optimization: Checks itemsCount before querying\n * - If itemsCount = 0, returns empty array (no API call)\n * - If itemsCount > 0, loads and caches reports\n * - Returns cached result on subsequent calls\n *\n * @param categoryId - Category ID to get reports from\n * @returns Array of report definitions\n */\n async getReportsByCategoryId(categoryId) {\n // ✅ Fast path: Return cached result\n if (this.definitionsByCategory.has(categoryId)) {\n return this.definitionsByCategory.get(categoryId);\n }\n // ✅ Smart optimization: Check itemsCount before querying\n const category = await this.getCategoryById(categoryId);\n if (category && category.itemsCount !== undefined && category.itemsCount === 0) {\n // Category has no reports - cache empty array and skip API call\n const emptyArray = [];\n this.definitionsByCategory.set(categoryId, emptyArray);\n return emptyArray;\n }\n // ✅ Prevent duplicate requests\n if (this.pendingDefinitionsRequests.has(categoryId)) {\n return this.pendingDefinitionsRequests.get(categoryId);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportsFromProviders(categoryId);\n this.pendingDefinitionsRequests.set(categoryId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single report definition by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval\n */\n async getReportById(id) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.definitionsById.has(id)) {\n return this.definitionsById.get(id);\n }\n // ✅ Prevent duplicate requests\n if (this.pendingReportRequests.has(id)) {\n return this.pendingReportRequests.get(id);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportFromProviders(id);\n this.pendingReportRequests.set(id, requestPromise);\n return requestPromise;\n }\n /**\n * Get category ID containing a specific report\n *\n * Optimization: Searches cache first, loads on-demand if needed\n */\n async getCategoryIdByReportId(reportId) {\n // ✅ Search in cached reports\n for (const [categoryId, reports] of this.definitionsByCategory.entries()) {\n if (reports.some(report => report.id === reportId)) {\n return categoryId;\n }\n }\n // ✅ Try loading the report to find its category\n const report = await this.getReportById(reportId);\n if (report && report.categoryIds && report.categoryIds.length > 0) {\n return report.categoryIds[0]; // Return first category\n }\n return undefined;\n }\n /**\n * Get category path for a report\n */\n async getCategoriesPathByReportId(reportId) {\n const categoryId = await this.getCategoryIdByReportId(reportId);\n if (!categoryId) {\n throw new Error(`Report '${reportId}' not found in any category`);\n }\n return this.getCategoriesPathById(categoryId);\n }\n //#endregion\n //#region ---- Private: Data Loading ----\n /**\n * Load categories from providers and cache results\n *\n * Optimization: Tracks provider ownership to avoid unnecessary API calls\n * - For root (parentId = undefined): Query ALL providers\n * - For children: Only query the provider that owns the parent\n */\n async loadCategoriesFromProviders(parentId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.categoryProviders);\n const categories = [];\n // Determine which provider(s) to query\n const providerIndicesToQuery = parentId\n ? this.getProviderIndexForCategory(parentId)\n : null; // Root: query all providers\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const cats = await p.value.getList(parentId);\n if (Array.isArray(cats) && cats.length > 0) {\n categories.push(...cats);\n // ✅ Track ownership: This provider INDEX owns these categories\n cats.forEach(cat => this.categoryOwnership.set(cat.id, i));\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.categoriesByParentId.set(parentId, categories);\n categories.forEach(cat => this.categoriesById.set(cat.id, cat));\n return categories;\n }\n finally {\n this.pendingCategoriesRequests.delete(parentId);\n }\n }\n /**\n * Get the provider index that owns a specific category\n *\n * @returns Array with provider index, or null if ownership unknown (query all)\n */\n getProviderIndexForCategory(categoryId) {\n const ownerIndex = this.categoryOwnership.get(categoryId);\n if (ownerIndex !== undefined) {\n return [ownerIndex];\n }\n // Ownership unknown - will query all providers (fallback)\n return null;\n }\n /**\n * Load report definitions from providers and cache results\n *\n * Optimization: Only queries the provider that owns the category\n * Uses provider INDEX to match category provider with definition provider\n */\n async loadReportsFromProviders(categoryId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n const definitions = [];\n // ✅ Smart routing: Get provider INDEX that owns this category\n const ownerIndex = this.categoryOwnership.get(categoryId);\n const providerIndicesToQuery = ownerIndex !== undefined ? [ownerIndex] : null;\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const defs = await p.value.getList(categoryId);\n if (Array.isArray(defs)) {\n definitions.push(...defs);\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.definitionsByCategory.set(categoryId, definitions);\n definitions.forEach(def => this.definitionsById.set(def.id, def));\n return definitions;\n }\n finally {\n this.pendingDefinitionsRequests.delete(categoryId);\n }\n }\n /**\n * Load single report from providers and cache result\n */\n async loadReportFromProviders(id) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n // Try providers first (full report with layouts)\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getById === 'function') {\n try {\n const result = await p.value.getById(id);\n if (result) {\n this.definitionsById.set(id, result);\n return result;\n }\n }\n catch {\n // Continue on error\n }\n }\n }\n // Fallback: Search in cached reports\n for (const reports of this.definitionsByCategory.values()) {\n const found = reports.find(report => report.id === id);\n if (found) {\n this.definitionsById.set(id, found);\n return found;\n }\n }\n return undefined;\n }\n finally {\n this.pendingReportRequests.delete(id);\n }\n }\n /**\n * Breadth-first search through category hierarchy\n */\n async searchCategoryInHierarchy(categoryId) {\n const searchQueue = [undefined];\n const searched = new Set();\n while (searchQueue.length > 0) {\n const parentId = searchQueue.shift();\n if (searched.has(parentId))\n continue;\n searched.add(parentId);\n const categories = await this.getCategories(parentId);\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n return found;\n }\n // ✅ Optimization: Only search children if childrenCount > 0\n for (const category of categories) {\n if (category.childrenCount > 0 && !searched.has(category.id)) {\n searchQueue.push(category.id);\n }\n }\n }\n return undefined;\n }\n //#endregion\n //#region ---- Cache Management ----\n /**\n * Check if category has children (uses cached count)\n */\n categoryHasChildren(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? category.childrenCount > 0 : false;\n }\n /**\n * Check if category has reports (uses cached count)\n */\n categoryHasReports(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? (category.itemsCount ?? 0) > 0 : false;\n }\n /**\n * Clear all caches\n */\n clearAllCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n /**\n * Clear categories cache only\n */\n clearCategoriesCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n }\n /**\n * Clear reports cache only\n */\n clearReportsCache() {\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LWRlZmluaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRTVHLFlBQVk7QUFFWjs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBSHZDO1FBSUksMENBQTBDO1FBRXpCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRix3QkFBbUIsR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEcsWUFBWTtRQUVaLHFDQUFxQztRQUVyQywrQ0FBK0M7UUFDdkMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQUU5RCxxREFBcUQ7UUFDN0MseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTJDLENBQUM7UUFFbEYsK0RBQStEO1FBQ3ZELDBCQUFxQixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBRXpFLGtFQUFrRTtRQUMxRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBRWpFLHFFQUFxRTtRQUM3RCxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQyxDQUFDLG1DQUFtQztRQUUxRixzREFBc0Q7UUFDOUMsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQW9E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SyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0EvYlEsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGdkIsTUFBTTs7NEZBRVQsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBSZXBvcnRDYXRlZ29yeSwgQVhQUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4vcmVwb3J0LnR5cGVzJztcbmltcG9ydCB7IEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiB9IGZyb20gJy4vcmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPcHRpbWl6ZWQgUmVwb3J0IERlZmluaXRpb24gU2VydmljZVxuICogXG4gKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zOlxuICogMS4gVXNlcyBjaGlsZHJlbkNvdW50IHRvIGRldGVybWluZSBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDIuIFVzZXMgaXRlbXNDb3VudCB0byBkZXRlcm1pbmUgaWYgY2F0ZWdvcnkgaGFzIHJlcG9ydHMgKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDMuIEFnZ3Jlc3NpdmUgY2FjaGluZyBwcmV2ZW50cyBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gKiA0LiBTaW5nbGUgcGVuZGluZyByZXF1ZXN0IHBlciByZXNvdXJjZSBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnNcbiAqIDUuIExhenkgbG9hZGluZyAtIG9ubHkgbG9hZHMgZGF0YSB3aGVuIG5lZWRlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnREZWZpbml0aW9uU2VydmljZSB7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcm92aWRlcnMgJiBDYWNoZXMgICAtLS0tXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZpbml0aW9uUHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBbXTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDYWNoZSBTdG9yYWdlICAgLS0tLVxuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFYUFJlcG9ydENhdGVnb3J5PigpO1xuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeVBhcmVudElkID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIEFYUFJlcG9ydENhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIHJlcG9ydCBkZWZpbml0aW9ucyBieSBjYXRlZ29yeUlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlDYXRlZ29yeSA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uW10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIGluZGl2aWR1YWwgcmVwb3J0IGRlZmluaXRpb25zIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uPigpO1xuXG4gICAgLyoqIFRyYWNrIHdoaWNoIHByb3ZpZGVyIGluZGV4IG93bnMgZWFjaCBjYXRlZ29yeSAoYnkgY2F0ZWdvcnkgSUQpICovXG4gICAgcHJpdmF0ZSBjYXRlZ29yeU93bmVyc2hpcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7IC8vIE1hcHMgY2F0ZWdvcnlJZCDihpIgcHJvdmlkZXIgaW5kZXhcblxuICAgIC8qKiBQZW5kaW5nIEFQSSByZXF1ZXN0cyB0byBwcmV2ZW50IGR1cGxpY2F0ZSBjYWxscyAqL1xuICAgIHByaXZhdGUgcGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cyA9IG5ldyBNYXA8c3RyaW5nIHwgdW5kZWZpbmVkLCBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ1JlcG9ydFJlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4+KCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIEFQSTogQ2F0ZWdvcmllcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIHdpdGggYWdncmVzc2l2ZSBjYWNoaW5nXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBSZXR1cm5zIGNhY2hlZCByZXN1bHQgaW1tZWRpYXRlbHkgaWYgYXZhaWxhYmxlLFxuICAgICAqIHByZXZlbnRpbmcgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIGR1cmluZyBuYXZpZ2F0aW9uXG4gICAgICogXG4gICAgICogQHBhcmFtIHBhcmVudElkIC0gUGFyZW50IGNhdGVnb3J5IElEICh1bmRlZmluZWQgPSByb290IGNhdGVnb3JpZXMpXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgY2F0ZWdvcmllcyB3aXRoIGNvdW50IG1ldGFkYXRhIChjaGlsZHJlbkNvdW50LCBpdGVtc0NvdW50KVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXMocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHBhcmVudElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuZ2V0KHBhcmVudElkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHM6IFJldHVybiBwZW5kaW5nIHByb21pc2VcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmdldChwYXJlbnRJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIENyZWF0ZSBzaW5nbGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBjYXRlZ29yeSBieSBJRCB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWwsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiBzZWFyY2hpbmcgY2FjaGUsIHRoZW4gcHJvdmlkZXJzIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5QnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBGYXN0IHBhdGg6IE8oMSkgbG9va3VwIGluIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXNCeUlkLmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcGFyZW50LWNoaWxkIGxpc3RzXG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcmllcyBvZiB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWQuc2V0KGNhdGVnb3J5SWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgTG9hZCByb290IGNhdGVnb3JpZXMgaWYgbm90IGxvYWRlZFxuICAgICAgICBpZiAoIXRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5SWQuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIEJyZWFkdGgtZmlyc3Qgc2VhcmNoIHRocm91Z2ggaGllcmFyY2h5XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaENhdGVnb3J5SW5IaWVyYXJjaHkoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNhdGVnb3J5IHBhdGggZnJvbSByb290IHRvIHNwZWNpZmllZCBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQnVpbGRzIHBhdGggdXNpbmcgY2FjaGVkIGNhdGVnb3JpZXMgb25seVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgY29uc3QgcGF0aDogQVhQUmVwb3J0Q2F0ZWdvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudENhdGVnb3J5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNhdGVnb3J5SWQ7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRDYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGN1cnJlbnRDYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhdGVnb3J5ICcke2N1cnJlbnRDYXRlZ29yeUlkfScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoY2F0ZWdvcnkpO1xuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5SWQgPSBjYXRlZ29yeS5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJOiBSZXBvcnQgRGVmaW5pdGlvbnMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgcmVwb3J0IGRlZmluaXRpb25zIGZvciBhIGNhdGVnb3J5IHdpdGggc21hcnQgY2FjaGluZ1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQ2hlY2tzIGl0ZW1zQ291bnQgYmVmb3JlIHF1ZXJ5aW5nXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID0gMCwgcmV0dXJucyBlbXB0eSBhcnJheSAobm8gQVBJIGNhbGwpXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID4gMCwgbG9hZHMgYW5kIGNhY2hlcyByZXBvcnRzXG4gICAgICogLSBSZXR1cm5zIGNhY2hlZCByZXN1bHQgb24gc3Vic2VxdWVudCBjYWxsc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkIC0gQ2F0ZWdvcnkgSUQgdG8gZ2V0IHJlcG9ydHMgZnJvbVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHJlcG9ydCBkZWZpbml0aW9uc1xuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydHNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmdldChjYXRlZ29yeUlkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgU21hcnQgb3B0aW1pemF0aW9uOiBDaGVjayBpdGVtc0NvdW50IGJlZm9yZSBxdWVyeWluZ1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpO1xuICAgICAgICBpZiAoY2F0ZWdvcnkgJiYgY2F0ZWdvcnkuaXRlbXNDb3VudCAhPT0gdW5kZWZpbmVkICYmIGNhdGVnb3J5Lml0ZW1zQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIC8vIENhdGVnb3J5IGhhcyBubyByZXBvcnRzIC0gY2FjaGUgZW1wdHkgYXJyYXkgYW5kIHNraXAgQVBJIGNhbGxcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5QXJyYXk6IEFYUFJlcG9ydERlZmluaXRpb25bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5Q2F0ZWdvcnkuc2V0KGNhdGVnb3J5SWQsIGVtcHR5QXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5nZXQoY2F0ZWdvcnlJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRSZXBvcnRzRnJvbVByb3ZpZGVycyhjYXRlZ29yeUlkKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5zZXQoY2F0ZWdvcnlJZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2luZ2xlIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElEIHdpdGggTygxKSBsb29rdXBcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IFVzZXMgTWFwIGZvciBpbnN0YW50IHJldHJpZXZhbFxuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyDinIUgRmFzdCBwYXRoOiBPKDEpIGxvb2t1cCBpbiBjYWNoZVxuICAgICAgICBpZiAodGhpcy5kZWZpbml0aW9uc0J5SWQuaGFzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmdldChpZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZXBvcnRSZXF1ZXN0cy5nZXQoaWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIGZyb20gcHJvdmlkZXJzXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQcm9taXNlID0gdGhpcy5sb2FkUmVwb3J0RnJvbVByb3ZpZGVycyhpZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLnNldChpZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgSUQgY29udGFpbmluZyBhIHNwZWNpZmljIHJlcG9ydFxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogU2VhcmNoZXMgY2FjaGUgZmlyc3QsIGxvYWRzIG9uLWRlbWFuZCBpZiBuZWVkZWRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yeUlkQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICBmb3IgKGNvbnN0IFtjYXRlZ29yeUlkLCByZXBvcnRzXSBvZiB0aGlzLmRlZmluaXRpb25zQnlDYXRlZ29yeS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChyZXBvcnRzLnNvbWUocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gcmVwb3J0SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5SWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgVHJ5IGxvYWRpbmcgdGhlIHJlcG9ydCB0byBmaW5kIGl0cyBjYXRlZ29yeVxuICAgICAgICBjb25zdCByZXBvcnQgPSBhd2FpdCB0aGlzLmdldFJlcG9ydEJ5SWQocmVwb3J0SWQpO1xuICAgICAgICBpZiAocmVwb3J0ICYmIHJlcG9ydC5jYXRlZ29yeUlkcyAmJiByZXBvcnQuY2F0ZWdvcnlJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydC5jYXRlZ29yeUlkc1swXTsgLy8gUmV0dXJuIGZpcnN0IGNhdGVnb3J5XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yeSBwYXRoIGZvciBhIHJlcG9ydFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SWQgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5SWRCeVJlcG9ydElkKHJlcG9ydElkKTtcbiAgICAgICAgaWYgKCFjYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9ydCAnJHtyZXBvcnRJZH0nIG5vdCBmb3VuZCBpbiBhbnkgY2F0ZWdvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yaWVzUGF0aEJ5SWQoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGU6IERhdGEgTG9hZGluZyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIExvYWQgY2F0ZWdvcmllcyBmcm9tIHByb3ZpZGVycyBhbmQgY2FjaGUgcmVzdWx0c1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogVHJhY2tzIHByb3ZpZGVyIG93bmVyc2hpcCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBBUEkgY2FsbHNcbiAgICAgKiAtIEZvciByb290IChwYXJlbnRJZCA9IHVuZGVmaW5lZCk6IFF1ZXJ5IEFMTCBwcm92aWRlcnNcbiAgICAgKiAtIEZvciBjaGlsZHJlbjogT25seSBxdWVyeSB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBwYXJlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlbXT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5jYXRlZ29yeVByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzOiBBWFBSZXBvcnRDYXRlZ29yeVtdID0gW107XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBwcm92aWRlcihzKSB0byBxdWVyeVxuICAgICAgICAgICAgY29uc3QgcHJvdmlkZXJJbmRpY2VzVG9RdWVyeSA9IHBhcmVudElkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShwYXJlbnRJZClcbiAgICAgICAgICAgICAgICA6IG51bGw7IC8vIFJvb3Q6IHF1ZXJ5IGFsbCBwcm92aWRlcnNcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhdHMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QocGFyZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2F0cykgJiYgY2F0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKC4uLmNhdHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4pyFIFRyYWNrIG93bmVyc2hpcDogVGhpcyBwcm92aWRlciBJTkRFWCBvd25zIHRoZXNlIGNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRzLmZvckVhY2goY2F0ID0+IHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuc2V0KGNhdC5pZCwgaSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGVycm9yIC0gdHJ5IG90aGVyIHByb3ZpZGVyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgQ2FjaGUgcmVzdWx0cyBmb3IgZmFzdCBzdWJzZXF1ZW50IGFjY2Vzc1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5zZXQocGFyZW50SWQsIGNhdGVnb3JpZXMpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKGNhdCA9PiB0aGlzLmNhdGVnb3JpZXNCeUlkLnNldChjYXQuaWQsIGNhdCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwcm92aWRlciBpbmRleCB0aGF0IG93bnMgYSBzcGVjaWZpYyBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFycmF5IHdpdGggcHJvdmlkZXIgaW5kZXgsIG9yIG51bGwgaWYgb3duZXJzaGlwIHVua25vd24gKHF1ZXJ5IGFsbClcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG5cbiAgICAgICAgaWYgKG93bmVySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtvd25lckluZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE93bmVyc2hpcCB1bmtub3duIC0gd2lsbCBxdWVyeSBhbGwgcHJvdmlkZXJzIChmYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCByZXBvcnQgZGVmaW5pdGlvbnMgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdHNcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IE9ubHkgcXVlcmllcyB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBjYXRlZ29yeVxuICAgICAqIFVzZXMgcHJvdmlkZXIgSU5ERVggdG8gbWF0Y2ggY2F0ZWdvcnkgcHJvdmlkZXIgd2l0aCBkZWZpbml0aW9uIHByb3ZpZGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkUmVwb3J0c0Zyb21Qcm92aWRlcnMoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMuZGVmaW5pdGlvblByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uczogQVhQUmVwb3J0RGVmaW5pdGlvbltdID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBTbWFydCByb3V0aW5nOiBHZXQgcHJvdmlkZXIgSU5ERVggdGhhdCBvd25zIHRoaXMgY2F0ZWdvcnlcbiAgICAgICAgICAgIGNvbnN0IG93bmVySW5kZXggPSB0aGlzLmNhdGVnb3J5T3duZXJzaGlwLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgPSBvd25lckluZGV4ICE9PSB1bmRlZmluZWQgPyBbb3duZXJJbmRleF0gOiBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkUHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHJlc29sdmVkUHJvdmlkZXJzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpZiB3ZSBoYXZlIGEgc3BlY2lmaWMgcHJvdmlkZXIgaW5kZXggYW5kIHRoaXMgaXNuJ3QgaXRcbiAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJJbmRpY2VzVG9RdWVyeSAhPT0gbnVsbCAmJiAhcHJvdmlkZXJJbmRpY2VzVG9RdWVyeS5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0TGlzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmcyA9IGF3YWl0IHAudmFsdWUuZ2V0TGlzdChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlZnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbnMucHVzaCguLi5kZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBvbiBlcnJvciAtIHRyeSBvdGhlciBwcm92aWRlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g4pyFIENhY2hlIHJlc3VsdHMgZm9yIGZhc3Qgc3Vic2VxdWVudCBhY2Nlc3NcbiAgICAgICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnNldChjYXRlZ29yeUlkLCBkZWZpbml0aW9ucyk7XG4gICAgICAgICAgICBkZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoZGVmLmlkLCBkZWYpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb25zO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5kZWxldGUoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHNpbmdsZSByZXBvcnQgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdFxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgbG9hZFJlcG9ydEZyb21Qcm92aWRlcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5kZWZpbml0aW9uUHJvdmlkZXJzKTtcblxuICAgICAgICAgICAgLy8gVHJ5IHByb3ZpZGVycyBmaXJzdCAoZnVsbCByZXBvcnQgd2l0aCBsYXlvdXRzKVxuICAgICAgICAgICAgZm9yIChjb25zdCBwIG9mIHJlc29sdmVkUHJvdmlkZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldEJ5SWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHAudmFsdWUuZ2V0QnlJZChpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5SWQuc2V0KGlkLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmFsbGJhY2s6IFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXBvcnRzIG9mIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSByZXBvcnRzLmZpbmQocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gaWQpO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoaWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCcmVhZHRoLWZpcnN0IHNlYXJjaCB0aHJvdWdoIGNhdGVnb3J5IGhpZXJhcmNoeVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgc2VhcmNoQ2F0ZWdvcnlJbkhpZXJhcmNoeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFF1ZXVlOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdID0gW3VuZGVmaW5lZF07XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkID0gbmV3IFNldDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAgICAgd2hpbGUgKHNlYXJjaFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gc2VhcmNoUXVldWUuc2hpZnQoKSE7XG4gICAgICAgICAgICBpZiAoc2VhcmNoZWQuaGFzKHBhcmVudElkKSkgY29udGludWU7XG4gICAgICAgICAgICBzZWFyY2hlZC5hZGQocGFyZW50SWQpO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKHBhcmVudElkKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBPcHRpbWl6YXRpb246IE9ubHkgc2VhcmNoIGNoaWxkcmVuIGlmIGNoaWxkcmVuQ291bnQgPiAwXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgJiYgIXNlYXJjaGVkLmhhcyhjYXRlZ29yeS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUXVldWUucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2FjaGUgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGNhdGVnb3J5IGhhcyBjaGlsZHJlbiAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNDaGlsZHJlbihjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYXRlZ29yeSBoYXMgcmVwb3J0cyAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNSZXBvcnRzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgPyAoY2F0ZWdvcnkuaXRlbXNDb3VudCA/PyAwKSA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgY2FjaGVzXG4gICAgICovXG4gICAgY2xlYXJBbGxDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBjYXRlZ29yaWVzIGNhY2hlIG9ubHlcbiAgICAgKi9cbiAgICBjbGVhckNhdGVnb3JpZXNDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcmVwb3J0cyBjYWNoZSBvbmx5XG4gICAgICovXG4gICAgY2xlYXJSZXBvcnRzQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuXG4iXX0=","export function AXPieChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXBarChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXLineChartReportMapper(data) {\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return [];\n }\n const dataPoints = entries.map(([key, value]) => ({\n x: key,\n y: value,\n }));\n return [\n {\n id: 'series-1',\n label: 'Data Series',\n tooltipLabel: 'Countries Info',\n lineColor: '#d81159',\n fillColor: '#d8115920',\n data: dataPoints,\n },\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBNEI7SUFDakUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELEVBQUUsRUFBRSxHQUFHO1FBQ1AsS0FBSyxFQUFFLEdBQUc7UUFDVixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUE0QjtJQUNqRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsRUFBRSxFQUFFLEdBQUc7UUFDUCxLQUFLLEVBQUUsR0FBRztRQUNWLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQTRCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxLQUFLO0tBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0w7WUFDRSxFQUFFLEVBQUUsVUFBVTtZQUNkLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsSUFBSSxFQUFFLFVBQVU7U0FDakI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFyQ2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2Jhci1jaGFydCc7XG5pbXBvcnQgeyBBWERvbnV0Q2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2RvbnV0LWNoYXJ0JztcbmltcG9ydCB7IEFYTGluZUNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9saW5lLWNoYXJ0JztcblxuZXhwb3J0IGZ1bmN0aW9uIEFYUGllQ2hhcnRSZXBvcnRNYXBwZXIoZGF0YTogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IEFYRG9udXRDaGFydFZhbHVlIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRhdGEpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIGlkOiBrZXksXG4gICAgbGFiZWw6IGtleSxcbiAgICB2YWx1ZTogdmFsdWUsXG4gIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIoZGF0YTogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IEFYQmFyQ2hhcnRWYWx1ZSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkYXRhKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBpZDoga2V5LFxuICAgIGxhYmVsOiBrZXksXG4gICAgdmFsdWU6IHZhbHVlLFxuICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBWExpbmVDaGFydFJlcG9ydE1hcHBlcihkYXRhOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KTogQVhMaW5lQ2hhcnRWYWx1ZSB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhkYXRhKTtcbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGRhdGFQb2ludHMgPSBlbnRyaWVzLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHg6IGtleSxcbiAgICB5OiB2YWx1ZSxcbiAgfSkpO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgaWQ6ICdzZXJpZXMtMScsXG4gICAgICBsYWJlbDogJ0RhdGEgU2VyaWVzJyxcbiAgICAgIHRvb2x0aXBMYWJlbDogJ0NvdW50cmllcyBJbmZvJyxcbiAgICAgIGxpbmVDb2xvcjogJyNkODExNTknLFxuICAgICAgZmlsbENvbG9yOiAnI2Q4MTE1OTIwJyxcbiAgICAgIGRhdGE6IGRhdGFQb2ludHMsXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==","import { AXP_REPORT_DEFINITION_PROVIDER, AXP_REPORT_CATEGORY_PROVIDER } from '../../reports';\nimport { AXPQueryService } from '@acorex/platform/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.report.name}`;\n }\n async getList(categoryId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportDefinitionProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportDefinitionProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_DEFINITION_PROVIDER = {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMReportDefinitionProvider,\n multi: true,\n};\n// --- Category Provider ---\nexport class AXMReportCategoryProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.category.name}`;\n }\n async getList(parentId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportCategoryProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportCategoryProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_CATEGORY_PROVIDER = {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMReportCategoryProvider,\n multi: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9ELDhCQUE4QixFQUFnRCw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3TCxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBS3pDLE1BQU0sT0FBTywyQkFBMkI7SUFEeEM7UUFFWSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxlQUFVLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQWdCdkY7SUFkRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQWtCO1FBQzVCLGtFQUFrRTtRQUNsRSxzREFBc0Q7UUFDdEQscURBQXFEO1FBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUM5RixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDcEIsa0VBQWtFO1FBQ2xFLHNEQUFzRDtRQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDLCtFQUErRSxDQUFDLENBQUM7UUFDOUYsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzsrR0FqQlEsMkJBQTJCO21IQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7O0FBcUJYLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzFDLE9BQU8sRUFBRSw4QkFBOEI7SUFDdkMsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRiw2QkFBNkI7QUFFN0IsTUFBTSxPQUFPLHlCQUF5QjtJQUR0QztRQUVZLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0tBZ0J6RjtJQWRHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBaUI7UUFDM0Isa0VBQWtFO1FBQ2xFLHNEQUFzRDtRQUN0RCxxREFBcUQ7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsNkVBQTZFLENBQUMsQ0FBQztRQUM1RixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQWpCUSx5QkFBeUI7bUhBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVTs7QUFxQlgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDeEMsT0FBTyxFQUFFLDRCQUE0QjtJQUNyQyxRQUFRLEVBQUUseUJBQXlCO0lBQ25DLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFJlcG9ydERlZmluaXRpb24sIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlciwgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLCBBWFBSZXBvcnRDYXRlZ29yeVByb3ZpZGVyLCBBWFBSZXBvcnRDYXRlZ29yeSwgQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3JlcG9ydHMnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZFNlcnZpY2UsIEFYUFF1ZXJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBQYWdlZExpc3RSZXN1bHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lfWA7XG5cbiAgICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgLy8gUmV0dXJuaW5nIGVtcHR5IGFycmF5IHRvIGF2b2lkIGR1cGxpY2F0ZSBBUEkgY2FsbHNcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0QnlJZCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYTV9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgdXNlQ2xhc3M6IEFYTVJlcG9ydERlZmluaXRpb25Qcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8vIC0tLSAgQ2F0ZWdvcnkgUHJvdmlkZXIgLS0tXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlciBpbXBsZW1lbnRzIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmNhdGVnb3J5Lm5hbWV9YDtcblxuICAgIGFzeW5jIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8gTm90ZTogVGhpcyBwcm92aWRlciBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBBUEkgcHJvdmlkZXJzXG4gICAgICAgIC8vIHRoYXQgdXNlIGNhY2hlZCBkYXRhIGZyb20gdGhlIGNhdGVnb3J5IEFQSSByZXNwb25zZVxuICAgICAgICAvLyBSZXR1cm5pbmcgZW1wdHkgYXJyYXkgdG8gYXZvaWQgZHVwbGljYXRlIEFQSSBjYWxsc1xuICAgICAgICBjb25zb2xlLndhcm4oJ0FYTVJlcG9ydENhdGVnb3J5UHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyBOb3RlOiBUaGlzIHByb3ZpZGVyIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIEFQSSBwcm92aWRlcnNcbiAgICAgICAgLy8gdGhhdCB1c2UgY2FjaGVkIGRhdGEgZnJvbSB0aGUgY2F0ZWdvcnkgQVBJIHJlc3BvbnNlXG4gICAgICAgIGNvbnNvbGUud2FybignQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlci5nZXRCeUlkIGlzIGRlcHJlY2F0ZWQuIFVzZSBBUEkgcHJvdmlkZXJzIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSLFxuICAgIHVzZUNsYXNzOiBBWE1SZXBvcnRDYXRlZ29yeVByb3ZpZGVyLFxuICAgIG11bHRpOiB0cnVlLFxufTsgIl19","export const AXPReportManagementMenuKeys = {\n Root: 'report-management:menu',\n Reports: 'report-management:menu:reports',\n Categories: 'report-management:menu:categories',\n DataSets: 'report-management:menu:data-sets',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3ZDLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLGdDQUFnQztJQUN6QyxVQUFVLEVBQUUsbUNBQW1DO0lBQy9DLFFBQVEsRUFBRSxrQ0FBa0M7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgPSB7XG4gICAgUm9vdDogJ3JlcG9ydC1tYW5hZ2VtZW50Om1lbnUnLFxuICAgIFJlcG9ydHM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OnJlcG9ydHMnLFxuICAgIENhdGVnb3JpZXM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OmNhdGVnb3JpZXMnLFxuICAgIERhdGFTZXRzOiAncmVwb3J0LW1hbmFnZW1lbnQ6bWVudTpkYXRhLXNldHMnLFxufSBhcyBjb25zdDtcblxuIl19","import { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPReportManagementMenuKeys } from './menu.keys';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n const module = RootConfig.module;\n context.addItems([\n {\n name: AXPReportManagementMenuKeys.Reports,\n text: RootConfig.entities.report.titlePlural,\n path: `${this.sessionService.application?.name}/${module.route}/reports`,\n icon: RootConfig.entities.report.icon,\n priority: 900001,\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL21lbnUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNZLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFldkQsQ0FBQztJQWJHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDekMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUVqQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2I7Z0JBQ0ksSUFBSSxFQUFFLDJCQUEyQixDQUFDLE9BQU87Z0JBQ3pDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssVUFBVTtnQkFDeEUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3JDLFFBQVEsRUFBRSxNQUFNO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgfSBmcm9tICcuL21lbnUua2V5cyc7XG5cbmV4cG9ydCBjbGFzcyBBWE1NZW51UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBNZW51UHJvdmlkZXIge1xuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlO1xuXG4gICAgICAgIGNvbnRleHQuYWRkSXRlbXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYUFJlcG9ydE1hbmFnZW1lbnRNZW51S2V5cy5SZXBvcnRzLFxuICAgICAgICAgICAgICAgIHRleHQ6IFJvb3RDb25maWcuZW50aXRpZXMucmVwb3J0LnRpdGxlUGx1cmFsLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWV9LyR7bW9kdWxlLnJvdXRlfS9yZXBvcnRzYCxcbiAgICAgICAgICAgICAgICBpY29uOiBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5pY29uLFxuICAgICAgICAgICAgICAgIHByaW9yaXR5OiA5MDAwMDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICB9XG59XG4iXX0=","//#region ---- DataSet Filter Widget ----\nexport const AXM_DATASET_COLUMN_WIDGET = [\n {\n type: 'grid-row-layout',\n mode: 'view',\n children: [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 2 },\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'enabled',\n options: {\n label: 'Enable',\n tooltip: 'Enable or disable this filter',\n disabled: '{{ context.eval(\"isRequired\") }}',\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'text-editor',\n mode: 'view',\n path: 'title',\n options: {\n //readonly: '{{ !context.eval(\">enabled\") }}',\n },\n },\n ],\n }\n ],\n },\n];\n//#endregion \n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2RhdGEtc2V0L2NvbHVtbi5kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBSTdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE4QjtJQUNsRTtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjt3QkFDdkIsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFOzRCQUNQLEtBQUssRUFBRSxRQUFROzRCQUNmLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFFBQVEsRUFBRSxrQ0FBa0M7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRTt3QkFDUCxnREFBZ0Q7eUJBQ2pEO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIERhdGFTZXQgRmlsdGVyIFdpZGdldCAgIC0tLS1cblxuaW1wb3J0IHsgQVhFbnRpdHlQcm9wZXJ0eVdpZGdldCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuXG5leHBvcnQgY29uc3QgQVhNX0RBVEFTRVRfQ09MVU1OX1dJREdFVCA6IEFYRW50aXR5UHJvcGVydHlXaWRnZXRbXSA9IFtcbiAge1xuICAgIHR5cGU6ICdncmlkLXJvdy1sYXlvdXQnLFxuICAgIG1vZGU6ICd2aWV3JyxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnZ3JpZC1pdGVtLWxheW91dCcsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgICAgb3B0aW9uczogeyBjb2xTcGFuOiAyIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94LWVkaXRvcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnZW5hYmxlZCcsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ0VuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmlsdGVyJyxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6ICd7eyBjb250ZXh0LmV2YWwoXCJpc1JlcXVpcmVkXCIpIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICBvcHRpb25zOiB7IGNvbFNwYW46IDMgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dC1lZGl0b3InLFxuICAgICAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICAgICAgcGF0aDogJ3RpdGxlJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgLy9yZWFkb25seTogICAne3sgIWNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICBdLFxuICB9LFxuXTtcblxuLy8jZW5kcmVnaW9uICJdfQ==","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMDataSetService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMDataSetServiceImpl extends AXMDataSetService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dataSet.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2RhdGEtc2V0L2RhdGEtc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUd6QyxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLHdCQUcvQztDQUFHO0FBR0osTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUMxRDtRQUNFLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQzsrR0FIVSxxQkFBcUI7bUhBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNUmVwb3J0TWFuYWdlbWVudERhdGFTZXRFbnRpdHlNb2RlbCB9IGZyb20gJy4vZGF0YS1zZXQudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNRGF0YVNldFNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8XG4gIHN0cmluZyxcbiAgQVhNUmVwb3J0TWFuYWdlbWVudERhdGFTZXRFbnRpdHlNb2RlbFxuPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNRGF0YVNldFNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNRGF0YVNldFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuZGF0YVNldC5uYW1lfWApO1xuICB9XG59XG4iXX0=","//#region ---- DataSet Filter Widget ----\nexport const AXM_DATASET_FILTER_WIDGET = [\n {\n type: 'block-layout',\n mode: 'view',\n children: [\n // Enable/Disable Checkbox\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 1 },\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'enabled',\n defaultValue: true,\n options: {\n label: 'Enable',\n tooltip: 'Enable or disable this filter',\n disabled: '{{ context.eval(\"isRequired\") }}',\n },\n },\n ],\n },\n // Data Source Selector\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'dataSource',\n options: {\n placeholder: 'Select Data Source',\n valueField: 'name',\n textField: 'title',\n dataSource: '{{ context.eval(\"$root.dataSources\") || [] }}',\n readonly: '{{ !context.eval(\">enabled\") }}',\n },\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ \n var ds = context.eval('dataSource'); \n var columns = (ds && ds.columns) || []; \n context.set('availableFields', columns);\n context.set('columnName', null);\n context.set('filter', null);\n }}`,\n },\n ],\n },\n ],\n },\n // Field/Column Selector\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'columnName',\n options: {\n placeholder: 'Select Field',\n valueField: 'name',\n textField: 'title',\n dataSource: '{{ context.eval(\"availableFields\") || [] }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"dataSource\") }}',\n },\n triggers: [\n {\n event: \"{{ events.context('columnName') }}\",\n action: `{{ \n var columnName = context.eval('columnName');\n var availableFields = context.eval('availableFields') || [];\n var column = availableFields.find(function(c) { return c.name === columnName; }) || {};\n var fieldType = column.type || 'string';\n \n // Determine widget type based on field type\n var widgetType = (function() {\n var t = (typeof fieldType === 'object' && fieldType !== null && 'name' in fieldType) ? fieldType.name : fieldType;\n return t === 'text-editor' || t === 'large-text-editor' || t === 'string' ? 'string-filter' :\n t === 'number-editor' || t === 'number' ? 'number-filter' :\n t === 'date-time-editor' || t === 'datetime' || t === 'date' ? 'datetime-filter' :\n t === 'select-editor' || t === 'select' ? 'select-filter' :\n t === 'checkbox-editor' || t === 'toggle-editor' || t === 'boolean' ? 'boolean-filter' :\n t === 'color-editor' ? 'color-filter' : 'string-filter';\n })();\n \n context.set('widgetType', widgetType);\n context.set('fieldType', fieldType);\n context.set('filter', null);\n }}`,\n },\n ],\n },\n ],\n },\n // Logical Operator (And/Or)\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 2 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'logicOperator',\n defaultValue: 'and',\n options: {\n placeholder: 'Logic',\n dataSource: [\n { value: 'and', text: 'And' },\n { value: 'or', text: 'Or' }\n ],\n valueField: 'value',\n textField: 'text',\n readonly: '{{ !context.eval(\">enabled\") }}',\n },\n },\n ],\n },\n // Dynamic Filter Widget based on field type\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n // String Filter\n {\n type: 'string-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Enter filter value\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ !context.eval(\"widgetType\") || context.eval(\"widgetType\") === \"string-filter\" }}',\n },\n },\n // Number Filter\n {\n type: 'number-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Enter number value\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"number-filter\" }}',\n },\n },\n // DateTime Filter\n {\n type: 'datetime-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Select date\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"datetime-filter\" }}',\n },\n },\n // Select Filter\n {\n type: 'select-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Select value\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"select-filter\" }}',\n },\n },\n // Boolean Filter\n {\n type: 'boolean-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"boolean-filter\" }}',\n },\n },\n // Color Filter\n {\n type: 'color-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Select color\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"color-filter\" }}',\n },\n },\n ],\n },\n ],\n options: {\n spacing: { margin: \"0px\", padding: \"8px\" }\n }\n },\n];\n//#endregion \n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmRlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2RhdGEtc2V0L2ZpbHRlci5kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBSzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFxQjtJQUN6RDtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFO1lBQ1IsMEJBQTBCO1lBQzFCO2dCQUNFLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7Z0JBQ3ZCLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxJQUFJLEVBQUUsaUJBQWlCO3dCQUN2QixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsU0FBUzt3QkFDZixZQUFZLEVBQUUsSUFBSTt3QkFDbEIsT0FBTyxFQUFFOzRCQUNQLEtBQUssRUFBRSxRQUFROzRCQUNmLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFFBQVEsRUFBRSxrQ0FBa0M7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFFRCx1QkFBdUI7WUFDdkI7Z0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxFQUFFO29CQUNSO3dCQUNFLElBQUksRUFBRSxlQUFlO3dCQUNyQixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsWUFBWTt3QkFDbEIsT0FBTyxFQUFFOzRCQUNQLFdBQVcsRUFBRSxvQkFBb0I7NEJBQ2pDLFVBQVUsRUFBRSxNQUFNOzRCQUNsQixTQUFTLEVBQUUsT0FBTzs0QkFDbEIsVUFB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QkFDWixJQUFJLEVBQUUsUUFBUTt3QkFDZCxPQUFPLEVBQUU7NEJBQ1AsV0FBVyxFQUFFLGtGQUFrRjs0QkFDL0YsUUFBUSxFQUFFLGdFQUFnRTs0QkFDMUUsVUFBVSxFQUFFLHNEQUFzRDt5QkFDbkU7cUJBQ0Y7b0JBQ0QsaUJBQWlCO29CQUNqQjt3QkFDRSxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsUUFBUTt3QkFDZCxPQUFPLEVBQUU7NEJBQ1AsUUFBUSxFQUFFLGdFQUFnRTs0QkFDMUUsVUFBVSxFQUFFLHVEQUF1RDt5QkFDcEU7cUJBQ0Y7b0JBQ0QsZUFBZTtvQkFDZjt3QkFDRSxJQUFJLEVBQUUsY0FBYzt3QkFDcEIsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsT0FBTyxFQUFFOzRCQUNQLFdBQVcsRUFBRSxrRkFBa0Y7NEJBQy9GLFFBQVEsRUFBRSxnRUFBZ0U7NEJBQzFFLFVBQVUsRUFBRSxxREFBcUQ7eUJBQ2xFO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtTQUMzQztLQUNGO0NBQ0YsQ0FBQztBQUVGLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIERhdGFTZXQgRmlsdGVyIFdpZGdldCAgIC0tLS1cblxuaW1wb3J0IHsgQVhFbnRpdHlQcm9wZXJ0eVdpZGdldCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZVwiO1xuXG5leHBvcnQgY29uc3QgQVhNX0RBVEFTRVRfRklMVEVSX1dJREdFVCA6IEFYUFdpZGdldE5vZGVbXSA9IFtcbiAge1xuICAgIHR5cGU6ICdibG9jay1sYXlvdXQnLFxuICAgIG1vZGU6ICd2aWV3JyxcbiAgICBjaGlsZHJlbjogW1xuICAgICAgLy8gRW5hYmxlL0Rpc2FibGUgQ2hlY2tib3hcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2dyaWQtaXRlbS1sYXlvdXQnLFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICAgIG9wdGlvbnM6IHsgY29sU3BhbjogMSB9LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveC1lZGl0b3InLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2VuYWJsZWQnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBsYWJlbDogJ0VuYWJsZScsXG4gICAgICAgICAgICAgIHRvb2x0aXA6ICdFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZpbHRlcicsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiAne3sgY29udGV4dC5ldmFsKFwiaXNSZXF1aXJlZFwiKSB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBEYXRhIFNvdXJjZSBTZWxlY3RvclxuICAgICAge1xuICAgICAgICB0eXBlOiAnZ3JpZC1pdGVtLWxheW91dCcsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgICAgb3B0aW9uczogeyBjb2xTcGFuOiAzIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3NlbGVjdC1lZGl0b3InLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2RhdGFTb3VyY2UnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBEYXRhIFNvdXJjZScsXG4gICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICBkYXRhU291cmNlOiAne3sgY29udGV4dC5ldmFsKFwiJHJvb3QuZGF0YVNvdXJjZXNcIikgfHwgW10gfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInt7IGV2ZW50cy5jb250ZXh0KCdkYXRhU291cmNlJykgfX1cIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IGB7eyBcbiAgICAgICAgICAgICAgICAgIHZhciBkcyA9IGNvbnRleHQuZXZhbCgnZGF0YVNvdXJjZScpOyBcbiAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gKGRzICYmIGRzLmNvbHVtbnMpIHx8IFtdOyBcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdhdmFpbGFibGVGaWVsZHMnLCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdjb2x1bW5OYW1lJywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LnNldCgnZmlsdGVyJywgbnVsbCk7XG4gICAgICAgICAgICAgICAgfX1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gRmllbGQvQ29sdW1uIFNlbGVjdG9yXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICBvcHRpb25zOiB7IGNvbFNwYW46IDMgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0LWVkaXRvcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnY29sdW1uTmFtZScsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IEZpZWxkJyxcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICB0ZXh0RmllbGQ6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGRhdGFTb3VyY2U6ICd7eyBjb250ZXh0LmV2YWwoXCJhdmFpbGFibGVGaWVsZHNcIikgfHwgW10gfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiZGF0YVNvdXJjZVwiKSB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInt7IGV2ZW50cy5jb250ZXh0KCdjb2x1bW5OYW1lJykgfX1cIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IGB7eyBcbiAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5OYW1lID0gY29udGV4dC5ldmFsKCdjb2x1bW5OYW1lJyk7XG4gICAgICAgICAgICAgICAgICB2YXIgYXZhaWxhYmxlRmllbGRzID0gY29udGV4dC5ldmFsKCdhdmFpbGFibGVGaWVsZHMnKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW4gPSBhdmFpbGFibGVGaWVsZHMuZmluZChmdW5jdGlvbihjKSB7IHJldHVybiBjLm5hbWUgPT09IGNvbHVtbk5hbWU7IH0pIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkVHlwZSA9IGNvbHVtbi50eXBlIHx8ICdzdHJpbmcnO1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2lkZ2V0IHR5cGUgYmFzZWQgb24gZmllbGQgdHlwZVxuICAgICAgICAgICAgICAgICAgdmFyIHdpZGdldFR5cGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKHR5cGVvZiBmaWVsZFR5cGUgPT09ICdvYmplY3QnICYmIGZpZWxkVHlwZSAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZmllbGRUeXBlKSA/IGZpZWxkVHlwZS5uYW1lIDogZmllbGRUeXBlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9PT0gJ3RleHQtZWRpdG9yJyB8fCB0ID09PSAnbGFyZ2UtdGV4dC1lZGl0b3InIHx8IHQgPT09ICdzdHJpbmcnID8gJ3N0cmluZy1maWx0ZXInIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPT09ICdudW1iZXItZWRpdG9yJyB8fCB0ID09PSAnbnVtYmVyJyA/ICdudW1iZXItZmlsdGVyJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ID09PSAnZGF0ZS10aW1lLWVkaXRvcicgfHwgdCA9PT0gJ2RhdGV0aW1lJyB8fCB0ID09PSAnZGF0ZScgPyAnZGF0ZXRpbWUtZmlsdGVyJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ID09PSAnc2VsZWN0LWVkaXRvcicgfHwgdCA9PT0gJ3NlbGVjdCcgPyAnc2VsZWN0LWZpbHRlcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9PT0gJ2NoZWNrYm94LWVkaXRvcicgfHwgdCA9PT0gJ3RvZ2dsZS1lZGl0b3InIHx8IHQgPT09ICdib29sZWFuJyA/ICdib29sZWFuLWZpbHRlcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9PT0gJ2NvbG9yLWVkaXRvcicgPyAnY29sb3ItZmlsdGVyJyA6ICdzdHJpbmctZmlsdGVyJztcbiAgICAgICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCd3aWRnZXRUeXBlJywgd2lkZ2V0VHlwZSk7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LnNldCgnZmllbGRUeXBlJywgZmllbGRUeXBlKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdmaWx0ZXInLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9fWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBMb2dpY2FsIE9wZXJhdG9yIChBbmQvT3IpXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICBvcHRpb25zOiB7IGNvbFNwYW46IDIgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0LWVkaXRvcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnbG9naWNPcGVyYXRvcicsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdhbmQnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0xvZ2ljJyxcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdhbmQnLCB0ZXh0OiAnQW5kJyB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdvcicsIHRleHQ6ICdPcicgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAndmFsdWUnLFxuICAgICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgcmVhZG9ubHk6ICd7eyAhY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gRHluYW1pYyBGaWx0ZXIgV2lkZ2V0IGJhc2VkIG9uIGZpZWxkIHR5cGVcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2dyaWQtaXRlbS1sYXlvdXQnLFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICAgIG9wdGlvbnM6IHsgY29sU3BhbjogMyB9LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8vIFN0cmluZyBGaWx0ZXJcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nLWZpbHRlcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnZmlsdGVyJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyAoY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgPz8gdHJ1ZSkgPyBcIkVudGVyIGZpbHRlciB2YWx1ZVwiIDogXCJGaWx0ZXIgaXMgZGlzYWJsZWRcIiB9fScsXG4gICAgICAgICAgICAgIHJlYWRvbmx5OiAne3sgIWNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpIHx8ICFjb250ZXh0LmV2YWwoXCJjb2x1bW5OYW1lXCIpIH19JyxcbiAgICAgICAgICAgICAgdmlzaWJpbGl0eTogJ3t7ICFjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpIHx8IGNvbnRleHQuZXZhbChcIndpZGdldFR5cGVcIikgPT09IFwic3RyaW5nLWZpbHRlclwiIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBOdW1iZXIgRmlsdGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlci1maWx0ZXInLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2ZpbHRlcicsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgKGNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpID8/IHRydWUpID8gXCJFbnRlciBudW1iZXIgdmFsdWVcIiA6IFwiRmlsdGVyIGlzIGRpc2FibGVkXCIgfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiY29sdW1uTmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd7eyBjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpID09PSBcIm51bWJlci1maWx0ZXJcIiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gRGF0ZVRpbWUgRmlsdGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2RhdGV0aW1lLWZpbHRlcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnZmlsdGVyJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyAoY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgPz8gdHJ1ZSkgPyBcIlNlbGVjdCBkYXRlXCIgOiBcIkZpbHRlciBpcyBkaXNhYmxlZFwiIH19JyxcbiAgICAgICAgICAgICAgcmVhZG9ubHk6ICd7eyAhY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgfHwgIWNvbnRleHQuZXZhbChcImNvbHVtbk5hbWVcIikgfX0nLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAne3sgY29udGV4dC5ldmFsKFwid2lkZ2V0VHlwZVwiKSA9PT0gXCJkYXRldGltZS1maWx0ZXJcIiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gU2VsZWN0IEZpbHRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QtZmlsdGVyJyxcbiAgICAgICAgICAgIG1vZGU6ICdlZGl0JyxcbiAgICAgICAgICAgIHBhdGg6ICdmaWx0ZXInLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IChjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSA/PyB0cnVlKSA/IFwiU2VsZWN0IHZhbHVlXCIgOiBcIkZpbHRlciBpcyBkaXNhYmxlZFwiIH19JyxcbiAgICAgICAgICAgICAgcmVhZG9ubHk6ICd7eyAhY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgfHwgIWNvbnRleHQuZXZhbChcImNvbHVtbk5hbWVcIikgfX0nLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAne3sgY29udGV4dC5ldmFsKFwid2lkZ2V0VHlwZVwiKSA9PT0gXCJzZWxlY3QtZmlsdGVyXCIgfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIEJvb2xlYW4gRmlsdGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4tZmlsdGVyJyxcbiAgICAgICAgICAgIG1vZGU6ICdlZGl0JyxcbiAgICAgICAgICAgIHBhdGg6ICdmaWx0ZXInLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiY29sdW1uTmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd7eyBjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpID09PSBcImJvb2xlYW4tZmlsdGVyXCIgfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIENvbG9yIEZpbHRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdjb2xvci1maWx0ZXInLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2ZpbHRlcicsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgKGNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpID8/IHRydWUpID8gXCJTZWxlY3QgY29sb3JcIiA6IFwiRmlsdGVyIGlzIGRpc2FibGVkXCIgfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiY29sdW1uTmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd7eyBjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpID09PSBcImNvbG9yLWZpbHRlclwiIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBzcGFjaW5nOiB7IG1hcmdpbjogXCIwcHhcIiwgcGFkZGluZzogXCI4cHhcIiB9XG4gICAgfVxuICB9LFxuXTtcblxuLy8jZW5kcmVnaW9uICJdfQ==","//#region ---- DataSet Filter Widget ----\nexport const AXM_DATASET_SORT_WIDGET = [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'enabled',\n options: {\n dataSource: [\n {\n value: 'asc',\n text: 'Ascendent'\n },\n {\n value: 'desc',\n text: 'Desiccate'\n },\n {\n value: 'none',\n text: 'None'\n },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n ],\n },\n];\n//#endregion \n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9kYXRhLXNldC9zb3J0LmRlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2Q0FBNkM7QUFJN0MsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQTZCO0lBQy9EO1FBQ0UsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7UUFDdkIsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRTtvQkFDUCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsS0FBSyxFQUFFLEtBQUs7NEJBQ1osSUFBSSxFQUFFLFdBQVc7eUJBQ2xCO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxNQUFNOzRCQUNiLElBQUksRUFBRSxXQUFXO3lCQUNsQjt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsTUFBTTs0QkFDYixJQUFJLEVBQUUsTUFBTTt5QkFDYjtxQkFDRjtvQkFDRCxTQUFTLEVBQUUsTUFBTTtvQkFDakIsVUFBVSxFQUFFLE9BQU87aUJBQ3BCO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIERhdGFTZXQgRmlsdGVyIFdpZGdldCAgIC0tLS1cblxuaW1wb3J0IHsgQVhFbnRpdHlQcm9wZXJ0eVdpZGdldCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuXG5leHBvcnQgY29uc3QgQVhNX0RBVEFTRVRfU09SVF9XSURHRVQ6IEFYRW50aXR5UHJvcGVydHlXaWRnZXRbXSA9IFtcbiAge1xuICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICBtb2RlOiAndmlldycsXG4gICAgb3B0aW9uczogeyBjb2xTcGFuOiAzIH0sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdC1lZGl0b3InLFxuICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgIHBhdGg6ICdlbmFibGVkJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdhc2MnLFxuICAgICAgICAgICAgICB0ZXh0OiAnQXNjZW5kZW50J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdkZXNjJywgXG4gICAgICAgICAgICAgIHRleHQ6ICdEZXNpY2NhdGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogJ25vbmUnLCBcbiAgICAgICAgICAgICAgdGV4dDogJ05vbmUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGV4dEZpZWxkOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl07XG5cbi8vI2VuZHJlZ2lvbiAiXX0=","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXMDataSourceService } from '@acorex/modules/data-management';\nimport { AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { RootConfig } from '../../const';\nimport { AXM_DATASET_COLUMN_WIDGET } from './column.def';\nimport { AXMDataSetService } from './data-set.service';\nimport { AXM_DATASET_FILTER_WIDGET } from './filter.def';\nimport { AXM_DATASET_SORT_WIDGET } from './sort.def';\nexport async function dataSetFactory(injector) {\n const dataService = injector.get(AXMDataSetService);\n const i18n = RootConfig.config.i18n;\n const translationService = injector.get(AXTranslationService);\n const dataSourceService = injector.get(AXMDataSourceService);\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dataSet.name,\n title: RootConfig.entities.dataSet.title,\n formats: {\n individual: RootConfig.entities.dataSet.title,\n plural: RootConfig.entities.dataSet.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'dataSet',\n title: RootConfig.entities.dataSet.title,\n },\n {\n id: 'filters',\n title: `@${i18n}:advance`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'dataSet',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'dataSet',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'categoryIds',\n title: '@general:terms.classification.category',\n groupId: 'dataSet',\n schema: {\n defaultValue: '{{ [context.eval(\"categoryId\")] }}',\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.category.name}`,\n multiple: true,\n expose: [\n { source: 'id', target: 'categories.{id}' },\n { source: 'title', target: 'categories.{title}' },\n ],\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'dataSource',\n title: `@${i18n}:dataSource`,\n groupId: 'dataSet',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n load: async () => {\n const items = await dataSourceService.query({\n skip: 0,\n take: 10000,\n });\n const translated = await Promise.all(items.items.map(async (item) => ({\n ...item,\n title: await translationService.translateAsync(item.title),\n })));\n return { total: translated.length, items: translated };\n },\n pageSize: 1000,\n }),\n multiple: false,\n },\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ var ds = context.eval('dataSource'); var list = []; Array.isArray(ds.filters) ? (function(){ for(var i=0;i<ds.filters.length;i++){ var item = ds.filters[i]; !item.isSystemFilter ? (function(){ var fl = item.filter; var column = (ds.columns || []).find(function(c){return c.name === fl.columnName;}) || {}; var widgetType = (function(){ var t = column.type || 'string'; t = (typeof t === 'object' && t !== null && 'name' in t) ? t.name : t; return t === 'text-editor' || t === 'large-text-editor' || t === 'string' ? 'string-filter' : t === 'number-editor' || t === 'number' ? 'number-filter' : t === 'date-time-editor' || t === 'datetime' || t === 'date' ? 'datetime-filter' : t === 'select-editor' || t === 'select' ? 'select-filter' : t === 'checkbox-editor' || t === 'toggle-editor' || t === 'boolean' ? 'boolean-filter' : t === 'color-editor' ? 'color-filter' : 'string-filter'; })(); var copy = { columnName: fl.columnName, isRequired: false, enabled: true, filter: { columnName: fl.columnName, value: fl.value }, widgetType: widgetType }; list.push(copy); })() : null; } })() : null; context.set('filters', list); }}`,\n },\n ],\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'filters',\n title: `@${i18n}:filters`,\n groupId: 'filters',\n schema: {\n defaultValue: [],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n path: 'filters',\n options: {\n hasControls: false,\n isDraggable: true,\n },\n children: AXM_DATASET_FILTER_WIDGET,\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ \n var selectedDataSource = context.eval('dataSource');\n if (selectedDataSource) {\n context.set('dataSources', [selectedDataSource]);\n }\n }}`,\n },\n ],\n },\n },\n },\n {\n name: 'columns',\n title: `@${i18n}:columns`,\n groupId: 'filters',\n schema: {\n defaultValue: [],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n options: {\n hasControls: false,\n isDraggable: true,\n },\n children: AXM_DATASET_COLUMN_WIDGET,\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ context.set('columns', context.eval('dataSource').columns); }}`,\n },\n ],\n },\n },\n },\n {\n name: 'sorts',\n title: `@${i18n}:sorts`,\n groupId: 'filters',\n schema: {\n defaultValue: [],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n options: {\n hasControls: false,\n isDraggable: true,\n },\n children: AXM_DATASET_SORT_WIDGET,\n // triggers: [\n // {\n // event: \"{{ events.context('dataSource') }}\",\n // action: `{{ context.set('sorts', context.eval('dataSource').columns); }}`,\n // },\n // ],\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }, { name: 'dataSource' }],\n commands: {\n create: {\n execute: async (data) => {\n console.log(data);\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query(e);\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'dataSet',\n },\n {\n id: 'filters',\n },\n ],\n properties: [\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'sorts',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 6,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'dataSet',\n },\n {\n id: 'filters',\n },\n ],\n properties: [\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'dataSet',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'categoryIds',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXQuZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvZGF0YS1zZXQvZGF0YS1zZXQuZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQW9DLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVyRCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxRQUFrQjtJQUNyRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDcEMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFv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QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixLQUFLLEVBQUUsQ0FBQztxQ0FDVDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsYUFBYTs0QkFDbkIsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7d0NBQ1YsS0FBSyxFQUFFLENBQUM7cUNBQ1Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLEVBQUU7d0NBQ1gsS0FBSyxFQUFFLENBQUM7cUNBQ1Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO2lCQUMxQztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO29CQUN2QyxLQUFLLEVBQUU7d0JBQ0wsa0JBQWtCLENBQUM7NEJBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhNRGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvZGF0YS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBFbnRpdHlRdWVyeVR5cGUsIGNyZWF0ZUFsbFF1ZXJ5VmlldyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IGVudGl0eU1hc3RlckNydWRBY3Rpb25zLCBlbnRpdHlNYXN0ZXJSZWNvcmRBY3Rpb25zIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1fREFUQVNFVF9DT0xVTU5fV0lER0VUIH0gZnJvbSAnLi9jb2x1bW4uZGVmJztcbmltcG9ydCB7IEFYTURhdGFTZXRTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLXNldC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTV9EQVRBU0VUX0ZJTFRFUl9XSURHRVQgfSBmcm9tICcuL2ZpbHRlci5kZWYnO1xuaW1wb3J0IHsgQVhNX0RBVEFTRVRfU09SVF9XSURHRVQgfSBmcm9tICcuL3NvcnQuZGVmJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRhdGFTZXRGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1EYXRhU2V0U2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuICBjb25zdCB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBjb25zdCBkYXRhU291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChBWE1EYXRhU291cmNlU2VydmljZSk7XG5cbiAgY29uc3QgZW50aXR5RGVmOiBBWFBFbnRpdHkgPSB7XG4gICAgbW9kdWxlOiBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgIG5hbWU6IFJvb3RDb25maWcuZW50aXRpZXMuZGF0YVNldC5uYW1lLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLmRhdGFTZXQudGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5kYXRhU2V0LnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLmRhdGFTZXQudGl0bGVQbHVyYWwsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ2RhdGFTZXQnLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5kYXRhU2V0LnRpdGxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdmaWx0ZXJzJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTphZHZhbmNlYCxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24ubmFtZScsXG4gICAgICAgIGdyb3VwSWQ6ICdkYXRhU2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi50aXRsZScsXG4gICAgICAgIGdyb3VwSWQ6ICdkYXRhU2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2F0ZWdvcnlJZHMnLFxuICAgICAgICB0aXRsZTogJ0BnZW5lcmFsOnRlcm1zLmNsYXNzaWZpY2F0aW9uLmNhdGVnb3J5JyxcbiAgICAgICAgZ3JvdXBJZDogJ2RhdGFTZXQnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6ICd7eyBbY29udGV4dC5ldmFsKFwiY2F0ZWdvcnlJZFwiKV0gfX0nLFxuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLmxvb2t1cCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgZW50aXR5OiBgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuY2F0ZWdvcnkubmFtZX1gLFxuICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhwb3NlOiBbXG4gICAgICAgICAgICAgICAgeyBzb3VyY2U6ICdpZCcsIHRhcmdldDogJ2NhdGVnb3JpZXMue2lkfScgfSxcbiAgICAgICAgICAgICAgICB7IHNvdXJjZTogJ3RpdGxlJywgdGFyZ2V0OiAnY2F0ZWdvcmllcy57dGl0bGV9JyB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkYXRhU291cmNlJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTpkYXRhU291cmNlYCxcbiAgICAgICAgZ3JvdXBJZDogJ2RhdGFTZXQnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICBkYXRhU291cmNlOiBuZXcgQVhEYXRhU291cmNlKHtcbiAgICAgICAgICAgICAgICBsb2FkOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGRhdGFTb3VyY2VTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgdGFrZTogMTAwMDAsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMuaXRlbXMubWFwKGFzeW5jIChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXdhaXQgdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGl0ZW0udGl0bGUpLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdG90YWw6IHRyYW5zbGF0ZWQubGVuZ3RoLCBpdGVtczogdHJhbnNsYXRlZCB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInt7IGV2ZW50cy5jb250ZXh0KCdkYXRhU291cmNlJykgfX1cIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IGB7eyB2YXIgZHMgPSBjb250ZXh0LmV2YWwoJ2RhdGFTb3VyY2UnKTsgdmFyIGxpc3QgPSBbXTsgQXJyYXkuaXNBcnJheShkcy5maWx0ZXJzKSA/IChmdW5jdGlvbigpeyBmb3IodmFyIGk9MDtpPGRzLmZpbHRlcnMubGVuZ3RoO2krKyl7IHZhciBpdGVtID0gZHMuZmlsdGVyc1tpXTsgIWl0ZW0uaXNTeXN0ZW1GaWx0ZXIgPyAoZnVuY3Rpb24oKXsgdmFyIGZsID0gaXRlbS5maWx0ZXI7IHZhciBjb2x1bW4gPSAoZHMuY29sdW1ucyB8fCBbXSkuZmluZChmdW5jdGlvbihjKXtyZXR1cm4gYy5uYW1lID09PSBmbC5jb2x1bW5OYW1lO30pIHx8IHt9OyB2YXIgd2lkZ2V0VHlwZSA9IChmdW5jdGlvbigpeyB2YXIgdCA9IGNvbHVtbi50eXBlIHx8ICdzdHJpbmcnOyB0ID0gKHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0ICE9PSBudWxsICYmICduYW1lJyBpbiB0KSA/IHQubmFtZSA6IHQ7IHJldHVybiB0ID09PSAndGV4dC1lZGl0b3InIHx8IHQgPT09ICdsYXJnZS10ZXh0LWVkaXRvcicgfHwgdCA9PT0gJ3N0cmluZycgPyAnc3RyaW5nLWZpbHRlcicgOiB0ID09PSAnbnVtYmVyLWVkaXRvcicgfHwgdCA9PT0gJ251bWJlcicgPyAnbnVtYmVyLWZpbHRlcicgOiB0ID09PSAnZGF0ZS10aW1lLWVkaXRvcicgfHwgdCA9PT0gJ2RhdGV0aW1lJyB8fCB0ID09PSAnZGF0ZScgPyAnZGF0ZXRpbWUtZmlsdGVyJyA6IHQgPT09ICdzZWxlY3QtZWRpdG9yJyB8fCB0ID09PSAnc2VsZWN0JyA/ICdzZWxlY3QtZmlsdGVyJyA6IHQgPT09ICdjaGVja2JveC1lZGl0b3InIHx8IHQgPT09ICd0b2dnbGUtZWRpdG9yJyB8fCB0ID09PSAnYm9vbGVhbicgPyAnYm9vbGVhbi1maWx0ZXInIDogdCA9PT0gJ2NvbG9yLWVkaXRvcicgPyAnY29sb3ItZmlsdGVyJyA6ICdzdHJpbmctZmlsdGVyJzsgfSkoKTsgdmFyIGNvcHkgPSB7IGNvbHVtbk5hbWU6IGZsLmNvbHVtbk5hbWUsIGlzUmVxdWlyZWQ6IGZhbHNlLCBlbmFibGVkOiB0cnVlLCBmaWx0ZXI6IHsgY29sdW1uTmFtZTogZmwuY29sdW1uTmFtZSwgdmFsdWU6IGZsLnZhbHVlIH0sIHdpZGdldFR5cGU6IHdpZGdldFR5cGUgfTsgbGlzdC5wdXNoKGNvcHkpOyB9KSgpIDogbnVsbDsgfSB9KSgpIDogbnVsbDsgY29udGV4dC5zZXQoJ2ZpbHRlcnMnLCBsaXN0KTsgfX1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdmaWx0ZXJzJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTpmaWx0ZXJzYCxcbiAgICAgICAgZ3JvdXBJZDogJ2ZpbHRlcnMnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IFtdLFxuICAgICAgICAgIGRhdGFUeXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnJlcGVhdGVyTGF5b3V0LFxuICAgICAgICAgICAgcGF0aDogJ2ZpbHRlcnMnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBoYXNDb250cm9sczogZmFsc2UsXG4gICAgICAgICAgICAgIGlzRHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBBWE1fREFUQVNFVF9GSUxURVJfV0lER0VUIGFzIGFueSxcbiAgICAgICAgICAgIHRyaWdnZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBldmVudDogXCJ7eyBldmVudHMuY29udGV4dCgnZGF0YVNvdXJjZScpIH19XCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBge3sgXG4gICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWREYXRhU291cmNlID0gY29udGV4dC5ldmFsKCdkYXRhU291cmNlJyk7XG4gICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWREYXRhU291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdkYXRhU291cmNlcycsIFtzZWxlY3RlZERhdGFTb3VyY2VdKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY29sdW1ucycsXG4gICAgICAgIHRpdGxlOiBgQCR7aTE4bn06Y29sdW1uc2AsXG4gICAgICAgIGdyb3VwSWQ6ICdmaWx0ZXJzJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBbXSxcbiAgICAgICAgICBkYXRhVHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5yZXBlYXRlckxheW91dCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgaGFzQ29udHJvbHM6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0RyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjogQVhNX0RBVEFTRVRfQ09MVU1OX1dJREdFVCxcbiAgICAgICAgICAgIHRyaWdnZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBldmVudDogXCJ7eyBldmVudHMuY29udGV4dCgnZGF0YVNvdXJjZScpIH19XCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBge3sgY29udGV4dC5zZXQoJ2NvbHVtbnMnLCBjb250ZXh0LmV2YWwoJ2RhdGFTb3VyY2UnKS5jb2x1bW5zKTsgfX1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NvcnRzJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTpzb3J0c2AsXG4gICAgICAgIGdyb3VwSWQ6ICdmaWx0ZXJzJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBbXSxcbiAgICAgICAgICBkYXRhVHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5yZXBlYXRlckxheW91dCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgaGFzQ29udHJvbHM6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0RyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjogQVhNX0RBVEFTRVRfU09SVF9XSURHRVQsXG4gICAgICAgICAgICAvLyB0cmlnZ2VyczogW1xuICAgICAgICAgICAgLy8gICB7XG4gICAgICAgICAgICAvLyAgICAgZXZlbnQ6IFwie3sgZXZlbnRzLmNvbnRleHQoJ2RhdGFTb3VyY2UnKSB9fVwiLFxuICAgICAgICAgICAgLy8gICAgIGFjdGlvbjogYHt7IGNvbnRleHQuc2V0KCdzb3J0cycsIGNvbnRleHQuZXZhbCgnZGF0YVNvdXJjZScpLmNvbHVtbnMpOyB9fWAsXG4gICAgICAgICAgICAvLyAgIH0sXG4gICAgICAgICAgICAvLyBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ25hbWUnIH0sIHsgbmFtZTogJ3RpdGxlJyB9LCB7IG5hbWU6ICdkYXRhU291cmNlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcblxuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KGUpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdkYXRhU2V0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnZmlsdGVycycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZGF0YVNvdXJjZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDMsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2ZpbHRlcnMnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogNSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdjb2x1bW5zJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogNSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdzb3J0cycsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnZGF0YVNldCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2ZpbHRlcnMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2RhdGFTb3VyY2UnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdmaWx0ZXJzJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2RhdGFTZXQnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2RhdGFTb3VyY2UnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZmlsdGVycycsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiA1LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFjdGlvbnM6IFsuLi5lbnRpdHlNYXN0ZXJSZWNvcmRBY3Rpb25zKCldLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgYWN0aW9uczogWy4uLmVudGl0eU1hc3RlckNydWRBY3Rpb25zKCldLFxuICAgICAgICAgIHZpZXdzOiBbXG4gICAgICAgICAgICBjcmVhdGVBbGxRdWVyeVZpZXcoe1xuICAgICAgICAgICAgICBzb3J0czogW3sgbmFtZTogJ25hbWUnLCBkaXI6ICdhc2MnIH1dLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gZW50aXR5RGVmO1xufVxuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMReportDefinitionServiceImpl extends AXMReportDefinitionService {\n constructor() {\n super('report-definition');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3JlcG9ydC1kZWZpbml0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSx3QkFHeEQ7Q0FBSTtBQUdMLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUFDMUU7UUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvQixDQUFDOytHQUhRLDhCQUE4QjttSEFBOUIsOEJBQThCOzs0RkFBOUIsOEJBQThCO2tCQUQxQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi9yZXBvcnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPFxuICAgIHN0cmluZyxcbiAgICBBWFBSZXBvcnREZWZpbml0aW9uXG4+IHsgfVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUmVwb3J0RGVmaW5pdGlvblNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUmVwb3J0RGVmaW5pdGlvblNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigncmVwb3J0LWRlZmluaXRpb24nKTtcbiAgICB9XG59ICJdfQ==","import { NgModule } from '@angular/core';\nimport { AXMDataSetService, AXMDataSetServiceImpl } from './data-set.service';\nimport * as i0 from \"@angular/core\";\nexport class AXMDataSetEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule, providers: [\n {\n provide: AXMDataSetService,\n useClass: AXMDataSetServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMDataSetService,\n useClass: AXMDataSetServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvZGF0YS1zZXQvZGF0YS1zZXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBYTlFLE1BQU0sT0FBTyxzQkFBc0I7K0dBQXRCLHNCQUFzQjtnSEFBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsYUFQdEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUscUJBQXFCO2FBQ2hDO1NBQ0Y7OzRGQUVVLHNCQUFzQjtrQkFYbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxxQkFBcUI7eUJBQ2hDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTURhdGFTZXRTZXJ2aWNlLCBBWE1EYXRhU2V0U2VydmljZUltcGwgfSBmcm9tICcuL2RhdGEtc2V0LnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYTURhdGFTZXRTZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTURhdGFTZXRTZXJ2aWNlSW1wbCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1EYXRhU2V0RW50aXR5TW9kdWxlIHt9XG4iXX0=","import { NgModule } from '@angular/core';\nimport { AXMReportDefinitionService, AXMReportDefinitionServiceImpl } from './report-definition.service';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule, providers: [\n {\n provide: AXMReportDefinitionService,\n useClass: AXMReportDefinitionServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMReportDefinitionService,\n useClass: AXMReportDefinitionServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvcmVwb3J0LWRlZmluaXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBYXpHLE1BQU0sT0FBTywrQkFBK0I7K0dBQS9CLCtCQUErQjtnSEFBL0IsK0JBQStCO2dIQUEvQiwrQkFBK0IsYUFQL0I7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxRQUFRLEVBQUUsOEJBQThCO2FBQ3pDO1NBQ0Y7OzRGQUVVLCtCQUErQjtrQkFYM0MsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFFBQVEsRUFBRSw4QkFBOEI7eUJBQ3pDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlLCBBWE1SZXBvcnREZWZpbml0aW9uU2VydmljZUltcGwgfSBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlSW1wbCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnREZWZpbml0aW9uRW50aXR5TW9kdWxlIHt9XG4iXX0=","// Entity Services\nexport * from './data-set';\nexport * from './report-definition.service';\n// Entity Modules\nexport * from './data-set/data-set.module';\nexport * from './report-definition.module';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxpQkFBaUI7QUFDakIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRW50aXR5IFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtc2V0JztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0LWRlZmluaXRpb24uc2VydmljZSc7XG5cbi8vIEVudGl0eSBNb2R1bGVzXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtc2V0L2RhdGEtc2V0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLm1vZHVsZSc7XG4iXX0=","export class AXMColumnEvaluatorScopeProvider {\n async provide(context) {\n context.addScope('dataSource', {\n getColumn: async (columnName, columns) => {\n const column = columns.find((c) => c.name === columnName);\n return column;\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWV2YWx1YXRvci1zY29wZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtbGxpc3QvY29sdW1uLWV2YWx1YXRvci1zY29wZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sK0JBQStCO0lBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUQ7UUFDL0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDN0IsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLE9BQTJDLEVBQUUsRUFBRTtnQkFDbkYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYUERhdGFTb3VyY2VEYXRhRmllbGREZWZpbml0aW9uLFxuICBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlcixcbiAgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJDb250ZXh0LFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQVhNQ29sdW1uRXZhbHVhdG9yU2NvcGVQcm92aWRlciBpbXBsZW1lbnRzIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyIHtcbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb250ZXh0LmFkZFNjb3BlKCdkYXRhU291cmNlJywge1xuICAgICAgZ2V0Q29sdW1uOiBhc3luYyAoY29sdW1uTmFtZTogc3RyaW5nLCBjb2x1bW5zOiBBWFBEYXRhU291cmNlRGF0YUZpZWxkRGVmaW5pdGlvbltdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoYykgPT4gYy5uYW1lID09PSBjb2x1bW5OYW1lKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { inject } from '@angular/core';\nexport class AXMReportCreateRootWorkflowAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n this.popupService = inject(AXPopupService);\n this.translationService = inject(AXTranslationService);\n }\n async execute(context) {\n // const refId = context.getVariable<string>('options.refId');\n const comp = await import('./report-create-root/report-create-root.component').then(m => m.AXPReportCreateRootComponent);\n this.popupService.open(comp, await this.translationService.translateAsync('report.create.title', { scope: 'report-management' }));\n }\n}\nexport const AXMReportCreateWorkflow = {\n startStepId: 'report-create-root',\n steps: {\n 'report-create-root': {\n action: 'AXMReportCreateRootWorkflowAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"unlocked\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: '@general:workflow.entity-modified-title',\n content: '@general:workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n // modifyConfirmed: {\n // id: 'modifyConfirmed',\n // action: 'AXPEntityModifyConfirmedAction',\n // },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNyZWF0ZS53b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC9jcmVhdGUvcmVwb3J0LWNyZWF0ZS53b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFlLGlCQUFpQixFQUFzQixNQUFNLDJCQUEyQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLGlCQUFpQjtJQUF4RTs7UUFDVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQVE1RCxDQUFDO0lBTlUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUNsRCwrREFBK0Q7UUFFOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN4SCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnQjtJQUNsRCxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLEtBQUssRUFBRTtRQUNMLG9CQUFvQixFQUFFO1lBQ3BCLE1BQU0sRUFBRSxtQ0FBbUM7WUFDM0MsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsdUNBQXVDLEVBQUUsQ0FBQztvQkFDckYsVUFBVSxFQUFFLGNBQWM7aUJBQzNCO2FBQ0Y7U0FDRjtRQUNELFlBQVksRUFBRTtZQUNaLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUseUNBQXlDO2dCQUNoRCxPQUFPLEVBQUUsd0NBQXdDO2FBQ2xEO1lBQ0QsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxFQUFFO29CQUNkLFVBQVUsRUFBRSxpQkFBaUI7aUJBQzlCO2FBQ0Y7U0FDRjtRQUNELHFCQUFxQjtRQUNyQiwyQkFBMkI7UUFDM0IsOENBQThDO1FBQzlDLEtBQUs7S0FDTjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXb3JrZmxvdywgQVhQV29ya2Zsb3dBY3Rpb24sIEFYUFdvcmtmbG93Q29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnRDcmVhdGVSb290V29ya2Zsb3dBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29udGV4dDogQVhQV29ya2Zsb3dDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vICBjb25zdCByZWZJZCA9IGNvbnRleHQuZ2V0VmFyaWFibGU8c3RyaW5nPignb3B0aW9ucy5yZWZJZCcpO1xuXG4gICBjb25zdCBjb21wID0gYXdhaXQgaW1wb3J0KCcuL3JlcG9ydC1jcmVhdGUtcm9vdC9yZXBvcnQtY3JlYXRlLXJvb3QuY29tcG9uZW50JykudGhlbihtID0+IG0uQVhQUmVwb3J0Q3JlYXRlUm9vdENvbXBvbmVudCk7XG4gICAgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb21wLCBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygncmVwb3J0LmNyZWF0ZS50aXRsZScsIHsgc2NvcGU6ICdyZXBvcnQtbWFuYWdlbWVudCcgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWE1SZXBvcnRDcmVhdGVXb3JrZmxvdzogQVhQV29ya2Zsb3cgPSB7XG4gIHN0YXJ0U3RlcElkOiAncmVwb3J0LWNyZWF0ZS1yb290JyxcbiAgc3RlcHM6IHtcbiAgICAncmVwb3J0LWNyZWF0ZS1yb290Jzoge1xuICAgICAgYWN0aW9uOiAnQVhNUmVwb3J0Q3JlYXRlUm9vdFdvcmtmbG93QWN0aW9uJyxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW3sgdHlwZTogJ1NJTkdMRScsIGV4cHJlc3Npb246ICdjb250ZXh0LmdldE91dHB1dChcInVubG9ja2VkXCIpID09IHRydWUnIH1dLFxuICAgICAgICAgIG5leHRTdGVwSWQ6ICdzdWNjZXNzVG9hc3QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHN1Y2Nlc3NUb2FzdDoge1xuICAgICAgaWQ6ICdzdWNjZXNzVG9hc3QnLFxuICAgICAgYWN0aW9uOiAnQVhQVG9hc3RBY3Rpb24nLFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp3b3JrZmxvdy5lbnRpdHktbW9kaWZpZWQtdGl0bGUnLFxuICAgICAgICBjb250ZW50OiAnQGdlbmVyYWw6d29ya2Zsb3cuZW50aXR5LW1vZGlmaWVkLWJvZHknLFxuICAgICAgfSxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW10sXG4gICAgICAgICAgbmV4dFN0ZXBJZDogJ21vZGlmeUNvbmZpcm1lZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgLy8gbW9kaWZ5Q29uZmlybWVkOiB7XG4gICAgLy8gICBpZDogJ21vZGlmeUNvbmZpcm1lZCcsXG4gICAgLy8gICBhY3Rpb246ICdBWFBFbnRpdHlNb2RpZnlDb25maXJtZWRBY3Rpb24nLFxuICAgIC8vIH0sXG4gIH0sXG59OyAiXX0=","import { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXPDomainModule, provideEntity } from '@acorex/platform/domain';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { RootConfig } from './const';\nimport { AXM_REPORT_CATEGORY_PROVIDER, AXM_REPORT_DEFINITION_PROVIDER, } from './features/report-runner/reports.provider';\nimport { AXMMenuProvider } from './menu.provider';\n// Entity Modules\nimport { AXMDataSetEntityModule, AXMReportDefinitionEntityModule, } from './entities';\nimport { inject, Injector } from '@angular/core';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXMColumnEvaluatorScopeProvider } from './features/data-llist/column-evaluator-scope.provider';\nimport { AXMReportCreateRootWorkflowAction, AXMReportCreateWorkflow, } from './features/report/create/report-create.workflow';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/workflow\";\nfunction routesFacory() {\n let routes = [\n {\n path: `:app/${RootConfig.module.route}/viewer`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: ':reportId',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n {\n path: '',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n ],\n },\n {\n path: `:app/${RootConfig.module.route}/reports`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '**',\n loadComponent: () => import('./features/report-runner/report-runner-root-page/report-runner-root-page.component').then((c) => c.AXMReportRunnerRootPageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMReportManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, imports: [AXPDomainModule,\n // Entity Modules\n AXMDataSetEntityModule,\n AXMReportDefinitionEntityModule, i1.AXPWorkflowModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, providers: [\n // Removed individual entity service provider - now provided by entity modules\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./permission-definition.provider')).AXMPermissionDefinitionProvider;\n return new provider(injector);\n },\n multi: true,\n },\n // {\n // provide: AXP_SEARCH_PROVIDER,\n // useClass: AXPReportSearchProvider,\n // multi: true,\n // },\n // {\n // provide: AXP_SEARCH_DEFINITION_PROVIDER,\n // useClass: AXPReportSearchDefinitionProvider,\n // multi: true,\n // },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMColumnEvaluatorScopeProvider,\n multi: true,\n },\n ], imports: [AXPDomainModule,\n // Entity Modules\n AXMDataSetEntityModule,\n AXMReportDefinitionEntityModule,\n AXPWorkflowModule.forChild({\n actions: {\n AXMReportCreateRootWorkflowAction,\n },\n workflows: {\n 'report-create': AXMReportCreateWorkflow,\n },\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPDomainModule,\n // Entity Modules\n AXMDataSetEntityModule,\n AXMReportDefinitionEntityModule,\n AXPWorkflowModule.forChild({\n actions: {\n AXMReportCreateRootWorkflowAction,\n },\n workflows: {\n 'report-create': AXMReportCreateWorkflow,\n },\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n // Removed individual entity service provider - now provided by entity modules\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./permission-definition.provider')).AXMPermissionDefinitionProvider;\n return new provider(injector);\n },\n multi: true,\n },\n // {\n // provide: AXP_SEARCH_PROVIDER,\n // useClass: AXPReportSearchProvider,\n // multi: true,\n // },\n // {\n // provide: AXP_SEARCH_DEFINITION_PROVIDER,\n // useClass: AXPReportSearchDefinitionProvider,\n // multi: true,\n // },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMColumnEvaluatorScopeProvider,\n multi: true,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw4QkFBOEIsR0FDL0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsaUJBQWlCO0FBQ2pCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsK0JBQStCLEdBQ2hDLE1BQU0sWUFBWSxDQUFDO0FBa0RwQixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLHVC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UUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNoQyxDQUFDOzRCQUNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELElBQUk7d0JBQ0osb0NBQW9DO3dCQUNwQyx5Q0FBeUM7d0JBQ3pDLG1CQUFtQjt3QkFDbkIsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLCtDQUErQzt3QkFDL0MsbURBQW1EO3dCQUNuRCxtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0w7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3dCQUVELGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDM0Y7NEJBQ0UsT0FBTyxFQUFFLHVDQUF1Qzs0QkFDaEQsUUFBUSxFQUFFLCtCQUErQjs0QkFDekMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBBdXRoR3VhcmQsIEFYUF9QRVJNSVNTSU9OX0RFRklOSVRJT05fUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQX01FTlVfUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBEb21haW5Nb2R1bGUsIHByb3ZpZGVFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2RvbWFpbic7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHtcbiAgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgQVhNX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxufSBmcm9tICcuL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1NZW51UHJvdmlkZXIgfSBmcm9tICcuL21lbnUucHJvdmlkZXInO1xuXG4vLyBFbnRpdHkgTW9kdWxlc1xuaW1wb3J0IHtcbiAgQVhNRGF0YVNldEVudGl0eU1vZHVsZSxcbiAgQVhNUmVwb3J0RGVmaW5pdGlvbkVudGl0eU1vZHVsZSxcbn0gZnJvbSAnLi9lbnRpdGllcyc7XG5cbmZ1bmN0aW9uIHJvdXRlc0ZhY29yeSgpIHtcbiAgbGV0IHJvdXRlczogUm91dGVzID0gW1xuICAgIHtcbiAgICAgIHBhdGg6IGA6YXBwLyR7Um9vdENvbmZpZy5tb2R1bGUucm91dGV9L3ZpZXdlcmAsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBBWFBSb290TGF5b3V0Q29tcG9uZW50O1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnOnJlcG9ydElkJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAoYykgPT4gYy5BWFBSZXBvcnRWaWV3ZXJQYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAoYykgPT4gYy5BWFBSZXBvcnRWaWV3ZXJQYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcGF0aDogYDphcHAvJHtSb290Q29uZmlnLm1vZHVsZS5yb3V0ZX0vcmVwb3J0c2AsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBBWFBSb290TGF5b3V0Q29tcG9uZW50O1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnKionLFxuICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvcmVwb3J0LXJ1bm5lci9yZXBvcnQtcnVubmVyLXJvb3QtcGFnZS9yZXBvcnQtcnVubmVyLXJvb3QtcGFnZS5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAoYykgPT4gYy5BWE1SZXBvcnRSdW5uZXJSb290UGFnZUNvbXBvbmVudCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZGF0YTogeyByZXVzZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gcm91dGVzO1xufVxuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBfRVhQUkVTU0lPTl9FVkFMVUFUT1JfU0NPUEVfUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEFYTUNvbHVtbkV2YWx1YXRvclNjb3BlUHJvdmlkZXIgfSBmcm9tICcuL2ZlYXR1cmVzL2RhdGEtbGxpc3QvY29sdW1uLWV2YWx1YXRvci1zY29wZS5wcm92aWRlcic7XG5pbXBvcnQge1xuICBBWE1SZXBvcnRDcmVhdGVSb290V29ya2Zsb3dBY3Rpb24sXG4gIEFYTVJlcG9ydENyZWF0ZVdvcmtmbG93LFxufSBmcm9tICcuL2ZlYXR1cmVzL3JlcG9ydC9jcmVhdGUvcmVwb3J0LWNyZWF0ZS53b3JrZmxvdyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBWFBEb21haW5Nb2R1bGUsXG4gICAgLy8gRW50aXR5IE1vZHVsZXNcbiAgICBBWE1EYXRhU2V0RW50aXR5TW9kdWxlLFxuICAgIEFYTVJlcG9ydERlZmluaXRpb25FbnRpdHlNb2R1bGUsXG4gICAgQVhQV29ya2Zsb3dNb2R1bGUuZm9yQ2hpbGQoe1xuICAgICAgYWN0aW9uczoge1xuICAgICAgICBBWE1SZXBvcnRDcmVhdGVSb290V29ya2Zsb3dBY3Rpb24sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dzOiB7XG4gICAgICAgICdyZXBvcnQtY3JlYXRlJzogQVhNUmVwb3J0Q3JlYXRlV29ya2Zsb3csXG4gICAgICB9LFxuICAgIH0pLFxuICBdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gUmVtb3ZlZCBpbmRpdmlkdWFsIGVudGl0eSBzZXJ2aWNlIHByb3ZpZGVyIC0gbm93IHByb3ZpZGVkIGJ5IGVudGl0eSBtb2R1bGVzXG4gICAgQVhNX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgIEFYTV9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX01FTlVfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNTWVudVByb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgICAgdXNlRmFjdG9yeTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gKGF3YWl0IGltcG9ydCgnLi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXInKSkuQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIG5ldyBwcm92aWRlcihpbmplY3Rvcik7XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAgIHByb3ZpZGU6IEFYUF9TRUFSQ0hfUFJPVklERVIsXG4gICAgLy8gICAgIHVzZUNsYXNzOiBBWFBSZXBvcnRTZWFyY2hQcm92aWRlcixcbiAgICAvLyAgICAgbXVsdGk6IHRydWUsXG4gICAgLy8gfSxcbiAgICAvLyB7XG4gICAgLy8gICAgIHByb3ZpZGU6IEFYUF9TRUFSQ0hfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICAvLyAgICAgdXNlQ2xhc3M6IEFYUFJlcG9ydFNlYXJjaERlZmluaXRpb25Qcm92aWRlcixcbiAgICAvLyAgICAgbXVsdGk6IHRydWUsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY29yeSxcbiAgICB9LFxuXG4gICAgcHJvdmlkZUVudGl0eShbUm9vdENvbmZpZy5lbnRpdGllcy5yZXBvcnQuZnVsbE5hbWUsIFJvb3RDb25maWcuZW50aXRpZXMuY2F0ZWdvcnkuZnVsbE5hbWVdKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfRVhQUkVTU0lPTl9FVkFMVUFUT1JfU0NPUEVfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNQ29sdW1uRXZhbHVhdG9yU2NvcGVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVJlcG9ydE1hbmFnZW1lbnRNb2R1bGUgeyB9XG4iXX0=","export const AXMPermissionsKeys = {\n ReportManagement: {\n Management: 'report-management:manage',\n Report: {\n Management: 'report-management:report:manage',\n View: 'report-management:report:view',\n Create: 'report-management:report:create',\n Update: 'report-management:report:update',\n Delete: 'report-management:report:delete',\n },\n Category: {\n Management: 'report-management:category:manage',\n View: 'report-management:category:view',\n Create: 'report-management:category:create',\n Update: 'report-management:category:update',\n Delete: 'report-management:category:delete',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLGdCQUFnQixFQUFFO1FBQ2hCLFVBQVUsRUFBRSwwQkFBMEI7UUFDdEMsTUFBTSxFQUFFO1lBQ04sVUFBVSxFQUFFLGlDQUFpQztZQUM3QyxJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLE1BQU0sRUFBRSxpQ0FBaUM7WUFDekMsTUFBTSxFQUFFLGlDQUFpQztZQUN6QyxNQUFNLEVBQUUsaUNBQWlDO1NBQzFDO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsVUFBVSxFQUFFLG1DQUFtQztZQUMvQyxJQUFJLEVBQUUsaUNBQWlDO1lBQ3ZDLE1BQU0sRUFBRSxtQ0FBbUM7WUFDM0MsTUFBTSxFQUFFLG1DQUFtQztZQUMzQyxNQUFNLEVBQUUsbUNBQW1DO1NBQzVDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYTVBlcm1pc3Npb25zS2V5cyA9IHtcbiAgUmVwb3J0TWFuYWdlbWVudDoge1xuICAgIE1hbmFnZW1lbnQ6ICdyZXBvcnQtbWFuYWdlbWVudDptYW5hZ2UnLFxuICAgIFJlcG9ydDoge1xuICAgICAgTWFuYWdlbWVudDogJ3JlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydDptYW5hZ2UnLFxuICAgICAgVmlldzogJ3JlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydDp2aWV3JyxcbiAgICAgIENyZWF0ZTogJ3JlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydDpjcmVhdGUnLFxuICAgICAgVXBkYXRlOiAncmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0OnVwZGF0ZScsXG4gICAgICBEZWxldGU6ICdyZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQ6ZGVsZXRlJyxcbiAgICB9LFxuICAgIENhdGVnb3J5OiB7XG4gICAgICBNYW5hZ2VtZW50OiAncmVwb3J0LW1hbmFnZW1lbnQ6Y2F0ZWdvcnk6bWFuYWdlJyxcbiAgICAgIFZpZXc6ICdyZXBvcnQtbWFuYWdlbWVudDpjYXRlZ29yeTp2aWV3JyxcbiAgICAgIENyZWF0ZTogJ3JlcG9ydC1tYW5hZ2VtZW50OmNhdGVnb3J5OmNyZWF0ZScsXG4gICAgICBVcGRhdGU6ICdyZXBvcnQtbWFuYWdlbWVudDpjYXRlZ29yeTp1cGRhdGUnLFxuICAgICAgRGVsZXRlOiAncmVwb3J0LW1hbmFnZW1lbnQ6Y2F0ZWdvcnk6ZGVsZXRlJyxcbiAgICB9LFxuICB9LFxufTtcblxuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.ReportManagement;\n const trans = async (key) => await this.translateService.translateAsync(key);\n context\n .addGroup(keys.Management, await trans('@report-management:module.menus.root.title'))\n // Reports Management\n .addPermission(keys.Report.Management, await trans('@report-management:reports.permissions.reports.title'))\n .addChild(keys.Report.View, await trans('@report-management:reports.permissions.reports.actions.view.title'))\n .addChild(keys.Report.Create, await trans('@report-management:reports.permissions.reports.actions.create.title'))\n .addChild(keys.Report.Update, await trans('@report-management:reports.permissions.reports.actions.update.title'))\n .addChild(keys.Report.Delete, await trans('@report-management:reports.permissions.reports.actions.delete.title'))\n .endPermission()\n // Categories Management\n .addPermission(keys.Category.Management, await trans('@report-management:reports.permissions.categories.title'))\n .addChild(keys.Category.View, await trans('@report-management:reports.permissions.categories.actions.view.title'))\n .addChild(keys.Category.Create, await trans('@report-management:reports.permissions.categories.actions.create.title'))\n .addChild(keys.Category.Update, await trans('@report-management:reports.permissions.categories.actions.update.title'))\n .addChild(keys.Category.Delete, await trans('@report-management:reports.permissions.categories.actions.delete.title'))\n .endPermission()\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUd2RCxNQUFNLE9BQU8sK0JBQStCO0lBRzFDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGckIscUJBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUVuQyxDQUFDO0lBRTFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBK0M7UUFDMUQsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJGLE9BQU87YUFDSixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ3JGLHFCQUFxQjthQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzthQUMxRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQzthQUM1RyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxhQUFhLEVBQUU7WUFDaEIsd0JBQXdCO2FBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2FBQy9HLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO2FBQ2pILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILGFBQWEsRUFBRTthQUNmLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBMUJVLCtCQUErQjttSEFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciwgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVBlcm1pc3Npb25zS2V5cyB9IGZyb20gJy4vcGVybWlzc2lvbi5rZXlzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGFzeW5jIGRlZmluZShjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleXMgPSBBWE1QZXJtaXNzaW9uc0tleXMuUmVwb3J0TWFuYWdlbWVudDtcbiAgICBjb25zdCB0cmFucyA9IGFzeW5jIChrZXk6IHN0cmluZykgPT4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGtleSk7XG5cbiAgICBjb250ZXh0XG4gICAgICAuYWRkR3JvdXAoa2V5cy5NYW5hZ2VtZW50LCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50Om1vZHVsZS5tZW51cy5yb290LnRpdGxlJykpXG4gICAgICAvLyBSZXBvcnRzIE1hbmFnZW1lbnRcbiAgICAgIC5hZGRQZXJtaXNzaW9uKGtleXMuUmVwb3J0Lk1hbmFnZW1lbnQsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5SZXBvcnQuVmlldywgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLnJlcG9ydHMuYWN0aW9ucy52aWV3LnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5SZXBvcnQuQ3JlYXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMucmVwb3J0cy5hY3Rpb25zLmNyZWF0ZS50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuUmVwb3J0LlVwZGF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLnJlcG9ydHMuYWN0aW9ucy51cGRhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLlJlcG9ydC5EZWxldGUsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLmFjdGlvbnMuZGVsZXRlLnRpdGxlJykpXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvLyBDYXRlZ29yaWVzIE1hbmFnZW1lbnRcbiAgICAgIC5hZGRQZXJtaXNzaW9uKGtleXMuQ2F0ZWdvcnkuTWFuYWdlbWVudCwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LlZpZXcsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5jYXRlZ29yaWVzLmFjdGlvbnMudmlldy50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuQ2F0ZWdvcnkuQ3JlYXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLmNyZWF0ZS50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuQ2F0ZWdvcnkuVXBkYXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLnVwZGF0ZS50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuQ2F0ZWdvcnkuRGVsZXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLmRlbGV0ZS50aXRsZScpKVxuICAgICAgLmVuZFBlcm1pc3Npb24oKVxuICAgICAgLmVuZEdyb3VwKCk7XG4gIH1cbn1cblxuIl19","import { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { AXPReportDefinitionService, } from '../../reports';\nexport const AXPReportViewerViewModel = signalStore(withState(() => ({\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n categoriesPath: [],\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null, // Track last applied filters\n hasBeenExecuted: false, // Track if report has been executed at least once\n status: AXPPageStatus.Idle,\n error: null,\n})), withComputed((store) => ({\n //#region ---- Layout Management ----\n availableLayouts: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts)\n return [];\n return report.layouts.map((layout) => ({\n id: layout.id,\n title: layout.title,\n icon: layout.icon,\n type: layout.layout.type,\n }));\n }),\n defaultLayout: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts?.length)\n return null;\n // Find layout marked as default, or use first layout\n return report.layouts.find((l) => l.isDefault) || report.layouts[0];\n }),\n activeLayoutId: computed(() => store.currentLayout()?.id || null),\n layoutType: computed(() => store.currentLayout()?.layout?.type || null),\n //#endregion\n //#region ---- Layout-Specific Configurations ----\n tableLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'table' ? layout.layout : null;\n }),\n chartLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'chart' ? layout.layout : null;\n }),\n //#endregion\n //#region ---- State Indicators ----\n isLoading: computed(() => store.status() === AXPPageStatus.Processing),\n isExecuting: computed(() => store.status() === AXPPageStatus.Submitting),\n hasError: computed(() => store.error() !== null),\n canExecute: computed(() => {\n // Always allow execution if there's an error (to enable retry)\n if (store.error() !== null) {\n return true;\n }\n // Allow execution if there are unapplied filters\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n if (hasBeenExecuted && JSON.stringify(currentContext) !== JSON.stringify(lastApplied)) {\n return true;\n }\n // Allow execution if report hasn't been executed yet\n if (!hasBeenExecuted) {\n return true;\n }\n // Otherwise, don't allow execution\n return false;\n }),\n hasMultipleLayouts: computed(() => {\n const report = store.reportDefinition();\n return (report?.layouts?.length ?? 0) > 1;\n }),\n title: computed(() => store.reportDefinition()?.title ?? 'Report Viewer'),\n description: computed(() => store.reportDefinition()?.description ?? null),\n //#endregion\n //#region ---- Form Configuration ----\n formDefinition: computed(() => {\n const report = store.reportDefinition();\n if (!report || !report.parameterGroups) {\n return { groups: [] };\n }\n const formDefinition = {\n groups: report.parameterGroups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n parameters: group.parameters.map((param) => ({\n path: param.path,\n title: param.title,\n description: param.description,\n widget: {\n ...param.widget,\n options: {\n ...param.widget.options,\n clearButton: true,\n hasClearButton: true,\n },\n },\n })),\n })),\n };\n return formDefinition;\n }),\n //#endregion\n //#region ---- Layout Type Detection ----\n isTableLayout: computed(() => store.currentLayout()?.layout?.type === 'table'),\n isChartLayout: computed(() => store.currentLayout()?.layout?.type === 'chart'),\n //#endregion\n //#region ---- Filter States ----\n hasUnappliedFilters: computed(() => {\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n // If report has never been executed, don't show unapplied filters warning\n if (!hasBeenExecuted) {\n return false;\n }\n // If no filters have been applied yet, return true\n if (lastApplied === null) {\n return true;\n }\n // Check if current filters are different from last applied filters\n const currentKeys = Object.keys(currentContext);\n const lastKeys = Object.keys(lastApplied);\n if (currentKeys.length !== lastKeys.length) {\n return true;\n }\n // Check if any values are different\n for (const key of currentKeys) {\n if (currentContext[key] !== lastApplied[key]) {\n return true;\n }\n }\n return false;\n }),\n //#endregion\n //#region ---- Action States ----\n canSwitchLayout: computed(() => (store.reportDefinition()?.layouts?.length ?? 0) > 1 && store.status() !== AXPPageStatus.Submitting),\n canSelectRows: computed(() => {\n const layout = store.currentLayout();\n return (layout?.layout?.type === 'table' &&\n layout.layout.options?.selectable?.mode &&\n layout.layout.options?.selectable?.mode !== 'none');\n }),\n //#endregion\n})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService), commandService = inject(AXPCommandService)) => {\n const executeReport = async () => {\n try {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n patchState(store, {\n error: 'Report or layout not found',\n });\n return;\n }\n patchState(store, {\n status: AXPPageStatus.Submitting,\n error: null,\n allowFetchData: true,\n shouldExecuteReport: true,\n lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied\n hasBeenExecuted: true, // Mark that report has been executed at least once\n });\n patchState(store, {\n status: AXPPageStatus.Submitted,\n error: null,\n });\n }\n catch (error) {\n patchState(store, {\n status: AXPPageStatus.Error,\n error: error instanceof Error ? error.message : 'An unexpected error occurred while executing the report',\n });\n }\n };\n const fetchData = async (parameters = {}) => {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n return null;\n }\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n // Create execution context - ensure dataSource is provided\n const dataSource = layout.dataSource || {\n type: 'query',\n name: 'getEmployeeList',\n };\n const context = {\n reportId: report.id,\n layoutId: layout.id,\n dataSource: dataSource,\n parameters: {\n ...store.filterContext(),\n ...parameters,\n },\n };\n const executionResult = await commandService.execute('ReportManagement.Report:Execute', context);\n if (!executionResult?.success || !executionResult.data) {\n patchState(store, {\n error: executionResult?.message?.text || 'Failed to execute report',\n });\n return null;\n }\n return executionResult.data;\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to execute report',\n });\n console.error('Error executing report:', error);\n return null;\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n };\n return {\n //#region ---- Report Loading ----\n async loadReport(reportId) {\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n const report = await reportDefinitionService.getReportById(reportId);\n if (report) {\n // Configure parameter widgets with proper paths\n report.parameterGroups.forEach((group) => {\n group.parameters.forEach((param) => {\n param.widget.path = param.path;\n });\n });\n // Load categories path for breadcrumbs\n const categoriesPath = await reportDefinitionService.getCategoriesPathByReportId(reportId);\n // Set default layout\n const defaultLayout = report.layouts.find((l) => l.isDefault) || report.layouts[0];\n patchState(store, {\n reportDefinition: report,\n currentLayout: defaultLayout,\n categoriesPath: categoriesPath || [],\n filterContext: {}, // Reset context when loading new report\n allowFetchData: false,\n hasBeenExecuted: false, // Reset execution state for new report\n });\n }\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to load report definition',\n });\n console.error('Error loading report:', error);\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n },\n //#endregion\n //#region ---- Layout Management ----\n switchLayout(layoutId) {\n const report = store.reportDefinition();\n if (!report)\n return;\n const layout = report.layouts.find((l) => l.id === layoutId);\n if (layout) {\n patchState(store, {\n currentLayout: layout,\n });\n }\n },\n //#endregion\n //#region ---- Data Execution ----\n executeReport,\n fetchData,\n //#endregion\n //#region ---- Filter Management ----\n updateFilterContext(context) {\n patchState(store, {\n filterContext: { ...store.filterContext(), ...context },\n shouldExecuteReport: false, // Reset execution flag when filters change\n });\n },\n clearFilters() {\n patchState(store, {\n allowFetchData: false,\n shouldExecuteReport: false,\n filterContext: {},\n lastAppliedFilterContext: null, // Reset applied filters when clearing\n hasBeenExecuted: false, // Reset execution state when clearing filters\n });\n },\n resetFilters() {\n patchState(store, {\n allowFetchData: false,\n });\n },\n //#endregion\n //#region ---- Export Management ----\n async exportReport(format) {\n const layout = store.currentLayout();\n if (!layout?.export) {\n console.warn('Export not configured for current layout');\n return;\n }\n try {\n // Export logic would go here\n // This would typically call a different command for export\n console.log(`Exporting report in ${format} format`);\n }\n catch (error) {\n console.error('Error exporting report:', error);\n }\n },\n //#endregion\n //#region ---- Utility Methods ----\n refresh() {\n return executeReport();\n },\n clearError() {\n patchState(store, {\n error: null,\n });\n },\n clearExecutionState() {\n patchState(store, {\n hasBeenExecuted: false,\n allowFetchData: false,\n shouldExecuteReport: false,\n });\n },\n cancel() {\n patchState(store, {\n status: AXPPageStatus.Idle,\n hasBeenExecuted: false,\n error: null,\n });\n //TODO: Cancel the report execution\n },\n reset() {\n patchState(store, {\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null,\n hasBeenExecuted: false,\n categoriesPath: [],\n status: AXPPageStatus.Idle,\n error: null,\n });\n },\n //#endregion\n };\n}), withHooks((store, translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({\n async onInit() {\n // Subscribe to language and locale changes\n translationService.langChanges$.subscribe(() => {\n // Handle language change if needed\n });\n localeService.profileChanged$.subscribe(() => {\n // Handle locale change if needed\n });\n },\n onDestroy() {\n // Cleanup if needed\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXIudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFNTCwwQkFBMEIsR0FLM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNmLGdCQUFnQixFQUFFLElBQWtDO0lBQ3BELGFBQWEsRUFBRSxJQUF3QztJQUN2RCxhQUFhLEVBQUUsRUFBb0I7SUFDbkMsY0FBYyxFQUFFLEVBQVc7SUFDM0IsY0FBYyxFQUFFLEtBQUs7SUFDckIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQix3QkFBd0IsRUFBRSxJQUE2QixFQUFFLDZCQUE2QjtJQUN0RixlQUFlLEVBQUUsS0FBSyxFQUFFLGtEQUFrRDtJQUMxRSxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUk7SUFDMUIsS0FBSyxFQUFFLElB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RTtnQkFDaEIsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixjQUFjLEVBQUUsS0FBSztnQkFDckIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsd0JBQXdCLEVBQUUsSUFBSTtnQkFDOUIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUk7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyxDQUNGLEVBRUQsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLGFBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEgsS0FBSyxDQUFDLE1BQU07UUFDViwyQ0FBMkM7UUFDM0Msa0JBQWtCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsbUNBQW1DO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLGlDQUFpQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFTO1FBQ1Asb0JBQW9CO0lBQ3RCLENBQUM7Q0FDRixDQUFDLENBQUMsQ0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBDb250ZXh0RGF0YSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBEeW5hbWljRm9ybURlZmluaXRpb24gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUFBhZ2VTdGF0dXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgd2l0aENvbXB1dGVkLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7XG4gIEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQsXG4gIEFYUExheW91dEV4ZWN1dGlvbkNvbnRleHQsXG4gIEFYUExheW91dFN3aXRjaGVyT3B0aW9uLFxuICBBWFBSZXBvcnRDaGFydExheW91dCxcbiAgQVhQUmVwb3J0RGVmaW5pdGlvbixcbiAgQVhQUmVwb3J0RGVmaW5pdGlvblNlcnZpY2UsXG4gIEFYUFJlcG9ydExheW91dERlZmluaXRpb24sXG4gIEFYUFJlcG9ydFBhcmFtZXRlcixcbiAgQVhQUmVwb3J0UGFyYW1ldGVyR3JvdXAsXG4gIEFYUFJlcG9ydFRhYmxlTGF5b3V0LFxufSBmcm9tICcuLi8uLi9yZXBvcnRzJztcblxuZXhwb3J0IGNvbnN0IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCA9IHNpZ25hbFN0b3JlKFxuICB3aXRoU3RhdGUoKCkgPT4gKHtcbiAgICByZXBvcnREZWZpbml0aW9uOiBudWxsIGFzIEFYUFJlcG9ydERlZmluaXRpb24gfCBudWxsLFxuICAgIGN1cnJlbnRMYXlvdXQ6IG51bGwgYXMgQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbiB8IG51bGwsXG4gICAgZmlsdGVyQ29udGV4dDoge30gYXMgQVhQQ29udGV4dERhdGEsXG4gICAgY2F0ZWdvcmllc1BhdGg6IFtdIGFzIGFueVtdLFxuICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICBzaG91bGRFeGVjdXRlUmVwb3J0OiBmYWxzZSxcbiAgICBsYXN0QXBwbGllZEZpbHRlckNvbnRleHQ6IG51bGwgYXMgQVhQQ29udGV4dERhdGEgfCBudWxsLCAvLyBUcmFjayBsYXN0IGFwcGxpZWQgZmlsdGVyc1xuICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsIC8vIFRyYWNrIGlmIHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCBhdCBsZWFzdCBvbmNlXG4gICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLklkbGUsXG4gICAgZXJyb3I6IG51bGwgYXMgc3RyaW5nIHwgbnVsbCxcbiAgfSkpLFxuXG4gIHdpdGhDb21wdXRlZCgoc3RvcmUpID0+ICh7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIGF2YWlsYWJsZUxheW91dHM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgIGlmICghcmVwb3J0Py5sYXlvdXRzKSByZXR1cm4gW107XG5cbiAgICAgIHJldHVybiByZXBvcnQubGF5b3V0cy5tYXAoXG4gICAgICAgIChsYXlvdXQ6IEFYUFJlcG9ydExheW91dERlZmluaXRpb24pID0+XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGlkOiBsYXlvdXQuaWQsXG4gICAgICAgICAgICB0aXRsZTogbGF5b3V0LnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogbGF5b3V0Lmljb24sXG4gICAgICAgICAgICB0eXBlOiBsYXlvdXQubGF5b3V0LnR5cGUsXG4gICAgICAgICAgfSkgYXMgQVhQTGF5b3V0U3dpdGNoZXJPcHRpb24sXG4gICAgICApO1xuICAgIH0pLFxuXG4gICAgZGVmYXVsdExheW91dDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgaWYgKCFyZXBvcnQ/LmxheW91dHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIEZpbmQgbGF5b3V0IG1hcmtlZCBhcyBkZWZhdWx0LCBvciB1c2UgZmlyc3QgbGF5b3V0XG4gICAgICByZXR1cm4gcmVwb3J0LmxheW91dHMuZmluZCgobDogQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbikgPT4gbC5pc0RlZmF1bHQpIHx8IHJlcG9ydC5sYXlvdXRzWzBdO1xuICAgIH0pLFxuXG4gICAgYWN0aXZlTGF5b3V0SWQ6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8uaWQgfHwgbnVsbCksXG5cbiAgICBsYXlvdXRUeXBlOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5jdXJyZW50TGF5b3V0KCk/LmxheW91dD8udHlwZSB8fCBudWxsKSxcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQtU3BlY2lmaWMgQ29uZmlndXJhdGlvbnMgICAtLS0tXG5cbiAgICB0YWJsZUxheW91dENvbmZpZzogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgcmV0dXJuIGxheW91dD8ubGF5b3V0Py50eXBlID09PSAndGFibGUnID8gKGxheW91dC5sYXlvdXQgYXMgQVhQUmVwb3J0VGFibGVMYXlvdXQpIDogbnVsbDtcbiAgICB9KSxcblxuICAgIGNoYXJ0TGF5b3V0Q29uZmlnOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gbGF5b3V0Py5sYXlvdXQ/LnR5cGUgPT09ICdjaGFydCcgPyAobGF5b3V0LmxheW91dCBhcyBBWFBSZXBvcnRDaGFydExheW91dCkgOiBudWxsO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFN0YXRlIEluZGljYXRvcnMgICAtLS0tXG5cbiAgICBpc0xvYWRpbmc6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcpLFxuICAgIGlzRXhlY3V0aW5nOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5zdGF0dXMoKSA9PT0gQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nKSxcbiAgICBoYXNFcnJvcjogY29tcHV0ZWQoKCkgPT4gc3RvcmUuZXJyb3IoKSAhPT0gbnVsbCksXG4gICAgY2FuRXhlY3V0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy8gQWx3YXlzIGFsbG93IGV4ZWN1dGlvbiBpZiB0aGVyZSdzIGFuIGVycm9yICh0byBlbmFibGUgcmV0cnkpXG4gICAgICBpZiAoc3RvcmUuZXJyb3IoKSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZXhlY3V0aW9uIGlmIHRoZXJlIGFyZSB1bmFwcGxpZWQgZmlsdGVyc1xuICAgICAgY29uc3QgY3VycmVudENvbnRleHQgPSBzdG9yZS5maWx0ZXJDb250ZXh0KCk7XG4gICAgICBjb25zdCBsYXN0QXBwbGllZCA9IHN0b3JlLmxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dCgpO1xuICAgICAgY29uc3QgaGFzQmVlbkV4ZWN1dGVkID0gc3RvcmUuaGFzQmVlbkV4ZWN1dGVkKCk7XG5cbiAgICAgIGlmIChoYXNCZWVuRXhlY3V0ZWQgJiYgSlNPTi5zdHJpbmdpZnkoY3VycmVudENvbnRleHQpICE9PSBKU09OLnN0cmluZ2lmeShsYXN0QXBwbGllZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEFsbG93IGV4ZWN1dGlvbiBpZiByZXBvcnQgaGFzbid0IGJlZW4gZXhlY3V0ZWQgeWV0XG4gICAgICBpZiAoIWhhc0JlZW5FeGVjdXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlLCBkb24ndCBhbGxvdyBleGVjdXRpb25cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSxcbiAgICBoYXNNdWx0aXBsZUxheW91dHM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgIHJldHVybiAocmVwb3J0Py5sYXlvdXRzPy5sZW5ndGggPz8gMCkgPiAxO1xuICAgIH0pLFxuXG4gICAgdGl0bGU6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKT8udGl0bGUgPz8gJ1JlcG9ydCBWaWV3ZXInKSxcbiAgICBkZXNjcmlwdGlvbjogY29tcHV0ZWQoKCkgPT4gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpPy5kZXNjcmlwdGlvbiA/PyBudWxsKSxcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBGb3JtIENvbmZpZ3VyYXRpb24gICAtLS0tXG5cbiAgICBmb3JtRGVmaW5pdGlvbjogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgaWYgKCFyZXBvcnQgfHwgIXJlcG9ydC5wYXJhbWV0ZXJHcm91cHMpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3JvdXBzOiBbXSB9IGFzIEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURlZmluaXRpb24gPSB7XG4gICAgICAgIGdyb3VwczogcmVwb3J0LnBhcmFtZXRlckdyb3Vwcy5tYXAoKGdyb3VwOiBBWFBSZXBvcnRQYXJhbWV0ZXJHcm91cCkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBncm91cC5uYW1lLFxuICAgICAgICAgIHRpdGxlOiBncm91cC50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ3JvdXAuZGVzY3JpcHRpb24sXG4gICAgICAgICAgcGFyYW1ldGVyczogZ3JvdXAucGFyYW1ldGVycy5tYXAoKHBhcmFtOiBBWFBSZXBvcnRQYXJhbWV0ZXIpID0+ICh7XG4gICAgICAgICAgICBwYXRoOiBwYXJhbS5wYXRoLFxuICAgICAgICAgICAgdGl0bGU6IHBhcmFtLnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcmFtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgICAgIC4uLnBhcmFtLndpZGdldCxcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtLndpZGdldC5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGNsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhc0NsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pKSxcbiAgICAgIH0gYXMgQVhQRHluYW1pY0Zvcm1EZWZpbml0aW9uO1xuICAgICAgcmV0dXJuIGZvcm1EZWZpbml0aW9uO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBUeXBlIERldGVjdGlvbiAgIC0tLS1cblxuICAgIGlzVGFibGVMYXlvdXQ6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0Py50eXBlID09PSAndGFibGUnKSxcbiAgICBpc0NoYXJ0TGF5b3V0OiBjb21wdXRlZCgoKSA9PiBzdG9yZS5jdXJyZW50TGF5b3V0KCk/LmxheW91dD8udHlwZSA9PT0gJ2NoYXJ0JyksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRmlsdGVyIFN0YXRlcyAgIC0tLS1cblxuICAgIGhhc1VuYXBwbGllZEZpbHRlcnM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gc3RvcmUuZmlsdGVyQ29udGV4dCgpO1xuICAgICAgY29uc3QgbGFzdEFwcGxpZWQgPSBzdG9yZS5sYXN0QXBwbGllZEZpbHRlckNvbnRleHQoKTtcbiAgICAgIGNvbnN0IGhhc0JlZW5FeGVjdXRlZCA9IHN0b3JlLmhhc0JlZW5FeGVjdXRlZCgpO1xuXG4gICAgICAvLyBJZiByZXBvcnQgaGFzIG5ldmVyIGJlZW4gZXhlY3V0ZWQsIGRvbid0IHNob3cgdW5hcHBsaWVkIGZpbHRlcnMgd2FybmluZ1xuICAgICAgaWYgKCFoYXNCZWVuRXhlY3V0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBmaWx0ZXJzIGhhdmUgYmVlbiBhcHBsaWVkIHlldCwgcmV0dXJuIHRydWVcbiAgICAgIGlmIChsYXN0QXBwbGllZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBmaWx0ZXJzIGFyZSBkaWZmZXJlbnQgZnJvbSBsYXN0IGFwcGxpZWQgZmlsdGVyc1xuICAgICAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50Q29udGV4dCk7XG4gICAgICBjb25zdCBsYXN0S2V5cyA9IE9iamVjdC5rZXlzKGxhc3RBcHBsaWVkKTtcblxuICAgICAgaWYgKGN1cnJlbnRLZXlzLmxlbmd0aCAhPT0gbGFzdEtleXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBhbnkgdmFsdWVzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGN1cnJlbnRLZXlzKSB7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dFtrZXldICE9PSBsYXN0QXBwbGllZFtrZXldKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEFjdGlvbiBTdGF0ZXMgICAtLS0tXG5cbiAgICBjYW5Td2l0Y2hMYXlvdXQ6IGNvbXB1dGVkKFxuICAgICAgKCkgPT4gKHN0b3JlLnJlcG9ydERlZmluaXRpb24oKT8ubGF5b3V0cz8ubGVuZ3RoID8/IDApID4gMSAmJiBzdG9yZS5zdGF0dXMoKSAhPT0gQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLFxuICAgICksXG5cbiAgICBjYW5TZWxlY3RSb3dzOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBsYXlvdXQ/LmxheW91dD8udHlwZSA9PT0gJ3RhYmxlJyAmJlxuICAgICAgICBsYXlvdXQubGF5b3V0Lm9wdGlvbnM/LnNlbGVjdGFibGU/Lm1vZGUgJiZcbiAgICAgICAgbGF5b3V0LmxheW91dC5vcHRpb25zPy5zZWxlY3RhYmxlPy5tb2RlICE9PSAnbm9uZSdcbiAgICAgICk7XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cbiAgfSkpLFxuXG4gIHdpdGhNZXRob2RzKFxuICAgIChcbiAgICAgIHN0b3JlLFxuICAgICAgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2U6IEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlKSxcbiAgICAgIGNvbW1hbmRTZXJ2aWNlOiBBWFBDb21tYW5kU2VydmljZSA9IGluamVjdChBWFBDb21tYW5kU2VydmljZSksXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRlUmVwb3J0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICAgICAgaWYgKCFyZXBvcnQgfHwgIWxheW91dCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBlcnJvcjogJ1JlcG9ydCBvciBsYXlvdXQgbm90IGZvdW5kJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IHRydWUsXG4gICAgICAgICAgICBsYXN0QXBwbGllZEZpbHRlckNvbnRleHQ6IHsgLi4uc3RvcmUuZmlsdGVyQ29udGV4dCgpIH0sIC8vIE1hcmsgY3VycmVudCBmaWx0ZXJzIGFzIGFwcGxpZWRcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogdHJ1ZSwgLy8gTWFyayB0aGF0IHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCBhdCBsZWFzdCBvbmNlXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuU3VibWl0dGVkLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLkVycm9yLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSByZXBvcnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhcmFtZXRlcnM6IEFYUENvbnRleHREYXRhID0ge30pOiBQcm9taXNlPEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQgfCBudWxsPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgICBpZiAoIXJlcG9ydCB8fCAhbGF5b3V0KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcsXG4gICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQ3JlYXRlIGV4ZWN1dGlvbiBjb250ZXh0IC0gZW5zdXJlIGRhdGFTb3VyY2UgaXMgcHJvdmlkZWRcbiAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gbGF5b3V0LmRhdGFTb3VyY2UgfHwge1xuICAgICAgICAgICAgdHlwZTogJ3F1ZXJ5JyBhcyBjb25zdCxcbiAgICAgICAgICAgIG5hbWU6ICdnZXRFbXBsb3llZUxpc3QnLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0OiBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgcmVwb3J0SWQ6IHJlcG9ydC5pZCxcbiAgICAgICAgICAgIGxheW91dElkOiBsYXlvdXQuaWQsXG4gICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAuLi5zdG9yZS5maWx0ZXJDb250ZXh0KCksXG4gICAgICAgICAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBleGVjdXRpb25SZXN1bHQgPSBhd2FpdCBjb21tYW5kU2VydmljZS5leGVjdXRlKCdSZXBvcnRNYW5hZ2VtZW50LlJlcG9ydDpFeGVjdXRlJywgY29udGV4dCk7XG4gICAgICAgICAgaWYgKCFleGVjdXRpb25SZXN1bHQ/LnN1Y2Nlc3MgfHwgIWV4ZWN1dGlvblJlc3VsdC5kYXRhKSB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBleGVjdXRpb25SZXN1bHQ/Lm1lc3NhZ2U/LnRleHQgfHwgJ0ZhaWxlZCB0byBleGVjdXRlIHJlcG9ydCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhlY3V0aW9uUmVzdWx0LmRhdGE7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gZXhlY3V0ZSByZXBvcnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4ZWN1dGluZyByZXBvcnQ6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIFJlcG9ydCBMb2FkaW5nICAgLS0tLVxuXG4gICAgICAgIGFzeW5jIGxvYWRSZXBvcnQocmVwb3J0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuZ2V0UmVwb3J0QnlJZChyZXBvcnRJZCk7XG4gICAgICAgICAgICBpZiAocmVwb3J0KSB7XG4gICAgICAgICAgICAgIC8vIENvbmZpZ3VyZSBwYXJhbWV0ZXIgd2lkZ2V0cyB3aXRoIHByb3BlciBwYXRoc1xuICAgICAgICAgICAgICByZXBvcnQucGFyYW1ldGVyR3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXAucGFyYW1ldGVycy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcGFyYW0ud2lkZ2V0LnBhdGggPSBwYXJhbS5wYXRoO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAvLyBMb2FkIGNhdGVnb3JpZXMgcGF0aCBmb3IgYnJlYWRjcnVtYnNcbiAgICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSBhd2FpdCByZXBvcnREZWZpbml0aW9uU2VydmljZS5nZXRDYXRlZ29yaWVzUGF0aEJ5UmVwb3J0SWQocmVwb3J0SWQpO1xuXG4gICAgICAgICAgICAgIC8vIFNldCBkZWZhdWx0IGxheW91dFxuICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID1cbiAgICAgICAgICAgICAgICByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlzRGVmYXVsdCkgfHwgcmVwb3J0LmxheW91dHNbMF07XG5cbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHJlcG9ydERlZmluaXRpb246IHJlcG9ydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBkZWZhdWx0TGF5b3V0LFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNQYXRoOiBjYXRlZ29yaWVzUGF0aCB8fCBbXSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSwgLy8gUmVzZXQgY29udGV4dCB3aGVuIGxvYWRpbmcgbmV3IHJlcG9ydFxuICAgICAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoYXNCZWVuRXhlY3V0ZWQ6IGZhbHNlLCAvLyBSZXNldCBleGVjdXRpb24gc3RhdGUgZm9yIG5ldyByZXBvcnRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gbG9hZCByZXBvcnQgZGVmaW5pdGlvbicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcmVwb3J0OicsIGVycm9yKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvLyNlbmRyZWdpb25cblxuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgICAgIHN3aXRjaExheW91dChsYXlvdXRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgICAgIGlmICghcmVwb3J0KSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlkID09PSBsYXlvdXRJZCk7XG4gICAgICAgICAgaWYgKGxheW91dCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBEYXRhIEV4ZWN1dGlvbiAgIC0tLS1cblxuICAgICAgICBleGVjdXRlUmVwb3J0LFxuICAgICAgICBmZXRjaERhdGEsXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBGaWx0ZXIgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgICAgICB1cGRhdGVGaWx0ZXJDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7IC4uLnN0b3JlLmZpbHRlckNvbnRleHQoKSwgLi4uY29udGV4dCB9LFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsIC8vIFJlc2V0IGV4ZWN1dGlvbiBmbGFnIHdoZW4gZmlsdGVycyBjaGFuZ2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsXG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogbnVsbCwgLy8gUmVzZXQgYXBwbGllZCBmaWx0ZXJzIHdoZW4gY2xlYXJpbmdcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsIC8vIFJlc2V0IGV4ZWN1dGlvbiBzdGF0ZSB3aGVuIGNsZWFyaW5nIGZpbHRlcnNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXNldEZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgRXhwb3J0IE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAgICAgYXN5bmMgZXhwb3J0UmVwb3J0KGZvcm1hdDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgICAgIGlmICghbGF5b3V0Py5leHBvcnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXhwb3J0IG5vdCBjb25maWd1cmVkIGZvciBjdXJyZW50IGxheW91dCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBFeHBvcnQgbG9naWMgd291bGQgZ28gaGVyZVxuICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCB0eXBpY2FsbHkgY2FsbCBhIGRpZmZlcmVudCBjb21tYW5kIGZvciBleHBvcnRcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBFeHBvcnRpbmcgcmVwb3J0IGluICR7Zm9ybWF0fSBmb3JtYXRgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXhwb3J0aW5nIHJlcG9ydDonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgVXRpbGl0eSBNZXRob2RzICAgLS0tLVxuXG4gICAgICAgIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgcmV0dXJuIGV4ZWN1dGVSZXBvcnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhckVycm9yKCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsZWFyRXhlY3V0aW9uU3RhdGUoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvL1RPRE86IENhbmNlbCB0aGUgcmVwb3J0IGV4ZWN1dGlvblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHJlcG9ydERlZmluaXRpb246IG51bGwsXG4gICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBudWxsLFxuICAgICAgICAgICAgZmlsdGVyQ29udGV4dDoge30sXG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgICAgICAgICBzaG91bGRFeGVjdXRlUmVwb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogbnVsbCxcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsXG4gICAgICAgICAgICBjYXRlZ29yaWVzUGF0aDogW10sXG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgfTtcbiAgICB9LFxuICApLFxuXG4gIHdpdGhIb29rcygoc3RvcmUsIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKSkgPT4gKHtcbiAgICBhc3luYyBvbkluaXQoKSB7XG4gICAgICAvLyBTdWJzY3JpYmUgdG8gbGFuZ3VhZ2UgYW5kIGxvY2FsZSBjaGFuZ2VzXG4gICAgICB0cmFuc2xhdGlvblNlcnZpY2UubGFuZ0NoYW5nZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBsYW5ndWFnZSBjaGFuZ2UgaWYgbmVlZGVkXG4gICAgICB9KTtcblxuICAgICAgbG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGxvY2FsZSBjaGFuZ2UgaWYgbmVlZGVkXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uRGVzdHJveSgpIHtcbiAgICAgIC8vIENsZWFudXAgaWYgbmVlZGVkXG4gICAgfSxcbiAgfSkpLFxuKTtcbiJdfQ==","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDonutChartComponent } from '@acorex/charts/donut-chart';\nimport { AXLineChartComponent } from '@acorex/charts/line-chart';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXBarChartReportMapper, AXLineChartReportMapper, AXPieChartReportMapper, } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n this.vm.fetchData().then((data) => {\n const raw = ((data?.data).data ?? {});\n switch (this.chartType()) {\n case 'bar': {\n const v = AXBarChartReportMapper(raw);\n this.barChartData.set(v);\n break;\n }\n case 'doughnut': {\n const v = AXPieChartReportMapper(raw);\n this.donutChartData.set(v);\n break;\n }\n case 'line':\n default: {\n const v = AXLineChartReportMapper(raw);\n this.lineChartData.set(v);\n break;\n }\n }\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.legendOptions = signal({\n mode: 'vertical',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: \"donutChartData\" }] : []));\n this.donutChartOptions = computed(() => {\n return {\n totalLabel: 'Total',\n showTooltip: true,\n showDataLabels: this.donutChartData().length <= 10,\n };\n }, ...(ngDevMode ? [{ debugName: \"donutChartOptions\" }] : []));\n this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: \"lineChartData\" }] : []));\n this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"lineChartOptions\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n #fetchData;\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportChartViewComponent, isStandalone: true, selector: \"axp-report-chart-view\", host: { classAttribute: \"axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col\" }, ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\">\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\">\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\" [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\">\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</ng-container>\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXDonutChartComponent, selector: \"ax-donut-chart\", inputs: [\"data\", \"options\"], outputs: [\"segmentClick\", \"segmentHover\"] }, { kind: \"component\", type: AXLineChartComponent, selector: \"ax-line-chart\", inputs: [\"data\", \"options\"], outputs: [\"pointClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-chart-view', imports: [\n CommonModule,\n AXTranslationModule,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXDonutChartComponent,\n AXLineChartComponent,\n AXChartLegendComponent,\n AXPStateMessageComponent,\n ], host: {\n class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',\n }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\">\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\">\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\" [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\">\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</ng-container>\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtY2hhcnQtdmlldy9yZXBvcnQtY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1jaGFydC12aWV3L3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBdUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLG1DQUFtQyxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBb0J6RSxNQUFNLE9BQU8sMkJBQTJCO0lBbEJ4QztRQW1CRSxvQ0FBb0M7UUFFakIsT0FBRSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBRWpELFlBQVk7UUFFWiwyQ0FBMkM7UUFFM0M7O1dBRUc7UUFDZ0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsQ0FBQyx1REFBQyxDQUFDO1FBRUg7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFdBQVcsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3RDLENBQUMsd0RBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2dCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3JDLENBQUMscURBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2dCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEMsT0FBTyxPQUFPLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztRQUN0QyxDQUFDLHVEQUFDLENBQUM7UUFFSCxZQUFZO1FBRVosK0JBQStCO1FBRS9COztXQUVHO1FBQ0gsZUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDckYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDaEMsTUFBTSxHQUFHLEdBQUcsQ0FBRSxDQUFDLElBQUksRUFBRSxJQUFZLENBQUEsQ0FBQyxJQUFZLElBQUksRUFBRSxDQUEyQixDQUFDO29CQUNoRixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO3dCQUN6QixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7NEJBQ1gsTUFBTSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN6QixNQUFNO3dCQUNSLENBQUM7d0JBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUNoQixNQUFNLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzNCLE1BQU07d0JBQ1IsQ0FBQzt3QkFDRCxLQUFLLE1BQU0sQ0FBQzt3QkFDWixPQUFPLENBQUMsQ0FBQyxDQUFDOzRCQUNSLE1BQU0sQ0FBQyxHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDMUIsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxzREFBQyxDQUFDO1FBYU8sa0JBQWEsR0FBRyxNQUFNLENBQXVCO1lBQ3JELElBQUksRUFBRSxVQUFVO1NBQ2pCLHlEQUFDLENBQUM7UUFFTyxpQkFBWSxHQUFHLE1BQU0sQ0FBa0IsRUFBRSx3REFBQyxDQUFDO1FBQzNDLG9CQUFlLEdBQUcsTUFBTSxDQUFtQixFQUFFLDJEQUFDLENBQUM7UUFFL0MsbUJBQWMsR0FBRyxNQUFNLENBQW9CLEVBQUUsMERBQUMsQ0FBQztRQUUvQyxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzFDLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sSUFBSSxFQUFFO2FBQ25ELENBQUM7UUFDSixDQUFDLDZEQUFDLENBQUM7UUFFTyxrQkFBYSxHQUFHLE1BQU0sQ0FBbUIsRUFBRSx5REFBQyxDQUFDO1FBQzdDLHFCQUFnQixHQUFHLE1BQU0sQ0FBb0IsRUFBRSw0REFBQyxDQUFDO0tBRzVEO0lBakVDLFlBQVk7SUFFWiwrQkFBK0I7SUFFL0I7O09BRUc7SUFDSCxVQUFVLENBd0JQO0lBRUgsWUFBWTtJQUVaLHNDQUFzQztJQUV0Qzs7T0FFRztJQUNPLFlBQVk7UUFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FwRlUsMkJBQTJCO21HQUEzQiwyQkFBMkIsNEtDbkN4QyxzcUlBc0ZlLDJDRGxFWCxZQUFZLDhCQUNaLG1CQUFtQiw4R0FDbkIsbUJBQW1CLCtCQUNuQixtQkFBbUIsNkdBQ25CLHFCQUFxQixtSUFDckIsb0JBQW9CLGdIQUNwQixzQkFBc0Isc0pBQ3RCLHdCQUF3Qjs7NEZBUWYsMkJBQTJCO2tCQWxCdkMsU0FBUzsrQkFDRSx1QkFBdUIsV0FDeEI7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7cUJBQ3pCLFFBQ0s7d0JBQ0osS0FBSyxFQUFFLCtEQUErRDtxQkFDdkUsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhckNoYXJ0Q29tcG9uZW50LCBBWEJhckNoYXJ0T3B0aW9uLCBBWEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhDaGFydExlZ2VuZENvbXBvbmVudCwgQVhDaGFydExlZ2VuZE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9jaGFydC1sZWdlbmQnO1xuaW1wb3J0IHsgQVhEb251dENoYXJ0Q29tcG9uZW50LCBBWERvbnV0Q2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2RvbnV0LWNoYXJ0JztcbmltcG9ydCB7IEFYTGluZUNoYXJ0Q29tcG9uZW50LCBBWExpbmVDaGFydE9wdGlvbiwgQVhMaW5lQ2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2xpbmUtY2hhcnQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlTW9kdWxlLCBBWFBQYWdlU3RhdHVzIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIsXG4gIEFYTGluZUNoYXJ0UmVwb3J0TWFwcGVyLFxuICBBWFBpZUNoYXJ0UmVwb3J0TWFwcGVyLFxufSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC1tYXBwZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC50eXBlcyc7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtY2hhcnQtdmlldycsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgIEFYQmFyQ2hhcnRDb21wb25lbnQsXG4gICAgQVhEb251dENoYXJ0Q29tcG9uZW50LFxuICAgIEFYTGluZUNoYXJ0Q29tcG9uZW50LFxuICAgIEFYQ2hhcnRMZWdlbmRDb21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdheHAtcmVwb3J0LWNoYXJ0LXZpZXcgYXgtdy1mdWxsIGF4LWgtZnVsbCBheC1mbGV4IGF4LWZsZXgtY29sJyxcbiAgfSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJlcG9ydENoYXJ0Vmlld0NvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQVhQUGFnZVN0YXR1cyA9IEFYUFBhZ2VTdGF0dXM7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDdXJyZW50IGNoYXJ0IGxheW91dCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRMYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy52bS5jdXJyZW50TGF5b3V0KCk7XG4gICAgcmV0dXJuIGxheW91dD8ubGF5b3V0LnR5cGUgPT09ICdjaGFydCcgPyAobGF5b3V0LmxheW91dCBhcyBBWFBSZXBvcnRDaGFydExheW91dCkgOiBudWxsO1xuICB9KTtcblxuICAvKipcbiAgICogQ2hhcnQgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNoYXJ0TGF5b3V0ID0gdGhpcy5jaGFydExheW91dCgpO1xuICAgIHJldHVybiBjaGFydExheW91dD8ub3B0aW9ucyB8fCBudWxsO1xuICB9KTtcblxuICAvKipcbiAgICogQ2hhcnQgdHlwZSBmb3IgcmVuZGVyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRUeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNoYXJ0T3B0aW9ucygpO1xuICAgIHJldHVybiBvcHRpb25zPy5jaGFydFR5cGUgfHwgJ2Jhcic7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEYXRhIG1hcHBpbmcgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFNYXBwaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNoYXJ0T3B0aW9ucygpO1xuICAgIHJldHVybiBvcHRpb25zPy5kYXRhTWFwcGluZyB8fCBudWxsO1xuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBmZXRjaCBjaGFydCBkYXRhIHdoZW4gY29uZGl0aW9ucyBhcmUgbWV0XG4gICAqL1xuICAjZmV0Y2hEYXRhID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy52bS5hbGxvd0ZldGNoRGF0YSgpICYmIHRoaXMudm0uc2hvdWxkRXhlY3V0ZVJlcG9ydCgpICYmIHRoaXMuY2hhcnRPcHRpb25zKCkpIHtcbiAgICAgIHRoaXMudm0uZmV0Y2hEYXRhKCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBjb25zdCByYXcgPSAoKChkYXRhPy5kYXRhIGFzIGFueSkuZGF0YSBhcyBhbnkpID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgICAgICBzd2l0Y2ggKHRoaXMuY2hhcnRUeXBlKCkpIHtcbiAgICAgICAgICBjYXNlICdiYXInOiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gQVhCYXJDaGFydFJlcG9ydE1hcHBlcihyYXcpO1xuICAgICAgICAgICAgdGhpcy5iYXJDaGFydERhdGEuc2V0KHYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2RvdWdobnV0Jzoge1xuICAgICAgICAgICAgY29uc3QgdiA9IEFYUGllQ2hhcnRSZXBvcnRNYXBwZXIocmF3KTtcbiAgICAgICAgICAgIHRoaXMuZG9udXRDaGFydERhdGEuc2V0KHYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2xpbmUnOlxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBBWExpbmVDaGFydFJlcG9ydE1hcHBlcihyYXcpO1xuICAgICAgICAgICAgdGhpcy5saW5lQ2hhcnREYXRhLnNldCh2KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAgICovXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY2hhcnRPcHRpb25zKCkgJiYgdGhpcy5kYXRhTWFwcGluZygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWdlbmRPcHRpb25zID0gc2lnbmFsPEFYQ2hhcnRMZWdlbmRPcHRpb25zPih7XG4gICAgbW9kZTogJ3ZlcnRpY2FsJyxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGJhckNoYXJ0RGF0YSA9IHNpZ25hbDxBWEJhckNoYXJ0VmFsdWU+KFtdKTtcbiAgcHJvdGVjdGVkIGJhckNoYXJ0T3B0aW9ucyA9IHNpZ25hbDxBWEJhckNoYXJ0T3B0aW9uPih7fSk7XG5cbiAgcHJvdGVjdGVkIGRvbnV0Q2hhcnREYXRhID0gc2lnbmFsPEFYRG9udXRDaGFydFZhbHVlPihbXSk7XG5cbiAgcHJvdGVjdGVkIGRvbnV0Q2hhcnRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0b3RhbExhYmVsOiAnVG90YWwnLFxuICAgICAgc2hvd1Rvb2x0aXA6IHRydWUsXG4gICAgICBzaG93RGF0YUxhYmVsczogdGhpcy5kb251dENoYXJ0RGF0YSgpLmxlbmd0aCA8PSAxMCxcbiAgICB9O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgbGluZUNoYXJ0RGF0YSA9IHNpZ25hbDxBWExpbmVDaGFydFZhbHVlPihbXSk7XG4gIHByb3RlY3RlZCBsaW5lQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYTGluZUNoYXJ0T3B0aW9uPih7fSk7XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICBAaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcpIHtcbiAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC1nYXAtNiBheC1wLThcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtc3Bpbm5lciBheC1zcGluIGF4LXctMTAgYXgtaC0xMFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmctdGV4dCBheC10ZXh0LXNtIGF4LW9wYWNpdHktNzBcIj5cbiAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLkVycm9yKSB7XG4gIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gIDxheHAtc3RhdGUtbWVzc2FnZSBtb2RlPVwiZXJyb3JcIiBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtZGVzY3JpcHRpb24nXCI+XG4gIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH0gQGVsc2UgaWYgKGlzQ2hhcnRSZWFkeSgpKSB7XG4gIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgPHNlY3Rpb25cbiAgICBjbGFzcz1cIl9fY2hhcnQtY29udGFpbmVyIGF4LW92ZXJmbG93LWF1dG8gbWQ6YXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXJvdW5kZWQtMnhsIGF4LWJvcmRlciBheC1oLWZ1bGwgYXgtZmxleCBheC1mbGV4LWNvbFwiPlxuICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyKSB7XG4gICAgPGhlYWRlclxuICAgICAgY2xhc3M9XCJfX2NoYXJ0LWhlYWRlciBheC1wLTQgbWQ6YXgtcC02IGF4LWJvcmRlci1iIGF4LWZsZXggYXgtZmxleC1jb2wgc206YXgtZmxleC1yb3cgYXgtZ2FwLTIgc206YXgtaXRlbXMtY2VudGVyIHNtOmF4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGgzIGNsYXNzPVwiX19jaGFydC10aXRsZSBheC10ZXh0LWJhc2UgbWQ6YXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkIGF4LXRydW5jYXRlXCI+XG4gICAgICAgIHt7IGNoYXJ0TGF5b3V0KCk/LmhlYWRlcj8udGl0bGUgfX1cbiAgICAgIDwvaDM+XG4gICAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmhlYWRlcj8uc2hvd0RhdGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWRhdGUgYXgtdGV4dC14cyBtZDpheC10ZXh0LXNtIGF4LW9wYWNpdHktNzAgYXgtZm9udC1tZWRpdW0gYXgtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICB7eyAnQGdlbmVyYWw6Y29tbW9uLmRhdGUudG9kYXknIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvaGVhZGVyPlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWJvZHkgYXgtZmxleC0xIGF4LXAtMyBtZDpheC1wLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LXdyYXBwZXIgYXgtaC1mdWxsIGF4LWl0ZW1zLWNlbnRlciBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGxnOmF4LWdhcC02XCIgW2NsYXNzXT1cIlxuICAgICAgICAgICAgbGVnZW5kT3B0aW9ucygpLm1vZGUgPT09ICdob3Jpem9udGFsJ1xuICAgICAgICAgICAgICA/ICdheC1mbGV4LWNvbCBheC1nYXAtNCdcbiAgICAgICAgICAgICAgOiAnYXgtZmxleC1jb2wgbGc6YXgtZmxleC1yb3cgYXgtZ2FwLTQgbGc6YXgtZ2FwLTYnXG4gICAgICAgICAgXCI+XG4gICAgICAgIEBzd2l0Y2ggKGNoYXJ0VHlwZSgpKSB7XG4gICAgICAgIEBjYXNlICgnYmFyJykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJfX2NoYXJ0LWNvbnRlbnQgYXgtZmxleC0xIGF4LWgtZnVsbCBheC1taW4taC1bMjUwcHhdIG1kOmF4LW1pbi1oLVszMDBweF0gYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtdy1mdWxsIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgIDxheC1iYXItY2hhcnQgI2JhckNoYXJ0IFtkYXRhXT1cImJhckNoYXJ0RGF0YSgpXCIgW29wdGlvbnNdPVwiYmFyQ2hhcnRPcHRpb25zKClcIj48L2F4LWJhci1jaGFydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgPGF4LWNoYXJ0LWxlZ2VuZCBbb3B0aW9uc109XCJsZWdlbmRPcHRpb25zKClcIiBbY2hhcnRdPVwiYmFyQ2hhcnRcIj48L2F4LWNoYXJ0LWxlZ2VuZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdkb3VnaG51dCcpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICA8YXgtZG9udXQtY2hhcnQgI2RvbnV0Q2hhcnQgW2RhdGFdPVwiZG9udXRDaGFydERhdGEoKVwiIFtvcHRpb25zXT1cImRvbnV0Q2hhcnRPcHRpb25zKClcIj48L2F4LWRvbnV0LWNoYXJ0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtbGVnZW5kIGF4LXctZml0IGF4LWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJkb251dENoYXJ0XCI+PC9heC1jaGFydC1sZWdlbmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICA8YXgtbGluZS1jaGFydCAjbGluZUNoYXJ0IFtkYXRhXT1cImxpbmVDaGFydERhdGEoKVwiIFtvcHRpb25zXT1cImxpbmVDaGFydE9wdGlvbnMoKVwiPjwvYXgtbGluZS1jaGFydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgPGF4LWNoYXJ0LWxlZ2VuZCBbb3B0aW9uc109XCJsZWdlbmRPcHRpb25zKClcIiBbY2hhcnRdPVwibGluZUNoYXJ0XCI+PC9heC1jaGFydC1sZWdlbmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXIpIHtcbiAgICA8Zm9vdGVyIGNsYXNzPVwiX19jaGFydC1mb290ZXIgYXgtcC00IG1kOmF4LXAtNiBheC1ib3JkZXItdFwiPlxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWwpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWxcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Zvb3Rlcj5cbiAgICB9XG4gIDwvc2VjdGlvbj5cbiAgfSBAZWxzZSB7XG4gIDwhLS0gTm8gQ29uZmlndXJhdGlvbiBTdGF0ZSAtLT5cbiAgPGF4cC1zdGF0ZS1tZXNzYWdlIGljb249XCJmYS1saWdodCBmYS1jaGFydC1saW5lXCJcbiAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy50aXRsZSdcIlxuICAgIFtkZXNjcmlwdGlvbl09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5jaGFydC5lbXB0eS1zdGF0ZXMubm8tY29uZmlnLmRlc2NyaXB0aW9uJ1wiPlxuICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICB9XG48L25nLWNvbnRhaW5lcj4iXX0=","import { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { applySystemActionDefault, getSystemActions } from '@acorex/platform/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXPReportTableViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.commandService = inject(AXPCommandService);\n this.grid = viewChild('grid', ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n this.#fetchData = effect(() => {\n if (this.grid() && this.vm.allowFetchData() && this.vm.shouldExecuteReport()) {\n this.grid()?.refresh();\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n this.layout = computed(() => {\n return this.vm.currentLayout()?.layout;\n }, ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n this.dataSource = new AXDataSource({\n load: async (e) => {\n if (!this.vm.allowFetchData()) {\n return { items: [], total: 0 };\n }\n const result = await this.vm.fetchData(e);\n if (!result?.data || result.data.type !== 'table') {\n console.error('invalid table result');\n return { items: [], total: 0 };\n }\n ;\n let items = result.data.items ?? [];\n let total = result.data.total || 0;\n return { items, total };\n },\n pageSize: 10,\n key: 'id'\n });\n this.columns = computed(() => {\n return this.layout().columns?.map((col) => ({\n field: col.field,\n title: col.title || col.field,\n width: col.width || '150px',\n visible: col.visible !== false,\n align: col.align || 'left',\n widget: { ...col.widget, path: col.field }\n })) || [];\n }, ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.paginationEnabled = computed(() => {\n return this.layout().options?.pagination !== false;\n }, ...(ngDevMode ? [{ debugName: \"paginationEnabled\" }] : []));\n this.primaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'primary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"primaryRowAction\" }] : []));\n this.hasPrimaryRowAction = computed(() => {\n return this.primaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasPrimaryRowAction\" }] : []));\n this.secondaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'secondary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"secondaryRowAction\" }] : []));\n this.hasSecondaryRowAction = computed(() => {\n return this.secondaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasSecondaryRowAction\" }] : []));\n this.defaultRowAction = computed(() => {\n const defaultAction = this.layout().actions?.find(a => a.default);\n if (!defaultAction) {\n return null;\n }\n return this.convertToRowCommandItem(defaultAction);\n }, ...(ngDevMode ? [{ debugName: \"defaultRowAction\" }] : []));\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleRowClick(event) {\n this.handleRowAction(event.name, event.data);\n }\n handleDbRowClick(event) {\n if (this.defaultRowAction()) {\n this.handleRowAction(this.defaultRowAction().name, event.data);\n }\n }\n handleRowAction(name, data) {\n this.commandService.execute(name, data);\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n #fetchData;\n //#endregion\n //#region ---- Helpers ----\n convertToRowCommandItem(action) {\n const systemAction = getSystemActions(action.type);\n if (!systemAction) {\n return {\n icon: action.icon ?? 'fa-light fa-eye',\n text: action.title,\n name: action.command?.name,\n divided: action.break,\n color: action.color,\n };\n }\n const defaultAction = applySystemActionDefault(action, systemAction.key);\n return {\n icon: defaultAction.icon ?? 'fa-light fa-eye',\n text: defaultAction.title,\n name: action.command?.name,\n divided: defaultAction.break,\n color: defaultAction.color,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportTableViewComponent, isStandalone: true, selector: \"axp-report-table-view\", viewQueries: [{ propertyName: \"grid\", first: true, predicate: [\"grid\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'100px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXRowIndexColumnComponent, selector: \"ax-index-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"padZero\"] }, { kind: \"component\", type: i1.AXRowSelectColumnComponent, selector: \"ax-select-column\", inputs: [\"width\", \"caption\", \"fixed\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i1.AXRowDropdownCommandColumnComponent, selector: \"ax-dropdown-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"emptyStateTemplate\", \"emptyStateText\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-table-view', standalone: true, imports: [\n CommonModule,\n AXDataTableModule,\n AXLoadingModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPWidgetCoreModule\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'100px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\" }]\n }], propDecorators: { grid: [{ type: i0.ViewChild, args: ['grid', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtdGFibGUtdmlldy9yZXBvcnQtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC10YWJsZS12aWV3L3JlcG9ydC10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsaUJBQWlCLEVBQXVFLE1BQU0sK0JBQStCLENBQUM7QUFDN0osT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQXVCLHdCQUF3QixFQUFFLGdCQUFn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RSxNQUFNLENBQUMsSUFBSSxJQUFJLGlCQUFpQjtnQkFDdEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJO2dCQUMxQixPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzthQUNBLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsR0FBMEIsQ0FBQyxDQUFDO1FBQ2hHLE9BQU87WUFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxpQkFBaUI7WUFDN0MsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUk7WUFDMUIsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQzVCLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztTQUNQLENBQUM7SUFDeEIsQ0FBQzsrR0F6SVUsMkJBQTJCO21HQUEzQiwyQkFBMkIsK0xDNUJ4QyxnckNBc0NBLDJDRHJCSSxZQUFZLDhCQUNaLGlCQUFpQixndENBQ2pCLGVBQWUsOEJBQ2YsaUJBQWlCLDhCQUNqQixtQkFBbUIsOEJBQ25CLG1CQUFtQjs7NEZBTVYsMkJBQTJCO2tCQWZ2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7a0VBVW1CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFUYWJsZUNvbXBvbmVudCwgQVhEYXRhVGFibGVNb2R1bGUsIEFYRGF0YVRhYmxlUm93RGJDbGljaywgQVhSb3dDb21tYW5kSXRlbSwgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQV2lkZ2V0Q29sdW1uTm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcbmltcG9ydCB7IEFYUFJlcG9ydENvbHVtbiwgQVhQUmVwb3J0VGFibGVMYXlvdXQsIEFYUFJlcG9ydFRhYmxlTGF5b3V0Um93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYUFN5c3RlbUFjdGlvblR5cGUsIGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdCwgZ2V0U3lzdGVtQWN0aW9ucyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtdGFibGUtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQV2lkZ2V0Q29yZU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0VGFibGVWaWV3Q29tcG9uZW50IHtcblxuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFNlcnZpY2UgPSBpbmplY3QoQVhQQ29tbWFuZFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JpZCA9IHZpZXdDaGlsZDxBWERhdGFUYWJsZUNvbXBvbmVudD4oJ2dyaWQnKTtcblxuICAvLyNlbmRyZWdpb25cblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUm93QWN0aW9uKGV2ZW50Lm5hbWUsIGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURiUm93Q2xpY2soZXZlbnQ6IEFYRGF0YVRhYmxlUm93RGJDbGljayk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlZmF1bHRSb3dBY3Rpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVSb3dBY3Rpb24odGhpcy5kZWZhdWx0Um93QWN0aW9uKCkhLm5hbWUsIGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dBY3Rpb24obmFtZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4ZWN1dGUobmFtZSwgZGF0YSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBoYW5kbGUgZGF0YSBmZXRjaGluZyB3aGVuIHJlcG9ydCBpcyBleGVjdXRlZFxuICAgKi9cbiAgI2ZldGNoRGF0YSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ3JpZCgpICYmIHRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSAmJiB0aGlzLnZtLnNob3VsZEV4ZWN1dGVSZXBvcnQoKSkge1xuICAgICAgdGhpcy5ncmlkKCk/LnJlZnJlc2goKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICh0aGlzLnZtLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0IGFzIEFYUFJlcG9ydFRhYmxlTGF5b3V0KSE7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgbG9hZDogYXN5bmMgKGU6IEFYRGF0YVNvdXJjZVF1ZXJ5KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSkge1xuICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52bS5mZXRjaERhdGEoZSlcbiAgICAgIGlmICghcmVzdWx0Py5kYXRhIHx8IHJlc3VsdC5kYXRhLnR5cGUgIT09ICd0YWJsZScpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCB0YWJsZSByZXN1bHQnKTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IFtdLCB0b3RhbDogMCB9XG4gICAgICB9O1xuXG4gICAgICBsZXQgaXRlbXM6IGFueVtdID0gcmVzdWx0LmRhdGEuaXRlbXMgYXMgYW55W10gPz8gW107XG4gICAgICBsZXQgdG90YWwgPSByZXN1bHQuZGF0YS50b3RhbCB8fCAwO1xuXG4gICAgICByZXR1cm4geyBpdGVtcywgdG90YWwgfTtcbiAgICB9LFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBrZXk6ICdpZCdcbiAgfSk7XG5cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQoKS5jb2x1bW5zPy5tYXAoKGNvbDogQVhQUmVwb3J0Q29sdW1uKSA9PiAoe1xuICAgICAgZmllbGQ6IGNvbC5maWVsZCxcbiAgICAgIHRpdGxlOiBjb2wudGl0bGUgfHwgY29sLmZpZWxkLFxuICAgICAgd2lkdGg6IGNvbC53aWR0aCB8fCAnMTUwcHgnLFxuICAgICAgdmlzaWJsZTogY29sLnZpc2libGUgIT09IGZhbHNlLFxuICAgICAgYWxpZ246IGNvbC5hbGlnbiB8fCAnbGVmdCcsXG4gICAgICB3aWRnZXQ6IHsgLi4uY29sLndpZGdldCwgcGF0aDogY29sLmZpZWxkIH0gYXMgQVhQV2lkZ2V0Q29sdW1uTm9kZVxuICAgIH0pKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2luYXRpb25FbmFibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmxheW91dCgpLm9wdGlvbnM/LnBhZ2luYXRpb24gIT09IGZhbHNlO1xuICB9KTtcblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3ByaW1hcnknKT8ubWFwKGEgPT4gdGhpcy5jb252ZXJ0VG9Sb3dDb21tYW5kSXRlbShhKSkgfHwgW107XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNQcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByaW1hcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Vjb25kYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3NlY29uZGFyeScpPy5tYXAoYSA9PiB0aGlzLmNvbnZlcnRUb1Jvd0NvbW1hbmRJdGVtKGEpKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1NlY29uZGFyeVJvd0FjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFJvd0FjdGlvbiA9IGNvbXB1dGVkPEFYUm93Q29tbWFuZEl0ZW0gfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmluZChhID0+IGEuZGVmYXVsdCk7XG4gICAgaWYgKCFkZWZhdWx0QWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvUm93Q29tbWFuZEl0ZW0oZGVmYXVsdEFjdGlvbik7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgY29udmVydFRvUm93Q29tbWFuZEl0ZW0oYWN0aW9uOiBBWFBSZXBvcnRUYWJsZUxheW91dFJvd0FjdGlvbik6IEFYUm93Q29tbWFuZEl0ZW0ge1xuICAgIGNvbnN0IHN5c3RlbUFjdGlvbiA9IGdldFN5c3RlbUFjdGlvbnMoYWN0aW9uLnR5cGUgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZSk7XG4gICAgaWYgKCFzeXN0ZW1BY3Rpb24pIHtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogYWN0aW9uLmljb24gPz8gJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIHRleHQ6IGFjdGlvbi50aXRsZSxcbiAgICAgICAgbmFtZTogYWN0aW9uLmNvbW1hbmQ/Lm5hbWUsXG4gICAgICAgIGRpdmlkZWQ6IGFjdGlvbi5icmVhayxcbiAgICAgICAgY29sb3I6IGFjdGlvbi5jb2xvcixcbiAgICAgIH0gYXMgQVhSb3dDb21tYW5kSXRlbTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdChhY3Rpb24sIHN5c3RlbUFjdGlvbi5rZXkgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb246IGRlZmF1bHRBY3Rpb24uaWNvbiA/PyAnZmEtbGlnaHQgZmEtZXllJyxcbiAgICAgIHRleHQ6IGRlZmF1bHRBY3Rpb24udGl0bGUsXG4gICAgICBuYW1lOiBhY3Rpb24uY29tbWFuZD8ubmFtZSxcbiAgICAgIGRpdmlkZWQ6IGRlZmF1bHRBY3Rpb24uYnJlYWssXG4gICAgICBjb2xvcjogZGVmYXVsdEFjdGlvbi5jb2xvcixcbiAgICB9IGFzIEFYUm93Q29tbWFuZEl0ZW07XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxufSAiLCI8YXgtZGF0YS10YWJsZVxuICAjZ3JpZFxuICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgW3BhZ2luZ109XCJ0cnVlXCJcbiAgKG9uUm93RGJDbGljayk9XCJoYW5kbGVEYlJvd0NsaWNrKCRldmVudClcIlxuICBjbGFzcz1cImF4LWZsZXgtMVwiXG4+XG4gIDwhLS0gRHluYW1pYyBjb2x1bW5zIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gLS0+XG4gIDxheC1pbmRleC1jb2x1bW4gZml4ZWQ9XCJzdGFydFwiIFt3aWR0aF09XCInODBweCdcIiBbcGFkWmVyb109XCJ0cnVlXCI+PC9heC1pbmRleC1jb2x1bW4+XG4gIEBpZiAodm0uY2FuU2VsZWN0Um93cygpKSB7XG4gICAgPGF4LXNlbGVjdC1jb2x1bW4gZml4ZWQ9XCJzdGFydFwiIFt3aWR0aF09XCInNTBweCdcIj48L2F4LXNlbGVjdC1jb2x1bW4+XG4gIH1cbiAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMoKTsgdHJhY2sgY29sdW1uLmZpZWxkKSB7XG4gICAgQGlmIChjb2x1bW4udmlzaWJsZSkge1xuICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyXG4gICAgICAgIFtjdXN0b21XaWR0aF09XCJjb2x1bW4ud2lkdGggKyAncHgnXCJcbiAgICAgICAgW2NhcHRpb25dPVwiKGNvbHVtbi50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICBbbm9kZV09XCJjb2x1bW4ud2lkZ2V0IVwiXG4gICAgICA+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICB9XG4gIH1cbiAgQGlmIChoYXNQcmltYXJ5Um93QWN0aW9uKCkpIHtcbiAgICA8YXgtY29tbWFuZC1jb2x1bW5cbiAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgIFt3aWR0aF09XCInMTAwcHgnXCJcbiAgICAgIFtpdGVtc109XCJwcmltYXJ5Um93QWN0aW9uKClcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICAgID48L2F4LWNvbW1hbmQtY29sdW1uPlxuICB9XG4gIEBpZiAoaGFzU2Vjb25kYXJ5Um93QWN0aW9uKCkpIHtcbiAgICA8YXgtZHJvcGRvd24tY29tbWFuZC1jb2x1bW5cbiAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgICAgW2l0ZW1zXT1cInNlY29uZGFyeVJvd0FjdGlvbigpXCJcbiAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQpXCJcbiAgICA+PC9heC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbj5cbiAgfVxuPC9heC1kYXRhLXRhYmxlPlxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, AXPStateMessageComponent, } from '@acorex/platform/layout/components';\nimport { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, untracked, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXPReportViewerViewModel } from '../report-viewer.viewmodel';\nimport { AXPReportChartViewComponent } from '../views/report-chart-view/report-chart-view.component';\nimport { AXPReportTableViewComponent } from '../views/report-table-view/report-table-view.component';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXLoadingDialogModule, AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/dropdown\";\nexport class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super();\n //#region ---- Dependencies ----\n this.layoutService = inject(AXPLayoutThemeService);\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.unsubscriber = inject(AXUnsubscriber);\n this.loadingDialog = inject(AXLoadingDialogService);\n this.destroyRef = inject(DestroyRef);\n //#endregion\n //#region ---- Inputs ----\n this.reportId = input(...(ngDevMode ? [undefined, { debugName: \"reportId\" }] : []));\n this.reportParameters = input({}, ...(ngDevMode ? [{ debugName: \"reportParameters\" }] : []));\n //#endregion\n //#region ---- ViewChildren ----\n this.filtersForm = viewChild('filtersForm', ...(ngDevMode ? [{ debugName: \"filtersForm\" }] : []));\n //#endregion\n //#region ---- ViewModel ----\n this.vm = inject(AXPReportViewerViewModel);\n //#endregion\n //#region ---- Effects ----\n this.watchNavigationLoading = effect(() => {\n const isBusy = this.vm.isLoading() || this.vm.isExecuting();\n untracked(() => {\n this.layoutService.setNavigationLoading(isBusy);\n //\n if (isBusy) {\n void this.openContentLoading();\n }\n else {\n this.closeContentLoading();\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"watchNavigationLoading\" }] : []));\n //#endregion\n this.loadingDialogRef = null;\n this.isDialogOpening = false;\n //#region ---- Computed Properties ----\n this.showFiltersPanel = () => this.layoutService.isLarge();\n this.showReportDisplay = () => this.layoutService.isLarge() || (this.layoutService.isSmall() && this.vm.hasBeenExecuted());\n this.baseRoutes = [this.sessionService.application?.name, 'report-management'];\n //#endregion\n //#region ---- Layout Configurations ----\n this.defaultLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 6 },\n lg: { colSpan: 12 },\n },\n });\n this.compactLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 4 },\n lg: { colSpan: 3 },\n },\n });\n this.destroyRef.onDestroy(() => this.closeContentLoading());\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Subscribe to route parameter changes for dynamic report loading\n this.unsubscriber.takeUntilDestroy(this.route.paramMap).subscribe(async (params) => {\n const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();\n if (reportId) {\n await this.loadReportAndRefresh(reportId);\n }\n });\n }\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n //#endregion\n //#region ---- Helper Methods ----\n async loadReportAndRefresh(reportId) {\n await this.vm.loadReport(reportId);\n // Force refresh of page layout (breadcrumbs, title, etc.) after report loads\n this.recompute();\n // Handle initial parameters from query string\n const queryParams = this.route.snapshot.queryParams;\n const initialParams = { ...queryParams };\n delete initialParams['reportId']; // Remove reportId from parameters\n // Merge with component input parameters\n const allParams = { ...initialParams, ...this.reportParameters() };\n if (Object.keys(allParams).length > 0) {\n console.log('Applying initial parameters:', allParams);\n this.vm.updateFilterContext(allParams);\n // Auto-execute if parameters are provided\n setTimeout(async () => {\n await this.vm.executeReport();\n }, 500); // Small delay to ensure form is ready\n }\n }\n async openContentLoading() {\n if (this.loadingDialogRef || this.isDialogOpening) {\n return;\n }\n this.isDialogOpening = true;\n try {\n const [title, description, cancelText] = await Promise.all([\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-title'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-description'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.cancel-button'),\n ]);\n this.loadingDialogRef = this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text: description,\n buttons: [\n {\n text: cancelText,\n color: 'danger',\n onClick: () => {\n this.closeContentLoading();\n this.vm.cancel();\n },\n },\n ],\n });\n }\n finally {\n this.isDialogOpening = false;\n }\n }\n closeContentLoading() {\n if (!this.loadingDialogRef) {\n return;\n }\n this.loadingDialogRef.close();\n this.loadingDialogRef = null;\n }\n /**\n * Synchronizes filter context to URL query parameters\n * @param filterContext The current filter context to sync\n */\n syncFiltersToUrl(filterContext) {\n // Clean the filter context - remove null, undefined, and empty string values\n const cleanedParams = {};\n Object.keys(filterContext).forEach(key => {\n const value = filterContext[key];\n if (value !== null && value !== undefined && value !== '') {\n cleanedParams[key] = value;\n }\n });\n // Update URL without navigation (preserve reportId if exists)\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n const queryParams = {\n ...cleanedParams,\n ...(reportId ? { reportId } : {})\n };\n // Update URL without reloading\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n replaceUrl: true // Don't add to browser history\n });\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleFiltersChange(event) {\n this.vm.updateFilterContext(event);\n this.syncFiltersToUrl(event);\n }\n handleFiltersInitiated(event) {\n this.vm.updateFilterContext(event);\n }\n async handleExecuteReport() {\n const isValid = await this.filtersForm()?.validate();\n if (!isValid?.result) {\n return;\n }\n await this.vm.executeReport();\n }\n handleRefresh() {\n this.vm.refresh();\n }\n handleClearFilters() {\n this.vm.clearFilters();\n // Reset form if available\n const form = this.filtersForm();\n if (form) {\n form.reset();\n }\n // Clear URL query parameters (preserve reportId if exists)\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: reportId ? { reportId } : {},\n replaceUrl: true\n });\n }\n //#endregion\n //#region ---- Page Configuration Overrides ----\n async getPageBreadcrumbs() {\n const breadcrumbs = [\n {\n name: 'reports',\n title: await this.translateService.translateAsync('@report-management:module.menus.root.title'),\n command: {\n name: 'navigate-to-reports',\n },\n },\n ];\n // Add categories path\n const categoriesPath = this.vm.categoriesPath();\n if (categoriesPath && categoriesPath.length > 0) {\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const category of categoriesPath) {\n urlParts.push(category.id);\n breadcrumbs.push({\n name: category.id,\n title: category.title,\n command: {\n name: 'navigate-to-category',\n options: {\n path: [...urlParts],\n },\n },\n });\n }\n }\n // Add report title as final breadcrumb\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n breadcrumbs.push({\n name: 'report-viewer',\n title: reportDefinition.title,\n });\n }\n return breadcrumbs;\n }\n async getPageTitle() {\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n return reportDefinition.title;\n }\n return await this.translateService.translateAsync('@report-management:report-viewer.components.report-viewer.title');\n }\n async getPageDescription() {\n const reportDefinition = this.vm.reportDefinition();\n return reportDefinition?.description || null;\n }\n async getBackButton() {\n // On mobile, if report has been executed (showing report), show \"Filters\" as back button\n if (this.layoutService.isSmall() && this.vm.hasBeenExecuted()) {\n return {\n title: await this.translateService.translateAsync('@general:terms.interface.filter.title'),\n };\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length === 0) {\n // If no categories path, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n if (categoriesPath.length === 1) {\n // If only one category, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n // Go back to parent category\n const parentCategory = categoriesPath[categoriesPath.length - 1];\n return {\n title: parentCategory.title,\n };\n }\n async onBackButtonClick() {\n // On mobile, if report has been executed (showing report), go back to filters\n if (this.layoutService.isSmall() && this.vm.hasBeenExecuted()) {\n this.vm.clearExecutionState();\n return;\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length <= 1) {\n // Navigate back to reports root\n await this.router.navigate([...this.baseRoutes, 'reports']);\n }\n else {\n // Navigate to parent category\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const cat of categoriesPath) {\n urlParts.push(cat.id);\n }\n await this.router.navigate(urlParts);\n }\n }\n async execute(command) {\n switch (command.name) {\n case 'execute-report':\n await this.handleExecuteReport();\n break;\n case 'refresh-report':\n this.handleRefresh();\n break;\n case 'reset-filters':\n this.handleClearFilters();\n break;\n case 'navigate-to-reports':\n await this.router.navigate([...this.baseRoutes, 'reports']);\n break;\n case 'navigate-to-category':\n const path = command.options?.['path'];\n if (path) {\n await this.router.navigate(path);\n }\n break;\n default:\n console.warn(`Unknown command: ${command.name}`);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportViewerPageComponent, isStandalone: true, selector: \"axp-report-viewer-page\", inputs: { reportId: { classPropertyName: \"reportId\", publicName: \"reportId\", isSignal: true, isRequired: false, transformFunction: null }, reportParameters: { classPropertyName: \"reportParameters\", publicName: \"reportParameters\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"axp-report-viewer-page\" }, providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], viewQueries: [{ propertyName: \"filtersForm\", first: true, predicate: [\"filtersForm\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\" (contextInitiated)=\\\"handleFiltersInitiated($event)\\\">\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button class=\\\"ax-w-full\\\" [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\" [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item [text]=\\\"layout.title\\\" [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\">\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message icon=\\\"fa-light fa-exclamation-triangle\\\" look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\">\\n <div slot=\\\"actions\\\">\\n <ax-button look=\\\"outline\\\" color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\" (onClick)=\\\"vm.clearError()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\">\\n <div slot=\\\"actions\\\">\\n <ax-button look=\\\"outline\\\" color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (layoutService.isSmall() && !vm.hasBeenExecuted()) {\\n<axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button class=\\\"ax-w-full\\\" [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\" [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n</axp-page-footer>\\n}\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i2.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i2.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i5.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXLoadingDialogModule }, { kind: \"component\", type: \n //\n AXPLayoutRendererComponent, selector: \"axp-layout-renderer\", inputs: [\"layout\", \"context\", \"look\", \"mode\"], outputs: [\"contextChange\", \"contextInitiated\", \"validityChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPReportTableViewComponent, selector: \"axp-report-table-view\" }, { kind: \"component\", type: AXPThemeLayoutFooterComponent, selector: \"axp-layout-footer, axp-layout-page-footer\" }, { kind: \"component\", type: AXPReportChartViewComponent, selector: \"axp-report-chart-view\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-viewer-page', standalone: true, imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXBadgeModule,\n AXLoadingDialogModule,\n //\n AXPLayoutRendererComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXPReportTableViewComponent,\n AXPThemeLayoutFooterComponent,\n AXPReportChartViewComponent,\n AXPStateMessageComponent,\n ], providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\" (contextInitiated)=\\\"handleFiltersInitiated($event)\\\">\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button class=\\\"ax-w-full\\\" [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\" [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item [text]=\\\"layout.title\\\" [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\">\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message icon=\\\"fa-light fa-exclamation-triangle\\\" look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\">\\n <div slot=\\\"actions\\\">\\n <ax-button look=\\\"outline\\\" color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\" (onClick)=\\\"vm.clearError()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\">\\n <div slot=\\\"actions\\\">\\n <ax-button look=\\\"outline\\\" color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (layoutService.isSmall() && !vm.hasBeenExecuted()) {\\n<axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button class=\\\"ax-w-full\\\" [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\" [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n</axp-page-footer>\\n}\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { reportId: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportId\", required: false }] }], reportParameters: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportParameters\", required: false }] }], filtersForm: [{ type: i0.ViewChild, args: ['filtersForm', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFTcEQsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLGdDQUFnQyxFQUNoQyx3QkFBd0IsR0FDekIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwr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U0FDRiw2S0M1RUgseWtLQXVIQyw2ekNEdEVHLFlBQVkscU1BQ1osY0FBYywyd0JBQ2QsaUJBQWlCLHNWQUNqQixlQUFlLDhCQUNmLG1CQUFtQiw4R0FDbkIsc0JBQXNCLDhCQUN0QixnQkFBZ0IscVFBQ2hCLGFBQWEsOEJBQ2IscUJBQXFCO2dCQUNyQixFQUFFO2dCQUNGLDBCQUEwQixpTEFDMUIsc0JBQXNCLDREQUN0QixnQ0FBZ0MsOEZBQ2hDLDZCQUE2Qiw4REFDN0IsNEJBQTRCLGdpQkFDNUIsMkJBQTJCLGtFQUMzQiw2QkFBNkIsc0ZBQzdCLDJCQUEyQixrRUFDM0Isd0JBQXdCOzs0RkFnQmYsNEJBQTRCO2tCQXRDeEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLEVBQUU7d0JBQ0YsMEJBQTBCO3dCQUMxQixzQkFBc0I7d0JBQ3RCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7d0JBQzVCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3QiwyQkFBMkI7d0JBQzNCLHdCQUF3QjtxQkFDekIsYUFDVTt3QkFDVCxjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyw4QkFBOEI7eUJBQzFDO3FCQUNGLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO21UQXVCbUIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xuaW1wb3J0IHsgQVhGb3JtQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBWFBBY3Rpb25NZW51SXRlbSxcbiAgQVhQQmFja0J1dHRvbixcbiAgQVhQQnJlYWRjcnVtYkl0ZW0sXG4gIEFYUENvbnRleHREYXRhLFxuICBBWFBFeGVjdXRlQ29tbWFuZCxcbiAgQVhQR3JpZExheW91dE9wdGlvbnMsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQge1xuICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dEZvb3RlckNvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50LFxuICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUFBhZ2VMYXlvdXRCYXNlLCBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCwgQVhQUGFnZUxheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3ZpZXdzJztcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL3NoYXJlZCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBBWFBSZXBvcnRDaGFydFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi92aWV3cy9yZXBvcnQtY2hhcnQtdmlldy9yZXBvcnQtY2hhcnQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQUmVwb3J0VGFibGVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vdmlld3MvcmVwb3J0LXRhYmxlLXZpZXcvcmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhMb2FkaW5nRGlhbG9nTW9kdWxlLCBBWExvYWRpbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmctZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXJlcG9ydC12aWV3ZXItcGFnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgQVhMb2FkaW5nRGlhbG9nTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnQsXG4gICAgQVhQUGFnZUxheW91dENvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dFN0YXJ0U2lkZUNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEhlYWRlckNvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFJlcG9ydFRhYmxlVmlld0NvbXBvbmVudCxcbiAgICBBWFBUaGVtZUxheW91dEZvb3RlckNvbXBvbmVudCxcbiAgICBBWFBSZXBvcnRDaGFydFZpZXdDb21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhQUmVwb3J0Vmlld2VyUGFnZUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LXZpZXdlci1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LXZpZXdlci1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYXhwLXJlcG9ydC12aWV3ZXItcGFnZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0Vmlld2VyUGFnZUNvbXBvbmVudCBleHRlbmRzIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGxheW91dFNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nRGlhbG9nID0gaW5qZWN0KEFYTG9hZGluZ0RpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBJbnB1dHMgICAtLS0tXG5cbiAgcmVwb3J0SWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlcG9ydFBhcmFtZXRlcnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBWaWV3Q2hpbGRyZW4gICAtLS0tXG5cbiAgcHJpdmF0ZSBmaWx0ZXJzRm9ybSA9IHZpZXdDaGlsZDxBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudD4oJ2ZpbHRlcnNGb3JtJyk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBWaWV3TW9kZWwgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgd2F0Y2hOYXZpZ2F0aW9uTG9hZGluZyA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNCdXN5ID0gdGhpcy52bS5pc0xvYWRpbmcoKSB8fCB0aGlzLnZtLmlzRXhlY3V0aW5nKCk7XG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMubGF5b3V0U2VydmljZS5zZXROYXZpZ2F0aW9uTG9hZGluZyhpc0J1c3kpXG4gICAgICAvL1xuICAgICAgaWYgKGlzQnVzeSkge1xuICAgICAgICB2b2lkIHRoaXMub3BlbkNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNsb3NlQ29udGVudExvYWRpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cblxuICAvLyNlbmRyZWdpb25cblxuICBwcml2YXRlIGxvYWRpbmdEaWFsb2dSZWY6IHsgY2xvc2U6ICgpID0+IHZvaWQgfSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGlzRGlhbG9nT3BlbmluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmNsb3NlQ29udGVudExvYWRpbmcoKSk7XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHNob3dGaWx0ZXJzUGFuZWwgPSAoKSA9PiB0aGlzLmxheW91dFNlcnZpY2UuaXNMYXJnZSgpO1xuXG4gIHByb3RlY3RlZCBzaG93UmVwb3J0RGlzcGxheSA9ICgpID0+IHRoaXMubGF5b3V0U2VydmljZS5pc0xhcmdlKCkgfHwgKHRoaXMubGF5b3V0U2VydmljZS5pc1NtYWxsKCkgJiYgdGhpcy52bS5oYXNCZWVuRXhlY3V0ZWQoKSk7XG5cbiAgcHJpdmF0ZSBiYXNlUm91dGVzID0gW3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWUsICdyZXBvcnQtbWFuYWdlbWVudCddO1xuXG5cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBDb25maWd1cmF0aW9ucyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgZGVmYXVsdExheW91dCA9ICgpOiBBWFBHcmlkTGF5b3V0T3B0aW9ucyA9PiAoe1xuICAgIHBvc2l0aW9uczoge1xuICAgICAgc206IHsgY29sU3BhbjogMTIgfSxcbiAgICAgIG1kOiB7IGNvbFNwYW46IDYgfSxcbiAgICAgIGxnOiB7IGNvbFNwYW46IDEyIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGNvbXBhY3RMYXlvdXQgPSAoKTogQVhQR3JpZExheW91dE9wdGlvbnMgPT4gKHtcbiAgICBwb3NpdGlvbnM6IHtcbiAgICAgIHNtOiB7IGNvbFNwYW46IDEyIH0sXG4gICAgICBtZDogeyBjb2xTcGFuOiA0IH0sXG4gICAgICBsZzogeyBjb2xTcGFuOiAzIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcyBmb3IgZHluYW1pYyByZXBvcnQgbG9hZGluZ1xuICAgIHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kodGhpcy5yb3V0ZS5wYXJhbU1hcCkuc3Vic2NyaWJlKGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHJlcG9ydElkID0gcGFyYW1zLmdldCgncmVwb3J0SWQnKSB8fCB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdyZXBvcnRJZCcpIHx8IHRoaXMucmVwb3J0SWQoKTtcblxuICAgICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZFJlcG9ydEFuZFJlZnJlc2gocmVwb3J0SWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBoYW5kbGUgZGF0YSBmZXRjaGluZyB3aGVuIGNoYXJ0IGNvbmZpZ3VyYXRpb24gY2hhbmdlc1xuICAgKi9cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlcG9ydEFuZFJlZnJlc2gocmVwb3J0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudm0ubG9hZFJlcG9ydChyZXBvcnRJZCk7XG5cbiAgICAvLyBGb3JjZSByZWZyZXNoIG9mIHBhZ2UgbGF5b3V0IChicmVhZGNydW1icywgdGl0bGUsIGV0Yy4pIGFmdGVyIHJlcG9ydCBsb2Fkc1xuICAgIHRoaXMucmVjb21wdXRlKCk7XG5cbiAgICAvLyBIYW5kbGUgaW5pdGlhbCBwYXJhbWV0ZXJzIGZyb20gcXVlcnkgc3RyaW5nXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xuICAgIGNvbnN0IGluaXRpYWxQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zIH07XG4gICAgZGVsZXRlIGluaXRpYWxQYXJhbXNbJ3JlcG9ydElkJ107IC8vIFJlbW92ZSByZXBvcnRJZCBmcm9tIHBhcmFtZXRlcnNcblxuICAgIC8vIE1lcmdlIHdpdGggY29tcG9uZW50IGlucHV0IHBhcmFtZXRlcnNcbiAgICBjb25zdCBhbGxQYXJhbXMgPSB7IC4uLmluaXRpYWxQYXJhbXMsIC4uLnRoaXMucmVwb3J0UGFyYW1ldGVycygpIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoYWxsUGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnQXBwbHlpbmcgaW5pdGlhbCBwYXJhbWV0ZXJzOicsIGFsbFBhcmFtcyk7XG4gICAgICB0aGlzLnZtLnVwZGF0ZUZpbHRlckNvbnRleHQoYWxsUGFyYW1zKTtcbiAgICAgIC8vIEF1dG8tZXhlY3V0ZSBpZiBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZFxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMudm0uZXhlY3V0ZVJlcG9ydCgpO1xuICAgICAgfSwgNTAwKTsgLy8gU21hbGwgZGVsYXkgdG8gZW5zdXJlIGZvcm0gaXMgcmVhZHlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9wZW5Db250ZW50TG9hZGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nRGlhbG9nUmVmIHx8IHRoaXMuaXNEaWFsb2dPcGVuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0RpYWxvZ09wZW5pbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFt0aXRsZSwgZGVzY3JpcHRpb24sIGNhbmNlbFRleHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmxvYWRpbmcuaW4tcHJvZ3Jlc3MtdGl0bGUnLFxuICAgICAgICApLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmxvYWRpbmcuaW4tcHJvZ3Jlc3MtZGVzY3JpcHRpb24nLFxuICAgICAgICApLFxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMubG9hZGluZy5jYW5jZWwtYnV0dG9uJyksXG4gICAgICBdKTtcblxuICAgICAgdGhpcy5sb2FkaW5nRGlhbG9nUmVmID0gdGhpcy5sb2FkaW5nRGlhbG9nLnNob3coe1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgbW9kZTogJ2luZGV0ZXJtaW5hdGUnLFxuICAgICAgICBwcm9ncmVzc0NvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIHRleHQ6IGRlc2NyaXB0aW9uLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogY2FuY2VsVGV4dCxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZUNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgIHRoaXMudm0uY2FuY2VsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0RpYWxvZ09wZW5pbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQ29udGVudExvYWRpbmcoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvYWRpbmdEaWFsb2dSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB0aGlzLmxvYWRpbmdEaWFsb2dSZWYgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXplcyBmaWx0ZXIgY29udGV4dCB0byBVUkwgcXVlcnkgcGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gZmlsdGVyQ29udGV4dCBUaGUgY3VycmVudCBmaWx0ZXIgY29udGV4dCB0byBzeW5jXG4gICAqL1xuICBwcml2YXRlIHN5bmNGaWx0ZXJzVG9VcmwoZmlsdGVyQ29udGV4dDogQVhQQ29udGV4dERhdGEpOiB2b2lkIHtcbiAgICAvLyBDbGVhbiB0aGUgZmlsdGVyIGNvbnRleHQgLSByZW1vdmUgbnVsbCwgdW5kZWZpbmVkLCBhbmQgZW1wdHkgc3RyaW5nIHZhbHVlc1xuICAgIGNvbnN0IGNsZWFuZWRQYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKGZpbHRlckNvbnRleHQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyQ29udGV4dFtrZXldO1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGNsZWFuZWRQYXJhbXNba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIFVSTCB3aXRob3V0IG5hdmlnYXRpb24gKHByZXNlcnZlIHJlcG9ydElkIGlmIGV4aXN0cylcbiAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICBjb25zdCByZXBvcnRJZCA9IGN1cnJlbnRQYXJhbXNbJ3JlcG9ydElkJ107XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcbiAgICAgIC4uLmNsZWFuZWRQYXJhbXMsXG4gICAgICAuLi4ocmVwb3J0SWQgPyB7IHJlcG9ydElkIH0gOiB7fSlcbiAgICB9O1xuXG4gICAgLy8gVXBkYXRlIFVSTCB3aXRob3V0IHJlbG9hZGluZ1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUgLy8gRG9uJ3QgYWRkIHRvIGJyb3dzZXIgaGlzdG9yeVxuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFdmVudCBIYW5kbGVycyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRmlsdGVyc0NoYW5nZShldmVudDogQVhQQ29udGV4dERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnZtLnVwZGF0ZUZpbHRlckNvbnRleHQoZXZlbnQpO1xuICAgIHRoaXMuc3luY0ZpbHRlcnNUb1VybChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRmlsdGVyc0luaXRpYXRlZChldmVudDogQVhQQ29udGV4dERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnZtLnVwZGF0ZUZpbHRlckNvbnRleHQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4ZWN1dGVSZXBvcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IHRoaXMuZmlsdGVyc0Zvcm0oKT8udmFsaWRhdGUoKTtcbiAgICBpZiAoIWlzVmFsaWQ/LnJlc3VsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnZtLmV4ZWN1dGVSZXBvcnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMudm0ucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsZWFyRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLnZtLmNsZWFyRmlsdGVycygpO1xuXG4gICAgLy8gUmVzZXQgZm9ybSBpZiBhdmFpbGFibGVcbiAgICBjb25zdCBmb3JtID0gdGhpcy5maWx0ZXJzRm9ybSgpO1xuICAgIGlmIChmb3JtKSB7XG4gICAgICBmb3JtLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgVVJMIHF1ZXJ5IHBhcmFtZXRlcnMgKHByZXNlcnZlIHJlcG9ydElkIGlmIGV4aXN0cylcbiAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICBjb25zdCByZXBvcnRJZCA9IGN1cnJlbnRQYXJhbXNbJ3JlcG9ydElkJ107XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiByZXBvcnRJZCA/IHsgcmVwb3J0SWQgfSA6IHt9LFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQYWdlIENvbmZpZ3VyYXRpb24gT3ZlcnJpZGVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBnZXRQYWdlQnJlYWRjcnVtYnMoKTogUHJvbWlzZTxBWFBCcmVhZGNydW1iSXRlbVtdPiB7XG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IEFYUEJyZWFkY3J1bWJJdGVtW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZXBvcnRzJyxcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50Om1vZHVsZS5tZW51cy5yb290LnRpdGxlJyksXG4gICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICBuYW1lOiAnbmF2aWdhdGUtdG8tcmVwb3J0cycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICAvLyBBZGQgY2F0ZWdvcmllcyBwYXRoXG4gICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSB0aGlzLnZtLmNhdGVnb3JpZXNQYXRoKCk7XG4gICAgaWYgKGNhdGVnb3JpZXNQYXRoICYmIGNhdGVnb3JpZXNQYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCB1cmxQYXJ0cyA9IFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ107XG4gICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNQYXRoKSB7XG4gICAgICAgIHVybFBhcnRzLnB1c2goY2F0ZWdvcnkuaWQpO1xuICAgICAgICBicmVhZGNydW1icy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5pZCxcbiAgICAgICAgICB0aXRsZTogY2F0ZWdvcnkudGl0bGUsXG4gICAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgICAgbmFtZTogJ25hdmlnYXRlLXRvLWNhdGVnb3J5JyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGF0aDogWy4uLnVybFBhcnRzXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlcG9ydCB0aXRsZSBhcyBmaW5hbCBicmVhZGNydW1iXG4gICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IHRoaXMudm0ucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgIGlmIChyZXBvcnREZWZpbml0aW9uKSB7XG4gICAgICBicmVhZGNydW1icy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3JlcG9ydC12aWV3ZXInLFxuICAgICAgICB0aXRsZTogcmVwb3J0RGVmaW5pdGlvbi50aXRsZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBicmVhZGNydW1icztcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlcG9ydERlZmluaXRpb24gPSB0aGlzLnZtLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICBpZiAocmVwb3J0RGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuIHJlcG9ydERlZmluaXRpb24udGl0bGU7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMucmVwb3J0LXZpZXdlci50aXRsZScpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZURlc2NyaXB0aW9uKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJlcG9ydERlZmluaXRpb24gPSB0aGlzLnZtLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICByZXR1cm4gcmVwb3J0RGVmaW5pdGlvbj8uZGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldEJhY2tCdXR0b24oKTogUHJvbWlzZTxBWFBCYWNrQnV0dG9uIHwgbnVsbD4ge1xuICAgIC8vIE9uIG1vYmlsZSwgaWYgcmVwb3J0IGhhcyBiZWVuIGV4ZWN1dGVkIChzaG93aW5nIHJlcG9ydCksIHNob3cgXCJGaWx0ZXJzXCIgYXMgYmFjayBidXR0b25cbiAgICBpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLmlzU21hbGwoKSAmJiB0aGlzLnZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAZ2VuZXJhbDp0ZXJtcy5pbnRlcmZhY2UuZmlsdGVyLnRpdGxlJyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhdGVnb3JpZXNQYXRoID0gdGhpcy52bS5jYXRlZ29yaWVzUGF0aCgpO1xuXG4gICAgaWYgKCFjYXRlZ29yaWVzUGF0aCB8fCBjYXRlZ29yaWVzUGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIElmIG5vIGNhdGVnb3JpZXMgcGF0aCwgZ28gYmFjayB0byByZXBvcnRzIHJvb3RcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtcnVubmVyLnRlcm1zLm1lbnUtdGl0bGUnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGNhdGVnb3JpZXNQYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gSWYgb25seSBvbmUgY2F0ZWdvcnksIGdvIGJhY2sgdG8gcmVwb3J0cyByb290XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXJ1bm5lci50ZXJtcy5tZW51LXRpdGxlJyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEdvIGJhY2sgdG8gcGFyZW50IGNhdGVnb3J5XG4gICAgY29uc3QgcGFyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yaWVzUGF0aFtjYXRlZ29yaWVzUGF0aC5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHBhcmVudENhdGVnb3J5LnRpdGxlLFxuICAgIH07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBvbkJhY2tCdXR0b25DbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBPbiBtb2JpbGUsIGlmIHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCAoc2hvd2luZyByZXBvcnQpLCBnbyBiYWNrIHRvIGZpbHRlcnNcbiAgICBpZiAodGhpcy5sYXlvdXRTZXJ2aWNlLmlzU21hbGwoKSAmJiB0aGlzLnZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG4gICAgICB0aGlzLnZtLmNsZWFyRXhlY3V0aW9uU3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYXRlZ29yaWVzUGF0aCA9IHRoaXMudm0uY2F0ZWdvcmllc1BhdGgoKTtcblxuICAgIGlmICghY2F0ZWdvcmllc1BhdGggfHwgY2F0ZWdvcmllc1BhdGgubGVuZ3RoIDw9IDEpIHtcbiAgICAgIC8vIE5hdmlnYXRlIGJhY2sgdG8gcmVwb3J0cyByb290XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbLi4udGhpcy5iYXNlUm91dGVzLCAncmVwb3J0cyddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmF2aWdhdGUgdG8gcGFyZW50IGNhdGVnb3J5XG4gICAgICBsZXQgdXJsUGFydHMgPSBbLi4udGhpcy5iYXNlUm91dGVzLCAncmVwb3J0cyddO1xuICAgICAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllc1BhdGgpIHtcbiAgICAgICAgdXJsUGFydHMucHVzaChjYXQuaWQpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUodXJsUGFydHMpO1xuICAgIH1cbiAgfVxuXG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAoY29tbWFuZC5uYW1lKSB7XG4gICAgICBjYXNlICdleGVjdXRlLXJlcG9ydCc6XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRXhlY3V0ZVJlcG9ydCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlZnJlc2gtcmVwb3J0JzpcbiAgICAgICAgdGhpcy5oYW5kbGVSZWZyZXNoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVzZXQtZmlsdGVycyc6XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmF2aWdhdGUtdG8tcmVwb3J0cyc6XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25hdmlnYXRlLXRvLWNhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgcGF0aCA9IGNvbW1hbmQub3B0aW9ucz8uWydwYXRoJ10gYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUocGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kLm5hbWV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPCEtLSBMZWZ0IFBhbmVsOiBGaWx0ZXJzIChBbHdheXMgdmlzaWJsZSBmb3IgZGVza3RvcCkgLS0+XG4gIEBpZiAoc2hvd0ZpbHRlcnNQYW5lbCgpKSB7XG4gIDxheHAtbGF5b3V0LXN0YXJ0LXNpZGU+XG4gICAgPGF4cC1sYXlvdXQtaGVhZGVyPlxuICAgICAgPGF4cC1sYXlvdXQtdGl0bGU+XG4gICAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuZmlsdGVycy50aXRsZScpIHwgYXN5bmMgfX1cbiAgICAgIDwvYXhwLWxheW91dC10aXRsZT5cbiAgICA8L2F4cC1sYXlvdXQtaGVhZGVyPlxuICAgIDxheHAtbGF5b3V0LWNvbnRlbnQ+XG4gICAgICA8YXhwLWxheW91dC1yZW5kZXJlciAjZmlsdGVyc0Zvcm0gW2xheW91dF09XCJ2bS5mb3JtRGVmaW5pdGlvbigpXCIgW2NvbnRleHRdPVwidm0uZmlsdGVyQ29udGV4dCgpXCIgW2xvb2tdPVwiJ2dyb3VwJ1wiXG4gICAgICAgIChjb250ZXh0Q2hhbmdlKT1cImhhbmRsZUZpbHRlcnNDaGFuZ2UoJGV2ZW50KVwiIChjb250ZXh0SW5pdGlhdGVkKT1cImhhbmRsZUZpbHRlcnNJbml0aWF0ZWQoJGV2ZW50KVwiPlxuICAgICAgPC9heHAtbGF5b3V0LXJlbmRlcmVyPlxuICAgIDwvYXhwLWxheW91dC1jb250ZW50PlxuICAgIDxheHAtbGF5b3V0LWZvb3RlciBjbGFzcz1cImF4LXAtNCBheC1ib3JkZXItdFwiICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICAgICAgQGlmICh2bS5oYXNVbmFwcGxpZWRGaWx0ZXJzKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC13LWZ1bGwgYXgtd2FybmluZy1saWdodGVzdCBheC1tYi0yIGF4LXAtMiBheC1yb3VuZGVkIGF4LWJvcmRlciBheC1ib3JkZXItd2FybmluZy0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yIGF4LXRleHQtd2FybmluZy04MDBcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIGF4LXRleHQtc21cIj48L2F4LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhzXCI+e3tcbiAgICAgICAgICAgIHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuZmlsdGVycy5tZXNzYWdlcy53YXJuaW5nLnVuYXBwbGllZCcpIHwgYXN5bmNcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXctZnVsbFwiIFtkaXNhYmxlZF09XCIhdm0uY2FuRXhlY3V0ZSgpXCJcbiAgICAgICAgW3RleHRdPVwidCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5leGVjdXRlLnRpdGxlJykgfCBhc3luY1wiIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAob25DbGljayk9XCJleGVjdXRlKHsgbmFtZTogJ2V4ZWN1dGUtcmVwb3J0JyB9KVwiPlxuICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvYXhwLWxheW91dC1mb290ZXI+XG4gIDwvYXhwLWxheW91dC1zdGFydC1zaWRlPlxuICB9XG4gIDxheHAtcGFnZS10b29sYmFyPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeD5cbiAgICAgIEBpZiAodm0uaGFzTXVsdGlwbGVMYXlvdXRzKCkgJiYgc2hvd1JlcG9ydERpc3BsYXkoKSkge1xuICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ2bS5jdXJyZW50TGF5b3V0KCk/LnRpdGxlXCI+XG4gICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCB7eyB2bS5jdXJyZW50TGF5b3V0KCk/Lmljb24gfX1cIj48L2F4LWljb24+XG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICBAZm9yIChsYXlvdXQgb2Ygdm0uYXZhaWxhYmxlTGF5b3V0cygpOyB0cmFjayBsYXlvdXQuaWQpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbdGV4dF09XCJsYXlvdXQudGl0bGVcIiBbc2VsZWN0ZWRdPVwidm0uY3VycmVudExheW91dCgpPy5pZCA9PT0gbGF5b3V0LmlkXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uc3dpdGNoTGF5b3V0KGxheW91dC5pZClcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IHt7IGxheW91dC5pY29uIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9heHAtbGF5b3V0LXByZWZpeD5cbiAgICA8YXhwLWxheW91dC1zdWZmaXg+IDwvYXhwLWxheW91dC1zdWZmaXg+XG4gIDwvYXhwLXBhZ2UtdG9vbGJhcj5cblxuICA8IS0tIE1haW4gQ29udGVudDogUmVwb3J0IERpc3BsYXkgLS0+XG4gIDxheHAtcGFnZS1jb250ZW50IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgIEBpZiAodm0uaGFzRXJyb3IoKSkge1xuICAgIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gICAgPGF4cC1zdGF0ZS1tZXNzYWdlIGljb249XCJmYS1saWdodCBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiIGxvb2s9XCJlcnJvclwiXG4gICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmVycm9yLmZldGNoLXRpdGxlJ1wiXG4gICAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCdcIj5cbiAgICAgIDxkaXYgc2xvdD1cImFjdGlvbnNcIj5cbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwib3V0bGluZVwiIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgW3RleHRdPVwidCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5yZXRyeS50aXRsZScpIHwgYXN5bmNcIiAob25DbGljayk9XCJ2bS5jbGVhckVycm9yKClcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSBpZiAoIXZtLnJlcG9ydERlZmluaXRpb24oKSkge1xuICAgIDwhLS0gTm8gUmVwb3J0IFNlbGVjdGVkIFN0YXRlIC0tPlxuICAgIDxheHAtc3RhdGUtbWVzc2FnZSBpY29uPVwiZmEtbGlnaHQgZmEtY2hhcnQtbGluZVwiXG4gICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMucmVwb3J0LXZpZXdlci5lbXB0eS1zdGF0ZXMubm8tcmVwb3J0LnRpdGxlJ1wiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMucmVwb3J0LXZpZXdlci5lbXB0eS1zdGF0ZXMubm8tcmVwb3J0LmRlc2NyaXB0aW9uJ1wiPlxuICAgICAgPGRpdiBzbG90PVwiYWN0aW9uc1wiPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJvdXRsaW5lXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbdGV4dF09XCJ0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5hY3Rpb25zLmJyb3dzZS1yZXBvcnRzLnRpdGxlJykgfCBhc3luY1wiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLWZvbGRlci1vcGVuXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgfSBAZWxzZSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlcG9ydERpc3BsYXlcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuXG48IS0tIERlc2t0b3A6IFJlcG9ydCBEaXNwbGF5IEFyZWEgLS0+XG48bmctdGVtcGxhdGUgI3JlcG9ydERpc3BsYXk+XG4gIEBpZiAoc2hvd1JlcG9ydERpc3BsYXkoKSkge1xuICA8IS0tIERlc2t0b3AgJiBNb2JpbGU6IFJlcG9ydCBEaXNwbGF5IEFyZWEgLS0+XG4gIEBpZiAodm0uaXNUYWJsZUxheW91dCgpKSB7XG4gIDxheHAtcmVwb3J0LXRhYmxlLXZpZXc+IDwvYXhwLXJlcG9ydC10YWJsZS12aWV3PlxuICB9IEBlbHNlIGlmICh2bS5pc0NoYXJ0TGF5b3V0KCkpIHtcbiAgPGF4cC1yZXBvcnQtY2hhcnQtdmlldz4gPC9heHAtcmVwb3J0LWNoYXJ0LXZpZXc+XG4gIH1cbiAgfSBAZWxzZSB7XG4gIDwhLS0gTW9iaWxlOiBTaG93IGZpbHRlcnMgIC0tPlxuICA8YXhwLWxheW91dC1yZW5kZXJlciAjZmlsdGVyc0Zvcm0gW2xheW91dF09XCJ2bS5mb3JtRGVmaW5pdGlvbigpXCIgW2NvbnRleHRdPVwidm0uZmlsdGVyQ29udGV4dCgpXCIgW2xvb2tdPVwiJ2ZpZWxkc2V0J1wiPlxuICA8L2F4cC1sYXlvdXQtcmVuZGVyZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gTW9iaWxlOiBFeGVjdXRlIEJ1dHRvbiAtLT5cbkBpZiAobGF5b3V0U2VydmljZS5pc1NtYWxsKCkgJiYgIXZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG48YXhwLXBhZ2UtZm9vdGVyIGNsYXNzPVwiYXgtcC0yIGF4LWJvcmRlci10XCI+XG4gIDxheC1idXR0b24gY2xhc3M9XCJheC13LWZ1bGxcIiBbZGlzYWJsZWRdPVwiIXZtLmNhbkV4ZWN1dGUoKVwiXG4gICAgW3RleHRdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmFjdGlvbnMuZXhlY3V0ZS50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgIChvbkNsaWNrKT1cImV4ZWN1dGUoeyBuYW1lOiAnZXhlY3V0ZS1yZXBvcnQnIH0pXCI+XG4gICAgPGF4LXByZWZpeD5cbiAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgIDwvYXgtcHJlZml4PlxuICA8L2F4LWJ1dHRvbj5cbjwvYXhwLXBhZ2UtZm9vdGVyPlxufSJdfQ==","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXBarChartReportMapper } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportBarChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n // TODO: Implement chart data fetching\n console.log('Chart data fetch triggered', {\n chartType: this.chartType(),\n dataMapping: this.dataMapping(),\n });\n this.vm.fetchData().then((data) => {\n const barChartData = AXBarChartReportMapper((data?.data).data ?? {});\n this.barChartData.set(barChartData);\n console.log('barChartData', barChartData);\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.legendOptions = signal({\n mode: 'horizontal',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n #fetchData;\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle chart click events\n */\n handleChartClick(event) {\n // TODO: Implement chart click handling\n console.log('Chart clicked:', event);\n }\n /**\n * Handle chart data point selection\n */\n handleDataPointSelect(event) {\n // TODO: Implement data point selection\n console.log('Data point selected:', event);\n }\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n /**\n * Get chart configuration for rendering\n */\n getChartConfig() {\n // TODO: Transform AXPReportChartOptions to chart library format\n return {\n type: this.chartType(),\n options: this.chartOptions(),\n dataMapping: this.dataMapping(),\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportBarChartViewComponent, isStandalone: true, selector: \"axp-report-bar-chart-view\", ngImport: i0, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [\n CommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXChartLegendComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvdmlld3MvcmVwb3J0LWJhci1jaGFydC12aWV3L3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1iYXItY2hhcnQtdmlldy9yZXBvcnQtYmFyLWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FB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WEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhDaGFydExlZ2VuZENvbXBvbmVudCwgQVhDaGFydExlZ2VuZE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9jaGFydC1sZWdlbmQnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQUGFnZVN0YXR1cyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC1tYXBwZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC50eXBlcyc7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtYmFyLWNoYXJ0LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhCYXJDaGFydENvbXBvbmVudCxcbiAgICBBWENoYXJ0TGVnZW5kQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnRCYXJDaGFydFZpZXdDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFYUFBhZ2VTdGF0dXMgPSBBWFBQYWdlU3RhdHVzO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICAvKipcbiAgICogQ3VycmVudCBjaGFydCBsYXlvdXQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0TGF5b3V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IHRoaXMudm0uY3VycmVudExheW91dCgpO1xuICAgIHJldHVybiBsYXlvdXQ/LmxheW91dC50eXBlID09PSAnY2hhcnQnID8gKGxheW91dC5sYXlvdXQgYXMgQVhQUmVwb3J0Q2hhcnRMYXlvdXQpIDogbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjaGFydExheW91dCA9IHRoaXMuY2hhcnRMYXlvdXQoKTtcbiAgICByZXR1cm4gY2hhcnRMYXlvdXQ/Lm9wdGlvbnMgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IHR5cGUgZm9yIHJlbmRlcmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0VHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uY2hhcnRUeXBlIHx8ICdiYXInO1xuICB9KTtcblxuICAvKipcbiAgICogRGF0YSBtYXBwaW5nIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhTWFwcGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uZGF0YU1hcHBpbmcgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gaGFuZGxlIGRhdGEgZmV0Y2hpbmcgd2hlbiBjaGFydCBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgICovXG4gICNmZXRjaERhdGEgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLnZtLmFsbG93RmV0Y2hEYXRhKCkgJiYgdGhpcy52bS5zaG91bGRFeGVjdXRlUmVwb3J0KCkgJiYgdGhpcy5jaGFydE9wdGlvbnMoKSkge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGNoYXJ0IGRhdGEgZmV0Y2hpbmdcbiAgICAgIGNvbnNvbGUubG9nKCdDaGFydCBkYXRhIGZldGNoIHRyaWdnZXJlZCcsIHtcbiAgICAgICAgY2hhcnRUeXBlOiB0aGlzLmNoYXJ0VHlwZSgpLFxuICAgICAgICBkYXRhTWFwcGluZzogdGhpcy5kYXRhTWFwcGluZygpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZtLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgYmFyQ2hhcnREYXRhID0gQVhCYXJDaGFydFJlcG9ydE1hcHBlcigoKGRhdGE/LmRhdGEgYXMgYW55KS5kYXRhIGFzIGFueSkgPz8ge30pO1xuICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YS5zZXQoYmFyQ2hhcnREYXRhKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2JhckNoYXJ0RGF0YScsIGJhckNoYXJ0RGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjaGFydCBjbGljayBldmVudHNcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY2hhcnQgY2xpY2sgaGFuZGxpbmdcbiAgICBjb25zb2xlLmxvZygnQ2hhcnQgY2xpY2tlZDonLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNoYXJ0IGRhdGEgcG9pbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRGF0YVBvaW50U2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZGF0YSBwb2ludCBzZWxlY3Rpb25cbiAgICBjb25zb2xlLmxvZygnRGF0YSBwb2ludCBzZWxlY3RlZDonLCBldmVudCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAgICovXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY2hhcnRPcHRpb25zKCkgJiYgdGhpcy5kYXRhTWFwcGluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2hhcnQgY29uZmlndXJhdGlvbiBmb3IgcmVuZGVyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q2hhcnRDb25maWcoKTogYW55IHtcbiAgICAvLyBUT0RPOiBUcmFuc2Zvcm0gQVhQUmVwb3J0Q2hhcnRPcHRpb25zIHRvIGNoYXJ0IGxpYnJhcnkgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLmNoYXJ0T3B0aW9ucygpLFxuICAgICAgZGF0YU1hcHBpbmc6IHRoaXMuZGF0YU1hcHBpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGJhckNoYXJ0RGF0YSA9IHNpZ25hbDxBWEJhckNoYXJ0VmFsdWU+KFtdKTtcblxuICBwcm90ZWN0ZWQgYmFyQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24+KHt9KTtcblxuICBwcm90ZWN0ZWQgbGVnZW5kT3B0aW9ucyA9IHNpZ25hbDxBWENoYXJ0TGVnZW5kT3B0aW9ucz4oe1xuICAgIG1vZGU6ICdob3Jpem9udGFsJyxcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXhwLXJlcG9ydC1jaGFydC12aWV3XCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIEBpZiAodm0uc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZykge1xuICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtc3Bpbm5lciBheC1zcGluIGF4LWJvcmRlci00IGF4LWJvcmRlci1ncmF5LTIwMCBheC1ib3JkZXItdC1wcmltYXJ5IGF4LXJvdW5kZWQtZnVsbCBheC13LTEyIGF4LWgtMTJcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nLXRleHRcIj5cbiAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLkVycm9yKSB7XG4gIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gIDxheHAtc3RhdGUtbWVzc2FnZSBtb2RlPVwiZXJyb3JcIiBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtZGVzY3JpcHRpb24nXCI+XG4gIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH0gQGVsc2UgaWYgKGlzQ2hhcnRSZWFkeSgpKSB7XG4gIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtY29udGFpbmVyXCI+XG4gICAgQGlmIChjaGFydExheW91dCgpPy5oZWFkZXIpIHtcbiAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cIl9fY2hhcnQtdGl0bGVcIj57eyBjaGFydExheW91dCgpPy5oZWFkZXI/LnRpdGxlIH19PC9oMz5cbiAgICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyPy5zaG93RGF0ZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtZGF0ZVwiPnt7ICdAZ2VuZXJhbDpjb21tb24uZGF0ZS50b2RheScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWJvZHlcIj5cbiAgICAgIDwhLS0gQ2hhcnQgY29tcG9uZW50IHdpbGwgYmUgcmVuZGVyZWQgaGVyZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3BsYWNlaG9sZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXdyYXAgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWdhcC0xMFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwibGVnZW5kT3B0aW9ucygpLm1vZGUgPT09ICdob3Jpem9udGFsJyA/ICdheC1mbGV4LWNvbCcgOiAnYXgtZmxleC1yb3cnXCI+XG4gICAgICAgICAgICA8IS0tIENoYXJ0IEFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0wIGF4LXNpemUtOTZcIj5cbiAgICAgICAgICAgICAgPGF4LWJhci1jaGFydCAjY2hhcnQgW2RhdGFdPVwiYmFyQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJiYXJDaGFydE9wdGlvbnMoKVwiPjwvYXgtYmFyLWNoYXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIExlZ2VuZCBBcmVhIC0tPlxuICAgICAgICAgICAgQGlmIChiYXJDaGFydERhdGEoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJjaGFydFwiPjwvYXgtY2hhcnQtbGVnZW5kPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmZvb3Rlcikge1xuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWZvb3RlclwiPlxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWwpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWxcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPCEtLSBObyBDb25maWd1cmF0aW9uIFN0YXRlIC0tPlxuICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWNoYXJ0LWNvbHVtblwiXG4gICAgW3RpdGxlXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmNoYXJ0LmVtcHR5LXN0YXRlcy5uby1jb25maWcudGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy5kZXNjcmlwdGlvbidcIj5cbiAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgfVxuPC9kaXY+Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtcmVwb3J0LW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2Fjb3JleC1tb2R1bGVzLXJlcG9ydC1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2","i3","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-modules-report-management.mjs","sources":["../tmp-esm2022/report-management/lib/const.js","../tmp-esm2022/report-management/lib/reports/report.types.js","../tmp-esm2022/report-management/lib/reports/report-definition.provider.js","../tmp-esm2022/report-management/lib/reports/report-definition.service.js","../tmp-esm2022/report-management/lib/reports/report-mapper.js","../tmp-esm2022/report-management/lib/features/report-runner/reports.provider.js","../tmp-esm2022/report-management/lib/menu.keys.js","../tmp-esm2022/report-management/lib/menu.provider.js","../tmp-esm2022/report-management/lib/entities/data-set/column.def.js","../tmp-esm2022/report-management/lib/entities/data-set/data-set.service.js","../tmp-esm2022/report-management/lib/entities/data-set/filter.def.js","../tmp-esm2022/report-management/lib/entities/data-set/sort.def.js","../tmp-esm2022/report-management/lib/entities/data-set/data-set.entity.js","../tmp-esm2022/report-management/lib/entities/report-definition.service.js","../tmp-esm2022/report-management/lib/entities/data-set/data-set.module.js","../tmp-esm2022/report-management/lib/entities/report-definition.module.js","../tmp-esm2022/report-management/lib/entities/index.js","../tmp-esm2022/report-management/lib/features/data-llist/column-evaluator-scope.provider.js","../tmp-esm2022/report-management/lib/features/report/create/report-create.workflow.js","../tmp-esm2022/report-management/lib/report-management.module.js","../tmp-esm2022/report-management/lib/permission.keys.js","../tmp-esm2022/report-management/lib/permission-definition.provider.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer.viewmodel.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-chart-view/report-chart-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-table-view/report-table-view.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/report-viewer-page/report-viewer-page.component.js","../tmp-esm2022/report-management/lib/features/report-viewer/views/report-bar-chart-view/report-bar-chart-view.component.js","../tmp-esm2022/report-management/acorex-modules-report-management.js"],"sourcesContent":["const config = {\n i18n: 'report-management',\n module: 'ReportManagement'\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'report-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-chart-bar'\n },\n entities: {\n dataSet: {\n name: 'DataSet',\n title: `t(\"dataSet\", { scope: \"${config.i18n}\" })`,\n titlePlural: `t(\"dataSetPlural\", { scope: \"${config.i18n}\" })`,\n icon: 'fa-light fa-default',\n },\n category: {\n name: 'Category',\n fullName: `${config.module}.Category`,\n title: `@${config.i18n}:reports.entities.category.title`,\n titlePlural: `@${config.i18n}:reports.entities.category.plural`,\n icon: 'fa-light fa-folder'\n },\n report: {\n name: 'Report',\n fullName: `${config.module}.Report`,\n title: `@${config.i18n}:reports.entities.report.title`,\n titlePlural: `@${config.i18n}:reports.entities.report.plural`,\n icon: 'fa-light fa-file-chart-pie'\n }\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE1BQU0sR0FBRztJQUNYLElBQUksRUFBRSxtQkFBbUI7SUFDekIsTUFBTSxFQUFDLGtCQUFrQjtDQUM1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxlQUFlO1FBQ3JDLElBQUksRUFBRSx1QkFBdUI7S0FDaEM7SUFDRCxRQUFRLEVBQUU7UUFDVixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSwwQkFBMEIsTUFBTSxDQUFDLElBQUksTUFBTTtZQUNsRCxXQUFXLEVBQUUsZ0NBQWdDLE1BQU0sQ0FBQyxJQUFJLE1BQU07WUFDOUQsSUFBSSxFQUFFLHFCQUFxQjtTQUM1QjtRQUNHLFFBQVEsRUFBRTtZQUNOLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFdBQVc7WUFDckMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksa0NBQWtDO1lBQ3hELFdBQVcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLG1DQUFtQztZQUMvRCxJQUFJLEVBQUUsb0JBQW9CO1NBQzdCO1FBQ0QsTUFBTSxFQUFFO1lBQ0osSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxTQUFTO1lBQ25DLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLGdDQUFnQztZQUN0RCxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxpQ0FBaUM7WUFDN0QsSUFBSSxFQUFFLDRCQUE0QjtTQUNyQztLQUNKO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbmZpZyA9IHtcbiAgICBpMThuOiAncmVwb3J0LW1hbmFnZW1lbnQnLFxuICAgIG1vZHVsZTonUmVwb3J0TWFuYWdlbWVudCdcbn07XG5cbmV4cG9ydCBjb25zdCBSb290Q29uZmlnID0ge1xuICAgIGNvbmZpZyxcbiAgICBtb2R1bGU6IHtcbiAgICAgICAgcm91dGU6ICdyZXBvcnQtbWFuYWdlbWVudCcsXG4gICAgICAgIG5hbWU6IGNvbmZpZy5tb2R1bGUsXG4gICAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59Om1vZHVsZS50aXRsZWAsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jaGFydC1iYXInXG4gICAgfSxcbiAgICBlbnRpdGllczoge1xuICAgIGRhdGFTZXQ6IHtcbiAgICAgIG5hbWU6ICdEYXRhU2V0JyxcbiAgICAgIHRpdGxlOiBgdChcImRhdGFTZXRcIiwgeyBzY29wZTogXCIke2NvbmZpZy5pMThufVwiIH0pYCxcbiAgICAgIHRpdGxlUGx1cmFsOiBgdChcImRhdGFTZXRQbHVyYWxcIiwgeyBzY29wZTogXCIke2NvbmZpZy5pMThufVwiIH0pYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1kZWZhdWx0JyxcbiAgICB9LFxuICAgICAgICBjYXRlZ29yeToge1xuICAgICAgICAgICAgbmFtZTogJ0NhdGVnb3J5JyxcbiAgICAgICAgICAgIGZ1bGxOYW1lOiBgJHtjb25maWcubW9kdWxlfS5DYXRlZ29yeWAsXG4gICAgICAgICAgICB0aXRsZTogYEAke2NvbmZpZy5pMThufTpyZXBvcnRzLmVudGl0aWVzLmNhdGVnb3J5LnRpdGxlYCxcbiAgICAgICAgICAgIHRpdGxlUGx1cmFsOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMuY2F0ZWdvcnkucGx1cmFsYCxcbiAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1mb2xkZXInXG4gICAgICAgIH0sXG4gICAgICAgIHJlcG9ydDoge1xuICAgICAgICAgICAgbmFtZTogJ1JlcG9ydCcsXG4gICAgICAgICAgICBmdWxsTmFtZTogYCR7Y29uZmlnLm1vZHVsZX0uUmVwb3J0YCxcbiAgICAgICAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnRpdGxlYCxcbiAgICAgICAgICAgIHRpdGxlUGx1cmFsOiBgQCR7Y29uZmlnLmkxOG59OnJlcG9ydHMuZW50aXRpZXMucmVwb3J0LnBsdXJhbGAsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtZmlsZS1jaGFydC1waWUnXG4gICAgICAgIH1cbiAgICB9LFxufTtcbiJdfQ==","//#region ---- Imports ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0cy9yZXBvcnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCOztBQThlL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4cG9ydE9wdGlvbnMsIEFYUE9wdGlvbnNEYXRhLCBBWFBDYXRlZ29yeUVudGl0eSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvcmVcIjtcbmltcG9ydCB7IEFYUFdpZGdldENvbHVtbk5vZGUsIEFYUFdpZGdldE5vZGUgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmVcIjtcbmltcG9ydCB7IEFYUFF1ZXJ5U29ydCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuaW1wb3J0IHsgQVhQU3lzdGVtQWN0aW9uVHlwZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvcmVcIjtcbmltcG9ydCB7IEFYUENvbW1hbmQgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lXCI7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvcmUgUmVwb3J0IFR5cGVzIGFuZCBJbnRlcmZhY2VzICAgLS0tLVxuXG5leHBvcnQgdHlwZSBBWFBSZXBvcnRMYXlvdXRUeXBlID0gJ3RhYmxlJyB8ICdjaGFydCcgfCAnY2FyZHMnIHwgJ2N1c3RvbSc7XG5cbi8qKlxuICogUmVwb3J0IENhdGVnb3J5IC0gRXh0ZW5kcyBBWFBDYXRlZ29yeUVudGl0eSBmb3IgY29uc2lzdGVuY3kgYW5kIHBlcmZvcm1hbmNlXG4gKiBcbiAqIEluaGVyaXRlZCBwcm9wZXJ0aWVzIGZyb20gQVhQQ2F0ZWdvcnlFbnRpdHk6XG4gKiAtIGlkOiBzdHJpbmcgICAgICAgICAgICAgICAgICAgLSBVbmlxdWUgaWRlbnRpZmllclxuICogLSB0aXRsZTogc3RyaW5nICAgICAgICAgICAgICAgIC0gRGlzcGxheSBuYW1lXG4gKiAtIGRlc2NyaXB0aW9uPzogc3RyaW5nICAgICAgICAgLSBDYXRlZ29yeSBkZXNjcmlwdGlvblxuICogLSBwYXJlbnRJZD86IHN0cmluZyAgICAgICAgICAgIC0gUGFyZW50IGNhdGVnb3J5IElEXG4gKiAtIGNoaWxkcmVuQ291bnQ6IG51bWJlciAgICAgICAgLSBEaXJlY3QgY2hpbGQgY2F0ZWdvcmllcyBjb3VudCAoZW5hYmxlcyBsYXp5IGxvYWRpbmcpXG4gKiAtIGl0ZW1zQ291bnQ/OiBudW1iZXIgICAgICAgICAgLSBEaXJlY3QgcmVwb3J0cyBjb3VudCAocmVwbGFjZXMgaGFzUmVwb3J0IGJvb2xlYW4pXG4gKiAtIHRvdGFsQ2hpbGRyZW4/OiBudW1iZXIgICAgICAgLSBUb3RhbCBuZXN0ZWQgY2F0ZWdvcmllcyAob3B0aW9uYWwsIGZvciBhbmFseXRpY3MpXG4gKiAtIHRvdGFsSXRlbXM/OiBudW1iZXIgICAgICAgICAgLSBUb3RhbCByZXBvcnRzIGluIHRyZWUgKG9wdGlvbmFsLCBmb3IgYW5hbHl0aWNzKVxuICogXG4gKiBQZXJmb3JtYW5jZSBiZW5lZml0czpcbiAqIC0gTGF6eSBsb2FkaW5nIHN1cHBvcnQgKGNoaWxkcmVuQ291bnQgPiAwIHNob3dzIGV4cGFuZCBpY29uKVxuICogLSBSZXBvcnQgY291bnQgZGlzcGxheSAoaXRlbXNDb3VudCBzaG93cyBcIjUgcmVwb3J0c1wiIGJhZGdlKVxuICogLSBFZmZpY2llbnQgcXVlcmllcyAobm8gbmVlZCB0byBxdWVyeSB0byBrbm93IGlmIGV4cGFuZGFibGUpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0Q2F0ZWdvcnkgZXh0ZW5kcyBBWFBDYXRlZ29yeUVudGl0eSB7XG4gICAgLy8gTm8gYWRkaXRpb25hbCBwcm9wZXJ0aWVzIG5lZWRlZCAtIGFsbCBpbmhlcml0ZWQgZnJvbSBBWFBDYXRlZ29yeUVudGl0eVxuICAgIC8vIFVzZTogY2hpbGRyZW5Db3VudCBpbnN0ZWFkIG9mIGhhc0NoaWxkXG4gICAgLy8gVXNlOiBpdGVtc0NvdW50IGluc3RlYWQgb2YgaGFzUmVwb3J0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RGVmaW5pdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGNhdGVnb3J5SWRzOiBzdHJpbmdbXTtcbiAgICBwYXJhbWV0ZXJHcm91cHM6IEFYUFJlcG9ydFBhcmFtZXRlckdyb3VwW107XG4gICAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgICBsYXlvdXRzOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uW107ICAvLyBDaGFuZ2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgbGF5b3V0c1xuICAgIGRlZmF1bHRMYXlvdXRJZDogc3RyaW5nOyAgICAgICAgICAgICAgLy8gV2hpY2ggbGF5b3V0IHRvIHNob3cgYnkgZGVmYXVsdFxufVxuXG4vKipcbiAqIExheW91dCBEZWZpbml0aW9uIC0gQXNzb2NpYXRlcyBhIGxheW91dCB3aXRoIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbiB7XG4gICAgaWQ6IHN0cmluZzsgICAgICAgICAgICAgICAgICAgIC8vIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGxheW91dFxuICAgIHRpdGxlOiBzdHJpbmc7ICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IG5hbWUgKGUuZy4sIFwiVGFibGUgVmlld1wiLCBcIkNoYXJ0IFZpZXdcIilcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZzsgICAgICAgICAgLy8gT3B0aW9uYWwgZGVzY3JpcHRpb25cbiAgICBpY29uPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgLy8gSWNvbiBmb3IgbGF5b3V0IHN3aXRjaGVyIFVJXG4gICAgbGF5b3V0OiBBWFBSZXBvcnRMYXlvdXQ7ICAgICAgIC8vIFRoZSBhY3R1YWwgbGF5b3V0IGNvbmZpZ3VyYXRpb25cbiAgICBkYXRhU291cmNlPzogQVhQUmVwb3J0RGF0YVNvdXJjZTsgLy8gT3B0aW9uYWwgbGF5b3V0LXNwZWNpZmljIGRhdGFTb3VyY2UgKG92ZXJyaWRlcyByZXBvcnQtbGV2ZWwpXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhbjsgICAgICAgICAgIC8vIEFsdGVybmF0aXZlIHRvIGRlZmF1bHRMYXlvdXRJZFxuICAgIGV4cG9ydD86IEFYUEV4cG9ydE9wdGlvbnM7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRQYXJhbWV0ZXJHcm91cCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogQVhQUmVwb3J0UGFyYW1ldGVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0UGFyYW1ldGVyIHtcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIERhdGEgU291cmNlIFR5cGVzICAgLS0tLVxuXG5leHBvcnQgdHlwZSBBWFBSZXBvcnREYXRhU291cmNlID1cbiAgICB8IEFYUFF1ZXJ5RGF0YVNvdXJjZVxuICAgIHwgQVhQQ3VzdG9tRGF0YVNvdXJjZVxuICAgIHwgQVhQQWdncmVnYXRlZERhdGFTb3VyY2VcbiAgICB8IEFYUFRyYW5zZm9ybWVkRGF0YVNvdXJjZTtcblxuLyoqXG4gKiBRdWVyeSBEYXRhIFNvdXJjZSAtIFVzZWQgZm9yIGV4ZWN1dGluZyBwcmVkZWZpbmVkIHF1ZXJpZXMgKEFYUFF1ZXJ5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFF1ZXJ5RGF0YVNvdXJjZSB7XG4gICAgdHlwZTogJ3F1ZXJ5JztcbiAgICBuYW1lOiBzdHJpbmc7IC8vIFRoZSByZWdpc3RlcmVkIHF1ZXJ5IG5hbWUsIGUuZy4sICdnZXRFbXBsb3llZUxpc3QnXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107IC8vIE1hcHMgcmVwb3J0IHBhcmFtZXRlcnMgdG8gcXVlcnkgaW5wdXRzXG4gICAgc29ydEZpZWxkcz86IEFYUFF1ZXJ5U29ydFtdOyAgICAgICAgICAvLyBEZWZhdWx0IHNvcnRpbmcgYXBwbGllZCBieSB0aGUgYmFja2VuZFxuICAgIHBhZ2luYXRpb24/OiBib29sZWFuOyAgICAgICAgICAgICAgICAgLy8gRW5hYmxlcyBwYWdpbmcgaW4gcmVzdWx0IHNldFxufVxuXG5cblxuLyoqXG4gKiBDdXN0b20gRGF0YSBTb3VyY2UgLSBVc2VkIGZvciBmZXRjaGluZyBkYXRhIGZyb20gY3VzdG9tIHByb3ZpZGVycyBsaWtlIFJFU1QgQVBJcyBvciBleHRlcm5hbCBzZXJ2aWNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEN1c3RvbURhdGFTb3VyY2Uge1xuICAgIHR5cGU6ICdjdXN0b20nO1xuICAgIHByb3ZpZGVyOiBzdHJpbmc7IC8vIEV4YW1wbGU6ICdodHRwOi8vYXBpL3JlcG9ydCcgb3IgJ2N1c3RvbTpNeUhhbmRsZXInXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107IC8vIE1hcHMgcmVwb3J0IHBhcmFtZXRlcnMgdG8gcGF5bG9hZFxuICAgIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9OyAgICAgLy8gQWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgY3VzdG9tIGhhbmRsZXJcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXIgQmluZGluZyAtIE1hcHMgcmVwb3J0LWxldmVsIHBhcmFtZXRlcnMgdG8gYWN0dWFsIHF1ZXJ5L2NvbW1hbmQgaW5wdXQgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0UGFyYW1ldGVyQmluZGluZyB7XG4gICAgcGFyYW1ldGVyS2V5OiBzdHJpbmc7IC8vIFJlcG9ydCBwYXJhbWV0ZXIga2V5LCBlLmcuLCAnc3RhcnREYXRlJ1xuICAgIGJpbmRUbzogc3RyaW5nOyAgICAgICAvLyBJbnB1dCBrZXkgaW4gdGhlIHF1ZXJ5L2NvbW1hbmQgcGF5bG9hZCwgZS5nLiwgJ2ZpbHRlcnMuZnJvbSdcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGVkIERhdGEgU291cmNlIC0gVXNlZCBmb3IgcHJlLWFnZ3JlZ2F0ZWQgZGF0YSBvcHRpbWl6ZWQgZm9yIGNoYXJ0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUEFnZ3JlZ2F0ZWREYXRhU291cmNlIHtcbiAgICB0eXBlOiAnYWdncmVnYXRlZCc7XG4gICAgYmFzZVF1ZXJ5OiBzdHJpbmc7ICAgIC8vIEJhc2UgcXVlcnkgdG8gYWdncmVnYXRlIGZyb21cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIGdyb3VwQnk6IHN0cmluZ1tdOyAgICAvLyBGaWVsZHMgdG8gZ3JvdXAgYnlcbiAgICBhZ2dyZWdhdGlvbnM6IEFYUEFnZ3JlZ2F0aW9uW107IC8vIEFnZ3JlZ2F0aW9uIG9wZXJhdGlvbnNcbiAgICBpbnB1dHM/OiBBWFBSZXBvcnRQYXJhbWV0ZXJCaW5kaW5nW107XG59XG5cbi8qKlxuICogVHJhbnNmb3JtZWQgRGF0YSBTb3VyY2UgLSBBcHBsaWVzIHRyYW5zZm9ybWF0aW9ucyB0byBleGlzdGluZyBkYXRhIHNvdXJjZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBUcmFuc2Zvcm1lZERhdGFTb3VyY2Uge1xuICAgIHR5cGU6ICd0cmFuc2Zvcm1lZCc7XG4gICAgYmFzZURhdGFTb3VyY2U6IEFYUFJlcG9ydERhdGFTb3VyY2U7IC8vIFNvdXJjZSB0byB0cmFuc2Zvcm1cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIHRyYW5zZm9ybWF0aW9uczogQVhQRGF0YVRyYW5zZm9ybWF0aW9uW107IC8vIExpc3Qgb2YgdHJhbnNmb3JtYXRpb25zXG4gICAgaW5wdXRzPzogQVhQUmVwb3J0UGFyYW1ldGVyQmluZGluZ1tdO1xufVxuXG4vKipcbiAqIEFnZ3JlZ2F0aW9uIG9wZXJhdGlvbiBmb3IgYWdncmVnYXRlZCBkYXRhIHNvdXJjZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBBZ2dyZWdhdGlvbiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBvcGVyYXRpb246ICdzdW0nIHwgJ2F2ZycgfCAnY291bnQnIHwgJ21pbicgfCAnbWF4JyB8ICdkaXN0aW5jdCc7XG4gICAgYWxpYXM/OiBzdHJpbmc7IC8vIE91dHB1dCBmaWVsZCBuYW1lXG59XG5cbi8qKlxuICogRGF0YSB0cmFuc2Zvcm1hdGlvbiBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBEYXRhVHJhbnNmb3JtYXRpb24ge1xuICAgIHR5cGU6ICdmaWx0ZXInIHwgJ3NvcnQnIHwgJ2dyb3VwJyB8ICdwaXZvdCcgfCAnZm9ybWF0JztcbiAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIFRyYW5zZm9ybWF0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IFR5cGVzICAgLS0tLVxuXG5leHBvcnQgdHlwZSBBWFBSZXBvcnRMYXlvdXQgPVxuICAgIHwgQVhQUmVwb3J0VGFibGVMYXlvdXRcbiAgICB8IEFYUFJlcG9ydENoYXJ0TGF5b3V0XG5cbi8qKlxuICogVGFibGUgTGF5b3V0IC0gRGlzcGxheXMgZGF0YSBpbiB0YWJ1bGFyIGZvcm1hdFxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0VGFibGVMYXlvdXRSb3dBY3Rpb24gZXh0ZW5kcyBBWFBBY3Rpb25NZW51SXRlbSB7XG4gICAgcHJpb3JpdHk6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknO1xuICAgIHR5cGU6IEFYUFN5c3RlbUFjdGlvblR5cGUgfCBzdHJpbmc7XG4gICAgZGVmYXVsdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0VGFibGVMYXlvdXQge1xuICAgIHR5cGU6ICd0YWJsZSc7XG4gICAgY29sdW1uczogQVhQUmVwb3J0Q29sdW1uW107XG4gICAgYWN0aW9ucz86IEFYUFJlcG9ydFRhYmxlTGF5b3V0Um93QWN0aW9uW107XG4gICAgb3B0aW9ucz86IEFYUFRhYmxlT3B0aW9ucztcbiAgICBncm91cEJ5Pzogc3RyaW5nW107XG4gICAgY29uZGl0aW9uYWxGb3JtYXR0aW5nPzogQVhQQ29uZGl0aW9uYWxGb3JtYXRSdWxlW107XG4gICAgc3VtbWFyeT86IEFYUFJlcG9ydFN1bW1hcnlPcHRpb25zW107XG4gICAgaGVhZGVyPzogQVhQUmVwb3J0SGVhZGVyRm9vdGVyO1xuICAgIGZvb3Rlcj86IEFYUFJlcG9ydEhlYWRlckZvb3Rlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBUYWJsZU9wdGlvbnMge1xuICAgIHBhZ2luYXRpb24/OiBib29sZWFuO1xuICAgIHN0aWNreUhlYWRlcj86IGJvb2xlYW47XG4gICAgc3RyaXBlZFJvd3M/OiBib29sZWFuO1xuICAgIHNvcnRpbmc/OiBBWFBRdWVyeVNvcnRbXTtcbiAgICBzZWxlY3RhYmxlPzoge1xuICAgICAgICBtb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCAnbm9uZSc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDaGFydCBMYXlvdXQgLSBEaXNwbGF5cyBkYXRhIGluIHZhcmlvdXMgY2hhcnQgZm9ybWF0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENoYXJ0TGF5b3V0IHtcbiAgICB0eXBlOiAnY2hhcnQnO1xuICAgIG9wdGlvbnM6IEFYUFJlcG9ydENoYXJ0T3B0aW9ucztcbiAgICBoZWFkZXI/OiBBWFBSZXBvcnRIZWFkZXJGb290ZXI7XG4gICAgZm9vdGVyPzogQVhQUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENoYXJ0T3B0aW9ucyB7XG4gICAgY2hhcnRUeXBlOiAnYmFyJyB8ICdsaW5lJyB8ICdwaWUnIHwgJ2RvdWdobnV0JyB8ICdhcmVhJyB8ICdzY2F0dGVyJyB8ICdyYWRhcicgfCAnbWl4ZWQnO1xuICAgIGRhdGFNYXBwaW5nOiBBWFBDaGFydERhdGFNYXBwaW5nO1xuICAgIHN0eWxpbmc/OiBBWFBDaGFydFN0eWxpbmc7XG4gICAgaW50ZXJhY3Rpdml0eT86IEFYUENoYXJ0SW50ZXJhY3Rpdml0eTtcbn1cblxuLyoqXG4gKiBDaGFydCBEYXRhIE1hcHBpbmcgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUENoYXJ0RGF0YU1hcHBpbmcge1xuICAgIC8vIENvcmUgZmllbGRzXG4gICAgeEZpZWxkOiBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAvLyBYLWF4aXMgZGF0YSBmaWVsZFxuICAgIHlGaWVsZHM6IHN0cmluZyB8IHN0cmluZ1tdOyAgICAgICAgLy8gWS1heGlzIGRhdGEgZmllbGQocykgZm9yIG11bHRpcGxlIHNlcmllc1xuXG4gICAgLy8gR3JvdXBpbmcgYW5kIGNhdGVnb3JpemF0aW9uXG4gICAgZ3JvdXBCeT86IHN0cmluZzsgICAgICAgICAgICAgICAgICAvLyBHcm91cCBkYXRhIGJ5IHRoaXMgZmllbGRcbiAgICBzZXJpZXNGaWVsZD86IHN0cmluZzsgICAgICAgICAgICAgIC8vIEZpZWxkIHRvIGNyZWF0ZSBtdWx0aXBsZSBzZXJpZXNcblxuICAgIC8vIFNwZWNpYWwgZmllbGRzIGZvciBzcGVjaWZpYyBjaGFydCB0eXBlc1xuICAgIHNpemVGaWVsZD86IHN0cmluZzsgICAgICAgICAgICAgICAgLy8gRm9yIGJ1YmJsZSBjaGFydHNcbiAgICBjb2xvckZpZWxkPzogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIEZvciBncmFkaWVudC9jb25kaXRpb25hbCBjb2xvcmluZ1xuICAgIGxhYmVsRmllbGQ/OiBzdHJpbmc7ICAgICAgICAgICAgICAgLy8gQ3VzdG9tIGxhYmVsIGZpZWxkXG5cbiAgICAvLyBEYXRhIGFnZ3JlZ2F0aW9uXG4gICAgYWdncmVnYXRpb24/OiB7XG4gICAgICAgIG1ldGhvZDogJ3N1bScgfCAnYXZnJyB8ICdjb3VudCcgfCAnbWluJyB8ICdtYXgnO1xuICAgICAgICBmaWVsZDogc3RyaW5nO1xuICAgIH07XG59XG5cbi8qKlxuICogQ2hhcnQgVmlzdWFsIFN0eWxpbmcgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUENoYXJ0U3R5bGluZyB7XG4gICAgLy8gVGhlbWUgYW5kIGNvbG9yc1xuICAgIGNvbG9yU2NoZW1lPzogJ2RlZmF1bHQnIHwgJ3ByaW1hcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgfCAnY3VzdG9tJztcbiAgICBjdXN0b21Db2xvcnM/OiBzdHJpbmdbXTtcblxuICAgIC8vIENoYXJ0IGFwcGVhcmFuY2VcbiAgICBncmlkTGluZXM/OiBib29sZWFuO1xuICAgIGxlZ2VuZD86IHtcbiAgICAgICAgc2hvdzogYm9vbGVhbjtcbiAgICAgICAgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuICAgIH07XG5cbiAgICAvLyBBeGVzIGNvbmZpZ3VyYXRpb25cbiAgICB4QXhpcz86IEFYUENoYXJ0QXhpc0NvbmZpZztcbiAgICB5QXhpcz86IEFYUENoYXJ0QXhpc0NvbmZpZztcblxuICAgIC8vIEFuaW1hdGlvblxuICAgIGFuaW1hdGlvbj86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgZHVyYXRpb24/OiBudW1iZXI7XG4gICAgfTtcblxuICAgIC8vIENoYXJ0LXNwZWNpZmljIHN0eWxpbmdcbiAgICBjaGFydFNwZWNpZmljPzoge1xuICAgICAgICAvLyBCYXIgY2hhcnQgb3B0aW9uc1xuICAgICAgICBiYXI/OiB7XG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgICAgICAgICAgIG1vZGU6ICdncm91cGVkJyB8ICdzdGFja2VkJztcbiAgICAgICAgICAgIGJhcldpZHRoPzogbnVtYmVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIExpbmUgY2hhcnQgb3B0aW9uc1xuICAgICAgICBsaW5lPzoge1xuICAgICAgICAgICAgc3R5bGU6ICdzdHJhaWdodCcgfCAnY3VydmVkJyB8ICdzdGVwcGVkJztcbiAgICAgICAgICAgIHNob3dQb2ludHM/OiBib29sZWFuO1xuICAgICAgICAgICAgdGVuc2lvbj86IG51bWJlcjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBcmVhIGNoYXJ0IG9wdGlvbnNcbiAgICAgICAgYXJlYT86IHtcbiAgICAgICAgICAgIG1vZGU6ICdub3JtYWwnIHwgJ3N0YWNrZWQnIHwgJ3BlcmNlbnRhZ2UnO1xuICAgICAgICAgICAgb3BhY2l0eT86IG51bWJlcjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQaWUvRG91Z2hudXQgb3B0aW9uc1xuICAgICAgICBwaWU/OiB7XG4gICAgICAgICAgICBzdGFydEFuZ2xlPzogbnVtYmVyO1xuICAgICAgICAgICAgaW5uZXJSYWRpdXM/OiBudW1iZXI7IC8vIEZvciBkb3VnaG51dCBjaGFydHNcbiAgICAgICAgICAgIHNob3dMYWJlbHM/OiBib29sZWFuO1xuICAgICAgICB9O1xuICAgIH07XG59XG5cbi8qKlxuICogQ2hhcnQgQXhpcyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnRBeGlzQ29uZmlnIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzaG93PzogYm9vbGVhbjtcbiAgICB0eXBlPzogJ2xpbmVhcicgfCAnbG9nYXJpdGhtaWMnIHwgJ2RhdGV0aW1lJyB8ICdjYXRlZ29yeSc7XG4gICAgbWluPzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIG1heD86IG51bWJlciB8IHN0cmluZztcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgZ3JpZExpbmVzPzogYm9vbGVhbjtcbiAgICB0aWNrSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2hhcnQgSW50ZXJhY3Rpdml0eSBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ2hhcnRJbnRlcmFjdGl2aXR5IHtcbiAgICAvLyBab29tIGFuZCBwYW5cbiAgICB6b29tPzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBtb2RlPzogJ3gnIHwgJ3knIHwgJ3h5JztcbiAgICB9O1xuXG4gICAgLy8gVG9vbHRpcHNcbiAgICB0b29sdGlwcz86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgZm9ybWF0Pzogc3RyaW5nO1xuICAgICAgICBzaG93T25Ib3Zlcj86IGJvb2xlYW47XG4gICAgfTtcblxuICAgIC8vIENsaWNrIGV2ZW50c1xuICAgIG9uQ2xpY2s/OiB7XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIGFjdGlvbj86ICdkcmlsbC1kb3duJyB8ICdmaWx0ZXInIHwgJ2N1c3RvbSc7XG4gICAgfTtcblxuICAgIC8vIFNlbGVjdGlvblxuICAgIHNlbGVjdGlvbj86IHtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgbW9kZT86ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcbiAgICB9O1xuXG4gICAgLy8gRXhwb3J0XG4gICAgZXhwb3J0Pzoge1xuICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICBmb3JtYXRzPzogKCdwbmcnIHwgJ2pwZycgfCAncGRmJyB8ICdzdmcnKVtdO1xuICAgIH07XG59XG5cblxuLy8jcmVnaW9uIC0tLS0gICBTaGFyZWQgTW9kZWxzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENvbHVtbiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JztcbiAgICB3aWRnZXQ/OiBBWFBXaWRnZXRDb2x1bW5Ob2RlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0U3VtbWFyeU9wdGlvbnMge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgb3BlcmF0aW9uOiAnc3VtJyB8ICdhdmcnIHwgJ2NvdW50JyB8ICdtaW4nIHwgJ21heCc7XG4gICAgZGlzcGxheUluOiAnZ3JvdXBGb290ZXInIHwgJ3JlcG9ydEZvb3Rlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQQ29uZGl0aW9uYWxGb3JtYXRSdWxlIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGNvbmRpdGlvbjogJz4nIHwgJzwnIHwgJz0nIHwgJyE9JyB8ICdjb250YWlucyc7XG4gICAgdmFsdWU6IGFueTtcbiAgICBzdHlsZToge1xuICAgICAgICBjb2xvcj86IHN0cmluZztcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgICAgICBmb250V2VpZ2h0PzogJ25vcm1hbCcgfCAnYm9sZCc7XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRIZWFkZXJGb290ZXIge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGxvZ29Vcmw/OiBzdHJpbmc7XG4gICAgc2hvd0RhdGU/OiBib29sZWFuO1xuICAgIHNob3dQYXJhbWV0ZXJzPzogYm9vbGVhbjtcbiAgICBjdXN0b21IdG1sPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIExheW91dCBzd2l0Y2hlciBvcHRpb25zIGZvciBVSSBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTGF5b3V0U3dpdGNoZXJPcHRpb24ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIHR5cGU6IEFYUFJlcG9ydExheW91dFR5cGU7XG59XG5cbi8qKlxuICogUnVudGltZSBsYXlvdXQgc2VsZWN0aW9uIHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0TGF5b3V0U3RhdGUge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgYWN0aXZlTGF5b3V0SWQ6IHN0cmluZztcbiAgICBhdmFpbGFibGVMYXlvdXRzOiBBWFBMYXlvdXRTd2l0Y2hlck9wdGlvbltdO1xufVxuXG4vKipcbiAqIExheW91dCB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dFZhbGlkYXRpb25SZXN1bHQge1xuICAgIGlzVmFsaWQ6IGJvb2xlYW47XG4gICAgZXJyb3JzOiBzdHJpbmdbXTtcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERhdGEgc291cmNlIHJlc29sdXRpb24gcmVzdWx0IGZvciBhIHNwZWNpZmljIGxheW91dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dERhdGFTb3VyY2VSZXNvbHV0aW9uIHtcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xuICAgIGRhdGFTb3VyY2U6IEFYUFJlcG9ydERhdGFTb3VyY2U7XG4gICAgc291cmNlOiAnbGF5b3V0JyB8ICdyZXBvcnQnIHwgJ25vbmUnOyAvLyBXaGVyZSB0aGUgZGF0YVNvdXJjZSBjYW1lIGZyb21cbn1cblxuLyoqXG4gKiBMYXlvdXQgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCByZXNvbHZlZCBkYXRhIHNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dEV4ZWN1dGlvbkNvbnRleHQge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgbGF5b3V0SWQ6IHN0cmluZztcbiAgICBkYXRhU291cmNlOiBBWFBSZXBvcnREYXRhU291cmNlO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cblxuZXhwb3J0IHR5cGUgQVhQRXhlY3V0aW9uUmVwb3J0UmVzdWx0ID1cbiAgICB8IHsgdHlwZTogJ3RhYmxlJywgaXRlbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10sIHRvdGFsOiBudW1iZXIgfVxuICAgIHwgeyB0eXBlOiAnY2hhcnQnLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9XG4gICAgfCB7IHR5cGU6ICdjYXJkcycsIGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIH1cbiAgICB8IHsgdHlwZTogJ2N1c3RvbScsIGRhdGE6IHVua25vd24gfTtcblxuXG5leHBvcnQgdHlwZSBBWFBFeGVjdXRpb25SZXBvcnRDb21tYW5kUmVzdWx0ID0gQVhQUmVwb3J0TGF5b3V0ICYgeyBkYXRhOiBBWFBFeGVjdXRpb25SZXBvcnRSZXN1bHQgfTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmQgZXh0ZW5kcyBBWFBDb21tYW5kPEFYUExheW91dEV4ZWN1dGlvbkNvbnRleHQsIEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQ+IHtcbn1cblxuLyoqXG4gKiBSZXBvcnQgZXhlY3V0aW9uIHN0YXR1cyBhbmQgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRFeGVjdXRpb25TdGF0dXMge1xuICAgIHJlcG9ydElkOiBzdHJpbmc7XG4gICAgbGF5b3V0SWQ6IHN0cmluZztcbiAgICBzdGF0dXM6ICdwZW5kaW5nJyB8ICdleGVjdXRpbmcnIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJyB8ICdjYW5jZWxsZWQnO1xuICAgIHN0YXJ0VGltZTogRGF0ZTtcbiAgICBlbmRUaW1lPzogRGF0ZTtcbiAgICBkdXJhdGlvbj86IG51bWJlcjsgLy8gbWlsbGlzZWNvbmRzXG4gICAgcmVjb3JkQ291bnQ/OiBudW1iZXI7XG4gICAgZXJyb3I/OiBBWFBSZXBvcnRFeGVjdXRpb25FcnJvcjtcbn1cblxuLyoqXG4gKiBEZXRhaWxlZCBlcnJvciBpbmZvcm1hdGlvbiBmb3IgcmVwb3J0IGV4ZWN1dGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydEV4ZWN1dGlvbkVycm9yIHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzdGFjaz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXBvcnQgZXhlY3V0aW9uIHJlcXVlc3Qgd2l0aCBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUmVwb3J0RXhlY3V0aW9uUmVxdWVzdCB7XG4gICAgcmVwb3J0SWQ6IHN0cmluZztcbiAgICBsYXlvdXRJZDogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIG9wdGlvbnM/OiBBWFBSZXBvcnRFeGVjdXRpb25PcHRpb25zO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJlcG9ydCBleGVjdXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnRFeGVjdXRpb25PcHRpb25zIHtcbiAgICB0aW1lb3V0PzogbnVtYmVyOyAvLyBtaWxsaXNlY29uZHNcbiAgICBwcmlvcml0eT86ICdsb3cnIHwgJ25vcm1hbCcgfCAnaGlnaCc7XG4gICAgY2FjaGU/OiBib29sZWFuO1xuICAgIGNhY2hlVGltZW91dD86IG51bWJlcjsgLy8gc2Vjb25kc1xufVxuXG4vLyNlbmRyZWdpb25cblxuXG4iXX0=","import { InjectionToken } from '@angular/core';\nexport const AXP_REPORT_DEFINITION_PROVIDER = new InjectionToken('AXP_REPORT_DEFINITION_PROVIDER', {\n factory: () => [],\n});\nexport const AXP_REPORT_CATEGORY_PROVIDER = new InjectionToken('AXP_REPORT_CATEGORY_PROVIDER', {\n factory: () => [],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9yZXBvcnRzL3JlcG9ydC1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQXFDLGdDQUFnQyxFQUFFO0lBQ25JLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQVlILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQyw4QkFBOEIsRUFBRTtJQUM3SCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtDQUNwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2F0ZWdvcnksIEFYUFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuL3JlcG9ydC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclxuICAgIHwgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXI+O1xuXG5leHBvcnQgY29uc3QgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlclRva2VuW10+KCdBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVInLCB7XG4gICAgZmFjdG9yeTogKCkgPT4gW10sXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIGdldExpc3QoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD47XG59XG5cblxuZXhwb3J0IHR5cGUgQVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlclRva2VuID1cbiAgICB8IEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJcbiAgICB8IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlQcm92aWRlcj47XG5cbmV4cG9ydCBjb25zdCBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXJUb2tlbltdPignQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+O1xuICAgIGdldEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnkgfCB1bmRlZmluZWQ+O1xufVxuXG5cblxuIl19","//#region ---- Imports ----\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER } from './report-definition.provider';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Optimized Report Definition Service\n *\n * Performance optimizations:\n * 1. Uses childrenCount to determine if category has children (no query needed)\n * 2. Uses itemsCount to determine if category has reports (no query needed)\n * 3. Aggressive caching prevents duplicate API calls\n * 4. Single pending request per resource prevents race conditions\n * 5. Lazy loading - only loads data when needed\n */\nexport class AXPReportDefinitionService {\n constructor() {\n //#region ---- Providers & Caches ----\n this.categoryProviders = inject(AXP_REPORT_CATEGORY_PROVIDER, { optional: true }) || [];\n this.definitionProviders = inject(AXP_REPORT_DEFINITION_PROVIDER, { optional: true }) || [];\n //#endregion\n //#region ---- Cache Storage ----\n /** Cache for categories by id - O(1) lookup */\n this.categoriesById = new Map();\n /** Cache for categories by parentId - O(1) lookup */\n this.categoriesByParentId = new Map();\n /** Cache for report definitions by categoryId - O(1) lookup */\n this.definitionsByCategory = new Map();\n /** Cache for individual report definitions by id - O(1) lookup */\n this.definitionsById = new Map();\n /** Track which provider index owns each category (by category ID) */\n this.categoryOwnership = new Map(); // Maps categoryId → provider index\n /** Pending API requests to prevent duplicate calls */\n this.pendingCategoriesRequests = new Map();\n this.pendingDefinitionsRequests = new Map();\n this.pendingReportRequests = new Map();\n }\n //#endregion\n //#region ---- Public API: Categories ----\n /**\n * Get categories by parentId with aggressive caching\n *\n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls during navigation\n *\n * @param parentId - Parent category ID (undefined = root categories)\n * @returns Array of categories with count metadata (childrenCount, itemsCount)\n */\n async getCategories(parentId) {\n // ✅ Fast path: Return cached result\n if (this.categoriesByParentId.has(parentId)) {\n return this.categoriesByParentId.get(parentId);\n }\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingCategoriesRequests.has(parentId)) {\n return this.pendingCategoriesRequests.get(parentId);\n }\n // ✅ Create single request and cache it\n const requestPromise = this.loadCategoriesFromProviders(parentId);\n this.pendingCategoriesRequests.set(parentId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single category by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getCategoryById(categoryId) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n // ✅ Search in cached parent-child lists\n for (const categories of this.categoriesByParentId.values()) {\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n this.categoriesById.set(categoryId, found);\n return found;\n }\n }\n // ✅ Load root categories if not loaded\n if (!this.categoriesByParentId.has(undefined)) {\n await this.getCategories();\n if (this.categoriesById.has(categoryId)) {\n return this.categoriesById.get(categoryId);\n }\n }\n // ✅ Breadth-first search through hierarchy\n return this.searchCategoryInHierarchy(categoryId);\n }\n /**\n * Get category path from root to specified category\n *\n * Optimization: Builds path using cached categories only\n */\n async getCategoriesPathById(categoryId) {\n const path = [];\n let currentCategoryId = categoryId;\n while (currentCategoryId) {\n const category = await this.getCategoryById(currentCategoryId);\n if (!category) {\n throw new Error(`Category '${currentCategoryId}' not found`);\n }\n path.unshift(category);\n currentCategoryId = category.parentId;\n }\n return path;\n }\n //#endregion\n //#region ---- Public API: Report Definitions ----\n /**\n * Get report definitions for a category with smart caching\n *\n * Optimization: Checks itemsCount before querying\n * - If itemsCount = 0, returns empty array (no API call)\n * - If itemsCount > 0, loads and caches reports\n * - Returns cached result on subsequent calls\n *\n * @param categoryId - Category ID to get reports from\n * @returns Array of report definitions\n */\n async getReportsByCategoryId(categoryId) {\n // ✅ Fast path: Return cached result\n if (this.definitionsByCategory.has(categoryId)) {\n return this.definitionsByCategory.get(categoryId);\n }\n // ✅ Smart optimization: Check itemsCount before querying\n const category = await this.getCategoryById(categoryId);\n if (category && category.itemsCount !== undefined && category.itemsCount === 0) {\n // Category has no reports - cache empty array and skip API call\n const emptyArray = [];\n this.definitionsByCategory.set(categoryId, emptyArray);\n return emptyArray;\n }\n // ✅ Prevent duplicate requests\n if (this.pendingDefinitionsRequests.has(categoryId)) {\n return this.pendingDefinitionsRequests.get(categoryId);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportsFromProviders(categoryId);\n this.pendingDefinitionsRequests.set(categoryId, requestPromise);\n return requestPromise;\n }\n /**\n * Get single report definition by ID with O(1) lookup\n *\n * Optimization: Uses Map for instant retrieval\n */\n async getReportById(id) {\n // ✅ Fast path: O(1) lookup in cache\n if (this.definitionsById.has(id)) {\n return this.definitionsById.get(id);\n }\n // ✅ Prevent duplicate requests\n if (this.pendingReportRequests.has(id)) {\n return this.pendingReportRequests.get(id);\n }\n // ✅ Load from providers\n const requestPromise = this.loadReportFromProviders(id);\n this.pendingReportRequests.set(id, requestPromise);\n return requestPromise;\n }\n /**\n * Get category ID containing a specific report\n *\n * Optimization: Searches cache first, loads on-demand if needed\n */\n async getCategoryIdByReportId(reportId) {\n // ✅ Search in cached reports\n for (const [categoryId, reports] of this.definitionsByCategory.entries()) {\n if (reports.some(report => report.id === reportId)) {\n return categoryId;\n }\n }\n // ✅ Try loading the report to find its category\n const report = await this.getReportById(reportId);\n if (report && report.categoryIds && report.categoryIds.length > 0) {\n return report.categoryIds[0]; // Return first category\n }\n return undefined;\n }\n /**\n * Get category path for a report\n */\n async getCategoriesPathByReportId(reportId) {\n const categoryId = await this.getCategoryIdByReportId(reportId);\n if (!categoryId) {\n throw new Error(`Report '${reportId}' not found in any category`);\n }\n return this.getCategoriesPathById(categoryId);\n }\n //#endregion\n //#region ---- Private: Data Loading ----\n /**\n * Load categories from providers and cache results\n *\n * Optimization: Tracks provider ownership to avoid unnecessary API calls\n * - For root (parentId = undefined): Query ALL providers\n * - For children: Only query the provider that owns the parent\n */\n async loadCategoriesFromProviders(parentId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.categoryProviders);\n const categories = [];\n // Determine which provider(s) to query\n const providerIndicesToQuery = parentId\n ? this.getProviderIndexForCategory(parentId)\n : null; // Root: query all providers\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const cats = await p.value.getList(parentId);\n if (Array.isArray(cats) && cats.length > 0) {\n categories.push(...cats);\n // ✅ Track ownership: This provider INDEX owns these categories\n cats.forEach(cat => this.categoryOwnership.set(cat.id, i));\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.categoriesByParentId.set(parentId, categories);\n categories.forEach(cat => this.categoriesById.set(cat.id, cat));\n return categories;\n }\n finally {\n this.pendingCategoriesRequests.delete(parentId);\n }\n }\n /**\n * Get the provider index that owns a specific category\n *\n * @returns Array with provider index, or null if ownership unknown (query all)\n */\n getProviderIndexForCategory(categoryId) {\n const ownerIndex = this.categoryOwnership.get(categoryId);\n if (ownerIndex !== undefined) {\n return [ownerIndex];\n }\n // Ownership unknown - will query all providers (fallback)\n return null;\n }\n /**\n * Load report definitions from providers and cache results\n *\n * Optimization: Only queries the provider that owns the category\n * Uses provider INDEX to match category provider with definition provider\n */\n async loadReportsFromProviders(categoryId) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n const definitions = [];\n // ✅ Smart routing: Get provider INDEX that owns this category\n const ownerIndex = this.categoryOwnership.get(categoryId);\n const providerIndicesToQuery = ownerIndex !== undefined ? [ownerIndex] : null;\n for (let i = 0; i < resolvedProviders.length; i++) {\n const p = resolvedProviders[i];\n // Skip if we have a specific provider index and this isn't it\n if (providerIndicesToQuery !== null && !providerIndicesToQuery.includes(i)) {\n continue;\n }\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const defs = await p.value.getList(categoryId);\n if (Array.isArray(defs)) {\n definitions.push(...defs);\n }\n }\n catch {\n // Continue on error - try other providers\n }\n }\n }\n // ✅ Cache results for fast subsequent access\n this.definitionsByCategory.set(categoryId, definitions);\n definitions.forEach(def => this.definitionsById.set(def.id, def));\n return definitions;\n }\n finally {\n this.pendingDefinitionsRequests.delete(categoryId);\n }\n }\n /**\n * Load single report from providers and cache result\n */\n async loadReportFromProviders(id) {\n try {\n const resolvedProviders = await Promise.allSettled(this.definitionProviders);\n // Try providers first (full report with layouts)\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getById === 'function') {\n try {\n const result = await p.value.getById(id);\n if (result) {\n this.definitionsById.set(id, result);\n return result;\n }\n }\n catch {\n // Continue on error\n }\n }\n }\n // Fallback: Search in cached reports\n for (const reports of this.definitionsByCategory.values()) {\n const found = reports.find(report => report.id === id);\n if (found) {\n this.definitionsById.set(id, found);\n return found;\n }\n }\n return undefined;\n }\n finally {\n this.pendingReportRequests.delete(id);\n }\n }\n /**\n * Breadth-first search through category hierarchy\n */\n async searchCategoryInHierarchy(categoryId) {\n const searchQueue = [undefined];\n const searched = new Set();\n while (searchQueue.length > 0) {\n const parentId = searchQueue.shift();\n if (searched.has(parentId))\n continue;\n searched.add(parentId);\n const categories = await this.getCategories(parentId);\n const found = categories.find(cat => cat.id === categoryId);\n if (found) {\n return found;\n }\n // ✅ Optimization: Only search children if childrenCount > 0\n for (const category of categories) {\n if (category.childrenCount > 0 && !searched.has(category.id)) {\n searchQueue.push(category.id);\n }\n }\n }\n return undefined;\n }\n //#endregion\n //#region ---- Cache Management ----\n /**\n * Check if category has children (uses cached count)\n */\n categoryHasChildren(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? category.childrenCount > 0 : false;\n }\n /**\n * Check if category has reports (uses cached count)\n */\n categoryHasReports(categoryId) {\n const category = this.categoriesById.get(categoryId);\n return category ? (category.itemsCount ?? 0) > 0 : false;\n }\n /**\n * Clear all caches\n */\n clearAllCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n /**\n * Clear categories cache only\n */\n clearCategoriesCache() {\n this.categoriesById.clear();\n this.categoriesByParentId.clear();\n this.categoryOwnership.clear();\n this.pendingCategoriesRequests.clear();\n }\n /**\n * Clear reports cache only\n */\n clearReportsCache() {\n this.definitionsByCategory.clear();\n this.definitionsById.clear();\n this.pendingDefinitionsRequests.clear();\n this.pendingReportRequests.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportDefinitionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LWRlZmluaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRTVHLFlBQVk7QUFFWjs7Ozs7Ozs7O0dBU0c7QUFJSCxNQUFNLE9BQU8sMEJBQTBCO0lBSHZDO1FBSUksMENBQTBDO1FBRXpCLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRix3QkFBbUIsR0FBRyxNQUFNLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEcsWUFBWTtRQUVaLHFDQUFxQztRQUVyQywrQ0FBK0M7UUFDdkMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQUU5RCxxREFBcUQ7UUFDN0MseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQTJDLENBQUM7UUFFbEYsK0RBQStEO1FBQ3ZELDBCQUFxQixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBRXpFLGtFQUFrRTtRQUMxRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO1FBRWpFLHFFQUFxRTtRQUM3RCxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQyxDQUFDLG1DQUFtQztRQUUxRixzREFBc0Q7UUFDOUMsOEJBQXlCLEdBQUcsSUFBSSxHQUFHLEVBQW9ELENBQUM7UUFDeEYsK0JBQTBCLEdBQUcsSUFBSSxHQUFHLEVBQTBDLENBQUM7UUFDL0UsMEJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQW9ELENBQUM7S0FzYS9GO0lBcGFHLFlBQVk7SUFFWiw4Q0FBOEM7SUFFOUM7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQWlCO1FBQ2pDLG9DQUFvQztRQUNwQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7UUFDcEQsQ0FBQztRQUVELHVEQUF1RDtRQUN2RCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7UUFDekQsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFN0QsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFrQjtRQUNwQyxvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELHdDQUF3QztRQUN4QyxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBQzVELElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1FBQ0wsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0wsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxVQUFrQjtRQUMxQyxNQUFNLElBQUksR0FBd0IsRUFBRSxDQUFDO1FBQ3JDLElBQUksaUJBQWlCLEdBQXVCLFVBQVUsQ0FBQztRQUV2RCxPQUFPLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxpQkFBaUIsYUFBYSxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkIsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQVk7SUFFWixzREFBc0Q7SUFFdEQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxVQUFrQjtRQUMzQyxvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBRSxDQUFDO1FBQ3ZELENBQUM7UUFFRCx5REFBeUQ7UUFDekQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0UsZ0VBQWdFO1lBQ2hFLE1BQU0sVUFBVSxHQUEwQixFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkQsT0FBTyxVQUFVLENBQUM7UUFDdEIsQ0FBQztRQUVELCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7UUFDNUQsQ0FBQztRQUVELHdCQUF3QjtRQUN4QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFaEUsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQVU7UUFDMUIsb0NBQW9DO1FBQ3BDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDO1FBQy9DLENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRW5ELE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQWdCO1FBQzFDLDZCQUE2QjtRQUM3QixLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdkUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLFVBQVUsQ0FBQztZQUN0QixDQUFDO1FBQ0wsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7UUFDMUQsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxRQUFnQjtRQUM5QyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsUUFBUSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsWUFBWTtJQUVaLDZDQUE2QztJQUU3Qzs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUMsMkJBQTJCLENBQUMsUUFBaUI7UUFDdkQsSUFBSSxDQUFDO1lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0UsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztZQUUzQyx1Q0FBdUM7WUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxRQUFRO2dCQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLDRCQUE0QjtZQUV4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUvQiw4REFBOEQ7Z0JBQzlELElBQUksc0JBQXNCLEtBQUssSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pFLFNBQVM7Z0JBQ2IsQ0FBQztnQkFFRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDL0UsSUFBSSxDQUFDO3dCQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzdDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUN6QyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7NEJBRXpCLCtEQUErRDs0QkFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvRCxDQUFDO29CQUNMLENBQUM7b0JBQUMsTUFBTSxDQUFDO3dCQUNMLDBDQUEwQztvQkFDOUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELDZDQUE2QztZQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNwRCxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRWhFLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNQLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssMkJBQTJCLENBQUMsVUFBa0I7UUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELDBEQUEwRDtRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxLQUFLLENBQUMsd0JBQXdCLENBQUMsVUFBa0I7UUFDckQsSUFBSSxDQUFDO1lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDN0UsTUFBTSxXQUFXLEdBQTBCLEVBQUUsQ0FBQztZQUU5Qyw4REFBOEQ7WUFDOUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxNQUFNLHNCQUFzQixHQUFHLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUU5RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUvQiw4REFBOEQ7Z0JBQzlELElBQUksc0JBQXNCLEtBQUssSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pFLFNBQVM7Z0JBQ2IsQ0FBQztnQkFFRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDL0UsSUFBSSxDQUFDO3dCQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQy9DLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUN0QixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7d0JBQzlCLENBQUM7b0JBQ0wsQ0FBQztvQkFBQyxNQUFNLENBQUM7d0JBQ0wsMENBQTBDO29CQUM5QyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBRUQsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFbEUsT0FBTyxXQUFXLENBQUM7UUFDdkIsQ0FBQztnQkFBUyxDQUFDO1lBQ1AsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLHVCQUF1QixDQUFDLEVBQVU7UUFDNUMsSUFBSSxDQUFDO1lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFN0UsaURBQWlEO1lBQ2pELEtBQUssTUFBTSxDQUFDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9FLElBQUksQ0FBQzt3QkFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDOzRCQUNULElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQzs0QkFDckMsT0FBTyxNQUFNLENBQUM7d0JBQ2xCLENBQUM7b0JBQ0wsQ0FBQztvQkFBQyxNQUFNLENBQUM7d0JBQ0wsb0JBQW9CO29CQUN4QixDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBRUQscUNBQXFDO1lBQ3JDLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDcEMsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDTCxDQUFDO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztnQkFBUyxDQUFDO1lBQ1AsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLHlCQUF5QixDQUFDLFVBQWtCO1FBQ3RELE1BQU0sV0FBVyxHQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBRS9DLE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFHLENBQUM7WUFDdEMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFBRSxTQUFTO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBRTVELElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUVELDREQUE0RDtZQUM1RCxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxZQUFZO0lBRVosd0NBQXdDO0lBRXhDOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsVUFBa0I7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsVUFBa0I7UUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNiLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0EvYlEsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FGdkIsTUFBTTs7NEZBRVQsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBSZXBvcnRDYXRlZ29yeSwgQVhQUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4vcmVwb3J0LnR5cGVzJztcbmltcG9ydCB7IEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiB9IGZyb20gJy4vcmVwb3J0LWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBPcHRpbWl6ZWQgUmVwb3J0IERlZmluaXRpb24gU2VydmljZVxuICogXG4gKiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zOlxuICogMS4gVXNlcyBjaGlsZHJlbkNvdW50IHRvIGRldGVybWluZSBpZiBjYXRlZ29yeSBoYXMgY2hpbGRyZW4gKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDIuIFVzZXMgaXRlbXNDb3VudCB0byBkZXRlcm1pbmUgaWYgY2F0ZWdvcnkgaGFzIHJlcG9ydHMgKG5vIHF1ZXJ5IG5lZWRlZClcbiAqIDMuIEFnZ3Jlc3NpdmUgY2FjaGluZyBwcmV2ZW50cyBkdXBsaWNhdGUgQVBJIGNhbGxzXG4gKiA0LiBTaW5nbGUgcGVuZGluZyByZXF1ZXN0IHBlciByZXNvdXJjZSBwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnNcbiAqIDUuIExhenkgbG9hZGluZyAtIG9ubHkgbG9hZHMgZGF0YSB3aGVuIG5lZWRlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnREZWZpbml0aW9uU2VydmljZSB7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBQcm92aWRlcnMgJiBDYWNoZXMgICAtLS0tXG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZpbml0aW9uUHJvdmlkZXJzID0gaW5qZWN0KEFYUF9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KSB8fCBbXTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDYWNoZSBTdG9yYWdlICAgLS0tLVxuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFYUFJlcG9ydENhdGVnb3J5PigpO1xuXG4gICAgLyoqIENhY2hlIGZvciBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3JpZXNCeVBhcmVudElkID0gbmV3IE1hcDxzdHJpbmcgfCB1bmRlZmluZWQsIEFYUFJlcG9ydENhdGVnb3J5W10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIHJlcG9ydCBkZWZpbml0aW9ucyBieSBjYXRlZ29yeUlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlDYXRlZ29yeSA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uW10+KCk7XG5cbiAgICAvKiogQ2FjaGUgZm9yIGluZGl2aWR1YWwgcmVwb3J0IGRlZmluaXRpb25zIGJ5IGlkIC0gTygxKSBsb29rdXAgKi9cbiAgICBwcml2YXRlIGRlZmluaXRpb25zQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBWFBSZXBvcnREZWZpbml0aW9uPigpO1xuXG4gICAgLyoqIFRyYWNrIHdoaWNoIHByb3ZpZGVyIGluZGV4IG93bnMgZWFjaCBjYXRlZ29yeSAoYnkgY2F0ZWdvcnkgSUQpICovXG4gICAgcHJpdmF0ZSBjYXRlZ29yeU93bmVyc2hpcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7IC8vIE1hcHMgY2F0ZWdvcnlJZCDihpIgcHJvdmlkZXIgaW5kZXhcblxuICAgIC8qKiBQZW5kaW5nIEFQSSByZXF1ZXN0cyB0byBwcmV2ZW50IGR1cGxpY2F0ZSBjYWxscyAqL1xuICAgIHByaXZhdGUgcGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cyA9IG5ldyBNYXA8c3RyaW5nIHwgdW5kZWZpbmVkLCBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+PigpO1xuICAgIHByaXZhdGUgcGVuZGluZ1JlcG9ydFJlcXVlc3RzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4+KCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIEFQSTogQ2F0ZWdvcmllcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yaWVzIGJ5IHBhcmVudElkIHdpdGggYWdncmVzc2l2ZSBjYWNoaW5nXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBSZXR1cm5zIGNhY2hlZCByZXN1bHQgaW1tZWRpYXRlbHkgaWYgYXZhaWxhYmxlLFxuICAgICAqIHByZXZlbnRpbmcgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIGR1cmluZyBuYXZpZ2F0aW9uXG4gICAgICogXG4gICAgICogQHBhcmFtIHBhcmVudElkIC0gUGFyZW50IGNhdGVnb3J5IElEICh1bmRlZmluZWQgPSByb290IGNhdGVnb3JpZXMpXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgY2F0ZWdvcmllcyB3aXRoIGNvdW50IG1ldGFkYXRhIChjaGlsZHJlbkNvdW50LCBpdGVtc0NvdW50KVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXMocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHBhcmVudElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuZ2V0KHBhcmVudElkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHM6IFJldHVybiBwZW5kaW5nIHByb21pc2VcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5oYXMocGFyZW50SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmdldChwYXJlbnRJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIENyZWF0ZSBzaW5nbGUgcmVxdWVzdCBhbmQgY2FjaGUgaXRcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5zZXQocGFyZW50SWQsIHJlcXVlc3RQcm9taXNlKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHNpbmdsZSBjYXRlZ29yeSBieSBJRCB3aXRoIE8oMSkgbG9va3VwXG4gICAgICogXG4gICAgICogT3B0aW1pemF0aW9uOiBVc2VzIE1hcCBmb3IgaW5zdGFudCByZXRyaWV2YWwsIGZhbGxzIGJhY2sgdG9cbiAgICAgKiBzZWFyY2hpbmcgY2FjaGUsIHRoZW4gcHJvdmlkZXJzIGlmIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3J5QnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIOKchSBGYXN0IHBhdGg6IE8oMSkgbG9va3VwIGluIGNhY2hlXG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXNCeUlkLmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcGFyZW50LWNoaWxkIGxpc3RzXG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcmllcyBvZiB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmlkID09PSBjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWQuc2V0KGNhdGVnb3J5SWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgTG9hZCByb290IGNhdGVnb3JpZXMgaWYgbm90IGxvYWRlZFxuICAgICAgICBpZiAoIXRoaXMuY2F0ZWdvcmllc0J5UGFyZW50SWQuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllc0J5SWQuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIEJyZWFkdGgtZmlyc3Qgc2VhcmNoIHRocm91Z2ggaGllcmFyY2h5XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaENhdGVnb3J5SW5IaWVyYXJjaHkoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNhdGVnb3J5IHBhdGggZnJvbSByb290IHRvIHNwZWNpZmllZCBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQnVpbGRzIHBhdGggdXNpbmcgY2FjaGVkIGNhdGVnb3JpZXMgb25seVxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgY29uc3QgcGF0aDogQVhQUmVwb3J0Q2F0ZWdvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudENhdGVnb3J5SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGNhdGVnb3J5SWQ7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRDYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGN1cnJlbnRDYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhdGVnb3J5ICcke2N1cnJlbnRDYXRlZ29yeUlkfScgbm90IGZvdW5kYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnVuc2hpZnQoY2F0ZWdvcnkpO1xuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5SWQgPSBjYXRlZ29yeS5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgQVBJOiBSZXBvcnQgRGVmaW5pdGlvbnMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBHZXQgcmVwb3J0IGRlZmluaXRpb25zIGZvciBhIGNhdGVnb3J5IHdpdGggc21hcnQgY2FjaGluZ1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogQ2hlY2tzIGl0ZW1zQ291bnQgYmVmb3JlIHF1ZXJ5aW5nXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID0gMCwgcmV0dXJucyBlbXB0eSBhcnJheSAobm8gQVBJIGNhbGwpXG4gICAgICogLSBJZiBpdGVtc0NvdW50ID4gMCwgbG9hZHMgYW5kIGNhY2hlcyByZXBvcnRzXG4gICAgICogLSBSZXR1cm5zIGNhY2hlZCByZXN1bHQgb24gc3Vic2VxdWVudCBjYWxsc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkIC0gQ2F0ZWdvcnkgSUQgdG8gZ2V0IHJlcG9ydHMgZnJvbVxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHJlcG9ydCBkZWZpbml0aW9uc1xuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydHNCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgLy8g4pyFIEZhc3QgcGF0aDogUmV0dXJuIGNhY2hlZCByZXN1bHRcbiAgICAgICAgaWYgKHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmhhcyhjYXRlZ29yeUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmdldChjYXRlZ29yeUlkKSE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgU21hcnQgb3B0aW1pemF0aW9uOiBDaGVjayBpdGVtc0NvdW50IGJlZm9yZSBxdWVyeWluZ1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpO1xuICAgICAgICBpZiAoY2F0ZWdvcnkgJiYgY2F0ZWdvcnkuaXRlbXNDb3VudCAhPT0gdW5kZWZpbmVkICYmIGNhdGVnb3J5Lml0ZW1zQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIC8vIENhdGVnb3J5IGhhcyBubyByZXBvcnRzIC0gY2FjaGUgZW1wdHkgYXJyYXkgYW5kIHNraXAgQVBJIGNhbGxcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5QXJyYXk6IEFYUFJlcG9ydERlZmluaXRpb25bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5Q2F0ZWdvcnkuc2V0KGNhdGVnb3J5SWQsIGVtcHR5QXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuaGFzKGNhdGVnb3J5SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5nZXQoY2F0ZWdvcnlJZCkhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g4pyFIExvYWQgZnJvbSBwcm92aWRlcnNcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSB0aGlzLmxvYWRSZXBvcnRzRnJvbVByb3ZpZGVycyhjYXRlZ29yeUlkKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5zZXQoY2F0ZWdvcnlJZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc2luZ2xlIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElEIHdpdGggTygxKSBsb29rdXBcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IFVzZXMgTWFwIGZvciBpbnN0YW50IHJldHJpZXZhbFxuICAgICAqL1xuICAgIGFzeW5jIGdldFJlcG9ydEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyDinIUgRmFzdCBwYXRoOiBPKDEpIGxvb2t1cCBpbiBjYWNoZVxuICAgICAgICBpZiAodGhpcy5kZWZpbml0aW9uc0J5SWQuaGFzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmdldChpZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgUHJldmVudCBkdXBsaWNhdGUgcmVxdWVzdHNcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZXBvcnRSZXF1ZXN0cy5nZXQoaWQpITtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOKchSBMb2FkIGZyb20gcHJvdmlkZXJzXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQcm9taXNlID0gdGhpcy5sb2FkUmVwb3J0RnJvbVByb3ZpZGVycyhpZCk7XG4gICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLnNldChpZCwgcmVxdWVzdFByb21pc2UpO1xuXG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY2F0ZWdvcnkgSUQgY29udGFpbmluZyBhIHNwZWNpZmljIHJlcG9ydFxuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogU2VhcmNoZXMgY2FjaGUgZmlyc3QsIGxvYWRzIG9uLWRlbWFuZCBpZiBuZWVkZWRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRDYXRlZ29yeUlkQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgLy8g4pyFIFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICBmb3IgKGNvbnN0IFtjYXRlZ29yeUlkLCByZXBvcnRzXSBvZiB0aGlzLmRlZmluaXRpb25zQnlDYXRlZ29yeS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChyZXBvcnRzLnNvbWUocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gcmVwb3J0SWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5SWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDinIUgVHJ5IGxvYWRpbmcgdGhlIHJlcG9ydCB0byBmaW5kIGl0cyBjYXRlZ29yeVxuICAgICAgICBjb25zdCByZXBvcnQgPSBhd2FpdCB0aGlzLmdldFJlcG9ydEJ5SWQocmVwb3J0SWQpO1xuICAgICAgICBpZiAocmVwb3J0ICYmIHJlcG9ydC5jYXRlZ29yeUlkcyAmJiByZXBvcnQuY2F0ZWdvcnlJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcG9ydC5jYXRlZ29yeUlkc1swXTsgLy8gUmV0dXJuIGZpcnN0IGNhdGVnb3J5XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjYXRlZ29yeSBwYXRoIGZvciBhIHJlcG9ydFxuICAgICAqL1xuICAgIGFzeW5jIGdldENhdGVnb3JpZXNQYXRoQnlSZXBvcnRJZChyZXBvcnRJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeVtdPiB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SWQgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5SWRCeVJlcG9ydElkKHJlcG9ydElkKTtcbiAgICAgICAgaWYgKCFjYXRlZ29yeUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9ydCAnJHtyZXBvcnRJZH0nIG5vdCBmb3VuZCBpbiBhbnkgY2F0ZWdvcnlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yaWVzUGF0aEJ5SWQoY2F0ZWdvcnlJZCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFByaXZhdGU6IERhdGEgTG9hZGluZyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIExvYWQgY2F0ZWdvcmllcyBmcm9tIHByb3ZpZGVycyBhbmQgY2FjaGUgcmVzdWx0c1xuICAgICAqIFxuICAgICAqIE9wdGltaXphdGlvbjogVHJhY2tzIHByb3ZpZGVyIG93bmVyc2hpcCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBBUEkgY2FsbHNcbiAgICAgKiAtIEZvciByb290IChwYXJlbnRJZCA9IHVuZGVmaW5lZCk6IFF1ZXJ5IEFMTCBwcm92aWRlcnNcbiAgICAgKiAtIEZvciBjaGlsZHJlbjogT25seSBxdWVyeSB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBwYXJlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRDYXRlZ29yaWVzRnJvbVByb3ZpZGVycyhwYXJlbnRJZD86IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0Q2F0ZWdvcnlbXT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5jYXRlZ29yeVByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzOiBBWFBSZXBvcnRDYXRlZ29yeVtdID0gW107XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBwcm92aWRlcihzKSB0byBxdWVyeVxuICAgICAgICAgICAgY29uc3QgcHJvdmlkZXJJbmRpY2VzVG9RdWVyeSA9IHBhcmVudElkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShwYXJlbnRJZClcbiAgICAgICAgICAgICAgICA6IG51bGw7IC8vIFJvb3Q6IHF1ZXJ5IGFsbCBwcm92aWRlcnNcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSByZXNvbHZlZFByb3ZpZGVyc1tpXTtcblxuICAgICAgICAgICAgICAgIC8vIFNraXAgaWYgd2UgaGF2ZSBhIHNwZWNpZmljIHByb3ZpZGVyIGluZGV4IGFuZCB0aGlzIGlzbid0IGl0XG4gICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgIT09IG51bGwgJiYgIXByb3ZpZGVySW5kaWNlc1RvUXVlcnkuaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldExpc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhdHMgPSBhd2FpdCBwLnZhbHVlLmdldExpc3QocGFyZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2F0cykgJiYgY2F0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKC4uLmNhdHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g4pyFIFRyYWNrIG93bmVyc2hpcDogVGhpcyBwcm92aWRlciBJTkRFWCBvd25zIHRoZXNlIGNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRzLmZvckVhY2goY2F0ID0+IHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuc2V0KGNhdC5pZCwgaSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGVycm9yIC0gdHJ5IG90aGVyIHByb3ZpZGVyc1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyDinIUgQ2FjaGUgcmVzdWx0cyBmb3IgZmFzdCBzdWJzZXF1ZW50IGFjY2Vzc1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlQYXJlbnRJZC5zZXQocGFyZW50SWQsIGNhdGVnb3JpZXMpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKGNhdCA9PiB0aGlzLmNhdGVnb3JpZXNCeUlkLnNldChjYXQuaWQsIGNhdCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NhdGVnb3JpZXNSZXF1ZXN0cy5kZWxldGUocGFyZW50SWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwcm92aWRlciBpbmRleCB0aGF0IG93bnMgYSBzcGVjaWZpYyBjYXRlZ29yeVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFycmF5IHdpdGggcHJvdmlkZXIgaW5kZXgsIG9yIG51bGwgaWYgb3duZXJzaGlwIHVua25vd24gKHF1ZXJ5IGFsbClcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByb3ZpZGVySW5kZXhGb3JDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBudW1iZXJbXSB8IG51bGwge1xuICAgICAgICBjb25zdCBvd25lckluZGV4ID0gdGhpcy5jYXRlZ29yeU93bmVyc2hpcC5nZXQoY2F0ZWdvcnlJZCk7XG5cbiAgICAgICAgaWYgKG93bmVySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtvd25lckluZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE93bmVyc2hpcCB1bmtub3duIC0gd2lsbCBxdWVyeSBhbGwgcHJvdmlkZXJzIChmYWxsYmFjaylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZCByZXBvcnQgZGVmaW5pdGlvbnMgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdHNcbiAgICAgKiBcbiAgICAgKiBPcHRpbWl6YXRpb246IE9ubHkgcXVlcmllcyB0aGUgcHJvdmlkZXIgdGhhdCBvd25zIHRoZSBjYXRlZ29yeVxuICAgICAqIFVzZXMgcHJvdmlkZXIgSU5ERVggdG8gbWF0Y2ggY2F0ZWdvcnkgcHJvdmlkZXIgd2l0aCBkZWZpbml0aW9uIHByb3ZpZGVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkUmVwb3J0c0Zyb21Qcm92aWRlcnMoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uW10+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJvdmlkZXJzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHRoaXMuZGVmaW5pdGlvblByb3ZpZGVycyk7XG4gICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uczogQVhQUmVwb3J0RGVmaW5pdGlvbltdID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBTbWFydCByb3V0aW5nOiBHZXQgcHJvdmlkZXIgSU5ERVggdGhhdCBvd25zIHRoaXMgY2F0ZWdvcnlcbiAgICAgICAgICAgIGNvbnN0IG93bmVySW5kZXggPSB0aGlzLmNhdGVnb3J5T3duZXJzaGlwLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVySW5kaWNlc1RvUXVlcnkgPSBvd25lckluZGV4ICE9PSB1bmRlZmluZWQgPyBbb3duZXJJbmRleF0gOiBudWxsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc29sdmVkUHJvdmlkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHJlc29sdmVkUHJvdmlkZXJzW2ldO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpZiB3ZSBoYXZlIGEgc3BlY2lmaWMgcHJvdmlkZXIgaW5kZXggYW5kIHRoaXMgaXNuJ3QgaXRcbiAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJJbmRpY2VzVG9RdWVyeSAhPT0gbnVsbCAmJiAhcHJvdmlkZXJJbmRpY2VzVG9RdWVyeS5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnICYmIHAudmFsdWUgJiYgdHlwZW9mIHAudmFsdWUuZ2V0TGlzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmcyA9IGF3YWl0IHAudmFsdWUuZ2V0TGlzdChjYXRlZ29yeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlZnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbnMucHVzaCguLi5kZWZzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBvbiBlcnJvciAtIHRyeSBvdGhlciBwcm92aWRlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g4pyFIENhY2hlIHJlc3VsdHMgZm9yIGZhc3Qgc3Vic2VxdWVudCBhY2Nlc3NcbiAgICAgICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnNldChjYXRlZ29yeUlkLCBkZWZpbml0aW9ucyk7XG4gICAgICAgICAgICBkZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoZGVmLmlkLCBkZWYpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb25zO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nRGVmaW5pdGlvbnNSZXF1ZXN0cy5kZWxldGUoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHNpbmdsZSByZXBvcnQgZnJvbSBwcm92aWRlcnMgYW5kIGNhY2hlIHJlc3VsdFxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgbG9hZFJlcG9ydEZyb21Qcm92aWRlcnMoaWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm92aWRlcnMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGhpcy5kZWZpbml0aW9uUHJvdmlkZXJzKTtcblxuICAgICAgICAgICAgLy8gVHJ5IHByb3ZpZGVycyBmaXJzdCAoZnVsbCByZXBvcnQgd2l0aCBsYXlvdXRzKVxuICAgICAgICAgICAgZm9yIChjb25zdCBwIG9mIHJlc29sdmVkUHJvdmlkZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiBwLnZhbHVlICYmIHR5cGVvZiBwLnZhbHVlLmdldEJ5SWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHAudmFsdWUuZ2V0QnlJZChpZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbml0aW9uc0J5SWQuc2V0KGlkLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmFsbGJhY2s6IFNlYXJjaCBpbiBjYWNoZWQgcmVwb3J0c1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXBvcnRzIG9mIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSByZXBvcnRzLmZpbmQocmVwb3J0ID0+IHJlcG9ydC5pZCA9PT0gaWQpO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluaXRpb25zQnlJZC5zZXQoaWQsIGZvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1JlcG9ydFJlcXVlc3RzLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCcmVhZHRoLWZpcnN0IHNlYXJjaCB0aHJvdWdoIGNhdGVnb3J5IGhpZXJhcmNoeVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgc2VhcmNoQ2F0ZWdvcnlJbkhpZXJhcmNoeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFF1ZXVlOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdID0gW3VuZGVmaW5lZF07XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkID0gbmV3IFNldDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAgICAgd2hpbGUgKHNlYXJjaFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gc2VhcmNoUXVldWUuc2hpZnQoKSE7XG4gICAgICAgICAgICBpZiAoc2VhcmNoZWQuaGFzKHBhcmVudElkKSkgY29udGludWU7XG4gICAgICAgICAgICBzZWFyY2hlZC5hZGQocGFyZW50SWQpO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yaWVzKHBhcmVudElkKTtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gY2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuaWQgPT09IGNhdGVnb3J5SWQpO1xuXG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBPcHRpbWl6YXRpb246IE9ubHkgc2VhcmNoIGNoaWxkcmVuIGlmIGNoaWxkcmVuQ291bnQgPiAwXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgJiYgIXNlYXJjaGVkLmhhcyhjYXRlZ29yeS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoUXVldWUucHVzaChjYXRlZ29yeS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ2FjaGUgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGNhdGVnb3J5IGhhcyBjaGlsZHJlbiAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNDaGlsZHJlbihjYXRlZ29yeUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNCeUlkLmdldChjYXRlZ29yeUlkKTtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5ID8gY2F0ZWdvcnkuY2hpbGRyZW5Db3VudCA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYXRlZ29yeSBoYXMgcmVwb3J0cyAodXNlcyBjYWNoZWQgY291bnQpXG4gICAgICovXG4gICAgY2F0ZWdvcnlIYXNSZXBvcnRzKGNhdGVnb3J5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllc0J5SWQuZ2V0KGNhdGVnb3J5SWQpO1xuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgPyAoY2F0ZWdvcnkuaXRlbXNDb3VudCA/PyAwKSA+IDAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgY2FjaGVzXG4gICAgICovXG4gICAgY2xlYXJBbGxDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBjYXRlZ29yaWVzIGNhY2hlIG9ubHlcbiAgICAgKi9cbiAgICBjbGVhckNhdGVnb3JpZXNDYWNoZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzQnlJZC5jbGVhcigpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNCeVBhcmVudElkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlPd25lcnNoaXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2F0ZWdvcmllc1JlcXVlc3RzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXIgcmVwb3J0cyBjYWNoZSBvbmx5XG4gICAgICovXG4gICAgY2xlYXJSZXBvcnRzQ2FjaGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUNhdGVnb3J5LmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZGVmaW5pdGlvbnNCeUlkLmNsZWFyKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmluaXRpb25zUmVxdWVzdHMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5wZW5kaW5nUmVwb3J0UmVxdWVzdHMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuXG4iXX0=","export function AXPieChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXBarChartReportMapper(data) {\n return Object.entries(data).map(([key, value]) => ({\n id: key,\n label: key,\n value: value,\n }));\n}\nexport function AXLineChartReportMapper(data) {\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return [];\n }\n const dataPoints = entries.map(([key, value]) => ({\n x: key,\n y: value,\n }));\n return [\n {\n id: 'series-1',\n label: 'Data Series',\n tooltipLabel: 'Countries Info',\n lineColor: '#d81159',\n fillColor: '#d8115920',\n data: dataPoints,\n },\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL3JlcG9ydHMvcmVwb3J0LW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBNEI7SUFDakUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELEVBQUUsRUFBRSxHQUFHO1FBQ1AsS0FBSyxFQUFFLEdBQUc7UUFDVixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUE0QjtJQUNqRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsRUFBRSxFQUFFLEdBQUc7UUFDUCxLQUFLLEVBQUUsR0FBRztRQUNWLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQTRCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDLEVBQUUsR0FBRztRQUNOLENBQUMsRUFBRSxLQUFLO0tBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0w7WUFDRSxFQUFFLEVBQUUsVUFBVTtZQUNkLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsSUFBSSxFQUFFLFVBQVU7U0FDakI7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFyQ2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2Jhci1jaGFydCc7XG5pbXBvcnQgeyBBWERvbnV0Q2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2RvbnV0LWNoYXJ0JztcbmltcG9ydCB7IEFYTGluZUNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9saW5lLWNoYXJ0JztcblxuZXhwb3J0IGZ1bmN0aW9uIEFYUGllQ2hhcnRSZXBvcnRNYXBwZXIoZGF0YTogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IEFYRG9udXRDaGFydFZhbHVlIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRhdGEpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIGlkOiBrZXksXG4gICAgbGFiZWw6IGtleSxcbiAgICB2YWx1ZTogdmFsdWUsXG4gIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIoZGF0YTogUmVjb3JkPHN0cmluZywgbnVtYmVyPik6IEFYQmFyQ2hhcnRWYWx1ZSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkYXRhKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBpZDoga2V5LFxuICAgIGxhYmVsOiBrZXksXG4gICAgdmFsdWU6IHZhbHVlLFxuICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBWExpbmVDaGFydFJlcG9ydE1hcHBlcihkYXRhOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KTogQVhMaW5lQ2hhcnRWYWx1ZSB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhkYXRhKTtcbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGRhdGFQb2ludHMgPSBlbnRyaWVzLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHg6IGtleSxcbiAgICB5OiB2YWx1ZSxcbiAgfSkpO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgaWQ6ICdzZXJpZXMtMScsXG4gICAgICBsYWJlbDogJ0RhdGEgU2VyaWVzJyxcbiAgICAgIHRvb2x0aXBMYWJlbDogJ0NvdW50cmllcyBJbmZvJyxcbiAgICAgIGxpbmVDb2xvcjogJyNkODExNTknLFxuICAgICAgZmlsbENvbG9yOiAnI2Q4MTE1OTIwJyxcbiAgICAgIGRhdGE6IGRhdGFQb2ludHMsXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==","import { AXP_REPORT_DEFINITION_PROVIDER, AXP_REPORT_CATEGORY_PROVIDER } from '../../reports';\nimport { AXPQueryService } from '@acorex/platform/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.report.name}`;\n }\n async getList(categoryId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportDefinitionProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportDefinitionProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_DEFINITION_PROVIDER = {\n provide: AXP_REPORT_DEFINITION_PROVIDER,\n useClass: AXMReportDefinitionProvider,\n multi: true,\n};\n// --- Category Provider ---\nexport class AXMReportCategoryProvider {\n constructor() {\n this.queryService = inject(AXPQueryService);\n this.entityName = `${RootConfig.module.name}.${RootConfig.entities.category.name}`;\n }\n async getList(parentId) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n // Returning empty array to avoid duplicate API calls\n console.warn('AXMReportCategoryProvider.getList is deprecated. Use API providers instead.');\n return [];\n }\n async getById(id) {\n // Note: This provider is now deprecated in favor of API providers\n // that use cached data from the category API response\n console.warn('AXMReportCategoryProvider.getById is deprecated. Use API providers instead.');\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportCategoryProvider, decorators: [{\n type: Injectable\n }] });\nexport const AXM_REPORT_CATEGORY_PROVIDER = {\n provide: AXP_REPORT_CATEGORY_PROVIDER,\n useClass: AXMReportCategoryProvider,\n multi: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9ELDhCQUE4QixFQUFnRCw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3TCxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBS3pDLE1BQU0sT0FBTywyQkFBMkI7SUFEeEM7UUFFWSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxlQUFVLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQWdCdkY7SUFkRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQWtCO1FBQzVCLGtFQUFrRTtRQUNsRSxzREFBc0Q7UUFDdEQscURBQXFEO1FBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUM5RixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDcEIsa0VBQWtFO1FBQ2xFLHNEQUFzRDtRQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDLCtFQUErRSxDQUFDLENBQUM7UUFDOUYsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzsrR0FqQlEsMkJBQTJCO21IQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7O0FBcUJYLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzFDLE9BQU8sRUFBRSw4QkFBOEI7SUFDdkMsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRiw2QkFBNkI7QUFFN0IsTUFBTSxPQUFPLHlCQUF5QjtJQUR0QztRQUVZLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0tBZ0J6RjtJQWRHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBaUI7UUFDM0Isa0VBQWtFO1FBQ2xFLHNEQUFzRDtRQUN0RCxxREFBcUQ7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUNwQixrRUFBa0U7UUFDbEUsc0RBQXNEO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsNkVBQTZFLENBQUMsQ0FBQztRQUM1RixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQWpCUSx5QkFBeUI7bUhBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVTs7QUFxQlgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDeEMsT0FBTyxFQUFFLDRCQUE0QjtJQUNyQyxRQUFRLEVBQUUseUJBQXlCO0lBQ25DLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFJlcG9ydERlZmluaXRpb24sIEFYUFJlcG9ydERlZmluaXRpb25Qcm92aWRlciwgQVhQX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLCBBWFBSZXBvcnRDYXRlZ29yeVByb3ZpZGVyLCBBWFBSZXBvcnRDYXRlZ29yeSwgQVhQX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL3JlcG9ydHMnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZFNlcnZpY2UsIEFYUFF1ZXJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBQYWdlZExpc3RSZXN1bHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBSZXBvcnREZWZpbml0aW9uUHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5uYW1lfWA7XG5cbiAgICBhc3luYyBnZXRMaXN0KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8QVhQUmVwb3J0RGVmaW5pdGlvbltdPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgLy8gUmV0dXJuaW5nIGVtcHR5IGFycmF5IHRvIGF2b2lkIGR1cGxpY2F0ZSBBUEkgY2FsbHNcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnREZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIC8vIE5vdGU6IFRoaXMgcHJvdmlkZXIgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgQVBJIHByb3ZpZGVyc1xuICAgICAgICAvLyB0aGF0IHVzZSBjYWNoZWQgZGF0YSBmcm9tIHRoZSBjYXRlZ29yeSBBUEkgcmVzcG9uc2VcbiAgICAgICAgY29uc29sZS53YXJuKCdBWE1SZXBvcnREZWZpbml0aW9uUHJvdmlkZXIuZ2V0QnlJZCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYTV9SRVBPUlRfREVGSU5JVElPTl9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgdXNlQ2xhc3M6IEFYTVJlcG9ydERlZmluaXRpb25Qcm92aWRlcixcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8vIC0tLSAgQ2F0ZWdvcnkgUHJvdmlkZXIgLS0tXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlciBpbXBsZW1lbnRzIEFYUFJlcG9ydENhdGVnb3J5UHJvdmlkZXIge1xuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFF1ZXJ5U2VydmljZSk7XG4gICAgcHJpdmF0ZSBlbnRpdHlOYW1lID0gYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmNhdGVnb3J5Lm5hbWV9YDtcblxuICAgIGFzeW5jIGdldExpc3QocGFyZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEFYUFJlcG9ydENhdGVnb3J5W10+IHtcbiAgICAgICAgLy8gTm90ZTogVGhpcyBwcm92aWRlciBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBBUEkgcHJvdmlkZXJzXG4gICAgICAgIC8vIHRoYXQgdXNlIGNhY2hlZCBkYXRhIGZyb20gdGhlIGNhdGVnb3J5IEFQSSByZXNwb25zZVxuICAgICAgICAvLyBSZXR1cm5pbmcgZW1wdHkgYXJyYXkgdG8gYXZvaWQgZHVwbGljYXRlIEFQSSBjYWxsc1xuICAgICAgICBjb25zb2xlLndhcm4oJ0FYTVJlcG9ydENhdGVnb3J5UHJvdmlkZXIuZ2V0TGlzdCBpcyBkZXByZWNhdGVkLiBVc2UgQVBJIHByb3ZpZGVycyBpbnN0ZWFkLicpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxBWFBSZXBvcnRDYXRlZ29yeSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICAvLyBOb3RlOiBUaGlzIHByb3ZpZGVyIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIEFQSSBwcm92aWRlcnNcbiAgICAgICAgLy8gdGhhdCB1c2UgY2FjaGVkIGRhdGEgZnJvbSB0aGUgY2F0ZWdvcnkgQVBJIHJlc3BvbnNlXG4gICAgICAgIGNvbnNvbGUud2FybignQVhNUmVwb3J0Q2F0ZWdvcnlQcm92aWRlci5nZXRCeUlkIGlzIGRlcHJlY2F0ZWQuIFVzZSBBUEkgcHJvdmlkZXJzIGluc3RlYWQuJyk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUiA9IHtcbiAgICBwcm92aWRlOiBBWFBfUkVQT1JUX0NBVEVHT1JZX1BST1ZJREVSLFxuICAgIHVzZUNsYXNzOiBBWE1SZXBvcnRDYXRlZ29yeVByb3ZpZGVyLFxuICAgIG11bHRpOiB0cnVlLFxufTsgIl19","export const AXPReportManagementMenuKeys = {\n Root: 'report-management:menu',\n Reports: 'report-management:menu:reports',\n Categories: 'report-management:menu:categories',\n DataSets: 'report-management:menu:data-sets',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3ZDLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLGdDQUFnQztJQUN6QyxVQUFVLEVBQUUsbUNBQW1DO0lBQy9DLFFBQVEsRUFBRSxrQ0FBa0M7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgPSB7XG4gICAgUm9vdDogJ3JlcG9ydC1tYW5hZ2VtZW50Om1lbnUnLFxuICAgIFJlcG9ydHM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OnJlcG9ydHMnLFxuICAgIENhdGVnb3JpZXM6ICdyZXBvcnQtbWFuYWdlbWVudDptZW51OmNhdGVnb3JpZXMnLFxuICAgIERhdGFTZXRzOiAncmVwb3J0LW1hbmFnZW1lbnQ6bWVudTpkYXRhLXNldHMnLFxufSBhcyBjb25zdDtcblxuIl19","import { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPReportManagementMenuKeys } from './menu.keys';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n }\n async provide(context) {\n const module = RootConfig.module;\n context.addItems([\n {\n name: AXPReportManagementMenuKeys.Reports,\n text: RootConfig.entities.report.titlePlural,\n path: `${this.sessionService.application?.name}/${module.route}/reports`,\n icon: RootConfig.entities.report.icon,\n priority: 900001,\n },\n ]);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL21lbnUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNZLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFldkQsQ0FBQztJQWJHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBK0I7UUFDekMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUVqQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2I7Z0JBQ0ksSUFBSSxFQUFFLDJCQUEyQixDQUFDLE9BQU87Z0JBQ3pDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssVUFBVTtnQkFDeEUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3JDLFFBQVEsRUFBRSxNQUFNO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBSZXBvcnRNYW5hZ2VtZW50TWVudUtleXMgfSBmcm9tICcuL21lbnUua2V5cyc7XG5cbmV4cG9ydCBjbGFzcyBBWE1NZW51UHJvdmlkZXIgaW1wbGVtZW50cyBBWFBNZW51UHJvdmlkZXIge1xuICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlO1xuXG4gICAgICAgIGNvbnRleHQuYWRkSXRlbXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYUFJlcG9ydE1hbmFnZW1lbnRNZW51S2V5cy5SZXBvcnRzLFxuICAgICAgICAgICAgICAgIHRleHQ6IFJvb3RDb25maWcuZW50aXRpZXMucmVwb3J0LnRpdGxlUGx1cmFsLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3RoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/Lm5hbWV9LyR7bW9kdWxlLnJvdXRlfS9yZXBvcnRzYCxcbiAgICAgICAgICAgICAgICBpY29uOiBSb290Q29uZmlnLmVudGl0aWVzLnJlcG9ydC5pY29uLFxuICAgICAgICAgICAgICAgIHByaW9yaXR5OiA5MDAwMDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICB9XG59XG4iXX0=","//#region ---- DataSet Filter Widget ----\nexport const AXM_DATASET_COLUMN_WIDGET = [\n {\n type: 'grid-row-layout',\n mode: 'view',\n children: [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 2 },\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'enabled',\n options: {\n label: 'Enable',\n tooltip: 'Enable or disable this filter',\n disabled: '{{ context.eval(\"isRequired\") }}',\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'text-editor',\n mode: 'view',\n path: 'title',\n options: {\n //readonly: '{{ !context.eval(\">enabled\") }}',\n },\n },\n ],\n }\n ],\n },\n];\n//#endregion \n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2RhdGEtc2V0L2NvbHVtbi5kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBSTdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE4QjtJQUNsRTtRQUNFLElBQUksRUFBRSxpQkFBaUI7UUFDdkIsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUU7WUFDUjtnQkFDRSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjt3QkFDdkIsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFOzRCQUNQLEtBQUssRUFBRSxRQUFROzRCQUNmLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFFBQVEsRUFBRSxrQ0FBa0M7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QixRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsSUFBSSxFQUFFLGFBQWE7d0JBQ25CLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRTt3QkFDUCxnREFBZ0Q7eUJBQ2pEO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIERhdGFTZXQgRmlsdGVyIFdpZGdldCAgIC0tLS1cblxuaW1wb3J0IHsgQVhFbnRpdHlQcm9wZXJ0eVdpZGdldCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuXG5leHBvcnQgY29uc3QgQVhNX0RBVEFTRVRfQ09MVU1OX1dJREdFVCA6IEFYRW50aXR5UHJvcGVydHlXaWRnZXRbXSA9IFtcbiAge1xuICAgIHR5cGU6ICdncmlkLXJvdy1sYXlvdXQnLFxuICAgIG1vZGU6ICd2aWV3JyxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnZ3JpZC1pdGVtLWxheW91dCcsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgICAgb3B0aW9uczogeyBjb2xTcGFuOiAyIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94LWVkaXRvcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnZW5hYmxlZCcsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnRW5hYmxlJyxcbiAgICAgICAgICAgICAgdG9vbHRpcDogJ0VuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmlsdGVyJyxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6ICd7eyBjb250ZXh0LmV2YWwoXCJpc1JlcXVpcmVkXCIpIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICBvcHRpb25zOiB7IGNvbFNwYW46IDMgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAndGV4dC1lZGl0b3InLFxuICAgICAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICAgICAgcGF0aDogJ3RpdGxlJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgLy9yZWFkb25seTogICAne3sgIWNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICBdLFxuICB9LFxuXTtcblxuLy8jZW5kcmVnaW9uICJdfQ==","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMDataSetService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMDataSetServiceImpl extends AXMDataSetService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dataSet.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2RhdGEtc2V0L2RhdGEtc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUd6QyxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLHdCQUcvQztDQUFHO0FBR0osTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjtJQUMxRDtRQUNFLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQzsrR0FIVSxxQkFBcUI7bUhBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNUmVwb3J0TWFuYWdlbWVudERhdGFTZXRFbnRpdHlNb2RlbCB9IGZyb20gJy4vZGF0YS1zZXQudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNRGF0YVNldFNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8XG4gIHN0cmluZyxcbiAgQVhNUmVwb3J0TWFuYWdlbWVudERhdGFTZXRFbnRpdHlNb2RlbFxuPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNRGF0YVNldFNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNRGF0YVNldFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuZGF0YVNldC5uYW1lfWApO1xuICB9XG59XG4iXX0=","//#region ---- DataSet Filter Widget ----\nexport const AXM_DATASET_FILTER_WIDGET = [\n {\n type: 'block-layout',\n mode: 'view',\n children: [\n // Enable/Disable Checkbox\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 1 },\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'enabled',\n defaultValue: true,\n options: {\n label: 'Enable',\n tooltip: 'Enable or disable this filter',\n disabled: '{{ context.eval(\"isRequired\") }}',\n },\n },\n ],\n },\n // Data Source Selector\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'dataSource',\n options: {\n placeholder: 'Select Data Source',\n valueField: 'name',\n textField: 'title',\n dataSource: '{{ context.eval(\"$root.dataSources\") || [] }}',\n readonly: '{{ !context.eval(\">enabled\") }}',\n },\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ \n var ds = context.eval('dataSource'); \n var columns = (ds && ds.columns) || []; \n context.set('availableFields', columns);\n context.set('columnName', null);\n context.set('filter', null);\n }}`,\n },\n ],\n },\n ],\n },\n // Field/Column Selector\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'columnName',\n options: {\n placeholder: 'Select Field',\n valueField: 'name',\n textField: 'title',\n dataSource: '{{ context.eval(\"availableFields\") || [] }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"dataSource\") }}',\n },\n triggers: [\n {\n event: \"{{ events.context('columnName') }}\",\n action: `{{ \n var columnName = context.eval('columnName');\n var availableFields = context.eval('availableFields') || [];\n var column = availableFields.find(function(c) { return c.name === columnName; }) || {};\n var fieldType = column.type || 'string';\n \n // Determine widget type based on field type\n var widgetType = (function() {\n var t = (typeof fieldType === 'object' && fieldType !== null && 'name' in fieldType) ? fieldType.name : fieldType;\n return t === 'text-editor' || t === 'large-text-editor' || t === 'string' ? 'string-filter' :\n t === 'number-editor' || t === 'number' ? 'number-filter' :\n t === 'date-time-editor' || t === 'datetime' || t === 'date' ? 'datetime-filter' :\n t === 'select-editor' || t === 'select' ? 'select-filter' :\n t === 'checkbox-editor' || t === 'toggle-editor' || t === 'boolean' ? 'boolean-filter' :\n t === 'color-editor' ? 'color-filter' : 'string-filter';\n })();\n \n context.set('widgetType', widgetType);\n context.set('fieldType', fieldType);\n context.set('filter', null);\n }}`,\n },\n ],\n },\n ],\n },\n // Logical Operator (And/Or)\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 2 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'logicOperator',\n defaultValue: 'and',\n options: {\n placeholder: 'Logic',\n dataSource: [\n { value: 'and', text: 'And' },\n { value: 'or', text: 'Or' }\n ],\n valueField: 'value',\n textField: 'text',\n readonly: '{{ !context.eval(\">enabled\") }}',\n },\n },\n ],\n },\n // Dynamic Filter Widget based on field type\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n // String Filter\n {\n type: 'string-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Enter filter value\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ !context.eval(\"widgetType\") || context.eval(\"widgetType\") === \"string-filter\" }}',\n },\n },\n // Number Filter\n {\n type: 'number-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Enter number value\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"number-filter\" }}',\n },\n },\n // DateTime Filter\n {\n type: 'datetime-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Select date\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"datetime-filter\" }}',\n },\n },\n // Select Filter\n {\n type: 'select-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Select value\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"select-filter\" }}',\n },\n },\n // Boolean Filter\n {\n type: 'boolean-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"boolean-filter\" }}',\n },\n },\n // Color Filter\n {\n type: 'color-filter',\n mode: 'edit',\n path: 'filter',\n options: {\n placeholder: '{{ (context.eval(\">enabled\") ?? true) ? \"Select color\" : \"Filter is disabled\" }}',\n readonly: '{{ !context.eval(\">enabled\") || !context.eval(\"columnName\") }}',\n visibility: '{{ context.eval(\"widgetType\") === \"color-filter\" }}',\n },\n },\n ],\n },\n ],\n options: {\n spacing: { margin: \"0px\", padding: \"8px\" }\n }\n },\n];\n//#endregion \n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmRlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2RhdGEtc2V0L2ZpbHRlci5kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBSzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFxQjtJQUN6RDtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFO1lBQ1IsMEJBQTBCO1lBQzFCO2dCQUNFLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7Z0JBQ3ZCLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxJQUFJLEVBQUUsaUJBQWlCO3dCQUN2QixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsU0FBUzt3QkFDZixZQUFZLEVBQUUsSUFBSTt3QkFDbEIsT0FBTyxFQUFFOzRCQUNQLEtBQUssRUFBRSxRQUFROzRCQUNmLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFFBQVEsRUFBRSxrQ0FBa0M7eUJBQzdDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFFRCx1QkFBdUI7WUFDdkI7Z0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxFQUFFO29CQUNSO3dCQUNFLElBQUksRUFBRSxlQUFlO3dCQUNyQixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsWUFBWTt3QkFDbEIsT0FBTyxFQUFFOzRCQUNQLFdBQVcsRUFBRSxvQkFBb0I7NEJBQ2pDLFVBQVUsRUFBRSxNQUFNOzRCQUNsQixTQUFTLEVBQUUsT0FBTzs0QkFDbEIsVUFB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QkFDWixJQUFJLEVBQUUsUUFBUTt3QkFDZCxPQUFPLEVBQUU7NEJBQ1AsV0FBVyxFQUFFLGtGQUFrRjs0QkFDL0YsUUFBUSxFQUFFLGdFQUFnRTs0QkFDMUUsVUFBVSxFQUFFLHNEQUFzRDt5QkFDbkU7cUJBQ0Y7b0JBQ0QsaUJBQWlCO29CQUNqQjt3QkFDRSxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsUUFBUTt3QkFDZCxPQUFPLEVBQUU7NEJBQ1AsUUFBUSxFQUFFLGdFQUFnRTs0QkFDMUUsVUFBVSxFQUFFLHVEQUF1RDt5QkFDcEU7cUJBQ0Y7b0JBQ0QsZUFBZTtvQkFDZjt3QkFDRSxJQUFJLEVBQUUsY0FBYzt3QkFDcEIsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsT0FBTyxFQUFFOzRCQUNQLFdBQVcsRUFBRSxrRkFBa0Y7NEJBQy9GLFFBQVEsRUFBRSxnRUFBZ0U7NEJBQzFFLFVBQVUsRUFBRSxxREFBcUQ7eUJBQ2xFO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtTQUMzQztLQUNGO0NBQ0YsQ0FBQztBQUVGLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIERhdGFTZXQgRmlsdGVyIFdpZGdldCAgIC0tLS1cblxuaW1wb3J0IHsgQVhFbnRpdHlQcm9wZXJ0eVdpZGdldCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZVwiO1xuXG5leHBvcnQgY29uc3QgQVhNX0RBVEFTRVRfRklMVEVSX1dJREdFVCA6IEFYUFdpZGdldE5vZGVbXSA9IFtcbiAge1xuICAgIHR5cGU6ICdibG9jay1sYXlvdXQnLFxuICAgIG1vZGU6ICd2aWV3JyxcbiAgICBjaGlsZHJlbjogW1xuICAgICAgLy8gRW5hYmxlL0Rpc2FibGUgQ2hlY2tib3hcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2dyaWQtaXRlbS1sYXlvdXQnLFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICAgIG9wdGlvbnM6IHsgY29sU3BhbjogMSB9LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdjaGVja2JveC1lZGl0b3InLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2VuYWJsZWQnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBsYWJlbDogJ0VuYWJsZScsXG4gICAgICAgICAgICAgIHRvb2x0aXA6ICdFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZpbHRlcicsXG4gICAgICAgICAgICAgIGRpc2FibGVkOiAne3sgY29udGV4dC5ldmFsKFwiaXNSZXF1aXJlZFwiKSB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBEYXRhIFNvdXJjZSBTZWxlY3RvclxuICAgICAge1xuICAgICAgICB0eXBlOiAnZ3JpZC1pdGVtLWxheW91dCcsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgICAgb3B0aW9uczogeyBjb2xTcGFuOiAzIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3NlbGVjdC1lZGl0b3InLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2RhdGFTb3VyY2UnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBEYXRhIFNvdXJjZScsXG4gICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICBkYXRhU291cmNlOiAne3sgY29udGV4dC5ldmFsKFwiJHJvb3QuZGF0YVNvdXJjZXNcIikgfHwgW10gfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInt7IGV2ZW50cy5jb250ZXh0KCdkYXRhU291cmNlJykgfX1cIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IGB7eyBcbiAgICAgICAgICAgICAgICAgIHZhciBkcyA9IGNvbnRleHQuZXZhbCgnZGF0YVNvdXJjZScpOyBcbiAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5zID0gKGRzICYmIGRzLmNvbHVtbnMpIHx8IFtdOyBcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdhdmFpbGFibGVGaWVsZHMnLCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdjb2x1bW5OYW1lJywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LnNldCgnZmlsdGVyJywgbnVsbCk7XG4gICAgICAgICAgICAgICAgfX1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gRmllbGQvQ29sdW1uIFNlbGVjdG9yXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICBvcHRpb25zOiB7IGNvbFNwYW46IDMgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0LWVkaXRvcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnY29sdW1uTmFtZScsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0IEZpZWxkJyxcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICB0ZXh0RmllbGQ6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGRhdGFTb3VyY2U6ICd7eyBjb250ZXh0LmV2YWwoXCJhdmFpbGFibGVGaWVsZHNcIikgfHwgW10gfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiZGF0YVNvdXJjZVwiKSB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInt7IGV2ZW50cy5jb250ZXh0KCdjb2x1bW5OYW1lJykgfX1cIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IGB7eyBcbiAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5OYW1lID0gY29udGV4dC5ldmFsKCdjb2x1bW5OYW1lJyk7XG4gICAgICAgICAgICAgICAgICB2YXIgYXZhaWxhYmxlRmllbGRzID0gY29udGV4dC5ldmFsKCdhdmFpbGFibGVGaWVsZHMnKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW4gPSBhdmFpbGFibGVGaWVsZHMuZmluZChmdW5jdGlvbihjKSB7IHJldHVybiBjLm5hbWUgPT09IGNvbHVtbk5hbWU7IH0pIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkVHlwZSA9IGNvbHVtbi50eXBlIHx8ICdzdHJpbmcnO1xuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2lkZ2V0IHR5cGUgYmFzZWQgb24gZmllbGQgdHlwZVxuICAgICAgICAgICAgICAgICAgdmFyIHdpZGdldFR5cGUgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gKHR5cGVvZiBmaWVsZFR5cGUgPT09ICdvYmplY3QnICYmIGZpZWxkVHlwZSAhPT0gbnVsbCAmJiAnbmFtZScgaW4gZmllbGRUeXBlKSA/IGZpZWxkVHlwZS5uYW1lIDogZmllbGRUeXBlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCA9PT0gJ3RleHQtZWRpdG9yJyB8fCB0ID09PSAnbGFyZ2UtdGV4dC1lZGl0b3InIHx8IHQgPT09ICdzdHJpbmcnID8gJ3N0cmluZy1maWx0ZXInIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPT09ICdudW1iZXItZWRpdG9yJyB8fCB0ID09PSAnbnVtYmVyJyA/ICdudW1iZXItZmlsdGVyJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ID09PSAnZGF0ZS10aW1lLWVkaXRvcicgfHwgdCA9PT0gJ2RhdGV0aW1lJyB8fCB0ID09PSAnZGF0ZScgPyAnZGF0ZXRpbWUtZmlsdGVyJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ID09PSAnc2VsZWN0LWVkaXRvcicgfHwgdCA9PT0gJ3NlbGVjdCcgPyAnc2VsZWN0LWZpbHRlcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9PT0gJ2NoZWNrYm94LWVkaXRvcicgfHwgdCA9PT0gJ3RvZ2dsZS1lZGl0b3InIHx8IHQgPT09ICdib29sZWFuJyA/ICdib29sZWFuLWZpbHRlcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9PT0gJ2NvbG9yLWVkaXRvcicgPyAnY29sb3ItZmlsdGVyJyA6ICdzdHJpbmctZmlsdGVyJztcbiAgICAgICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCd3aWRnZXRUeXBlJywgd2lkZ2V0VHlwZSk7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LnNldCgnZmllbGRUeXBlJywgZmllbGRUeXBlKTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdmaWx0ZXInLCBudWxsKTtcbiAgICAgICAgICAgICAgICB9fWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgXG4gICAgICAvLyBMb2dpY2FsIE9wZXJhdG9yIChBbmQvT3IpXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgICBvcHRpb25zOiB7IGNvbFNwYW46IDIgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0LWVkaXRvcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnbG9naWNPcGVyYXRvcicsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdhbmQnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0xvZ2ljJyxcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdhbmQnLCB0ZXh0OiAnQW5kJyB9LFxuICAgICAgICAgICAgICAgIHsgdmFsdWU6ICdvcicsIHRleHQ6ICdPcicgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAndmFsdWUnLFxuICAgICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgcmVhZG9ubHk6ICd7eyAhY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIFxuICAgICAgLy8gRHluYW1pYyBGaWx0ZXIgV2lkZ2V0IGJhc2VkIG9uIGZpZWxkIHR5cGVcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2dyaWQtaXRlbS1sYXlvdXQnLFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICAgIG9wdGlvbnM6IHsgY29sU3BhbjogMyB9LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgIC8vIFN0cmluZyBGaWx0ZXJcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nLWZpbHRlcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnZmlsdGVyJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyAoY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgPz8gdHJ1ZSkgPyBcIkVudGVyIGZpbHRlciB2YWx1ZVwiIDogXCJGaWx0ZXIgaXMgZGlzYWJsZWRcIiB9fScsXG4gICAgICAgICAgICAgIHJlYWRvbmx5OiAne3sgIWNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpIHx8ICFjb250ZXh0LmV2YWwoXCJjb2x1bW5OYW1lXCIpIH19JyxcbiAgICAgICAgICAgICAgdmlzaWJpbGl0eTogJ3t7ICFjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpIHx8IGNvbnRleHQuZXZhbChcIndpZGdldFR5cGVcIikgPT09IFwic3RyaW5nLWZpbHRlclwiIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBOdW1iZXIgRmlsdGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlci1maWx0ZXInLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2ZpbHRlcicsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgKGNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpID8/IHRydWUpID8gXCJFbnRlciBudW1iZXIgdmFsdWVcIiA6IFwiRmlsdGVyIGlzIGRpc2FibGVkXCIgfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiY29sdW1uTmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd7eyBjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpID09PSBcIm51bWJlci1maWx0ZXJcIiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gRGF0ZVRpbWUgRmlsdGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2RhdGV0aW1lLWZpbHRlcicsXG4gICAgICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBwYXRoOiAnZmlsdGVyJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyAoY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgPz8gdHJ1ZSkgPyBcIlNlbGVjdCBkYXRlXCIgOiBcIkZpbHRlciBpcyBkaXNhYmxlZFwiIH19JyxcbiAgICAgICAgICAgICAgcmVhZG9ubHk6ICd7eyAhY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgfHwgIWNvbnRleHQuZXZhbChcImNvbHVtbk5hbWVcIikgfX0nLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAne3sgY29udGV4dC5ldmFsKFwid2lkZ2V0VHlwZVwiKSA9PT0gXCJkYXRldGltZS1maWx0ZXJcIiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gU2VsZWN0IEZpbHRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QtZmlsdGVyJyxcbiAgICAgICAgICAgIG1vZGU6ICdlZGl0JyxcbiAgICAgICAgICAgIHBhdGg6ICdmaWx0ZXInLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IChjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSA/PyB0cnVlKSA/IFwiU2VsZWN0IHZhbHVlXCIgOiBcIkZpbHRlciBpcyBkaXNhYmxlZFwiIH19JyxcbiAgICAgICAgICAgICAgcmVhZG9ubHk6ICd7eyAhY29udGV4dC5ldmFsKFwiPmVuYWJsZWRcIikgfHwgIWNvbnRleHQuZXZhbChcImNvbHVtbk5hbWVcIikgfX0nLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAne3sgY29udGV4dC5ldmFsKFwid2lkZ2V0VHlwZVwiKSA9PT0gXCJzZWxlY3QtZmlsdGVyXCIgfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIEJvb2xlYW4gRmlsdGVyXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4tZmlsdGVyJyxcbiAgICAgICAgICAgIG1vZGU6ICdlZGl0JyxcbiAgICAgICAgICAgIHBhdGg6ICdmaWx0ZXInLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiY29sdW1uTmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd7eyBjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpID09PSBcImJvb2xlYW4tZmlsdGVyXCIgfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIENvbG9yIEZpbHRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdjb2xvci1maWx0ZXInLFxuICAgICAgICAgICAgbW9kZTogJ2VkaXQnLFxuICAgICAgICAgICAgcGF0aDogJ2ZpbHRlcicsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgKGNvbnRleHQuZXZhbChcIj5lbmFibGVkXCIpID8/IHRydWUpID8gXCJTZWxlY3QgY29sb3JcIiA6IFwiRmlsdGVyIGlzIGRpc2FibGVkXCIgfX0nLFxuICAgICAgICAgICAgICByZWFkb25seTogJ3t7ICFjb250ZXh0LmV2YWwoXCI+ZW5hYmxlZFwiKSB8fCAhY29udGV4dC5ldmFsKFwiY29sdW1uTmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgIHZpc2liaWxpdHk6ICd7eyBjb250ZXh0LmV2YWwoXCJ3aWRnZXRUeXBlXCIpID09PSBcImNvbG9yLWZpbHRlclwiIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBzcGFjaW5nOiB7IG1hcmdpbjogXCIwcHhcIiwgcGFkZGluZzogXCI4cHhcIiB9XG4gICAgfVxuICB9LFxuXTtcblxuLy8jZW5kcmVnaW9uICJdfQ==","//#region ---- DataSet Filter Widget ----\nexport const AXM_DATASET_SORT_WIDGET = [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'enabled',\n options: {\n dataSource: [\n {\n value: 'asc',\n text: 'Ascendent'\n },\n {\n value: 'desc',\n text: 'Desiccate'\n },\n {\n value: 'none',\n text: 'None'\n },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n ],\n },\n];\n//#endregion \n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9kYXRhLXNldC9zb3J0LmRlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2Q0FBNkM7QUFJN0MsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQTZCO0lBQy9EO1FBQ0UsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7UUFDdkIsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRTtvQkFDUCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsS0FBSyxFQUFFLEtBQUs7NEJBQ1osSUFBSSxFQUFFLFdBQVc7eUJBQ2xCO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxNQUFNOzRCQUNiLElBQUksRUFBRSxXQUFXO3lCQUNsQjt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsTUFBTTs0QkFDYixJQUFJLEVBQUUsTUFBTTt5QkFDYjtxQkFDRjtvQkFDRCxTQUFTLEVBQUUsTUFBTTtvQkFDakIsVUFBVSxFQUFFLE9BQU87aUJBQ3BCO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIERhdGFTZXQgRmlsdGVyIFdpZGdldCAgIC0tLS1cblxuaW1wb3J0IHsgQVhFbnRpdHlQcm9wZXJ0eVdpZGdldCB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2NvbW1vblwiO1xuXG5leHBvcnQgY29uc3QgQVhNX0RBVEFTRVRfU09SVF9XSURHRVQ6IEFYRW50aXR5UHJvcGVydHlXaWRnZXRbXSA9IFtcbiAge1xuICAgIHR5cGU6ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgICBtb2RlOiAndmlldycsXG4gICAgb3B0aW9uczogeyBjb2xTcGFuOiAzIH0sXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3NlbGVjdC1lZGl0b3InLFxuICAgICAgICBtb2RlOiAnZWRpdCcsXG4gICAgICAgIHBhdGg6ICdlbmFibGVkJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdhc2MnLFxuICAgICAgICAgICAgICB0ZXh0OiAnQXNjZW5kZW50J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdkZXNjJywgXG4gICAgICAgICAgICAgIHRleHQ6ICdEZXNpY2NhdGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2YWx1ZTogJ25vbmUnLCBcbiAgICAgICAgICAgICAgdGV4dDogJ05vbmUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGV4dEZpZWxkOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl07XG5cbi8vI2VuZHJlZ2lvbiAiXX0=","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXMDataSourceService } from '@acorex/modules/data-management';\nimport { AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { RootConfig } from '../../const';\nimport { AXM_DATASET_COLUMN_WIDGET } from './column.def';\nimport { AXMDataSetService } from './data-set.service';\nimport { AXM_DATASET_FILTER_WIDGET } from './filter.def';\nimport { AXM_DATASET_SORT_WIDGET } from './sort.def';\nexport async function dataSetFactory(injector) {\n const dataService = injector.get(AXMDataSetService);\n const i18n = RootConfig.config.i18n;\n const translationService = injector.get(AXTranslationService);\n const dataSourceService = injector.get(AXMDataSourceService);\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dataSet.name,\n title: RootConfig.entities.dataSet.title,\n formats: {\n individual: RootConfig.entities.dataSet.title,\n plural: RootConfig.entities.dataSet.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'dataSet',\n title: RootConfig.entities.dataSet.title,\n },\n {\n id: 'filters',\n title: `@${i18n}:advance`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'dataSet',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'dataSet',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'categoryIds',\n title: '@general:terms.classification.category',\n groupId: 'dataSet',\n schema: {\n defaultValue: '{{ [context.eval(\"categoryId\")] }}',\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.category.name}`,\n multiple: true,\n expose: [\n { source: 'id', target: 'categories.{id}' },\n { source: 'title', target: 'categories.{title}' },\n ],\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'dataSource',\n title: `@${i18n}:dataSource`,\n groupId: 'dataSet',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n load: async () => {\n const items = await dataSourceService.query({\n skip: 0,\n take: 10000,\n });\n const translated = await Promise.all(items.items.map(async (item) => ({\n ...item,\n title: await translationService.translateAsync(item.title),\n })));\n return { total: translated.length, items: translated };\n },\n pageSize: 1000,\n }),\n multiple: false,\n },\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ var ds = context.eval('dataSource'); var list = []; Array.isArray(ds.filters) ? (function(){ for(var i=0;i<ds.filters.length;i++){ var item = ds.filters[i]; !item.isSystemFilter ? (function(){ var fl = item.filter; var column = (ds.columns || []).find(function(c){return c.name === fl.columnName;}) || {}; var widgetType = (function(){ var t = column.type || 'string'; t = (typeof t === 'object' && t !== null && 'name' in t) ? t.name : t; return t === 'text-editor' || t === 'large-text-editor' || t === 'string' ? 'string-filter' : t === 'number-editor' || t === 'number' ? 'number-filter' : t === 'date-time-editor' || t === 'datetime' || t === 'date' ? 'datetime-filter' : t === 'select-editor' || t === 'select' ? 'select-filter' : t === 'checkbox-editor' || t === 'toggle-editor' || t === 'boolean' ? 'boolean-filter' : t === 'color-editor' ? 'color-filter' : 'string-filter'; })(); var copy = { columnName: fl.columnName, isRequired: false, enabled: true, filter: { columnName: fl.columnName, value: fl.value }, widgetType: widgetType }; list.push(copy); })() : null; } })() : null; context.set('filters', list); }}`,\n },\n ],\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'filters',\n title: `@${i18n}:filters`,\n groupId: 'filters',\n schema: {\n defaultValue: [],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n path: 'filters',\n options: {\n hasControls: false,\n isDraggable: true,\n },\n children: AXM_DATASET_FILTER_WIDGET,\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ \n var selectedDataSource = context.eval('dataSource');\n if (selectedDataSource) {\n context.set('dataSources', [selectedDataSource]);\n }\n }}`,\n },\n ],\n },\n },\n },\n {\n name: 'columns',\n title: `@${i18n}:columns`,\n groupId: 'filters',\n schema: {\n defaultValue: [],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n options: {\n hasControls: false,\n isDraggable: true,\n },\n children: AXM_DATASET_COLUMN_WIDGET,\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ context.set('columns', context.eval('dataSource').columns); }}`,\n },\n ],\n },\n },\n },\n {\n name: 'sorts',\n title: `@${i18n}:sorts`,\n groupId: 'filters',\n schema: {\n defaultValue: [],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n options: {\n hasControls: false,\n isDraggable: true,\n },\n children: AXM_DATASET_SORT_WIDGET,\n // triggers: [\n // {\n // event: \"{{ events.context('dataSource') }}\",\n // action: `{{ context.set('sorts', context.eval('dataSource').columns); }}`,\n // },\n // ],\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }, { name: 'dataSource' }],\n commands: {\n create: {\n execute: async (data) => {\n console.log(data);\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query(e);\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'dataSet',\n },\n {\n id: 'filters',\n },\n ],\n properties: [\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'sorts',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 6,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'dataSet',\n },\n {\n id: 'filters',\n },\n ],\n properties: [\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'dataSet',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'categoryIds',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXQuZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvZGF0YS1zZXQvZGF0YS1zZXQuZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQW9DLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVyRCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxRQUFrQjtJQUNyRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDcEMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFv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QkFDRSxJQUFJLEVBQUUsT0FBTzs0QkFDYixNQUFNLEVBQUU7Z0NBQ04sU0FBUyxFQUFFO29DQUNULEVBQUUsRUFBRTt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixLQUFLLEVBQUUsQ0FBQztxQ0FDVDtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsYUFBYTs0QkFDbkIsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLENBQUM7d0NBQ1YsS0FBSyxFQUFFLENBQUM7cUNBQ1Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsTUFBTSxFQUFFO2dDQUNOLFNBQVMsRUFBRTtvQ0FDVCxFQUFFLEVBQUU7d0NBQ0YsT0FBTyxFQUFFLEVBQUU7d0NBQ1gsS0FBSyxFQUFFLENBQUM7cUNBQ1Q7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO2lCQUMxQztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO29CQUN2QyxLQUFLLEVBQUU7d0JBQ0wsa0JBQWtCLENBQUM7NEJBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7eUJBQ3RDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhNRGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvZGF0YS1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBFbnRpdHlRdWVyeVR5cGUsIGNyZWF0ZUFsbFF1ZXJ5VmlldyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IGVudGl0eU1hc3RlckNydWRBY3Rpb25zLCBlbnRpdHlNYXN0ZXJSZWNvcmRBY3Rpb25zIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1fREFUQVNFVF9DT0xVTU5fV0lER0VUIH0gZnJvbSAnLi9jb2x1bW4uZGVmJztcbmltcG9ydCB7IEFYTURhdGFTZXRTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLXNldC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTV9EQVRBU0VUX0ZJTFRFUl9XSURHRVQgfSBmcm9tICcuL2ZpbHRlci5kZWYnO1xuaW1wb3J0IHsgQVhNX0RBVEFTRVRfU09SVF9XSURHRVQgfSBmcm9tICcuL3NvcnQuZGVmJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRhdGFTZXRGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1EYXRhU2V0U2VydmljZSk7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuICBjb25zdCB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBjb25zdCBkYXRhU291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChBWE1EYXRhU291cmNlU2VydmljZSk7XG5cbiAgY29uc3QgZW50aXR5RGVmOiBBWFBFbnRpdHkgPSB7XG4gICAgbW9kdWxlOiBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgIG5hbWU6IFJvb3RDb25maWcuZW50aXRpZXMuZGF0YVNldC5uYW1lLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLmRhdGFTZXQudGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5kYXRhU2V0LnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLmRhdGFTZXQudGl0bGVQbHVyYWwsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ2RhdGFTZXQnLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5kYXRhU2V0LnRpdGxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdmaWx0ZXJzJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTphZHZhbmNlYCxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24ubmFtZScsXG4gICAgICAgIGdyb3VwSWQ6ICdkYXRhU2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi50aXRsZScsXG4gICAgICAgIGdyb3VwSWQ6ICdkYXRhU2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2F0ZWdvcnlJZHMnLFxuICAgICAgICB0aXRsZTogJ0BnZW5lcmFsOnRlcm1zLmNsYXNzaWZpY2F0aW9uLmNhdGVnb3J5JyxcbiAgICAgICAgZ3JvdXBJZDogJ2RhdGFTZXQnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6ICd7eyBbY29udGV4dC5ldmFsKFwiY2F0ZWdvcnlJZFwiKV0gfX0nLFxuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLmxvb2t1cCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgZW50aXR5OiBgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuY2F0ZWdvcnkubmFtZX1gLFxuICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhwb3NlOiBbXG4gICAgICAgICAgICAgICAgeyBzb3VyY2U6ICdpZCcsIHRhcmdldDogJ2NhdGVnb3JpZXMue2lkfScgfSxcbiAgICAgICAgICAgICAgICB7IHNvdXJjZTogJ3RpdGxlJywgdGFyZ2V0OiAnY2F0ZWdvcmllcy57dGl0bGV9JyB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkYXRhU291cmNlJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTpkYXRhU291cmNlYCxcbiAgICAgICAgZ3JvdXBJZDogJ2RhdGFTZXQnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICBkYXRhU291cmNlOiBuZXcgQVhEYXRhU291cmNlKHtcbiAgICAgICAgICAgICAgICBsb2FkOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGF3YWl0IGRhdGFTb3VyY2VTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgdGFrZTogMTAwMDAsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMuaXRlbXMubWFwKGFzeW5jIChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYXdhaXQgdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGl0ZW0udGl0bGUpLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdG90YWw6IHRyYW5zbGF0ZWQubGVuZ3RoLCBpdGVtczogdHJhbnNsYXRlZCB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInt7IGV2ZW50cy5jb250ZXh0KCdkYXRhU291cmNlJykgfX1cIixcbiAgICAgICAgICAgICAgICBhY3Rpb246IGB7eyB2YXIgZHMgPSBjb250ZXh0LmV2YWwoJ2RhdGFTb3VyY2UnKTsgdmFyIGxpc3QgPSBbXTsgQXJyYXkuaXNBcnJheShkcy5maWx0ZXJzKSA/IChmdW5jdGlvbigpeyBmb3IodmFyIGk9MDtpPGRzLmZpbHRlcnMubGVuZ3RoO2krKyl7IHZhciBpdGVtID0gZHMuZmlsdGVyc1tpXTsgIWl0ZW0uaXNTeXN0ZW1GaWx0ZXIgPyAoZnVuY3Rpb24oKXsgdmFyIGZsID0gaXRlbS5maWx0ZXI7IHZhciBjb2x1bW4gPSAoZHMuY29sdW1ucyB8fCBbXSkuZmluZChmdW5jdGlvbihjKXtyZXR1cm4gYy5uYW1lID09PSBmbC5jb2x1bW5OYW1lO30pIHx8IHt9OyB2YXIgd2lkZ2V0VHlwZSA9IChmdW5jdGlvbigpeyB2YXIgdCA9IGNvbHVtbi50eXBlIHx8ICdzdHJpbmcnOyB0ID0gKHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0ICE9PSBudWxsICYmICduYW1lJyBpbiB0KSA/IHQubmFtZSA6IHQ7IHJldHVybiB0ID09PSAndGV4dC1lZGl0b3InIHx8IHQgPT09ICdsYXJnZS10ZXh0LWVkaXRvcicgfHwgdCA9PT0gJ3N0cmluZycgPyAnc3RyaW5nLWZpbHRlcicgOiB0ID09PSAnbnVtYmVyLWVkaXRvcicgfHwgdCA9PT0gJ251bWJlcicgPyAnbnVtYmVyLWZpbHRlcicgOiB0ID09PSAnZGF0ZS10aW1lLWVkaXRvcicgfHwgdCA9PT0gJ2RhdGV0aW1lJyB8fCB0ID09PSAnZGF0ZScgPyAnZGF0ZXRpbWUtZmlsdGVyJyA6IHQgPT09ICdzZWxlY3QtZWRpdG9yJyB8fCB0ID09PSAnc2VsZWN0JyA/ICdzZWxlY3QtZmlsdGVyJyA6IHQgPT09ICdjaGVja2JveC1lZGl0b3InIHx8IHQgPT09ICd0b2dnbGUtZWRpdG9yJyB8fCB0ID09PSAnYm9vbGVhbicgPyAnYm9vbGVhbi1maWx0ZXInIDogdCA9PT0gJ2NvbG9yLWVkaXRvcicgPyAnY29sb3ItZmlsdGVyJyA6ICdzdHJpbmctZmlsdGVyJzsgfSkoKTsgdmFyIGNvcHkgPSB7IGNvbHVtbk5hbWU6IGZsLmNvbHVtbk5hbWUsIGlzUmVxdWlyZWQ6IGZhbHNlLCBlbmFibGVkOiB0cnVlLCBmaWx0ZXI6IHsgY29sdW1uTmFtZTogZmwuY29sdW1uTmFtZSwgdmFsdWU6IGZsLnZhbHVlIH0sIHdpZGdldFR5cGU6IHdpZGdldFR5cGUgfTsgbGlzdC5wdXNoKGNvcHkpOyB9KSgpIDogbnVsbDsgfSB9KSgpIDogbnVsbDsgY29udGV4dC5zZXQoJ2ZpbHRlcnMnLCBsaXN0KTsgfX1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdmaWx0ZXJzJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTpmaWx0ZXJzYCxcbiAgICAgICAgZ3JvdXBJZDogJ2ZpbHRlcnMnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IFtdLFxuICAgICAgICAgIGRhdGFUeXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnJlcGVhdGVyTGF5b3V0LFxuICAgICAgICAgICAgcGF0aDogJ2ZpbHRlcnMnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBoYXNDb250cm9sczogZmFsc2UsXG4gICAgICAgICAgICAgIGlzRHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBBWE1fREFUQVNFVF9GSUxURVJfV0lER0VUIGFzIGFueSxcbiAgICAgICAgICAgIHRyaWdnZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBldmVudDogXCJ7eyBldmVudHMuY29udGV4dCgnZGF0YVNvdXJjZScpIH19XCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBge3sgXG4gICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWREYXRhU291cmNlID0gY29udGV4dC5ldmFsKCdkYXRhU291cmNlJyk7XG4gICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWREYXRhU291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0KCdkYXRhU291cmNlcycsIFtzZWxlY3RlZERhdGFTb3VyY2VdKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY29sdW1ucycsXG4gICAgICAgIHRpdGxlOiBgQCR7aTE4bn06Y29sdW1uc2AsXG4gICAgICAgIGdyb3VwSWQ6ICdmaWx0ZXJzJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBbXSxcbiAgICAgICAgICBkYXRhVHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5yZXBlYXRlckxheW91dCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgaGFzQ29udHJvbHM6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0RyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjogQVhNX0RBVEFTRVRfQ09MVU1OX1dJREdFVCxcbiAgICAgICAgICAgIHRyaWdnZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBldmVudDogXCJ7eyBldmVudHMuY29udGV4dCgnZGF0YVNvdXJjZScpIH19XCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBge3sgY29udGV4dC5zZXQoJ2NvbHVtbnMnLCBjb250ZXh0LmV2YWwoJ2RhdGFTb3VyY2UnKS5jb2x1bW5zKTsgfX1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NvcnRzJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTpzb3J0c2AsXG4gICAgICAgIGdyb3VwSWQ6ICdmaWx0ZXJzJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBbXSxcbiAgICAgICAgICBkYXRhVHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5yZXBlYXRlckxheW91dCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgaGFzQ29udHJvbHM6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0RyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlbjogQVhNX0RBVEFTRVRfU09SVF9XSURHRVQsXG4gICAgICAgICAgICAvLyB0cmlnZ2VyczogW1xuICAgICAgICAgICAgLy8gICB7XG4gICAgICAgICAgICAvLyAgICAgZXZlbnQ6IFwie3sgZXZlbnRzLmNvbnRleHQoJ2RhdGFTb3VyY2UnKSB9fVwiLFxuICAgICAgICAgICAgLy8gICAgIGFjdGlvbjogYHt7IGNvbnRleHQuc2V0KCdzb3J0cycsIGNvbnRleHQuZXZhbCgnZGF0YVNvdXJjZScpLmNvbHVtbnMpOyB9fWAsXG4gICAgICAgICAgICAvLyAgIH0sXG4gICAgICAgICAgICAvLyBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW3sgbmFtZTogJ25hbWUnIH0sIHsgbmFtZTogJ3RpdGxlJyB9LCB7IG5hbWU6ICdkYXRhU291cmNlJyB9XSxcbiAgICBjb21tYW5kczoge1xuICAgICAgY3JlYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcblxuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KGUpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdkYXRhU2V0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnZmlsdGVycycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZGF0YVNvdXJjZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDMsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2ZpbHRlcnMnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogNSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdjb2x1bW5zJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogNSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdzb3J0cycsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDYsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnZGF0YVNldCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2ZpbHRlcnMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2RhdGFTb3VyY2UnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdmaWx0ZXJzJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2RhdGFTZXQnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2RhdGFTb3VyY2UnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZmlsdGVycycsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiA1LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFjdGlvbnM6IFsuLi5lbnRpdHlNYXN0ZXJSZWNvcmRBY3Rpb25zKCldLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgYWN0aW9uczogWy4uLmVudGl0eU1hc3RlckNydWRBY3Rpb25zKCldLFxuICAgICAgICAgIHZpZXdzOiBbXG4gICAgICAgICAgICBjcmVhdGVBbGxRdWVyeVZpZXcoe1xuICAgICAgICAgICAgICBzb3J0czogW3sgbmFtZTogJ25hbWUnLCBkaXI6ICdhc2MnIH1dLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gZW50aXR5RGVmO1xufVxuIl19","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMReportDefinitionServiceImpl extends AXMReportDefinitionService {\n constructor() {\n super('report-definition');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3JlcG9ydC1kZWZpbml0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSx3QkFHeEQ7Q0FBSTtBQUdMLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUFDMUU7UUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvQixDQUFDOytHQUhRLDhCQUE4QjttSEFBOUIsOEJBQThCOzs0RkFBOUIsOEJBQThCO2tCQUQxQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi9yZXBvcnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPFxuICAgIHN0cmluZyxcbiAgICBBWFBSZXBvcnREZWZpbml0aW9uXG4+IHsgfVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUmVwb3J0RGVmaW5pdGlvblNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUmVwb3J0RGVmaW5pdGlvblNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigncmVwb3J0LWRlZmluaXRpb24nKTtcbiAgICB9XG59ICJdfQ==","import { NgModule } from '@angular/core';\nimport { AXMDataSetService, AXMDataSetServiceImpl } from './data-set.service';\nimport * as i0 from \"@angular/core\";\nexport class AXMDataSetEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule, providers: [\n {\n provide: AXMDataSetService,\n useClass: AXMDataSetServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDataSetEntityModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMDataSetService,\n useClass: AXMDataSetServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvZGF0YS1zZXQvZGF0YS1zZXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBYTlFLE1BQU0sT0FBTyxzQkFBc0I7K0dBQXRCLHNCQUFzQjtnSEFBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsYUFQdEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUscUJBQXFCO2FBQ2hDO1NBQ0Y7OzRGQUVVLHNCQUFzQjtrQkFYbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxxQkFBcUI7eUJBQ2hDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTURhdGFTZXRTZXJ2aWNlLCBBWE1EYXRhU2V0U2VydmljZUltcGwgfSBmcm9tICcuL2RhdGEtc2V0LnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYTURhdGFTZXRTZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTURhdGFTZXRTZXJ2aWNlSW1wbCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1EYXRhU2V0RW50aXR5TW9kdWxlIHt9XG4iXX0=","import { NgModule } from '@angular/core';\nimport { AXMReportDefinitionService, AXMReportDefinitionServiceImpl } from './report-definition.service';\nimport * as i0 from \"@angular/core\";\nexport class AXMReportDefinitionEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule, providers: [\n {\n provide: AXMReportDefinitionService,\n useClass: AXMReportDefinitionServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportDefinitionEntityModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMReportDefinitionService,\n useClass: AXMReportDefinitionServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvcmVwb3J0LWRlZmluaXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBYXpHLE1BQU0sT0FBTywrQkFBK0I7K0dBQS9CLCtCQUErQjtnSEFBL0IsK0JBQStCO2dIQUEvQiwrQkFBK0IsYUFQL0I7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxRQUFRLEVBQUUsOEJBQThCO2FBQ3pDO1NBQ0Y7OzRGQUVVLCtCQUErQjtrQkFYM0MsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFFBQVEsRUFBRSw4QkFBOEI7eUJBQ3pDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlLCBBWE1SZXBvcnREZWZpbml0aW9uU2VydmljZUltcGwgfSBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTVJlcG9ydERlZmluaXRpb25TZXJ2aWNlSW1wbCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnREZWZpbml0aW9uRW50aXR5TW9kdWxlIHt9XG4iXX0=","// Entity Services\nexport * from './data-set';\nexport * from './report-definition.service';\n// Entity Modules\nexport * from './data-set/data-set.module';\nexport * from './report-definition.module';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxpQkFBaUI7QUFDakIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRW50aXR5IFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtc2V0JztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3J0LWRlZmluaXRpb24uc2VydmljZSc7XG5cbi8vIEVudGl0eSBNb2R1bGVzXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtc2V0L2RhdGEtc2V0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLm1vZHVsZSc7XG4iXX0=","export class AXMColumnEvaluatorScopeProvider {\n async provide(context) {\n context.addScope('dataSource', {\n getColumn: async (columnName, columns) => {\n const column = columns.find((c) => c.name === columnName);\n return column;\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWV2YWx1YXRvci1zY29wZS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtbGxpc3QvY29sdW1uLWV2YWx1YXRvci1zY29wZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sK0JBQStCO0lBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBbUQ7UUFDL0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDN0IsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFrQixFQUFFLE9BQTJDLEVBQUUsRUFBRTtnQkFDbkYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYUERhdGFTb3VyY2VEYXRhRmllbGREZWZpbml0aW9uLFxuICBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlcixcbiAgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlUHJvdmlkZXJDb250ZXh0LFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQVhNQ29sdW1uRXZhbHVhdG9yU2NvcGVQcm92aWRlciBpbXBsZW1lbnRzIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZVByb3ZpZGVyIHtcbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGVQcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb250ZXh0LmFkZFNjb3BlKCdkYXRhU291cmNlJywge1xuICAgICAgZ2V0Q29sdW1uOiBhc3luYyAoY29sdW1uTmFtZTogc3RyaW5nLCBjb2x1bW5zOiBBWFBEYXRhU291cmNlRGF0YUZpZWxkRGVmaW5pdGlvbltdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoYykgPT4gYy5uYW1lID09PSBjb2x1bW5OYW1lKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { inject } from '@angular/core';\nexport class AXMReportCreateRootWorkflowAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n this.popupService = inject(AXPopupService);\n this.translationService = inject(AXTranslationService);\n }\n async execute(context) {\n // const refId = context.getVariable<string>('options.refId');\n const comp = await import('./report-create-root/report-create-root.component').then(m => m.AXPReportCreateRootComponent);\n this.popupService.open(comp, await this.translationService.translateAsync('report.create.title', { scope: 'report-management' }));\n }\n}\nexport const AXMReportCreateWorkflow = {\n startStepId: 'report-create-root',\n steps: {\n 'report-create-root': {\n action: 'AXMReportCreateRootWorkflowAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"unlocked\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: '@general:workflow.entity-modified-title',\n content: '@general:workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n // modifyConfirmed: {\n // id: 'modifyConfirmed',\n // action: 'AXPEntityModifyConfirmedAction',\n // },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNyZWF0ZS53b3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC9jcmVhdGUvcmVwb3J0LWNyZWF0ZS53b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFlLGlCQUFpQixFQUFzQixNQUFNLDJCQUEyQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLGlCQUFpQjtJQUF4RTs7UUFDVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQVE1RCxDQUFDO0lBTlUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUNsRCwrREFBK0Q7UUFFOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN4SCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnQjtJQUNsRCxXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLEtBQUssRUFBRTtRQUNMLG9CQUFvQixFQUFFO1lBQ3BCLE1BQU0sRUFBRSxtQ0FBbUM7WUFDM0MsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsdUNBQXVDLEVBQUUsQ0FBQztvQkFDckYsVUFBVSxFQUFFLGNBQWM7aUJBQzNCO2FBQ0Y7U0FDRjtRQUNELFlBQVksRUFBRTtZQUNaLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUseUNBQXlDO2dCQUNoRCxPQUFPLEVBQUUsd0NBQXdDO2FBQ2xEO1lBQ0QsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxFQUFFO29CQUNkLFVBQVUsRUFBRSxpQkFBaUI7aUJBQzlCO2FBQ0Y7U0FDRjtRQUNELHFCQUFxQjtRQUNyQiwyQkFBMkI7UUFDM0IsOENBQThDO1FBQzlDLEtBQUs7S0FDTjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXb3JrZmxvdywgQVhQV29ya2Zsb3dBY3Rpb24sIEFYUFdvcmtmbG93Q29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd29ya2Zsb3cnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBWE1SZXBvcnRDcmVhdGVSb290V29ya2Zsb3dBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29udGV4dDogQVhQV29ya2Zsb3dDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vICBjb25zdCByZWZJZCA9IGNvbnRleHQuZ2V0VmFyaWFibGU8c3RyaW5nPignb3B0aW9ucy5yZWZJZCcpO1xuXG4gICBjb25zdCBjb21wID0gYXdhaXQgaW1wb3J0KCcuL3JlcG9ydC1jcmVhdGUtcm9vdC9yZXBvcnQtY3JlYXRlLXJvb3QuY29tcG9uZW50JykudGhlbihtID0+IG0uQVhQUmVwb3J0Q3JlYXRlUm9vdENvbXBvbmVudCk7XG4gICAgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb21wLCBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygncmVwb3J0LmNyZWF0ZS50aXRsZScsIHsgc2NvcGU6ICdyZXBvcnQtbWFuYWdlbWVudCcgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBWE1SZXBvcnRDcmVhdGVXb3JrZmxvdzogQVhQV29ya2Zsb3cgPSB7XG4gIHN0YXJ0U3RlcElkOiAncmVwb3J0LWNyZWF0ZS1yb290JyxcbiAgc3RlcHM6IHtcbiAgICAncmVwb3J0LWNyZWF0ZS1yb290Jzoge1xuICAgICAgYWN0aW9uOiAnQVhNUmVwb3J0Q3JlYXRlUm9vdFdvcmtmbG93QWN0aW9uJyxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW3sgdHlwZTogJ1NJTkdMRScsIGV4cHJlc3Npb246ICdjb250ZXh0LmdldE91dHB1dChcInVubG9ja2VkXCIpID09IHRydWUnIH1dLFxuICAgICAgICAgIG5leHRTdGVwSWQ6ICdzdWNjZXNzVG9hc3QnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHN1Y2Nlc3NUb2FzdDoge1xuICAgICAgaWQ6ICdzdWNjZXNzVG9hc3QnLFxuICAgICAgYWN0aW9uOiAnQVhQVG9hc3RBY3Rpb24nLFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp3b3JrZmxvdy5lbnRpdHktbW9kaWZpZWQtdGl0bGUnLFxuICAgICAgICBjb250ZW50OiAnQGdlbmVyYWw6d29ya2Zsb3cuZW50aXR5LW1vZGlmaWVkLWJvZHknLFxuICAgICAgfSxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW10sXG4gICAgICAgICAgbmV4dFN0ZXBJZDogJ21vZGlmeUNvbmZpcm1lZCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgLy8gbW9kaWZ5Q29uZmlybWVkOiB7XG4gICAgLy8gICBpZDogJ21vZGlmeUNvbmZpcm1lZCcsXG4gICAgLy8gICBhY3Rpb246ICdBWFBFbnRpdHlNb2RpZnlDb25maXJtZWRBY3Rpb24nLFxuICAgIC8vIH0sXG4gIH0sXG59OyAiXX0=","import { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXPDomainModule, provideEntity } from '@acorex/platform/domain';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { RootConfig } from './const';\nimport { AXM_REPORT_CATEGORY_PROVIDER, AXM_REPORT_DEFINITION_PROVIDER, } from './features/report-runner/reports.provider';\nimport { AXMMenuProvider } from './menu.provider';\n// Entity Modules\nimport { AXMDataSetEntityModule, AXMReportDefinitionEntityModule, } from './entities';\nimport { inject, Injector } from '@angular/core';\nimport { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXMColumnEvaluatorScopeProvider } from './features/data-llist/column-evaluator-scope.provider';\nimport { AXMReportCreateRootWorkflowAction, AXMReportCreateWorkflow, } from './features/report/create/report-create.workflow';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/workflow\";\nfunction routesFacory() {\n let routes = [\n {\n path: `:app/${RootConfig.module.route}/viewer`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: ':reportId',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n {\n path: '',\n loadComponent: () => import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then((c) => c.AXPReportViewerPageComponent),\n data: { reuse: true },\n },\n ],\n },\n {\n path: `:app/${RootConfig.module.route}/reports`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '**',\n loadComponent: () => import('./features/report-runner/report-runner-root-page/report-runner-root-page.component').then((c) => c.AXMReportRunnerRootPageComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXMReportManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, imports: [AXPDomainModule,\n // Entity Modules\n AXMDataSetEntityModule,\n AXMReportDefinitionEntityModule, i1.AXPWorkflowModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, providers: [\n // Removed individual entity service provider - now provided by entity modules\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./permission-definition.provider')).AXMPermissionDefinitionProvider;\n return new provider(injector);\n },\n multi: true,\n },\n // {\n // provide: AXP_SEARCH_PROVIDER,\n // useClass: AXPReportSearchProvider,\n // multi: true,\n // },\n // {\n // provide: AXP_SEARCH_DEFINITION_PROVIDER,\n // useClass: AXPReportSearchDefinitionProvider,\n // multi: true,\n // },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMColumnEvaluatorScopeProvider,\n multi: true,\n },\n ], imports: [AXPDomainModule,\n // Entity Modules\n AXMDataSetEntityModule,\n AXMReportDefinitionEntityModule,\n AXPWorkflowModule.forChild({\n actions: {\n AXMReportCreateRootWorkflowAction,\n },\n workflows: {\n 'report-create': AXMReportCreateWorkflow,\n },\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMReportManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPDomainModule,\n // Entity Modules\n AXMDataSetEntityModule,\n AXMReportDefinitionEntityModule,\n AXPWorkflowModule.forChild({\n actions: {\n AXMReportCreateRootWorkflowAction,\n },\n workflows: {\n 'report-create': AXMReportCreateWorkflow,\n },\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n // Removed individual entity service provider - now provided by entity modules\n AXM_REPORT_DEFINITION_PROVIDER,\n AXM_REPORT_CATEGORY_PROVIDER,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useFactory: async () => {\n const injector = inject(Injector);\n const provider = (await import('./permission-definition.provider')).AXMPermissionDefinitionProvider;\n return new provider(injector);\n },\n multi: true,\n },\n // {\n // provide: AXP_SEARCH_PROVIDER,\n // useClass: AXPReportSearchProvider,\n // multi: true,\n // },\n // {\n // provide: AXP_SEARCH_DEFINITION_PROVIDER,\n // useClass: AXPReportSearchDefinitionProvider,\n // multi: true,\n // },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMColumnEvaluatorScopeProvider,\n multi: true,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcmVwb3J0LW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw4QkFBOEIsR0FDL0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsaUJBQWlCO0FBQ2pCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsK0JBQStCLEdBQ2hDLE1BQU0sWUFBWSxDQUFDO0FBa0RwQixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLHVC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UUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNoQyxDQUFDOzRCQUNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELElBQUk7d0JBQ0osb0NBQW9DO3dCQUNwQyx5Q0FBeUM7d0JBQ3pDLG1CQUFtQjt3QkFDbkIsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLCtDQUErQzt3QkFDL0MsbURBQW1EO3dCQUNuRCxtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0w7NEJBQ0UsT0FBTyxFQUFFLE1BQU07NEJBQ2YsS0FBSyxFQUFFLElBQUk7NEJBQ1gsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3dCQUVELGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDM0Y7NEJBQ0UsT0FBTyxFQUFFLHVDQUF1Qzs0QkFDaEQsUUFBUSxFQUFFLCtCQUErQjs0QkFDekMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBBdXRoR3VhcmQsIEFYUF9QRVJNSVNTSU9OX0RFRklOSVRJT05fUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQX01FTlVfUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBEb21haW5Nb2R1bGUsIHByb3ZpZGVFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2RvbWFpbic7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHtcbiAgQVhNX1JFUE9SVF9DQVRFR09SWV9QUk9WSURFUixcbiAgQVhNX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxufSBmcm9tICcuL2ZlYXR1cmVzL3JlcG9ydC1ydW5uZXIvcmVwb3J0cy5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1NZW51UHJvdmlkZXIgfSBmcm9tICcuL21lbnUucHJvdmlkZXInO1xuXG4vLyBFbnRpdHkgTW9kdWxlc1xuaW1wb3J0IHtcbiAgQVhNRGF0YVNldEVudGl0eU1vZHVsZSxcbiAgQVhNUmVwb3J0RGVmaW5pdGlvbkVudGl0eU1vZHVsZSxcbn0gZnJvbSAnLi9lbnRpdGllcyc7XG5cbmZ1bmN0aW9uIHJvdXRlc0ZhY29yeSgpIHtcbiAgbGV0IHJvdXRlczogUm91dGVzID0gW1xuICAgIHtcbiAgICAgIHBhdGg6IGA6YXBwLyR7Um9vdENvbmZpZy5tb2R1bGUucm91dGV9L3ZpZXdlcmAsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBBWFBSb290TGF5b3V0Q29tcG9uZW50O1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnOnJlcG9ydElkJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAoYykgPT4gYy5BWFBSZXBvcnRWaWV3ZXJQYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAoYykgPT4gYy5BWFBSZXBvcnRWaWV3ZXJQYWdlQ29tcG9uZW50LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcGF0aDogYDphcHAvJHtSb290Q29uZmlnLm1vZHVsZS5yb3V0ZX0vcmVwb3J0c2AsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBBWFBSb290TGF5b3V0Q29tcG9uZW50O1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnKionLFxuICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvcmVwb3J0LXJ1bm5lci9yZXBvcnQtcnVubmVyLXJvb3QtcGFnZS9yZXBvcnQtcnVubmVyLXJvb3QtcGFnZS5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAoYykgPT4gYy5BWE1SZXBvcnRSdW5uZXJSb290UGFnZUNvbXBvbmVudCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZGF0YTogeyByZXVzZTogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gcm91dGVzO1xufVxuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBfRVhQUkVTU0lPTl9FVkFMVUFUT1JfU0NPUEVfUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEFYTUNvbHVtbkV2YWx1YXRvclNjb3BlUHJvdmlkZXIgfSBmcm9tICcuL2ZlYXR1cmVzL2RhdGEtbGxpc3QvY29sdW1uLWV2YWx1YXRvci1zY29wZS5wcm92aWRlcic7XG5pbXBvcnQge1xuICBBWE1SZXBvcnRDcmVhdGVSb290V29ya2Zsb3dBY3Rpb24sXG4gIEFYTVJlcG9ydENyZWF0ZVdvcmtmbG93LFxufSBmcm9tICcuL2ZlYXR1cmVzL3JlcG9ydC9jcmVhdGUvcmVwb3J0LWNyZWF0ZS53b3JrZmxvdyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBWFBEb21haW5Nb2R1bGUsXG4gICAgLy8gRW50aXR5IE1vZHVsZXNcbiAgICBBWE1EYXRhU2V0RW50aXR5TW9kdWxlLFxuICAgIEFYTVJlcG9ydERlZmluaXRpb25FbnRpdHlNb2R1bGUsXG4gICAgQVhQV29ya2Zsb3dNb2R1bGUuZm9yQ2hpbGQoe1xuICAgICAgYWN0aW9uczoge1xuICAgICAgICBBWE1SZXBvcnRDcmVhdGVSb290V29ya2Zsb3dBY3Rpb24sXG4gICAgICB9LFxuICAgICAgd29ya2Zsb3dzOiB7XG4gICAgICAgICdyZXBvcnQtY3JlYXRlJzogQVhNUmVwb3J0Q3JlYXRlV29ya2Zsb3csXG4gICAgICB9LFxuICAgIH0pLFxuICBdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gUmVtb3ZlZCBpbmRpdmlkdWFsIGVudGl0eSBzZXJ2aWNlIHByb3ZpZGVyIC0gbm93IHByb3ZpZGVkIGJ5IGVudGl0eSBtb2R1bGVzXG4gICAgQVhNX1JFUE9SVF9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgIEFYTV9SRVBPUlRfQ0FURUdPUllfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX01FTlVfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNTWVudVByb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgICAgdXNlRmFjdG9yeTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gKGF3YWl0IGltcG9ydCgnLi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXInKSkuQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIG5ldyBwcm92aWRlcihpbmplY3Rvcik7XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAgIHByb3ZpZGU6IEFYUF9TRUFSQ0hfUFJPVklERVIsXG4gICAgLy8gICAgIHVzZUNsYXNzOiBBWFBSZXBvcnRTZWFyY2hQcm92aWRlcixcbiAgICAvLyAgICAgbXVsdGk6IHRydWUsXG4gICAgLy8gfSxcbiAgICAvLyB7XG4gICAgLy8gICAgIHByb3ZpZGU6IEFYUF9TRUFSQ0hfREVGSU5JVElPTl9QUk9WSURFUixcbiAgICAvLyAgICAgdXNlQ2xhc3M6IEFYUFJlcG9ydFNlYXJjaERlZmluaXRpb25Qcm92aWRlcixcbiAgICAvLyAgICAgbXVsdGk6IHRydWUsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY29yeSxcbiAgICB9LFxuXG4gICAgcHJvdmlkZUVudGl0eShbUm9vdENvbmZpZy5lbnRpdGllcy5yZXBvcnQuZnVsbE5hbWUsIFJvb3RDb25maWcuZW50aXRpZXMuY2F0ZWdvcnkuZnVsbE5hbWVdKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfRVhQUkVTU0lPTl9FVkFMVUFUT1JfU0NPUEVfUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhNQ29sdW1uRXZhbHVhdG9yU2NvcGVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVJlcG9ydE1hbmFnZW1lbnRNb2R1bGUgeyB9XG4iXX0=","export const AXMPermissionsKeys = {\n ReportManagement: {\n Management: 'report-management:manage',\n Report: {\n Management: 'report-management:report:manage',\n View: 'report-management:report:view',\n Create: 'report-management:report:create',\n Update: 'report-management:report:update',\n Delete: 'report-management:report:delete',\n },\n Category: {\n Management: 'report-management:category:manage',\n View: 'report-management:category:view',\n Create: 'report-management:category:create',\n Update: 'report-management:category:update',\n Delete: 'report-management:category:delete',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLGdCQUFnQixFQUFFO1FBQ2hCLFVBQVUsRUFBRSwwQkFBMEI7UUFDdEMsTUFBTSxFQUFFO1lBQ04sVUFBVSxFQUFFLGlDQUFpQztZQUM3QyxJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLE1BQU0sRUFBRSxpQ0FBaUM7WUFDekMsTUFBTSxFQUFFLGlDQUFpQztZQUN6QyxNQUFNLEVBQUUsaUNBQWlDO1NBQzFDO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsVUFBVSxFQUFFLG1DQUFtQztZQUMvQyxJQUFJLEVBQUUsaUNBQWlDO1lBQ3ZDLE1BQU0sRUFBRSxtQ0FBbUM7WUFDM0MsTUFBTSxFQUFFLG1DQUFtQztZQUMzQyxNQUFNLEVBQUUsbUNBQW1DO1NBQzVDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYTVBlcm1pc3Npb25zS2V5cyA9IHtcbiAgUmVwb3J0TWFuYWdlbWVudDoge1xuICAgIE1hbmFnZW1lbnQ6ICdyZXBvcnQtbWFuYWdlbWVudDptYW5hZ2UnLFxuICAgIFJlcG9ydDoge1xuICAgICAgTWFuYWdlbWVudDogJ3JlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydDptYW5hZ2UnLFxuICAgICAgVmlldzogJ3JlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydDp2aWV3JyxcbiAgICAgIENyZWF0ZTogJ3JlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydDpjcmVhdGUnLFxuICAgICAgVXBkYXRlOiAncmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0OnVwZGF0ZScsXG4gICAgICBEZWxldGU6ICdyZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQ6ZGVsZXRlJyxcbiAgICB9LFxuICAgIENhdGVnb3J5OiB7XG4gICAgICBNYW5hZ2VtZW50OiAncmVwb3J0LW1hbmFnZW1lbnQ6Y2F0ZWdvcnk6bWFuYWdlJyxcbiAgICAgIFZpZXc6ICdyZXBvcnQtbWFuYWdlbWVudDpjYXRlZ29yeTp2aWV3JyxcbiAgICAgIENyZWF0ZTogJ3JlcG9ydC1tYW5hZ2VtZW50OmNhdGVnb3J5OmNyZWF0ZScsXG4gICAgICBVcGRhdGU6ICdyZXBvcnQtbWFuYWdlbWVudDpjYXRlZ29yeTp1cGRhdGUnLFxuICAgICAgRGVsZXRlOiAncmVwb3J0LW1hbmFnZW1lbnQ6Y2F0ZWdvcnk6ZGVsZXRlJyxcbiAgICB9LFxuICB9LFxufTtcblxuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXMPermissionsKeys.ReportManagement;\n const trans = async (key) => await this.translateService.translateAsync(key);\n context\n .addGroup(keys.Management, await trans('@report-management:module.menus.root.title'))\n // Reports Management\n .addPermission(keys.Report.Management, await trans('@report-management:reports.permissions.reports.title'))\n .addChild(keys.Report.View, await trans('@report-management:reports.permissions.reports.actions.view.title'))\n .addChild(keys.Report.Create, await trans('@report-management:reports.permissions.reports.actions.create.title'))\n .addChild(keys.Report.Update, await trans('@report-management:reports.permissions.reports.actions.update.title'))\n .addChild(keys.Report.Delete, await trans('@report-management:reports.permissions.reports.actions.delete.title'))\n .endPermission()\n // Categories Management\n .addPermission(keys.Category.Management, await trans('@report-management:reports.permissions.categories.title'))\n .addChild(keys.Category.View, await trans('@report-management:reports.permissions.categories.actions.view.title'))\n .addChild(keys.Category.Create, await trans('@report-management:reports.permissions.categories.actions.create.title'))\n .addChild(keys.Category.Update, await trans('@report-management:reports.permissions.categories.actions.update.title'))\n .addChild(keys.Category.Delete, await trans('@report-management:reports.permissions.categories.actions.delete.title'))\n .endPermission()\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvcGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUd2RCxNQUFNLE9BQU8sK0JBQStCO0lBRzFDLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGckIscUJBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUVuQyxDQUFDO0lBRTFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBK0M7UUFDMUQsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJGLE9BQU87YUFDSixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ3JGLHFCQUFxQjthQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzthQUMxRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQzthQUM1RyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUNoSCxhQUFhLEVBQUU7WUFDaEIsd0JBQXdCO2FBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2FBQy9HLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO2FBQ2pILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2FBQ3JILGFBQWEsRUFBRTthQUNmLFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBMUJVLCtCQUErQjttSEFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciwgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVBlcm1pc3Npb25zS2V5cyB9IGZyb20gJy4vcGVybWlzc2lvbi5rZXlzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGFzeW5jIGRlZmluZShjb250ZXh0OiBBWFBQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleXMgPSBBWE1QZXJtaXNzaW9uc0tleXMuUmVwb3J0TWFuYWdlbWVudDtcbiAgICBjb25zdCB0cmFucyA9IGFzeW5jIChrZXk6IHN0cmluZykgPT4gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGtleSk7XG5cbiAgICBjb250ZXh0XG4gICAgICAuYWRkR3JvdXAoa2V5cy5NYW5hZ2VtZW50LCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50Om1vZHVsZS5tZW51cy5yb290LnRpdGxlJykpXG4gICAgICAvLyBSZXBvcnRzIE1hbmFnZW1lbnRcbiAgICAgIC5hZGRQZXJtaXNzaW9uKGtleXMuUmVwb3J0Lk1hbmFnZW1lbnQsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5SZXBvcnQuVmlldywgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLnJlcG9ydHMuYWN0aW9ucy52aWV3LnRpdGxlJykpXG4gICAgICAuYWRkQ2hpbGQoa2V5cy5SZXBvcnQuQ3JlYXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMucmVwb3J0cy5hY3Rpb25zLmNyZWF0ZS50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuUmVwb3J0LlVwZGF0ZSwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLnJlcG9ydHMuYWN0aW9ucy51cGRhdGUudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLlJlcG9ydC5EZWxldGUsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5yZXBvcnRzLmFjdGlvbnMuZGVsZXRlLnRpdGxlJykpXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvLyBDYXRlZ29yaWVzIE1hbmFnZW1lbnRcbiAgICAgIC5hZGRQZXJtaXNzaW9uKGtleXMuQ2F0ZWdvcnkuTWFuYWdlbWVudCwgYXdhaXQgdHJhbnMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnRzLnBlcm1pc3Npb25zLmNhdGVnb3JpZXMudGl0bGUnKSlcbiAgICAgIC5hZGRDaGlsZChrZXlzLkNhdGVnb3J5LlZpZXcsIGF3YWl0IHRyYW5zKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0cy5wZXJtaXNzaW9ucy5jYXRlZ29yaWVzLmFjdGlvbnMudmlldy50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuQ2F0ZWdvcnkuQ3JlYXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLmNyZWF0ZS50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuQ2F0ZWdvcnkuVXBkYXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLnVwZGF0ZS50aXRsZScpKVxuICAgICAgLmFkZENoaWxkKGtleXMuQ2F0ZWdvcnkuRGVsZXRlLCBhd2FpdCB0cmFucygnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydHMucGVybWlzc2lvbnMuY2F0ZWdvcmllcy5hY3Rpb25zLmRlbGV0ZS50aXRsZScpKVxuICAgICAgLmVuZFBlcm1pc3Npb24oKVxuICAgICAgLmVuZEdyb3VwKCk7XG4gIH1cbn1cblxuIl19","import { AXLocaleService } from '@acorex/core/locale';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { AXPReportDefinitionService, } from '../../reports';\nexport const AXPReportViewerViewModel = signalStore(withState(() => ({\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n categoriesPath: [],\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null, // Track last applied filters\n hasBeenExecuted: false, // Track if report has been executed at least once\n status: AXPPageStatus.Idle,\n error: null,\n})), withComputed((store) => ({\n //#region ---- Layout Management ----\n availableLayouts: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts)\n return [];\n return report.layouts.map((layout) => ({\n id: layout.id,\n title: layout.title,\n icon: layout.icon,\n type: layout.layout.type,\n }));\n }),\n defaultLayout: computed(() => {\n const report = store.reportDefinition();\n if (!report?.layouts?.length)\n return null;\n // Find layout marked as default, or use first layout\n return report.layouts.find((l) => l.isDefault) || report.layouts[0];\n }),\n activeLayoutId: computed(() => store.currentLayout()?.id || null),\n layoutType: computed(() => store.currentLayout()?.layout?.type || null),\n //#endregion\n //#region ---- Layout-Specific Configurations ----\n tableLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'table' ? layout.layout : null;\n }),\n chartLayoutConfig: computed(() => {\n const layout = store.currentLayout();\n return layout?.layout?.type === 'chart' ? layout.layout : null;\n }),\n //#endregion\n //#region ---- State Indicators ----\n isLoading: computed(() => store.status() === AXPPageStatus.Processing),\n isExecuting: computed(() => store.status() === AXPPageStatus.Submitting),\n hasError: computed(() => store.error() !== null),\n canExecute: computed(() => {\n // Always allow execution if there's an error (to enable retry)\n if (store.error() !== null) {\n return true;\n }\n // Allow execution if there are unapplied filters\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n if (hasBeenExecuted && JSON.stringify(currentContext) !== JSON.stringify(lastApplied)) {\n return true;\n }\n // Allow execution if report hasn't been executed yet\n if (!hasBeenExecuted) {\n return true;\n }\n // Otherwise, don't allow execution\n return false;\n }),\n hasMultipleLayouts: computed(() => {\n const report = store.reportDefinition();\n return (report?.layouts?.length ?? 0) > 1;\n }),\n title: computed(() => store.reportDefinition()?.title ?? 'Report Viewer'),\n description: computed(() => store.reportDefinition()?.description ?? null),\n //#endregion\n //#region ---- Form Configuration ----\n formDefinition: computed(() => {\n const report = store.reportDefinition();\n if (!report || !report.parameterGroups) {\n return { groups: [] };\n }\n const formDefinition = {\n groups: report.parameterGroups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n parameters: group.parameters.map((param) => ({\n path: param.path,\n title: param.title,\n description: param.description,\n widget: {\n ...param.widget,\n options: {\n ...param.widget.options,\n clearButton: true,\n hasClearButton: true,\n },\n },\n })),\n })),\n };\n return formDefinition;\n }),\n //#endregion\n //#region ---- Layout Type Detection ----\n isTableLayout: computed(() => store.currentLayout()?.layout?.type === 'table'),\n isChartLayout: computed(() => store.currentLayout()?.layout?.type === 'chart'),\n //#endregion\n //#region ---- Filter States ----\n hasUnappliedFilters: computed(() => {\n const currentContext = store.filterContext();\n const lastApplied = store.lastAppliedFilterContext();\n const hasBeenExecuted = store.hasBeenExecuted();\n // If report has never been executed, don't show unapplied filters warning\n if (!hasBeenExecuted) {\n return false;\n }\n // If no filters have been applied yet, return true\n if (lastApplied === null) {\n return true;\n }\n // Check if current filters are different from last applied filters\n const currentKeys = Object.keys(currentContext);\n const lastKeys = Object.keys(lastApplied);\n if (currentKeys.length !== lastKeys.length) {\n return true;\n }\n // Check if any values are different\n for (const key of currentKeys) {\n if (currentContext[key] !== lastApplied[key]) {\n return true;\n }\n }\n return false;\n }),\n //#endregion\n //#region ---- Action States ----\n canSwitchLayout: computed(() => (store.reportDefinition()?.layouts?.length ?? 0) > 1 && store.status() !== AXPPageStatus.Submitting),\n canSelectRows: computed(() => {\n const layout = store.currentLayout();\n return (layout?.layout?.type === 'table' &&\n layout.layout.options?.selectable?.mode &&\n layout.layout.options?.selectable?.mode !== 'none');\n }),\n //#endregion\n})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService), commandService = inject(AXPCommandService)) => {\n const executeReport = async () => {\n try {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n patchState(store, {\n error: 'Report or layout not found',\n });\n return;\n }\n patchState(store, {\n status: AXPPageStatus.Submitting,\n error: null,\n allowFetchData: true,\n shouldExecuteReport: true,\n lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied\n hasBeenExecuted: true, // Mark that report has been executed at least once\n });\n patchState(store, {\n status: AXPPageStatus.Submitted,\n error: null,\n });\n }\n catch (error) {\n patchState(store, {\n status: AXPPageStatus.Error,\n error: error instanceof Error ? error.message : 'An unexpected error occurred while executing the report',\n });\n }\n };\n const fetchData = async (parameters = {}) => {\n const report = store.reportDefinition();\n const layout = store.currentLayout();\n if (!report || !layout) {\n return null;\n }\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n // Create execution context - ensure dataSource is provided\n const dataSource = layout.dataSource || {\n type: 'query',\n name: 'getEmployeeList',\n };\n const context = {\n reportId: report.id,\n layoutId: layout.id,\n dataSource: dataSource,\n parameters: {\n ...store.filterContext(),\n ...parameters,\n },\n };\n const executionResult = await commandService.execute('ReportManagement.Report:Execute', context);\n if (!executionResult?.success || !executionResult.data) {\n patchState(store, {\n error: executionResult?.message?.text || 'Failed to execute report',\n });\n return null;\n }\n return executionResult.data;\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to execute report',\n });\n console.error('Error executing report:', error);\n return null;\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n };\n return {\n //#region ---- Report Loading ----\n async loadReport(reportId) {\n patchState(store, {\n status: AXPPageStatus.Processing,\n error: null,\n });\n try {\n const report = await reportDefinitionService.getReportById(reportId);\n if (report) {\n // Configure parameter widgets with proper paths\n report.parameterGroups.forEach((group) => {\n group.parameters.forEach((param) => {\n param.widget.path = param.path;\n });\n });\n // Load categories path for breadcrumbs\n const categoriesPath = await reportDefinitionService.getCategoriesPathByReportId(reportId);\n // Set default layout\n const defaultLayout = report.layouts.find((l) => l.isDefault) || report.layouts[0];\n patchState(store, {\n reportDefinition: report,\n currentLayout: defaultLayout,\n categoriesPath: categoriesPath || [],\n filterContext: {}, // Reset context when loading new report\n allowFetchData: false,\n hasBeenExecuted: false, // Reset execution state for new report\n });\n }\n }\n catch (error) {\n patchState(store, {\n error: 'Failed to load report definition',\n });\n console.error('Error loading report:', error);\n }\n finally {\n patchState(store, {\n status: AXPPageStatus.Idle,\n });\n }\n },\n //#endregion\n //#region ---- Layout Management ----\n switchLayout(layoutId) {\n const report = store.reportDefinition();\n if (!report)\n return;\n const layout = report.layouts.find((l) => l.id === layoutId);\n if (layout) {\n patchState(store, {\n currentLayout: layout,\n });\n }\n },\n //#endregion\n //#region ---- Data Execution ----\n executeReport,\n fetchData,\n //#endregion\n //#region ---- Filter Management ----\n updateFilterContext(context) {\n patchState(store, {\n filterContext: { ...store.filterContext(), ...context },\n shouldExecuteReport: false, // Reset execution flag when filters change\n });\n },\n clearFilters() {\n patchState(store, {\n allowFetchData: false,\n shouldExecuteReport: false,\n filterContext: {},\n lastAppliedFilterContext: null, // Reset applied filters when clearing\n hasBeenExecuted: false, // Reset execution state when clearing filters\n });\n },\n resetFilters() {\n patchState(store, {\n allowFetchData: false,\n });\n },\n //#endregion\n //#region ---- Export Management ----\n async exportReport(format) {\n const layout = store.currentLayout();\n if (!layout?.export) {\n console.warn('Export not configured for current layout');\n return;\n }\n try {\n // Export logic would go here\n // This would typically call a different command for export\n console.log(`Exporting report in ${format} format`);\n }\n catch (error) {\n console.error('Error exporting report:', error);\n }\n },\n //#endregion\n //#region ---- Utility Methods ----\n refresh() {\n return executeReport();\n },\n clearError() {\n patchState(store, {\n error: null,\n });\n },\n clearExecutionState() {\n patchState(store, {\n hasBeenExecuted: false,\n allowFetchData: false,\n shouldExecuteReport: false,\n });\n },\n cancel() {\n patchState(store, {\n status: AXPPageStatus.Idle,\n hasBeenExecuted: false,\n error: null,\n });\n //TODO: Cancel the report execution\n },\n reset() {\n patchState(store, {\n reportDefinition: null,\n currentLayout: null,\n filterContext: {},\n allowFetchData: false,\n shouldExecuteReport: false,\n lastAppliedFilterContext: null,\n hasBeenExecuted: false,\n categoriesPath: [],\n status: AXPPageStatus.Idle,\n error: null,\n });\n },\n //#endregion\n };\n}), withHooks((store, translationService = inject(AXTranslationService), localeService = inject(AXLocaleService)) => ({\n async onInit() {\n // Subscribe to language and locale changes\n translationService.langChanges$.subscribe(() => {\n // Handle language change if needed\n });\n localeService.profileChanged$.subscribe(() => {\n // Handle locale change if needed\n });\n },\n onDestroy() {\n // Cleanup if needed\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci52aWV3bW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXIudmlld21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFNTCwwQkFBMEIsR0FLM0IsTUFBTSxlQUFlLENBQUM7QUFFdkIsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNmLGdCQUFnQixFQUFFLElBQWtDO0lBQ3BELGFBQWEsRUFBRSxJQUF3QztJQUN2RCxhQUFhLEVBQUUsRUFBb0I7SUFDbkMsY0FBYyxFQUFFLEVBQVc7SUFDM0IsY0FBYyxFQUFFLEtBQUs7SUFDckIsbUJBQW1CLEVBQUUsS0FBSztJQUMxQix3QkFBd0IsRUFBRSxJQUE2QixFQUFFLDZCQUE2QjtJQUN0RixlQUFlLEVBQUUsS0FBSyxFQUFFLGtEQUFrRDtJQUMxRSxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUk7SUFDMUIsS0FBSyxFQUFFLElBQXFCO0NBQzdCLENBQUMsQ0FBQyxFQUVILFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2Qix5Q0FBeUM7SUFFekMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM5QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVoQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUN2QixDQUFDLE1BQWlDLEVBQUUsRUFBRSxDQUNwQyxDQUFDO1lBQ0MsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1NBQ3pCLENBQTRCLENBQ2hDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMzQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFMUMscURBQXFEO1FBQ3JELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUM7SUFFRixjQUFjLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDO0lBRWpFLFVBQVUsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0lBRXZFLFlBQVk7SUFFWixzREFBc0Q7SUFFdEQsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsT0FBTyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0YsQ0FBQyxDQUFDO0lBRUYsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsT0FBTyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0YsQ0FBQyxDQUFDO0lBRUYsWUFBWTtJQUVaLHdDQUF3QztJQUV4QyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDO0lBQ3RFLFdBQVcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQUM7SUFDeEUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQ2hELFVBQVUsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3hCLCtEQUErRDtRQUMvRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxpREFBaUQ7UUFDakQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3JELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVoRCxJQUFJLGVBQWUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN0RixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELG1DQUFtQztRQUNuQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUNGLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFFRixLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEtBQUssSUFBSSxlQUFlLENBQUM7SUFDekUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDO0lBRTFFLFlBQVk7SUFFWiwwQ0FBMEM7SUFFMUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDNUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBOEIsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUc7WUFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBOEIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsTUFBTSxFQUFFO3dCQUNOLEdBQUcsS0FBSyxDQUFDLE1BQU07d0JBQ2YsT0FBTyxFQUFFOzRCQUNQLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPOzRCQUN2QixXQUFXLEVBQUUsSUFBSTs0QkFDakIsY0FBYyxFQUFFLElBQUk7eUJBQ3JCO3FCQUNGO2lCQUNGLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUN3QixDQUFDO1FBQzlCLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLFlBQVk7SUFFWiw2Q0FBNkM7SUFFN0MsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPLENBQUM7SUFDOUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPLENBQUM7SUFFOUUsWUFBWTtJQUVaLHFDQUFxQztJQUVyQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNyRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFaEQsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixZQUFZO0lBRVoscUNBQXFDO0lBRXJDLGVBQWUsRUFBRSxRQUFRLENBQ3ZCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQzFHO0lBRUQsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDM0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sQ0FDTCxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksS0FBSyxPQUFPO1lBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJO1lBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEtBQUssTUFBTSxDQUNuRCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsWUFBWTtDQUNiLENBQUMsQ0FBQyxFQUVILFdBQVcsQ0FDVCxDQUNFLEtBQUssRUFDTCwwQkFBc0QsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQ3hGLGlCQUFvQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFDN0QsRUFBRTtJQUNGLE1BQU0sYUFBYSxHQUFHLEtBQUssSUFBbUIsRUFBRTtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNoQixLQUFLLEVBQUUsNEJBQTRCO2lCQUNwQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztZQUNULENBQUM7WUFFRCxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNoQixNQUFNLEVBQUUsYUFBYSxDQUFDLFVBQVU7Z0JBQ2hDLEtBQUssRUFBRSxJQUFJO2dCQUNYLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixtQkFBbUIsRUFBRSxJQUFJO2dCQUN6Qix3QkFBd0IsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsa0NBQWtDO2dCQUMxRixlQUFlLEVBQUUsSUFBSSxFQUFFLG1EQUFtRDthQUMzRSxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNoQixNQUFNLEVBQUUsYUFBYSxDQUFDLFNBQVM7Z0JBQy9CLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNoQixNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUs7Z0JBQzNCLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx5REFBeUQ7YUFDMUcsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssRUFBRSxhQUE2QixFQUFFLEVBQW1ELEVBQUU7UUFDM0csTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxhQUFhLENBQUMsVUFBVTtZQUNoQyxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQztZQUNILDJEQUEyRDtZQUMzRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJO2dCQUN0QyxJQUFJLEVBQUUsT0FBZ0I7Z0JBQ3RCLElBQUksRUFBRSxpQkFBaUI7YUFDeEIsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUE4QjtnQkFDekMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixVQUFVLEVBQUU7b0JBQ1YsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFO29CQUN4QixHQUFHLFVBQVU7aUJBQ2Q7YUFDRixDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2RCxVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNoQixLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksMEJBQTBCO2lCQUNwRSxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsS0FBSyxFQUFFLDBCQUEwQjthQUNsQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsc0NBQXNDO1FBRXRDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBZ0I7WUFDL0IsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxVQUFVO2dCQUNoQyxLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxnREFBZ0Q7b0JBQ2hELE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ3ZDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7NEJBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO29CQUVILHVDQUF1QztvQkFDdkMsTUFBTSxjQUFjLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFM0YscUJBQXFCO29CQUNyQixNQUFNLGFBQWEsR0FDakIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFMUYsVUFBVSxDQUFDLEtBQUssRUFBRTt3QkFDaEIsZ0JBQWdCLEVBQUUsTUFBTTt3QkFDeEIsYUFBYSxFQUFFLGFBQWE7d0JBQzVCLGNBQWMsRUFBRSxjQUFjLElBQUksRUFBRTt3QkFDcEMsYUFBYSxFQUFFLEVBQUUsRUFBRSx3Q0FBd0M7d0JBQzNELGNBQWMsRUFBRSxLQUFLO3dCQUNyQixlQUFlLEVBQUUsS0FBSyxFQUFFLHVDQUF1QztxQkFDaEUsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNoQixLQUFLLEVBQUUsa0NBQWtDO2lCQUMxQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoRCxDQUFDO29CQUFTLENBQUM7Z0JBQ1QsVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDaEIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJO2lCQUMzQixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELFlBQVk7UUFFWix5Q0FBeUM7UUFFekMsWUFBWSxDQUFDLFFBQWdCO1lBQzNCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFFcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ3hGLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDaEIsYUFBYSxFQUFFLE1BQU07aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsWUFBWTtRQUVaLHNDQUFzQztRQUV0QyxhQUFhO1FBQ2IsU0FBUztRQUVULFlBQVk7UUFFWix5Q0FBeUM7UUFFekMsbUJBQW1CLENBQUMsT0FBNEI7WUFDOUMsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsYUFBYSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUU7Z0JBQ3ZELG1CQUFtQixFQUFFLEtBQUssRUFBRSwyQ0FBMkM7YUFDeEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELFlBQVk7WUFDVixVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNoQixjQUFjLEVBQUUsS0FBSztnQkFDckIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLHdCQUF3QixFQUFFLElBQUksRUFBRSxzQ0FBc0M7Z0JBQ3RFLGVBQWUsRUFBRSxLQUFLLEVBQUUsOENBQThDO2FBQ3ZFLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxZQUFZO1lBQ1YsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsY0FBYyxFQUFFLEtBQUs7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELFlBQVk7UUFFWix5Q0FBeUM7UUFFekMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFjO1lBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7Z0JBQ3pELE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILDZCQUE2QjtnQkFDN0IsMkRBQTJEO2dCQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixNQUFNLFNBQVMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7UUFFRCxZQUFZO1FBRVosdUNBQXVDO1FBRXZDLE9BQU87WUFDTCxPQUFPLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxVQUFVO1lBQ1IsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsbUJBQW1CO1lBQ2pCLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hCLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixjQUFjLEVBQUUsS0FBSztnQkFDckIsbUJBQW1CLEVBQUUsS0FBSzthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTTtZQUNKLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRSxhQUFhLENBQUMsSUFBSTtnQkFDMUIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1lBQ0gsbUNBQW1DO1FBQ3JDLENBQUM7UUFFRCxLQUFLO1lBQ0gsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixjQUFjLEVBQUUsS0FBSztnQkFDckIsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsd0JBQXdCLEVBQUUsSUFBSTtnQkFDOUIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUk7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyxDQUNGLEVBRUQsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLGFBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEgsS0FBSyxDQUFDLE1BQU07UUFDViwyQ0FBMkM7UUFDM0Msa0JBQWtCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsbUNBQW1DO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLGlDQUFpQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFTO1FBQ1Asb0JBQW9CO0lBQ3RCLENBQUM7Q0FDRixDQUFDLENBQUMsQ0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBDb250ZXh0RGF0YSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBEeW5hbWljRm9ybURlZmluaXRpb24gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUFBhZ2VTdGF0dXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwYXRjaFN0YXRlLCBzaWduYWxTdG9yZSwgd2l0aENvbXB1dGVkLCB3aXRoSG9va3MsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7XG4gIEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQsXG4gIEFYUExheW91dEV4ZWN1dGlvbkNvbnRleHQsXG4gIEFYUExheW91dFN3aXRjaGVyT3B0aW9uLFxuICBBWFBSZXBvcnRDaGFydExheW91dCxcbiAgQVhQUmVwb3J0RGVmaW5pdGlvbixcbiAgQVhQUmVwb3J0RGVmaW5pdGlvblNlcnZpY2UsXG4gIEFYUFJlcG9ydExheW91dERlZmluaXRpb24sXG4gIEFYUFJlcG9ydFBhcmFtZXRlcixcbiAgQVhQUmVwb3J0UGFyYW1ldGVyR3JvdXAsXG4gIEFYUFJlcG9ydFRhYmxlTGF5b3V0LFxufSBmcm9tICcuLi8uLi9yZXBvcnRzJztcblxuZXhwb3J0IGNvbnN0IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCA9IHNpZ25hbFN0b3JlKFxuICB3aXRoU3RhdGUoKCkgPT4gKHtcbiAgICByZXBvcnREZWZpbml0aW9uOiBudWxsIGFzIEFYUFJlcG9ydERlZmluaXRpb24gfCBudWxsLFxuICAgIGN1cnJlbnRMYXlvdXQ6IG51bGwgYXMgQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbiB8IG51bGwsXG4gICAgZmlsdGVyQ29udGV4dDoge30gYXMgQVhQQ29udGV4dERhdGEsXG4gICAgY2F0ZWdvcmllc1BhdGg6IFtdIGFzIGFueVtdLFxuICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICBzaG91bGRFeGVjdXRlUmVwb3J0OiBmYWxzZSxcbiAgICBsYXN0QXBwbGllZEZpbHRlckNvbnRleHQ6IG51bGwgYXMgQVhQQ29udGV4dERhdGEgfCBudWxsLCAvLyBUcmFjayBsYXN0IGFwcGxpZWQgZmlsdGVyc1xuICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsIC8vIFRyYWNrIGlmIHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCBhdCBsZWFzdCBvbmNlXG4gICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLklkbGUsXG4gICAgZXJyb3I6IG51bGwgYXMgc3RyaW5nIHwgbnVsbCxcbiAgfSkpLFxuXG4gIHdpdGhDb21wdXRlZCgoc3RvcmUpID0+ICh7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIGF2YWlsYWJsZUxheW91dHM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgIGlmICghcmVwb3J0Py5sYXlvdXRzKSByZXR1cm4gW107XG5cbiAgICAgIHJldHVybiByZXBvcnQubGF5b3V0cy5tYXAoXG4gICAgICAgIChsYXlvdXQ6IEFYUFJlcG9ydExheW91dERlZmluaXRpb24pID0+XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGlkOiBsYXlvdXQuaWQsXG4gICAgICAgICAgICB0aXRsZTogbGF5b3V0LnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogbGF5b3V0Lmljb24sXG4gICAgICAgICAgICB0eXBlOiBsYXlvdXQubGF5b3V0LnR5cGUsXG4gICAgICAgICAgfSkgYXMgQVhQTGF5b3V0U3dpdGNoZXJPcHRpb24sXG4gICAgICApO1xuICAgIH0pLFxuXG4gICAgZGVmYXVsdExheW91dDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgaWYgKCFyZXBvcnQ/LmxheW91dHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIEZpbmQgbGF5b3V0IG1hcmtlZCBhcyBkZWZhdWx0LCBvciB1c2UgZmlyc3QgbGF5b3V0XG4gICAgICByZXR1cm4gcmVwb3J0LmxheW91dHMuZmluZCgobDogQVhQUmVwb3J0TGF5b3V0RGVmaW5pdGlvbikgPT4gbC5pc0RlZmF1bHQpIHx8IHJlcG9ydC5sYXlvdXRzWzBdO1xuICAgIH0pLFxuXG4gICAgYWN0aXZlTGF5b3V0SWQ6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8uaWQgfHwgbnVsbCksXG5cbiAgICBsYXlvdXRUeXBlOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5jdXJyZW50TGF5b3V0KCk/LmxheW91dD8udHlwZSB8fCBudWxsKSxcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBMYXlvdXQtU3BlY2lmaWMgQ29uZmlndXJhdGlvbnMgICAtLS0tXG5cbiAgICB0YWJsZUxheW91dENvbmZpZzogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgcmV0dXJuIGxheW91dD8ubGF5b3V0Py50eXBlID09PSAndGFibGUnID8gKGxheW91dC5sYXlvdXQgYXMgQVhQUmVwb3J0VGFibGVMYXlvdXQpIDogbnVsbDtcbiAgICB9KSxcblxuICAgIGNoYXJ0TGF5b3V0Q29uZmlnOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gbGF5b3V0Py5sYXlvdXQ/LnR5cGUgPT09ICdjaGFydCcgPyAobGF5b3V0LmxheW91dCBhcyBBWFBSZXBvcnRDaGFydExheW91dCkgOiBudWxsO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFN0YXRlIEluZGljYXRvcnMgICAtLS0tXG5cbiAgICBpc0xvYWRpbmc6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcpLFxuICAgIGlzRXhlY3V0aW5nOiBjb21wdXRlZCgoKSA9PiBzdG9yZS5zdGF0dXMoKSA9PT0gQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nKSxcbiAgICBoYXNFcnJvcjogY29tcHV0ZWQoKCkgPT4gc3RvcmUuZXJyb3IoKSAhPT0gbnVsbCksXG4gICAgY2FuRXhlY3V0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy8gQWx3YXlzIGFsbG93IGV4ZWN1dGlvbiBpZiB0aGVyZSdzIGFuIGVycm9yICh0byBlbmFibGUgcmV0cnkpXG4gICAgICBpZiAoc3RvcmUuZXJyb3IoKSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxsb3cgZXhlY3V0aW9uIGlmIHRoZXJlIGFyZSB1bmFwcGxpZWQgZmlsdGVyc1xuICAgICAgY29uc3QgY3VycmVudENvbnRleHQgPSBzdG9yZS5maWx0ZXJDb250ZXh0KCk7XG4gICAgICBjb25zdCBsYXN0QXBwbGllZCA9IHN0b3JlLmxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dCgpO1xuICAgICAgY29uc3QgaGFzQmVlbkV4ZWN1dGVkID0gc3RvcmUuaGFzQmVlbkV4ZWN1dGVkKCk7XG5cbiAgICAgIGlmIChoYXNCZWVuRXhlY3V0ZWQgJiYgSlNPTi5zdHJpbmdpZnkoY3VycmVudENvbnRleHQpICE9PSBKU09OLnN0cmluZ2lmeShsYXN0QXBwbGllZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEFsbG93IGV4ZWN1dGlvbiBpZiByZXBvcnQgaGFzbid0IGJlZW4gZXhlY3V0ZWQgeWV0XG4gICAgICBpZiAoIWhhc0JlZW5FeGVjdXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlLCBkb24ndCBhbGxvdyBleGVjdXRpb25cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSxcbiAgICBoYXNNdWx0aXBsZUxheW91dHM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgIHJldHVybiAocmVwb3J0Py5sYXlvdXRzPy5sZW5ndGggPz8gMCkgPiAxO1xuICAgIH0pLFxuXG4gICAgdGl0bGU6IGNvbXB1dGVkKCgpID0+IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKT8udGl0bGUgPz8gJ1JlcG9ydCBWaWV3ZXInKSxcbiAgICBkZXNjcmlwdGlvbjogY29tcHV0ZWQoKCkgPT4gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpPy5kZXNjcmlwdGlvbiA/PyBudWxsKSxcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBGb3JtIENvbmZpZ3VyYXRpb24gICAtLS0tXG5cbiAgICBmb3JtRGVmaW5pdGlvbjogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgaWYgKCFyZXBvcnQgfHwgIXJlcG9ydC5wYXJhbWV0ZXJHcm91cHMpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3JvdXBzOiBbXSB9IGFzIEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURlZmluaXRpb24gPSB7XG4gICAgICAgIGdyb3VwczogcmVwb3J0LnBhcmFtZXRlckdyb3Vwcy5tYXAoKGdyb3VwOiBBWFBSZXBvcnRQYXJhbWV0ZXJHcm91cCkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBncm91cC5uYW1lLFxuICAgICAgICAgIHRpdGxlOiBncm91cC50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ3JvdXAuZGVzY3JpcHRpb24sXG4gICAgICAgICAgcGFyYW1ldGVyczogZ3JvdXAucGFyYW1ldGVycy5tYXAoKHBhcmFtOiBBWFBSZXBvcnRQYXJhbWV0ZXIpID0+ICh7XG4gICAgICAgICAgICBwYXRoOiBwYXJhbS5wYXRoLFxuICAgICAgICAgICAgdGl0bGU6IHBhcmFtLnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcmFtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgICAgIC4uLnBhcmFtLndpZGdldCxcbiAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIC4uLnBhcmFtLndpZGdldC5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGNsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhc0NsZWFyQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pKSxcbiAgICAgIH0gYXMgQVhQRHluYW1pY0Zvcm1EZWZpbml0aW9uO1xuICAgICAgcmV0dXJuIGZvcm1EZWZpbml0aW9uO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBUeXBlIERldGVjdGlvbiAgIC0tLS1cblxuICAgIGlzVGFibGVMYXlvdXQ6IGNvbXB1dGVkKCgpID0+IHN0b3JlLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0Py50eXBlID09PSAndGFibGUnKSxcbiAgICBpc0NoYXJ0TGF5b3V0OiBjb21wdXRlZCgoKSA9PiBzdG9yZS5jdXJyZW50TGF5b3V0KCk/LmxheW91dD8udHlwZSA9PT0gJ2NoYXJ0JyksXG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgRmlsdGVyIFN0YXRlcyAgIC0tLS1cblxuICAgIGhhc1VuYXBwbGllZEZpbHRlcnM6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gc3RvcmUuZmlsdGVyQ29udGV4dCgpO1xuICAgICAgY29uc3QgbGFzdEFwcGxpZWQgPSBzdG9yZS5sYXN0QXBwbGllZEZpbHRlckNvbnRleHQoKTtcbiAgICAgIGNvbnN0IGhhc0JlZW5FeGVjdXRlZCA9IHN0b3JlLmhhc0JlZW5FeGVjdXRlZCgpO1xuXG4gICAgICAvLyBJZiByZXBvcnQgaGFzIG5ldmVyIGJlZW4gZXhlY3V0ZWQsIGRvbid0IHNob3cgdW5hcHBsaWVkIGZpbHRlcnMgd2FybmluZ1xuICAgICAgaWYgKCFoYXNCZWVuRXhlY3V0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBmaWx0ZXJzIGhhdmUgYmVlbiBhcHBsaWVkIHlldCwgcmV0dXJuIHRydWVcbiAgICAgIGlmIChsYXN0QXBwbGllZCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBmaWx0ZXJzIGFyZSBkaWZmZXJlbnQgZnJvbSBsYXN0IGFwcGxpZWQgZmlsdGVyc1xuICAgICAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50Q29udGV4dCk7XG4gICAgICBjb25zdCBsYXN0S2V5cyA9IE9iamVjdC5rZXlzKGxhc3RBcHBsaWVkKTtcblxuICAgICAgaWYgKGN1cnJlbnRLZXlzLmxlbmd0aCAhPT0gbGFzdEtleXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBhbnkgdmFsdWVzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGN1cnJlbnRLZXlzKSB7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dFtrZXldICE9PSBsYXN0QXBwbGllZFtrZXldKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pLFxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEFjdGlvbiBTdGF0ZXMgICAtLS0tXG5cbiAgICBjYW5Td2l0Y2hMYXlvdXQ6IGNvbXB1dGVkKFxuICAgICAgKCkgPT4gKHN0b3JlLnJlcG9ydERlZmluaXRpb24oKT8ubGF5b3V0cz8ubGVuZ3RoID8/IDApID4gMSAmJiBzdG9yZS5zdGF0dXMoKSAhPT0gQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLFxuICAgICksXG5cbiAgICBjYW5TZWxlY3RSb3dzOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBsYXlvdXQ/LmxheW91dD8udHlwZSA9PT0gJ3RhYmxlJyAmJlxuICAgICAgICBsYXlvdXQubGF5b3V0Lm9wdGlvbnM/LnNlbGVjdGFibGU/Lm1vZGUgJiZcbiAgICAgICAgbGF5b3V0LmxheW91dC5vcHRpb25zPy5zZWxlY3RhYmxlPy5tb2RlICE9PSAnbm9uZSdcbiAgICAgICk7XG4gICAgfSksXG5cbiAgICAvLyNlbmRyZWdpb25cbiAgfSkpLFxuXG4gIHdpdGhNZXRob2RzKFxuICAgIChcbiAgICAgIHN0b3JlLFxuICAgICAgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2U6IEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYUFJlcG9ydERlZmluaXRpb25TZXJ2aWNlKSxcbiAgICAgIGNvbW1hbmRTZXJ2aWNlOiBBWFBDb21tYW5kU2VydmljZSA9IGluamVjdChBWFBDb21tYW5kU2VydmljZSksXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRlUmVwb3J0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSBzdG9yZS5jdXJyZW50TGF5b3V0KCk7XG4gICAgICAgICAgaWYgKCFyZXBvcnQgfHwgIWxheW91dCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBlcnJvcjogJ1JlcG9ydCBvciBsYXlvdXQgbm90IGZvdW5kJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IHRydWUsXG4gICAgICAgICAgICBsYXN0QXBwbGllZEZpbHRlckNvbnRleHQ6IHsgLi4uc3RvcmUuZmlsdGVyQ29udGV4dCgpIH0sIC8vIE1hcmsgY3VycmVudCBmaWx0ZXJzIGFzIGFwcGxpZWRcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogdHJ1ZSwgLy8gTWFyayB0aGF0IHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCBhdCBsZWFzdCBvbmNlXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuU3VibWl0dGVkLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLkVycm9yLFxuICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSByZXBvcnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhcmFtZXRlcnM6IEFYUENvbnRleHREYXRhID0ge30pOiBQcm9taXNlPEFYUEV4ZWN1dGlvblJlcG9ydENvbW1hbmRSZXN1bHQgfCBudWxsPiA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IHN0b3JlLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgICBpZiAoIXJlcG9ydCB8fCAhbGF5b3V0KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcsXG4gICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQ3JlYXRlIGV4ZWN1dGlvbiBjb250ZXh0IC0gZW5zdXJlIGRhdGFTb3VyY2UgaXMgcHJvdmlkZWRcbiAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gbGF5b3V0LmRhdGFTb3VyY2UgfHwge1xuICAgICAgICAgICAgdHlwZTogJ3F1ZXJ5JyBhcyBjb25zdCxcbiAgICAgICAgICAgIG5hbWU6ICdnZXRFbXBsb3llZUxpc3QnLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0OiBBWFBMYXlvdXRFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgcmVwb3J0SWQ6IHJlcG9ydC5pZCxcbiAgICAgICAgICAgIGxheW91dElkOiBsYXlvdXQuaWQsXG4gICAgICAgICAgICBkYXRhU291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAuLi5zdG9yZS5maWx0ZXJDb250ZXh0KCksXG4gICAgICAgICAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBleGVjdXRpb25SZXN1bHQgPSBhd2FpdCBjb21tYW5kU2VydmljZS5leGVjdXRlKCdSZXBvcnRNYW5hZ2VtZW50LlJlcG9ydDpFeGVjdXRlJywgY29udGV4dCk7XG4gICAgICAgICAgaWYgKCFleGVjdXRpb25SZXN1bHQ/LnN1Y2Nlc3MgfHwgIWV4ZWN1dGlvblJlc3VsdC5kYXRhKSB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBleGVjdXRpb25SZXN1bHQ/Lm1lc3NhZ2U/LnRleHQgfHwgJ0ZhaWxlZCB0byBleGVjdXRlIHJlcG9ydCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhlY3V0aW9uUmVzdWx0LmRhdGE7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gZXhlY3V0ZSByZXBvcnQnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4ZWN1dGluZyByZXBvcnQ6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5JZGxlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIFJlcG9ydCBMb2FkaW5nICAgLS0tLVxuXG4gICAgICAgIGFzeW5jIGxvYWRSZXBvcnQocmVwb3J0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHN0YXR1czogQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQgcmVwb3J0RGVmaW5pdGlvblNlcnZpY2UuZ2V0UmVwb3J0QnlJZChyZXBvcnRJZCk7XG4gICAgICAgICAgICBpZiAocmVwb3J0KSB7XG4gICAgICAgICAgICAgIC8vIENvbmZpZ3VyZSBwYXJhbWV0ZXIgd2lkZ2V0cyB3aXRoIHByb3BlciBwYXRoc1xuICAgICAgICAgICAgICByZXBvcnQucGFyYW1ldGVyR3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXAucGFyYW1ldGVycy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcGFyYW0ud2lkZ2V0LnBhdGggPSBwYXJhbS5wYXRoO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAvLyBMb2FkIGNhdGVnb3JpZXMgcGF0aCBmb3IgYnJlYWRjcnVtYnNcbiAgICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSBhd2FpdCByZXBvcnREZWZpbml0aW9uU2VydmljZS5nZXRDYXRlZ29yaWVzUGF0aEJ5UmVwb3J0SWQocmVwb3J0SWQpO1xuXG4gICAgICAgICAgICAgIC8vIFNldCBkZWZhdWx0IGxheW91dFxuICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID1cbiAgICAgICAgICAgICAgICByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlzRGVmYXVsdCkgfHwgcmVwb3J0LmxheW91dHNbMF07XG5cbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHJlcG9ydERlZmluaXRpb246IHJlcG9ydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBkZWZhdWx0TGF5b3V0LFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNQYXRoOiBjYXRlZ29yaWVzUGF0aCB8fCBbXSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSwgLy8gUmVzZXQgY29udGV4dCB3aGVuIGxvYWRpbmcgbmV3IHJlcG9ydFxuICAgICAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoYXNCZWVuRXhlY3V0ZWQ6IGZhbHNlLCAvLyBSZXNldCBleGVjdXRpb24gc3RhdGUgZm9yIG5ldyByZXBvcnRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gbG9hZCByZXBvcnQgZGVmaW5pdGlvbicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgcmVwb3J0OicsIGVycm9yKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvLyNlbmRyZWdpb25cblxuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBNYW5hZ2VtZW50ICAgLS0tLVxuXG4gICAgICAgIHN3aXRjaExheW91dChsYXlvdXRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgICAgY29uc3QgcmVwb3J0ID0gc3RvcmUucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgICAgICAgIGlmICghcmVwb3J0KSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBsYXlvdXQgPSByZXBvcnQubGF5b3V0cy5maW5kKChsOiBBWFBSZXBvcnRMYXlvdXREZWZpbml0aW9uKSA9PiBsLmlkID09PSBsYXlvdXRJZCk7XG4gICAgICAgICAgaWYgKGxheW91dCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBEYXRhIEV4ZWN1dGlvbiAgIC0tLS1cblxuICAgICAgICBleGVjdXRlUmVwb3J0LFxuICAgICAgICBmZXRjaERhdGEsXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBGaWx0ZXIgTWFuYWdlbWVudCAgIC0tLS1cblxuICAgICAgICB1cGRhdGVGaWx0ZXJDb250ZXh0KGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7IC4uLnN0b3JlLmZpbHRlckNvbnRleHQoKSwgLi4uY29udGV4dCB9LFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsIC8vIFJlc2V0IGV4ZWN1dGlvbiBmbGFnIHdoZW4gZmlsdGVycyBjaGFuZ2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhckZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgICAgc2hvdWxkRXhlY3V0ZVJlcG9ydDogZmFsc2UsXG4gICAgICAgICAgICBmaWx0ZXJDb250ZXh0OiB7fSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogbnVsbCwgLy8gUmVzZXQgYXBwbGllZCBmaWx0ZXJzIHdoZW4gY2xlYXJpbmdcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsIC8vIFJlc2V0IGV4ZWN1dGlvbiBzdGF0ZSB3aGVuIGNsZWFyaW5nIGZpbHRlcnNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXNldEZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgYWxsb3dGZXRjaERhdGE6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgRXhwb3J0IE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAgICAgYXN5bmMgZXhwb3J0UmVwb3J0KGZvcm1hdDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gc3RvcmUuY3VycmVudExheW91dCgpO1xuICAgICAgICAgIGlmICghbGF5b3V0Py5leHBvcnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXhwb3J0IG5vdCBjb25maWd1cmVkIGZvciBjdXJyZW50IGxheW91dCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBFeHBvcnQgbG9naWMgd291bGQgZ28gaGVyZVxuICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCB0eXBpY2FsbHkgY2FsbCBhIGRpZmZlcmVudCBjb21tYW5kIGZvciBleHBvcnRcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBFeHBvcnRpbmcgcmVwb3J0IGluICR7Zm9ybWF0fSBmb3JtYXRgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXhwb3J0aW5nIHJlcG9ydDonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgVXRpbGl0eSBNZXRob2RzICAgLS0tLVxuXG4gICAgICAgIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgcmV0dXJuIGV4ZWN1dGVSZXBvcnQoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhckVycm9yKCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNsZWFyRXhlY3V0aW9uU3RhdGUoKTogdm9pZCB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgaGFzQmVlbkV4ZWN1dGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93RmV0Y2hEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3VsZEV4ZWN1dGVSZXBvcnQ6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvL1RPRE86IENhbmNlbCB0aGUgcmVwb3J0IGV4ZWN1dGlvblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIHJlcG9ydERlZmluaXRpb246IG51bGwsXG4gICAgICAgICAgICBjdXJyZW50TGF5b3V0OiBudWxsLFxuICAgICAgICAgICAgZmlsdGVyQ29udGV4dDoge30sXG4gICAgICAgICAgICBhbGxvd0ZldGNoRGF0YTogZmFsc2UsXG4gICAgICAgICAgICBzaG91bGRFeGVjdXRlUmVwb3J0OiBmYWxzZSxcbiAgICAgICAgICAgIGxhc3RBcHBsaWVkRmlsdGVyQ29udGV4dDogbnVsbCxcbiAgICAgICAgICAgIGhhc0JlZW5FeGVjdXRlZDogZmFsc2UsXG4gICAgICAgICAgICBjYXRlZ29yaWVzUGF0aDogW10sXG4gICAgICAgICAgICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXMuSWRsZSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgfTtcbiAgICB9LFxuICApLFxuXG4gIHdpdGhIb29rcygoc3RvcmUsIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKSkgPT4gKHtcbiAgICBhc3luYyBvbkluaXQoKSB7XG4gICAgICAvLyBTdWJzY3JpYmUgdG8gbGFuZ3VhZ2UgYW5kIGxvY2FsZSBjaGFuZ2VzXG4gICAgICB0cmFuc2xhdGlvblNlcnZpY2UubGFuZ0NoYW5nZXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEhhbmRsZSBsYW5ndWFnZSBjaGFuZ2UgaWYgbmVlZGVkXG4gICAgICB9KTtcblxuICAgICAgbG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGxvY2FsZSBjaGFuZ2UgaWYgbmVlZGVkXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9uRGVzdHJveSgpIHtcbiAgICAgIC8vIENsZWFudXAgaWYgbmVlZGVkXG4gICAgfSxcbiAgfSkpLFxuKTtcbiJdfQ==","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDonutChartComponent } from '@acorex/charts/donut-chart';\nimport { AXLineChartComponent } from '@acorex/charts/line-chart';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXBarChartReportMapper, AXLineChartReportMapper, AXPieChartReportMapper, } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n this.vm.fetchData().then((data) => {\n const raw = ((data?.data).data ?? {});\n switch (this.chartType()) {\n case 'bar': {\n const v = AXBarChartReportMapper(raw);\n this.barChartData.set(v);\n break;\n }\n case 'doughnut': {\n const v = AXPieChartReportMapper(raw);\n this.donutChartData.set(v);\n break;\n }\n case 'line':\n default: {\n const v = AXLineChartReportMapper(raw);\n this.lineChartData.set(v);\n break;\n }\n }\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.legendOptions = signal({\n mode: 'vertical',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: \"donutChartData\" }] : []));\n this.donutChartOptions = computed(() => {\n return {\n totalLabel: 'Total',\n showTooltip: true,\n showDataLabels: this.donutChartData().length <= 10,\n };\n }, ...(ngDevMode ? [{ debugName: \"donutChartOptions\" }] : []));\n this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: \"lineChartData\" }] : []));\n this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"lineChartOptions\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to fetch chart data when conditions are met\n */\n #fetchData;\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportChartViewComponent, isStandalone: true, selector: \"axp-report-chart-view\", host: { classAttribute: \"axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col\" }, ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\">\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\">\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\" [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\">\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</ng-container>\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXDonutChartComponent, selector: \"ax-donut-chart\", inputs: [\"data\", \"options\"], outputs: [\"segmentClick\", \"segmentHover\"] }, { kind: \"component\", type: AXLineChartComponent, selector: \"ax-line-chart\", inputs: [\"data\", \"options\"], outputs: [\"pointClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-chart-view', imports: [\n CommonModule,\n AXTranslationModule,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXDonutChartComponent,\n AXLineChartComponent,\n AXChartLegendComponent,\n AXPStateMessageComponent,\n ], host: {\n class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',\n }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\\\">\\n <div class=\\\"ax-spinner ax-spin ax-w-10 ax-h-10\\\"></div>\\n <div class=\\\"__loading-text ax-text-sm ax-opacity-70\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <section\\n class=\\\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\\\">\\n @if (chartLayout()?.header) {\\n <header\\n class=\\\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\\\">\\n <h3 class=\\\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\\\">\\n {{ chartLayout()?.header?.title }}\\n </h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\\\">\\n {{ '@general:common.date.today' | translate | async }}\\n </div>\\n }\\n </header>\\n }\\n\\n <div class=\\\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\\\">\\n <div class=\\\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\\\" [class]=\\\"\\n legendOptions().mode === 'horizontal'\\n ? 'ax-flex-col ax-gap-4'\\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\\n \\\">\\n @switch (chartType()) {\\n @case ('bar') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-bar-chart #barChart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"barChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @case ('doughnut') {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-donut-chart #donutChart [data]=\\\"donutChartData()\\\" [options]=\\\"donutChartOptions()\\\"></ax-donut-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"donutChart\\\"></ax-chart-legend>\\n </div>\\n }\\n @default {\\n <div\\n class=\\\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\\\">\\n <ax-line-chart #lineChart [data]=\\\"lineChartData()\\\" [options]=\\\"lineChartOptions()\\\"></ax-line-chart>\\n </div>\\n <div class=\\\"__chart-legend ax-w-fit ax-flex-shrink-0\\\">\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"lineChart\\\"></ax-chart-legend>\\n </div>\\n }\\n }\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <footer class=\\\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </footer>\\n }\\n </section>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</ng-container>\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtY2hhcnQtdmlldy9yZXBvcnQtY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1jaGFydC12aWV3L3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBcUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBdUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUN2QixNQUFNLG1DQUFtQyxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBb0J6RSxNQUFNLE9BQU8sMkJBQTJCO0lBbEJ4QztRQW1CRSxvQ0FBb0M7UUFFakIsT0FBRSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBRWpELFlBQVk7UUFFWiwyQ0FBMkM7UUFFM0M7O1dBRUc7UUFDZ0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsQ0FBQyx1REFBQyxDQUFDO1FBRUg7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFdBQVcsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3RDLENBQUMsd0RBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2dCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3JDLENBQUMscURBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2dCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEMsT0FBTyxPQUFPLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztRQUN0QyxDQUFDLHVEQUFDLENBQUM7UUFFSCxZQUFZO1FBRVosK0JBQStCO1FBRS9COztXQUVHO1FBQ0gsZUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDckYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDaEMsTUFBTSxHQUFHLEdBQUcsQ0FBRSxDQUFDLElBQUksRUFBRSxJQUFZLENBQUEsQ0FBQyxJQUFZLElBQUksRUFBRSxDQUEyQixDQUFDO29CQUNoRixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO3dCQUN6QixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7NEJBQ1gsTUFBTSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN6QixNQUFNO3dCQUNSLENBQUM7d0JBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUNoQixNQUFNLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzNCLE1BQU07d0JBQ1IsQ0FBQzt3QkFDRCxLQUFLLE1BQU0sQ0FBQzt3QkFDWixPQUFPLENBQUMsQ0FBQyxDQUFDOzRCQUNSLE1BQU0sQ0FBQyxHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDMUIsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxzREFBQyxDQUFDO1FBYU8sa0JBQWEsR0FBRyxNQUFNLENBQXVCO1lBQ3JELElBQUksRUFBRSxVQUFVO1NBQ2pCLHlEQUFDLENBQUM7UUFFTyxpQkFBWSxHQUFHLE1BQU0sQ0FBa0IsRUFBRSx3REFBQyxDQUFDO1FBQzNDLG9CQUFlLEdBQUcsTUFBTSxDQUFtQixFQUFFLDJEQUFDLENBQUM7UUFFL0MsbUJBQWMsR0FBRyxNQUFNLENBQW9CLEVBQUUsMERBQUMsQ0FBQztRQUUvQyxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzFDLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLE9BQU87Z0JBQ25CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sSUFBSSxFQUFFO2FBQ25ELENBQUM7UUFDSixDQUFDLDZEQUFDLENBQUM7UUFFTyxrQkFBYSxHQUFHLE1BQU0sQ0FBbUIsRUFBRSx5REFBQyxDQUFDO1FBQzdDLHFCQUFnQixHQUFHLE1BQU0sQ0FBb0IsRUFBRSw0REFBQyxDQUFDO0tBRzVEO0lBakVDLFlBQVk7SUFFWiwrQkFBK0I7SUFFL0I7O09BRUc7SUFDSCxVQUFVLENBd0JQO0lBRUgsWUFBWTtJQUVaLHNDQUFzQztJQUV0Qzs7T0FFRztJQUNPLFlBQVk7UUFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FwRlUsMkJBQTJCO21HQUEzQiwyQkFBMkIsNEtDbkN4QyxzcUlBc0ZlLDJDRGxFWCxZQUFZLDhCQUNaLG1CQUFtQiw4R0FDbkIsbUJBQW1CLCtCQUNuQixtQkFBbUIsNkdBQ25CLHFCQUFxQixtSUFDckIsb0JBQW9CLGdIQUNwQixzQkFBc0Isc0pBQ3RCLHdCQUF3Qjs7NEZBUWYsMkJBQTJCO2tCQWxCdkMsU0FBUzsrQkFDRSx1QkFBdUIsV0FDeEI7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7cUJBQ3pCLFFBQ0s7d0JBQ0osS0FBSyxFQUFFLCtEQUErRDtxQkFDdkUsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhckNoYXJ0Q29tcG9uZW50LCBBWEJhckNoYXJ0T3B0aW9uLCBBWEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhDaGFydExlZ2VuZENvbXBvbmVudCwgQVhDaGFydExlZ2VuZE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9jaGFydC1sZWdlbmQnO1xuaW1wb3J0IHsgQVhEb251dENoYXJ0Q29tcG9uZW50LCBBWERvbnV0Q2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2RvbnV0LWNoYXJ0JztcbmltcG9ydCB7IEFYTGluZUNoYXJ0Q29tcG9uZW50LCBBWExpbmVDaGFydE9wdGlvbiwgQVhMaW5lQ2hhcnRWYWx1ZSB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2xpbmUtY2hhcnQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlTW9kdWxlLCBBWFBQYWdlU3RhdHVzIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIsXG4gIEFYTGluZUNoYXJ0UmVwb3J0TWFwcGVyLFxuICBBWFBpZUNoYXJ0UmVwb3J0TWFwcGVyLFxufSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC1tYXBwZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC50eXBlcyc7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtY2hhcnQtdmlldycsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgIEFYQmFyQ2hhcnRDb21wb25lbnQsXG4gICAgQVhEb251dENoYXJ0Q29tcG9uZW50LFxuICAgIEFYTGluZUNoYXJ0Q29tcG9uZW50LFxuICAgIEFYQ2hhcnRMZWdlbmRDb21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdheHAtcmVwb3J0LWNoYXJ0LXZpZXcgYXgtdy1mdWxsIGF4LWgtZnVsbCBheC1mbGV4IGF4LWZsZXgtY29sJyxcbiAgfSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJlcG9ydENoYXJ0Vmlld0NvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQVhQUGFnZVN0YXR1cyA9IEFYUFBhZ2VTdGF0dXM7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wdXRlZCBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDdXJyZW50IGNoYXJ0IGxheW91dCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRMYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy52bS5jdXJyZW50TGF5b3V0KCk7XG4gICAgcmV0dXJuIGxheW91dD8ubGF5b3V0LnR5cGUgPT09ICdjaGFydCcgPyAobGF5b3V0LmxheW91dCBhcyBBWFBSZXBvcnRDaGFydExheW91dCkgOiBudWxsO1xuICB9KTtcblxuICAvKipcbiAgICogQ2hhcnQgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNoYXJ0TGF5b3V0ID0gdGhpcy5jaGFydExheW91dCgpO1xuICAgIHJldHVybiBjaGFydExheW91dD8ub3B0aW9ucyB8fCBudWxsO1xuICB9KTtcblxuICAvKipcbiAgICogQ2hhcnQgdHlwZSBmb3IgcmVuZGVyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhcnRUeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNoYXJ0T3B0aW9ucygpO1xuICAgIHJldHVybiBvcHRpb25zPy5jaGFydFR5cGUgfHwgJ2Jhcic7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEYXRhIG1hcHBpbmcgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFNYXBwaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNoYXJ0T3B0aW9ucygpO1xuICAgIHJldHVybiBvcHRpb25zPy5kYXRhTWFwcGluZyB8fCBudWxsO1xuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBmZXRjaCBjaGFydCBkYXRhIHdoZW4gY29uZGl0aW9ucyBhcmUgbWV0XG4gICAqL1xuICAjZmV0Y2hEYXRhID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy52bS5hbGxvd0ZldGNoRGF0YSgpICYmIHRoaXMudm0uc2hvdWxkRXhlY3V0ZVJlcG9ydCgpICYmIHRoaXMuY2hhcnRPcHRpb25zKCkpIHtcbiAgICAgIHRoaXMudm0uZmV0Y2hEYXRhKCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBjb25zdCByYXcgPSAoKChkYXRhPy5kYXRhIGFzIGFueSkuZGF0YSBhcyBhbnkpID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgICAgICBzd2l0Y2ggKHRoaXMuY2hhcnRUeXBlKCkpIHtcbiAgICAgICAgICBjYXNlICdiYXInOiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gQVhCYXJDaGFydFJlcG9ydE1hcHBlcihyYXcpO1xuICAgICAgICAgICAgdGhpcy5iYXJDaGFydERhdGEuc2V0KHYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2RvdWdobnV0Jzoge1xuICAgICAgICAgICAgY29uc3QgdiA9IEFYUGllQ2hhcnRSZXBvcnRNYXBwZXIocmF3KTtcbiAgICAgICAgICAgIHRoaXMuZG9udXRDaGFydERhdGEuc2V0KHYpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2xpbmUnOlxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBBWExpbmVDaGFydFJlcG9ydE1hcHBlcihyYXcpO1xuICAgICAgICAgICAgdGhpcy5saW5lQ2hhcnREYXRhLnNldCh2KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAgICovXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY2hhcnRPcHRpb25zKCkgJiYgdGhpcy5kYXRhTWFwcGluZygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWdlbmRPcHRpb25zID0gc2lnbmFsPEFYQ2hhcnRMZWdlbmRPcHRpb25zPih7XG4gICAgbW9kZTogJ3ZlcnRpY2FsJyxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGJhckNoYXJ0RGF0YSA9IHNpZ25hbDxBWEJhckNoYXJ0VmFsdWU+KFtdKTtcbiAgcHJvdGVjdGVkIGJhckNoYXJ0T3B0aW9ucyA9IHNpZ25hbDxBWEJhckNoYXJ0T3B0aW9uPih7fSk7XG5cbiAgcHJvdGVjdGVkIGRvbnV0Q2hhcnREYXRhID0gc2lnbmFsPEFYRG9udXRDaGFydFZhbHVlPihbXSk7XG5cbiAgcHJvdGVjdGVkIGRvbnV0Q2hhcnRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0b3RhbExhYmVsOiAnVG90YWwnLFxuICAgICAgc2hvd1Rvb2x0aXA6IHRydWUsXG4gICAgICBzaG93RGF0YUxhYmVsczogdGhpcy5kb251dENoYXJ0RGF0YSgpLmxlbmd0aCA8PSAxMCxcbiAgICB9O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgbGluZUNoYXJ0RGF0YSA9IHNpZ25hbDxBWExpbmVDaGFydFZhbHVlPihbXSk7XG4gIHByb3RlY3RlZCBsaW5lQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYTGluZUNoYXJ0T3B0aW9uPih7fSk7XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICBAaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLlByb2Nlc3NpbmcpIHtcbiAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC1nYXAtNiBheC1wLThcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtc3Bpbm5lciBheC1zcGluIGF4LXctMTAgYXgtaC0xMFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmctdGV4dCBheC10ZXh0LXNtIGF4LW9wYWNpdHktNzBcIj5cbiAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLkVycm9yKSB7XG4gIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gIDxheHAtc3RhdGUtbWVzc2FnZSBtb2RlPVwiZXJyb3JcIiBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtZGVzY3JpcHRpb24nXCI+XG4gIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH0gQGVsc2UgaWYgKGlzQ2hhcnRSZWFkeSgpKSB7XG4gIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgPHNlY3Rpb25cbiAgICBjbGFzcz1cIl9fY2hhcnQtY29udGFpbmVyIGF4LW92ZXJmbG93LWF1dG8gbWQ6YXgtb3ZlcmZsb3ctaGlkZGVuIGF4LXJvdW5kZWQtMnhsIGF4LWJvcmRlciBheC1oLWZ1bGwgYXgtZmxleCBheC1mbGV4LWNvbFwiPlxuICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyKSB7XG4gICAgPGhlYWRlclxuICAgICAgY2xhc3M9XCJfX2NoYXJ0LWhlYWRlciBheC1wLTQgbWQ6YXgtcC02IGF4LWJvcmRlci1iIGF4LWZsZXggYXgtZmxleC1jb2wgc206YXgtZmxleC1yb3cgYXgtZ2FwLTIgc206YXgtaXRlbXMtY2VudGVyIHNtOmF4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGgzIGNsYXNzPVwiX19jaGFydC10aXRsZSBheC10ZXh0LWJhc2UgbWQ6YXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkIGF4LXRydW5jYXRlXCI+XG4gICAgICAgIHt7IGNoYXJ0TGF5b3V0KCk/LmhlYWRlcj8udGl0bGUgfX1cbiAgICAgIDwvaDM+XG4gICAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmhlYWRlcj8uc2hvd0RhdGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWRhdGUgYXgtdGV4dC14cyBtZDpheC10ZXh0LXNtIGF4LW9wYWNpdHktNzAgYXgtZm9udC1tZWRpdW0gYXgtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICB7eyAnQGdlbmVyYWw6Y29tbW9uLmRhdGUudG9kYXknIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvaGVhZGVyPlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWJvZHkgYXgtZmxleC0xIGF4LXAtMyBtZDpheC1wLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LXdyYXBwZXIgYXgtaC1mdWxsIGF4LWl0ZW1zLWNlbnRlciBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGxnOmF4LWdhcC02XCIgW2NsYXNzXT1cIlxuICAgICAgICAgICAgbGVnZW5kT3B0aW9ucygpLm1vZGUgPT09ICdob3Jpem9udGFsJ1xuICAgICAgICAgICAgICA/ICdheC1mbGV4LWNvbCBheC1nYXAtNCdcbiAgICAgICAgICAgICAgOiAnYXgtZmxleC1jb2wgbGc6YXgtZmxleC1yb3cgYXgtZ2FwLTQgbGc6YXgtZ2FwLTYnXG4gICAgICAgICAgXCI+XG4gICAgICAgIEBzd2l0Y2ggKGNoYXJ0VHlwZSgpKSB7XG4gICAgICAgIEBjYXNlICgnYmFyJykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJfX2NoYXJ0LWNvbnRlbnQgYXgtZmxleC0xIGF4LWgtZnVsbCBheC1taW4taC1bMjUwcHhdIG1kOmF4LW1pbi1oLVszMDBweF0gYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtdy1mdWxsIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgIDxheC1iYXItY2hhcnQgI2JhckNoYXJ0IFtkYXRhXT1cImJhckNoYXJ0RGF0YSgpXCIgW29wdGlvbnNdPVwiYmFyQ2hhcnRPcHRpb25zKClcIj48L2F4LWJhci1jaGFydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgPGF4LWNoYXJ0LWxlZ2VuZCBbb3B0aW9uc109XCJsZWdlbmRPcHRpb25zKClcIiBbY2hhcnRdPVwiYmFyQ2hhcnRcIj48L2F4LWNoYXJ0LWxlZ2VuZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdkb3VnaG51dCcpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICA8YXgtZG9udXQtY2hhcnQgI2RvbnV0Q2hhcnQgW2RhdGFdPVwiZG9udXRDaGFydERhdGEoKVwiIFtvcHRpb25zXT1cImRvbnV0Q2hhcnRPcHRpb25zKClcIj48L2F4LWRvbnV0LWNoYXJ0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtbGVnZW5kIGF4LXctZml0IGF4LWZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJkb251dENoYXJ0XCI+PC9heC1jaGFydC1sZWdlbmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiX19jaGFydC1jb250ZW50IGF4LWZsZXgtMSBheC1oLWZ1bGwgYXgtbWluLWgtWzI1MHB4XSBtZDpheC1taW4taC1bMzAwcHhdIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICA8YXgtbGluZS1jaGFydCAjbGluZUNoYXJ0IFtkYXRhXT1cImxpbmVDaGFydERhdGEoKVwiIFtvcHRpb25zXT1cImxpbmVDaGFydE9wdGlvbnMoKVwiPjwvYXgtbGluZS1jaGFydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWxlZ2VuZCBheC13LWZpdCBheC1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgPGF4LWNoYXJ0LWxlZ2VuZCBbb3B0aW9uc109XCJsZWdlbmRPcHRpb25zKClcIiBbY2hhcnRdPVwibGluZUNoYXJ0XCI+PC9heC1jaGFydC1sZWdlbmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXIpIHtcbiAgICA8Zm9vdGVyIGNsYXNzPVwiX19jaGFydC1mb290ZXIgYXgtcC00IG1kOmF4LXAtNiBheC1ib3JkZXItdFwiPlxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWwpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWxcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Zvb3Rlcj5cbiAgICB9XG4gIDwvc2VjdGlvbj5cbiAgfSBAZWxzZSB7XG4gIDwhLS0gTm8gQ29uZmlndXJhdGlvbiBTdGF0ZSAtLT5cbiAgPGF4cC1zdGF0ZS1tZXNzYWdlIGljb249XCJmYS1saWdodCBmYS1jaGFydC1saW5lXCJcbiAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy50aXRsZSdcIlxuICAgIFtkZXNjcmlwdGlvbl09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5jaGFydC5lbXB0eS1zdGF0ZXMubm8tY29uZmlnLmRlc2NyaXB0aW9uJ1wiPlxuICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICB9XG48L25nLWNvbnRhaW5lcj4iXX0=","import { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { applySystemActionDefault, getSystemActions } from '@acorex/platform/core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/data-table\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\nexport class AXPReportTableViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.commandService = inject(AXPCommandService);\n this.grid = viewChild('grid', ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n this.#fetchData = effect(() => {\n if (this.grid() && this.vm.allowFetchData() && this.vm.shouldExecuteReport()) {\n this.grid()?.refresh();\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n this.layout = computed(() => {\n return this.vm.currentLayout()?.layout;\n }, ...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n this.dataSource = new AXDataSource({\n load: async (e) => {\n if (!this.vm.allowFetchData()) {\n return { items: [], total: 0 };\n }\n const result = await this.vm.fetchData(e);\n if (!result?.data || result.data.type !== 'table') {\n console.error('invalid table result');\n return { items: [], total: 0 };\n }\n ;\n let items = result.data.items ?? [];\n let total = result.data.total || 0;\n return { items, total };\n },\n pageSize: 10,\n key: 'id'\n });\n this.columns = computed(() => {\n return this.layout().columns?.map((col) => ({\n field: col.field,\n title: col.title || col.field,\n width: col.width || '150px',\n visible: col.visible !== false,\n align: col.align || 'left',\n widget: { ...col.widget, path: col.field }\n })) || [];\n }, ...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.paginationEnabled = computed(() => {\n return this.layout().options?.pagination !== false;\n }, ...(ngDevMode ? [{ debugName: \"paginationEnabled\" }] : []));\n this.primaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'primary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"primaryRowAction\" }] : []));\n this.hasPrimaryRowAction = computed(() => {\n return this.primaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasPrimaryRowAction\" }] : []));\n this.secondaryRowAction = computed(() => {\n return this.layout().actions?.filter(a => a.priority === 'secondary')?.map(a => this.convertToRowCommandItem(a)) || [];\n }, ...(ngDevMode ? [{ debugName: \"secondaryRowAction\" }] : []));\n this.hasSecondaryRowAction = computed(() => {\n return this.secondaryRowAction().length > 0;\n }, ...(ngDevMode ? [{ debugName: \"hasSecondaryRowAction\" }] : []));\n this.defaultRowAction = computed(() => {\n const defaultAction = this.layout().actions?.find(a => a.default);\n if (!defaultAction) {\n return null;\n }\n return this.convertToRowCommandItem(defaultAction);\n }, ...(ngDevMode ? [{ debugName: \"defaultRowAction\" }] : []));\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleRowClick(event) {\n this.handleRowAction(event.name, event.data);\n }\n handleDbRowClick(event) {\n if (this.defaultRowAction()) {\n this.handleRowAction(this.defaultRowAction().name, event.data);\n }\n }\n handleRowAction(name, data) {\n this.commandService.execute(name, data);\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when report is executed\n */\n #fetchData;\n //#endregion\n //#region ---- Helpers ----\n convertToRowCommandItem(action) {\n const systemAction = getSystemActions(action.type);\n if (!systemAction) {\n return {\n icon: action.icon ?? 'fa-light fa-eye',\n text: action.title,\n name: action.command?.name,\n divided: action.break,\n color: action.color,\n };\n }\n const defaultAction = applySystemActionDefault(action, systemAction.key);\n return {\n icon: defaultAction.icon ?? 'fa-light fa-eye',\n text: defaultAction.title,\n name: action.command?.name,\n divided: defaultAction.break,\n color: defaultAction.color,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportTableViewComponent, isStandalone: true, selector: \"axp-report-table-view\", viewQueries: [{ propertyName: \"grid\", first: true, predicate: [\"grid\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'100px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDataTableModule }, { kind: \"component\", type: i1.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i1.AXRowIndexColumnComponent, selector: \"ax-index-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"padZero\"] }, { kind: \"component\", type: i1.AXRowSelectColumnComponent, selector: \"ax-select-column\", inputs: [\"width\", \"caption\", \"fixed\"] }, { kind: \"component\", type: i1.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i1.AXRowDropdownCommandColumnComponent, selector: \"ax-dropdown-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"emptyStateTemplate\", \"emptyStateText\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-table-view', standalone: true, imports: [\n CommonModule,\n AXDataTableModule,\n AXLoadingModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPWidgetCoreModule\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<ax-data-table\\n #grid\\n [dataSource]=\\\"dataSource\\\"\\n [paging]=\\\"true\\\"\\n (onRowDbClick)=\\\"handleDbRowClick($event)\\\"\\n class=\\\"ax-flex-1\\\"\\n>\\n <!-- Dynamic columns based on configuration -->\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.canSelectRows()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (column of columns(); track column.field) {\\n @if (column.visible) {\\n <axp-widget-column-renderer\\n [customWidth]=\\\"column.width + 'px'\\\"\\n [caption]=\\\"(column.title | translate | async)!\\\"\\n [node]=\\\"column.widget!\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (hasPrimaryRowAction()) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'100px'\\\"\\n [items]=\\\"primaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (hasSecondaryRowAction()) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"secondaryRowAction()\\\"\\n (onItemClick)=\\\"handleRowClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n</ax-data-table>\\n\" }]\n }], propDecorators: { grid: [{ type: i0.ViewChild, args: ['grid', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3JlcG9ydC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcmVwb3J0LXZpZXdlci92aWV3cy9yZXBvcnQtdGFibGUtdmlldy9yZXBvcnQtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC10YWJsZS12aWV3L3JlcG9ydC10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsaUJBQWlCLEVBQXVFLE1BQU0sK0JBQStCLENBQUM7QUFDN0osT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQXVCLHdCQUF3QixFQUFFLGdCQUFn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RSxNQUFNLENBQUMsSUFBSSxJQUFJLGlCQUFpQjtnQkFDdEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJO2dCQUMxQixPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzthQUNBLENBQUM7UUFDeEIsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsR0FBMEIsQ0FBQyxDQUFDO1FBQ2hHLE9BQU87WUFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxpQkFBaUI7WUFDN0MsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUk7WUFDMUIsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQzVCLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztTQUNQLENBQUM7SUFDeEIsQ0FBQzsrR0F6SVUsMkJBQTJCO21HQUEzQiwyQkFBMkIsK0xDNUJ4QyxnckNBc0NBLDJDRHJCSSxZQUFZLDhCQUNaLGlCQUFpQixndENBQ2pCLGVBQWUsOEJBQ2YsaUJBQWlCLDhCQUNqQixtQkFBbUIsOEJBQ25CLG1CQUFtQjs7NEZBTVYsMkJBQTJCO2tCQWZ2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7a0VBVW1CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFUYWJsZUNvbXBvbmVudCwgQVhEYXRhVGFibGVNb2R1bGUsIEFYRGF0YVRhYmxlUm93RGJDbGljaywgQVhSb3dDb21tYW5kSXRlbSwgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQV2lkZ2V0Q29sdW1uTm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcbmltcG9ydCB7IEFYUFJlcG9ydENvbHVtbiwgQVhQUmVwb3J0VGFibGVMYXlvdXQsIEFYUFJlcG9ydFRhYmxlTGF5b3V0Um93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vcmVwb3J0cyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYUFN5c3RlbUFjdGlvblR5cGUsIGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdCwgZ2V0U3lzdGVtQWN0aW9ucyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtdGFibGUtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQV2lkZ2V0Q29yZU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUmVwb3J0VGFibGVWaWV3Q29tcG9uZW50IHtcblxuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFNlcnZpY2UgPSBpbmplY3QoQVhQQ29tbWFuZFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JpZCA9IHZpZXdDaGlsZDxBWERhdGFUYWJsZUNvbXBvbmVudD4oJ2dyaWQnKTtcblxuICAvLyNlbmRyZWdpb25cblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUm93QWN0aW9uKGV2ZW50Lm5hbWUsIGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURiUm93Q2xpY2soZXZlbnQ6IEFYRGF0YVRhYmxlUm93RGJDbGljayk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlZmF1bHRSb3dBY3Rpb24oKSkge1xuICAgICAgdGhpcy5oYW5kbGVSb3dBY3Rpb24odGhpcy5kZWZhdWx0Um93QWN0aW9uKCkhLm5hbWUsIGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dBY3Rpb24obmFtZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1hbmRTZXJ2aWNlLmV4ZWN1dGUobmFtZSwgZGF0YSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEVmZmVjdHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBoYW5kbGUgZGF0YSBmZXRjaGluZyB3aGVuIHJlcG9ydCBpcyBleGVjdXRlZFxuICAgKi9cbiAgI2ZldGNoRGF0YSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ3JpZCgpICYmIHRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSAmJiB0aGlzLnZtLnNob3VsZEV4ZWN1dGVSZXBvcnQoKSkge1xuICAgICAgdGhpcy5ncmlkKCk/LnJlZnJlc2goKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICh0aGlzLnZtLmN1cnJlbnRMYXlvdXQoKT8ubGF5b3V0IGFzIEFYUFJlcG9ydFRhYmxlTGF5b3V0KSE7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgbG9hZDogYXN5bmMgKGU6IEFYRGF0YVNvdXJjZVF1ZXJ5KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudm0uYWxsb3dGZXRjaERhdGEoKSkge1xuICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52bS5mZXRjaERhdGEoZSlcbiAgICAgIGlmICghcmVzdWx0Py5kYXRhIHx8IHJlc3VsdC5kYXRhLnR5cGUgIT09ICd0YWJsZScpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCB0YWJsZSByZXN1bHQnKTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IFtdLCB0b3RhbDogMCB9XG4gICAgICB9O1xuXG4gICAgICBsZXQgaXRlbXM6IGFueVtdID0gcmVzdWx0LmRhdGEuaXRlbXMgYXMgYW55W10gPz8gW107XG4gICAgICBsZXQgdG90YWwgPSByZXN1bHQuZGF0YS50b3RhbCB8fCAwO1xuXG4gICAgICByZXR1cm4geyBpdGVtcywgdG90YWwgfTtcbiAgICB9LFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBrZXk6ICdpZCdcbiAgfSk7XG5cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQoKS5jb2x1bW5zPy5tYXAoKGNvbDogQVhQUmVwb3J0Q29sdW1uKSA9PiAoe1xuICAgICAgZmllbGQ6IGNvbC5maWVsZCxcbiAgICAgIHRpdGxlOiBjb2wudGl0bGUgfHwgY29sLmZpZWxkLFxuICAgICAgd2lkdGg6IGNvbC53aWR0aCB8fCAnMTUwcHgnLFxuICAgICAgdmlzaWJsZTogY29sLnZpc2libGUgIT09IGZhbHNlLFxuICAgICAgYWxpZ246IGNvbC5hbGlnbiB8fCAnbGVmdCcsXG4gICAgICB3aWRnZXQ6IHsgLi4uY29sLndpZGdldCwgcGF0aDogY29sLmZpZWxkIH0gYXMgQVhQV2lkZ2V0Q29sdW1uTm9kZVxuICAgIH0pKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2luYXRpb25FbmFibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmxheW91dCgpLm9wdGlvbnM/LnBhZ2luYXRpb24gIT09IGZhbHNlO1xuICB9KTtcblxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3ByaW1hcnknKT8ubWFwKGEgPT4gdGhpcy5jb252ZXJ0VG9Sb3dDb21tYW5kSXRlbShhKSkgfHwgW107XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNQcmltYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByaW1hcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Vjb25kYXJ5Um93QWN0aW9uID0gY29tcHV0ZWQ8QVhSb3dDb21tYW5kSXRlbVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmlsdGVyKGEgPT4gYS5wcmlvcml0eSA9PT0gJ3NlY29uZGFyeScpPy5tYXAoYSA9PiB0aGlzLmNvbnZlcnRUb1Jvd0NvbW1hbmRJdGVtKGEpKSB8fCBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1NlY29uZGFyeVJvd0FjdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlSb3dBY3Rpb24oKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFJvd0FjdGlvbiA9IGNvbXB1dGVkPEFYUm93Q29tbWFuZEl0ZW0gfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IHRoaXMubGF5b3V0KCkuYWN0aW9ucz8uZmluZChhID0+IGEuZGVmYXVsdCk7XG4gICAgaWYgKCFkZWZhdWx0QWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvUm93Q29tbWFuZEl0ZW0oZGVmYXVsdEFjdGlvbik7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgY29udmVydFRvUm93Q29tbWFuZEl0ZW0oYWN0aW9uOiBBWFBSZXBvcnRUYWJsZUxheW91dFJvd0FjdGlvbik6IEFYUm93Q29tbWFuZEl0ZW0ge1xuICAgIGNvbnN0IHN5c3RlbUFjdGlvbiA9IGdldFN5c3RlbUFjdGlvbnMoYWN0aW9uLnR5cGUgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZSk7XG4gICAgaWYgKCFzeXN0ZW1BY3Rpb24pIHtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogYWN0aW9uLmljb24gPz8gJ2ZhLWxpZ2h0IGZhLWV5ZScsXG4gICAgICAgIHRleHQ6IGFjdGlvbi50aXRsZSxcbiAgICAgICAgbmFtZTogYWN0aW9uLmNvbW1hbmQ/Lm5hbWUsXG4gICAgICAgIGRpdmlkZWQ6IGFjdGlvbi5icmVhayxcbiAgICAgICAgY29sb3I6IGFjdGlvbi5jb2xvcixcbiAgICAgIH0gYXMgQVhSb3dDb21tYW5kSXRlbTtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFwcGx5U3lzdGVtQWN0aW9uRGVmYXVsdChhY3Rpb24sIHN5c3RlbUFjdGlvbi5rZXkgYXMgQVhQU3lzdGVtQWN0aW9uVHlwZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb246IGRlZmF1bHRBY3Rpb24uaWNvbiA/PyAnZmEtbGlnaHQgZmEtZXllJyxcbiAgICAgIHRleHQ6IGRlZmF1bHRBY3Rpb24udGl0bGUsXG4gICAgICBuYW1lOiBhY3Rpb24uY29tbWFuZD8ubmFtZSxcbiAgICAgIGRpdmlkZWQ6IGRlZmF1bHRBY3Rpb24uYnJlYWssXG4gICAgICBjb2xvcjogZGVmYXVsdEFjdGlvbi5jb2xvcixcbiAgICB9IGFzIEFYUm93Q29tbWFuZEl0ZW07XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxufSAiLCI8YXgtZGF0YS10YWJsZVxuICAjZ3JpZFxuICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgW3BhZ2luZ109XCJ0cnVlXCJcbiAgKG9uUm93RGJDbGljayk9XCJoYW5kbGVEYlJvd0NsaWNrKCRldmVudClcIlxuICBjbGFzcz1cImF4LWZsZXgtMVwiXG4+XG4gIDwhLS0gRHluYW1pYyBjb2x1bW5zIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gLS0+XG4gIDxheC1pbmRleC1jb2x1bW4gZml4ZWQ9XCJzdGFydFwiIFt3aWR0aF09XCInODBweCdcIiBbcGFkWmVyb109XCJ0cnVlXCI+PC9heC1pbmRleC1jb2x1bW4+XG4gIEBpZiAodm0uY2FuU2VsZWN0Um93cygpKSB7XG4gICAgPGF4LXNlbGVjdC1jb2x1bW4gZml4ZWQ9XCJzdGFydFwiIFt3aWR0aF09XCInNTBweCdcIj48L2F4LXNlbGVjdC1jb2x1bW4+XG4gIH1cbiAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMoKTsgdHJhY2sgY29sdW1uLmZpZWxkKSB7XG4gICAgQGlmIChjb2x1bW4udmlzaWJsZSkge1xuICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyXG4gICAgICAgIFtjdXN0b21XaWR0aF09XCJjb2x1bW4ud2lkdGggKyAncHgnXCJcbiAgICAgICAgW2NhcHRpb25dPVwiKGNvbHVtbi50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICBbbm9kZV09XCJjb2x1bW4ud2lkZ2V0IVwiXG4gICAgICA+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICB9XG4gIH1cbiAgQGlmIChoYXNQcmltYXJ5Um93QWN0aW9uKCkpIHtcbiAgICA8YXgtY29tbWFuZC1jb2x1bW5cbiAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgIFt3aWR0aF09XCInMTAwcHgnXCJcbiAgICAgIFtpdGVtc109XCJwcmltYXJ5Um93QWN0aW9uKClcIlxuICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZVJvd0NsaWNrKCRldmVudClcIlxuICAgID48L2F4LWNvbW1hbmQtY29sdW1uPlxuICB9XG4gIEBpZiAoaGFzU2Vjb25kYXJ5Um93QWN0aW9uKCkpIHtcbiAgICA8YXgtZHJvcGRvd24tY29tbWFuZC1jb2x1bW5cbiAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgIFt3aWR0aF09XCInNjBweCdcIlxuICAgICAgW2l0ZW1zXT1cInNlY29uZGFyeVJvd0FjdGlvbigpXCJcbiAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQpXCJcbiAgICA+PC9heC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbj5cbiAgfVxuPC9heC1kYXRhLXRhYmxlPlxuIl19","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXLoadingDialogModule, AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPDeviceService, } from '@acorex/platform/core';\nimport { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutStartSideComponent, } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, untracked, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXPReportViewerViewModel } from '../report-viewer.viewmodel';\nimport { AXPReportChartViewComponent } from '../views/report-chart-view/report-chart-view.component';\nimport { AXPReportTableViewComponent } from '../views/report-table-view/report-table-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/dropdown\";\nexport class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super();\n //#region ---- Dependencies ----\n this.layoutService = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.unsubscriber = inject(AXUnsubscriber);\n this.loadingDialog = inject(AXLoadingDialogService);\n this.destroyRef = inject(DestroyRef);\n //#endregion\n //#region ---- Inputs ----\n this.reportId = input(...(ngDevMode ? [undefined, { debugName: \"reportId\" }] : []));\n this.reportParameters = input({}, ...(ngDevMode ? [{ debugName: \"reportParameters\" }] : []));\n //#endregion\n //#region ---- ViewChildren ----\n this.filtersForm = viewChild('filtersForm', ...(ngDevMode ? [{ debugName: \"filtersForm\" }] : []));\n //#endregion\n //#region ---- ViewModel ----\n this.vm = inject(AXPReportViewerViewModel);\n //#endregion\n //#region ---- Effects ----\n this.watchNavigationLoading = effect(() => {\n const isBusy = this.vm.isLoading() || this.vm.isExecuting();\n untracked(() => {\n this.layoutService.setNavigationLoading(isBusy);\n //\n if (isBusy) {\n void this.openContentLoading();\n }\n else {\n this.closeContentLoading();\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"watchNavigationLoading\" }] : []));\n //#endregion\n this.loadingDialogRef = null;\n this.isDialogOpening = false;\n //#region ---- Computed Properties ----\n this.showFiltersPanel = () => this.deviceService.isLarge();\n this.showReportDisplay = () => this.deviceService.isLarge() || (this.deviceService.isSmall() && this.vm.hasBeenExecuted());\n this.baseRoutes = [this.sessionService.application?.name, 'report-management'];\n //#endregion\n //#region ---- Layout Configurations ----\n this.defaultLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 6 },\n lg: { colSpan: 12 },\n },\n });\n this.compactLayout = () => ({\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 4 },\n lg: { colSpan: 3 },\n },\n });\n this.destroyRef.onDestroy(() => this.closeContentLoading());\n }\n //#endregion\n //#region ---- Lifecycle ----\n async ngOnInit() {\n await super.ngOnInit();\n // Subscribe to route parameter changes for dynamic report loading\n this.unsubscriber.takeUntilDestroy(this.route.paramMap).subscribe(async (params) => {\n const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();\n if (reportId) {\n await this.loadReportAndRefresh(reportId);\n }\n });\n }\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n //#endregion\n //#region ---- Helper Methods ----\n async loadReportAndRefresh(reportId) {\n await this.vm.loadReport(reportId);\n // Force refresh of page layout (breadcrumbs, title, etc.) after report loads\n this.recompute();\n // Handle initial parameters from query string\n const queryParams = this.route.snapshot.queryParams;\n const initialParams = { ...queryParams };\n delete initialParams['reportId']; // Remove reportId from parameters\n // Merge with component input parameters\n const allParams = { ...initialParams, ...this.reportParameters() };\n if (Object.keys(allParams).length > 0) {\n console.log('Applying initial parameters:', allParams);\n this.vm.updateFilterContext(allParams);\n // Auto-execute if parameters are provided\n setTimeout(async () => {\n await this.vm.executeReport();\n }, 500); // Small delay to ensure form is ready\n }\n }\n async openContentLoading() {\n if (this.loadingDialogRef || this.isDialogOpening) {\n return;\n }\n this.isDialogOpening = true;\n try {\n const [title, description, cancelText] = await Promise.all([\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-title'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.in-progress-description'),\n this.translateService.translateAsync('@report-management:report-viewer.messages.loading.cancel-button'),\n ]);\n this.loadingDialogRef = this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text: description,\n buttons: [\n {\n text: cancelText,\n color: 'danger',\n onClick: () => {\n this.closeContentLoading();\n this.vm.cancel();\n },\n },\n ],\n });\n }\n finally {\n this.isDialogOpening = false;\n }\n }\n closeContentLoading() {\n if (!this.loadingDialogRef) {\n return;\n }\n this.loadingDialogRef.close();\n this.loadingDialogRef = null;\n }\n /**\n * Synchronizes filter context to URL query parameters\n * @param filterContext The current filter context to sync\n */\n syncFiltersToUrl(filterContext) {\n // Clean the filter context - remove null, undefined, and empty string values\n const cleanedParams = {};\n Object.keys(filterContext).forEach((key) => {\n const value = filterContext[key];\n if (value !== null && value !== undefined && value !== '') {\n cleanedParams[key] = value;\n }\n });\n // Update URL without navigation (preserve reportId if exists)\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n const queryParams = {\n ...cleanedParams,\n ...(reportId ? { reportId } : {}),\n };\n // Update URL without reloading\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n replaceUrl: true, // Don't add to browser history\n });\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleFiltersChange(event) {\n this.vm.updateFilterContext(event);\n this.syncFiltersToUrl(event);\n }\n handleFiltersInitiated(event) {\n this.vm.updateFilterContext(event);\n }\n async handleExecuteReport() {\n const isValid = await this.filtersForm()?.validate();\n if (!isValid?.result) {\n return;\n }\n await this.vm.executeReport();\n }\n handleRefresh() {\n this.vm.refresh();\n }\n handleClearFilters() {\n this.vm.clearFilters();\n // Reset form if available\n const form = this.filtersForm();\n if (form) {\n form.reset();\n }\n // Clear URL query parameters (preserve reportId if exists)\n const currentParams = this.route.snapshot.queryParams;\n const reportId = currentParams['reportId'];\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: reportId ? { reportId } : {},\n replaceUrl: true,\n });\n }\n //#endregion\n //#region ---- Page Configuration Overrides ----\n async getPageBreadcrumbs() {\n const breadcrumbs = [\n {\n name: 'reports',\n title: await this.translateService.translateAsync('@report-management:module.menus.root.title'),\n command: {\n name: 'navigate-to-reports',\n },\n },\n ];\n // Add categories path\n const categoriesPath = this.vm.categoriesPath();\n if (categoriesPath && categoriesPath.length > 0) {\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const category of categoriesPath) {\n urlParts.push(category.id);\n breadcrumbs.push({\n name: category.id,\n title: category.title,\n command: {\n name: 'navigate-to-category',\n options: {\n path: [...urlParts],\n },\n },\n });\n }\n }\n // Add report title as final breadcrumb\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n breadcrumbs.push({\n name: 'report-viewer',\n title: reportDefinition.title,\n });\n }\n return breadcrumbs;\n }\n async getPageTitle() {\n const reportDefinition = this.vm.reportDefinition();\n if (reportDefinition) {\n return reportDefinition.title;\n }\n return await this.translateService.translateAsync('@report-management:report-viewer.components.report-viewer.title');\n }\n async getPageDescription() {\n const reportDefinition = this.vm.reportDefinition();\n return reportDefinition?.description || null;\n }\n async getBackButton() {\n // On mobile, if report has been executed (showing report), show \"Filters\" as back button\n if (this.deviceService.isSmall() && this.vm.hasBeenExecuted()) {\n return {\n title: await this.translateService.translateAsync('@general:terms.interface.filter.title'),\n };\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length === 0) {\n // If no categories path, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n if (categoriesPath.length === 1) {\n // If only one category, go back to reports root\n return {\n title: await this.translateService.translateAsync('@report-management:report-runner.terms.menu-title'),\n };\n }\n // Go back to parent category\n const parentCategory = categoriesPath[categoriesPath.length - 1];\n return {\n title: parentCategory.title,\n };\n }\n async onBackButtonClick() {\n // On mobile, if report has been executed (showing report), go back to filters\n if (this.deviceService.isSmall() && this.vm.hasBeenExecuted()) {\n this.vm.clearExecutionState();\n return;\n }\n const categoriesPath = this.vm.categoriesPath();\n if (!categoriesPath || categoriesPath.length <= 1) {\n // Navigate back to reports root\n await this.router.navigate([...this.baseRoutes, 'reports']);\n }\n else {\n // Navigate to parent category\n let urlParts = [...this.baseRoutes, 'reports'];\n for (const cat of categoriesPath) {\n urlParts.push(cat.id);\n }\n await this.router.navigate(urlParts);\n }\n }\n async execute(command) {\n switch (command.name) {\n case 'execute-report':\n await this.handleExecuteReport();\n break;\n case 'refresh-report':\n this.handleRefresh();\n break;\n case 'reset-filters':\n this.handleClearFilters();\n break;\n case 'navigate-to-reports':\n await this.router.navigate([...this.baseRoutes, 'reports']);\n break;\n case 'navigate-to-category':\n const path = command.options?.['path'];\n if (path) {\n await this.router.navigate(path);\n }\n break;\n default:\n console.warn(`Unknown command: ${command.name}`);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportViewerPageComponent, isStandalone: true, selector: \"axp-report-viewer-page\", inputs: { reportId: { classPropertyName: \"reportId\", publicName: \"reportId\", isSignal: true, isRequired: false, transformFunction: null }, reportParameters: { classPropertyName: \"reportParameters\", publicName: \"reportParameters\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"axp-report-viewer-page\" }, providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], viewQueries: [{ propertyName: \"filtersForm\", first: true, predicate: [\"filtersForm\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer\\n #filtersForm\\n [layout]=\\\"vm.formDefinition()\\\"\\n [context]=\\\"vm.filterContext()\\\"\\n [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\"\\n (contextInitiated)=\\\"handleFiltersInitiated($event)\\\"\\n >\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item\\n [text]=\\\"layout.title\\\"\\n [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\"\\n >\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\"\\n (onClick)=\\\"vm.clearError()\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (deviceService.isSmall() && !vm.hasBeenExecuted()) {\\n <axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-page-footer>\\n}\\n\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i2.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i2.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i5.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXLoadingDialogModule }, { kind: \"component\", type: \n //\n AXPLayoutRendererComponent, selector: \"axp-layout-renderer\", inputs: [\"layout\", \"context\", \"look\", \"mode\"], outputs: [\"contextChange\", \"contextInitiated\", \"validityChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutStartSideComponent, selector: \"axp-layout-page-start-side, axp-layout-start-side\" }, { kind: \"component\", type: AXPThemeLayoutHeaderComponent, selector: \"axp-layout-header\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPReportTableViewComponent, selector: \"axp-report-table-view\" }, { kind: \"component\", type: AXPThemeLayoutFooterComponent, selector: \"axp-layout-footer, axp-layout-page-footer\" }, { kind: \"component\", type: AXPReportChartViewComponent, selector: \"axp-report-chart-view\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-viewer-page', standalone: true, imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXBadgeModule,\n AXLoadingDialogModule,\n //\n AXPLayoutRendererComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXPReportTableViewComponent,\n AXPThemeLayoutFooterComponent,\n AXPReportChartViewComponent,\n AXPStateMessageComponent,\n ], providers: [\n AXUnsubscriber,\n AXPReportViewerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPReportViewerPageComponent,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Left Panel: Filters (Always visible for desktop) -->\\n @if (showFiltersPanel()) {\\n <axp-layout-start-side>\\n <axp-layout-header>\\n <axp-layout-title>\\n {{ t('@report-management:report-viewer.components.filters.title') | async }}\\n </axp-layout-title>\\n </axp-layout-header>\\n <axp-layout-content>\\n <axp-layout-renderer\\n #filtersForm\\n [layout]=\\\"vm.formDefinition()\\\"\\n [context]=\\\"vm.filterContext()\\\"\\n [look]=\\\"'group'\\\"\\n (contextChange)=\\\"handleFiltersChange($event)\\\"\\n (contextInitiated)=\\\"handleFiltersInitiated($event)\\\"\\n >\\n </axp-layout-renderer>\\n </axp-layout-content>\\n <axp-layout-footer class=\\\"ax-p-4 ax-border-t\\\" *translate=\\\"let t\\\">\\n @if (vm.hasUnappliedFilters()) {\\n <div class=\\\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\\\">\\n <ax-icon class=\\\"fa-light fa-exclamation-triangle ax-text-sm\\\"></ax-icon>\\n <span class=\\\"ax-text-xs\\\">{{\\n t('@report-management:report-viewer.components.filters.messages.warning.unapplied') | async\\n }}</span>\\n </div>\\n </div>\\n }\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.execute.title') | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-layout-footer>\\n </axp-layout-start-side>\\n }\\n <axp-page-toolbar>\\n <axp-layout-prefix>\\n @if (vm.hasMultipleLayouts() && showReportDisplay()) {\\n <ax-button [text]=\\\"vm.currentLayout()?.title\\\">\\n <ax-icon icon=\\\"fa-light {{ vm.currentLayout()?.icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n @for (layout of vm.availableLayouts(); track layout.id) {\\n <ax-button-item-list>\\n <ax-button-item\\n [text]=\\\"layout.title\\\"\\n [selected]=\\\"vm.currentLayout()?.id === layout.id\\\"\\n (onClick)=\\\"vm.switchLayout(layout.id)\\\"\\n >\\n <ax-icon icon=\\\"fa-light {{ layout.icon }}\\\"></ax-icon>\\n </ax-button-item>\\n </ax-button-item-list>\\n }\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </axp-layout-prefix>\\n <axp-layout-suffix> </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Main Content: Report Display -->\\n <axp-page-content class=\\\"ax-overflow-auto\\\">\\n @if (vm.hasError()) {\\n <!-- Error State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-exclamation-triangle\\\"\\n look=\\\"error\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || 'An unexpected error occurred'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.retry.title') | async\\\"\\n (onClick)=\\\"vm.clearError()\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-refresh\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else if (!vm.reportDefinition()) {\\n <!-- No Report Selected State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-chart-line\\\"\\n [title]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.report-viewer.empty-states.no-report.description'\\\"\\n >\\n <div slot=\\\"actions\\\">\\n <ax-button\\n look=\\\"outline\\\"\\n color=\\\"primary\\\"\\n [text]=\\\"t('@report-management:report-viewer.actions.browse-reports.title') | async\\\"\\n >\\n <ax-prefix>\\n <ax-icon class=\\\"fa-light fa-folder-open\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </axp-state-message>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"reportDisplay\\\"></ng-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\\n<!-- Desktop: Report Display Area -->\\n<ng-template #reportDisplay>\\n @if (showReportDisplay()) {\\n <!-- Desktop & Mobile: Report Display Area -->\\n @if (vm.isTableLayout()) {\\n <axp-report-table-view> </axp-report-table-view>\\n } @else if (vm.isChartLayout()) {\\n <axp-report-chart-view> </axp-report-chart-view>\\n }\\n } @else {\\n <!-- Mobile: Show filters -->\\n <axp-layout-renderer #filtersForm [layout]=\\\"vm.formDefinition()\\\" [context]=\\\"vm.filterContext()\\\" [look]=\\\"'fieldset'\\\">\\n </axp-layout-renderer>\\n }\\n</ng-template>\\n\\n<!-- Mobile: Execute Button -->\\n@if (deviceService.isSmall() && !vm.hasBeenExecuted()) {\\n <axp-page-footer class=\\\"ax-p-2 ax-border-t\\\">\\n <ax-button\\n class=\\\"ax-w-full\\\"\\n [disabled]=\\\"!vm.canExecute()\\\"\\n [text]=\\\"'@report-management:report-viewer.actions.execute.title' | translate | async\\\"\\n [color]=\\\"'primary'\\\"\\n (onClick)=\\\"execute({ name: 'execute-report' })\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-play\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </axp-page-footer>\\n}\\n\", styles: [\".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:1rem}.axp-report-viewer-page .__mobile-filters{display:flex;height:100%;flex-direction:column;overflow-y:auto}.axp-report-viewer-page .__mobile-filters .__mobile-filters-content{flex:1 1 0%}.axp-report-viewer-page .__mobile-filters .__mobile-filters-footer{position:sticky;bottom:0;border-top-width:1px;padding-top:.5rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { reportId: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportId\", required: false }] }], reportParameters: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reportParameters\", required: false }] }], filtersForm: [{ type: i0.ViewChild, args: ['filtersForm', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvcmVwb3J0LXZpZXdlci1wYWdlL3JlcG9ydC12aWV3ZXItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3JlcG9ydC12aWV3ZXItcGFnZS9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFJTCxnQkFBZ0IsR0FHakIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFP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QmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWExvYWRpbmdEaWFsb2dNb2R1bGUsIEFYTG9hZGluZ0RpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZy1kaWFsb2cnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBWFBCYWNrQnV0dG9uLFxuICBBWFBCcmVhZGNydW1iSXRlbSxcbiAgQVhQQ29udGV4dERhdGEsXG4gIEFYUERldmljZVNlcnZpY2UsXG4gIEFYUEV4ZWN1dGVDb21tYW5kLFxuICBBWFBHcmlkTGF5b3V0T3B0aW9ucyxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQge1xuICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gIEFYUFRoZW1lTGF5b3V0Rm9vdGVyQ29tcG9uZW50LFxuICBBWFBUaGVtZUxheW91dEhlYWRlckNvbXBvbmVudCxcbiAgQVhQVGhlbWVMYXlvdXRTdGFydFNpZGVDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHVudHJhY2tlZCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCB9IGZyb20gJy4uL3JlcG9ydC12aWV3ZXIudmlld21vZGVsJztcbmltcG9ydCB7IEFYUFJlcG9ydENoYXJ0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXdzL3JlcG9ydC1jaGFydC12aWV3L3JlcG9ydC1jaGFydC12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBSZXBvcnRUYWJsZVZpZXdDb21wb25lbnQgfSBmcm9tICcuLi92aWV3cy9yZXBvcnQtdGFibGUtdmlldy9yZXBvcnQtdGFibGUtdmlldy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtcmVwb3J0LXZpZXdlci1wYWdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWExvYWRpbmdEaWFsb2dNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudCxcbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0U3RhcnRTaWRlQ29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0SGVhZGVyQ29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQUmVwb3J0VGFibGVWaWV3Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0Rm9vdGVyQ29tcG9uZW50LFxuICAgIEFYUFJlcG9ydENoYXJ0Vmlld0NvbXBvbmVudCxcbiAgICBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEFYVW5zdWJzY3JpYmVyLFxuICAgIEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFBSZXBvcnRWaWV3ZXJQYWdlQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnQtdmlld2VyLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdheHAtcmVwb3J0LXZpZXdlci1wYWdlJyB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnRWaWV3ZXJQYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbGF5b3V0U2VydmljZSA9IGluamVjdChBWFBMYXlvdXRUaGVtZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGV2aWNlU2VydmljZSA9IGluamVjdChBWFBEZXZpY2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nRGlhbG9nID0gaW5qZWN0KEFYTG9hZGluZ0RpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBJbnB1dHMgICAtLS0tXG5cbiAgcmVwb3J0SWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlcG9ydFBhcmFtZXRlcnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBWaWV3Q2hpbGRyZW4gICAtLS0tXG5cbiAgcHJpdmF0ZSBmaWx0ZXJzRm9ybSA9IHZpZXdDaGlsZDxBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudD4oJ2ZpbHRlcnNGb3JtJyk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBWaWV3TW9kZWwgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYUFJlcG9ydFZpZXdlclZpZXdNb2RlbCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgd2F0Y2hOYXZpZ2F0aW9uTG9hZGluZyA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNCdXN5ID0gdGhpcy52bS5pc0xvYWRpbmcoKSB8fCB0aGlzLnZtLmlzRXhlY3V0aW5nKCk7XG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMubGF5b3V0U2VydmljZS5zZXROYXZpZ2F0aW9uTG9hZGluZyhpc0J1c3kpO1xuICAgICAgLy9cbiAgICAgIGlmIChpc0J1c3kpIHtcbiAgICAgICAgdm9pZCB0aGlzLm9wZW5Db250ZW50TG9hZGluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9zZUNvbnRlbnRMb2FkaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgbG9hZGluZ0RpYWxvZ1JlZjogeyBjbG9zZTogKCkgPT4gdm9pZCB9IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaXNEaWFsb2dPcGVuaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuY2xvc2VDb250ZW50TG9hZGluZygpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgc2hvd0ZpbHRlcnNQYW5lbCA9ICgpID0+IHRoaXMuZGV2aWNlU2VydmljZS5pc0xhcmdlKCk7XG5cbiAgcHJvdGVjdGVkIHNob3dSZXBvcnREaXNwbGF5ID0gKCkgPT5cbiAgICB0aGlzLmRldmljZVNlcnZpY2UuaXNMYXJnZSgpIHx8ICh0aGlzLmRldmljZVNlcnZpY2UuaXNTbWFsbCgpICYmIHRoaXMudm0uaGFzQmVlbkV4ZWN1dGVkKCkpO1xuXG4gIHByaXZhdGUgYmFzZVJvdXRlcyA9IFt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lLCAncmVwb3J0LW1hbmFnZW1lbnQnXTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIExheW91dCBDb25maWd1cmF0aW9ucyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgZGVmYXVsdExheW91dCA9ICgpOiBBWFBHcmlkTGF5b3V0T3B0aW9ucyA9PiAoe1xuICAgIHBvc2l0aW9uczoge1xuICAgICAgc206IHsgY29sU3BhbjogMTIgfSxcbiAgICAgIG1kOiB7IGNvbFNwYW46IDYgfSxcbiAgICAgIGxnOiB7IGNvbFNwYW46IDEyIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGNvbXBhY3RMYXlvdXQgPSAoKTogQVhQR3JpZExheW91dE9wdGlvbnMgPT4gKHtcbiAgICBwb3NpdGlvbnM6IHtcbiAgICAgIHNtOiB7IGNvbFNwYW46IDEyIH0sXG4gICAgICBtZDogeyBjb2xTcGFuOiA0IH0sXG4gICAgICBsZzogeyBjb2xTcGFuOiAzIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byByb3V0ZSBwYXJhbWV0ZXIgY2hhbmdlcyBmb3IgZHluYW1pYyByZXBvcnQgbG9hZGluZ1xuICAgIHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kodGhpcy5yb3V0ZS5wYXJhbU1hcCkuc3Vic2NyaWJlKGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHJlcG9ydElkID0gcGFyYW1zLmdldCgncmVwb3J0SWQnKSB8fCB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdyZXBvcnRJZCcpIHx8IHRoaXMucmVwb3J0SWQoKTtcblxuICAgICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZFJlcG9ydEFuZFJlZnJlc2gocmVwb3J0SWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCB0byBoYW5kbGUgZGF0YSBmZXRjaGluZyB3aGVuIGNoYXJ0IGNvbmZpZ3VyYXRpb24gY2hhbmdlc1xuICAgKi9cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJlcG9ydEFuZFJlZnJlc2gocmVwb3J0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudm0ubG9hZFJlcG9ydChyZXBvcnRJZCk7XG5cbiAgICAvLyBGb3JjZSByZWZyZXNoIG9mIHBhZ2UgbGF5b3V0IChicmVhZGNydW1icywgdGl0bGUsIGV0Yy4pIGFmdGVyIHJlcG9ydCBsb2Fkc1xuICAgIHRoaXMucmVjb21wdXRlKCk7XG5cbiAgICAvLyBIYW5kbGUgaW5pdGlhbCBwYXJhbWV0ZXJzIGZyb20gcXVlcnkgc3RyaW5nXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xuICAgIGNvbnN0IGluaXRpYWxQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zIH07XG4gICAgZGVsZXRlIGluaXRpYWxQYXJhbXNbJ3JlcG9ydElkJ107IC8vIFJlbW92ZSByZXBvcnRJZCBmcm9tIHBhcmFtZXRlcnNcblxuICAgIC8vIE1lcmdlIHdpdGggY29tcG9uZW50IGlucHV0IHBhcmFtZXRlcnNcbiAgICBjb25zdCBhbGxQYXJhbXMgPSB7IC4uLmluaXRpYWxQYXJhbXMsIC4uLnRoaXMucmVwb3J0UGFyYW1ldGVycygpIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoYWxsUGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnQXBwbHlpbmcgaW5pdGlhbCBwYXJhbWV0ZXJzOicsIGFsbFBhcmFtcyk7XG4gICAgICB0aGlzLnZtLnVwZGF0ZUZpbHRlckNvbnRleHQoYWxsUGFyYW1zKTtcbiAgICAgIC8vIEF1dG8tZXhlY3V0ZSBpZiBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZFxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMudm0uZXhlY3V0ZVJlcG9ydCgpO1xuICAgICAgfSwgNTAwKTsgLy8gU21hbGwgZGVsYXkgdG8gZW5zdXJlIGZvcm0gaXMgcmVhZHlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9wZW5Db250ZW50TG9hZGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nRGlhbG9nUmVmIHx8IHRoaXMuaXNEaWFsb2dPcGVuaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0RpYWxvZ09wZW5pbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFt0aXRsZSwgZGVzY3JpcHRpb24sIGNhbmNlbFRleHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmxvYWRpbmcuaW4tcHJvZ3Jlc3MtdGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5tZXNzYWdlcy5sb2FkaW5nLmluLXByb2dyZXNzLWRlc2NyaXB0aW9uJyxcbiAgICAgICAgKSxcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmxvYWRpbmcuY2FuY2VsLWJ1dHRvbicpLFxuICAgICAgXSk7XG5cbiAgICAgIHRoaXMubG9hZGluZ0RpYWxvZ1JlZiA9IHRoaXMubG9hZGluZ0RpYWxvZy5zaG93KHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIG1vZGU6ICdpbmRldGVybWluYXRlJyxcbiAgICAgICAgcHJvZ3Jlc3NDb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICB0ZXh0OiBkZXNjcmlwdGlvbixcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IGNhbmNlbFRleHQsXG4gICAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2xvc2VDb250ZW50TG9hZGluZygpO1xuICAgICAgICAgICAgICB0aGlzLnZtLmNhbmNlbCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNEaWFsb2dPcGVuaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUNvbnRlbnRMb2FkaW5nKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2FkaW5nRGlhbG9nUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nRGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgdGhpcy5sb2FkaW5nRGlhbG9nUmVmID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbml6ZXMgZmlsdGVyIGNvbnRleHQgdG8gVVJMIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIGZpbHRlckNvbnRleHQgVGhlIGN1cnJlbnQgZmlsdGVyIGNvbnRleHQgdG8gc3luY1xuICAgKi9cbiAgcHJpdmF0ZSBzeW5jRmlsdGVyc1RvVXJsKGZpbHRlckNvbnRleHQ6IEFYUENvbnRleHREYXRhKTogdm9pZCB7XG4gICAgLy8gQ2xlYW4gdGhlIGZpbHRlciBjb250ZXh0IC0gcmVtb3ZlIG51bGwsIHVuZGVmaW5lZCwgYW5kIGVtcHR5IHN0cmluZyB2YWx1ZXNcbiAgICBjb25zdCBjbGVhbmVkUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhmaWx0ZXJDb250ZXh0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyQ29udGV4dFtrZXldO1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGNsZWFuZWRQYXJhbXNba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIFVSTCB3aXRob3V0IG5hdmlnYXRpb24gKHByZXNlcnZlIHJlcG9ydElkIGlmIGV4aXN0cylcbiAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcbiAgICBjb25zdCByZXBvcnRJZCA9IGN1cnJlbnRQYXJhbXNbJ3JlcG9ydElkJ107XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcbiAgICAgIC4uLmNsZWFuZWRQYXJhbXMsXG4gICAgICAuLi4ocmVwb3J0SWQgPyB7IHJlcG9ydElkIH0gOiB7fSksXG4gICAgfTtcblxuICAgIC8vIFVwZGF0ZSBVUkwgd2l0aG91dCByZWxvYWRpbmdcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLCAvLyBEb24ndCBhZGQgdG8gYnJvd3NlciBoaXN0b3J5XG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBoYW5kbGVGaWx0ZXJzQ2hhbmdlKGV2ZW50OiBBWFBDb250ZXh0RGF0YSk6IHZvaWQge1xuICAgIHRoaXMudm0udXBkYXRlRmlsdGVyQ29udGV4dChldmVudCk7XG4gICAgdGhpcy5zeW5jRmlsdGVyc1RvVXJsKGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVGaWx0ZXJzSW5pdGlhdGVkKGV2ZW50OiBBWFBDb250ZXh0RGF0YSk6IHZvaWQge1xuICAgIHRoaXMudm0udXBkYXRlRmlsdGVyQ29udGV4dChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlRXhlY3V0ZVJlcG9ydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgdGhpcy5maWx0ZXJzRm9ybSgpPy52YWxpZGF0ZSgpO1xuICAgIGlmICghaXNWYWxpZD8ucmVzdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudm0uZXhlY3V0ZVJlcG9ydCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy52bS5yZWZyZXNoKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMudm0uY2xlYXJGaWx0ZXJzKCk7XG5cbiAgICAvLyBSZXNldCBmb3JtIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZpbHRlcnNGb3JtKCk7XG4gICAgaWYgKGZvcm0pIHtcbiAgICAgIGZvcm0ucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvLyBDbGVhciBVUkwgcXVlcnkgcGFyYW1ldGVycyAocHJlc2VydmUgcmVwb3J0SWQgaWYgZXhpc3RzKVxuICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xuICAgIGNvbnN0IHJlcG9ydElkID0gY3VycmVudFBhcmFtc1sncmVwb3J0SWQnXTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHJlcG9ydElkID8geyByZXBvcnRJZCB9IDoge30sXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQYWdlIENvbmZpZ3VyYXRpb24gT3ZlcnJpZGVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBnZXRQYWdlQnJlYWRjcnVtYnMoKTogUHJvbWlzZTxBWFBCcmVhZGNydW1iSXRlbVtdPiB7XG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IEFYUEJyZWFkY3J1bWJJdGVtW10gPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZXBvcnRzJyxcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHJlcG9ydC1tYW5hZ2VtZW50Om1vZHVsZS5tZW51cy5yb290LnRpdGxlJyksXG4gICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICBuYW1lOiAnbmF2aWdhdGUtdG8tcmVwb3J0cycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICAvLyBBZGQgY2F0ZWdvcmllcyBwYXRoXG4gICAgY29uc3QgY2F0ZWdvcmllc1BhdGggPSB0aGlzLnZtLmNhdGVnb3JpZXNQYXRoKCk7XG4gICAgaWYgKGNhdGVnb3JpZXNQYXRoICYmIGNhdGVnb3JpZXNQYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCB1cmxQYXJ0cyA9IFsuLi50aGlzLmJhc2VSb3V0ZXMsICdyZXBvcnRzJ107XG4gICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNQYXRoKSB7XG4gICAgICAgIHVybFBhcnRzLnB1c2goY2F0ZWdvcnkuaWQpO1xuICAgICAgICBicmVhZGNydW1icy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5pZCxcbiAgICAgICAgICB0aXRsZTogY2F0ZWdvcnkudGl0bGUsXG4gICAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgICAgbmFtZTogJ25hdmlnYXRlLXRvLWNhdGVnb3J5JyxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGF0aDogWy4uLnVybFBhcnRzXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlcG9ydCB0aXRsZSBhcyBmaW5hbCBicmVhZGNydW1iXG4gICAgY29uc3QgcmVwb3J0RGVmaW5pdGlvbiA9IHRoaXMudm0ucmVwb3J0RGVmaW5pdGlvbigpO1xuICAgIGlmIChyZXBvcnREZWZpbml0aW9uKSB7XG4gICAgICBicmVhZGNydW1icy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ3JlcG9ydC12aWV3ZXInLFxuICAgICAgICB0aXRsZTogcmVwb3J0RGVmaW5pdGlvbi50aXRsZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBicmVhZGNydW1icztcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlcG9ydERlZmluaXRpb24gPSB0aGlzLnZtLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICBpZiAocmVwb3J0RGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuIHJlcG9ydERlZmluaXRpb24udGl0bGU7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuY29tcG9uZW50cy5yZXBvcnQtdmlld2VyLnRpdGxlJyxcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZURlc2NyaXB0aW9uKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJlcG9ydERlZmluaXRpb24gPSB0aGlzLnZtLnJlcG9ydERlZmluaXRpb24oKTtcbiAgICByZXR1cm4gcmVwb3J0RGVmaW5pdGlvbj8uZGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldEJhY2tCdXR0b24oKTogUHJvbWlzZTxBWFBCYWNrQnV0dG9uIHwgbnVsbD4ge1xuICAgIC8vIE9uIG1vYmlsZSwgaWYgcmVwb3J0IGhhcyBiZWVuIGV4ZWN1dGVkIChzaG93aW5nIHJlcG9ydCksIHNob3cgXCJGaWx0ZXJzXCIgYXMgYmFjayBidXR0b25cbiAgICBpZiAodGhpcy5kZXZpY2VTZXJ2aWNlLmlzU21hbGwoKSAmJiB0aGlzLnZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAZ2VuZXJhbDp0ZXJtcy5pbnRlcmZhY2UuZmlsdGVyLnRpdGxlJyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhdGVnb3JpZXNQYXRoID0gdGhpcy52bS5jYXRlZ29yaWVzUGF0aCgpO1xuXG4gICAgaWYgKCFjYXRlZ29yaWVzUGF0aCB8fCBjYXRlZ29yaWVzUGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIElmIG5vIGNhdGVnb3JpZXMgcGF0aCwgZ28gYmFjayB0byByZXBvcnRzIHJvb3RcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtcnVubmVyLnRlcm1zLm1lbnUtdGl0bGUnKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGNhdGVnb3JpZXNQYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gSWYgb25seSBvbmUgY2F0ZWdvcnksIGdvIGJhY2sgdG8gcmVwb3J0cyByb290XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXJ1bm5lci50ZXJtcy5tZW51LXRpdGxlJyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEdvIGJhY2sgdG8gcGFyZW50IGNhdGVnb3J5XG4gICAgY29uc3QgcGFyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yaWVzUGF0aFtjYXRlZ29yaWVzUGF0aC5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHBhcmVudENhdGVnb3J5LnRpdGxlLFxuICAgIH07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBvbkJhY2tCdXR0b25DbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBPbiBtb2JpbGUsIGlmIHJlcG9ydCBoYXMgYmVlbiBleGVjdXRlZCAoc2hvd2luZyByZXBvcnQpLCBnbyBiYWNrIHRvIGZpbHRlcnNcbiAgICBpZiAodGhpcy5kZXZpY2VTZXJ2aWNlLmlzU21hbGwoKSAmJiB0aGlzLnZtLmhhc0JlZW5FeGVjdXRlZCgpKSB7XG4gICAgICB0aGlzLnZtLmNsZWFyRXhlY3V0aW9uU3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYXRlZ29yaWVzUGF0aCA9IHRoaXMudm0uY2F0ZWdvcmllc1BhdGgoKTtcblxuICAgIGlmICghY2F0ZWdvcmllc1BhdGggfHwgY2F0ZWdvcmllc1BhdGgubGVuZ3RoIDw9IDEpIHtcbiAgICAgIC8vIE5hdmlnYXRlIGJhY2sgdG8gcmVwb3J0cyByb290XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbLi4udGhpcy5iYXNlUm91dGVzLCAncmVwb3J0cyddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTmF2aWdhdGUgdG8gcGFyZW50IGNhdGVnb3J5XG4gICAgICBsZXQgdXJsUGFydHMgPSBbLi4udGhpcy5iYXNlUm91dGVzLCAncmVwb3J0cyddO1xuICAgICAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllc1BhdGgpIHtcbiAgICAgICAgdXJsUGFydHMucHVzaChjYXQuaWQpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUodXJsUGFydHMpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29tbWFuZDogQVhQRXhlY3V0ZUNvbW1hbmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQubmFtZSkge1xuICAgICAgY2FzZSAnZXhlY3V0ZS1yZXBvcnQnOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUV4ZWN1dGVSZXBvcnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZWZyZXNoLXJlcG9ydCc6XG4gICAgICAgIHRoaXMuaGFuZGxlUmVmcmVzaCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jlc2V0LWZpbHRlcnMnOlxuICAgICAgICB0aGlzLmhhbmRsZUNsZWFyRmlsdGVycygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25hdmlnYXRlLXRvLXJlcG9ydHMnOlxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbLi4udGhpcy5iYXNlUm91dGVzLCAncmVwb3J0cyddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICduYXZpZ2F0ZS10by1jYXRlZ29yeSc6XG4gICAgICAgIGNvbnN0IHBhdGggPSBjb21tYW5kLm9wdGlvbnM/LlsncGF0aCddIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZC5uYW1lfWApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjxheHAtcGFnZS1sYXlvdXQgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIDwhLS0gTGVmdCBQYW5lbDogRmlsdGVycyAoQWx3YXlzIHZpc2libGUgZm9yIGRlc2t0b3ApIC0tPlxuICBAaWYgKHNob3dGaWx0ZXJzUGFuZWwoKSkge1xuICAgIDxheHAtbGF5b3V0LXN0YXJ0LXNpZGU+XG4gICAgICA8YXhwLWxheW91dC1oZWFkZXI+XG4gICAgICAgIDxheHAtbGF5b3V0LXRpdGxlPlxuICAgICAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuZmlsdGVycy50aXRsZScpIHwgYXN5bmMgfX1cbiAgICAgICAgPC9heHAtbGF5b3V0LXRpdGxlPlxuICAgICAgPC9heHAtbGF5b3V0LWhlYWRlcj5cbiAgICAgIDxheHAtbGF5b3V0LWNvbnRlbnQ+XG4gICAgICAgIDxheHAtbGF5b3V0LXJlbmRlcmVyXG4gICAgICAgICAgI2ZpbHRlcnNGb3JtXG4gICAgICAgICAgW2xheW91dF09XCJ2bS5mb3JtRGVmaW5pdGlvbigpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJ2bS5maWx0ZXJDb250ZXh0KClcIlxuICAgICAgICAgIFtsb29rXT1cIidncm91cCdcIlxuICAgICAgICAgIChjb250ZXh0Q2hhbmdlKT1cImhhbmRsZUZpbHRlcnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGNvbnRleHRJbml0aWF0ZWQpPVwiaGFuZGxlRmlsdGVyc0luaXRpYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2F4cC1sYXlvdXQtcmVuZGVyZXI+XG4gICAgICA8L2F4cC1sYXlvdXQtY29udGVudD5cbiAgICAgIDxheHAtbGF5b3V0LWZvb3RlciBjbGFzcz1cImF4LXAtNCBheC1ib3JkZXItdFwiICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICAgICAgICBAaWYgKHZtLmhhc1VuYXBwbGllZEZpbHRlcnMoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC13LWZ1bGwgYXgtd2FybmluZy1saWdodGVzdCBheC1tYi0yIGF4LXAtMiBheC1yb3VuZGVkIGF4LWJvcmRlciBheC1ib3JkZXItd2FybmluZy0yMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBheC10ZXh0LXdhcm5pbmctODAwXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgYXgtdGV4dC1zbVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhzXCI+e3tcbiAgICAgICAgICAgICAgICB0KCdAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmZpbHRlcnMubWVzc2FnZXMud2FybmluZy51bmFwcGxpZWQnKSB8IGFzeW5jXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXZtLmNhbkV4ZWN1dGUoKVwiXG4gICAgICAgICAgW3RleHRdPVwidCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5leGVjdXRlLnRpdGxlJykgfCBhc3luY1wiXG4gICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiZXhlY3V0ZSh7IG5hbWU6ICdleGVjdXRlLXJlcG9ydCcgfSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXhwLWxheW91dC1mb290ZXI+XG4gICAgPC9heHAtbGF5b3V0LXN0YXJ0LXNpZGU+XG4gIH1cbiAgPGF4cC1wYWdlLXRvb2xiYXI+XG4gICAgPGF4cC1sYXlvdXQtcHJlZml4PlxuICAgICAgQGlmICh2bS5oYXNNdWx0aXBsZUxheW91dHMoKSAmJiBzaG93UmVwb3J0RGlzcGxheSgpKSB7XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwidm0uY3VycmVudExheW91dCgpPy50aXRsZVwiPlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCB7eyB2bS5jdXJyZW50TGF5b3V0KCk/Lmljb24gfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgQGZvciAobGF5b3V0IG9mIHZtLmF2YWlsYWJsZUxheW91dHMoKTsgdHJhY2sgbGF5b3V0LmlkKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwibGF5b3V0LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ2bS5jdXJyZW50TGF5b3V0KCk/LmlkID09PSBsYXlvdXQuaWRcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uc3dpdGNoTGF5b3V0KGxheW91dC5pZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCB7eyBsYXlvdXQuaWNvbiB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9heHAtbGF5b3V0LXByZWZpeD5cbiAgICA8YXhwLWxheW91dC1zdWZmaXg+IDwvYXhwLWxheW91dC1zdWZmaXg+XG4gIDwvYXhwLXBhZ2UtdG9vbGJhcj5cblxuICA8IS0tIE1haW4gQ29udGVudDogUmVwb3J0IERpc3BsYXkgLS0+XG4gIDxheHAtcGFnZS1jb250ZW50IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgIEBpZiAodm0uaGFzRXJyb3IoKSkge1xuICAgICAgPCEtLSBFcnJvciBTdGF0ZSAtLT5cbiAgICAgIDxheHAtc3RhdGUtbWVzc2FnZVxuICAgICAgICBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgICAgICBsb29rPVwiZXJyb3JcIlxuICAgICAgICBbdGl0bGVdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLm1lc3NhZ2VzLmVycm9yLmZldGNoLXRpdGxlJ1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJ2bS5lcnJvcigpIHx8ICdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkJ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc2xvdD1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICBsb29rPVwib3V0bGluZVwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgW3RleHRdPVwidCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5yZXRyeS50aXRsZScpIHwgYXN5bmNcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uY2xlYXJFcnJvcigpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXJlZnJlc2hcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgIH0gQGVsc2UgaWYgKCF2bS5yZXBvcnREZWZpbml0aW9uKCkpIHtcbiAgICAgIDwhLS0gTm8gUmVwb3J0IFNlbGVjdGVkIFN0YXRlIC0tPlxuICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlXG4gICAgICAgIGljb249XCJmYS1saWdodCBmYS1jaGFydC1saW5lXCJcbiAgICAgICAgW3RpdGxlXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLnJlcG9ydC12aWV3ZXIuZW1wdHktc3RhdGVzLm5vLXJlcG9ydC50aXRsZSdcIlxuICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMucmVwb3J0LXZpZXdlci5lbXB0eS1zdGF0ZXMubm8tcmVwb3J0LmRlc2NyaXB0aW9uJ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc2xvdD1cImFjdGlvbnNcIj5cbiAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICBsb29rPVwib3V0bGluZVwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgW3RleHRdPVwidCgnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIuYWN0aW9ucy5icm93c2UtcmVwb3J0cy50aXRsZScpIHwgYXN5bmNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtZm9sZGVyLW9wZW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlcG9ydERpc3BsYXlcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gIDwvYXhwLXBhZ2UtY29udGVudD5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuXG48IS0tIERlc2t0b3A6IFJlcG9ydCBEaXNwbGF5IEFyZWEgLS0+XG48bmctdGVtcGxhdGUgI3JlcG9ydERpc3BsYXk+XG4gIEBpZiAoc2hvd1JlcG9ydERpc3BsYXkoKSkge1xuICAgIDwhLS0gRGVza3RvcCAmIE1vYmlsZTogUmVwb3J0IERpc3BsYXkgQXJlYSAtLT5cbiAgICBAaWYgKHZtLmlzVGFibGVMYXlvdXQoKSkge1xuICAgICAgPGF4cC1yZXBvcnQtdGFibGUtdmlldz4gPC9heHAtcmVwb3J0LXRhYmxlLXZpZXc+XG4gICAgfSBAZWxzZSBpZiAodm0uaXNDaGFydExheW91dCgpKSB7XG4gICAgICA8YXhwLXJlcG9ydC1jaGFydC12aWV3PiA8L2F4cC1yZXBvcnQtY2hhcnQtdmlldz5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDwhLS0gTW9iaWxlOiBTaG93IGZpbHRlcnMgIC0tPlxuICAgIDxheHAtbGF5b3V0LXJlbmRlcmVyICNmaWx0ZXJzRm9ybSBbbGF5b3V0XT1cInZtLmZvcm1EZWZpbml0aW9uKClcIiBbY29udGV4dF09XCJ2bS5maWx0ZXJDb250ZXh0KClcIiBbbG9va109XCInZmllbGRzZXQnXCI+XG4gICAgPC9heHAtbGF5b3V0LXJlbmRlcmVyPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIE1vYmlsZTogRXhlY3V0ZSBCdXR0b24gLS0+XG5AaWYgKGRldmljZVNlcnZpY2UuaXNTbWFsbCgpICYmICF2bS5oYXNCZWVuRXhlY3V0ZWQoKSkge1xuICA8YXhwLXBhZ2UtZm9vdGVyIGNsYXNzPVwiYXgtcC0yIGF4LWJvcmRlci10XCI+XG4gICAgPGF4LWJ1dHRvblxuICAgICAgY2xhc3M9XCJheC13LWZ1bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cIiF2bS5jYW5FeGVjdXRlKClcIlxuICAgICAgW3RleHRdPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmFjdGlvbnMuZXhlY3V0ZS50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCJcbiAgICAgIChvbkNsaWNrKT1cImV4ZWN1dGUoeyBuYW1lOiAnZXhlY3V0ZS1yZXBvcnQnIH0pXCJcbiAgICA+XG4gICAgICA8YXgtcHJlZml4PlxuICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtcGxheVwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtcHJlZml4PlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2F4cC1wYWdlLWZvb3Rlcj5cbn1cbiJdfQ==","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreModule, AXPPageStatus } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXBarChartReportMapper } from '../../../../reports/report-mapper';\nimport { AXPReportViewerViewModel } from '../../report-viewer.viewmodel';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/translation\";\nimport * as i2 from \"@angular/common\";\nexport class AXPReportBarChartViewComponent {\n constructor() {\n //#region ---- Dependencies ----\n this.vm = inject(AXPReportViewerViewModel);\n this.AXPPageStatus = AXPPageStatus;\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Current chart layout configuration\n */\n this.chartLayout = computed(() => {\n const layout = this.vm.currentLayout();\n return layout?.layout.type === 'chart' ? layout.layout : null;\n }, ...(ngDevMode ? [{ debugName: \"chartLayout\" }] : []));\n /**\n * Chart configuration options\n */\n this.chartOptions = computed(() => {\n const chartLayout = this.chartLayout();\n return chartLayout?.options || null;\n }, ...(ngDevMode ? [{ debugName: \"chartOptions\" }] : []));\n /**\n * Chart type for rendering\n */\n this.chartType = computed(() => {\n const options = this.chartOptions();\n return options?.chartType || 'bar';\n }, ...(ngDevMode ? [{ debugName: \"chartType\" }] : []));\n /**\n * Data mapping configuration\n */\n this.dataMapping = computed(() => {\n const options = this.chartOptions();\n return options?.dataMapping || null;\n }, ...(ngDevMode ? [{ debugName: \"dataMapping\" }] : []));\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n this.#fetchData = effect(() => {\n if (this.vm.allowFetchData() && this.vm.shouldExecuteReport() && this.chartOptions()) {\n // TODO: Implement chart data fetching\n console.log('Chart data fetch triggered', {\n chartType: this.chartType(),\n dataMapping: this.dataMapping(),\n });\n this.vm.fetchData().then((data) => {\n const barChartData = AXBarChartReportMapper((data?.data).data ?? {});\n this.barChartData.set(barChartData);\n console.log('barChartData', barChartData);\n });\n }\n }, ...(ngDevMode ? [{ debugName: \"#fetchData\" }] : []));\n this.barChartData = signal([], ...(ngDevMode ? [{ debugName: \"barChartData\" }] : []));\n this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: \"barChartOptions\" }] : []));\n this.legendOptions = signal({\n mode: 'horizontal',\n }, ...(ngDevMode ? [{ debugName: \"legendOptions\" }] : []));\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to handle data fetching when chart configuration changes\n */\n #fetchData;\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle chart click events\n */\n handleChartClick(event) {\n // TODO: Implement chart click handling\n console.log('Chart clicked:', event);\n }\n /**\n * Handle chart data point selection\n */\n handleDataPointSelect(event) {\n // TODO: Implement data point selection\n console.log('Data point selected:', event);\n }\n //#endregion\n //#region ---- Helper Methods ----\n /**\n * Check if chart is ready to render\n */\n isChartReady() {\n return !!(this.chartOptions() && this.dataMapping());\n }\n /**\n * Get chart configuration for rendering\n */\n getChartConfig() {\n // TODO: Transform AXPReportChartOptions to chart library format\n return {\n type: this.chartType(),\n options: this.chartOptions(),\n dataMapping: this.dataMapping(),\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPReportBarChartViewComponent, isStandalone: true, selector: \"axp-report-bar-chart-view\", ngImport: i0, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i1.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }, { kind: \"component\", type: AXChartLegendComponent, selector: \"ax-chart-legend\", inputs: [\"chart\", \"options\"], outputs: [\"itemClick\", \"itemMouseEnter\", \"itemMouseLeave\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [\n CommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXPWidgetCoreModule,\n AXBarChartComponent,\n AXChartLegendComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"axp-report-chart-view\\\" *translate=\\\"let t\\\">\\n @if (vm.status() === AXPPageStatus.Processing) {\\n <!-- Loading State -->\\n <div class=\\\"__loading\\\">\\n <div class=\\\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\\\">\\n </div>\\n <div class=\\\"__loading-text\\\">\\n {{ t('@report-management:report-viewer.components.chart.messages.loading') | async }}\\n </div>\\n </div>\\n } @else if (vm.status() === AXPPageStatus.Error) {\\n <!-- Error State -->\\n <axp-state-message mode=\\\"error\\\" icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"'@report-management:report-viewer.messages.error.fetch-title'\\\"\\n [description]=\\\"vm.error() || '@report-management:report-viewer.messages.error.fetch-description'\\\">\\n </axp-state-message>\\n } @else if (isChartReady()) {\\n <!-- Chart Content -->\\n <div class=\\\"__chart-container\\\">\\n @if (chartLayout()?.header) {\\n <div class=\\\"__chart-header\\\">\\n <h3 class=\\\"__chart-title\\\">{{ chartLayout()?.header?.title }}</h3>\\n @if (chartLayout()?.header?.showDate) {\\n <div class=\\\"__chart-date\\\">{{ '@general:common.date.today' | translate | async }}</div>\\n }\\n </div>\\n }\\n\\n <div class=\\\"__chart-body\\\">\\n <!-- Chart component will be rendered here -->\\n <div class=\\\"__chart-placeholder\\\">\\n <div class=\\\"__placeholder-content\\\">\\n <div class=\\\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\\\"\\n [class]=\\\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\\\">\\n <!-- Chart Area -->\\n <div class=\\\"ax-flex-0 ax-size-96\\\">\\n <ax-bar-chart #chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\"></ax-bar-chart>\\n </div>\\n <!-- Legend Area -->\\n @if (barChartData().length > 0) {\\n <div>\\n <ax-chart-legend [options]=\\\"legendOptions()\\\" [chart]=\\\"chart\\\"></ax-chart-legend>\\n </div>\\n }\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n @if (chartLayout()?.footer) {\\n <div class=\\\"__chart-footer\\\">\\n @if (chartLayout()?.footer?.customHtml) {\\n <div [innerHTML]=\\\"chartLayout()?.footer?.customHtml\\\"></div>\\n }\\n </div>\\n }\\n </div>\\n } @else {\\n <!-- No Configuration State -->\\n <axp-state-message icon=\\\"fa-light fa-chart-column\\\"\\n [title]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.title'\\\"\\n [description]=\\\"'@report-management:report-viewer.components.chart.empty-states.no-config.description'\\\">\\n </axp-state-message>\\n }\\n</div>\", styles: [\".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9yZXBvcnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3JlcG9ydC12aWV3ZXIvdmlld3MvcmVwb3J0LWJhci1jaGFydC12aWV3L3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9yZXBvcnQtdmlld2VyL3ZpZXdzL3JlcG9ydC1iYXItY2hhcnQtdmlldy9yZXBvcnQtYmFyLWNoYXJ0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFxQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBd0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBbUJ6RSxNQUFNLE9BQU8sOEJBQThCO0lBakIzQztRQWtCRSxvQ0FBb0M7UUFFakIsT0FBRSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBRWpELFlBQVk7UUFFWiwyQ0FBMkM7UUFFM0M7O1dBRUc7UUFDZ0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsQ0FBQyx1REFBQyxDQUFDO1FBRUg7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxPQUFPLFdBQVcsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3RDLENBQUMsd0RBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2dCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3JDLENBQUMscURBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2dCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEMsT0FBTyxPQUFPLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztRQUN0QyxDQUFDLHVEQUFDLENBQUM7UUFFSCxZQUFZO1FBRVosK0JBQStCO1FBRS9COztXQUVHO1FBQ0gsZUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDckYsc0NBQXNDO2dCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFO29CQUN4QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDM0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNoQyxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBRSxDQUFDLElBQUksRUFBRSxJQUFZLENBQUEsQ0FBQyxJQUFZLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3JGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxzREFBQyxDQUFDO1FBNkNPLGlCQUFZLEdBQUcsTUFBTSxDQUFrQixFQUFFLHdEQUFDLENBQUM7UUFFM0Msb0JBQWUsR0FBRyxNQUFNLENBQW1CLEVBQUUsMkRBQUMsQ0FBQztRQUUvQyxrQkFBYSxHQUFHLE1BQU0sQ0FBdUI7WUFDckQsSUFBSSxFQUFFLFlBQVk7U0FDbkIseURBQUMsQ0FBQztLQUdKO0lBMUVDLFlBQVk7SUFFWiwrQkFBK0I7SUFFL0I7O09BRUc7SUFDSCxVQUFVLENBYVA7SUFFSCxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ08sZ0JBQWdCLENBQUMsS0FBVTtRQUNuQyx1Q0FBdUM7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxxQkFBcUIsQ0FBQyxLQUFVO1FBQ3hDLHVDQUF1QztRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUFZO0lBRVosc0NBQXNDO0lBRXRDOztPQUVHO0lBQ08sWUFBWTtRQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxjQUFjO1FBQ3RCLGdFQUFnRTtRQUNoRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDNUIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDaEMsQ0FBQztJQUNKLENBQUM7K0dBekdVLDhCQUE4QjttR0FBOUIsOEJBQThCLHFGQzdCM0MsNm5GQWdFTSxxMkVEaERGLFlBQVksOEJBQ1osaUJBQWlCLDhCQUNqQixtQkFBbUIsK0dBQ25CLHdCQUF3QiwwSEFDeEIsbUJBQW1CLCtCQUNuQixtQkFBbUIsNkdBQ25CLHNCQUFzQjs7NEZBT2IsOEJBQThCO2tCQWpCMUMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHNCQUFzQjtxQkFDdkIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhckNoYXJ0Q29tcG9uZW50LCBBWEJhckNoYXJ0T3B0aW9uLCBBWEJhckNoYXJ0VmFsdWUgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhDaGFydExlZ2VuZENvbXBvbmVudCwgQVhDaGFydExlZ2VuZE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9jaGFydC1sZWdlbmQnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhQUGFnZVN0YXR1cyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFyQ2hhcnRSZXBvcnRNYXBwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC1tYXBwZXInO1xuaW1wb3J0IHsgQVhQUmVwb3J0Q2hhcnRMYXlvdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9yZXBvcnRzL3JlcG9ydC50eXBlcyc7XG5pbXBvcnQgeyBBWFBSZXBvcnRWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9yZXBvcnQtdmlld2VyLnZpZXdtb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1yZXBvcnQtYmFyLWNoYXJ0LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gICAgQVhCYXJDaGFydENvbXBvbmVudCxcbiAgICBBWENoYXJ0TGVnZW5kQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWJhci1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydC1iYXItY2hhcnQtdmlldy5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSZXBvcnRCYXJDaGFydFZpZXdDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhQUmVwb3J0Vmlld2VyVmlld01vZGVsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEFYUFBhZ2VTdGF0dXMgPSBBWFBQYWdlU3RhdHVzO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICAvKipcbiAgICogQ3VycmVudCBjaGFydCBsYXlvdXQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0TGF5b3V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxheW91dCA9IHRoaXMudm0uY3VycmVudExheW91dCgpO1xuICAgIHJldHVybiBsYXlvdXQ/LmxheW91dC50eXBlID09PSAnY2hhcnQnID8gKGxheW91dC5sYXlvdXQgYXMgQVhQUmVwb3J0Q2hhcnRMYXlvdXQpIDogbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0T3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjaGFydExheW91dCA9IHRoaXMuY2hhcnRMYXlvdXQoKTtcbiAgICByZXR1cm4gY2hhcnRMYXlvdXQ/Lm9wdGlvbnMgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENoYXJ0IHR5cGUgZm9yIHJlbmRlcmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0VHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uY2hhcnRUeXBlIHx8ICdiYXInO1xuICB9KTtcblxuICAvKipcbiAgICogRGF0YSBtYXBwaW5nIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhTWFwcGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jaGFydE9wdGlvbnMoKTtcbiAgICByZXR1cm4gb3B0aW9ucz8uZGF0YU1hcHBpbmcgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gaGFuZGxlIGRhdGEgZmV0Y2hpbmcgd2hlbiBjaGFydCBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgICovXG4gICNmZXRjaERhdGEgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLnZtLmFsbG93RmV0Y2hEYXRhKCkgJiYgdGhpcy52bS5zaG91bGRFeGVjdXRlUmVwb3J0KCkgJiYgdGhpcy5jaGFydE9wdGlvbnMoKSkge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGNoYXJ0IGRhdGEgZmV0Y2hpbmdcbiAgICAgIGNvbnNvbGUubG9nKCdDaGFydCBkYXRhIGZldGNoIHRyaWdnZXJlZCcsIHtcbiAgICAgICAgY2hhcnRUeXBlOiB0aGlzLmNoYXJ0VHlwZSgpLFxuICAgICAgICBkYXRhTWFwcGluZzogdGhpcy5kYXRhTWFwcGluZygpLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZtLmZldGNoRGF0YSgpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgYmFyQ2hhcnREYXRhID0gQVhCYXJDaGFydFJlcG9ydE1hcHBlcigoKGRhdGE/LmRhdGEgYXMgYW55KS5kYXRhIGFzIGFueSkgPz8ge30pO1xuICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YS5zZXQoYmFyQ2hhcnREYXRhKTtcbiAgICAgICAgY29uc29sZS5sb2coJ2JhckNoYXJ0RGF0YScsIGJhckNoYXJ0RGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjaGFydCBjbGljayBldmVudHNcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgY2hhcnQgY2xpY2sgaGFuZGxpbmdcbiAgICBjb25zb2xlLmxvZygnQ2hhcnQgY2xpY2tlZDonLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNoYXJ0IGRhdGEgcG9pbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRGF0YVBvaW50U2VsZWN0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZGF0YSBwb2ludCBzZWxlY3Rpb25cbiAgICBjb25zb2xlLmxvZygnRGF0YSBwb2ludCBzZWxlY3RlZDonLCBldmVudCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjaGFydCBpcyByZWFkeSB0byByZW5kZXJcbiAgICovXG4gIHByb3RlY3RlZCBpc0NoYXJ0UmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuY2hhcnRPcHRpb25zKCkgJiYgdGhpcy5kYXRhTWFwcGluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2hhcnQgY29uZmlndXJhdGlvbiBmb3IgcmVuZGVyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q2hhcnRDb25maWcoKTogYW55IHtcbiAgICAvLyBUT0RPOiBUcmFuc2Zvcm0gQVhQUmVwb3J0Q2hhcnRPcHRpb25zIHRvIGNoYXJ0IGxpYnJhcnkgZm9ybWF0XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuY2hhcnRUeXBlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLmNoYXJ0T3B0aW9ucygpLFxuICAgICAgZGF0YU1hcHBpbmc6IHRoaXMuZGF0YU1hcHBpbmcoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGJhckNoYXJ0RGF0YSA9IHNpZ25hbDxBWEJhckNoYXJ0VmFsdWU+KFtdKTtcblxuICBwcm90ZWN0ZWQgYmFyQ2hhcnRPcHRpb25zID0gc2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24+KHt9KTtcblxuICBwcm90ZWN0ZWQgbGVnZW5kT3B0aW9ucyA9IHNpZ25hbDxBWENoYXJ0TGVnZW5kT3B0aW9ucz4oe1xuICAgIG1vZGU6ICdob3Jpem9udGFsJyxcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXhwLXJlcG9ydC1jaGFydC12aWV3XCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIEBpZiAodm0uc3RhdHVzKCkgPT09IEFYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZykge1xuICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtc3Bpbm5lciBheC1zcGluIGF4LWJvcmRlci00IGF4LWJvcmRlci1ncmF5LTIwMCBheC1ib3JkZXItdC1wcmltYXJ5IGF4LXJvdW5kZWQtZnVsbCBheC13LTEyIGF4LWgtMTJcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiX19sb2FkaW5nLXRleHRcIj5cbiAgICAgIHt7IHQoJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQubWVzc2FnZXMubG9hZGluZycpIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHZtLnN0YXR1cygpID09PSBBWFBQYWdlU3RhdHVzLkVycm9yKSB7XG4gIDwhLS0gRXJyb3IgU3RhdGUgLS0+XG4gIDxheHAtc3RhdGUtbWVzc2FnZSBtb2RlPVwiZXJyb3JcIiBpY29uPVwiZmEtbGlnaHQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgIFt0aXRsZV09XCInQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtdGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwidm0uZXJyb3IoKSB8fCAnQHJlcG9ydC1tYW5hZ2VtZW50OnJlcG9ydC12aWV3ZXIubWVzc2FnZXMuZXJyb3IuZmV0Y2gtZGVzY3JpcHRpb24nXCI+XG4gIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gIH0gQGVsc2UgaWYgKGlzQ2hhcnRSZWFkeSgpKSB7XG4gIDwhLS0gQ2hhcnQgQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtY29udGFpbmVyXCI+XG4gICAgQGlmIChjaGFydExheW91dCgpPy5oZWFkZXIpIHtcbiAgICA8ZGl2IGNsYXNzPVwiX19jaGFydC1oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cIl9fY2hhcnQtdGl0bGVcIj57eyBjaGFydExheW91dCgpPy5oZWFkZXI/LnRpdGxlIH19PC9oMz5cbiAgICAgIEBpZiAoY2hhcnRMYXlvdXQoKT8uaGVhZGVyPy5zaG93RGF0ZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIl9fY2hhcnQtZGF0ZVwiPnt7ICdAZ2VuZXJhbDpjb21tb24uZGF0ZS50b2RheScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWJvZHlcIj5cbiAgICAgIDwhLS0gQ2hhcnQgY29tcG9uZW50IHdpbGwgYmUgcmVuZGVyZWQgaGVyZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3BsYWNlaG9sZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXdyYXAgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWdhcC0xMFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwibGVnZW5kT3B0aW9ucygpLm1vZGUgPT09ICdob3Jpem9udGFsJyA/ICdheC1mbGV4LWNvbCcgOiAnYXgtZmxleC1yb3cnXCI+XG4gICAgICAgICAgICA8IS0tIENoYXJ0IEFyZWEgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0wIGF4LXNpemUtOTZcIj5cbiAgICAgICAgICAgICAgPGF4LWJhci1jaGFydCAjY2hhcnQgW2RhdGFdPVwiYmFyQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJiYXJDaGFydE9wdGlvbnMoKVwiPjwvYXgtYmFyLWNoYXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIExlZ2VuZCBBcmVhIC0tPlxuICAgICAgICAgICAgQGlmIChiYXJDaGFydERhdGEoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8YXgtY2hhcnQtbGVnZW5kIFtvcHRpb25zXT1cImxlZ2VuZE9wdGlvbnMoKVwiIFtjaGFydF09XCJjaGFydFwiPjwvYXgtY2hhcnQtbGVnZW5kPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGNoYXJ0TGF5b3V0KCk/LmZvb3Rlcikge1xuICAgIDxkaXYgY2xhc3M9XCJfX2NoYXJ0LWZvb3RlclwiPlxuICAgICAgQGlmIChjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWwpIHtcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJjaGFydExheW91dCgpPy5mb290ZXI/LmN1c3RvbUh0bWxcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgPCEtLSBObyBDb25maWd1cmF0aW9uIFN0YXRlIC0tPlxuICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWNoYXJ0LWNvbHVtblwiXG4gICAgW3RpdGxlXT1cIidAcmVwb3J0LW1hbmFnZW1lbnQ6cmVwb3J0LXZpZXdlci5jb21wb25lbnRzLmNoYXJ0LmVtcHR5LXN0YXRlcy5uby1jb25maWcudGl0bGUnXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ0ByZXBvcnQtbWFuYWdlbWVudDpyZXBvcnQtdmlld2VyLmNvbXBvbmVudHMuY2hhcnQuZW1wdHktc3RhdGVzLm5vLWNvbmZpZy5kZXNjcmlwdGlvbidcIj5cbiAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgfVxuPC9kaXY+Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtcmVwb3J0LW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcmVwb3J0LW1hbmFnZW1lbnQvc3JjL2Fjb3JleC1tb2R1bGVzLXJlcG9ydC1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2","i3","i4"],"mappings":"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"}
|