@acorex/modules 20.6.0-next.13 → 20.6.0-next.14

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.
Files changed (61) hide show
  1. package/dashboard-management/index.d.ts +2 -15
  2. package/fesm2022/acorex-modules-conversation.mjs +1 -1
  3. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  4. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs} +22 -17
  5. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DxvJ5FUP.mjs.map +1 -0
  6. package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs} +2 -2
  7. package/fesm2022/{acorex-modules-dashboard-management-permission-definition.provider-CDof9JW9.mjs.map → acorex-modules-dashboard-management-permission-definition.provider-tvIEsms4.mjs.map} +1 -1
  8. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  9. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BQg63TCL.mjs → acorex-modules-document-management-acorex-modules-document-management-B3AbD1tJ.mjs} +16 -16
  10. 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
  11. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DsVm2GMs.mjs.map → acorex-modules-document-management-attachment-widget.component-CzDOiRIY.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-document-management-details-view.component-CPS-Hi0y.mjs → acorex-modules-document-management-details-view.component-DKTHo8ne.mjs} +2 -2
  14. 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
  15. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BdG1o9DR.mjs → acorex-modules-document-management-document-signature-popup.component-DGzzdmDb.mjs} +2 -2
  16. 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
  17. package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-document-management-drive-choose.component-9GYqFNTa.mjs.map → acorex-modules-document-management-drive-choose.component-D5aiNVzj.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-document-management-drive.component-GEe-dEOj.mjs → acorex-modules-document-management-drive.component-CeBlGsLR.mjs} +6 -5
  20. package/fesm2022/acorex-modules-document-management-drive.component-CeBlGsLR.mjs.map +1 -0
  21. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-nbzNqi8U.mjs → acorex-modules-document-management-large-icons-view.component-CAHXm46u.mjs} +2 -2
  22. 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
  23. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-UaLWEWFL.mjs → acorex-modules-document-management-large-tiles-view.component-or2Wyl76.mjs} +2 -2
  24. 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
  25. package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-document-management-list-view.component-DrrI8IQy.mjs.map → acorex-modules-document-management-list-view.component-gmOyQGvk.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CceGO8sF.mjs.map → acorex-modules-document-management-permission-definition.provider-CcZ1NTWk.mjs.map} +1 -1
  29. 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
  30. 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
  31. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BYIgOhLJ.mjs → acorex-modules-document-management-small-tiles-view.component-fGLTqZyQ.mjs} +2 -2
  32. 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
  33. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  34. package/fesm2022/{acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs → acorex-modules-notification-management-notification-page.component-XCr4A447.mjs} +35 -23
  35. package/fesm2022/acorex-modules-notification-management-notification-page.component-XCr4A447.mjs.map +1 -0
  36. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  37. 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
  38. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-BPHpCx1z.mjs.map +1 -0
  39. package/fesm2022/acorex-modules-report-management.mjs +16 -15
  40. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  41. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs → acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs} +18 -19
  42. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DiK4w5LW.mjs.map +1 -0
  43. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DNgLTnFb.mjs.map → acorex-modules-settings-management-permission-definition.provider-Ddk4v4RY.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs → acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs} +20 -17
  46. package/fesm2022/acorex-modules-settings-management-setting-page.component-XfmsDcZt.mjs.map +1 -0
  47. package/fesm2022/{acorex-modules-settings-management-setting-view.component-CGolAf-a.mjs → acorex-modules-settings-management-setting-view.component-BZzDT3gG.mjs} +2 -2
  48. 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
  49. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  50. package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs} +5 -4
  51. package/fesm2022/{acorex-modules-task-management-task-board.page-9rGlt3Fd.mjs.map → acorex-modules-task-management-task-board.page-Bceu03Yj.mjs.map} +1 -1
  52. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  53. package/package.json +6 -6
  54. package/report-management/index.d.ts +2 -15
  55. package/settings-management/index.d.ts +2 -2
  56. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2sEG8P9.mjs.map +0 -1
  57. package/fesm2022/acorex-modules-document-management-drive.component-GEe-dEOj.mjs.map +0 -1
  58. package/fesm2022/acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs.map +0 -1
  59. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-TfQFYkDv.mjs.map +0 -1
  60. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DTjfgbLU.mjs.map +0 -1
  61. package/fesm2022/acorex-modules-settings-management-setting-page.component-CXXHizT0.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-document-management-drive.component-GEe-dEOj.mjs","sources":["../tmp-esm2022/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.js","../tmp-esm2022/document-management/lib/features/drive/drive.component.js"],"sourcesContent":["import { Component, inject, ViewEncapsulation } from \"@angular/core\";\nimport { AXPDocumentExplorerViewModel } from \"../../document-explorer.viewmodel\";\nimport { AXDecoratorModule } from \"@acorex/components/decorators\";\nimport { AXFormatModule } from \"@acorex/core/format\";\nimport { CommonModule } from \"@angular/common\";\nimport { AXButtonModule } from \"@acorex/components/button\";\nimport { AXTranslationModule } from \"@acorex/core/translation\";\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@acorex/core/format\";\nexport class AXMDocumentExplorerDetailPanelComponent {\n constructor() {\n this.vm = inject(AXPDocumentExplorerViewModel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: \"axm-document-explorer-detail-panel\", ngImport: i0, template: \"<!-- Multiple Selected -->\\n@if (vm.hasMultipleSelectedItems()) {\\n <div class=\\\"__header\\\" *translate=\\\"let t\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg fa-solid\\\"></i>\\n <span> {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <div class=\\\"__content\\\"></div>\\n}\\n<!-- Single Selected -->\\n@else {\\n <!-- Info -->\\n @let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\\\"></i>\\n <span>{{ nodeInfo.name }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <div class=\\\"__content\\\">\\n @for (section of nodeInfo.sections; track section.title) {\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ section.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @for (detail of section.details; track detail.title) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ detail.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (detail.format) {\\n <span>{{ detail.content | format: detail.format | async }}</span>\\n } @else {\\n <span>{{ detail.content ?? '---' }}</span>\\n }\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { 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: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i3.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i5.AXFormatPipe, name: \"format\" }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-document-explorer-detail-panel', standalone: true, encapsulation: ViewEncapsulation.None, imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXButtonModule,\n AXTranslationModule\n ], template: \"<!-- Multiple Selected -->\\n@if (vm.hasMultipleSelectedItems()) {\\n <div class=\\\"__header\\\" *translate=\\\"let t\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg fa-solid\\\"></i>\\n <span> {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <div class=\\\"__content\\\"></div>\\n}\\n<!-- Single Selected -->\\n@else {\\n <!-- Info -->\\n @let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\\n <div class=\\\"__header\\\">\\n <div class=\\\"__title\\\">\\n <i class=\\\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\\\"></i>\\n <span>{{ nodeInfo.name }}</span>\\n </div>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm ax-rounded-full\\\" (onClick)=\\\"vm.closeDetailPanel()\\\">\\n <ax-icon icon=\\\"fa-solid fa-xmark\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <div class=\\\"__content\\\">\\n @for (section of nodeInfo.sections; track section.title) {\\n <div class=\\\"__section\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ section.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @for (detail of section.details; track detail.title) {\\n <div class=\\\"__row\\\">\\n <div class=\\\"__title\\\">\\n <span>{{ detail.title }}</span>\\n </div>\\n <div class=\\\"__content\\\">\\n @if (detail.format) {\\n <span>{{ detail.content | format: detail.format | async }}</span>\\n } @else {\\n <span>{{ detail.content ?? '---' }}</span>\\n }\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n </div>\\n}\\n\", styles: [\"axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);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: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kb2N1bWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvZG9jdW1lbnQtZXhwbG9yZXIvdmlld3MvZGV0YWlsLXBhbmVsL2RldGFpbC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZG9jdW1lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2RvY3VtZW50LWV4cGxvcmVyL3ZpZXdzL2RldGFpbC1wYW5lbC9kZXRhaWwtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFnQi9ELE1BQU0sT0FBTyx1Q0FBdUM7SUFkcEQ7UUFlYyxPQUFFLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDdkQ7K0dBRlksdUNBQXVDO21HQUF2Qyx1Q0FBdUMsOEZDdEJwRCw4MERBb0RBLDJ0RURyQ1EsWUFBWSw4QkFDWixpQkFBaUIsK0hBQ2pCLGNBQWMsOEJBQ2QsY0FBYyw2WEFDZCxtQkFBbUI7OzRGQUdkLHVDQUF1QztrQkFkbkQsU0FBUzsrQkFDSSxvQ0FBb0MsY0FHbEMsSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNMLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsbUJBQW1CO3FCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFBEb2N1bWVudEV4cGxvcmVyVmlld01vZGVsIH0gZnJvbSBcIi4uLy4uL2RvY3VtZW50LWV4cGxvcmVyLnZpZXdtb2RlbFwiO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSBcIkBhY29yZXgvY29yZS9mb3JtYXRcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhY29yZXgvY29tcG9uZW50cy9idXR0b25cIjtcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tIFwiQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhtLWRvY3VtZW50LWV4cGxvcmVyLWRldGFpbC1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGV0YWlsLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhGb3JtYXRNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWFRyYW5zbGF0aW9uTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBWE1Eb2N1bWVudEV4cGxvcmVyRGV0YWlsUGFuZWxDb21wb25lbnQge1xuICAgIHByb3RlY3RlZCB2bSA9IGluamVjdChBWFBEb2N1bWVudEV4cGxvcmVyVmlld01vZGVsKTtcbn1cbiIsIjwhLS0gIE11bHRpcGxlIFNlbGVjdGVkICAtLT5cbkBpZiAodm0uaGFzTXVsdGlwbGVTZWxlY3RlZEl0ZW1zKCkpIHtcbiAgPGRpdiBjbGFzcz1cIl9faGVhZGVyXCIgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEtZncgZmEtbGcgZmEtc29saWRcIj48L2k+XG4gICAgICA8c3Bhbj4ge3sgdm0uc2VsZWN0ZWRDb3VudCgpIH19IHt7ICdAZ2VuZXJhbDp0ZXJtcy5pdGVtcy1zZWxlY3RlZCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8YXgtYnV0dG9uIFtsb29rXT1cIidibGFuaydcIiBjbGFzcz1cImF4LXNtIGF4LXJvdW5kZWQtZnVsbFwiIChvbkNsaWNrKT1cInZtLmNsb3NlRGV0YWlsUGFuZWwoKVwiPlxuICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLXhtYXJrXCI+PC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPjwvZGl2PlxufVxuPCEtLSBTaW5nbGUgU2VsZWN0ZWQgLS0+XG5AZWxzZSB7XG4gIDwhLS0gSW5mbyAtLT5cbiAgQGxldCBub2RlSW5mbyA9IHZtLmdldE5vZGVJbmZvKCh2bS5zZWxlY3RlZE5vZGUoKSA/PyB2bS5jdXJyZW50Rm9sZGVyKCkpISk7XG4gIDxkaXYgY2xhc3M9XCJfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJfX3RpdGxlXCI+XG4gICAgICA8aSBjbGFzcz1cImZhLWZ3IGZhLWxnIHt7IG5vZGVJbmZvLmljb24gfX0gZmEtc29saWRcIj48L2k+XG4gICAgICA8c3Bhbj57eyBub2RlSW5mby5uYW1lIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxheC1idXR0b24gW2xvb2tdPVwiJ2JsYW5rJ1wiIGNsYXNzPVwiYXgtc20gYXgtcm91bmRlZC1mdWxsXCIgKG9uQ2xpY2spPVwidm0uY2xvc2VEZXRhaWxQYW5lbCgpXCI+XG4gICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEteG1hcmtcIj48L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgQGZvciAoc2VjdGlvbiBvZiBub2RlSW5mby5zZWN0aW9uczsgdHJhY2sgc2VjdGlvbi50aXRsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX190aXRsZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IHNlY3Rpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgICAgQGZvciAoZGV0YWlsIG9mIHNlY3Rpb24uZGV0YWlsczsgdHJhY2sgZGV0YWlsLnRpdGxlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWwudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgQGlmIChkZXRhaWwuZm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWwuY29udGVudCB8IGZvcm1hdDogZGV0YWlsLmZvcm1hdCB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlsLmNvbnRlbnQgPz8gJy0tLScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, signal, untracked, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\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 { AXMenuModule } from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPFileTypeProviderService } from '@acorex/platform/common';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { resolvePlatformScopeKey, resolvePlatformScopeName, } from '@acorex/platform/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { RootConfig } from '../../const';\nimport { AXMDocumentExplorerComponent, AXPDocumentExplorerViewModel } from '../document-explorer';\nimport { AXMDocumentExplorerDetailPanelComponent } from '../document-explorer/views/detail-panel/detail-panel.component';\nimport { AXMDocumentManagerService } from '../shared';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/dropdown\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@acorex/components/search-box\";\nimport * as i6 from \"@angular/common\";\nexport class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---------------- Services & Dependencies ----------------\n this.rootConfig = RootConfig;\n this.fileTypeService = inject(AXPFileTypeProviderService);\n this.driveService = inject(AXMDocumentManagerService);\n this.vm = inject(AXPDocumentExplorerViewModel);\n this.router = inject(Router);\n this.activatedRoute = inject(ActivatedRoute);\n //#endregion\n //#region ---------------- View Properties ----------------\n this.filterItems = signal([], ...(ngDevMode ? [{ debugName: \"filterItems\" }] : []));\n this.selectedFilter = signal('all', ...(ngDevMode ? [{ debugName: \"selectedFilter\" }] : []));\n this.searchQuery = '';\n this.sortItems = signal([\n { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },\n { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },\n { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },\n ], ...(ngDevMode ? [{ debugName: \"sortItems\" }] : []));\n this.viewsItems = signal([\n { key: 'large-icons', icon: 'fa-light fa-grid' },\n { key: 'small-icons', icon: 'fa-light fa-grid', break: true },\n { key: 'large-tiles', icon: 'fa-grid-2' },\n { key: 'small-tiles', icon: 'fa-grid-2', break: true },\n { key: 'details', icon: 'fa-bars', break: true },\n { key: 'list', icon: 'fa-list' },\n ], ...(ngDevMode ? [{ debugName: \"viewsItems\" }] : []));\n this.selectedViewMode = computed(() => this.viewsItems().find((item) => item.key === this.vm.viewMode()) || this.viewsItems()[0], ...(ngDevMode ? [{ debugName: \"selectedViewMode\" }] : []));\n this.selectionMode = signal('single', ...(ngDevMode ? [{ debugName: \"selectionMode\" }] : []));\n this.documentExplorer = viewChild(AXMDocumentExplorerComponent, ...(ngDevMode ? [{ debugName: \"documentExplorer\" }] : []));\n //#endregion\n //#region ---------------- Computed Properties ----------------\n this.selectedSort = computed(() => {\n const items = this.sortItems();\n return items.find((item) => item.key === this.vm.sortField()) || items[0];\n }, ...(ngDevMode ? [{ debugName: \"selectedSort\" }] : []));\n //#endregion\n //#region ---------------- Effects ----------------\n this.#navigateEffect = effect(() => {\n const navigatingFolderId = this.vm.navigatingFolderId();\n if (navigatingFolderId) {\n this.handleNavigateToFolder(navigatingFolderId);\n }\n }, ...(ngDevMode ? [{ debugName: \"#navigateEffect\" }] : []));\n this.#loadingEffect = effect(() => {\n const isLoading = this.vm.isLoading();\n untracked(() => {\n this.layoutService.setNavigationLoading(isLoading);\n });\n }, ...(ngDevMode ? [{ debugName: \"#loadingEffect\" }] : []));\n }\n //#endregion\n //#region ---------------- Effects ----------------\n #navigateEffect;\n #loadingEffect;\n //#endregion\n //#region ---------------- Lifecycle Hooks ----------------\n async ngOnInit() {\n super.ngOnInit();\n await this.loadFilterItems();\n const snapshot = this.activatedRoute.snapshot;\n const routerScope = resolvePlatformScopeKey(snapshot.parent?.paramMap.get('scope')?.trim()?.toLowerCase());\n await this.vm.initialize({ browseMode: 'file', scope: routerScope });\n this.activatedRoute.paramMap.subscribe(async () => {\n this.loadDrive();\n });\n }\n //#endregion\n //#region ---------------- Event Handlers ----------------\n async handleSearchChange(event) {\n if (event.value == null) {\n return;\n }\n if (event.value?.length > 0) {\n const result = await this.driveService.searchNodes(event.value, this.vm.scope(), {\n tenantId: this.sessionService.tenant?.id,\n userId: this.sessionService.user?.id,\n folderId: this.vm.currentNode()?.id,\n });\n this.vm.virtualFolder(result, {\n name: 'Search Result',\n parentId: this.vm.currentNode()?.id == 'virtual'\n ? (this.vm.currentNode()?.parentId ?? undefined)\n : this.vm.currentNode()?.id,\n });\n }\n else {\n this.vm.navigateToUp();\n }\n }\n handleCtrlKey(e) {\n this.selectionMode.set('multiple');\n }\n handleCtrlKeyUp(e) {\n this.selectionMode.set('single');\n }\n handleNavigateToFolder(folderId) {\n this.router.navigate([\n `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${folderId}`,\n ]);\n setTimeout(() => {\n this.searchQuery = null;\n }, 200);\n }\n //#endregion\n //#region ---------------- Data Loading Methods ----------------\n async loadDrive() {\n const folderId = this.activatedRoute.snapshot.paramMap.get('id');\n if (folderId) {\n await this.vm.loadFolderContents(folderId);\n }\n else {\n // TODO: get root from tenant or user by scope\n const root = await this.driveService.getRoot(this.vm.scope(), {\n tenantId: this.sessionService.tenant?.id,\n userId: this.sessionService.user?.id,\n });\n if (root.result) {\n await this.router.navigate([\n `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${root.result.id}`,\n ], {\n replaceUrl: true,\n });\n }\n }\n //\n this.recompute();\n }\n async loadFilterItems() {\n const types = await this.fileTypeService.items();\n const items = [\n { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },\n ...types.map((type) => ({\n key: type.name,\n textKey: `file-types.${type.name}`,\n icon: type.icon || 'fa-light fa-file',\n })),\n ];\n this.filterItems.set(items);\n }\n //#endregion\n //#region ---------------- Filter Methods ----------------\n setFilter(key) {\n this.selectedFilter.set(key);\n }\n getFilterIcon() {\n if (this.selectedFilter() === 'all') {\n return 'fa-light fa-folder-closed';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.icon || 'fa-light fa-file';\n }\n getFilterText() {\n if (this.selectedFilter() === 'all') {\n return 'file-types.all';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.textKey || 'file-types.all';\n }\n //#endregion\n //#region ---------------- Page Configuration Overrides ----------------\n async getPrimaryMenuItems() {\n if (this.vm.hasMultipleSelectedItems()) {\n return [\n {\n name: 'deleteItems',\n title: '@general:actions.delete-items.title',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n },\n ];\n }\n const addItemItems = await this.vm.getFolderAddMenuItems();\n addItemItems[addItemItems.length - 1].break = false;\n return [\n {\n title: '@document-management:actions.add-item',\n icon: 'fa-light fa-plus',\n color: 'primary',\n items: addItemItems,\n },\n ];\n }\n async getSecondaryMenuItems() {\n if (this.vm.hasMultipleSelectedItems()) {\n return [\n {\n name: 'delete',\n title: '@general:actions.delete.title',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n },\n ];\n }\n return this.vm.getFolderActionMenuItems();\n }\n async getPageTitle() {\n if (this.vm.isRoot()) {\n return this.translateService.translateAsync(`@document-management:scopes.${resolvePlatformScopeName(this.vm.scope())}.title`);\n }\n return this.vm.currentFolder()?.name || '';\n }\n async getPageDescription() {\n const count = await this.vm.itemsCount();\n const size = await this.vm.availableSpace();\n const formattedSize = await this.formatService.format(size, 'filesize');\n return this.translateService.translateAsync(`@document-management:scopes.${resolvePlatformScopeName(this.vm.scope())}.description`, {\n params: {\n count,\n size: formattedSize,\n },\n });\n }\n getBackButton() {\n if (this.vm.isUpAvailable() && this.vm.currentPath().length > 1) {\n return {\n title: this.vm.currentPath()[this.vm.currentPath().length - 2].name,\n };\n }\n return null;\n }\n onBackButtonClick() {\n if (this.vm.isUpAvailable()) {\n this.vm.navigateToUp();\n }\n }\n async getPageBreadcrumbs() {\n const path = this.vm.currentPath();\n if (!path || path.length === 0) {\n return [\n {\n title: await this.translateService.translateAsync(`@document-management:scopes.${resolvePlatformScopeName(this.vm.scope())}.title`),\n },\n ];\n }\n const breadcrumbs = [];\n for (let i = 0; i < path.length; i++) {\n const node = path[i];\n const isLast = i === path.length - 1;\n breadcrumbs.push({\n name: node.id,\n title: node.name,\n command: isLast\n ? undefined\n : {\n name: 'navigate-to-folder',\n options: { folderId: node.id },\n },\n });\n }\n return breadcrumbs;\n }\n async execute(command) {\n const folderId = command.options?.['folderId'];\n switch (command.name) {\n case 'navigate-to-folder':\n if (folderId) {\n this.vm.navigateToFolder(folderId);\n }\n break;\n case 'new-folder':\n if (folderId) {\n await this.driveService.showCreateFolderDialog(folderId);\n this.vm.refresh();\n }\n break;\n case 'open-gallery':\n if (folderId) {\n await this.driveService.showFileViewerPopup(this.vm.currentFolder().children[0]);\n }\n break;\n default:\n if (command.name.startsWith('upload.')) {\n await this.driveService.uploadFileByType(folderId, command.options?.['documentType']?.id);\n this.vm.refresh();\n }\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMDocumentDriveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMDocumentDriveComponent, isStandalone: true, selector: \"axp-document-drive\", host: { listeners: { \"document:keydown.control\": \"handleCtrlKey($event)\", \"document:keyup.control\": \"handleCtrlKeyUp($event)\" } }, providers: [\n AXPDocumentExplorerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDocumentDriveComponent,\n },\n ], viewQueries: [{ propertyName: \"documentExplorer\", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<!-- Main Layout -->\\n<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <!-- Left Side Toolbar -->\\n <axp-layout-prefix>\\n @if (vm.hasMultipleSelectedItems()) {\\n <div class=\\\"ax-flex ax-gap-3 ax-items-center ax-h-10\\\">\\n <span class=\\\"ax-text-xl ax-font-bold\\\">\\n {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}\\n </span>\\n <span (click)=\\\"vm.deselectAll()\\\" class=\\\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\\\">{{\\n '@general:actions.unselect.title' | translate | async\\n }}</span>\\n </div>\\n }\\n <!---------->\\n @else {\\n <!-- Filter Dropdown -->\\n <ax-button [text]=\\\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"getFilterIcon()\\\"></ax-icon>\\n </ax-prefix>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list class=\\\"ax-p-2\\\">\\n @for (item of filterItems(); track item.key) {\\n <ax-button-item\\n (onClick)=\\\"setFilter(item.key)\\\"\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n <!-- Search Box -->\\n <ax-search-box\\n [(value)]=\\\"searchQuery\\\"\\n (onValueChanged)=\\\"handleSearchChange($event)\\\"\\n class=\\\"ax-w-72 ax-hidden md:ax-flex\\\"\\n [placeholder]=\\\"t('actions.search', { scope: rootConfig.config.i18n }) | async\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n }\\n </axp-layout-prefix>\\n\\n <!-- Right Side Toolbar -->\\n <axp-layout-suffix>\\n <!-- Sort Dropdown -->\\n <ax-button>\\n <ax-icon\\n [icon]=\\\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\\\"\\n ></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <!-- Sort By Options -->\\n @for (item of sortItems(); track item.key) {\\n <ax-button-item\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n (onClick)=\\\"vm.setSortField(item.key)\\\"\\n [selected]=\\\"vm.sortField() === item.key\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n <ax-divider></ax-divider>\\n <!-- Sort Direction Options -->\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'asc'\\\"\\n (onClick)=\\\"vm.setSortDirection('asc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-up-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'desc'\\\"\\n (onClick)=\\\"vm.setSortDirection('desc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-down-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n <!-- View Mode Toggle -->\\n <ax-button>\\n <ax-icon icon=\\\"fa-light {{ selectedViewMode().icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n @for (item of viewsItems(); track item.key) {\\n <!-- view mode items -->\\n <ax-button-item\\n [text]=\\\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.isViewMode(item.key)\\\"\\n (onClick)=\\\"vm.setViewMode(item.key)\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light {{ item.icon }}\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n @if (item.break) {\\n <ax-divider></ax-divider>\\n }\\n <!-- end of view mode items -->\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if (layoutService.isLarge()) {\\n <!-- Detail Panel Toggle -->\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon\\n icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"\\n ></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Content Section -->\\n <axp-page-content class=\\\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\\\">\\n <axm-document-explorer [selectionMode]=\\\"selectionMode()\\\"></axm-document-explorer>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-document-explorer-detail-panel class=\\\"ax-sticky ax-top-0 ax-z-50\\\"></axm-document-explorer-detail-panel>\\n }\\n </axp-page-content>\\n\\n <!-- Footer Section removed: breadcrumbs are now provided via page-level breadcrumbs -->\\n</axp-page-layout>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.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: i1.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i1.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXButtonGroupModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i2.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i3.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.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: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i5.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: AXFileModule }, { kind: \"ngmodule\", type: AXDateTimeModule }, { kind: \"component\", type: \n //\n AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { 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: \n //\n AXMDocumentExplorerComponent, selector: \"axm-document-explorer\", inputs: [\"browseMode\", \"viewMode\", \"selectionMode\", \"showContextMenu\"] }, { kind: \"component\", type: AXMDocumentExplorerDetailPanelComponent, selector: \"axm-document-explorer-detail-panel\" }, { kind: \"pipe\", type: i6.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.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: AXMDocumentDriveComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-document-drive', standalone: true, imports: [\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXSearchBoxModule,\n AXFormatModule,\n AXFileModule,\n AXDateTimeModule,\n //\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n //\n AXMDocumentExplorerComponent,\n AXMDocumentExplorerDetailPanelComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXPDocumentExplorerViewModel,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDocumentDriveComponent,\n },\n ], template: \"<!-- Main Layout -->\\n<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-toolbar>\\n <!-- Left Side Toolbar -->\\n <axp-layout-prefix>\\n @if (vm.hasMultipleSelectedItems()) {\\n <div class=\\\"ax-flex ax-gap-3 ax-items-center ax-h-10\\\">\\n <span class=\\\"ax-text-xl ax-font-bold\\\">\\n {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}\\n </span>\\n <span (click)=\\\"vm.deselectAll()\\\" class=\\\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\\\">{{\\n '@general:actions.unselect.title' | translate | async\\n }}</span>\\n </div>\\n }\\n <!---------->\\n @else {\\n <!-- Filter Dropdown -->\\n <ax-button [text]=\\\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\\\">\\n <ax-prefix>\\n <ax-icon [icon]=\\\"getFilterIcon()\\\"></ax-icon>\\n </ax-prefix>\\n\\n <ax-dropdown-panel>\\n <ax-button-item-list class=\\\"ax-p-2\\\">\\n @for (item of filterItems(); track item.key) {\\n <ax-button-item\\n (onClick)=\\\"setFilter(item.key)\\\"\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n <!-- Search Box -->\\n <ax-search-box\\n [(value)]=\\\"searchQuery\\\"\\n (onValueChanged)=\\\"handleSearchChange($event)\\\"\\n class=\\\"ax-w-72 ax-hidden md:ax-flex\\\"\\n [placeholder]=\\\"t('actions.search', { scope: rootConfig.config.i18n }) | async\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n }\\n </axp-layout-prefix>\\n\\n <!-- Right Side Toolbar -->\\n <axp-layout-suffix>\\n <!-- Sort Dropdown -->\\n <ax-button>\\n <ax-icon\\n [icon]=\\\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\\\"\\n ></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n <!-- Sort By Options -->\\n @for (item of sortItems(); track item.key) {\\n <ax-button-item\\n [text]=\\\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\\\"\\n (onClick)=\\\"vm.setSortField(item.key)\\\"\\n [selected]=\\\"vm.sortField() === item.key\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"item.icon\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n }\\n <ax-divider></ax-divider>\\n <!-- Sort Direction Options -->\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'asc'\\\"\\n (onClick)=\\\"vm.setSortDirection('asc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-up-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-button-item\\n [text]=\\\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.sortDirection() === 'desc'\\\"\\n (onClick)=\\\"vm.setSortDirection('desc')\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-arrow-down-wide-short\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n <!-- View Mode Toggle -->\\n <ax-button>\\n <ax-icon icon=\\\"fa-light {{ selectedViewMode().icon }}\\\"></ax-icon>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n @for (item of viewsItems(); track item.key) {\\n <!-- view mode items -->\\n <ax-button-item\\n [text]=\\\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\\\"\\n [selected]=\\\"vm.isViewMode(item.key)\\\"\\n (onClick)=\\\"vm.setViewMode(item.key)\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light {{ item.icon }}\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n @if (item.break) {\\n <ax-divider></ax-divider>\\n }\\n <!-- end of view mode items -->\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n\\n @if (layoutService.isLarge()) {\\n <!-- Detail Panel Toggle -->\\n <ax-button (onClick)=\\\"vm.toggleDetailPanel()\\\">\\n <ax-icon\\n icon=\\\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\\\"\\n ></ax-icon>\\n </ax-button>\\n }\\n </axp-layout-suffix>\\n </axp-page-toolbar>\\n\\n <!-- Content Section -->\\n <axp-page-content class=\\\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\\\">\\n <axm-document-explorer [selectionMode]=\\\"selectionMode()\\\"></axm-document-explorer>\\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\\n <axm-document-explorer-detail-panel class=\\\"ax-sticky ax-top-0 ax-z-50\\\"></axm-document-explorer-detail-panel>\\n }\\n </axp-page-content>\\n\\n <!-- Footer Section removed: breadcrumbs are now provided via page-level breadcrumbs -->\\n</axp-page-layout>\\n\" }]\n }], propDecorators: { documentExplorer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXMDocumentExplorerComponent), { isSignal: true }] }], handleCtrlKey: [{\n type: HostListener,\n args: ['document:keydown.control', ['$event']]\n }], handleCtrlKeyUp: [{\n type: HostListener,\n args: ['document:keyup.control', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2RvY3VtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9kcml2ZS9kcml2ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZG9jdW1lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2RyaXZlL2RyaXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUs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QzVCLEVBQUU7d0JBQ0YsNEJBQTRCO3dCQUM1Qix1Q0FBdUM7cUJBQ3hDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULDRCQUE0Qjt3QkFDNUI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVywyQkFBMkI7eUJBQ3ZDO3FCQUNGO2tHQXdDc0MsNEJBQTRCO3NCQXVFbEUsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBS25ELFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQnV0dG9uR3JvdXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWE1lbnVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFNlYXJjaEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWFyY2gtYm94JztcbmltcG9ydCB7IEFYRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYRmlsZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUEZpbGVUeXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuXG5pbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7XG4gIEFYUEFjdGlvbk1lbnVJdGVtLFxuICBBWFBCYWNrQnV0dG9uLFxuICBBWFBCcmVhZGNydW1iSXRlbSxcbiAgQVhQRXhlY3V0ZUNvbW1hbmQsXG4gIEFYUFBsYXRmb3JtU2NvcGUsXG4gIHJlc29sdmVQbGF0Zm9ybVNjb3BlS2V5LFxuICByZXNvbHZlUGxhdGZvcm1TY29wZU5hbWUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTURvY3VtZW50RXhwbG9yZXJDb21wb25lbnQsIEFYUERvY3VtZW50RXhwbG9yZXJWaWV3TW9kZWwgfSBmcm9tICcuLi9kb2N1bWVudC1leHBsb3Jlcic7XG5pbXBvcnQgeyBBWE1Eb2N1bWVudEV4cGxvcmVyRGV0YWlsUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9kb2N1bWVudC1leHBsb3Jlci92aWV3cy9kZXRhaWwtcGFuZWwvZGV0YWlsLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1Eb2N1bWVudE1hbmFnZXJTZXJ2aWNlLCBBWE1Gb2xkZXJQYXRoQnJlYWRjcnVtYnNDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgQVhNRG9jdW1lbnRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vc2hhcmVkL2RvY3VtZW50LW1hbmFnZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtZG9jdW1lbnQtZHJpdmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJpdmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcml2ZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICAvL1xuICAgIEFYTWVudU1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEJ1dHRvbkdyb3VwTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhGb3JtYXRNb2R1bGUsXG4gICAgQVhGaWxlTW9kdWxlLFxuICAgIEFYRGF0ZVRpbWVNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgLy9cbiAgICBBWE1Eb2N1bWVudEV4cGxvcmVyQ29tcG9uZW50LFxuICAgIEFYTURvY3VtZW50RXhwbG9yZXJEZXRhaWxQYW5lbENvbXBvbmVudCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIEFYUERvY3VtZW50RXhwbG9yZXJWaWV3TW9kZWwsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhNRG9jdW1lbnREcml2ZUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Eb2N1bWVudERyaXZlQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSByb290Q29uZmlnID0gUm9vdENvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlVHlwZVNlcnZpY2UgPSBpbmplY3QoQVhQRmlsZVR5cGVQcm92aWRlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRyaXZlU2VydmljZSA9IGluamVjdChBWE1Eb2N1bWVudE1hbmFnZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYUERvY3VtZW50RXhwbG9yZXJWaWV3TW9kZWwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBWaWV3IFByb3BlcnRpZXMgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlckl0ZW1zID0gc2lnbmFsPEFycmF5PHsga2V5OiBzdHJpbmc7IHRleHRLZXk6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0+PihbXSk7XG4gIHB1YmxpYyBzZWxlY3RlZEZpbHRlciA9IHNpZ25hbDxzdHJpbmc+KCdhbGwnKTtcblxuICBwcm90ZWN0ZWQgc2VhcmNoUXVlcnk6IHN0cmluZyB8IG51bGwgPSAnJztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydEl0ZW1zID0gc2lnbmFsKFtcbiAgICB7IGtleTogJ25hbWUnLCB0ZXh0S2V5OiAnYWN0aW9ucy5zb3J0LWJ5LW5hbWUnLCBpY29uOiAnZmEtbGlnaHQgZmEtZm9udCcgfSxcbiAgICB7IGtleTogJ21vZGlmaWVkJywgdGV4dEtleTogJ2FjdGlvbnMuc29ydC1ieS1kYXRlJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNhbGVuZGFyJyB9LFxuICAgIHsga2V5OiAnc2l6ZScsIHRleHRLZXk6ICdhY3Rpb25zLnNvcnQtYnktc2l6ZScsIGljb246ICdmYS1saWdodCBmYS13ZWlnaHQtaGFuZ2luZycgfSxcbiAgXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdzSXRlbXMgPSBzaWduYWwoW1xuICAgIHsga2V5OiAnbGFyZ2UtaWNvbnMnLCBpY29uOiAnZmEtbGlnaHQgZmEtZ3JpZCcgfSxcbiAgICB7IGtleTogJ3NtYWxsLWljb25zJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdyaWQnLCBicmVhazogdHJ1ZSB9LFxuICAgIHsga2V5OiAnbGFyZ2UtdGlsZXMnLCBpY29uOiAnZmEtZ3JpZC0yJyB9LFxuICAgIHsga2V5OiAnc21hbGwtdGlsZXMnLCBpY29uOiAnZmEtZ3JpZC0yJywgYnJlYWs6IHRydWUgfSxcbiAgICB7IGtleTogJ2RldGFpbHMnLCBpY29uOiAnZmEtYmFycycsIGJyZWFrOiB0cnVlIH0sXG4gICAgeyBrZXk6ICdsaXN0JywgaWNvbjogJ2ZhLWxpc3QnIH0sXG4gIF0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFZpZXdNb2RlID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy52aWV3c0l0ZW1zKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5rZXkgPT09IHRoaXMudm0udmlld01vZGUoKSkgfHwgdGhpcy52aWV3c0l0ZW1zKClbMF0sXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3Rpb25Nb2RlID0gc2lnbmFsPEFYTURvY3VtZW50U2VsZWN0aW9uTW9kZT4oJ3NpbmdsZScpO1xuICBwcm90ZWN0ZWQgZG9jdW1lbnRFeHBsb3JlciA9IHZpZXdDaGlsZChBWE1Eb2N1bWVudEV4cGxvcmVyQ29tcG9uZW50KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkU29ydCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuc29ydEl0ZW1zKCk7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0ua2V5ID09PSB0aGlzLnZtLnNvcnRGaWVsZCgpKSB8fCBpdGVtc1swXTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBFZmZlY3RzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gICNuYXZpZ2F0ZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmF2aWdhdGluZ0ZvbGRlcklkID0gdGhpcy52bS5uYXZpZ2F0aW5nRm9sZGVySWQoKTtcbiAgICBpZiAobmF2aWdhdGluZ0ZvbGRlcklkKSB7XG4gICAgICB0aGlzLmhhbmRsZU5hdmlnYXRlVG9Gb2xkZXIobmF2aWdhdGluZ0ZvbGRlcklkKTtcbiAgICB9XG4gIH0pO1xuXG4gICNsb2FkaW5nRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSB0aGlzLnZtLmlzTG9hZGluZygpO1xuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmxheW91dFNlcnZpY2Uuc2V0TmF2aWdhdGlvbkxvYWRpbmcoaXNMb2FkaW5nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBMaWZlY3ljbGUgSG9va3MgICAtLS0tLS0tLS0tLS0tLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBhd2FpdCB0aGlzLmxvYWRGaWx0ZXJJdGVtcygpO1xuICAgIGNvbnN0IHNuYXBzaG90ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdDtcbiAgICBjb25zdCByb3V0ZXJTY29wZSA9IHJlc29sdmVQbGF0Zm9ybVNjb3BlS2V5KHNuYXBzaG90LnBhcmVudD8ucGFyYW1NYXAuZ2V0KCdzY29wZScpPy50cmltKCk/LnRvTG93ZXJDYXNlKCkhKTtcbiAgICBhd2FpdCB0aGlzLnZtLmluaXRpYWxpemUoeyBicm93c2VNb2RlOiAnZmlsZScsIHNjb3BlOiByb3V0ZXJTY29wZSBhcyBBWFBQbGF0Zm9ybVNjb3BlIH0pO1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMubG9hZERyaXZlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGFzeW5jIGhhbmRsZVNlYXJjaENoYW5nZShldmVudDogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgIGlmIChldmVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS5zZWFyY2hOb2RlcyhldmVudC52YWx1ZSwgdGhpcy52bS5zY29wZSgpLCB7XG4gICAgICAgIHRlbmFudElkOiB0aGlzLnNlc3Npb25TZXJ2aWNlLnRlbmFudD8uaWQsXG4gICAgICAgIHVzZXJJZDogdGhpcy5zZXNzaW9uU2VydmljZS51c2VyPy5pZCxcbiAgICAgICAgZm9sZGVySWQ6IHRoaXMudm0uY3VycmVudE5vZGUoKT8uaWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudm0udmlydHVhbEZvbGRlcihyZXN1bHQsIHtcbiAgICAgICAgbmFtZTogJ1NlYXJjaCBSZXN1bHQnLFxuICAgICAgICBwYXJlbnRJZDpcbiAgICAgICAgICB0aGlzLnZtLmN1cnJlbnROb2RlKCk/LmlkID09ICd2aXJ0dWFsJ1xuICAgICAgICAgICAgPyAodGhpcy52bS5jdXJyZW50Tm9kZSgpPy5wYXJlbnRJZCA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHRoaXMudm0uY3VycmVudE5vZGUoKT8uaWQsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52bS5uYXZpZ2F0ZVRvVXAoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wnLCBbJyRldmVudCddKVxuICBoYW5kbGVDdHJsS2V5KGU6IEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlLnNldCgnbXVsdGlwbGUnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmNvbnRyb2wnLCBbJyRldmVudCddKVxuICBoYW5kbGVDdHJsS2V5VXAoZTogRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGUuc2V0KCdzaW5nbGUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVOYXZpZ2F0ZVRvRm9sZGVyKGZvbGRlcklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICBgJHt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lfS9kcml2ZS8ke3Jlc29sdmVQbGF0Zm9ybVNjb3BlTmFtZSh0aGlzLnZtLnNjb3BlKCkpfS8ke2ZvbGRlcklkfWAsXG4gICAgXSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoUXVlcnkgPSBudWxsO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLS0tLS0tLS0tLS0tLSAgIERhdGEgTG9hZGluZyBNZXRob2RzICAgLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERyaXZlKCkge1xuICAgIGNvbnN0IGZvbGRlcklkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XG4gICAgaWYgKGZvbGRlcklkKSB7XG4gICAgICBhd2FpdCB0aGlzLnZtLmxvYWRGb2xkZXJDb250ZW50cyhmb2xkZXJJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IGdldCByb290IGZyb20gdGVuYW50IG9yIHVzZXIgYnkgc2NvcGVcbiAgICAgIGNvbnN0IHJvb3QgPSBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS5nZXRSb290KHRoaXMudm0uc2NvcGUoKSwge1xuICAgICAgICB0ZW5hbnRJZDogdGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnQ/LmlkLFxuICAgICAgICB1c2VySWQ6IHRoaXMuc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQsXG4gICAgICB9KTtcbiAgICAgIGlmIChyb290LnJlc3VsdCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgJHt0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lfS9kcml2ZS8ke3Jlc29sdmVQbGF0Zm9ybVNjb3BlTmFtZSh0aGlzLnZtLnNjb3BlKCkpfS8ke3Jvb3QucmVzdWx0LmlkXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLnJlY29tcHV0ZSgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZEZpbHRlckl0ZW1zKCkge1xuICAgIGNvbnN0IHR5cGVzID0gYXdhaXQgdGhpcy5maWxlVHlwZVNlcnZpY2UuaXRlbXMoKTtcbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIHsga2V5OiAnYWxsJywgdGV4dEtleTogJ2ZpbGUtdHlwZXMuYWxsJywgaWNvbjogJ2ZhLWxpZ2h0IGZhLWZvbGRlci1jbG9zZWQnIH0sXG4gICAgICAuLi50eXBlcy5tYXAoKHR5cGUpID0+ICh7XG4gICAgICAgIGtleTogdHlwZS5uYW1lLFxuICAgICAgICB0ZXh0S2V5OiBgZmlsZS10eXBlcy4ke3R5cGUubmFtZX1gLFxuICAgICAgICBpY29uOiB0eXBlLmljb24gfHwgJ2ZhLWxpZ2h0IGZhLWZpbGUnLFxuICAgICAgfSkpLFxuICAgIF07XG4gICAgdGhpcy5maWx0ZXJJdGVtcy5zZXQoaXRlbXMpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0tLS0tLS0tLS0tLS0gICBGaWx0ZXIgTWV0aG9kcyAgIC0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm90ZWN0ZWQgc2V0RmlsdGVyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlci5zZXQoa2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJJY29uKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWx0ZXIoKSA9PT0gJ2FsbCcpIHtcbiAgICAgIHJldHVybiAnZmEtbGlnaHQgZmEtZm9sZGVyLWNsb3NlZCc7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlckl0ZW1zKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5rZXkgPT09IHRoaXMuc2VsZWN0ZWRGaWx0ZXIoKSk7XG4gICAgcmV0dXJuIGl0ZW0/Lmljb24gfHwgJ2ZhLWxpZ2h0IGZhLWZpbGUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpbHRlclRleHQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbHRlcigpID09PSAnYWxsJykge1xuICAgICAgcmV0dXJuICdmaWxlLXR5cGVzLmFsbCc7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlckl0ZW1zKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5rZXkgPT09IHRoaXMuc2VsZWN0ZWRGaWx0ZXIoKSk7XG4gICAgcmV0dXJuIGl0ZW0/LnRleHRLZXkgfHwgJ2ZpbGUtdHlwZXMuYWxsJztcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tLS0tLS0tLS0tLS0tICAgUGFnZSBDb25maWd1cmF0aW9uIE92ZXJyaWRlcyAgIC0tLS0tLS0tLS0tLS0tLS1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQcmltYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIGlmICh0aGlzLnZtLmhhc011bHRpcGxlU2VsZWN0ZWRJdGVtcygpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2RlbGV0ZUl0ZW1zJyxcbiAgICAgICAgICB0aXRsZTogJ0BnZW5lcmFsOmFjdGlvbnMuZGVsZXRlLWl0ZW1zLnRpdGxlJyxcbiAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gtY2FuJyxcbiAgICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICBjb25zdCBhZGRJdGVtSXRlbXMgPSBhd2FpdCB0aGlzLnZtLmdldEZvbGRlckFkZE1lbnVJdGVtcygpO1xuICAgIGFkZEl0ZW1JdGVtc1thZGRJdGVtSXRlbXMubGVuZ3RoIC0gMV0uYnJlYWsgPSBmYWxzZTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnQGRvY3VtZW50LW1hbmFnZW1lbnQ6YWN0aW9ucy5hZGQtaXRlbScsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbHVzJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgaXRlbXM6IGFkZEl0ZW1JdGVtcyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFNlY29uZGFyeU1lbnVJdGVtcygpOiBQcm9taXNlPEFYUEFjdGlvbk1lbnVJdGVtW10+IHtcbiAgICBpZiAodGhpcy52bS5oYXNNdWx0aXBsZVNlbGVjdGVkSXRlbXMoKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdkZWxldGUnLFxuICAgICAgICAgIHRpdGxlOiAnQGdlbmVyYWw6YWN0aW9ucy5kZWxldGUudGl0bGUnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS10cmFzaC1jYW4nLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZtLmdldEZvbGRlckFjdGlvbk1lbnVJdGVtcygpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZVRpdGxlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMudm0uaXNSb290KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgIGBAZG9jdW1lbnQtbWFuYWdlbWVudDpzY29wZXMuJHtyZXNvbHZlUGxhdGZvcm1TY29wZU5hbWUodGhpcy52bS5zY29wZSgpIGFzIEFYUFBsYXRmb3JtU2NvcGUpfS50aXRsZWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy52bS5jdXJyZW50Rm9sZGVyKCk/Lm5hbWUgfHwgJyc7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlRGVzY3JpcHRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjb3VudCA9IGF3YWl0IHRoaXMudm0uaXRlbXNDb3VudCgpO1xuICAgIGNvbnN0IHNpemUgPSBhd2FpdCB0aGlzLnZtLmF2YWlsYWJsZVNwYWNlKCk7XG4gICAgY29uc3QgZm9ybWF0dGVkU2l6ZSA9IGF3YWl0IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQoc2l6ZSwgJ2ZpbGVzaXplJyk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgIGBAZG9jdW1lbnQtbWFuYWdlbWVudDpzY29wZXMuJHtyZXNvbHZlUGxhdGZvcm1TY29wZU5hbWUodGhpcy52bS5zY29wZSgpIGFzIEFYUFBsYXRmb3JtU2NvcGUpfS5kZXNjcmlwdGlvbmAsXG4gICAgICB7XG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGNvdW50LFxuICAgICAgICAgIHNpemU6IGZvcm1hdHRlZFNpemUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRCYWNrQnV0dG9uKCk6IEFYUEJhY2tCdXR0b24gfCBudWxsIHtcbiAgICBpZiAodGhpcy52bS5pc1VwQXZhaWxhYmxlKCkgJiYgdGhpcy52bS5jdXJyZW50UGF0aCgpLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aGlzLnZtLmN1cnJlbnRQYXRoKClbdGhpcy52bS5jdXJyZW50UGF0aCgpLmxlbmd0aCAtIDJdLm5hbWUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uQmFja0J1dHRvbkNsaWNrKCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy52bS5pc1VwQXZhaWxhYmxlKCkpIHtcbiAgICAgIHRoaXMudm0ubmF2aWdhdGVUb1VwKCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZUJyZWFkY3J1bWJzKCk6IFByb21pc2U8QVhQQnJlYWRjcnVtYkl0ZW1bXT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnZtLmN1cnJlbnRQYXRoKCk7XG4gICAgaWYgKCFwYXRoIHx8IHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgIGBAZG9jdW1lbnQtbWFuYWdlbWVudDpzY29wZXMuJHtyZXNvbHZlUGxhdGZvcm1TY29wZU5hbWUodGhpcy52bS5zY29wZSgpIGFzIEFYUFBsYXRmb3JtU2NvcGUpfS50aXRsZWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3QgYnJlYWRjcnVtYnM6IEFYUEJyZWFkY3J1bWJJdGVtW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBwYXRoW2ldITtcbiAgICAgIGNvbnN0IGlzTGFzdCA9IGkgPT09IHBhdGgubGVuZ3RoIC0gMTtcbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goe1xuICAgICAgICBuYW1lOiBub2RlLmlkLFxuICAgICAgICB0aXRsZTogbm9kZS5uYW1lLFxuICAgICAgICBjb21tYW5kOiBpc0xhc3RcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgbmFtZTogJ25hdmlnYXRlLXRvLWZvbGRlcicsXG4gICAgICAgICAgICBvcHRpb25zOiB7IGZvbGRlcklkOiBub2RlLmlkIH0sXG4gICAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYnJlYWRjcnVtYnM7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKGNvbW1hbmQ6IEFYUEV4ZWN1dGVDb21tYW5kKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9sZGVySWQgPSBjb21tYW5kLm9wdGlvbnM/LlsnZm9sZGVySWQnXSBhcyBzdHJpbmc7XG4gICAgc3dpdGNoIChjb21tYW5kLm5hbWUpIHtcbiAgICAgIGNhc2UgJ25hdmlnYXRlLXRvLWZvbGRlcic6XG4gICAgICAgIGlmIChmb2xkZXJJZCkge1xuICAgICAgICAgIHRoaXMudm0ubmF2aWdhdGVUb0ZvbGRlcihmb2xkZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICduZXctZm9sZGVyJzpcbiAgICAgICAgaWYgKGZvbGRlcklkKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZVNlcnZpY2Uuc2hvd0NyZWF0ZUZvbGRlckRpYWxvZyhmb2xkZXJJZCk7XG4gICAgICAgICAgdGhpcy52bS5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcGVuLWdhbGxlcnknOlxuICAgICAgICBpZiAoZm9sZGVySWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS5zaG93RmlsZVZpZXdlclBvcHVwKHRoaXMudm0uY3VycmVudEZvbGRlcigpIS5jaGlsZHJlbiFbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvbW1hbmQubmFtZS5zdGFydHNXaXRoKCd1cGxvYWQuJykpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlU2VydmljZS51cGxvYWRGaWxlQnlUeXBlKGZvbGRlcklkLCBjb21tYW5kLm9wdGlvbnM/LlsnZG9jdW1lbnRUeXBlJ10/LmlkKTtcbiAgICAgICAgICB0aGlzLnZtLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjwhLS0gTWFpbiBMYXlvdXQgLS0+XG48YXhwLXBhZ2UtbGF5b3V0ICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICA8YXhwLXBhZ2UtdG9vbGJhcj5cbiAgICA8IS0tIExlZnQgU2lkZSBUb29sYmFyIC0tPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeD5cbiAgICAgIEBpZiAodm0uaGFzTXVsdGlwbGVTZWxlY3RlZEl0ZW1zKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtY2VudGVyIGF4LWgtMTBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICB7eyB2bS5zZWxlY3RlZENvdW50KCkgfX0ge3sgJ0BnZW5lcmFsOnRlcm1zLml0ZW1zLXNlbGVjdGVkJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJ2bS5kZXNlbGVjdEFsbCgpXCIgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXRleHQtc2Vjb25kYXJ5IGF4LXVuZGVybGluZSBheC1jdXJzb3ItcG9pbnRlclwiPnt7XG4gICAgICAgICAgICAnQGdlbmVyYWw6YWN0aW9ucy51bnNlbGVjdC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1xuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDwhLS0tLS0tLS0tLT5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgPCEtLSBGaWx0ZXIgRHJvcGRvd24gLS0+XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwidChnZXRGaWx0ZXJUZXh0KCksIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSkgfCBhc3luY1wiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJnZXRGaWx0ZXJJY29uKClcIj48L2F4LWljb24+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG5cbiAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdCBjbGFzcz1cImF4LXAtMlwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlckl0ZW1zKCk7IHRyYWNrIGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJzZXRGaWx0ZXIoaXRlbS5rZXkpXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIih0KGl0ZW0udGV4dEtleSwgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9KSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cIml0ZW0uaWNvblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPCEtLSBTZWFyY2ggQm94IC0tPlxuICAgICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAgIFsodmFsdWUpXT1cInNlYXJjaFF1ZXJ5XCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlU2VhcmNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwiYXgtdy03MiBheC1oaWRkZW4gbWQ6YXgtZmxleFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ2FjdGlvbnMuc2VhcmNoJywgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9KSB8IGFzeW5jXCJcbiAgICAgICAgICA+PGF4LWNsZWFyLWJ1dHRvbj48L2F4LWNsZWFyLWJ1dHRvblxuICAgICAgICA+PC9heC1zZWFyY2gtYm94PlxuICAgICAgfVxuICAgIDwvYXhwLWxheW91dC1wcmVmaXg+XG5cbiAgICA8IS0tIFJpZ2h0IFNpZGUgVG9vbGJhciAtLT5cbiAgICA8YXhwLWxheW91dC1zdWZmaXg+XG4gICAgICA8IS0tIFNvcnQgRHJvcGRvd24gLS0+XG4gICAgICA8YXgtYnV0dG9uPlxuICAgICAgICA8YXgtaWNvblxuICAgICAgICAgIFtpY29uXT1cIidmYS1saWdodCBmYS1hcnJvdy0nICsgKHZtLnNvcnREaXJlY3Rpb24oKSA9PT0gJ2FzYycgPyAndXAnIDogJ2Rvd24nKSArICctd2lkZS1zaG9ydCdcIlxuICAgICAgICA+PC9heC1pY29uPlxuICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICA8IS0tIFNvcnQgQnkgT3B0aW9ucyAtLT5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc29ydEl0ZW1zKCk7IHRyYWNrIGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIih0KGl0ZW0udGV4dEtleSwgeyBzY29wZTogcm9vdENvbmZpZy5jb25maWcuaTE4biB9KSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLnNldFNvcnRGaWVsZChpdGVtLmtleSlcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ2bS5zb3J0RmllbGQoKSA9PT0gaXRlbS5rZXlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cIml0ZW0uaWNvblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgIDwhLS0gU29ydCBEaXJlY3Rpb24gT3B0aW9ucyAtLT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbdGV4dF09XCIodCgnYWN0aW9ucy5zb3J0LWFzY2VuZGluZycsIHsgc2NvcGU6IHJvb3RDb25maWcuY29uZmlnLmkxOG4gfSkgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZtLnNvcnREaXJlY3Rpb24oKSA9PT0gJ2FzYydcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJ2bS5zZXRTb3J0RGlyZWN0aW9uKCdhc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWFycm93LXVwLXdpZGUtc2hvcnRcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbdGV4dF09XCIodCgnYWN0aW9ucy5zb3J0LWRlc2NlbmRpbmcnLCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJ2bS5zb3J0RGlyZWN0aW9uKCkgPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLnNldFNvcnREaXJlY3Rpb24oJ2Rlc2MnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWFycm93LWRvd24td2lkZS1zaG9ydFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICA8IS0tIFZpZXcgTW9kZSBUb2dnbGUgLS0+XG4gICAgICA8YXgtYnV0dG9uPlxuICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQge3sgc2VsZWN0ZWRWaWV3TW9kZSgpLmljb24gfX1cIj48L2F4LWljb24+XG4gICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygdmlld3NJdGVtcygpOyB0cmFjayBpdGVtLmtleSkge1xuICAgICAgICAgICAgICA8IS0tIHZpZXcgbW9kZSBpdGVtcyAtLT5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiKHQoJ3ZpZXctbW9kZXMuJyArIGl0ZW0ua2V5LCB7IHNjb3BlOiByb290Q29uZmlnLmNvbmZpZy5pMThuIH0pIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInZtLmlzVmlld01vZGUoaXRlbS5rZXkpXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJ2bS5zZXRWaWV3TW9kZShpdGVtLmtleSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCB7eyBpdGVtLmljb24gfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5icmVhaykge1xuICAgICAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tIGVuZCBvZiB2aWV3IG1vZGUgaXRlbXMgLS0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgIEBpZiAobGF5b3V0U2VydmljZS5pc0xhcmdlKCkpIHtcbiAgICAgICAgPCEtLSBEZXRhaWwgUGFuZWwgVG9nZ2xlIC0tPlxuICAgICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cInZtLnRvZ2dsZURldGFpbFBhbmVsKClcIj5cbiAgICAgICAgICA8YXgtaWNvblxuICAgICAgICAgICAgaWNvbj1cInt7IHZtLmlzRGV0YWlsUGFuZWxPcGVuKCkgPyAnZmEtc29saWQgZmEtc3F1YXJlLWluZm8nIDogJ2ZhLWxpZ2h0IGZhLXNxdWFyZS1pbmZvJyB9fVwiXG4gICAgICAgICAgPjwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9heHAtbGF5b3V0LXN1ZmZpeD5cbiAgPC9heHAtcGFnZS10b29sYmFyPlxuXG4gIDwhLS0gQ29udGVudCBTZWN0aW9uIC0tPlxuICA8YXhwLXBhZ2UtY29udGVudCBjbGFzcz1cImF4LW92ZXJmbG93LWF1dG8gYXgtZmxleCBheC1mbGV4LXJvdyBheC1nYXAtNFwiPlxuICAgIDxheG0tZG9jdW1lbnQtZXhwbG9yZXIgW3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCI+PC9heG0tZG9jdW1lbnQtZXhwbG9yZXI+XG4gICAgQGlmICh2bS5pc0RldGFpbFBhbmVsT3BlbigpICYmIGxheW91dFNlcnZpY2UuaXNMYXJnZSgpKSB7XG4gICAgICA8YXhtLWRvY3VtZW50LWV4cGxvcmVyLWRldGFpbC1wYW5lbCBjbGFzcz1cImF4LXN0aWNreSBheC10b3AtMCBheC16LTUwXCI+PC9heG0tZG9jdW1lbnQtZXhwbG9yZXItZGV0YWlsLXBhbmVsPlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuXG4gIDwhLS0gRm9vdGVyIFNlY3Rpb24gcmVtb3ZlZDogYnJlYWRjcnVtYnMgYXJlIG5vdyBwcm92aWRlZCB2aWEgcGFnZS1sZXZlbCBicmVhZGNydW1icyAtLT5cbjwvYXhwLXBhZ2UtbGF5b3V0PlxuIl19"],"names":["i4","i5","i1","i2","i6"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-notification-management-notification-page.component-Lz8J7q4k.mjs","sources":["../tmp-esm2022/notification-management/lib/features/components/notification-page/notification-page.component.js"],"sourcesContent":["import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXSlidingItemModule } from '@acorex/components/sliding-item';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXContextMenuComponent, } from '@acorex/components/menu';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPNotificationDefinitionService } from '../../shared/notification-definition.service';\nimport { AXMNotificationConnectorService } from '../../shared/notification-management.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@acorex/components/check-box\";\nimport * as i5 from \"@acorex/components/skeleton\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/badge\";\nimport * as i8 from \"@acorex/components/dropdown\";\nimport * as i9 from \"@acorex/components/search-box\";\nimport * as i10 from \"@acorex/components/label\";\nimport * as i11 from \"@acorex/components/sliding-item\";\nimport * as i12 from \"@acorex/core/format\";\n//#region ---- Component Definition ----\nexport class AXMNotificationPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Services & Dependencies ----\n this.layoutThemeService = inject(AXPLayoutThemeService);\n this.connector = inject(AXMNotificationConnectorService);\n this.definitionService = inject(AXPNotificationDefinitionService);\n //#endregion\n //#region ---- State & Computed Properties ----\n this.loading = this.connector.loading;\n this.errorMessage = this.connector.errorMessage;\n this.notifications = this.connector.notificationList;\n this.unreadCount = this.connector.unreadCount;\n this.totalCount = this.connector.total;\n // Local UI state\n this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: \"searchQuery\" }] : []));\n this.isEditing = signal(false, ...(ngDevMode ? [{ debugName: \"isEditing\" }] : []));\n this.contextMenu = viewChild('contextMenu', ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n // #isEditingEff = effect(() => {\n // if (this.isEditing() && this.selectedIds().size === 0) {\n // this.isEditing.set(false);\n // }\n // });\n this.filteredNotifications = computed(() => {\n const query = (this.searchQuery() || '').toLowerCase().trim();\n const items = this.notifications();\n if (!query) {\n return this.activeTab() === 'unread' ? items.filter((n) => !n.readAt) : items;\n }\n const base = this.activeTab() === 'unread' ? items.filter((n) => !n.readAt) : items;\n return base.filter((n) => {\n const title = (n.title || '').toLowerCase();\n const body = (n.body || '').toLowerCase();\n const sender = (n.sender?.fullName || '').toLowerCase();\n return title.includes(query) || body.includes(query) || sender.includes(query);\n });\n }, ...(ngDevMode ? [{ debugName: \"filteredNotifications\" }] : []));\n // Tab state: 'all' | 'unread'\n this.tab = signal('all', ...(ngDevMode ? [{ debugName: \"tab\" }] : []));\n this.activeTab = computed(() => this.tab(), ...(ngDevMode ? [{ debugName: \"activeTab\" }] : []));\n // Selection state for bulk actions\n this.selectedIds = signal(new Set(), ...(ngDevMode ? [{ debugName: \"selectedIds\" }] : []));\n this.selectedCount = computed(() => this.selectedIds().size, ...(ngDevMode ? [{ debugName: \"selectedCount\" }] : []));\n this.contextItem = signal(null, ...(ngDevMode ? [{ debugName: \"contextItem\" }] : []));\n }\n selectedTab() {\n return this.tab();\n }\n setTab(v) {\n this.tab.set(v);\n }\n onTabChange(index) {\n this.tab.set(index === 1 ? 'unread' : 'all');\n }\n //#endregion\n //#region ---- Page Interface Methods ----\n async getPageTitle() {\n return 'Notifications';\n }\n getPageDescription() {\n const unread = this.unreadCount();\n const total = this.totalCount();\n if (!total) {\n return 'No notifications';\n }\n return unread > 0 ? `${unread} unread out of ${total}` : `${total} notifications`;\n }\n async getPrimaryMenuItems() {\n const items = [];\n if (this.selectedCount() > 0) {\n items.push({\n title: 'Delete',\n icon: 'fa-light fa-trash',\n command: { name: 'delete-selected' },\n color: 'danger',\n });\n items.push({\n title: 'Mark as read',\n icon: 'fa-light fa-envelopes-bulk',\n command: { name: 'mark-selected-as-read' },\n color: 'primary',\n });\n }\n return items;\n }\n async getSecondaryMenuItems() {\n const items = [];\n if (this.selectedCount() === 0) {\n items.push({\n title: 'Refresh',\n icon: 'fa-light fa-rotate',\n command: { name: 'refresh' },\n }, {\n title: 'Mark all as read',\n icon: 'fa-light fa-envelopes-bulk',\n command: { name: 'mark-all-as-read' },\n disabled: this.unreadCount() === 0,\n }, {\n title: 'Select items',\n icon: 'fa-light fa-pen',\n command: { name: 'edit-mode' },\n color: 'primary',\n });\n }\n return items;\n }\n async execute(command) {\n switch (command.name) {\n case 'refresh':\n await this.onRefresh();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'delete-selected':\n await this.deleteSelected();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'mark-selected-as-read':\n await this.markSelectedAsRead();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'mark-all-as-read':\n await this.onMarkAllAsRead();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'edit-mode':\n if (this.isEditing()) {\n this.deselectAll();\n this.isEditing.set(false);\n }\n else {\n this.isEditing.set(true);\n }\n break;\n }\n }\n //#endregion\n //#region ---- UI Handlers ----\n onSearch(value) {\n this.searchQuery.set(value);\n }\n onClearSearch() {\n this.searchQuery.set('');\n }\n async onRefresh() {\n await this.connector.getList();\n }\n async onMarkAllAsRead() {\n await this.connector.markAllAsRead();\n }\n isSelected(id) {\n return this.selectedIds().has(id);\n }\n toggleSelectionWithModel(id, checked) {\n const next = new Set(this.selectedIds());\n if (checked) {\n next.add(id);\n }\n else {\n next.delete(id);\n }\n this.selectedIds.set(next);\n }\n isAllSelected() {\n const items = this.filteredNotifications();\n return items.length > 0 && items.every((i) => this.selectedIds().has(i.id));\n }\n toggleSelectAll(event) {\n const checked = event.target.checked;\n if (checked) {\n this.selectedIds.set(new Set(this.filteredNotifications().map((i) => i.id)));\n }\n else {\n this.selectedIds.set(new Set());\n }\n }\n async markSelectedAsRead(item) {\n const ids = item ? [item.id] : Array.from(this.selectedIds());\n if (ids.length === 0)\n return;\n await this.connector.markAsRead({ id: ids });\n this.selectedIds.set(new Set());\n }\n async deleteSelected(item) {\n const ids = item ? [item.id] : Array.from(this.selectedIds());\n if (ids.length === 0)\n return;\n for (const id of ids) {\n await this.connector.deleteOne(id);\n }\n this.selectedIds.set(new Set());\n }\n deselectAll() {\n if (this.selectedCount() > 0) {\n this.selectedIds.set(new Set());\n }\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n }\n // Row interactions\n onRowClick(id) {\n this.toggleSelectionById(id);\n }\n async openItem(id) {\n if (this.isEditing()) {\n this.toggleSelectionById(id);\n return;\n }\n //avoid double click on selected items\n if (this.selectedCount() > 0) {\n return;\n }\n const item = this.notifications().find((n) => n.id === id);\n if (!item) {\n return;\n }\n // Mark as read (idempotent per service logic)\n await this.connector.markAsRead({ id: [id] });\n // Execute provider click action if available\n const provider = this.definitionService.resolve(item.type);\n await provider?.execute?.({ name: 'click' }, item);\n }\n toggleSelectionById(id) {\n const next = new Set(this.selectedIds());\n if (next.has(id)) {\n next.delete(id);\n }\n else {\n next.add(id);\n }\n this.selectedIds.set(next);\n }\n //#endregion\n slidingItemsHandler(item, action) {\n switch (action) {\n case 'mark-as-read':\n this.markSelectedAsRead(item);\n break;\n case 'delete':\n this.deleteSelected(item);\n break;\n }\n }\n handleContextMenuItemClick(e) {\n const item = this.contextItem();\n if (!item) {\n return;\n }\n switch (e.item.name) {\n case 'mark-as-read':\n this.markSelectedAsRead(item);\n break;\n case 'delete':\n this.deleteSelected(item);\n break;\n }\n }\n handleContextMenuOpening(e) {\n e.items = [\n {\n name: 'mark-as-read',\n text: 'Mark as read',\n icon: 'fa-light fa-envelopes-bulk',\n color: 'primary',\n },\n ];\n e.items.push({\n name: 'delete',\n text: 'Delete',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n });\n }\n openContextMenu(e, item) {\n if (this.isEditing() || this.selectedCount() > 0) {\n return;\n }\n e.preventDefault();\n this.contextMenu()?.showAt({\n x: e.clientX,\n y: e.clientY,\n });\n this.contextItem.set(item);\n }\n //#region ---- Helper Methods for State Message ----\n getNotificationIcon() {\n if (this.searchQuery()) {\n return 'fa-solid fa-magnifying-glass';\n }\n else if (this.activeTab() === 'unread') {\n return 'fa-solid fa-check-circle';\n }\n else {\n return 'fa-solid fa-bell';\n }\n }\n getNotificationTitle() {\n if (this.searchQuery()) {\n return '@notification-management:state-message.no-results.title';\n }\n else if (this.activeTab() === 'unread') {\n return '@notification-management:state-message.all-caught-up.title';\n }\n else {\n return '@notification-management:state-message.no-notifications.title';\n }\n }\n getNotificationDescription() {\n if (this.searchQuery()) {\n return `We couldn't find anything matching \"${this.searchQuery()}\".`;\n }\n else if (this.activeTab() === 'unread') {\n return '@notification-management:state-message.all-caught-up.description';\n }\n else {\n return '@notification-management:state-message.no-notifications.description';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMNotificationPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMNotificationPageComponent, isStandalone: true, selector: \"axm-notification-page\", host: { listeners: { \"document:keydown.escape\": \"deselectAll()\" } }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMNotificationPageComponent,\n },\n ], viewQueries: [{ propertyName: \"contextMenu\", first: true, predicate: [\"contextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <axp-page-layout>\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (selectedCount() > 0 || isEditing()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">{{ selectedCount() }} items selected</span>\n <span (click)=\"deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\"\n >Unselect</span\n >\n </div>\n } @else {\n <ax-button [text]=\"activeTab() === 'all' ? 'All Notifications' : 'Unread Notifications'\">\n <ax-dropdown-panel >\n <ax-button-item-list class=\"ax-min-w-52\">\n <ax-button-item\n [text]=\"'All notifications'\"\n [selected]=\"activeTab() === 'all'\"\n (onClick)=\"setTab('all')\"\n ></ax-button-item>\n <ax-button-item\n [text]=\"'Unread Notifications'\"\n [selected]=\"activeTab() === 'unread'\"\n (onClick)=\"setTab('unread')\"\n >\n <ax-suffix>\n <ax-badge [text]=\"unreadCount().toString()\" [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-search-box\n look=\"solid\"\n [placeholder]=\"'Search notifications'\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n </axp-layout-prefix>\n <!-- <axp-layout-suffix>\n @if (selectedCount() > 0) {\n <div class=\"ax-flex ax-gap-2\">\n @if (activeTab() === 'unread') {\n <ax-button [text]=\"'Mark as read'\" (onClick)=\"markSelectedAsRead()\"></ax-button>\n }\n <ax-button look=\"outline\" color=\"danger\" [text]=\"'Delete'\" (onClick)=\"deleteSelected()\"></ax-button>\n </div>\n }\n </axp-layout-suffix> -->\n </axp-page-toolbar>\n <axp-page-content>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- List -->\n @if (loading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (filteredNotifications().length === 0) {\n <axp-state-message\n mode=\"empty\"\n [icon]=\"getNotificationIcon()\"\n [title]=\"getNotificationTitle()\"\n [description]=\"getNotificationDescription()\"\n >\n @if (searchQuery()) {\n <ax-button slot=\"actions\" look=\"outline\" [text]=\"'Clear search'\" (onClick)=\"onClearSearch()\"></ax-button>\n }\n </axp-state-message>\n } @else {\n <div>\n @for (item of filteredNotifications(); track item.id) {\n @if (layoutThemeService.isMobileDevice()) {\n <ng-container\n #contextMenuContainer\n [ngTemplateOutlet]=\"mobile\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"desktop\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n }\n }\n </div>\n }\n </div>\n </axp-page-content>\n </axp-page-layout>\n\n <ng-template #mobile let-item>\n <ax-sliding-item class=\"ax-h-24\">\n <!-- <ax-sliding-item-prefix (onClick)=\"clickHandler($event)\" color=\"danger\" text=\"delete\">\n <ax-icon class=\"fa-solid fa-trash\"></ax-icon>\n </ax-sliding-item-prefix> -->\n\n <ax-content class=\"!ax-p-0\">\n <div\n class=\"ax-select-none ax-flex ax-size-full ax-mb-2 ax-gap-3 ax-py-2 ax-px-4 ax-items-center ax-rounded-md ax-cursor-pointer ax-line-clamp-2\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ax-content>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'mark-as-read')\" color=\"primary\">\n <ax-icon class=\"fa-light fa-envelopes-bulk fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n </ng-template>\n\n <ng-template #desktop let-item>\n <div\n class=\"ax-flex ax-gap-3 ax-p-4 ax-items-center ax-rounded-md ax-cursor-pointer hover:ax-bg-surface ax-mb-2 last:ax-mb-0\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n <!-- @if (isSelected(item.id)) {\n <div class=\"ax-w-1 ax-self-stretch ax-rounded ax-bg-primary\"></div>\n } -->\n <!-- Select via checkbox -->\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ng-template>\n <ax-context-menu\n #contextMenu\n [openOn]=\"'click'\"\n [closeOn]=\"'click'\"\n [orientation]=\"'horizontal'\"\n (onOpening)=\"handleContextMenuOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.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: CommonModule }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i4.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i5.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i6.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: i6.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i6.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i7.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i8.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i9.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { 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: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"component\", type: AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i10.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXSlidingItemModule }, { kind: \"component\", type: i11.AXSlidingItemComponent, selector: \"ax-sliding-item\" }, { kind: \"component\", type: i11.AXSlidingItemSuffixComponent, selector: \"ax-sliding-item-suffix\", inputs: [\"color\", \"text\"], outputs: [\"onClick\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i12.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMNotificationPageComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-notification-page',\n template: `\n <axp-page-layout>\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (selectedCount() > 0 || isEditing()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">{{ selectedCount() }} items selected</span>\n <span (click)=\"deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\"\n >Unselect</span\n >\n </div>\n } @else {\n <ax-button [text]=\"activeTab() === 'all' ? 'All Notifications' : 'Unread Notifications'\">\n <ax-dropdown-panel >\n <ax-button-item-list class=\"ax-min-w-52\">\n <ax-button-item\n [text]=\"'All notifications'\"\n [selected]=\"activeTab() === 'all'\"\n (onClick)=\"setTab('all')\"\n ></ax-button-item>\n <ax-button-item\n [text]=\"'Unread Notifications'\"\n [selected]=\"activeTab() === 'unread'\"\n (onClick)=\"setTab('unread')\"\n >\n <ax-suffix>\n <ax-badge [text]=\"unreadCount().toString()\" [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-search-box\n look=\"solid\"\n [placeholder]=\"'Search notifications'\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n </axp-layout-prefix>\n <!-- <axp-layout-suffix>\n @if (selectedCount() > 0) {\n <div class=\"ax-flex ax-gap-2\">\n @if (activeTab() === 'unread') {\n <ax-button [text]=\"'Mark as read'\" (onClick)=\"markSelectedAsRead()\"></ax-button>\n }\n <ax-button look=\"outline\" color=\"danger\" [text]=\"'Delete'\" (onClick)=\"deleteSelected()\"></ax-button>\n </div>\n }\n </axp-layout-suffix> -->\n </axp-page-toolbar>\n <axp-page-content>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- List -->\n @if (loading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (filteredNotifications().length === 0) {\n <axp-state-message\n mode=\"empty\"\n [icon]=\"getNotificationIcon()\"\n [title]=\"getNotificationTitle()\"\n [description]=\"getNotificationDescription()\"\n >\n @if (searchQuery()) {\n <ax-button slot=\"actions\" look=\"outline\" [text]=\"'Clear search'\" (onClick)=\"onClearSearch()\"></ax-button>\n }\n </axp-state-message>\n } @else {\n <div>\n @for (item of filteredNotifications(); track item.id) {\n @if (layoutThemeService.isMobileDevice()) {\n <ng-container\n #contextMenuContainer\n [ngTemplateOutlet]=\"mobile\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"desktop\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n }\n }\n </div>\n }\n </div>\n </axp-page-content>\n </axp-page-layout>\n\n <ng-template #mobile let-item>\n <ax-sliding-item class=\"ax-h-24\">\n <!-- <ax-sliding-item-prefix (onClick)=\"clickHandler($event)\" color=\"danger\" text=\"delete\">\n <ax-icon class=\"fa-solid fa-trash\"></ax-icon>\n </ax-sliding-item-prefix> -->\n\n <ax-content class=\"!ax-p-0\">\n <div\n class=\"ax-select-none ax-flex ax-size-full ax-mb-2 ax-gap-3 ax-py-2 ax-px-4 ax-items-center ax-rounded-md ax-cursor-pointer ax-line-clamp-2\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ax-content>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'mark-as-read')\" color=\"primary\">\n <ax-icon class=\"fa-light fa-envelopes-bulk fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n </ng-template>\n\n <ng-template #desktop let-item>\n <div\n class=\"ax-flex ax-gap-3 ax-p-4 ax-items-center ax-rounded-md ax-cursor-pointer hover:ax-bg-surface ax-mb-2 last:ax-mb-0\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n <!-- @if (isSelected(item.id)) {\n <div class=\"ax-w-1 ax-self-stretch ax-rounded ax-bg-primary\"></div>\n } -->\n <!-- Select via checkbox -->\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ng-template>\n <ax-context-menu\n #contextMenu\n [openOn]=\"'click'\"\n [closeOn]=\"'click'\"\n [orientation]=\"'horizontal'\"\n (onOpening)=\"handleContextMenuOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMNotificationPageComponent,\n },\n ],\n host: {\n '(document:keydown.escape)': 'deselectAll()',\n },\n imports: [\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXFormatModule,\n AXCheckBoxModule,\n AXSkeletonModule,\n AXButtonModule,\n AXBadgeModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n AXSearchBoxModule,\n AXPUserAvatarComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXContextMenuComponent,\n AXLabelModule,\n AXSlidingItemModule,\n ],\n }]\n }], propDecorators: { contextMenu: [{ type: i0.ViewChild, args: ['contextMenu', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL25vdGlmaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvY29tcG9uZW50cy9ub3RpZmljYXRpb24tcGFnZS9ub3RpZmljYXRpb24tcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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QUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJOVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsOEJBQThCO3lCQUMxQztxQkFDRjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osMkJBQTJCLEVBQUUsZUFBZTtxQkFDN0M7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCO2lCQUNGO3lFQXFCMkQsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2hlY2tCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFNsaWRpbmdJdGVtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NsaWRpbmctaXRlbSc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4ZWN1dGVDb21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCwgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCwgQVhQVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgQVhDb250ZXh0TWVudUNvbXBvbmVudCxcbiAgQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCxcbiAgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IEFYTU5vdGlmaWNhdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgQVhQTm90aWZpY2F0aW9uRGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbm90aWZpY2F0aW9uLWRlZmluaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Ob3RpZmljYXRpb25Db25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL25vdGlmaWNhdGlvbi1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuXG4vLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCBEZWZpbml0aW9uICAgLS0tLVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tbm90aWZpY2F0aW9uLXBhZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheHAtcGFnZS1sYXlvdXQ+XG4gICAgICA8YXhwLXBhZ2UtdG9vbGJhcj5cbiAgICAgICAgPGF4cC1sYXlvdXQtcHJlZml4PlxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRDb3VudCgpID4gMCB8fCBpc0VkaXRpbmcoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtY2VudGVyIGF4LWgtMTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZFwiPnt7IHNlbGVjdGVkQ291bnQoKSB9fSBpdGVtcyBzZWxlY3RlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImRlc2VsZWN0QWxsKClcIiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1zZWNvbmRhcnkgYXgtdW5kZXJsaW5lIGF4LWN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICA+VW5zZWxlY3Q8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cImFjdGl2ZVRhYigpID09PSAnYWxsJyA/ICdBbGwgTm90aWZpY2F0aW9ucycgOiAnVW5yZWFkIE5vdGlmaWNhdGlvbnMnXCI+XG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCA+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3QgY2xhc3M9XCJheC1taW4tdy01MlwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidBbGwgbm90aWZpY2F0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiYWN0aXZlVGFiKCkgPT09ICdhbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2V0VGFiKCdhbGwnKVwiXG4gICAgICAgICAgICAgICAgICA+PC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVW5yZWFkIE5vdGlmaWNhdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImFjdGl2ZVRhYigpID09PSAndW5yZWFkJ1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNldFRhYigndW5yZWFkJylcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1iYWRnZSBbdGV4dF09XCJ1bnJlYWRDb3VudCgpLnRvU3RyaW5nKClcIiBbY29sb3JdPVwiJ3ByaW1hcnknXCI+PC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBub3RpZmljYXRpb25zJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hRdWVyeSgpXCJcbiAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LXctNzIgYXgtaGlkZGVuIG1kOmF4LWZsZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgICAgICAgPC9heC1zZWFyY2gtYm94PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heHAtbGF5b3V0LXByZWZpeD5cbiAgICAgICAgPCEtLSA8YXhwLWxheW91dC1zdWZmaXg+XG4gICAgICAgICAgQGlmIChzZWxlY3RlZENvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiJ01hcmsgYXMgcmVhZCdcIiAob25DbGljayk9XCJtYXJrU2VsZWN0ZWRBc1JlYWQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cIm91dGxpbmVcIiBjb2xvcj1cImRhbmdlclwiIFt0ZXh0XT1cIidEZWxldGUnXCIgKG9uQ2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4cC1sYXlvdXQtc3VmZml4PiAtLT5cbiAgICAgIDwvYXhwLXBhZ2UtdG9vbGJhcj5cbiAgICAgIDxheHAtcGFnZS1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNFwiPlxuICAgICAgICAgIDwhLS0gTGlzdCAtLT5cbiAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1zcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgQGZvciAoXyBvZiBbMSwgMiwgMywgNCwgNSwgNl07IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1zcGFjZS14LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiYXgtdy0xMiBheC1oLTEyIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LXNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctMy80IGF4LWgtNCBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LTEvMiBheC1oLTMgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoZmlsdGVyZWROb3RpZmljYXRpb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgICAgICAgbW9kZT1cImVtcHR5XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiZ2V0Tm90aWZpY2F0aW9uSWNvbigpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cImdldE5vdGlmaWNhdGlvblRpdGxlKClcIlxuICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiZ2V0Tm90aWZpY2F0aW9uRGVzY3JpcHRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoc2VhcmNoUXVlcnkoKSkge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gc2xvdD1cImFjdGlvbnNcIiBsb29rPVwib3V0bGluZVwiIFt0ZXh0XT1cIidDbGVhciBzZWFyY2gnXCIgKG9uQ2xpY2spPVwib25DbGVhclNlYXJjaCgpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkTm90aWZpY2F0aW9ucygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgQGlmIChsYXlvdXRUaGVtZVNlcnZpY2UuaXNNb2JpbGVEZXZpY2UoKSkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAjY29udGV4dE1lbnVDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXNrdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXhwLXBhZ2UtY29udGVudD5cbiAgICA8L2F4cC1wYWdlLWxheW91dD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbW9iaWxlIGxldC1pdGVtPlxuICAgICAgPGF4LXNsaWRpbmctaXRlbSBjbGFzcz1cImF4LWgtMjRcIj5cbiAgICAgICAgPCEtLSA8YXgtc2xpZGluZy1pdGVtLXByZWZpeCAob25DbGljayk9XCJjbGlja0hhbmRsZXIoJGV2ZW50KVwiIGNvbG9yPVwiZGFuZ2VyXCIgdGV4dD1cImRlbGV0ZVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtdHJhc2hcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtc2xpZGluZy1pdGVtLXByZWZpeD4gLS0+XG5cbiAgICAgICAgPGF4LWNvbnRlbnQgY2xhc3M9XCIhYXgtcC0wXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1zZWxlY3Qtbm9uZSBheC1mbGV4IGF4LXNpemUtZnVsbCBheC1tYi0yIGF4LWdhcC0zIGF4LXB5LTIgYXgtcHgtNCBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1tZCBheC1jdXJzb3ItcG9pbnRlciBheC1saW5lLWNsYW1wLTJcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LWJnLWxpZ2h0ZXJdPVwiaXNTZWxlY3RlZChpdGVtLmlkKVwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3Blbkl0ZW0oaXRlbS5pZClcIlxuICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cIm9wZW5Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGlzRWRpdGluZygpKSB7XG4gICAgICAgICAgICAgIDxheC1jaGVjay1ib3hcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LW10LTFcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWQoaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbldpdGhNb2RlbChpdGVtLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbD48L2F4LWxhYmVsPlxuICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS0gQXZhdGFyICsgVW5yZWFkIERvdCAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZWxhdGl2ZSBheC13LTEyIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxheHAtdXNlci1hdmF0YXIgW3NpemVdPVwiNDhcIiBbdXNlcklkXT1cIml0ZW0uc2VuZGVyLmlkXCI+PC9heHAtdXNlci1hdmF0YXI+XG4gICAgICAgICAgICAgIEBpZiAoIWl0ZW0ucmVhZEF0KSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1hYnNvbHV0ZSBheC1yaWdodC0wIGF4LXRvcC0wIGF4LWJsb2NrIGF4LWgtMyBheC13LTMgYXgtcm91bmRlZC1mdWxsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBDb250ZW50IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTEgYXgtZmxleC0xIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mb250LW1lZGl1bVwiIFtjbGFzcy5heC1mb250LXNlbWlib2xkXT1cIiFpdGVtLnJlYWRBdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnNlbmRlci5mdWxsTmFtZSB8fCBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPuKAojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhzIGF4LW9wYWNpdHktNzVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jcmVhdGVBdCB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXNtIGF4LWxpbmUtY2xhbXAtMlwiPnt7IGl0ZW0uYm9keSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIEFjdGlvbnMgKGZ1dHVyZTogcGVyLWl0ZW0ga2ViYWIpIC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2F4LWNvbnRlbnQ+XG5cbiAgICAgICAgPGF4LXNsaWRpbmctaXRlbS1zdWZmaXggKG9uQ2xpY2spPVwic2xpZGluZ0l0ZW1zSGFuZGxlcihpdGVtLCAnbWFyay1hcy1yZWFkJylcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLWVudmVsb3Blcy1idWxrIGZhLXhsXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LXNsaWRpbmctaXRlbS1zdWZmaXg+XG5cbiAgICAgICAgPGF4LXNsaWRpbmctaXRlbS1zdWZmaXggKG9uQ2xpY2spPVwic2xpZGluZ0l0ZW1zSGFuZGxlcihpdGVtLCAnZGVsZXRlJylcIiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtdHJhc2gtY2FuIGZhLXhsXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LXNsaWRpbmctaXRlbS1zdWZmaXg+XG4gICAgICA8L2F4LXNsaWRpbmctaXRlbT5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkZXNrdG9wIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtcC00IGF4LWl0ZW1zLWNlbnRlciBheC1yb3VuZGVkLW1kIGF4LWN1cnNvci1wb2ludGVyIGhvdmVyOmF4LWJnLXN1cmZhY2UgYXgtbWItMiBsYXN0OmF4LW1iLTBcIlxuICAgICAgICBbY2xhc3MuYXgtYmctbGlnaHRlcl09XCJpc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAoY2xpY2spPVwib3Blbkl0ZW0oaXRlbS5pZClcIlxuICAgICAgICAoY29udGV4dG1lbnUpPVwib3BlbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSlcIlxuICAgICAgPlxuICAgICAgICA8IS0tIEBpZiAoaXNTZWxlY3RlZChpdGVtLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdy0xIGF4LXNlbGYtc3RyZXRjaCBheC1yb3VuZGVkIGF4LWJnLXByaW1hcnlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgIDwhLS0gU2VsZWN0IHZpYSBjaGVja2JveCAtLT5cbiAgICAgICAgQGlmIChpc0VkaXRpbmcoKSkge1xuICAgICAgICAgICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1tdC0xXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25XaXRoTW9kZWwoaXRlbS5pZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+PC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwhLS0gQXZhdGFyICsgVW5yZWFkIERvdCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJlbGF0aXZlIGF4LXctMTIgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8YXhwLXVzZXItYXZhdGFyIFtzaXplXT1cIjQ4XCIgW3VzZXJJZF09XCJpdGVtLnNlbmRlci5pZFwiPjwvYXhwLXVzZXItYXZhdGFyPlxuICAgICAgICAgIEBpZiAoIWl0ZW0ucmVhZEF0KSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWFic29sdXRlIGF4LXJpZ2h0LTAgYXgtdG9wLTAgYXgtYmxvY2sgYXgtaC0zIGF4LXctMyBheC1yb3VuZGVkLWZ1bGxcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LWZsZXgtMSBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW1cIiBbY2xhc3MuYXgtZm9udC1zZW1pYm9sZF09XCIhaXRlbS5yZWFkQXRcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnNlbmRlci5mdWxsTmFtZSB8fCBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3Bhbj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhzIGF4LW9wYWNpdHktNzVcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmNyZWF0ZUF0IHwgZm9ybWF0OiAndGltZWxlZnQnIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC1saW5lLWNsYW1wLTJcIj57eyBpdGVtLmJvZHkgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQWN0aW9ucyAoZnV0dXJlOiBwZXItaXRlbSBrZWJhYikgLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxheC1jb250ZXh0LW1lbnVcbiAgICAgICNjb250ZXh0TWVudVxuICAgICAgW29wZW5Pbl09XCInY2xpY2snXCJcbiAgICAgIFtjbG9zZU9uXT1cIidjbGljaydcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIidob3Jpem9udGFsJ1wiXG4gICAgICAob25PcGVuaW5nKT1cImhhbmRsZUNvbnRleHRNZW51T3BlbmluZygkZXZlbnQpXCJcbiAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9heC1jb250ZXh0LW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1Ob3RpZmljYXRpb25QYWdlQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnKGRvY3VtZW50OmtleWRvd24uZXNjYXBlKSc6ICdkZXNlbGVjdEFsbCgpJyxcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEZvcm1hdE1vZHVsZSxcbiAgICBBWENoZWNrQm94TW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhQVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWFNsaWRpbmdJdGVtTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Ob3RpZmljYXRpb25QYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXRUaGVtZVNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0b3IgPSBpbmplY3QoQVhNTm90aWZpY2F0aW9uQ29ubmVjdG9yU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvblNlcnZpY2UgPSBpbmplY3QoQVhQTm90aWZpY2F0aW9uRGVmaW5pdGlvblNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgJiBDb21wdXRlZCBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHJlYWRvbmx5IGxvYWRpbmcgPSB0aGlzLmNvbm5lY3Rvci5sb2FkaW5nO1xuICByZWFkb25seSBlcnJvck1lc3NhZ2UgPSB0aGlzLmNvbm5lY3Rvci5lcnJvck1lc3NhZ2U7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnMgPSB0aGlzLmNvbm5lY3Rvci5ub3RpZmljYXRpb25MaXN0O1xuICByZWFkb25seSB1bnJlYWRDb3VudCA9IHRoaXMuY29ubmVjdG9yLnVucmVhZENvdW50O1xuICByZWFkb25seSB0b3RhbENvdW50ID0gdGhpcy5jb25uZWN0b3IudG90YWw7XG5cbiAgLy8gTG9jYWwgVUkgc3RhdGVcbiAgcmVhZG9ubHkgc2VhcmNoUXVlcnkgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgaXNFZGl0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGNvbnRleHRNZW51ID0gdmlld0NoaWxkPEFYQ29udGV4dE1lbnVDb21wb25lbnQ+KCdjb250ZXh0TWVudScpO1xuICAvLyAjaXNFZGl0aW5nRWZmID0gZWZmZWN0KCgpID0+IHtcbiAgLy8gaWYgKHRoaXMuaXNFZGl0aW5nKCkgJiYgdGhpcy5zZWxlY3RlZElkcygpLnNpemUgPT09IDApIHtcbiAgLy8gICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAvLyB9XG4gIC8vIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9ICh0aGlzLnNlYXJjaFF1ZXJ5KCkgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5ub3RpZmljYXRpb25zKCk7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVGFiKCkgPT09ICd1bnJlYWQnID8gaXRlbXMuZmlsdGVyKChuKSA9PiAhbi5yZWFkQXQpIDogaXRlbXM7XG4gICAgfVxuICAgIGNvbnN0IGJhc2UgPSB0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJyA/IGl0ZW1zLmZpbHRlcigobikgPT4gIW4ucmVhZEF0KSA6IGl0ZW1zO1xuICAgIHJldHVybiBiYXNlLmZpbHRlcigobikgPT4ge1xuICAgICAgY29uc3QgdGl0bGUgPSAobi50aXRsZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGJvZHkgPSAobi5ib2R5IHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3Qgc2VuZGVyID0gKG4uc2VuZGVyPy5mdWxsTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB0aXRsZS5pbmNsdWRlcyhxdWVyeSkgfHwgYm9keS5pbmNsdWRlcyhxdWVyeSkgfHwgc2VuZGVyLmluY2x1ZGVzKHF1ZXJ5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVGFiIHN0YXRlOiAnYWxsJyB8ICd1bnJlYWQnXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFiID0gc2lnbmFsPCdhbGwnIHwgJ3VucmVhZCc+KCdhbGwnKTtcbiAgcmVhZG9ubHkgYWN0aXZlVGFiID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50YWIoKSk7XG4gIHNlbGVjdGVkVGFiKCk6ICdhbGwnIHwgJ3VucmVhZCcge1xuICAgIHJldHVybiB0aGlzLnRhYigpO1xuICB9XG4gIHNldFRhYih2OiAnYWxsJyB8ICd1bnJlYWQnKTogdm9pZCB7XG4gICAgdGhpcy50YWIuc2V0KHYpO1xuICB9XG5cbiAgb25UYWJDaGFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudGFiLnNldChpbmRleCA9PT0gMSA/ICd1bnJlYWQnIDogJ2FsbCcpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQYWdlIEludGVyZmFjZSBNZXRob2RzICAgLS0tLVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAnTm90aWZpY2F0aW9ucyc7XG4gIH1cblxuICBvdmVycmlkZSBnZXRQYWdlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bnJlYWQgPSB0aGlzLnVucmVhZENvdW50KCk7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsQ291bnQoKTtcbiAgICBpZiAoIXRvdGFsKSB7XG4gICAgICByZXR1cm4gJ05vIG5vdGlmaWNhdGlvbnMnO1xuICAgIH1cbiAgICByZXR1cm4gdW5yZWFkID4gMCA/IGAke3VucmVhZH0gdW5yZWFkIG91dCBvZiAke3RvdGFsfWAgOiBgJHt0b3RhbH0gbm90aWZpY2F0aW9uc2A7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQcmltYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWFBBY3Rpb25NZW51SXRlbVtdID0gW107XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudCgpID4gMCkge1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnRGVsZXRlJyxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRyYXNoJyxcbiAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnZGVsZXRlLXNlbGVjdGVkJyB9LFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICB9KTtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICB0aXRsZTogJ01hcmsgYXMgcmVhZCcsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1lbnZlbG9wZXMtYnVsaycsXG4gICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ21hcmstc2VsZWN0ZWQtYXMtcmVhZCcgfSxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgY29uc3QgaXRlbXM6IEFYUEFjdGlvbk1lbnVJdGVtW10gPSBbXTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvdW50KCkgPT09IDApIHtcbiAgICAgIGl0ZW1zLnB1c2goXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ1JlZnJlc2gnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1yb3RhdGUnLFxuICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ3JlZnJlc2gnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ01hcmsgYWxsIGFzIHJlYWQnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1lbnZlbG9wZXMtYnVsaycsXG4gICAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnbWFyay1hbGwtYXMtcmVhZCcgfSxcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy51bnJlYWRDb3VudCgpID09PSAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdTZWxlY3QgaXRlbXMnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1wZW4nLFxuICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ2VkaXQtbW9kZScgfSxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29tbWFuZDogQVhQRXhlY3V0ZUNvbW1hbmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQubmFtZSkge1xuICAgICAgY2FzZSAncmVmcmVzaCc6XG4gICAgICAgIGF3YWl0IHRoaXMub25SZWZyZXNoKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZS1zZWxlY3RlZCc6XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2VsZWN0ZWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWFyay1zZWxlY3RlZC1hcy1yZWFkJzpcbiAgICAgICAgYXdhaXQgdGhpcy5tYXJrU2VsZWN0ZWRBc1JlYWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWFyay1hbGwtYXMtcmVhZCc6XG4gICAgICAgIGF3YWl0IHRoaXMub25NYXJrQWxsQXNSZWFkKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VkaXQtbW9kZSc6XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICAgICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgVUkgSGFuZGxlcnMgICAtLS0tXG5cbiAgb25TZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIG9uQ2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQoJycpO1xuICB9XG5cbiAgYXN5bmMgb25SZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldExpc3QoKTtcbiAgfVxuXG4gIGFzeW5jIG9uTWFya0FsbEFzUmVhZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5tYXJrQWxsQXNSZWFkKCk7XG4gIH1cblxuICAvLyBTZWxlY3Rpb24gc3RhdGUgZm9yIGJ1bGsgYWN0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkSWRzID0gc2lnbmFsPFNldDxzdHJpbmc+PihuZXcgU2V0PHN0cmluZz4oKSk7XG5cbiAgc2VsZWN0ZWRDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJZHMoKS5zaXplKTtcbiAgaXNTZWxlY3RlZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJZHMoKS5oYXMoaWQpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0aW9uV2l0aE1vZGVsKGlkOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkSWRzKCkpO1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXh0LmFkZChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuZGVsZXRlKGlkKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV4dCk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5maWx0ZXJlZE5vdGlmaWNhdGlvbnMoKTtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMCAmJiBpdGVtcy5ldmVyeSgoaSkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmhhcyhpLmlkKSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCh0aGlzLmZpbHRlcmVkTm90aWZpY2F0aW9ucygpLm1hcCgoaSkgPT4gaS5pZCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCgpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYXJrU2VsZWN0ZWRBc1JlYWQoaXRlbT86IEFYTU5vdGlmaWNhdGlvbkl0ZW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZHMgPSBpdGVtID8gW2l0ZW0uaWRdIDogQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkSWRzKCkpO1xuICAgIGlmIChpZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5jb25uZWN0b3IubWFya0FzUmVhZCh7IGlkOiBpZHMgfSk7XG4gICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCgpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlbGVjdGVkKGl0ZW0/OiBBWE1Ob3RpZmljYXRpb25JdGVtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRzID0gaXRlbSA/IFtpdGVtLmlkXSA6IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZElkcygpKTtcbiAgICBpZiAoaWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5kZWxldGVPbmUoaWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXcgU2V0KCkpO1xuICB9XG5cbiAgZGVzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudCgpID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUm93IGludGVyYWN0aW9uc1xuICBvblJvd0NsaWNrKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkJ5SWQoaWQpO1xuICB9XG5cbiAgYXN5bmMgb3Blbkl0ZW0oaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkJ5SWQoaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL2F2b2lkIGRvdWJsZSBjbGljayBvbiBzZWxlY3RlZCBpdGVtc1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnQoKSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXRlbSA9IHRoaXMubm90aWZpY2F0aW9ucygpLmZpbmQoKG4pID0+IG4uaWQgPT09IGlkKTtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gTWFyayBhcyByZWFkIChpZGVtcG90ZW50IHBlciBzZXJ2aWNlIGxvZ2ljKVxuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLm1hcmtBc1JlYWQoeyBpZDogW2lkXSB9KTtcblxuICAgIC8vIEV4ZWN1dGUgcHJvdmlkZXIgY2xpY2sgYWN0aW9uIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5kZWZpbml0aW9uU2VydmljZS5yZXNvbHZlKGl0ZW0udHlwZSk7XG4gICAgYXdhaXQgcHJvdmlkZXI/LmV4ZWN1dGU/Lih7IG5hbWU6ICdjbGljaycgfSBhcyBBWFBFeGVjdXRlQ29tbWFuZCwgaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVNlbGVjdGlvbkJ5SWQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRJZHMoKSk7XG4gICAgaWYgKG5leHQuaGFzKGlkKSkge1xuICAgICAgbmV4dC5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0LmFkZChpZCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc2V0KG5leHQpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgc2xpZGluZ0l0ZW1zSGFuZGxlcihpdGVtOiBBWE1Ob3RpZmljYXRpb25JdGVtLCBhY3Rpb246ICdtYXJrLWFzLXJlYWQnIHwgJ2RlbGV0ZScpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnbWFyay1hcy1yZWFkJzpcbiAgICAgICAgdGhpcy5tYXJrU2VsZWN0ZWRBc1JlYWQoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soZTogQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCkge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRleHRJdGVtKCk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZS5pdGVtLm5hbWUpIHtcbiAgICAgIGNhc2UgJ21hcmstYXMtcmVhZCc6XG4gICAgICAgIHRoaXMubWFya1NlbGVjdGVkQXNSZWFkKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlU2VsZWN0ZWQoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBoYW5kbGVDb250ZXh0TWVudU9wZW5pbmcoZTogQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCkge1xuICAgIGUuaXRlbXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtYXJrLWFzLXJlYWQnLFxuICAgICAgICB0ZXh0OiAnTWFyayBhcyByZWFkJyxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWVudmVsb3Blcy1idWxrJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBlLml0ZW1zLnB1c2goe1xuICAgICAgbmFtZTogJ2RlbGV0ZScsXG4gICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS10cmFzaC1jYW4nLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgIH0pO1xuICB9XG4gIHByb3RlY3RlZCBjb250ZXh0SXRlbSA9IHNpZ25hbDxBWE1Ob3RpZmljYXRpb25JdGVtIHwgbnVsbD4obnVsbCk7XG4gIG9wZW5Db250ZXh0TWVudShlOiBNb3VzZUV2ZW50LCBpdGVtOiBBWE1Ob3RpZmljYXRpb25JdGVtKSB7XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkgfHwgdGhpcy5zZWxlY3RlZENvdW50KCkgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmNvbnRleHRNZW51KCk/LnNob3dBdCh7XG4gICAgICB4OiBlLmNsaWVudFgsXG4gICAgICB5OiBlLmNsaWVudFksXG4gICAgfSk7XG4gICAgdGhpcy5jb250ZXh0SXRlbS5zZXQoaXRlbSk7XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzIGZvciBTdGF0ZSBNZXNzYWdlICAgLS0tLVxuXG4gIGdldE5vdGlmaWNhdGlvbkljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWFyY2hRdWVyeSgpKSB7XG4gICAgICByZXR1cm4gJ2ZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3MnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUYWIoKSA9PT0gJ3VucmVhZCcpIHtcbiAgICAgIHJldHVybiAnZmEtc29saWQgZmEtY2hlY2stY2lyY2xlJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdmYS1zb2xpZCBmYS1iZWxsJztcbiAgICB9XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25UaXRsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlYXJjaFF1ZXJ5KCkpIHtcbiAgICAgIHJldHVybiAnQG5vdGlmaWNhdGlvbi1tYW5hZ2VtZW50OnN0YXRlLW1lc3NhZ2Uubm8tcmVzdWx0cy50aXRsZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5hbGwtY2F1Z2h0LXVwLnRpdGxlJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5uby1ub3RpZmljYXRpb25zLnRpdGxlJztcbiAgICB9XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25EZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlYXJjaFF1ZXJ5KCkpIHtcbiAgICAgIHJldHVybiBgV2UgY291bGRuJ3QgZmluZCBhbnl0aGluZyBtYXRjaGluZyBcIiR7dGhpcy5zZWFyY2hRdWVyeSgpfVwiLmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5hbGwtY2F1Z2h0LXVwLmRlc2NyaXB0aW9uJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5uby1ub3RpZmljYXRpb25zLmRlc2NyaXB0aW9uJztcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ=="],"names":["i1","i2","i7","i12"],"mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,+BAA+B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EA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"}