@acorex/platform 21.0.0-next.3 → 21.0.0-next.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-auth.mjs +295 -45
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-zhqNP3xb.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +60 -4
- package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +960 -319
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1352 -832
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +554 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +530 -154
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +5969 -2347
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +169 -154
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +15380 -9274
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +393 -110
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +511 -450
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs} +39 -16
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs +111 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +7865 -4026
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +8 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +220 -169
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs} +18 -25
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +1717 -66
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs} +11 -11
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs} +9 -9
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +563 -561
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +1735 -1750
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +31 -31
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +247 -10
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +492 -31
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +606 -392
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +719 -413
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +128 -56
- package/types/acorex-platform-layout-components.d.ts +2927 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +9 -3
- package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1133 -237
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +90 -31
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +206 -102
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +942 -137
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/{runtime/index.d.ts → types/acorex-platform-runtime.d.ts} +237 -74
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -5
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
- package/types/acorex-platform-workflow.d.ts +1806 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +0 -1542
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
- package/layout/components/index.d.ts +0 -1669
- package/workflow/index.d.ts +0 -2443
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-themes-default.mjs","sources":["../tmp-esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/components/footer/footer.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/components/side-menu/side-menu.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/horizontal/horizontal-layout.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/vertical/vertical-layout.component.js","../tmp-esm2022/themes/default/lib/layouts/root-layout/root-layout.component.js","../tmp-esm2022/themes/default/lib/entity-reuse.strategy.js","../tmp-esm2022/themes/default/lib/default.module.js","../tmp-esm2022/themes/default/acorex-platform-themes-default.js"],"sourcesContent":["import { AXActionSheetModule, AXActionSheetService } from '@acorex/components/action-sheet';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataTableComponent, AXDataTableModule, } from '@acorex/components/data-table';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPEntityDetailListViewModel } from '@acorex/platform/layout/entity';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsModule } from '@acorex/platform/layout/widgets';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, computed, effect, inject, signal, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/action-sheet\";\nimport * as i2 from \"@acorex/core/utils\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@acorex/components/dropdown\";\nimport * as i6 from \"@acorex/components/search-box\";\nimport * as i7 from \"@acorex/components/data-table\";\nimport * as i8 from \"@acorex/platform/layout/widget-core\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"@acorex/core/translation\";\nexport class AXPEntityDetailListViewComponent {\n constructor(actionSheetService, unsubscriber) {\n this.actionSheetService = actionSheetService;\n this.unsubscriber = unsubscriber;\n this.workflow = inject(AXPWorkflowService);\n this.store = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.toolbarPrimaryActions = signal([], ...(ngDevMode ? [{ debugName: \"toolbarPrimaryActions\" }] : []));\n this.toolbarSecondaryActions = signal([], ...(ngDevMode ? [{ debugName: \"toolbarSecondaryActions\" }] : []));\n this.destroyed = new Subject();\n this.dropdownRowItems = computed(() => {\n return this.vm.secondaryRowActions().map((c) => ({\n icon: c.icon,\n name: c.name,\n text: c.title,\n color: c.color,\n }));\n }, ...(ngDevMode ? [{ debugName: \"dropdownRowItems\" }] : []));\n this.commandRowItems = computed(() => {\n return this.vm.primaryRowActions().map((c) => {\n return {\n icon: c.icon,\n name: c.name,\n text: c.title,\n color: c.color,\n };\n });\n }, ...(ngDevMode ? [{ debugName: \"commandRowItems\" }] : []));\n this.getCommandRowItems = () => {\n return this.commandRowItems();\n };\n this.getDropdownRowItems = (rowData) => {\n return Promise.resolve(this.dropdownRowItems());\n };\n effect(() => {\n this.grid.selectedRows = this.vm.selectedItems();\n // Re-evaluate toolbar actions whenever selection changes\n this.refreshToolbarActions();\n });\n this.subscribeActionEvents();\n }\n handleChangeSearchValue(e) {\n if (e.isUserInteraction) {\n this.vm.applyInlineFilter(e.value);\n }\n }\n subscribeActionEvents() {\n this.workflow.events$\n .pipe(ofType(AXPRefreshEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n console.log(event);\n this.grid.refresh({\n reset: false,\n });\n // Re-evaluate toolbar actions after refresh events\n this.refreshToolbarActions();\n });\n }\n ngAfterViewInit() {\n // this.grid.refresh();\n this.refreshToolbarActions();\n }\n async handleRowDbClick(e) {\n const allItems = [...this.commandRowItems(), ...this.dropdownRowItems()];\n // const defaultAction = allItems.find((c) => (c as any).default) || allItems[0];\n const defaultAction = allItems.find((c) => c.default);\n if (!defaultAction) {\n return;\n }\n const d = {\n component: e.component,\n name: defaultAction.name,\n data: e.data,\n };\n this.handleRowCommandClick(d);\n }\n async handleSelectedRowsChange(rows) {\n this.vm.selectedItems.set(rows);\n }\n async handleRowCommandClick(e) {\n this.vm.executeCommand(e.name, e.data);\n }\n async refreshToolbarActions() {\n const [primary, secondary] = await Promise.all([this.vm.getPrimaryActions(), this.vm.getSecondaryActions()]);\n this.toolbarPrimaryActions.set(primary);\n this.toolbarSecondaryActions.set(secondary);\n }\n destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n ngOnDestroy() {\n this.destroy();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPEntityDetailListViewComponent, deps: [{ token: i1.AXActionSheetService }, { token: i2.AXUnsubscriber }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPEntityDetailListViewComponent, isStandalone: true, selector: \"axp-entity-detail-list-view\", inputs: { vm: [\"viewModel\", \"vm\"] }, providers: [AXUnsubscriber], viewQueries: [{ propertyName: \"grid\", first: true, predicate: [\"grid\"], descendants: true, static: true }], ngImport: i0, template: \"<div class=\\\"ax-flex ax-p-2\\\">\\n <div class=\\\"ax-flex ax-flex-col ax-items-end ax-gap-3 ax-flex-1 ax-overflow-auto ax-min-h-72\\\">\\n <div class=\\\"ax-flex ax-justify-between ax-items-center ax-w-full\\\">\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <div class=\\\"ax-flex ax-justify-start ax-items-center ax-gap-4\\\">\\n @if (vm.hasSelectedItems()) {\\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.selectedItems().length }}\\n {{ '@general:terms.items-selected' | translate | async }}\\n </span>\\n <span\\n (click)=\\\"vm.clearSelection()\\\"\\n class=\\\"ax-text-sm ax-text-primary-500 ax-underline ax-cursor-pointer\\\"\\n >{{ '@general:actions.unselect.title' | translate | async }}</span\\n >\\n </div>\\n } @else {\\n @if (vm.hasInlineFilters() && !deviceService.isSmall()) {\\n <div class=\\\"ax-w-72\\\">\\n <ax-search-box\\n [placeholder]=\\\"\\n ('@general:widgets.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\\n \\\"\\n (onValueChanged)=\\\"handleChangeSearchValue($event)\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n </div>\\n }\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-3\\\">\\n @for (tr of toolbarPrimaryActions(); track $index) {\\n <ax-button\\n [text]=\\\"(tr.title | translate | async)!\\\"\\n [color]=\\\"tr.color\\\"\\n [disabled]=\\\"tr.disabled\\\"\\n (onClick)=\\\"vm.executeCommand(tr.name)\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"tr.icon\\\"> </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }\\n @if (toolbarSecondaryActions().length) {\\n <ax-button\\n [text]=\\\"deviceService.isSmall() ? null : ('@general:terms.interface.actions' | translate | async)\\\"\\n [color]=\\\"'default'\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-solid fa-ellipsis-vertical\\\"></i>\\n </ax-prefix>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n @for (tr of toolbarSecondaryActions(); track $index) {\\n <ng-container>\\n @if (tr.separated && !$first) {\\n <ax-divider></ax-divider>\\n }\\n <ax-button-item\\n [text]=\\\"(tr.title | translate | async)!\\\"\\n class=\\\"ax-font-semibold ax-text-{{ tr.color }}\\\"\\n (onClick)=\\\"vm.executeCommand(tr.name)\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"tr.icon\\\"> </ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ng-container>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </div>\\n </div>\\n\\n <div class=\\\"ax-flex ax-flex-1 ax-pt-0 ax-overflow-auto ax-max-w-full\\\">\\n <ax-data-table\\n #grid\\n [showFooter]=\\\"false\\\"\\n class=\\\"ax-flex-1\\\"\\n [paging]=\\\"true\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [parentField]=\\\"vm.parentKey()\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n [dataSource]=\\\"vm.dataSource\\\"\\n (selectedRowsChange)=\\\"handleSelectedRowsChange($event)\\\"\\n (onRowDbClick)=\\\"handleRowDbClick($event)\\\"\\n >\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.selectedScopeActionsCount()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (col of vm.columns(); track col.name) {\\n @if (col.visible) {\\n <axp-widget-column-renderer\\n [expandHandler]=\\\"$index === 0 && vm.parentKey() ? true : false\\\"\\n [caption]=\\\"(col.title | translate | async)!\\\"\\n [node]=\\\"col.node()\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (getCommandRowItems().length) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"getCommandRowItems().length * 60 + 'px'\\\"\\n [items]=\\\"getCommandRowItems()\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (dropdownRowItems().length) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"getDropdownRowItems\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n </ax-data-table>\\n </div>\\n </div>\\n</div>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.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: i3.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i3.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { 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: AXBadgeModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i5.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXActionSheetModule }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"ngmodule\", type: AXDialogModule }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"ngmodule\", type: AXTooltipModule }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i6.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: AXDataTableModule }, { kind: \"component\", type: i7.AXDataTableComponent, selector: \"ax-data-table\", inputs: [\"dataSource\", \"selectedRows\", \"parentField\", \"rowDetailsTemplate\", \"rowTemplate\", \"emptyTemplate\", \"noDataTemplate\", \"alternative\", \"showHeader\", \"fixedHeader\", \"showFooter\", \"fixedFooter\", \"itemHeight\", \"allowReordering\", \"paging\", \"fetchDataMode\", \"loading\", \"focusedRow\"], outputs: [\"selectedRowsChange\", \"focusedRowChange\", \"onRowClick\", \"onRowDbClick\", \"onColumnsOrderChanged\", \"onColumnSizeChanged\", \"onPageChanged\"] }, { kind: \"component\", type: i7.AXRowIndexColumnComponent, selector: \"ax-index-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"padZero\"] }, { kind: \"component\", type: i7.AXRowSelectColumnComponent, selector: \"ax-select-column\", inputs: [\"width\", \"caption\", \"fixed\"] }, { kind: \"component\", type: i7.AXRowCommandColumnComponent, selector: \"ax-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: i7.AXRowDropdownCommandColumnComponent, selector: \"ax-dropdown-command-column\", inputs: [\"width\", \"caption\", \"fixed\", \"footerTemplate\", \"emptyStateTemplate\", \"emptyStateText\", \"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: \n //\n AXPWidgetCoreModule }, { kind: \"component\", type: i8.AXPWidgetColumnRendererComponent, selector: \"axp-widget-column-renderer\", inputs: [\"caption\", \"customExpandIcon\", \"customCollapseIcon\", \"customWidth\", \"node\", \"footerTemplate\", \"expandHandler\", \"cellTemplate\", \"headerTemplate\"] }, { kind: \"ngmodule\", type: AXPWidgetsModule }, { kind: \"ngmodule\", type: AXPAuthModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i9.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i10.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: AXPEntityDetailListViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-entity-detail-list-view', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [AXUnsubscriber], imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n AXButtonModule,\n AXDecoratorModule,\n AXBadgeModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXTooltipModule,\n AXBreadcrumbsModule,\n AXSearchBoxModule,\n AXDataTableModule,\n //\n AXPWidgetCoreModule,\n AXPWidgetsModule,\n AXPAuthModule,\n AXTranslationModule,\n ], template: \"<div class=\\\"ax-flex ax-p-2\\\">\\n <div class=\\\"ax-flex ax-flex-col ax-items-end ax-gap-3 ax-flex-1 ax-overflow-auto ax-min-h-72\\\">\\n <div class=\\\"ax-flex ax-justify-between ax-items-center ax-w-full\\\">\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <div class=\\\"ax-flex ax-justify-start ax-items-center ax-gap-4\\\">\\n @if (vm.hasSelectedItems()) {\\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.selectedItems().length }}\\n {{ '@general:terms.items-selected' | translate | async }}\\n </span>\\n <span\\n (click)=\\\"vm.clearSelection()\\\"\\n class=\\\"ax-text-sm ax-text-primary-500 ax-underline ax-cursor-pointer\\\"\\n >{{ '@general:actions.unselect.title' | translate | async }}</span\\n >\\n </div>\\n } @else {\\n @if (vm.hasInlineFilters() && !deviceService.isSmall()) {\\n <div class=\\\"ax-w-72\\\">\\n <ax-search-box\\n [placeholder]=\\\"\\n ('@general:widgets.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\\n \\\"\\n (onValueChanged)=\\\"handleChangeSearchValue($event)\\\"\\n ><ax-clear-button></ax-clear-button\\n ></ax-search-box>\\n </div>\\n }\\n }\\n </div>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-3\\\">\\n @for (tr of toolbarPrimaryActions(); track $index) {\\n <ax-button\\n [text]=\\\"(tr.title | translate | async)!\\\"\\n [color]=\\\"tr.color\\\"\\n [disabled]=\\\"tr.disabled\\\"\\n (onClick)=\\\"vm.executeCommand(tr.name)\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"tr.icon\\\"> </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }\\n @if (toolbarSecondaryActions().length) {\\n <ax-button\\n [text]=\\\"deviceService.isSmall() ? null : ('@general:terms.interface.actions' | translate | async)\\\"\\n [color]=\\\"'default'\\\"\\n >\\n <ax-prefix>\\n <i class=\\\"fa-solid fa-ellipsis-vertical\\\"></i>\\n </ax-prefix>\\n <ax-dropdown-panel>\\n <ax-button-item-list>\\n @for (tr of toolbarSecondaryActions(); track $index) {\\n <ng-container>\\n @if (tr.separated && !$first) {\\n <ax-divider></ax-divider>\\n }\\n <ax-button-item\\n [text]=\\\"(tr.title | translate | async)!\\\"\\n class=\\\"ax-font-semibold ax-text-{{ tr.color }}\\\"\\n (onClick)=\\\"vm.executeCommand(tr.name)\\\"\\n >\\n <ax-prefix>\\n <ax-icon [icon]=\\\"tr.icon\\\"> </ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ng-container>\\n }\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n }\\n </div>\\n </div>\\n\\n <div class=\\\"ax-flex ax-flex-1 ax-pt-0 ax-overflow-auto ax-max-w-full\\\">\\n <ax-data-table\\n #grid\\n [showFooter]=\\\"false\\\"\\n class=\\\"ax-flex-1\\\"\\n [paging]=\\\"true\\\"\\n [fetchDataMode]=\\\"'manual'\\\"\\n [parentField]=\\\"vm.parentKey()\\\"\\n [loading]=\\\"{ enabled: true, animation: true }\\\"\\n [dataSource]=\\\"vm.dataSource\\\"\\n (selectedRowsChange)=\\\"handleSelectedRowsChange($event)\\\"\\n (onRowDbClick)=\\\"handleRowDbClick($event)\\\"\\n >\\n <ax-index-column fixed=\\\"start\\\" [width]=\\\"'80px'\\\" [padZero]=\\\"true\\\"></ax-index-column>\\n @if (vm.selectedScopeActionsCount()) {\\n <ax-select-column fixed=\\\"start\\\" [width]=\\\"'50px'\\\"></ax-select-column>\\n }\\n @for (col of vm.columns(); track col.name) {\\n @if (col.visible) {\\n <axp-widget-column-renderer\\n [expandHandler]=\\\"$index === 0 && vm.parentKey() ? true : false\\\"\\n [caption]=\\\"(col.title | translate | async)!\\\"\\n [node]=\\\"col.node()\\\"\\n ></axp-widget-column-renderer>\\n }\\n }\\n @if (getCommandRowItems().length) {\\n <ax-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"getCommandRowItems().length * 60 + 'px'\\\"\\n [items]=\\\"getCommandRowItems()\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-command-column>\\n }\\n @if (dropdownRowItems().length) {\\n <ax-dropdown-command-column\\n fixed=\\\"end\\\"\\n [width]=\\\"'60px'\\\"\\n [items]=\\\"getDropdownRowItems\\\"\\n (onItemClick)=\\\"handleRowCommandClick($event)\\\"\\n ></ax-dropdown-command-column>\\n }\\n </ax-data-table>\\n </div>\\n </div>\\n</div>\\n\" }]\n }], ctorParameters: () => [{ type: i1.AXActionSheetService }, { type: i2.AXUnsubscriber }], propDecorators: { vm: [{\n type: Input,\n args: ['viewModel']\n }], grid: [{\n type: ViewChild,\n args: ['grid', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LWRldGFpbC1saXN0LXZpZXcvZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LWRldGFpbC1saXN0LXZpZXcvZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUlsQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxl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Q0FBQyxjQUFjLENBQUMsV0FDbEI7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsRUFBRTt3QkFDRixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCOztzQkFVQSxLQUFLO3VCQUFDLFdBQVc7O3NCQUtqQixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQWN0aW9uU2hlZXRNb2R1bGUsIEFYQWN0aW9uU2hlZXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gIEFYRGF0YVRhYmxlQ29tcG9uZW50LFxuICBBWERhdGFUYWJsZU1vZHVsZSxcbiAgQVhEYXRhVGFibGVSb3dEYkNsaWNrLFxuICBBWFJvd0NvbW1hbmRJdGVtLFxuICBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERpYWxvZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEFYUEF1dGhNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQUmVmcmVzaEV2ZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRGV2aWNlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCwgQVhQRW50aXR5RGV0YWlsTGlzdFZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldHMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSwgb2ZUeXBlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1lbnRpdHktZGV0YWlsLWxpc3QtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnZW50aXR5LWRldGFpbC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbQVhVbnN1YnNjcmliZXJdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhQb3BvdmVyTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWEFjdGlvblNoZWV0TW9kdWxlLFxuICAgIEFYRHJhd2VyTW9kdWxlLFxuICAgIEFYRGlhbG9nTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhUb29sdGlwTW9kdWxlLFxuICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhEYXRhVGFibGVNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgIEFYUFdpZGdldHNNb2R1bGUsXG4gICAgQVhQQXV0aE1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgd29ya2Zsb3cgPSBpbmplY3QoQVhQV29ya2Zsb3dTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG4gIHByb3RlY3RlZCBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KEFYUERldmljZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB0b29sYmFyUHJpbWFyeUFjdGlvbnMgPSBzaWduYWw8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oW10pO1xuICBwcm90ZWN0ZWQgdG9vbGJhclNlY29uZGFyeUFjdGlvbnMgPSBzaWduYWw8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oW10pO1xuXG4gIEBJbnB1dCgndmlld01vZGVsJylcbiAgdm06IEFYUEVudGl0eURldGFpbExpc3RWaWV3TW9kZWw7XG5cbiAgcHJvdGVjdGVkIGZvY3VzZWRSb3c6IGFueTtcbiAgLy9cbiAgQFZpZXdDaGlsZCgnZ3JpZCcsIHsgc3RhdGljOiB0cnVlIH0pIGdyaWQ6IEFYRGF0YVRhYmxlQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aW9uU2hlZXRTZXJ2aWNlOiBBWEFjdGlvblNoZWV0U2VydmljZSxcbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlcjogQVhVbnN1YnNjcmliZXIsXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzID0gdGhpcy52bS5zZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAvLyBSZS1ldmFsdWF0ZSB0b29sYmFyIGFjdGlvbnMgd2hlbmV2ZXIgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICAgIHRoaXMucmVmcmVzaFRvb2xiYXJBY3Rpb25zKCk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpYmVBY3Rpb25FdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBoYW5kbGVDaGFuZ2VTZWFyY2hWYWx1ZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMudm0uYXBwbHlJbmxpbmVGaWx0ZXIoZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmliZUFjdGlvbkV2ZW50cygpIHtcbiAgICB0aGlzLndvcmtmbG93LmV2ZW50cyRcbiAgICAgIC5waXBlKG9mVHlwZShBWFBSZWZyZXNoRXZlbnQpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLnJlZnJlc2goe1xuICAgICAgICAgIHJlc2V0OiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFJlLWV2YWx1YXRlIHRvb2xiYXIgYWN0aW9ucyBhZnRlciByZWZyZXNoIGV2ZW50c1xuICAgICAgICB0aGlzLnJlZnJlc2hUb29sYmFyQWN0aW9ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGhpcy5ncmlkLnJlZnJlc2goKTtcbiAgICB0aGlzLnJlZnJlc2hUb29sYmFyQWN0aW9ucygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3Bkb3duUm93SXRlbXMgPSBjb21wdXRlZDxBWFJvd0NvbW1hbmRJdGVtW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy52bS5zZWNvbmRhcnlSb3dBY3Rpb25zKCkubWFwKFxuICAgICAgKGMpID0+XG4gICAgICAgICh7XG4gICAgICAgICAgaWNvbjogYy5pY29uLFxuICAgICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgICB0ZXh0OiBjLnRpdGxlLFxuICAgICAgICAgIGNvbG9yOiBjLmNvbG9yLFxuICAgICAgICB9KSBhcyBBWFJvd0NvbW1hbmRJdGVtLFxuICAgICk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBjb21tYW5kUm93SXRlbXMgPSBjb21wdXRlZDxBWFJvd0NvbW1hbmRJdGVtW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy52bS5wcmltYXJ5Um93QWN0aW9ucygpLm1hcCgoYykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWNvbjogYy5pY29uLFxuICAgICAgICBuYW1lOiBjLm5hbWUsXG4gICAgICAgIHRleHQ6IGMudGl0bGUsXG4gICAgICAgIGNvbG9yOiBjLmNvbG9yLFxuICAgICAgfSBhcyBBWFJvd0NvbW1hbmRJdGVtO1xuICAgIH0pO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUm93RGJDbGljayhlOiBBWERhdGFUYWJsZVJvd0RiQ2xpY2spIHtcbiAgICBjb25zdCBhbGxJdGVtcyA9IFsuLi50aGlzLmNvbW1hbmRSb3dJdGVtcygpLCAuLi50aGlzLmRyb3Bkb3duUm93SXRlbXMoKV07XG4gICAgLy8gY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFsbEl0ZW1zLmZpbmQoKGMpID0+IChjIGFzIGFueSkuZGVmYXVsdCkgfHwgYWxsSXRlbXNbMF07XG4gICAgY29uc3QgZGVmYXVsdEFjdGlvbiA9IGFsbEl0ZW1zLmZpbmQoKGMpID0+IChjIGFzIGFueSkuZGVmYXVsdCk7XG4gICAgaWYgKCFkZWZhdWx0QWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGQ6IEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiBlLmNvbXBvbmVudCxcbiAgICAgIG5hbWU6IGRlZmF1bHRBY3Rpb24ubmFtZSxcbiAgICAgIGRhdGE6IGUuZGF0YSxcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlUm93Q29tbWFuZENsaWNrKGQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvbW1hbmRSb3dJdGVtcyA9ICgpOiBBWFJvd0NvbW1hbmRJdGVtW10gPT4ge1xuICAgIHJldHVybiB0aGlzLmNvbW1hbmRSb3dJdGVtcygpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXREcm9wZG93blJvd0l0ZW1zID0gKHJvd0RhdGE6IHVua25vd24pOiBQcm9taXNlPEFYUm93Q29tbWFuZEl0ZW1bXT4gPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5kcm9wZG93blJvd0l0ZW1zKCkpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTZWxlY3RlZFJvd3NDaGFuZ2Uocm93czogdW5rbm93bltdKSB7XG4gICAgdGhpcy52bS5zZWxlY3RlZEl0ZW1zLnNldChyb3dzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVSb3dDb21tYW5kQ2xpY2soZTogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQpIHtcbiAgICB0aGlzLnZtLmV4ZWN1dGVDb21tYW5kKGUubmFtZSwgZS5kYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFRvb2xiYXJBY3Rpb25zKCkge1xuICAgIGNvbnN0IFtwcmltYXJ5LCBzZWNvbmRhcnldID0gYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMudm0uZ2V0UHJpbWFyeUFjdGlvbnMoKSwgdGhpcy52bS5nZXRTZWNvbmRhcnlBY3Rpb25zKCldKTtcbiAgICB0aGlzLnRvb2xiYXJQcmltYXJ5QWN0aW9ucy5zZXQocHJpbWFyeSk7XG4gICAgdGhpcy50b29sYmFyU2Vjb25kYXJ5QWN0aW9ucy5zZXQoc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LXAtMlwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1lbmQgYXgtZ2FwLTMgYXgtZmxleC0xIGF4LW92ZXJmbG93LWF1dG8gYXgtbWluLWgtNzJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyIGF4LXctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LXN0YXJ0IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtNFwiPlxuICAgICAgICAgIEBpZiAodm0uaGFzU2VsZWN0ZWRJdGVtcygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMyBheC1pdGVtcy1jZW50ZXIgYXgtaC0xMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAge3sgdm0uc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCB9fVxuICAgICAgICAgICAgICAgIHt7ICdAZ2VuZXJhbDp0ZXJtcy5pdGVtcy1zZWxlY3RlZCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZtLmNsZWFyU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LXByaW1hcnktNTAwIGF4LXVuZGVybGluZSBheC1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgPnt7ICdAZ2VuZXJhbDphY3Rpb25zLnVuc2VsZWN0LnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmICh2bS5oYXNJbmxpbmVGaWx0ZXJzKCkgJiYgIWRldmljZVNlcnZpY2UuaXNTbWFsbCgpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC13LTcyXCI+XG4gICAgICAgICAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgICAgICAgKCdAZ2VuZXJhbDp3aWRnZXRzLmxvb2t1cC5zZWFyY2gnIHwgdHJhbnNsYXRlIHwgYXN5bmMpICsgdm0uaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycygpLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PGF4LWNsZWFyLWJ1dHRvbj48L2F4LWNsZWFyLWJ1dHRvblxuICAgICAgICAgICAgICAgID48L2F4LXNlYXJjaC1ib3g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtM1wiPlxuICAgICAgICBAZm9yICh0ciBvZiB0b29sYmFyUHJpbWFyeUFjdGlvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgW3RleHRdPVwiKHRyLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgICBbY29sb3JdPVwidHIuY29sb3JcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRyLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJ0ci5pY29uXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAodG9vbGJhclNlY29uZGFyeUFjdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICBbdGV4dF09XCJkZXZpY2VTZXJ2aWNlLmlzU21hbGwoKSA/IG51bGwgOiAoJ0BnZW5lcmFsOnRlcm1zLmludGVyZmFjZS5hY3Rpb25zJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKVwiXG4gICAgICAgICAgICBbY29sb3JdPVwiJ2RlZmF1bHQnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgIEBmb3IgKHRyIG9mIHRvb2xiYXJTZWNvbmRhcnlBY3Rpb25zKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0ci5zZXBhcmF0ZWQgJiYgISRmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCIodHIudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC17eyB0ci5jb2xvciB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtMSBheC1wdC0wIGF4LW92ZXJmbG93LWF1dG8gYXgtbWF4LXctZnVsbFwiPlxuICAgICAgPGF4LWRhdGEtdGFibGVcbiAgICAgICAgI2dyaWRcbiAgICAgICAgW3Nob3dGb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICBjbGFzcz1cImF4LWZsZXgtMVwiXG4gICAgICAgIFtwYWdpbmddPVwidHJ1ZVwiXG4gICAgICAgIFtmZXRjaERhdGFNb2RlXT1cIidtYW51YWwnXCJcbiAgICAgICAgW3BhcmVudEZpZWxkXT1cInZtLnBhcmVudEtleSgpXCJcbiAgICAgICAgW2xvYWRpbmddPVwieyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVwiXG4gICAgICAgIFtkYXRhU291cmNlXT1cInZtLmRhdGFTb3VyY2VcIlxuICAgICAgICAoc2VsZWN0ZWRSb3dzQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uUm93RGJDbGljayk9XCJoYW5kbGVSb3dEYkNsaWNrKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8YXgtaW5kZXgtY29sdW1uIGZpeGVkPVwic3RhcnRcIiBbd2lkdGhdPVwiJzgwcHgnXCIgW3BhZFplcm9dPVwidHJ1ZVwiPjwvYXgtaW5kZXgtY29sdW1uPlxuICAgICAgICBAaWYgKHZtLnNlbGVjdGVkU2NvcGVBY3Rpb25zQ291bnQoKSkge1xuICAgICAgICAgIDxheC1zZWxlY3QtY29sdW1uIGZpeGVkPVwic3RhcnRcIiBbd2lkdGhdPVwiJzUwcHgnXCI+PC9heC1zZWxlY3QtY29sdW1uPlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKGNvbCBvZiB2bS5jb2x1bW5zKCk7IHRyYWNrIGNvbC5uYW1lKSB7XG4gICAgICAgICAgQGlmIChjb2wudmlzaWJsZSkge1xuICAgICAgICAgICAgPGF4cC13aWRnZXQtY29sdW1uLXJlbmRlcmVyXG4gICAgICAgICAgICAgIFtleHBhbmRIYW5kbGVyXT1cIiRpbmRleCA9PT0gMCAmJiB2bS5wYXJlbnRLZXkoKSA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgICAgICAgIFtjYXB0aW9uXT1cIihjb2wudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAgICAgW25vZGVdPVwiY29sLm5vZGUoKVwiXG4gICAgICAgICAgICA+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChnZXRDb21tYW5kUm93SXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICA8YXgtY29tbWFuZC1jb2x1bW5cbiAgICAgICAgICAgIGZpeGVkPVwiZW5kXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCJnZXRDb21tYW5kUm93SXRlbXMoKS5sZW5ndGggKiA2MCArICdweCdcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cImdldENvbW1hbmRSb3dJdGVtcygpXCJcbiAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDb21tYW5kQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXgtY29tbWFuZC1jb2x1bW4+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChkcm9wZG93blJvd0l0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgPGF4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uXG4gICAgICAgICAgICBmaXhlZD1cImVuZFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiJzYwcHgnXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJnZXREcm9wZG93blJvd0l0ZW1zXCJcbiAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVSb3dDb21tYW5kQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgPjwvYXgtZHJvcGRvd24tY29tbWFuZC1jb2x1bW4+XG4gICAgICAgIH1cbiAgICAgIDwvYXgtZGF0YS10YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==","import { AXPComponentSlotModule } from '@acorex/platform/layout/components';\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/components\";\nexport class AXPRootLayoutFooterComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPRootLayoutFooterComponent, isStandalone: true, selector: \"axp-dashboard-admin-footer\", host: { classAttribute: \"ax-h-10 ax-flex ax-item-center ax-justify-between ax-bg-lighter ax-border-lighter ax-px-6 ax-border-t\" }, providers: [], ngImport: i0, template: \"<div class=\\\"ax-flex ax-items-center ax-justify-start ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-footer-start\\\"></axp-component-slot>\\n</div>\\n<div class=\\\"ax-flex ax-items-center ax-justify-end ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-footer-end\\\"></axp-component-slot>\\n</div>\\n\", dependencies: [{ kind: \"ngmodule\", type: AXPComponentSlotModule }, { kind: \"directive\", type: i1.AXPComponentSlotDirective, selector: \"axp-component-slot\", inputs: [\"name\", \"host\", \"context\"], exportAs: [\"slot\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutFooterComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-dashboard-admin-footer', encapsulation: ViewEncapsulation.None, providers: [], host: {\n class: 'ax-h-10 ax-flex ax-item-center ax-justify-between ax-bg-lighter ax-border-lighter ax-px-6 ax-border-t',\n }, standalone: true, imports: [\n AXPComponentSlotModule\n ], template: \"<div class=\\\"ax-flex ax-items-center ax-justify-start ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-footer-start\\\"></axp-component-slot>\\n</div>\\n<div class=\\\"ax-flex ax-items-center ax-justify-end ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-footer-end\\\"></axp-component-slot>\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL3Jvb3QtbGF5b3V0L2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9yb290LWxheW91dC9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBZTdELE1BQU0sT0FBTyw0QkFBNEI7K0dBQTVCLDRCQUE0QjttR0FBNUIsNEJBQTRCLDRNQVQ1QixFQUFFLDBCQ1BmLG9TQU1BLDJDRE9JLHNCQUFzQjs7NEZBR2IsNEJBQTRCO2tCQWJ4QyxTQUFTOytCQUNFLDRCQUE0QixpQkFFdkIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixFQUFFLFFBQ1A7d0JBQ0osS0FBSyxFQUFFLHVHQUF1RztxQkFDL0csY0FDVyxJQUFJLFdBQ1A7d0JBQ1Asc0JBQXNCO3FCQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUENvbXBvbmVudFNsb3RNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWRhc2hib2FyZC1hZG1pbi1mb290ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYXgtaC0xMCBheC1mbGV4IGF4LWl0ZW0tY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1iZy1saWdodGVyIGF4LWJvcmRlci1saWdodGVyIGF4LXB4LTYgYXgtYm9yZGVyLXQnLFxuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQVhQQ29tcG9uZW50U2xvdE1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJvb3RMYXlvdXRGb290ZXJDb21wb25lbnQgeyB9XG4iLCI8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1zdGFydCBheC1nYXAtMVwiPlxuICA8YXhwLWNvbXBvbmVudC1zbG90IG5hbWU9XCJyb290LWZvb3Rlci1zdGFydFwiPjwvYXhwLWNvbXBvbmVudC1zbG90PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1lbmQgYXgtZ2FwLTFcIj5cbiAgPGF4cC1jb21wb25lbnQtc2xvdCBuYW1lPVwicm9vdC1mb290ZXItZW5kXCI+PC9heHAtY29tcG9uZW50LXNsb3Q+XG48L2Rpdj5cbiJdfQ==","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/components\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nexport class AXPRootLayoutHeaderComponent {\n constructor() {\n this.config = inject(AXP_PLATFORM_CONFIG_TOKEN);\n this.store = inject(AXPLayoutThemeService);\n this.router = inject(Router);\n this.logo = this.config.logo;\n }\n toggleSideMenu() {\n this.store.toggleSideMenu();\n }\n handleLogoClick() {\n this.router.navigate(['/']);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPRootLayoutHeaderComponent, isStandalone: true, selector: \"axp-dashboard-admin-header\", host: { classAttribute: \"ax-w-full ax-flex ax-items-center ax-justify-between ax-bg-primary-surface ax-text-primary-on-surface ax-h-14 ax-px-2 ax-light\" }, ngImport: i0, template: \"<ax-button id=\\\"axp-menu-toggle\\\" (onClick)=\\\"toggleSideMenu()\\\" color=\\\"primary\\\">\\n <ax-icon class=\\\"rtl:ax-rotate-180\\\">\\n <svg width=\\\"28\\\" height=\\\"28\\\" viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n @if (store.isSideMenuOpen()) {\\n <defs>\\n <clipPath id=\\\"clip1382_20239\\\">\\n <rect width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"white\\\" fill-opacity=\\\"0\\\"></rect>\\n </clipPath>\\n </defs>\\n <rect width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0\\\"></rect>\\n <g clip-path=\\\"url(#clip1382_20239)\\\">\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"17.420410\\\"\\n y=\\\"12.316406\\\"\\n rx=\\\"1.000947\\\"\\n width=\\\"5.995172\\\"\\n height=\\\"2.001895\\\"\\n transform=\\\"rotate(137.159 17.420410 12.316406)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"12.959473\\\"\\n y=\\\"13.728516\\\"\\n rx=\\\"0.995190\\\"\\n width=\\\"6.002943\\\"\\n height=\\\"1.990380\\\"\\n transform=\\\"rotate(40.853 12.959473 13.728516)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <path\\n id=\\\"path\\\"\\n d=\\\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"nonzero\\\"\\n ></path>\\n <path\\n id=\\\"rect\\\"\\n d=\\\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"evenodd\\\"\\n ></path>\\n </g>\\n } @else {\\n <defs>\\n <clipPath id=\\\"clip1381_20236\\\">\\n <rect id=\\\"\\u6253\\u5F00\\u8FB9\\u680F0730\\\" width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"white\\\" fill-opacity=\\\"0\\\"></rect>\\n </clipPath>\\n </defs>\\n <rect id=\\\"\\u6253\\u5F00\\u8FB9\\u680F0730\\\" width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0\\\"></rect>\\n <g clip-path=\\\"url(#clip1381_20236)\\\">\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"11.572754\\\"\\n y=\\\"17.683594\\\"\\n rx=\\\"1.000947\\\"\\n width=\\\"5.995172\\\"\\n height=\\\"2.001895\\\"\\n transform=\\\"rotate(-42.841 11.572754 17.683594)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"16.033691\\\"\\n y=\\\"16.271484\\\"\\n rx=\\\"0.995190\\\"\\n width=\\\"6.002943\\\"\\n height=\\\"1.990380\\\"\\n transform=\\\"rotate(-139.147 16.033691 16.271484)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <path\\n id=\\\"path\\\"\\n d=\\\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"nonzero\\\"\\n ></path>\\n <path\\n id=\\\"rect\\\"\\n d=\\\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"evenodd\\\"\\n ></path>\\n </g>\\n }\\n </svg>\\n </ax-icon>\\n</ax-button>\\n<div class=\\\"ax-flex ax-items-center ax-gap-1 ax-justify-between ax-w-full\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-header-start\\\"></axp-component-slot>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-header-end\\\"></axp-component-slot>\\n </div>\\n</div>\\n\", dependencies: [{ kind: \"ngmodule\", type: AXPComponentSlotModule }, { kind: \"directive\", type: i1.AXPComponentSlotDirective, selector: \"axp-component-slot\", inputs: [\"name\", \"host\", \"context\"], exportAs: [\"slot\"] }, { 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: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutHeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-dashboard-admin-header', encapsulation: ViewEncapsulation.None, host: { class: 'ax-w-full ax-flex ax-items-center ax-justify-between ax-bg-primary-surface ax-text-primary-on-surface ax-h-14 ax-px-2 ax-light' }, standalone: true, imports: [\n AXPComponentSlotModule,\n AXButtonModule,\n AXDecoratorModule\n ], template: \"<ax-button id=\\\"axp-menu-toggle\\\" (onClick)=\\\"toggleSideMenu()\\\" color=\\\"primary\\\">\\n <ax-icon class=\\\"rtl:ax-rotate-180\\\">\\n <svg width=\\\"28\\\" height=\\\"28\\\" viewBox=\\\"0 0 30 30\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n @if (store.isSideMenuOpen()) {\\n <defs>\\n <clipPath id=\\\"clip1382_20239\\\">\\n <rect width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"white\\\" fill-opacity=\\\"0\\\"></rect>\\n </clipPath>\\n </defs>\\n <rect width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0\\\"></rect>\\n <g clip-path=\\\"url(#clip1382_20239)\\\">\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"17.420410\\\"\\n y=\\\"12.316406\\\"\\n rx=\\\"1.000947\\\"\\n width=\\\"5.995172\\\"\\n height=\\\"2.001895\\\"\\n transform=\\\"rotate(137.159 17.420410 12.316406)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"12.959473\\\"\\n y=\\\"13.728516\\\"\\n rx=\\\"0.995190\\\"\\n width=\\\"6.002943\\\"\\n height=\\\"1.990380\\\"\\n transform=\\\"rotate(40.853 12.959473 13.728516)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <path\\n id=\\\"path\\\"\\n d=\\\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"nonzero\\\"\\n ></path>\\n <path\\n id=\\\"rect\\\"\\n d=\\\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"evenodd\\\"\\n ></path>\\n </g>\\n } @else {\\n <defs>\\n <clipPath id=\\\"clip1381_20236\\\">\\n <rect id=\\\"\\u6253\\u5F00\\u8FB9\\u680F0730\\\" width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"white\\\" fill-opacity=\\\"0\\\"></rect>\\n </clipPath>\\n </defs>\\n <rect id=\\\"\\u6253\\u5F00\\u8FB9\\u680F0730\\\" width=\\\"30.000000\\\" height=\\\"30.000000\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0\\\"></rect>\\n <g clip-path=\\\"url(#clip1381_20236)\\\">\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"11.572754\\\"\\n y=\\\"17.683594\\\"\\n rx=\\\"1.000947\\\"\\n width=\\\"5.995172\\\"\\n height=\\\"2.001895\\\"\\n transform=\\\"rotate(-42.841 11.572754 17.683594)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <rect\\n id=\\\"rect\\\"\\n x=\\\"16.033691\\\"\\n y=\\\"16.271484\\\"\\n rx=\\\"0.995190\\\"\\n width=\\\"6.002943\\\"\\n height=\\\"1.990380\\\"\\n transform=\\\"rotate(-139.147 16.033691 16.271484)\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n ></rect>\\n <path\\n id=\\\"path\\\"\\n d=\\\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"nonzero\\\"\\n ></path>\\n <path\\n id=\\\"rect\\\"\\n d=\\\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\\\"\\n fill=\\\"currentColor\\\"\\n fill-opacity=\\\"1.000000\\\"\\n fill-rule=\\\"evenodd\\\"\\n ></path>\\n </g>\\n }\\n </svg>\\n </ax-icon>\\n</ax-button>\\n<div class=\\\"ax-flex ax-items-center ax-gap-1 ax-justify-between ax-w-full\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-header-start\\\"></axp-component-slot>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-header-end\\\"></axp-component-slot>\\n </div>\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL3Jvb3QtbGF5b3V0L2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9yb290LWxheW91dC9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFjekMsTUFBTSxPQUFPLDRCQUE0QjtJQVp6QztRQWFVLFdBQU0sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUV6QyxVQUFLLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7S0FVbkM7SUFQVyxjQUFjO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVTLGVBQWU7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBZFUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsa1BDcEJ6Qyw4N1BBeUdBLDJDRDFGSSxzQkFBc0Isa0xBQ3RCLGNBQWMsNlhBQ2QsaUJBQWlCOzs0RkFHUiw0QkFBNEI7a0JBWnhDLFNBQVM7K0JBQ0UsNEJBQTRCLGlCQUV2QixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGdJQUFnSSxFQUFFLGNBQ3JJLElBQUksV0FDUDt3QkFDUCxzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2QsaUJBQWlCO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBDb21wb25lbnRTbG90TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWQnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtZGFzaGJvYXJkLWFkbWluLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYXgtdy1mdWxsIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1iZy1wcmltYXJ5LXN1cmZhY2UgYXgtdGV4dC1wcmltYXJ5LW9uLXN1cmZhY2UgYXgtaC0xNCBheC1weC0yIGF4LWxpZ2h0JyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFYUFJvb3RMYXlvdXRIZWFkZXJDb21wb25lbnQge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOKTtcblxuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJvdGVjdGVkIGxvZ28gPSB0aGlzLmNvbmZpZy5sb2dvO1xuXG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNpZGVNZW51KCkge1xuICAgIHRoaXMuc3RvcmUudG9nZ2xlU2lkZU1lbnUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVMb2dvQ2xpY2soKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICB9XG59XG4iLCI8YXgtYnV0dG9uIGlkPVwiYXhwLW1lbnUtdG9nZ2xlXCIgKG9uQ2xpY2spPVwidG9nZ2xlU2lkZU1lbnUoKVwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICA8YXgtaWNvbiBjbGFzcz1cInJ0bDpheC1yb3RhdGUtMTgwXCI+XG4gICAgPHN2ZyB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDMwIDMwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICBAaWYgKHN0b3JlLmlzU2lkZU1lbnVPcGVuKCkpIHtcbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDEzODJfMjAyMzlcIj5cbiAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzAuMDAwMDAwXCIgaGVpZ2h0PVwiMzAuMDAwMDAwXCIgZmlsbD1cIndoaXRlXCIgZmlsbC1vcGFjaXR5PVwiMFwiPjwvcmVjdD5cbiAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxyZWN0IHdpZHRoPVwiMzAuMDAwMDAwXCIgaGVpZ2h0PVwiMzAuMDAwMDAwXCIgZmlsbD1cIiNGRkZGRkZcIiBmaWxsLW9wYWNpdHk9XCIwXCI+PC9yZWN0PlxuICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAxMzgyXzIwMjM5KVwiPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBpZD1cInJlY3RcIlxuICAgICAgICAgICAgeD1cIjE3LjQyMDQxMFwiXG4gICAgICAgICAgICB5PVwiMTIuMzE2NDA2XCJcbiAgICAgICAgICAgIHJ4PVwiMS4wMDA5NDdcIlxuICAgICAgICAgICAgd2lkdGg9XCI1Ljk5NTE3MlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCIyLjAwMTg5NVwiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoMTM3LjE1OSAxNy40MjA0MTAgMTIuMzE2NDA2KVwiXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjEuMDAwMDAwXCJcbiAgICAgICAgICA+PC9yZWN0PlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBpZD1cInJlY3RcIlxuICAgICAgICAgICAgeD1cIjEyLjk1OTQ3M1wiXG4gICAgICAgICAgICB5PVwiMTMuNzI4NTE2XCJcbiAgICAgICAgICAgIHJ4PVwiMC45OTUxOTBcIlxuICAgICAgICAgICAgd2lkdGg9XCI2LjAwMjk0M1wiXG4gICAgICAgICAgICBoZWlnaHQ9XCIxLjk5MDM4MFwiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDAuODUzIDEyLjk1OTQ3MyAxMy43Mjg1MTYpXCJcbiAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMS4wMDAwMDBcIlxuICAgICAgICAgID48L3JlY3Q+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGlkPVwicGF0aFwiXG4gICAgICAgICAgICBkPVwiTTIwLjEgMjUuNUw5LjkgMjUuNTFDOS40OCAyNS41MSA5LjA2IDI1LjQ3IDguNjUgMjUuMzlDOC4yNCAyNS4zIDcuODQgMjUuMTggNy40NSAyNS4wMkM3LjA2IDI0Ljg2IDYuNjkgMjQuNjYgNi4zNCAyNC40M0M1Ljk5IDI0LjE5IDUuNjcgMjMuOTIgNS4zNyAyMy42M0M1LjA3IDIzLjMzIDQuODEgMjMgNC41OCAyMi42NUM0LjM0IDIyLjMgNC4xNSAyMS45MyAzLjk4IDIxLjU0QzMuODIgMjEuMTUgMy43IDIwLjc1IDMuNjIgMjAuMzRDMy41NCAxOS45MyAzLjUgMTkuNTEgMy41IDE5LjA5TDMuNSAxMC45M0MzLjUgMTAuNTEgMy41NCAxMC4xIDMuNjIgOS42OEMzLjcgOS4yNyAzLjgyIDguODcgMy45OCA4LjQ4QzQuMTUgOC4wOSA0LjM0IDcuNzIgNC41OCA3LjM3QzQuODEgNy4wMiA1LjA3IDYuNjkgNS4zNyA2LjM5QzUuNjcgNi4xIDUuOTkgNS44MyA2LjM0IDUuNkM2LjY5IDUuMzYgNy4wNiA1LjE2IDcuNDUgNUM3Ljg0IDQuODQgOC4yNCA0LjcyIDguNjUgNC42NEM5LjA2IDQuNTUgOS40OCA0LjUxIDkuOSA0LjUxTDIwLjEgNC41QzIwLjUyIDQuNSAyMC45NCA0LjU0IDIxLjM1IDQuNjJDMjEuNzYgNC43IDIyLjE2IDQuODMgMjIuNTUgNC45OUMyMi45NCA1LjE1IDIzLjMxIDUuMzUgMjMuNjYgNS41OEMyNCA1LjgyIDI0LjMzIDYuMDggMjQuNjIgNi4zOEMyNC45MiA2LjY4IDI1LjE5IDcgMjUuNDIgNy4zNUMyNS42NSA3LjcgMjUuODUgOC4wNyAyNi4wMSA4LjQ2QzI2LjE3IDguODUgMjYuMyA5LjI1IDI2LjM4IDkuNjdDMjYuNDYgMTAuMDggMjYuNSAxMC41IDI2LjUgMTAuOTJMMjYuNSAxOS4wN0MyNi41IDE5LjUgMjYuNDYgMTkuOTEgMjYuMzggMjAuMzJDMjYuMyAyMC43NCAyNi4xNyAyMS4xNCAyNi4wMSAyMS41M0MyNS44NSAyMS45MiAyNS42NSAyMi4yOSAyNS40MiAyMi42NEMyNS4xOSAyMi45OSAyNC45MiAyMy4zMSAyNC42MiAyMy42MUMyNC4zMyAyMy45MSAyNCAyNC4xNyAyMy42NiAyNC40MUMyMy4zMSAyNC42NCAyMi45NCAyNC44NCAyMi41NSAyNUMyMi4xNiAyNS4xNiAyMS43NiAyNS4yOSAyMS4zNSAyNS4zN0MyMC45NCAyNS40NSAyMC41MiAyNS41IDIwLjEgMjUuNVpNOS45IDYuNkM5LjYxIDYuNiA5LjMzIDYuNjMgOS4wNSA2LjY5QzguNzggNi43NCA4LjUxIDYuODIgOC4yNCA2LjkzQzcuOTggNy4wNCA3LjczIDcuMTggNy41IDcuMzNDNy4yNiA3LjQ5IDcuMDQgNy42NyA2Ljg0IDcuODdDNi42NCA4LjA3IDYuNDYgOC4yOSA2LjMxIDguNTNDNi4xNSA4Ljc3IDYuMDIgOS4wMSA1LjkxIDkuMjhDNS44IDkuNTQgNS43MiA5LjgxIDUuNjYgMTAuMDlDNS42MSAxMC4zNyA1LjU4IDEwLjY1IDUuNTggMTAuOTNMNS41OCAxOS4wOUM1LjU4IDE5LjM3IDUuNjEgMTkuNjUgNS42NiAxOS45M0M1LjcyIDIwLjIxIDUuOCAyMC40OCA1LjkxIDIwLjc0QzYuMDIgMjEuMDEgNi4xNSAyMS4yNiA2LjMxIDIxLjQ5QzYuNDYgMjEuNzMgNi42NCAyMS45NSA2Ljg0IDIyLjE1QzcuMDQgMjIuMzUgNy4yNiAyMi41MyA3LjUgMjIuNjlDNy43MyAyMi44NSA3Ljk4IDIyLjk4IDguMjQgMjMuMDlDOC41MSAyMy4yIDguNzggMjMuMjggOS4wNSAyMy4zM0M5LjMzIDIzLjM5IDkuNjEgMjMuNDIgOS45IDIzLjQyTDIwLjEgMjMuNDFDMjAuMzggMjMuNDEgMjAuNjcgMjMuMzcgMjAuOTQgMjMuMzJDMjEuMjIgMjMuMjYgMjEuNDkgMjMuMTggMjEuNzUgMjMuMDdDMjIuMDEgMjIuOTYgMjIuMjYgMjIuODMgMjIuNSAyMi42N0MyMi43MyAyMi41MSAyMi45NSAyMi4zMyAyMy4xNSAyMi4xM0MyMy4zNSAyMS45MyAyMy41MyAyMS43MSAyMy42OSAyMS40OEMyMy44NSAyMS4yNCAyMy45OCAyMC45OSAyNC4wOSAyMC43M0MyNC4yIDIwLjQ3IDI0LjI4IDIwLjIgMjQuMzMgMTkuOTJDMjQuMzkgMTkuNjQgMjQuNDIgMTkuMzYgMjQuNDIgMTkuMDdMMjQuNDIgMTAuOTJDMjQuNDIgMTAuNjQgMjQuMzkgMTAuMzUgMjQuMzMgMTAuMDdDMjQuMjggOS43OSAyNC4yIDkuNTIgMjQuMDkgOS4yNkMyMy45OCA5IDIzLjg1IDguNzUgMjMuNjkgOC41MUMyMy41MyA4LjI4IDIzLjM1IDguMDYgMjMuMTUgNy44NkMyMi45NSA3LjY2IDIyLjczIDcuNDggMjIuNSA3LjMyQzIyLjI2IDcuMTYgMjIuMDEgNy4wMyAyMS43NSA2LjkyQzIxLjQ5IDYuODEgMjEuMjIgNi43MyAyMC45NCA2LjY3QzIwLjY3IDYuNjIgMjAuMzggNi41OSAyMC4xIDYuNTlMOS45IDYuNlpcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxLjAwMDAwMFwiXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJub256ZXJvXCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBpZD1cInJlY3RcIlxuICAgICAgICAgICAgZD1cIk04LjUgNS41MUwxMC41NCA1LjUxTDEwLjYgMjQuNDNMOC41NSAyNC40M0w4LjUgNS41MVpcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxLjAwMDAwMFwiXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDEzODFfMjAyMzZcIj5cbiAgICAgICAgICAgIDxyZWN0IGlkPVwi5omT5byA6L655qCPMDczMFwiIHdpZHRoPVwiMzAuMDAwMDAwXCIgaGVpZ2h0PVwiMzAuMDAwMDAwXCIgZmlsbD1cIndoaXRlXCIgZmlsbC1vcGFjaXR5PVwiMFwiPjwvcmVjdD5cbiAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxyZWN0IGlkPVwi5omT5byA6L655qCPMDczMFwiIHdpZHRoPVwiMzAuMDAwMDAwXCIgaGVpZ2h0PVwiMzAuMDAwMDAwXCIgZmlsbD1cIiNGRkZGRkZcIiBmaWxsLW9wYWNpdHk9XCIwXCI+PC9yZWN0PlxuICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAxMzgxXzIwMjM2KVwiPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBpZD1cInJlY3RcIlxuICAgICAgICAgICAgeD1cIjExLjU3Mjc1NFwiXG4gICAgICAgICAgICB5PVwiMTcuNjgzNTk0XCJcbiAgICAgICAgICAgIHJ4PVwiMS4wMDA5NDdcIlxuICAgICAgICAgICAgd2lkdGg9XCI1Ljk5NTE3MlwiXG4gICAgICAgICAgICBoZWlnaHQ9XCIyLjAwMTg5NVwiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoLTQyLjg0MSAxMS41NzI3NTQgMTcuNjgzNTk0KVwiXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjEuMDAwMDAwXCJcbiAgICAgICAgICA+PC9yZWN0PlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBpZD1cInJlY3RcIlxuICAgICAgICAgICAgeD1cIjE2LjAzMzY5MVwiXG4gICAgICAgICAgICB5PVwiMTYuMjcxNDg0XCJcbiAgICAgICAgICAgIHJ4PVwiMC45OTUxOTBcIlxuICAgICAgICAgICAgd2lkdGg9XCI2LjAwMjk0M1wiXG4gICAgICAgICAgICBoZWlnaHQ9XCIxLjk5MDM4MFwiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoLTEzOS4xNDcgMTYuMDMzNjkxIDE2LjI3MTQ4NClcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxLjAwMDAwMFwiXG4gICAgICAgICAgPjwvcmVjdD5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgaWQ9XCJwYXRoXCJcbiAgICAgICAgICAgIGQ9XCJNMjAuMDkgMjUuNDhMOS44OSAyNS41QzkuNDcgMjUuNSA5LjA1IDI1LjQ1IDguNjQgMjUuMzdDOC4yMyAyNS4yOSA3LjgzIDI1LjE3IDcuNDQgMjVDNy4wNSAyNC44NCA2LjY4IDI0LjY0IDYuMzMgMjQuNDFDNS45OCAyNC4xOCA1LjY2IDIzLjkxIDUuMzYgMjMuNjFDNS4wNyAyMy4zMSA0LjggMjIuOTkgNC41NyAyMi42NEM0LjM0IDIyLjI5IDQuMTQgMjEuOTIgMy45OCAyMS41M0MzLjgyIDIxLjE0IDMuNjkgMjAuNzQgMy42MSAyMC4zMkMzLjUzIDE5LjkxIDMuNDkgMTkuNDkgMy40OSAxOS4wN0wzLjQ5IDEwLjkyQzMuNDkgMTAuNSAzLjUzIDEwLjA4IDMuNjEgOS42N0MzLjY5IDkuMjUgMy44MiA4Ljg1IDMuOTggOC40NkM0LjE0IDguMDcgNC4zNCA3LjcgNC41NyA3LjM1QzQuOCA3IDUuMDcgNi42OCA1LjM2IDYuMzhDNS42NiA2LjA4IDUuOTggNS44MSA2LjMzIDUuNThDNi42OCA1LjM1IDcuMDUgNS4xNSA3LjQ0IDQuOTlDNy44MyA0LjgyIDguMjMgNC43IDguNjQgNC42MkM5LjA1IDQuNTQgOS40NyA0LjUgOS44OSA0LjVMMjAuMDkgNC40OEMyMC41MSA0LjQ4IDIwLjkzIDQuNTIgMjEuMzQgNC42QzIxLjc1IDQuNjkgMjIuMTUgNC44MSAyMi41NCA0Ljk3QzIyLjkzIDUuMTMgMjMuMyA1LjMzIDIzLjY1IDUuNTdDMjQgNS44IDI0LjMyIDYuMDYgMjQuNjIgNi4zNkMyNC45MiA2LjY2IDI1LjE4IDYuOTggMjUuNDEgNy4zM0MyNS42NSA3LjY5IDI1Ljg0IDguMDYgMjYuMDEgOC40NUMyNi4xNyA4Ljg0IDI2LjI5IDkuMjQgMjYuMzcgOS42NUMyNi40NSAxMC4wNiAyNi40OSAxMC40OCAyNi41IDEwLjkxTDI2LjUgMTkuMDZDMjYuNDkgMTkuNDggMjYuNDUgMTkuODkgMjYuMzcgMjAuMzFDMjYuMjkgMjAuNzIgMjYuMTcgMjEuMTIgMjYuMDEgMjEuNTFDMjUuODQgMjEuOSAyNS42NSAyMi4yNyAyNS40MSAyMi42MkMyNS4xOCAyMi45NyAyNC45MiAyMy4zIDI0LjYyIDIzLjZDMjQuMzIgMjMuODkgMjQgMjQuMTYgMjMuNjUgMjQuMzlDMjMuMyAyNC42MyAyMi45MyAyNC44MyAyMi41NCAyNC45OUMyMi4xNSAyNS4xNSAyMS43NSAyNS4yNyAyMS4zNCAyNS4zNUMyMC45MyAyNS40NCAyMC41MSAyNS40OCAyMC4wOSAyNS40OFpNOS44OSA2LjU5QzkuNjEgNi41OSA5LjMyIDYuNjIgOS4wNSA2LjY3QzguNzcgNi43MyA4LjUgNi44MSA4LjI0IDYuOTJDNy45OCA3LjAzIDcuNzMgNy4xNiA3LjQ5IDcuMzJDNy4yNiA3LjQ4IDcuMDQgNy42NiA2Ljg0IDcuODZDNi42NCA4LjA2IDYuNDYgOC4yOCA2LjMgOC41MUM2LjE0IDguNzUgNi4wMSA5IDUuOSA5LjI2QzUuNzkgOS41MiA1LjcxIDkuOCA1LjY2IDEwLjA3QzUuNiAxMC4zNSA1LjU3IDEwLjYzIDUuNTcgMTAuOTJMNS41NyAxOS4wN0M1LjU3IDE5LjM2IDUuNiAxOS42NCA1LjY2IDE5LjkyQzUuNzEgMjAuMTkgNS43OSAyMC40NyA1LjkgMjAuNzNDNi4wMSAyMC45OSA2LjE0IDIxLjI0IDYuMyAyMS40OEM2LjQ2IDIxLjcxIDYuNjQgMjEuOTMgNi44NCAyMi4xM0M3LjA0IDIyLjMzIDcuMjYgMjIuNTEgNy40OSAyMi42N0M3LjczIDIyLjgzIDcuOTggMjIuOTYgOC4yNCAyMy4wN0M4LjUgMjMuMTggOC43NyAyMy4yNiA5LjA1IDIzLjMyQzkuMzIgMjMuMzcgOS42MSAyMy40IDkuODkgMjMuNEwyMC4wOSAyMy4zOUMyMC4zOCAyMy4zOSAyMC42NiAyMy4zNiAyMC45NCAyMy4zQzIxLjIxIDIzLjI1IDIxLjQ4IDIzLjE3IDIxLjc1IDIzLjA2QzIyLjAxIDIyLjk1IDIyLjI2IDIyLjgxIDIyLjQ5IDIyLjY2QzIyLjczIDIyLjUgMjIuOTUgMjIuMzIgMjMuMTUgMjIuMTJDMjMuMzUgMjEuOTEgMjMuNTIgMjEuNyAyMy42OCAyMS40NkMyMy44NCAyMS4yMiAyMy45NyAyMC45OCAyNC4wOCAyMC43MUMyNC4xOSAyMC40NSAyNC4yNyAyMC4xOCAyNC4zMyAxOS45QzI0LjM4IDE5LjYyIDI0LjQxIDE5LjM0IDI0LjQxIDE5LjA2TDI0LjQxIDEwLjkxQzI0LjQxIDEwLjYyIDI0LjM4IDEwLjM0IDI0LjMzIDEwLjA2QzI0LjI3IDkuNzggMjQuMTkgOS41MSAyNC4wOCA5LjI1QzIzLjk3IDguOTggMjMuODQgOC43NCAyMy42OCA4LjVDMjMuNTIgOC4yNiAyMy4zNSA4LjA0IDIzLjE1IDcuODRDMjIuOTUgNy42NCAyMi43MyA3LjQ2IDIyLjQ5IDcuM0MyMi4yNiA3LjE1IDIyLjAxIDcuMDEgMjEuNzUgNi45QzIxLjQ4IDYuNzkgMjEuMjEgNi43MSAyMC45NCA2LjY2QzIwLjY2IDYuNiAyMC4zOCA2LjU3IDIwLjA5IDYuNTdMOS44OSA2LjU5WlwiXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjEuMDAwMDAwXCJcbiAgICAgICAgICAgIGZpbGwtcnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGlkPVwicmVjdFwiXG4gICAgICAgICAgICBkPVwiTTguNDkgNS41TDEwLjUzIDUuNUwxMC41OSAyNC40MUw4LjU0IDI0LjQxTDguNDkgNS41WlwiXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjEuMDAwMDAwXCJcbiAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgIH1cbiAgICA8L3N2Zz5cbiAgPC9heC1pY29uPlxuPC9heC1idXR0b24+XG48ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTEgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXctZnVsbFwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTFcIj5cbiAgICA8YXhwLWNvbXBvbmVudC1zbG90IG5hbWU9XCJyb290LWhlYWRlci1zdGFydFwiPjwvYXhwLWNvbXBvbmVudC1zbG90PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0xXCI+XG4gICAgPGF4cC1jb21wb25lbnQtc2xvdCBuYW1lPVwicm9vdC1oZWFkZXItZW5kXCI+PC9heHAtY29tcG9uZW50LXNsb3Q+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMenuService, AXPMenuVisibilityService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPMenuBadgeHelper, AXPTaskBadgeDirective, AXPTaskBadgeService } from '@acorex/platform/layout/components';\nimport { AXPThemeLayoutSetting } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { sortBy } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/side-menu\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/badge\";\nimport * as i5 from \"@acorex/core/translation\";\nexport class AXPRootLayoutMenuComponent {\n constructor() {\n this.menuStore = inject(AXPMenuService);\n this.router = inject(Router);\n this.badgeService = inject(AXPTaskBadgeService);\n this.settingsService = inject(AXPSettingsService);\n this.visibilityService = inject(AXPMenuVisibilityService);\n this.badgeVisible = signal(true, ...(ngDevMode ? [{ debugName: \"badgeVisible\" }] : []));\n // Debug: Track menu items changes\n // effect(() => {\n // const items = this.menuStore.items();\n // console.log('🎯 Sidebar menu items updated:', items.map(i => ({ name: i.name, priority: i.priority })));\n // });\n }\n async ngOnInit() {\n this.badgeVisible.set(await this.settingsService.scope(AXPPlatformScope.User).get(AXPThemeLayoutSetting.MenuBadgeVisible));\n //subscribe to changes\n this.settingsService.onChanged.subscribe((setting) => {\n if (setting.keys.includes(AXPThemeLayoutSetting.MenuBadgeVisible)) {\n this.badgeVisible.set(setting.values[AXPThemeLayoutSetting.MenuBadgeVisible]);\n }\n });\n }\n onMenuItemClick(item, hasRouterLink) {\n if (hasRouterLink || item.children?.length) {\n return;\n }\n this.menuStore.executeCommand(item);\n }\n sort(items) {\n return sortBy(items, [(c) => c.priority ?? 0, (c) => c.text]);\n }\n getMenuBadge(item) {\n return AXPMenuBadgeHelper.getTotalCount(item, this.badgeService);\n }\n //#region ---- Menu Visibility Helpers ----\n /**\n * Checks if a menu item should be visible based on permissions and features.\n */\n isItemVisible(item) {\n return this.visibilityService.isItemVisible(item);\n }\n /**\n * Determines if a menu item should be rendered.\n * A menu item should be rendered if:\n * 1. It has a routerLink, OR\n * 2. It has visible children, OR\n * 3. It has a command (for non-router navigation)\n */\n shouldRenderMenuItem(item) {\n return this.visibilityService.shouldRenderMenuItem(item, (item) => this.getRouterLink(item));\n }\n //#endregion\n //#region ---- Menu Navigation Helpers ----\n /**\n * Builds a UrlTree that can be consumed by the routerLink directive when the menu item targets\n * an internal route. When the item does not represent an internal route, null is returned so the\n * command execution pipeline remains responsible for navigation.\n */\n getRouterLink(item) {\n const navigation = this.extractRouterNavigation(item);\n if (!navigation) {\n return null;\n }\n if (!this.isRouterLinkCompatible(navigation)) {\n return null;\n }\n const normalizedPath = this.normalizeRouterPath(navigation.path);\n try {\n return this.router.parseUrl(normalizedPath);\n }\n catch (error) {\n console.warn('Failed to create router link for menu item.', { item, error });\n return null;\n }\n }\n /**\n * Extracts internal navigation data regardless of whether it is provided via the legacy `path`\n * property, a direct navigate command, or the execution command wrapper.\n */\n extractRouterNavigation(item) {\n if (item.path) {\n return { path: item.path };\n }\n const command = item.command;\n if (!command) {\n return null;\n }\n const navigateCommand = command;\n if (navigateCommand?.type === 'router' && typeof navigateCommand.options?.path === 'string') {\n return {\n path: navigateCommand.options.path,\n extras: navigateCommand.options.extras,\n };\n }\n const executeCommand = command;\n if (executeCommand?.options && typeof executeCommand.options === 'object') {\n const commandOptions = executeCommand.options;\n if (commandOptions?.type === 'router') {\n const routerOptions = commandOptions.options ?? commandOptions;\n if (typeof routerOptions?.path === 'string') {\n return {\n path: routerOptions.path,\n extras: routerOptions.extras,\n };\n }\n }\n if (typeof commandOptions?.path === 'string') {\n return { path: commandOptions.path };\n }\n }\n return null;\n }\n /**\n * Determines whether routerLink can safely be used based on the target path and navigation\n * extras. If the navigation requires additional runtime behaviour (e.g., opening in a new tab),\n * we fallback to the imperative command pipeline.\n */\n isRouterLinkCompatible(navigation) {\n if (!navigation.path) {\n return false;\n }\n if (this.isExternalNavigation(navigation.path)) {\n return false;\n }\n const extras = navigation.extras;\n if (!extras) {\n return true;\n }\n if (extras.target === 'blank') {\n return false;\n }\n const unsupportedKeys = ['skipLocationChange', 'replaceUrl', 'state'];\n return !unsupportedKeys.some((key) => extras[key] !== undefined);\n }\n /**\n * Ensures router links include a leading slash while preserving any query parameters or\n * fragments present in the original path.\n */\n normalizeRouterPath(path) {\n const trimmed = path.trim();\n if (!trimmed.length) {\n return trimmed;\n }\n if (trimmed.startsWith('/') || trimmed.startsWith('?') || trimmed.startsWith('#')) {\n return trimmed;\n }\n return `/${trimmed}`;\n }\n isExternalNavigation(path) {\n const lowerPath = path.trim().toLowerCase();\n return lowerPath.startsWith('http://') || lowerPath.startsWith('https://');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPRootLayoutMenuComponent, isStandalone: true, selector: \"axp-side-menu\", ngImport: i0, template: \"<ax-side-menu look=\\\"pills\\\">\\n @for (item of sort(menuStore.items()); track item) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: item }\\\"> </ng-container>\\n }\\n</ax-side-menu>\\n<ng-template #recursiveMenu let-item=\\\"item\\\">\\n @if (item.type == 'group') {\\n @if (isItemVisible(item)) {\\n <ax-title>{{ item.text | translate | async }}</ax-title>\\n }\\n } @else if (item.type == 'break') {\\n <ax-divider></ax-divider>\\n } @else {\\n @if (shouldRenderMenuItem(item)) {\\n @let routerLinkValue = getRouterLink(item);\\n @if (routerLinkValue) {\\n <ax-side-menu-item [attr.id]=\\\"'axp-menu-item-' + (item.name || item.text)\\\" (onClick)=\\\"onMenuItemClick(item, true)\\\"\\n [routerLink]=\\\"routerLinkValue\\\" [active]=\\\"item === menuStore.selectedMenuItem().item\\\"\\n [isCollapsed]=\\\"!menuStore.isItemOpen(item)\\\">\\n <ax-prefix>\\n <ax-icon [class]=\\\"item.icon\\\" class=\\\"fa-fw\\\"></ax-icon>\\n </ax-prefix>\\n <span>{{ item.text | translate | async }}</span>\\n @if (item.children?.length) {\\n <ng-container>\\n @for (child of sort(item.children); track $index) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: child }\\\">\\n </ng-container>\\n }\\n </ng-container>\\n }\\n <ax-suffix>\\n @if (badgeVisible()) {\\n <ax-badge [axp-task-badge]=\\\"getMenuBadge(item)()\\\" color=\\\"secondary\\\"></ax-badge>\\n }\\n </ax-suffix>\\n </ax-side-menu-item>\\n } @else {\\n <ax-side-menu-item [attr.id]=\\\"'axp-menu-item-' + (item.name || item.text)\\\" (onClick)=\\\"onMenuItemClick(item)\\\"\\n [active]=\\\"item === menuStore.selectedMenuItem().item\\\" [isCollapsed]=\\\"!menuStore.isItemOpen(item)\\\">\\n <ax-prefix>\\n <ax-icon [class]=\\\"item.icon\\\" class=\\\"fa-fw\\\"></ax-icon>\\n </ax-prefix>\\n <span>{{ item.text | translate | async }}</span>\\n @if (item.children?.length) {\\n <ng-container>\\n @for (child of sort(item.children); track $index) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: child }\\\">\\n </ng-container>\\n }\\n </ng-container>\\n }\\n <ax-suffix>\\n @if (badgeVisible()) {\\n <ax-badge [axp-task-badge]=\\\"getMenuBadge(item)()\\\" color=\\\"secondary\\\"></ax-badge>\\n }\\n </ax-suffix>\\n </ax-side-menu-item>\\n }\\n }\\n }\\n</ng-template>\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXSideMenuModule }, { kind: \"component\", type: i2.AXSideMenuComponent, selector: \"ax-side-menu\", inputs: [\"items\", \"look\", \"location\"], outputs: [\"itemsChange\"] }, { kind: \"component\", type: i2.AXSideMenuItemComponent, selector: \"ax-side-menu-item\", inputs: [\"disabled\", \"text\", \"active\", \"isLoading\", \"isCollapsed\", \"toggleOnClick\", \"href\", \"routerLink\", \"routerLinkActive\", \"routerLinkActiveOptions\", \"target\"], outputs: [\"textChange\", \"activeChange\", \"isLoadingChange\", \"isCollapsedChange\", \"onClick\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: AXPTaskBadgeDirective, selector: \"[axp-task-badge]\", inputs: [\"badgeKey\", \"axp-task-badge\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i4.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i5.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: AXPRootLayoutMenuComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-side-menu', encapsulation: ViewEncapsulation.None, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXSideMenuModule,\n AXTranslationModule,\n AXPTaskBadgeDirective,\n AXDecoratorModule,\n AXBadgeModule,\n ], template: \"<ax-side-menu look=\\\"pills\\\">\\n @for (item of sort(menuStore.items()); track item) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: item }\\\"> </ng-container>\\n }\\n</ax-side-menu>\\n<ng-template #recursiveMenu let-item=\\\"item\\\">\\n @if (item.type == 'group') {\\n @if (isItemVisible(item)) {\\n <ax-title>{{ item.text | translate | async }}</ax-title>\\n }\\n } @else if (item.type == 'break') {\\n <ax-divider></ax-divider>\\n } @else {\\n @if (shouldRenderMenuItem(item)) {\\n @let routerLinkValue = getRouterLink(item);\\n @if (routerLinkValue) {\\n <ax-side-menu-item [attr.id]=\\\"'axp-menu-item-' + (item.name || item.text)\\\" (onClick)=\\\"onMenuItemClick(item, true)\\\"\\n [routerLink]=\\\"routerLinkValue\\\" [active]=\\\"item === menuStore.selectedMenuItem().item\\\"\\n [isCollapsed]=\\\"!menuStore.isItemOpen(item)\\\">\\n <ax-prefix>\\n <ax-icon [class]=\\\"item.icon\\\" class=\\\"fa-fw\\\"></ax-icon>\\n </ax-prefix>\\n <span>{{ item.text | translate | async }}</span>\\n @if (item.children?.length) {\\n <ng-container>\\n @for (child of sort(item.children); track $index) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: child }\\\">\\n </ng-container>\\n }\\n </ng-container>\\n }\\n <ax-suffix>\\n @if (badgeVisible()) {\\n <ax-badge [axp-task-badge]=\\\"getMenuBadge(item)()\\\" color=\\\"secondary\\\"></ax-badge>\\n }\\n </ax-suffix>\\n </ax-side-menu-item>\\n } @else {\\n <ax-side-menu-item [attr.id]=\\\"'axp-menu-item-' + (item.name || item.text)\\\" (onClick)=\\\"onMenuItemClick(item)\\\"\\n [active]=\\\"item === menuStore.selectedMenuItem().item\\\" [isCollapsed]=\\\"!menuStore.isItemOpen(item)\\\">\\n <ax-prefix>\\n <ax-icon [class]=\\\"item.icon\\\" class=\\\"fa-fw\\\"></ax-icon>\\n </ax-prefix>\\n <span>{{ item.text | translate | async }}</span>\\n @if (item.children?.length) {\\n <ng-container>\\n @for (child of sort(item.children); track $index) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: child }\\\">\\n </ng-container>\\n }\\n </ng-container>\\n }\\n <ax-suffix>\\n @if (badgeVisible()) {\\n <ax-badge [axp-task-badge]=\\\"getMenuBadge(item)()\\\" color=\\\"secondary\\\"></ax-badge>\\n }\\n </ax-suffix>\\n </ax-side-menu-item>\\n }\\n }\\n }\\n</ng-template>\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL3Jvb3QtbGF5b3V0L2NvbXBvbmVudHMvc2lkZS1tZW51L3NpZGUtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9yb290LWxheW91dC9jb21wb25lbnRzL3NpZGUtbWVudS9zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBZSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwSCxPQUFPLEVBQXFCLGdCQUFnQixFQUE0QixNQUFNLHVCQUF1QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENB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QU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGFBQWE7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTaWRlTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zaWRlLW1lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBNZW51SXRlbSwgQVhQTWVudVNlcnZpY2UsIEFYUE1lbnVWaXNpYmlsaXR5U2VydmljZSwgQVhQU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRXhlY3V0ZUNvbW1hbmQsIEFYUFBsYXRmb3JtU2NvcGUsIEFYUE5hdmlnYXRlQWN0aW9uQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBNZW51QmFkZ2VIZWxwZXIsIEFYUFRhc2tCYWRnZURpcmVjdGl2ZSwgQVhQVGFza0JhZGdlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQVGhlbWVMYXlvdXRTZXR0aW5nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCwgU2lnbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1zaWRlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhTaWRlTWVudU1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIEFYUFRhc2tCYWRnZURpcmVjdGl2ZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWEJhZGdlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSb290TGF5b3V0TWVudUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBtZW51U3RvcmUgPSBpbmplY3QoQVhQTWVudVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByb3RlY3RlZCBiYWRnZVNlcnZpY2UgPSBpbmplY3QoQVhQVGFza0JhZGdlU2VydmljZSk7XG4gIHByb3RlY3RlZCBzZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHZpc2liaWxpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUE1lbnVWaXNpYmlsaXR5U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGJhZGdlVmlzaWJsZSA9IHNpZ25hbCh0cnVlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBEZWJ1ZzogVHJhY2sgbWVudSBpdGVtcyBjaGFuZ2VzXG4gICAgLy8gZWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGl0ZW1zID0gdGhpcy5tZW51U3RvcmUuaXRlbXMoKTtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCfwn46vIFNpZGViYXIgbWVudSBpdGVtcyB1cGRhdGVkOicsIGl0ZW1zLm1hcChpID0+ICh7IG5hbWU6IGkubmFtZSwgcHJpb3JpdHk6IGkucHJpb3JpdHkgfSkpKTtcbiAgICAvLyB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYmFkZ2VWaXNpYmxlLnNldChcbiAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuZ2V0PGJvb2xlYW4+KEFYUFRoZW1lTGF5b3V0U2V0dGluZy5NZW51QmFkZ2VWaXNpYmxlKSxcbiAgICApO1xuICAgIC8vc3Vic2NyaWJlIHRvIGNoYW5nZXNcbiAgICB0aGlzLnNldHRpbmdzU2VydmljZS5vbkNoYW5nZWQuc3Vic2NyaWJlKChzZXR0aW5nKSA9PiB7XG4gICAgICBpZiAoc2V0dGluZy5rZXlzLmluY2x1ZGVzKEFYUFRoZW1lTGF5b3V0U2V0dGluZy5NZW51QmFkZ2VWaXNpYmxlKSkge1xuICAgICAgICB0aGlzLmJhZGdlVmlzaWJsZS5zZXQoc2V0dGluZy52YWx1ZXNbQVhQVGhlbWVMYXlvdXRTZXR0aW5nLk1lbnVCYWRnZVZpc2libGVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uTWVudUl0ZW1DbGljayhpdGVtOiBBWFBNZW51SXRlbSwgaGFzUm91dGVyTGluaz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaGFzUm91dGVyTGluayB8fCBpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tZW51U3RvcmUuZXhlY3V0ZUNvbW1hbmQoaXRlbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydChpdGVtczogQVhQTWVudUl0ZW1bXSk6IEFYUE1lbnVJdGVtW10ge1xuICAgIHJldHVybiBzb3J0QnkoaXRlbXMsIFsoYykgPT4gYy5wcmlvcml0eSA/PyAwLCAoYykgPT4gYy50ZXh0XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TWVudUJhZGdlKGl0ZW06IEFYUE1lbnVJdGVtKTogU2lnbmFsPG51bWJlcj4ge1xuICAgIHJldHVybiBBWFBNZW51QmFkZ2VIZWxwZXIuZ2V0VG90YWxDb3VudChpdGVtLCB0aGlzLmJhZGdlU2VydmljZSk7XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIE1lbnUgVmlzaWJpbGl0eSBIZWxwZXJzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBtZW51IGl0ZW0gc2hvdWxkIGJlIHZpc2libGUgYmFzZWQgb24gcGVybWlzc2lvbnMgYW5kIGZlYXR1cmVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzSXRlbVZpc2libGUoaXRlbTogQVhQTWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmlsaXR5U2VydmljZS5pc0l0ZW1WaXNpYmxlKGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBtZW51IGl0ZW0gc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgKiBBIG1lbnUgaXRlbSBzaG91bGQgYmUgcmVuZGVyZWQgaWY6XG4gICAqIDEuIEl0IGhhcyBhIHJvdXRlckxpbmssIE9SXG4gICAqIDIuIEl0IGhhcyB2aXNpYmxlIGNoaWxkcmVuLCBPUlxuICAgKiAzLiBJdCBoYXMgYSBjb21tYW5kIChmb3Igbm9uLXJvdXRlciBuYXZpZ2F0aW9uKVxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZFJlbmRlck1lbnVJdGVtKGl0ZW06IEFYUE1lbnVJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2Uuc2hvdWxkUmVuZGVyTWVudUl0ZW0oaXRlbSwgKGl0ZW0pID0+IHRoaXMuZ2V0Um91dGVyTGluayhpdGVtKSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIE1lbnUgTmF2aWdhdGlvbiBIZWxwZXJzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBVcmxUcmVlIHRoYXQgY2FuIGJlIGNvbnN1bWVkIGJ5IHRoZSByb3V0ZXJMaW5rIGRpcmVjdGl2ZSB3aGVuIHRoZSBtZW51IGl0ZW0gdGFyZ2V0c1xuICAgKiBhbiBpbnRlcm5hbCByb3V0ZS4gV2hlbiB0aGUgaXRlbSBkb2VzIG5vdCByZXByZXNlbnQgYW4gaW50ZXJuYWwgcm91dGUsIG51bGwgaXMgcmV0dXJuZWQgc28gdGhlXG4gICAqIGNvbW1hbmQgZXhlY3V0aW9uIHBpcGVsaW5lIHJlbWFpbnMgcmVzcG9uc2libGUgZm9yIG5hdmlnYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Um91dGVyTGluayhpdGVtOiBBWFBNZW51SXRlbSk6IFVybFRyZWUgfCBudWxsIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5leHRyYWN0Um91dGVyTmF2aWdhdGlvbihpdGVtKTtcbiAgICBpZiAoIW5hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1JvdXRlckxpbmtDb21wYXRpYmxlKG5hdmlnYXRpb24pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHRoaXMubm9ybWFsaXplUm91dGVyUGF0aChuYXZpZ2F0aW9uLnBhdGgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5wYXJzZVVybChub3JtYWxpemVkUGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGNyZWF0ZSByb3V0ZXIgbGluayBmb3IgbWVudSBpdGVtLicsIHsgaXRlbSwgZXJyb3IgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgaW50ZXJuYWwgbmF2aWdhdGlvbiBkYXRhIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBwcm92aWRlZCB2aWEgdGhlIGxlZ2FjeSBgcGF0aGBcbiAgICogcHJvcGVydHksIGEgZGlyZWN0IG5hdmlnYXRlIGNvbW1hbmQsIG9yIHRoZSBleGVjdXRpb24gY29tbWFuZCB3cmFwcGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0Um91dGVyTmF2aWdhdGlvbihpdGVtOiBBWFBNZW51SXRlbSk6IE1lbnVSb3V0ZXJOYXZpZ2F0aW9uIHwgbnVsbCB7XG4gICAgaWYgKGl0ZW0ucGF0aCkge1xuICAgICAgcmV0dXJuIHsgcGF0aDogaXRlbS5wYXRoIH07XG4gICAgfVxuXG4gICAgY29uc3QgY29tbWFuZCA9IGl0ZW0uY29tbWFuZDtcbiAgICBpZiAoIWNvbW1hbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5hdmlnYXRlQ29tbWFuZCA9IGNvbW1hbmQgYXMgQVhQTmF2aWdhdGVBY3Rpb25Db21tYW5kPCdyb3V0ZXInPjtcbiAgICBpZiAobmF2aWdhdGVDb21tYW5kPy50eXBlID09PSAncm91dGVyJyAmJiB0eXBlb2YgbmF2aWdhdGVDb21tYW5kLm9wdGlvbnM/LnBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiBuYXZpZ2F0ZUNvbW1hbmQub3B0aW9ucy5wYXRoLFxuICAgICAgICBleHRyYXM6IG5hdmlnYXRlQ29tbWFuZC5vcHRpb25zLmV4dHJhcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0ZUNvbW1hbmQgPSBjb21tYW5kIGFzIEFYUEV4ZWN1dGVDb21tYW5kO1xuICAgIGlmIChleGVjdXRlQ29tbWFuZD8ub3B0aW9ucyAmJiB0eXBlb2YgZXhlY3V0ZUNvbW1hbmQub3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmRPcHRpb25zID0gZXhlY3V0ZUNvbW1hbmQub3B0aW9ucyBhcyBNZW51Um91dGVyQ29tbWFuZE9wdGlvbnM7XG5cbiAgICAgIGlmIChjb21tYW5kT3B0aW9ucz8udHlwZSA9PT0gJ3JvdXRlcicpIHtcbiAgICAgICAgY29uc3Qgcm91dGVyT3B0aW9ucyA9IGNvbW1hbmRPcHRpb25zLm9wdGlvbnMgPz8gY29tbWFuZE9wdGlvbnM7XG4gICAgICAgIGlmICh0eXBlb2Ygcm91dGVyT3B0aW9ucz8ucGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGF0aDogcm91dGVyT3B0aW9ucy5wYXRoLFxuICAgICAgICAgICAgZXh0cmFzOiByb3V0ZXJPcHRpb25zLmV4dHJhcyxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgY29tbWFuZE9wdGlvbnM/LnBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB7IHBhdGg6IGNvbW1hbmRPcHRpb25zLnBhdGggfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgcm91dGVyTGluayBjYW4gc2FmZWx5IGJlIHVzZWQgYmFzZWQgb24gdGhlIHRhcmdldCBwYXRoIGFuZCBuYXZpZ2F0aW9uXG4gICAqIGV4dHJhcy4gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWlyZXMgYWRkaXRpb25hbCBydW50aW1lIGJlaGF2aW91ciAoZS5nLiwgb3BlbmluZyBpbiBhIG5ldyB0YWIpLFxuICAgKiB3ZSBmYWxsYmFjayB0byB0aGUgaW1wZXJhdGl2ZSBjb21tYW5kIHBpcGVsaW5lLlxuICAgKi9cbiAgcHJpdmF0ZSBpc1JvdXRlckxpbmtDb21wYXRpYmxlKG5hdmlnYXRpb246IE1lbnVSb3V0ZXJOYXZpZ2F0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCFuYXZpZ2F0aW9uLnBhdGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0V4dGVybmFsTmF2aWdhdGlvbihuYXZpZ2F0aW9uLnBhdGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0cmFzID0gbmF2aWdhdGlvbi5leHRyYXM7XG4gICAgaWYgKCFleHRyYXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICgoZXh0cmFzIGFzIE1lbnVSb3V0ZXJFeHRyYXMpLnRhcmdldCA9PT0gJ2JsYW5rJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHVuc3VwcG9ydGVkS2V5czogKGtleW9mIE5hdmlnYXRpb25FeHRyYXMpW10gPSBbJ3NraXBMb2NhdGlvbkNoYW5nZScsICdyZXBsYWNlVXJsJywgJ3N0YXRlJ107XG4gICAgcmV0dXJuICF1bnN1cHBvcnRlZEtleXMuc29tZSgoa2V5KSA9PiBleHRyYXNba2V5XSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHJvdXRlciBsaW5rcyBpbmNsdWRlIGEgbGVhZGluZyBzbGFzaCB3aGlsZSBwcmVzZXJ2aW5nIGFueSBxdWVyeSBwYXJhbWV0ZXJzIG9yXG4gICAqIGZyYWdtZW50cyBwcmVzZW50IGluIHRoZSBvcmlnaW5hbCBwYXRoLlxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVSb3V0ZXJQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHBhdGgudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cmltbWVkO1xuICAgIH1cblxuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJy8nKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJz8nKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgcmV0dXJuIHRyaW1tZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAvJHt0cmltbWVkfWA7XG4gIH1cblxuICBwcml2YXRlIGlzRXh0ZXJuYWxOYXZpZ2F0aW9uKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxvd2VyUGF0aCA9IHBhdGgudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxvd2VyUGF0aC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgbG93ZXJQYXRoLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJyk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxudHlwZSBNZW51Um91dGVyRXh0cmFzID0gTmF2aWdhdGlvbkV4dHJhcyAmIHsgdGFyZ2V0Pzogc3RyaW5nIH07XG5cbnR5cGUgTWVudVJvdXRlckNvbW1hbmRPcHRpb25zID0ge1xuICB0eXBlPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBleHRyYXM/OiBNZW51Um91dGVyRXh0cmFzO1xuICBvcHRpb25zPzoge1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgZXh0cmFzPzogTWVudVJvdXRlckV4dHJhcztcbiAgfTtcbn07XG5cbnR5cGUgTWVudVJvdXRlck5hdmlnYXRpb24gPSB7XG4gIHBhdGg6IHN0cmluZztcbiAgZXh0cmFzPzogTWVudVJvdXRlckV4dHJhcztcbn07XG4iLCI8YXgtc2lkZS1tZW51IGxvb2s9XCJwaWxsc1wiPlxuICBAZm9yIChpdGVtIG9mIHNvcnQobWVudVN0b3JlLml0ZW1zKCkpOyB0cmFjayBpdGVtKSB7XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicmVjdXJzaXZlTWVudVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgfVxuPC9heC1zaWRlLW1lbnU+XG48bmctdGVtcGxhdGUgI3JlY3Vyc2l2ZU1lbnUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIEBpZiAoaXRlbS50eXBlID09ICdncm91cCcpIHtcbiAgQGlmIChpc0l0ZW1WaXNpYmxlKGl0ZW0pKSB7XG4gIDxheC10aXRsZT57eyBpdGVtLnRleHQgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvYXgtdGl0bGU+XG4gIH1cbiAgfSBAZWxzZSBpZiAoaXRlbS50eXBlID09ICdicmVhaycpIHtcbiAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICB9IEBlbHNlIHtcbiAgQGlmIChzaG91bGRSZW5kZXJNZW51SXRlbShpdGVtKSkge1xuICBAbGV0IHJvdXRlckxpbmtWYWx1ZSA9IGdldFJvdXRlckxpbmsoaXRlbSk7XG4gIEBpZiAocm91dGVyTGlua1ZhbHVlKSB7XG4gIDxheC1zaWRlLW1lbnUtaXRlbSBbYXR0ci5pZF09XCInYXhwLW1lbnUtaXRlbS0nICsgKGl0ZW0ubmFtZSB8fCBpdGVtLnRleHQpXCIgKG9uQ2xpY2spPVwib25NZW51SXRlbUNsaWNrKGl0ZW0sIHRydWUpXCJcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rVmFsdWVcIiBbYWN0aXZlXT1cIml0ZW0gPT09IG1lbnVTdG9yZS5zZWxlY3RlZE1lbnVJdGVtKCkuaXRlbVwiXG4gICAgW2lzQ29sbGFwc2VkXT1cIiFtZW51U3RvcmUuaXNJdGVtT3BlbihpdGVtKVwiPlxuICAgIDxheC1wcmVmaXg+XG4gICAgICA8YXgtaWNvbiBbY2xhc3NdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJmYS1md1wiPjwvYXgtaWNvbj5cbiAgICA8L2F4LXByZWZpeD5cbiAgICA8c3Bhbj57eyBpdGVtLnRleHQgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICBAaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgIDxuZy1jb250YWluZXI+XG4gICAgICBAZm9yIChjaGlsZCBvZiBzb3J0KGl0ZW0uY2hpbGRyZW4pOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicmVjdXJzaXZlTWVudVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGNoaWxkIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICA8YXgtc3VmZml4PlxuICAgICAgQGlmIChiYWRnZVZpc2libGUoKSkge1xuICAgICAgPGF4LWJhZGdlIFtheHAtdGFzay1iYWRnZV09XCJnZXRNZW51QmFkZ2UoaXRlbSkoKVwiIGNvbG9yPVwic2Vjb25kYXJ5XCI+PC9heC1iYWRnZT5cbiAgICAgIH1cbiAgICA8L2F4LXN1ZmZpeD5cbiAgPC9heC1zaWRlLW1lbnUtaXRlbT5cbiAgfSBAZWxzZSB7XG4gIDxheC1zaWRlLW1lbnUtaXRlbSBbYXR0ci5pZF09XCInYXhwLW1lbnUtaXRlbS0nICsgKGl0ZW0ubmFtZSB8fCBpdGVtLnRleHQpXCIgKG9uQ2xpY2spPVwib25NZW51SXRlbUNsaWNrKGl0ZW0pXCJcbiAgICBbYWN0aXZlXT1cIml0ZW0gPT09IG1lbnVTdG9yZS5zZWxlY3RlZE1lbnVJdGVtKCkuaXRlbVwiIFtpc0NvbGxhcHNlZF09XCIhbWVudVN0b3JlLmlzSXRlbU9wZW4oaXRlbSlcIj5cbiAgICA8YXgtcHJlZml4PlxuICAgICAgPGF4LWljb24gW2NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiZmEtZndcIj48L2F4LWljb24+XG4gICAgPC9heC1wcmVmaXg+XG4gICAgPHNwYW4+e3sgaXRlbS50ZXh0IHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgQGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgQGZvciAoY2hpbGQgb2Ygc29ydChpdGVtLmNoaWxkcmVuKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlY3Vyc2l2ZU1lbnVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtOiBjaGlsZCB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgPGF4LXN1ZmZpeD5cbiAgICAgIEBpZiAoYmFkZ2VWaXNpYmxlKCkpIHtcbiAgICAgIDxheC1iYWRnZSBbYXhwLXRhc2stYmFkZ2VdPVwiZ2V0TWVudUJhZGdlKGl0ZW0pKClcIiBjb2xvcj1cInNlY29uZGFyeVwiPjwvYXgtYmFkZ2U+XG4gICAgICB9XG4gICAgPC9heC1zdWZmaXg+XG4gIDwvYXgtc2lkZS1tZW51LWl0ZW0+XG4gIH1cbiAgfVxuICB9XG48L25nLXRlbXBsYXRlPiJdfQ==","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_PLATFORM_CONFIG_TOKEN, AXPMenuService, AXPMenuVisibilityService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { AXPComponentSlotModule, AXPTaskBadgeService, AXPMenuBadgeHelper } from '@acorex/platform/layout/components';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPLayoutThemeService, AXPThemeLayoutSetting } from '@acorex/platform/themes/shared';\nimport { AXPTaskBadgeDirective } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport sortBy from 'lodash-es/sortBy';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/platform/layout/components\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/menu\";\nimport * as i5 from \"@acorex/components/badge\";\nimport * as i6 from \"@acorex/core/translation\";\nexport class AXPHorizontalMenuComponent {\n constructor() {\n this.platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);\n this.menuStore = inject(AXPMenuService);\n this.router = inject(Router);\n this.layoutService = inject(AXPLayoutThemeService);\n this.badgeService = inject(AXPTaskBadgeService);\n this.settingsService = inject(AXPSettingsService);\n this.visibilityService = inject(AXPMenuVisibilityService);\n this.badgeVisible = signal(true, ...(ngDevMode ? [{ debugName: \"badgeVisible\" }] : []));\n }\n async ngOnInit() {\n this.badgeVisible.set(await this.settingsService.scope(AXPPlatformScope.User).get(AXPThemeLayoutSetting.MenuBadgeVisible));\n //subscribe to changes\n this.settingsService.onChanged.subscribe(setting => {\n if (setting.keys.includes(AXPThemeLayoutSetting.MenuBadgeVisible)) {\n this.badgeVisible.set(setting.values[AXPThemeLayoutSetting.MenuBadgeVisible]);\n }\n });\n }\n onMenuItemClick(item) {\n if (!item.children?.length) {\n this.menuStore.executeCommand(item);\n }\n }\n sort(items) {\n return sortBy(items, [c => c.priority ?? 0, c => c.text]);\n }\n getMenuBadge(item) {\n return AXPMenuBadgeHelper.getTotalCount(item, this.badgeService);\n }\n //#region ---- Menu Visibility Helpers ----\n /**\n * Checks if a menu item should be visible based on permissions and features.\n */\n isItemVisible(item) {\n return this.visibilityService.isItemVisible(item);\n }\n /**\n * Determines if a menu item should be rendered.\n * A menu item should be rendered if:\n * 1. It has a routerLink, OR\n * 2. It has visible children, OR\n * 3. It has a command (for non-router navigation)\n */\n shouldRenderMenuItem(item) {\n return this.visibilityService.shouldRenderMenuItem(item, (item) => this.getRouterLink(item));\n }\n //#endregion\n //#region ---- Menu Navigation Helpers ----\n /**\n * Builds a UrlTree that can be consumed by the routerLink directive when the menu item targets\n * an internal route. When the item does not represent an internal route, null is returned so the\n * command execution pipeline remains responsible for navigation.\n */\n getRouterLink(item) {\n const navigation = this.extractRouterNavigation(item);\n if (!navigation) {\n return null;\n }\n if (!this.isRouterLinkCompatible(navigation)) {\n return null;\n }\n const normalizedPath = this.normalizeRouterPath(navigation.path);\n try {\n return this.router.parseUrl(normalizedPath);\n }\n catch (error) {\n console.warn('Failed to create router link for menu item.', { item, error });\n return null;\n }\n }\n /**\n * Extracts internal navigation data regardless of whether it is provided via the legacy `path`\n * property, a direct navigate command, or the execution command wrapper.\n */\n extractRouterNavigation(item) {\n if (item.path) {\n return { path: item.path };\n }\n const command = item.command;\n if (!command) {\n return null;\n }\n const navigateCommand = command;\n if (navigateCommand?.type === 'router' && typeof navigateCommand.options?.path === 'string') {\n return {\n path: navigateCommand.options.path,\n extras: navigateCommand.options.extras,\n };\n }\n const executeCommand = command;\n if (executeCommand?.options && typeof executeCommand.options === 'object') {\n const commandOptions = executeCommand.options;\n if (commandOptions?.type === 'router') {\n const routerOptions = commandOptions.options ?? commandOptions;\n if (typeof routerOptions?.path === 'string') {\n return {\n path: routerOptions.path,\n extras: routerOptions.extras,\n };\n }\n }\n if (typeof commandOptions?.path === 'string') {\n return { path: commandOptions.path };\n }\n }\n return null;\n }\n /**\n * Determines whether routerLink can safely be used based on the target path and navigation\n * extras. If the navigation requires additional runtime behaviour (e.g., opening in a new tab),\n * we fallback to the imperative command pipeline.\n */\n isRouterLinkCompatible(navigation) {\n if (!navigation.path) {\n return false;\n }\n if (this.isExternalNavigation(navigation.path)) {\n return false;\n }\n const extras = navigation.extras;\n if (!extras) {\n return true;\n }\n if (extras.target === 'blank') {\n return false;\n }\n const unsupportedKeys = ['skipLocationChange', 'replaceUrl', 'state'];\n return !unsupportedKeys.some((key) => extras[key] !== undefined);\n }\n /**\n * Ensures router links include a leading slash while preserving any query parameters or\n * fragments present in the original path.\n */\n normalizeRouterPath(path) {\n const trimmed = path.trim();\n if (!trimmed.length) {\n return trimmed;\n }\n if (trimmed.startsWith('/') || trimmed.startsWith('?') || trimmed.startsWith('#')) {\n return trimmed;\n }\n return `/${trimmed}`;\n }\n isExternalNavigation(path) {\n const lowerPath = path.trim().toLowerCase();\n return lowerPath.startsWith('http://') || lowerPath.startsWith('https://');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPHorizontalMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPHorizontalMenuComponent, isStandalone: true, selector: \"axp-horizontal-menu\", host: { classAttribute: \"ax-light\" }, ngImport: i0, template: \"<div\\n class=\\\"ax-w-full ax-flex ax-items-center ax-justify-between ax-gap-1 ax-bg-primary-surface ax-text-primary-on-surface ax-h-14 ax-px-4\\\"\\n>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-logo\\n [source]=\\\"platformConfig.logo?.full?.dark\\\"\\n [attr.alt]=\\\"platformConfig.title\\\"\\n class=\\\"ax-mx-auto ax-text-2xl\\\"\\n ></axp-logo>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-header-start\\\"></axp-component-slot>\\n <axp-component-slot name=\\\"root-header-end\\\"></axp-component-slot>\\n </div>\\n</div>\\n\\n<div class=\\\"__menu-bar\\\">\\n <ax-menu [orientation]=\\\"'horizontal'\\\" [class.ax-dark]=\\\"layoutService.isDarkMode()\\\" [hasArrow]=\\\"true\\\">\\n @for (item of sort(menuStore.items()); track item) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: item }\\\"> </ng-container>\\n }\\n <!-- Item Templates -->\\n <ng-template #recursiveMenu let-item=\\\"item\\\">\\n @if (item.type == 'group') {\\n @if (isItemVisible(item)) {\\n <ax-title>{{ item.text | translate | async }}</ax-title>\\n }\\n } @else if (item.type == 'break') {\\n <ax-divider></ax-divider>\\n } @else {\\n @if (shouldRenderMenuItem(item)) {\\n <ax-menu-item (onClick)=\\\"onMenuItemClick(item)\\\">\\n @if (!item.meta?.isRoot) {\\n <ax-prefix>\\n <ax-icon [class]=\\\"item.icon\\\" class=\\\"fa-fw\\\"></ax-icon>\\n </ax-prefix>\\n }\\n <ax-text> {{ item.text | translate | async }}</ax-text>\\n @if (item.children?.length) {\\n <ng-container>\\n @for (child of sort(item.children); track child) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: child }\\\">\\n </ng-container>\\n }\\n </ng-container>\\n }\\n <ax-suffix>\\n @if (badgeVisible()) {\\n <ax-badge [axp-task-badge]=\\\"getMenuBadge(item)()\\\" color=\\\"secondary\\\"></ax-badge>\\n }\\n </ax-suffix>\\n </ax-menu-item>\\n }\\n }\\n </ng-template>\\n </ax-menu>\\n</div>\\n<!-- <div class=\\\"__tab-bar\\\">\\n<div class=\\\"axp-tabs-item axp-state-active\\\">\\n <span class=\\\"ax-font-medium\\\">Account</span>\\n <i class=\\\"fa-light fa-times ax-text-sm\\\"></i>\\n</div>\\n<div class=\\\"axp-tabs-item\\\">\\n <span class=\\\"ax-font-medium\\\">Projects</span>\\n\\n</div>\\n</div> -->\\n\", styles: [\".__tab-bar{display:flex;height:3rem;width:100%;align-items:flex-end;gap:.5rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-darker-surface),var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-darker-surface),var(--tw-text-opacity, 1))}.__tab-bar .axp-tabs-item{display:flex;height:2.5rem;cursor:pointer;align-items:center;justify-content:space-between;gap:.5rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem;line-height:1}.__tab-bar .axp-tabs-item:hover,.__tab-bar .axp-tabs-item.axp-state-active{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}.__menu-bar{display:flex;width:100%;align-items:flex-end;gap:.5rem;overflow-x:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-dark-surface),var(--tw-bg-opacity, 1));padding:.375rem 1rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-dark-surface),var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXPComponentSlotModule }, { kind: \"directive\", type: i2.AXPComponentSlotDirective, selector: \"axp-component-slot\", inputs: [\"name\", \"host\", \"context\"], exportAs: [\"slot\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXPLogoComponent, selector: \"axp-logo\", inputs: [\"source\"] }, { kind: \"ngmodule\", type: AXMenuModule }, { kind: \"component\", type: i4.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i4.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: AXPTaskBadgeDirective, selector: \"[axp-task-badge]\", inputs: [\"badgeKey\", \"axp-task-badge\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i5.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i6.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: AXPHorizontalMenuComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-horizontal-menu', host: { class: 'ax-light' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXPComponentSlotModule,\n AXDecoratorModule,\n AXPLogoComponent,\n AXMenuModule,\n AXTranslationModule,\n AXPTaskBadgeDirective,\n AXBadgeModule,\n ], template: \"<div\\n class=\\\"ax-w-full ax-flex ax-items-center ax-justify-between ax-gap-1 ax-bg-primary-surface ax-text-primary-on-surface ax-h-14 ax-px-4\\\"\\n>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-logo\\n [source]=\\\"platformConfig.logo?.full?.dark\\\"\\n [attr.alt]=\\\"platformConfig.title\\\"\\n class=\\\"ax-mx-auto ax-text-2xl\\\"\\n ></axp-logo>\\n </div>\\n <div class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n <axp-component-slot name=\\\"root-header-start\\\"></axp-component-slot>\\n <axp-component-slot name=\\\"root-header-end\\\"></axp-component-slot>\\n </div>\\n</div>\\n\\n<div class=\\\"__menu-bar\\\">\\n <ax-menu [orientation]=\\\"'horizontal'\\\" [class.ax-dark]=\\\"layoutService.isDarkMode()\\\" [hasArrow]=\\\"true\\\">\\n @for (item of sort(menuStore.items()); track item) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: item }\\\"> </ng-container>\\n }\\n <!-- Item Templates -->\\n <ng-template #recursiveMenu let-item=\\\"item\\\">\\n @if (item.type == 'group') {\\n @if (isItemVisible(item)) {\\n <ax-title>{{ item.text | translate | async }}</ax-title>\\n }\\n } @else if (item.type == 'break') {\\n <ax-divider></ax-divider>\\n } @else {\\n @if (shouldRenderMenuItem(item)) {\\n <ax-menu-item (onClick)=\\\"onMenuItemClick(item)\\\">\\n @if (!item.meta?.isRoot) {\\n <ax-prefix>\\n <ax-icon [class]=\\\"item.icon\\\" class=\\\"fa-fw\\\"></ax-icon>\\n </ax-prefix>\\n }\\n <ax-text> {{ item.text | translate | async }}</ax-text>\\n @if (item.children?.length) {\\n <ng-container>\\n @for (child of sort(item.children); track child) {\\n <ng-container [ngTemplateOutlet]=\\\"recursiveMenu\\\" [ngTemplateOutletContext]=\\\"{ item: child }\\\">\\n </ng-container>\\n }\\n </ng-container>\\n }\\n <ax-suffix>\\n @if (badgeVisible()) {\\n <ax-badge [axp-task-badge]=\\\"getMenuBadge(item)()\\\" color=\\\"secondary\\\"></ax-badge>\\n }\\n </ax-suffix>\\n </ax-menu-item>\\n }\\n }\\n </ng-template>\\n </ax-menu>\\n</div>\\n<!-- <div class=\\\"__tab-bar\\\">\\n<div class=\\\"axp-tabs-item axp-state-active\\\">\\n <span class=\\\"ax-font-medium\\\">Account</span>\\n <i class=\\\"fa-light fa-times ax-text-sm\\\"></i>\\n</div>\\n<div class=\\\"axp-tabs-item\\\">\\n <span class=\\\"ax-font-medium\\\">Projects</span>\\n\\n</div>\\n</div> -->\\n\", styles: [\".__tab-bar{display:flex;height:3rem;width:100%;align-items:flex-end;gap:.5rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-darker-surface),var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-darker-surface),var(--tw-text-opacity, 1))}.__tab-bar .axp-tabs-item{display:flex;height:2.5rem;cursor:pointer;align-items:center;justify-content:space-between;gap:.5rem;border-top-left-radius:.5rem;border-top-right-radius:.5rem;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem;line-height:1}.__tab-bar .axp-tabs-item:hover,.__tab-bar .axp-tabs-item.axp-state-active{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}.__menu-bar{display:flex;width:100%;align-items:flex-end;gap:.5rem;overflow-x:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-dark-surface),var(--tw-bg-opacity, 1));padding:.375rem 1rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-dark-surface),var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL3Jvb3QtbGF5b3V0L2NvbXBvbmVudHMvaG9yaXpvbnRhbC1tZW51L2hvcml6b250YWwtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9yb290LWxheW91dC9jb21wb25lbnRzL2hvcml6b250YWwtbWVudS9ob3Jpem9udGFsLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQWUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0ksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckgsT0FBTyxFQUFxQixnQkFBZ0IsRUFBNEIsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUs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QixnQkFBZ0Isd0VBQ2hCLFlBQVkscVZBQ1osbUJBQW1CLCtCQUNuQixxQkFBcUIsb0dBQ3JCLGFBQWE7OzRGQUlSLDBCQUEwQjtrQkFwQnRDLFNBQVM7K0JBQ0kscUJBQXFCLFFBR3pCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxpQkFDWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFdBRXRDO3dCQUNMLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsYUFBYTtxQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhNZW51TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOLCBBWFBNZW51SXRlbSwgQVhQTWVudVNlcnZpY2UsIEFYUE1lbnVWaXNpYmlsaXR5U2VydmljZSwgQVhQU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQTG9nb0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSwgQVhQVGFza0JhZGdlU2VydmljZSwgQVhQTWVudUJhZGdlSGVscGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBFeGVjdXRlQ29tbWFuZCwgQVhQUGxhdGZvcm1TY29wZSwgQVhQTmF2aWdhdGVBY3Rpb25Db21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUExheW91dFRoZW1lU2VydmljZSwgQVhQVGhlbWVMYXlvdXRTZXR0aW5nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IEFYUFRhc2tCYWRnZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsLCBTaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gtZXMvc29ydEJ5JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtaG9yaXpvbnRhbC1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaG9yaXpvbnRhbC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaG9yaXpvbnRhbC1tZW51LmNvbXBvbmVudC5zY3NzJyxcbiAgICBob3N0OiB7IGNsYXNzOiAnYXgtbGlnaHQnIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBWFBDb21wb25lbnRTbG90TW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhQTG9nb0NvbXBvbmVudCxcbiAgICAgICAgQVhNZW51TW9kdWxlLFxuICAgICAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgICAgICBBWFBUYXNrQmFkZ2VEaXJlY3RpdmUsXG4gICAgICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgXSxcblxufSlcbmV4cG9ydCBjbGFzcyBBWFBIb3Jpem9udGFsTWVudUNvbXBvbmVudCB7XG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtQ29uZmlnID0gaW5qZWN0KEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4pO1xuXG4gICAgcHJvdGVjdGVkIG1lbnVTdG9yZSA9IGluamVjdChBWFBNZW51U2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByb3RlY3RlZCBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGJhZGdlU2VydmljZSA9IGluamVjdChBWFBUYXNrQmFkZ2VTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdzU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHZpc2liaWxpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUE1lbnVWaXNpYmlsaXR5U2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgYmFkZ2VWaXNpYmxlID0gc2lnbmFsKHRydWUpO1xuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuYmFkZ2VWaXNpYmxlLnNldChhd2FpdCB0aGlzLnNldHRpbmdzU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpLmdldDxib29sZWFuPihBWFBUaGVtZUxheW91dFNldHRpbmcuTWVudUJhZGdlVmlzaWJsZSkpO1xuICAgICAgICAvL3N1YnNjcmliZSB0byBjaGFuZ2VzXG4gICAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLm9uQ2hhbmdlZC5zdWJzY3JpYmUoc2V0dGluZyA9PiB7XG4gICAgICAgICAgICBpZiAoc2V0dGluZy5rZXlzLmluY2x1ZGVzKEFYUFRoZW1lTGF5b3V0U2V0dGluZy5NZW51QmFkZ2VWaXNpYmxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFkZ2VWaXNpYmxlLnNldChzZXR0aW5nLnZhbHVlc1tBWFBUaGVtZUxheW91dFNldHRpbmcuTWVudUJhZGdlVmlzaWJsZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1lbnVJdGVtQ2xpY2soaXRlbTogQVhQTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVN0b3JlLmV4ZWN1dGVDb21tYW5kKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIHByb3RlY3RlZCBzb3J0KGl0ZW1zOiBBWFBNZW51SXRlbVtdKTogQVhQTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBzb3J0QnkoaXRlbXMsIFtjID0+IGMucHJpb3JpdHkgPz8gMCwgYyA9PiBjLnRleHRdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0TWVudUJhZGdlKGl0ZW06IEFYUE1lbnVJdGVtKTogU2lnbmFsPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gQVhQTWVudUJhZGdlSGVscGVyLmdldFRvdGFsQ291bnQoaXRlbSwgdGhpcy5iYWRnZVNlcnZpY2UpO1xuICAgIH1cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTWVudSBWaXNpYmlsaXR5IEhlbHBlcnMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBtZW51IGl0ZW0gc2hvdWxkIGJlIHZpc2libGUgYmFzZWQgb24gcGVybWlzc2lvbnMgYW5kIGZlYXR1cmVzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0l0ZW1WaXNpYmxlKGl0ZW06IEFYUE1lbnVJdGVtKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmlzSXRlbVZpc2libGUoaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhIG1lbnUgaXRlbSBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAgICogQSBtZW51IGl0ZW0gc2hvdWxkIGJlIHJlbmRlcmVkIGlmOlxuICAgICAqIDEuIEl0IGhhcyBhIHJvdXRlckxpbmssIE9SXG4gICAgICogMi4gSXQgaGFzIHZpc2libGUgY2hpbGRyZW4sIE9SXG4gICAgICogMy4gSXQgaGFzIGEgY29tbWFuZCAoZm9yIG5vbi1yb3V0ZXIgbmF2aWdhdGlvbilcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2hvdWxkUmVuZGVyTWVudUl0ZW0oaXRlbTogQVhQTWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJpbGl0eVNlcnZpY2Uuc2hvdWxkUmVuZGVyTWVudUl0ZW0oaXRlbSwgKGl0ZW0pID0+IHRoaXMuZ2V0Um91dGVyTGluayhpdGVtKSk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIE1lbnUgTmF2aWdhdGlvbiBIZWxwZXJzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIGEgVXJsVHJlZSB0aGF0IGNhbiBiZSBjb25zdW1lZCBieSB0aGUgcm91dGVyTGluayBkaXJlY3RpdmUgd2hlbiB0aGUgbWVudSBpdGVtIHRhcmdldHNcbiAgICAgKiBhbiBpbnRlcm5hbCByb3V0ZS4gV2hlbiB0aGUgaXRlbSBkb2VzIG5vdCByZXByZXNlbnQgYW4gaW50ZXJuYWwgcm91dGUsIG51bGwgaXMgcmV0dXJuZWQgc28gdGhlXG4gICAgICogY29tbWFuZCBleGVjdXRpb24gcGlwZWxpbmUgcmVtYWlucyByZXNwb25zaWJsZSBmb3IgbmF2aWdhdGlvbi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0Um91dGVyTGluayhpdGVtOiBBWFBNZW51SXRlbSk6IFVybFRyZWUgfCBudWxsIHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbiA9IHRoaXMuZXh0cmFjdFJvdXRlck5hdmlnYXRpb24oaXRlbSk7XG4gICAgICAgIGlmICghbmF2aWdhdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNSb3V0ZXJMaW5rQ29tcGF0aWJsZShuYXZpZ2F0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHRoaXMubm9ybWFsaXplUm91dGVyUGF0aChuYXZpZ2F0aW9uLnBhdGgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwobm9ybWFsaXplZFBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gY3JlYXRlIHJvdXRlciBsaW5rIGZvciBtZW51IGl0ZW0uJywgeyBpdGVtLCBlcnJvciB9KTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgaW50ZXJuYWwgbmF2aWdhdGlvbiBkYXRhIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBwcm92aWRlZCB2aWEgdGhlIGxlZ2FjeSBgcGF0aGBcbiAgICAgKiBwcm9wZXJ0eSwgYSBkaXJlY3QgbmF2aWdhdGUgY29tbWFuZCwgb3IgdGhlIGV4ZWN1dGlvbiBjb21tYW5kIHdyYXBwZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBleHRyYWN0Um91dGVyTmF2aWdhdGlvbihpdGVtOiBBWFBNZW51SXRlbSk6IE1lbnVSb3V0ZXJOYXZpZ2F0aW9uIHwgbnVsbCB7XG4gICAgICAgIGlmIChpdGVtLnBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IGl0ZW0ucGF0aCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGl0ZW0uY29tbWFuZDtcbiAgICAgICAgaWYgKCFjb21tYW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hdmlnYXRlQ29tbWFuZCA9IGNvbW1hbmQgYXMgQVhQTmF2aWdhdGVBY3Rpb25Db21tYW5kPCdyb3V0ZXInPjtcbiAgICAgICAgaWYgKG5hdmlnYXRlQ29tbWFuZD8udHlwZSA9PT0gJ3JvdXRlcicgJiYgdHlwZW9mIG5hdmlnYXRlQ29tbWFuZC5vcHRpb25zPy5wYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwYXRoOiBuYXZpZ2F0ZUNvbW1hbmQub3B0aW9ucy5wYXRoLFxuICAgICAgICAgICAgICAgIGV4dHJhczogbmF2aWdhdGVDb21tYW5kLm9wdGlvbnMuZXh0cmFzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4ZWN1dGVDb21tYW5kID0gY29tbWFuZCBhcyBBWFBFeGVjdXRlQ29tbWFuZDtcbiAgICAgICAgaWYgKGV4ZWN1dGVDb21tYW5kPy5vcHRpb25zICYmIHR5cGVvZiBleGVjdXRlQ29tbWFuZC5vcHRpb25zID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZE9wdGlvbnMgPSBleGVjdXRlQ29tbWFuZC5vcHRpb25zIGFzIE1lbnVSb3V0ZXJDb21tYW5kT3B0aW9ucztcblxuICAgICAgICAgICAgaWYgKGNvbW1hbmRPcHRpb25zPy50eXBlID09PSAncm91dGVyJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlck9wdGlvbnMgPSBjb21tYW5kT3B0aW9ucy5vcHRpb25zID8/IGNvbW1hbmRPcHRpb25zO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm91dGVyT3B0aW9ucz8ucGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHJvdXRlck9wdGlvbnMucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhczogcm91dGVyT3B0aW9ucy5leHRyYXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmRPcHRpb25zPy5wYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IGNvbW1hbmRPcHRpb25zLnBhdGggfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciByb3V0ZXJMaW5rIGNhbiBzYWZlbHkgYmUgdXNlZCBiYXNlZCBvbiB0aGUgdGFyZ2V0IHBhdGggYW5kIG5hdmlnYXRpb25cbiAgICAgKiBleHRyYXMuIElmIHRoZSBuYXZpZ2F0aW9uIHJlcXVpcmVzIGFkZGl0aW9uYWwgcnVudGltZSBiZWhhdmlvdXIgKGUuZy4sIG9wZW5pbmcgaW4gYSBuZXcgdGFiKSxcbiAgICAgKiB3ZSBmYWxsYmFjayB0byB0aGUgaW1wZXJhdGl2ZSBjb21tYW5kIHBpcGVsaW5lLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNSb3V0ZXJMaW5rQ29tcGF0aWJsZShuYXZpZ2F0aW9uOiBNZW51Um91dGVyTmF2aWdhdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIW5hdmlnYXRpb24ucGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNFeHRlcm5hbE5hdmlnYXRpb24obmF2aWdhdGlvbi5wYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXh0cmFzID0gbmF2aWdhdGlvbi5leHRyYXM7XG4gICAgICAgIGlmICghZXh0cmFzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoZXh0cmFzIGFzIE1lbnVSb3V0ZXJFeHRyYXMpLnRhcmdldCA9PT0gJ2JsYW5rJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5zdXBwb3J0ZWRLZXlzOiAoa2V5b2YgTmF2aWdhdGlvbkV4dHJhcylbXSA9IFsnc2tpcExvY2F0aW9uQ2hhbmdlJywgJ3JlcGxhY2VVcmwnLCAnc3RhdGUnXTtcbiAgICAgICAgcmV0dXJuICF1bnN1cHBvcnRlZEtleXMuc29tZSgoa2V5KSA9PiBleHRyYXNba2V5XSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbnN1cmVzIHJvdXRlciBsaW5rcyBpbmNsdWRlIGEgbGVhZGluZyBzbGFzaCB3aGlsZSBwcmVzZXJ2aW5nIGFueSBxdWVyeSBwYXJhbWV0ZXJzIG9yXG4gICAgICogZnJhZ21lbnRzIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIHBhdGguXG4gICAgICovXG4gICAgcHJpdmF0ZSBub3JtYWxpemVSb3V0ZXJQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWQgPSBwYXRoLnRyaW0oKTtcbiAgICAgICAgaWYgKCF0cmltbWVkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKCcvJykgfHwgdHJpbW1lZC5zdGFydHNXaXRoKCc/JykgfHwgdHJpbW1lZC5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cmltbWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAvJHt0cmltbWVkfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0V4dGVybmFsTmF2aWdhdGlvbihwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbG93ZXJQYXRoID0gcGF0aC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGxvd2VyUGF0aC5zdGFydHNXaXRoKCdodHRwOi8vJykgfHwgbG93ZXJQYXRoLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJyk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbnR5cGUgTWVudVJvdXRlckV4dHJhcyA9IE5hdmlnYXRpb25FeHRyYXMgJiB7IHRhcmdldD86IHN0cmluZyB9O1xuXG50eXBlIE1lbnVSb3V0ZXJDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgZXh0cmFzPzogTWVudVJvdXRlckV4dHJhcztcbiAgICBvcHRpb25zPzoge1xuICAgICAgICBwYXRoPzogc3RyaW5nO1xuICAgICAgICBleHRyYXM/OiBNZW51Um91dGVyRXh0cmFzO1xuICAgIH07XG59O1xuXG50eXBlIE1lbnVSb3V0ZXJOYXZpZ2F0aW9uID0ge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBleHRyYXM/OiBNZW51Um91dGVyRXh0cmFzO1xufTtcbiIsIjxkaXZcbiAgY2xhc3M9XCJheC13LWZ1bGwgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWdhcC0xIGF4LWJnLXByaW1hcnktc3VyZmFjZSBheC10ZXh0LXByaW1hcnktb24tc3VyZmFjZSBheC1oLTE0IGF4LXB4LTRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTFcIj5cbiAgICA8YXhwLWxvZ29cbiAgICAgIFtzb3VyY2VdPVwicGxhdGZvcm1Db25maWcubG9nbz8uZnVsbD8uZGFya1wiXG4gICAgICBbYXR0ci5hbHRdPVwicGxhdGZvcm1Db25maWcudGl0bGVcIlxuICAgICAgY2xhc3M9XCJheC1teC1hdXRvIGF4LXRleHQtMnhsXCJcbiAgICA+PC9heHAtbG9nbz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMVwiPlxuICAgIDxheHAtY29tcG9uZW50LXNsb3QgbmFtZT1cInJvb3QtaGVhZGVyLXN0YXJ0XCI+PC9heHAtY29tcG9uZW50LXNsb3Q+XG4gICAgPGF4cC1jb21wb25lbnQtc2xvdCBuYW1lPVwicm9vdC1oZWFkZXItZW5kXCI+PC9heHAtY29tcG9uZW50LXNsb3Q+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJfX21lbnUtYmFyXCI+XG4gIDxheC1tZW51IFtvcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIiBbY2xhc3MuYXgtZGFya109XCJsYXlvdXRTZXJ2aWNlLmlzRGFya01vZGUoKVwiIFtoYXNBcnJvd109XCJ0cnVlXCI+XG4gICAgQGZvciAoaXRlbSBvZiBzb3J0KG1lbnVTdG9yZS5pdGVtcygpKTsgdHJhY2sgaXRlbSkge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyZWN1cnNpdmVNZW51XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogaXRlbSB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICA8IS0tIEl0ZW0gVGVtcGxhdGVzICAtLT5cbiAgICA8bmctdGVtcGxhdGUgI3JlY3Vyc2l2ZU1lbnUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICBAaWYgKGl0ZW0udHlwZSA9PSAnZ3JvdXAnKSB7XG4gICAgICAgIEBpZiAoaXNJdGVtVmlzaWJsZShpdGVtKSkge1xuICAgICAgICAgIDxheC10aXRsZT57eyBpdGVtLnRleHQgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvYXgtdGl0bGU+XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2UgaWYgKGl0ZW0udHlwZSA9PSAnYnJlYWsnKSB7XG4gICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKHNob3VsZFJlbmRlck1lbnVJdGVtKGl0ZW0pKSB7XG4gICAgICAgICAgPGF4LW1lbnUtaXRlbSAob25DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soaXRlbSlcIj5cbiAgICAgICAgICAgIEBpZiAoIWl0ZW0ubWV0YT8uaXNSb290KSB7XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gW2NsYXNzXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiZmEtZndcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGF4LXRleHQ+IHt7IGl0ZW0udGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9heC10ZXh0PlxuICAgICAgICAgICAgQGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBzb3J0KGl0ZW0uY2hpbGRyZW4pOyB0cmFjayBjaGlsZCkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyZWN1cnNpdmVNZW51XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbTogY2hpbGQgfVwiPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgIEBpZiAoYmFkZ2VWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgICAgICA8YXgtYmFkZ2UgW2F4cC10YXNrLWJhZGdlXT1cImdldE1lbnVCYWRnZShpdGVtKSgpXCIgY29sb3I9XCJzZWNvbmRhcnlcIj48L2F4LWJhZGdlPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYXgtbWVudT5cbjwvZGl2PlxuPCEtLSA8ZGl2IGNsYXNzPVwiX190YWItYmFyXCI+XG48ZGl2IGNsYXNzPVwiYXhwLXRhYnMtaXRlbSBheHAtc3RhdGUtYWN0aXZlXCI+XG4gIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1tZWRpdW1cIj5BY2NvdW50PC9zcGFuPlxuICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXRpbWVzIGF4LXRleHQtc21cIj48L2k+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheHAtdGFicy1pdGVtXCI+XG4gIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1tZWRpdW1cIj5Qcm9qZWN0czwvc3Bhbj5cblxuPC9kaXY+XG48L2Rpdj4gLS0+XG4iXX0=","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerComponent, AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXPRootLayoutFooterComponent } from '../components/footer/footer.component';\nimport { AXPHorizontalMenuComponent } from '../components/horizontal-menu/horizontal-menu.component';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/drawer\";\nexport class AXPRootHorizontalLayoutComponent {\n constructor() {\n this.config = inject(AXP_PLATFORM_CONFIG_TOKEN);\n this.logo = this.config.logo;\n this.store = inject(AXPLayoutThemeService);\n }\n handleCollapsedChange(value) {\n if (value) {\n this.store.closeSideMenu();\n }\n }\n handleResizingEnded(e) {\n if (e.isUserInteraction) {\n this.store.setSideMenuWidth(e.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootHorizontalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPRootHorizontalLayoutComponent, isStandalone: true, selector: \"axp-root-horizontal-layout\", viewQueries: [{ propertyName: \"drawer\", first: true, predicate: [\"drawer\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"axp-root-layout\\\">\\n <ax-drawer-container>\\n <ax-content class=\\\"ax-flex ax-flex-col ax-relative ax-bg-lightest dark:ax-bg-lighter\\\">\\n @if(store.isNavigationLoading()) {\\n <div class=\\\"axp-navigating-progress\\\">\\n <div></div>\\n </div>\\n }\\n <axp-horizontal-menu></axp-horizontal-menu>\\n <div class=\\\"ax-flex-1 ax-overflow-auto ax-relative\\\">\\n <router-outlet></router-outlet>\\n </div>\\n </ax-content>\\n </ax-drawer-container>\\n <axp-dashboard-admin-footer></axp-dashboard-admin-footer>\\n</div>\", styles: [\".axp-root-layout{display:flex;height:100%;width:100%;flex-direction:column;justify-content:space-between}.axp-navigating-progress{position:absolute;top:0;height:.25rem;width:100%;overflow:hidden;background-color:rgba(var(--ax-sys-color-primary-200),.4)}.axp-navigating-progress>div{height:100%;width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));animation:indeterminateAnimation 1.5s infinite cubic-bezier(.65,.815,.735,.395);transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(50%) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}axp-dashboard-admin-header{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-surface),var(--tw-text-opacity, 1))}axp-dashboard-admin-header ax-button{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;--ax-comp-button-normal-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-hover-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-focus-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-pressed-text-color: var(--axp-on-brand-color) !important}.resize-handle{background-color:transparent!important}.resize-handle:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i1.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.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: AXDropdownModule }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"component\", type: i3.AXDrawerContainerComponent, selector: \"ax-drawer-container\" }, { kind: \"ngmodule\", type: AXSideMenuModule }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXPAuthModule }, { kind: \"component\", type: AXPRootLayoutFooterComponent, selector: \"axp-dashboard-admin-footer\" }, { kind: \"component\", type: AXPHorizontalMenuComponent, selector: \"axp-horizontal-menu\" }, { kind: \"ngmodule\", type: AXPComponentSlotModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootHorizontalLayoutComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-root-horizontal-layout', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [\n RouterModule,\n AXButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXAvatarModule,\n AXImageModule,\n AXImageModule,\n AXPopoverModule,\n AXBadgeModule,\n AXTabsModule,\n AXDrawerModule,\n AXSideMenuModule,\n AXLoadingModule,\n AXPAuthModule,\n AXPRootLayoutFooterComponent,\n AXPHorizontalMenuComponent,\n AXPComponentSlotModule\n ], template: \"<div class=\\\"axp-root-layout\\\">\\n <ax-drawer-container>\\n <ax-content class=\\\"ax-flex ax-flex-col ax-relative ax-bg-lightest dark:ax-bg-lighter\\\">\\n @if(store.isNavigationLoading()) {\\n <div class=\\\"axp-navigating-progress\\\">\\n <div></div>\\n </div>\\n }\\n <axp-horizontal-menu></axp-horizontal-menu>\\n <div class=\\\"ax-flex-1 ax-overflow-auto ax-relative\\\">\\n <router-outlet></router-outlet>\\n </div>\\n </ax-content>\\n </ax-drawer-container>\\n <axp-dashboard-admin-footer></axp-dashboard-admin-footer>\\n</div>\", styles: [\".axp-root-layout{display:flex;height:100%;width:100%;flex-direction:column;justify-content:space-between}.axp-navigating-progress{position:absolute;top:0;height:.25rem;width:100%;overflow:hidden;background-color:rgba(var(--ax-sys-color-primary-200),.4)}.axp-navigating-progress>div{height:100%;width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));animation:indeterminateAnimation 1.5s infinite cubic-bezier(.65,.815,.735,.395);transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(50%) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}axp-dashboard-admin-header{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-surface),var(--tw-text-opacity, 1))}axp-dashboard-admin-header ax-button{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;--ax-comp-button-normal-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-hover-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-focus-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-pressed-text-color: var(--axp-on-brand-color) !important}.resize-handle{background-color:transparent!important}.resize-handle:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}\\n\"] }]\n }], propDecorators: { drawer: [{\n type: ViewChild,\n args: ['drawer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9yaXpvbnRhbC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvcm9vdC1sYXlvdXQvaG9yaXpvbnRhbC9ob3Jpem9udGFsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9yb290LWxheW91dC9ob3Jpem9udGFsL2hvcml6b250YWwtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7O0FBOEI1RSxNQUFNLE9BQU8sZ0NBQWdDO0lBNUI3QztRQThCVSxXQUFNLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFekMsU0FBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRXhCLFVBQUssR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztLQWFqRDtJQVhXLHFCQUFxQixDQUFDLEtBQWM7UUFDNUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxDQUE4QjtRQUMxRCxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDOytHQWxCVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyx3TENuRDdDLCtuQkFlTSw2K0NEZ0JGLFlBQVksNE5BQ1osY0FBYyw4QkFDZCxtQkFBbUIsOEJBQ25CLGlCQUFpQixxUEFDakIsZ0JBQWdCLDhCQUNoQixjQUFjLDhCQUNkLGFBQWEsOEJBRWIsZUFBZSw4QkFDZixhQUFhLDhCQUNiLFlBQVksOEJBQ1osY0FBYywySEFDZCxnQkFBZ0IsOEJBQ2hCLGVBQWUsOEJBQ2YsYUFBYSwrQkFDYiw0QkFBNEIsdUVBQzVCLDBCQUEwQiwrREFDMUIsc0JBQXNCOzs0RkFHYixnQ0FBZ0M7a0JBNUI1QyxTQUFTOytCQUNFLDRCQUE0QixpQkFHdkIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsNEJBQTRCO3dCQUM1QiwwQkFBMEI7d0JBQzFCLHNCQUFzQjtxQkFDekI7O3NCQUdFLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJDb21wb25lbnQsIEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhTaWRlTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zaWRlLW1lbnUnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBBdXRoTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBMYXlvdXRUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWQnO1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBIb3Jpem9udGFsTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaG9yaXpvbnRhbC1tZW51L2hvcml6b250YWwtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtcm9vdC1ob3Jpem9udGFsLWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ob3Jpem9udGFsLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ob3Jpem9udGFsLWxheW91dC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhQb3BvdmVyTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYRHJhd2VyTW9kdWxlLFxuICAgIEFYU2lkZU1lbnVNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYUEF1dGhNb2R1bGUsXG4gICAgQVhQUm9vdExheW91dEZvb3RlckNvbXBvbmVudCxcbiAgICBBWFBIb3Jpem9udGFsTWVudUNvbXBvbmVudCxcbiAgICBBWFBDb21wb25lbnRTbG90TW9kdWxlXG5dLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBSb290SG9yaXpvbnRhbExheW91dENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2RyYXdlcicpIGRyYXdlciE6IEFYRHJhd2VyQ29tcG9uZW50O1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChBWFBfUExBVEZPUk1fQ09ORklHX1RPS0VOKTtcblxuICBwcm90ZWN0ZWQgbG9nbyA9IHRoaXMuY29uZmlnLmxvZ287XG5cbiAgcHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbGxhcHNlZENoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zdG9yZS5jbG9zZVNpZGVNZW51KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJlc2l6aW5nRW5kZWQoZTogQVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMuc3RvcmUuc2V0U2lkZU1lbnVXaWR0aChlLnZhbHVlISk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXhwLXJvb3QtbGF5b3V0XCI+XG4gICAgPGF4LWRyYXdlci1jb250YWluZXI+XG4gICAgICAgIDxheC1jb250ZW50IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1yZWxhdGl2ZSBheC1iZy1saWdodGVzdCBkYXJrOmF4LWJnLWxpZ2h0ZXJcIj5cbiAgICAgICAgICAgIEBpZihzdG9yZS5pc05hdmlnYXRpb25Mb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtbmF2aWdhdGluZy1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxheHAtaG9yaXpvbnRhbC1tZW51PjwvYXhwLWhvcml6b250YWwtbWVudT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctYXV0byBheC1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgPC9heC1kcmF3ZXItY29udGFpbmVyPlxuICAgIDxheHAtZGFzaGJvYXJkLWFkbWluLWZvb3Rlcj48L2F4cC1kYXNoYm9hcmQtYWRtaW4tZm9vdGVyPlxuPC9kaXY+Il19","import { AXResizableDirective } from '@acorex/cdk/resizable';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerComponent, AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { ChangeDetectionStrategy, Component, inject, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AXPRootLayoutFooterComponent } from '../components/footer/footer.component';\nimport { AXPRootLayoutHeaderComponent } from '../components/header/header.component';\nimport { AXPRootLayoutMenuComponent } from '../components/side-menu/side-menu.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/drawer\";\nimport * as i4 from \"@acorex/platform/layout/components\";\nexport class AXPRootVerticalLayoutComponent {\n constructor() {\n this.config = inject(AXP_PLATFORM_CONFIG_TOKEN);\n this.logo = this.config.logo;\n this.store = inject(AXPLayoutThemeService);\n this.deviceService = inject(AXPDeviceService);\n this.router = inject(Router);\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n if (this.deviceService.isSmall() || this.deviceService.isMedium()) {\n this.store.closeSideMenu();\n }\n });\n }\n handleResizingEnded(e) {\n //console.log('handleResizingEnded', e.value);\n if (e.isUserInteraction) {\n this.store.setSideMenuWidth(e.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootVerticalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPRootVerticalLayoutComponent, isStandalone: true, selector: \"axp-root-vertical-layout\", viewQueries: [{ propertyName: \"drawer\", first: true, predicate: [\"drawer\"], descendants: true }], ngImport: i0, template: \"<div id=\\\"axp-root-layout\\\" class=\\\"axp-root-layout\\\">\\n <ax-drawer-container>\\n <ax-drawer id=\\\"axp-side-menu-drawer\\\" [axResizable]=\\\"deviceService.isLarge()\\\" #drawer\\n class=\\\"ax-w-[75%] lg:ax-w-72 ax-border-lighter ax-bg-lighter dark:ax-border-darkest dark:ax-bg-darkest ax-h-full !ax-flex ax-flex-col\\\"\\n [width]=\\\"(deviceService.isLarge() ? store.sideMenuWidth() : null)!\\\" location=\\\"start\\\"\\n [collapsed]=\\\"!store.isSideMenuOpen()\\\" [closeOnBackdropClick]=\\\"false\\\" [defaultWidth]=\\\"288\\\"\\n [mode]=\\\"deviceService.isSmall() || deviceService.isMedium() ? 'overlay' : 'push'\\\" [dblClickAction]=\\\"'fit'\\\"\\n (onResizingEnded)=\\\"handleResizingEnded($event)\\\" (onResizingDblClick)=\\\"handleResizingEnded($event)\\\"\\n (onBackdropClick)=\\\"store.closeSideMenu()\\\" backdropClass=\\\"ax-bg-black/50\\\">\\n <ax-header id=\\\"axp-side-menu-header\\\"\\n class=\\\"ax-light ax-h-14 ax-flex ax-items-center ax-justify-center ax-bg-primary-500 ax-text-primary-on-surface ax-border-e ax-border-primary-600\\\">\\n <axp-logo [source]=\\\"logo?.full?.dark\\\"></axp-logo>\\n </ax-header>\\n <ax-content class=\\\"ax-flex ax-flex-col ax-border-e ax-h-full ax-overflow-auto\\\">\\n <axp-component-slot name=\\\"root-side-menu-header\\\"></axp-component-slot>\\n <div class=\\\"ax-overflow-auto ax-flex-1\\\">\\n <axp-side-menu id=\\\"axp-side-menu\\\" class=\\\"ax-p-4 ax-block\\\"></axp-side-menu>\\n </div>\\n <axp-component-slot name=\\\"root-side-menu-footer\\\"></axp-component-slot>\\n </ax-content>\\n </ax-drawer>\\n <ax-content class=\\\"ax-flex ax-flex-col ax-relative ax-bg-lightest dark:ax-bg-lighter ax-overflow-auto\\\">\\n @if (store.isNavigationLoading()) {\\n <div class=\\\"axp-navigating-progress\\\">\\n <div></div>\\n </div>\\n }\\n <axp-dashboard-admin-header id=\\\"axp-main-header\\\" class=\\\"ax-light\\\"></axp-dashboard-admin-header>\\n\\n <div class=\\\"ax-flex-1 ax-overflow-auto ax-relative\\\">\\n <router-outlet></router-outlet>\\n </div>\\n </ax-content>\\n </ax-drawer-container>\\n <axp-dashboard-admin-footer id=\\\"axp-main-footer\\\"></axp-dashboard-admin-footer>\\n</div>\", styles: [\".axp-root-layout{display:flex;height:100%;width:100%;flex-direction:column;justify-content:space-between}.axp-navigating-progress{position:absolute;top:0;height:.25rem;width:100%;overflow:hidden;background-color:rgba(var(--ax-sys-color-primary-200),.4)}.axp-navigating-progress>div{height:100%;width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));animation:indeterminateAnimation 1.5s infinite cubic-bezier(.65,.815,.735,.395);transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(50%) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}axp-dashboard-admin-header{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-surface),var(--tw-text-opacity, 1))}axp-dashboard-admin-header ax-button{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;--ax-comp-button-normal-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-hover-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-focus-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-pressed-text-color: var(--axp-on-brand-color) !important}.resize-handle{background-color:transparent!important}.resize-handle:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i1.RouterOutlet, selector: \"router-outlet\", inputs: [\"name\", \"routerOutletData\"], outputs: [\"activate\", \"deactivate\", \"attach\", \"detach\"], exportAs: [\"outlet\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.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: AXDropdownModule }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"component\", type: i3.AXDrawerComponent, selector: \"ax-drawer\", inputs: [\"location\", \"showBackdrop\", \"mode\", \"transition\", \"closeOnBackdropClick\", \"backdropClass\", \"collapsed\", \"singleOpenMode\"], outputs: [\"onBackdropClick\", \"collapsedStateChanged\"] }, { kind: \"component\", type: i3.AXDrawerContainerComponent, selector: \"ax-drawer-container\" }, { kind: \"ngmodule\", type: AXSideMenuModule }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: AXPLogoComponent, selector: \"axp-logo\", inputs: [\"source\"] }, { kind: \"ngmodule\", type: AXPAuthModule }, { kind: \"directive\", type: AXResizableDirective, selector: \"[axResizable]\", inputs: [\"axResizable\", \"minWidth\", \"maxWidth\", \"dblClickAction\", \"width\", \"defaultWidth\"], outputs: [\"axResizableChange\", \"minWidthChange\", \"maxWidthChange\", \"dblClickActionChange\", \"widthChange\", \"defaultWidthChange\", \"onResizingStarted\", \"onResizingEnded\", \"onResizingDblClick\"] }, { kind: \"component\", type: AXPRootLayoutFooterComponent, selector: \"axp-dashboard-admin-footer\" }, { kind: \"component\", type: AXPRootLayoutHeaderComponent, selector: \"axp-dashboard-admin-header\" }, { kind: \"component\", type: AXPRootLayoutMenuComponent, selector: \"axp-side-menu\" }, { kind: \"ngmodule\", type: AXPComponentSlotModule }, { kind: \"directive\", type: i4.AXPComponentSlotDirective, selector: \"axp-component-slot\", inputs: [\"name\", \"host\", \"context\"], exportAs: [\"slot\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootVerticalLayoutComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-root-vertical-layout', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [\n RouterModule,\n AXButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXAvatarModule,\n AXImageModule,\n AXImageModule,\n AXPopoverModule,\n AXBadgeModule,\n AXTabsModule,\n AXDrawerModule,\n AXDrawerModule,\n AXSideMenuModule,\n AXLoadingModule,\n AXPLogoComponent,\n AXPAuthModule,\n AXResizableDirective,\n AXPRootLayoutFooterComponent,\n AXPRootLayoutHeaderComponent,\n AXPRootLayoutMenuComponent,\n AXPComponentSlotModule,\n ], template: \"<div id=\\\"axp-root-layout\\\" class=\\\"axp-root-layout\\\">\\n <ax-drawer-container>\\n <ax-drawer id=\\\"axp-side-menu-drawer\\\" [axResizable]=\\\"deviceService.isLarge()\\\" #drawer\\n class=\\\"ax-w-[75%] lg:ax-w-72 ax-border-lighter ax-bg-lighter dark:ax-border-darkest dark:ax-bg-darkest ax-h-full !ax-flex ax-flex-col\\\"\\n [width]=\\\"(deviceService.isLarge() ? store.sideMenuWidth() : null)!\\\" location=\\\"start\\\"\\n [collapsed]=\\\"!store.isSideMenuOpen()\\\" [closeOnBackdropClick]=\\\"false\\\" [defaultWidth]=\\\"288\\\"\\n [mode]=\\\"deviceService.isSmall() || deviceService.isMedium() ? 'overlay' : 'push'\\\" [dblClickAction]=\\\"'fit'\\\"\\n (onResizingEnded)=\\\"handleResizingEnded($event)\\\" (onResizingDblClick)=\\\"handleResizingEnded($event)\\\"\\n (onBackdropClick)=\\\"store.closeSideMenu()\\\" backdropClass=\\\"ax-bg-black/50\\\">\\n <ax-header id=\\\"axp-side-menu-header\\\"\\n class=\\\"ax-light ax-h-14 ax-flex ax-items-center ax-justify-center ax-bg-primary-500 ax-text-primary-on-surface ax-border-e ax-border-primary-600\\\">\\n <axp-logo [source]=\\\"logo?.full?.dark\\\"></axp-logo>\\n </ax-header>\\n <ax-content class=\\\"ax-flex ax-flex-col ax-border-e ax-h-full ax-overflow-auto\\\">\\n <axp-component-slot name=\\\"root-side-menu-header\\\"></axp-component-slot>\\n <div class=\\\"ax-overflow-auto ax-flex-1\\\">\\n <axp-side-menu id=\\\"axp-side-menu\\\" class=\\\"ax-p-4 ax-block\\\"></axp-side-menu>\\n </div>\\n <axp-component-slot name=\\\"root-side-menu-footer\\\"></axp-component-slot>\\n </ax-content>\\n </ax-drawer>\\n <ax-content class=\\\"ax-flex ax-flex-col ax-relative ax-bg-lightest dark:ax-bg-lighter ax-overflow-auto\\\">\\n @if (store.isNavigationLoading()) {\\n <div class=\\\"axp-navigating-progress\\\">\\n <div></div>\\n </div>\\n }\\n <axp-dashboard-admin-header id=\\\"axp-main-header\\\" class=\\\"ax-light\\\"></axp-dashboard-admin-header>\\n\\n <div class=\\\"ax-flex-1 ax-overflow-auto ax-relative\\\">\\n <router-outlet></router-outlet>\\n </div>\\n </ax-content>\\n </ax-drawer-container>\\n <axp-dashboard-admin-footer id=\\\"axp-main-footer\\\"></axp-dashboard-admin-footer>\\n</div>\", styles: [\".axp-root-layout{display:flex;height:100%;width:100%;flex-direction:column;justify-content:space-between}.axp-navigating-progress{position:absolute;top:0;height:.25rem;width:100%;overflow:hidden;background-color:rgba(var(--ax-sys-color-primary-200),.4)}.axp-navigating-progress>div{height:100%;width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));animation:indeterminateAnimation 1.5s infinite cubic-bezier(.65,.815,.735,.395);transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(50%) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}axp-dashboard-admin-header{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-surface),var(--tw-text-opacity, 1))}axp-dashboard-admin-header ax-button{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;--ax-comp-button-normal-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-hover-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-focus-text-color: var(--axp-on-brand-color) !important;--ax-comp-button-pressed-text-color: var(--axp-on-brand-color) !important}.resize-handle{background-color:transparent!important}.resize-handle:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { drawer: [{\n type: ViewChild,\n args: ['drawer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL3Jvb3QtbGF5b3V0L3ZlcnRpY2FsL3ZlcnRpY2FsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9yb290LWxheW91dC92ZXJ0aWNhbC92ZXJ0aWNhbC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxP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d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3dCQUM1Qiw0QkFBNEI7d0JBQzVCLDBCQUEwQjt3QkFDMUIsc0JBQXNCO3FCQUN2Qjs7c0JBR0EsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFJlc2l6YWJsZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBBWEF2YXRhck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyYXdlckNvbXBvbmVudCwgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhJbWFnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9pbWFnZSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFNpZGVNZW51TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NpZGUtbWVudSc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUEF1dGhNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQX1BMQVRGT1JNX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExvZ29Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUERldmljZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0SGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBSb290TGF5b3V0TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2lkZS1tZW51L3NpZGUtbWVudS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtcm9vdC12ZXJ0aWNhbC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVydGljYWwtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3ZlcnRpY2FsLWxheW91dC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYSW1hZ2VNb2R1bGUsXG4gICAgQVhQb3BvdmVyTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYRHJhd2VyTW9kdWxlLFxuICAgIEFYRHJhd2VyTW9kdWxlLFxuICAgIEFYU2lkZU1lbnVNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYUExvZ29Db21wb25lbnQsXG4gICAgQVhQQXV0aE1vZHVsZSxcbiAgICBBWFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBBWFBSb290TGF5b3V0Rm9vdGVyQ29tcG9uZW50LFxuICAgIEFYUFJvb3RMYXlvdXRIZWFkZXJDb21wb25lbnQsXG4gICAgQVhQUm9vdExheW91dE1lbnVDb21wb25lbnQsXG4gICAgQVhQQ29tcG9uZW50U2xvdE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUm9vdFZlcnRpY2FsTGF5b3V0Q29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnZHJhd2VyJykgZHJhd2VyITogQVhEcmF3ZXJDb21wb25lbnQ7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KEFYUF9QTEFURk9STV9DT05GSUdfVE9LRU4pO1xuXG4gIHByb3RlY3RlZCBsb2dvID0gdGhpcy5jb25maWcubG9nbztcblxuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGRldmljZVNlcnZpY2UgPSBpbmplY3QoQVhQRGV2aWNlU2VydmljZSk7XG4gIHByb3RlY3RlZCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGV2aWNlU2VydmljZS5pc1NtYWxsKCkgfHwgdGhpcy5kZXZpY2VTZXJ2aWNlLmlzTWVkaXVtKCkpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5jbG9zZVNpZGVNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmVzaXppbmdFbmRlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4pIHtcbiAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGVSZXNpemluZ0VuZGVkJywgZS52YWx1ZSk7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMuc3RvcmUuc2V0U2lkZU1lbnVXaWR0aChlLnZhbHVlISk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGlkPVwiYXhwLXJvb3QtbGF5b3V0XCIgY2xhc3M9XCJheHAtcm9vdC1sYXlvdXRcIj5cbiAgPGF4LWRyYXdlci1jb250YWluZXI+XG4gICAgPGF4LWRyYXdlciBpZD1cImF4cC1zaWRlLW1lbnUtZHJhd2VyXCIgW2F4UmVzaXphYmxlXT1cImRldmljZVNlcnZpY2UuaXNMYXJnZSgpXCIgI2RyYXdlclxuICAgICAgY2xhc3M9XCJheC13LVs3NSVdIGxnOmF4LXctNzIgYXgtYm9yZGVyLWxpZ2h0ZXIgYXgtYmctbGlnaHRlciBkYXJrOmF4LWJvcmRlci1kYXJrZXN0IGRhcms6YXgtYmctZGFya2VzdCBheC1oLWZ1bGwgIWF4LWZsZXggYXgtZmxleC1jb2xcIlxuICAgICAgW3dpZHRoXT1cIihkZXZpY2VTZXJ2aWNlLmlzTGFyZ2UoKSA/IHN0b3JlLnNpZGVNZW51V2lkdGgoKSA6IG51bGwpIVwiIGxvY2F0aW9uPVwic3RhcnRcIlxuICAgICAgW2NvbGxhcHNlZF09XCIhc3RvcmUuaXNTaWRlTWVudU9wZW4oKVwiIFtjbG9zZU9uQmFja2Ryb3BDbGlja109XCJmYWxzZVwiIFtkZWZhdWx0V2lkdGhdPVwiMjg4XCJcbiAgICAgIFttb2RlXT1cImRldmljZVNlcnZpY2UuaXNTbWFsbCgpIHx8IGRldmljZVNlcnZpY2UuaXNNZWRpdW0oKSA/ICdvdmVybGF5JyA6ICdwdXNoJ1wiIFtkYmxDbGlja0FjdGlvbl09XCInZml0J1wiXG4gICAgICAob25SZXNpemluZ0VuZGVkKT1cImhhbmRsZVJlc2l6aW5nRW5kZWQoJGV2ZW50KVwiIChvblJlc2l6aW5nRGJsQ2xpY2spPVwiaGFuZGxlUmVzaXppbmdFbmRlZCgkZXZlbnQpXCJcbiAgICAgIChvbkJhY2tkcm9wQ2xpY2spPVwic3RvcmUuY2xvc2VTaWRlTWVudSgpXCIgYmFja2Ryb3BDbGFzcz1cImF4LWJnLWJsYWNrLzUwXCI+XG4gICAgICA8YXgtaGVhZGVyIGlkPVwiYXhwLXNpZGUtbWVudS1oZWFkZXJcIlxuICAgICAgICBjbGFzcz1cImF4LWxpZ2h0IGF4LWgtMTQgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtYmctcHJpbWFyeS01MDAgYXgtdGV4dC1wcmltYXJ5LW9uLXN1cmZhY2UgYXgtYm9yZGVyLWUgYXgtYm9yZGVyLXByaW1hcnktNjAwXCI+XG4gICAgICAgIDxheHAtbG9nbyBbc291cmNlXT1cImxvZ28/LmZ1bGw/LmRhcmtcIj48L2F4cC1sb2dvPlxuICAgICAgPC9heC1oZWFkZXI+XG4gICAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtYm9yZGVyLWUgYXgtaC1mdWxsIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgPGF4cC1jb21wb25lbnQtc2xvdCBuYW1lPVwicm9vdC1zaWRlLW1lbnUtaGVhZGVyXCI+PC9heHAtY29tcG9uZW50LXNsb3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1vdmVyZmxvdy1hdXRvIGF4LWZsZXgtMVwiPlxuICAgICAgICAgIDxheHAtc2lkZS1tZW51IGlkPVwiYXhwLXNpZGUtbWVudVwiIGNsYXNzPVwiYXgtcC00IGF4LWJsb2NrXCI+PC9heHAtc2lkZS1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF4cC1jb21wb25lbnQtc2xvdCBuYW1lPVwicm9vdC1zaWRlLW1lbnUtZm9vdGVyXCI+PC9heHAtY29tcG9uZW50LXNsb3Q+XG4gICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgPC9heC1kcmF3ZXI+XG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LXJlbGF0aXZlIGF4LWJnLWxpZ2h0ZXN0IGRhcms6YXgtYmctbGlnaHRlciBheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgICBAaWYgKHN0b3JlLmlzTmF2aWdhdGlvbkxvYWRpbmcoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4cC1uYXZpZ2F0aW5nLXByb2dyZXNzXCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxheHAtZGFzaGJvYXJkLWFkbWluLWhlYWRlciBpZD1cImF4cC1tYWluLWhlYWRlclwiIGNsYXNzPVwiYXgtbGlnaHRcIj48L2F4cC1kYXNoYm9hcmQtYWRtaW4taGVhZGVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LW92ZXJmbG93LWF1dG8gYXgtcmVsYXRpdmVcIj5cbiAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9heC1jb250ZW50PlxuICA8L2F4LWRyYXdlci1jb250YWluZXI+XG4gIDxheHAtZGFzaGJvYXJkLWFkbWluLWZvb3RlciBpZD1cImF4cC1tYWluLWZvb3RlclwiPjwvYXhwLWRhc2hib2FyZC1hZG1pbi1mb290ZXI+XG48L2Rpdj4iXX0=","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';\nimport { AXPMenuService } from '@acorex/platform/common';\nimport { AXPBroadcastEventService, AXPContextStore } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AXPRootHorizontalLayoutComponent } from './horizontal/horizontal-layout.component';\nimport { AXPRootVerticalLayoutComponent } from './vertical/vertical-layout.component';\nimport { firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXPRootLayoutComponent {\n constructor() {\n this.layout = inject(AXPLayoutThemeService);\n this.menuStore = inject(AXPMenuService);\n this.router = inject(Router);\n this.eventService = inject(AXPBroadcastEventService);\n this.sessionService = inject(AXPSessionService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.workflowService = inject(AXPWorkflowService);\n this.contextStore = inject(AXPContextStore);\n }\n ngOnInit() {\n // Select the menu item based on the current route when the page loads\n this.menuStore.selectMenuItemByRoute(this.router.url);\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\n // Update the selected menu item whenever the route changes\n this.menuStore.selectMenuItemByRoute(event.urlAfterRedirects);\n // Reset the context store\n this.contextStore.reset();\n });\n this.eventService.listen(AXPSessionStatus.SignedOut).subscribe(() => {\n console.log('signed out in root layout');\n this.router.navigate(['/auth/login']);\n });\n //\n this.sessionService.status$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (status) => {\n // Don't redirect if still loading\n const isLoading = await firstValueFrom(this.sessionService.isLoading$);\n if (isLoading) {\n console.log('Session is still loading, skipping redirect check');\n return;\n }\n const redirectKeys = [AXPSessionStatus.SignedOut, AXPSessionStatus.Unauthenticated, AXPSessionStatus.Expired];\n if (redirectKeys.includes(status)) {\n console.log('Redirecting to login due to status:', status);\n this.router.navigate(['/auth/login']);\n }\n });\n //\n this.workflowService.execute('check-new-version');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPRootLayoutComponent, isStandalone: true, selector: \"ng-component\", providers: [AXUnsubscriber], ngImport: i0, template: `\n @if(layout.isMenuHorizontal()){\n <axp-root-horizontal-layout></axp-root-horizontal-layout>\n }@else{\n <axp-root-vertical-layout></axp-root-vertical-layout>\n }\n `, isInline: true, dependencies: [{ kind: \"component\", type: AXPRootHorizontalLayoutComponent, selector: \"axp-root-horizontal-layout\" }, { kind: \"component\", type: AXPRootVerticalLayoutComponent, selector: \"axp-root-vertical-layout\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPRootLayoutComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n @if(layout.isMenuHorizontal()){\n <axp-root-horizontal-layout></axp-root-horizontal-layout>\n }@else{\n <axp-root-vertical-layout></axp-root-vertical-layout>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [AXPRootHorizontalLayoutComponent, AXPRootVerticalLayoutComponent],\n providers: [AXUnsubscriber],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvcm9vdC1sYXlvdXQvcm9vdC1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQWdCdEMsTUFBTSxPQUFPLHNCQUFzQjtJQWRuQztRQWVZLFdBQU0sR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUV2QyxjQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMs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QUFDLGdDQUFnQyxFQUFFLDhCQUE4QixDQUFDO29CQUMzRSxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UsIEFYUFNlc3Npb25TdGF0dXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQTWVudVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBCcm9hZGNhc3RFdmVudFNlcnZpY2UsIEFYUENvbnRleHRTdG9yZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWQnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBSb290SG9yaXpvbnRhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4vaG9yaXpvbnRhbC9ob3Jpem9udGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQUm9vdFZlcnRpY2FsTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC92ZXJ0aWNhbC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIEBpZihsYXlvdXQuaXNNZW51SG9yaXpvbnRhbCgpKXtcbiAgICA8YXhwLXJvb3QtaG9yaXpvbnRhbC1sYXlvdXQ+PC9heHAtcm9vdC1ob3Jpem9udGFsLWxheW91dD5cbiAgICB9QGVsc2V7XG4gICAgPGF4cC1yb290LXZlcnRpY2FsLWxheW91dD48L2F4cC1yb290LXZlcnRpY2FsLWxheW91dD5cbiAgICB9XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQVhQUm9vdEhvcml6b250YWxMYXlvdXRDb21wb25lbnQsIEFYUFJvb3RWZXJ0aWNhbExheW91dENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW0FYVW5zdWJzY3JpYmVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQUm9vdExheW91dENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgbWVudVN0b3JlID0gaW5qZWN0KEFYUE1lbnVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIGV2ZW50U2VydmljZSA9IGluamVjdChBWFBCcm9hZGNhc3RFdmVudFNlcnZpY2UpO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIHdvcmtmbG93U2VydmljZSA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcml2YXRlIGNvbnRleHRTdG9yZSA9IGluamVjdChBWFBDb250ZXh0U3RvcmUpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFNlbGVjdCB0aGUgbWVudSBpdGVtIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJvdXRlIHdoZW4gdGhlIHBhZ2UgbG9hZHNcbiAgICB0aGlzLm1lbnVTdG9yZS5zZWxlY3RNZW51SXRlbUJ5Um91dGUodGhpcy5yb3V0ZXIudXJsKTtcblxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgbWVudSBpdGVtIHdoZW5ldmVyIHRoZSByb3V0ZSBjaGFuZ2VzXG4gICAgICB0aGlzLm1lbnVTdG9yZS5zZWxlY3RNZW51SXRlbUJ5Um91dGUoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgLy8gUmVzZXQgdGhlIGNvbnRleHQgc3RvcmVcbiAgICAgIHRoaXMuY29udGV4dFN0b3JlLnJlc2V0KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZS5saXN0ZW4oQVhQU2Vzc2lvblN0YXR1cy5TaWduZWRPdXQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnc2lnbmVkIG91dCBpbiByb290IGxheW91dCcpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXV0aC9sb2dpbiddKTtcbiAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc3RhdHVzJC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZShhc3luYyAoc3RhdHVzKSA9PiB7XG5cbiAgICAgIC8vIERvbid0IHJlZGlyZWN0IGlmIHN0aWxsIGxvYWRpbmdcbiAgICAgIGNvbnN0IGlzTG9hZGluZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UuaXNMb2FkaW5nJCk7XG4gICAgICBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTZXNzaW9uIGlzIHN0aWxsIGxvYWRpbmcsIHNraXBwaW5nIHJlZGlyZWN0IGNoZWNrJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVkaXJlY3RLZXlzID0gW0FYUFNlc3Npb25TdGF0dXMuU2lnbmVkT3V0LCBBWFBTZXNzaW9uU3RhdHVzLlVuYXV0aGVudGljYXRlZCwgQVhQU2Vzc2lvblN0YXR1cy5FeHBpcmVkXTtcbiAgICAgIGlmIChyZWRpcmVjdEtleXMuaW5jbHVkZXMoc3RhdHVzKSkge1xuICAgICAgICBjb25zb2xlLmxvZygnUmVkaXJlY3RpbmcgdG8gbG9naW4gZHVlIHRvIHN0YXR1czonLCBzdGF0dXMpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hdXRoL2xvZ2luJ10pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy9cbiAgICB0aGlzLndvcmtmbG93U2VydmljZS5leGVjdXRlKCdjaGVjay1uZXctdmVyc2lvbicpO1xuICB9XG59XG4iXX0=","export class AXPEntityReuseStrategy {\n shouldDetach(route) {\n return false;\n }\n store(route, detachedTree) { }\n shouldAttach(route) {\n return false;\n }\n retrieve(route) {\n return null;\n }\n shouldReuseRoute(future, curr) {\n // If paths are different, never reuse\n if (future.routeConfig?.path !== curr.routeConfig?.path) {\n return false;\n }\n const reuseConfig = future.data?.['reuse'];\n // If reuse is explicitly false, don't reuse\n if (reuseConfig === false) {\n return false;\n }\n // If reuse is explicitly true, always reuse (same path)\n if (reuseConfig === true) {\n return true;\n }\n // Handle string-based reuse strategies\n if (typeof reuseConfig === 'string') {\n const paramsChanged = this.haveParamsChanged(future, curr);\n const queryParamsChanged = this.haveQueryParamsChanged(future, curr);\n switch (reuseConfig) {\n case 'paramsChange':\n // Reuse when params change, but destroy if queryParams change\n return !queryParamsChanged;\n case 'queryParamsChange':\n // Reuse when queryParams change, but destroy if params change\n return !paramsChanged;\n case 'paramsOrQueryParamsChange':\n // Reuse when either params or queryParams change\n return true;\n default:\n // Unknown strategy, use default behavior\n return true;\n }\n }\n // Default behavior: reuse if paths are the same\n return true;\n }\n //#region ---- Helper Methods ----\n /**\n * Check if route params have changed between current and future routes\n */\n haveParamsChanged(future, curr) {\n const futureParams = future.params;\n const currParams = curr.params;\n const futureKeys = Object.keys(futureParams);\n const currKeys = Object.keys(currParams);\n if (futureKeys.length !== currKeys.length) {\n return true;\n }\n for (const key of futureKeys) {\n if (futureParams[key] !== currParams[key]) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check if query params have changed between current and future routes\n */\n haveQueryParamsChanged(future, curr) {\n const futureQueryParams = future.queryParams;\n const currQueryParams = curr.queryParams;\n const futureKeys = Object.keys(futureQueryParams);\n const currKeys = Object.keys(currQueryParams);\n if (futureKeys.length !== currKeys.length) {\n return true;\n }\n for (const key of futureKeys) {\n if (futureQueryParams[key] !== currQueryParams[key]) {\n return true;\n }\n }\n return false;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJldXNlLnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2VudGl0eS1yZXVzZS5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQVksQ0FBQyxLQUE2QjtRQUN4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBNkIsRUFBRSxZQUFpQyxJQUFTLENBQUM7SUFFaEYsWUFBWSxDQUFDLEtBQTZCO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUE2QjtRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUE4QixFQUFFLElBQTRCO1FBQzNFLHNDQUFzQztRQUN0QyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDeEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLDRDQUE0QztRQUM1QyxJQUFJLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCx3REFBd0Q7UUFDeEQsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFckUsUUFBUSxXQUFXLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxjQUFjO29CQUNqQiw4REFBOEQ7b0JBQzlELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztnQkFFN0IsS0FBSyxtQkFBbUI7b0JBQ3RCLDhEQUE4RDtvQkFDOUQsT0FBTyxDQUFDLGFBQWEsQ0FBQztnQkFFeEIsS0FBSywyQkFBMkI7b0JBQzlCLGlEQUFpRDtvQkFDakQsT0FBTyxJQUFJLENBQUM7Z0JBRWQ7b0JBQ0UseUNBQXlDO29CQUN6QyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxzQ0FBc0M7SUFFdEM7O09BRUc7SUFDSyxpQkFBaUIsQ0FBQyxNQUE4QixFQUFFLElBQTRCO1FBQ3BGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUUvQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzdCLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0IsQ0FBQyxNQUE4QixFQUFFLElBQTRCO1FBQ3pGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXpDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTlDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBEZXRhY2hlZFJvdXRlSGFuZGxlLCBSb3V0ZVJldXNlU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5UmV1c2VTdHJhdGVneSBpbXBsZW1lbnRzIFJvdXRlUmV1c2VTdHJhdGVneSB7XG4gIHNob3VsZERldGFjaChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0b3JlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHt9XG5cbiAgc2hvdWxkQXR0YWNoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0cmlldmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBEZXRhY2hlZFJvdXRlSGFuZGxlIHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzaG91bGRSZXVzZVJvdXRlKGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycjogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIC8vIElmIHBhdGhzIGFyZSBkaWZmZXJlbnQsIG5ldmVyIHJldXNlXG4gICAgaWYgKGZ1dHVyZS5yb3V0ZUNvbmZpZz8ucGF0aCAhPT0gY3Vyci5yb3V0ZUNvbmZpZz8ucGF0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHJldXNlQ29uZmlnID0gZnV0dXJlLmRhdGE/LlsncmV1c2UnXTtcblxuICAgIC8vIElmIHJldXNlIGlzIGV4cGxpY2l0bHkgZmFsc2UsIGRvbid0IHJldXNlXG4gICAgaWYgKHJldXNlQ29uZmlnID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIHJldXNlIGlzIGV4cGxpY2l0bHkgdHJ1ZSwgYWx3YXlzIHJldXNlIChzYW1lIHBhdGgpXG4gICAgaWYgKHJldXNlQ29uZmlnID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgc3RyaW5nLWJhc2VkIHJldXNlIHN0cmF0ZWdpZXNcbiAgICBpZiAodHlwZW9mIHJldXNlQ29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcGFyYW1zQ2hhbmdlZCA9IHRoaXMuaGF2ZVBhcmFtc0NoYW5nZWQoZnV0dXJlLCBjdXJyKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zQ2hhbmdlZCA9IHRoaXMuaGF2ZVF1ZXJ5UGFyYW1zQ2hhbmdlZChmdXR1cmUsIGN1cnIpO1xuXG4gICAgICBzd2l0Y2ggKHJldXNlQ29uZmlnKSB7XG4gICAgICAgIGNhc2UgJ3BhcmFtc0NoYW5nZSc6XG4gICAgICAgICAgLy8gUmV1c2Ugd2hlbiBwYXJhbXMgY2hhbmdlLCBidXQgZGVzdHJveSBpZiBxdWVyeVBhcmFtcyBjaGFuZ2VcbiAgICAgICAgICByZXR1cm4gIXF1ZXJ5UGFyYW1zQ2hhbmdlZDtcblxuICAgICAgICBjYXNlICdxdWVyeVBhcmFtc0NoYW5nZSc6XG4gICAgICAgICAgLy8gUmV1c2Ugd2hlbiBxdWVyeVBhcmFtcyBjaGFuZ2UsIGJ1dCBkZXN0cm95IGlmIHBhcmFtcyBjaGFuZ2VcbiAgICAgICAgICByZXR1cm4gIXBhcmFtc0NoYW5nZWQ7XG5cbiAgICAgICAgY2FzZSAncGFyYW1zT3JRdWVyeVBhcmFtc0NoYW5nZSc6XG4gICAgICAgICAgLy8gUmV1c2Ugd2hlbiBlaXRoZXIgcGFyYW1zIG9yIHF1ZXJ5UGFyYW1zIGNoYW5nZVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gVW5rbm93biBzdHJhdGVneSwgdXNlIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGJlaGF2aW9yOiByZXVzZSBpZiBwYXRocyBhcmUgdGhlIHNhbWVcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVyIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHJvdXRlIHBhcmFtcyBoYXZlIGNoYW5nZWQgYmV0d2VlbiBjdXJyZW50IGFuZCBmdXR1cmUgcm91dGVzXG4gICAqL1xuICBwcml2YXRlIGhhdmVQYXJhbXNDaGFuZ2VkKGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycjogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZ1dHVyZVBhcmFtcyA9IGZ1dHVyZS5wYXJhbXM7XG4gICAgY29uc3QgY3VyclBhcmFtcyA9IGN1cnIucGFyYW1zO1xuXG4gICAgY29uc3QgZnV0dXJlS2V5cyA9IE9iamVjdC5rZXlzKGZ1dHVyZVBhcmFtcyk7XG4gICAgY29uc3QgY3VycktleXMgPSBPYmplY3Qua2V5cyhjdXJyUGFyYW1zKTtcblxuICAgIGlmIChmdXR1cmVLZXlzLmxlbmd0aCAhPT0gY3VycktleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBmdXR1cmVLZXlzKSB7XG4gICAgICBpZiAoZnV0dXJlUGFyYW1zW2tleV0gIT09IGN1cnJQYXJhbXNba2V5XSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgcXVlcnkgcGFyYW1zIGhhdmUgY2hhbmdlZCBiZXR3ZWVuIGN1cnJlbnQgYW5kIGZ1dHVyZSByb3V0ZXNcbiAgICovXG4gIHByaXZhdGUgaGF2ZVF1ZXJ5UGFyYW1zQ2hhbmdlZChmdXR1cmU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnI6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICBjb25zdCBmdXR1cmVRdWVyeVBhcmFtcyA9IGZ1dHVyZS5xdWVyeVBhcmFtcztcbiAgICBjb25zdCBjdXJyUXVlcnlQYXJhbXMgPSBjdXJyLnF1ZXJ5UGFyYW1zO1xuXG4gICAgY29uc3QgZnV0dXJlS2V5cyA9IE9iamVjdC5rZXlzKGZ1dHVyZVF1ZXJ5UGFyYW1zKTtcbiAgICBjb25zdCBjdXJyS2V5cyA9IE9iamVjdC5rZXlzKGN1cnJRdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAoZnV0dXJlS2V5cy5sZW5ndGggIT09IGN1cnJLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZnV0dXJlS2V5cykge1xuICAgICAgaWYgKGZ1dHVyZVF1ZXJ5UGFyYW1zW2tleV0gIT09IGN1cnJRdWVyeVBhcmFtc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXPCommonModule } from '@acorex/platform/common';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '@acorex/platform/layout/entity';\nimport { AXPThemesSharedModule } from '@acorex/platform/themes/shared';\nimport { inject, NgModule } from '@angular/core';\nimport { RouteReuseStrategy, ROUTES } from '@angular/router';\nimport { AXPEntityReuseStrategy } from './entity-reuse.strategy';\nimport * as i0 from \"@angular/core\";\nfunction routesFacory() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n let routes = [\n {\n path: ':app/modules/:module/:entity',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return config.viewers.root();\n },\n // children: [\n // {\n // path: 'details/:id',\n // loadComponent: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),\n // data: { reuse: true },\n // resolve: {\n // adapter: AXPLayoutDetailsViewRouteResolver,\n // },\n // },\n // ],\n },\n {\n path: 'error',\n children: [\n {\n path: 'offline',\n loadComponent: () => import('./pages/errors/error-offline/error-offline.component').then((c) => c.AXPErrorOfflineComponent),\n },\n {\n path: '404',\n loadComponent: () => import('./pages/errors/error-404/error-404.component').then((c) => c.AXPError404Component),\n },\n {\n path: '401',\n loadComponent: () => import('./pages/errors/error-401/error-401.component').then((c) => c.AXPError401Component),\n },\n ],\n },\n ];\n return routes;\n}\nexport class AXPDefaultThemeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultThemeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultThemeModule, imports: [AXPCommonModule, AXPThemesSharedModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultThemeModule, providers: [\n {\n provide: AXP_ENTITY_CONFIG_TOKEN,\n useFactory: () => {\n const config = {\n viewers: {\n root: () => import('./layouts/root-layout/root-layout.component').then((c) => c.AXPRootLayoutComponent),\n master: {\n single: () => import('./layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component').then((c) => c.AXPEntityMasterSingleViewComponent),\n details: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),\n ///\n create: () => import('./layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component').then((c) => c.AXPEntityMasterCreateViewComponent),\n ///\n modify: () => import('./layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component').then((c) => c.AXPEntityMasterModifyViewComponent),\n //\n list: () => import('./layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component').then((c) => c.AXPEntityMasterListViewComponent),\n },\n },\n };\n return config;\n },\n },\n { provide: RouteReuseStrategy, useClass: AXPEntityReuseStrategy },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ], imports: [AXPCommonModule, AXPThemesSharedModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDefaultThemeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXPCommonModule, AXPThemesSharedModule],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_ENTITY_CONFIG_TOKEN,\n useFactory: () => {\n const config = {\n viewers: {\n root: () => import('./layouts/root-layout/root-layout.component').then((c) => c.AXPRootLayoutComponent),\n master: {\n single: () => import('./layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component').then((c) => c.AXPEntityMasterSingleViewComponent),\n details: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),\n ///\n create: () => import('./layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component').then((c) => c.AXPEntityMasterCreateViewComponent),\n ///\n modify: () => import('./layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component').then((c) => c.AXPEntityMasterModifyViewComponent),\n //\n list: () => import('./layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component').then((c) => c.AXPEntityMasterListViewComponent),\n },\n },\n };\n return config;\n },\n },\n { provide: RouteReuseStrategy, useClass: AXPEntityReuseStrategy },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvZGVmYXVsdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQW9CLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUVqRSxTQUFTLFlBQVk7SUFDbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLEdBQVc7UUFDbkI7WUFDRSxJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLFdBQVcsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUMzQixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0IsQ0FBQztZQUNELGNBQWM7WUFDZCxNQUFNO1lBQ04sMkJBQTJCO1lBQzNCLGlIQUFpSDtZQUNqSCw2QkFBNkI7WUFDN0IsaUJBQWlCO1lBQ2pCLG9EQUFvRDtZQUNwRCxTQUFTO1lBQ1QsT0FBTztZQUNQLEtBQUs7U0FDTjtRQUNEO1lBQ0UsSUFBSSxFQUFFLE9BQU87WUFDYixRQUFRLEVBQUU7Z0JBQ1I7b0JBQ0UsSUFB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QUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO3dCQUNqRTs0QkFDRSxPQUFPLEVBQUUsTUFBTTs0QkFDZixLQUFLLEVBQUUsSUFBSTs0QkFDWCxVQUFVLEVBQUUsWUFBWTt5QkFDekI7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBBdXRoR3VhcmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQX0VOVElUWV9DT05GSUdfVE9LRU4sIEFYUEVudGl0eUNvbmZpZ3MgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQVGhlbWVzU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IGluamVjdCwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlUmV1c2VTdHJhdGVneSwgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhQRW50aXR5UmV1c2VTdHJhdGVneSB9IGZyb20gJy4vZW50aXR5LXJldXNlLnN0cmF0ZWd5JztcblxuZnVuY3Rpb24gcm91dGVzRmFjb3J5KCkge1xuICBjb25zdCBjb25maWcgPSBpbmplY3QoQVhQX0VOVElUWV9DT05GSUdfVE9LRU4pO1xuICBsZXQgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAge1xuICAgICAgcGF0aDogJzphcHAvbW9kdWxlcy86bW9kdWxlLzplbnRpdHknLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gY29uZmlnLnZpZXdlcnMucm9vdCgpO1xuICAgICAgfSxcbiAgICAgIC8vIGNoaWxkcmVuOiBbXG4gICAgICAvLyAgIHtcbiAgICAgIC8vICAgICBwYXRoOiAnZGV0YWlscy86aWQnLFxuICAgICAgLy8gICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnKS50aGVuKChjKSA9PiBjLkFYUExheW91dERldGFpbHNWaWV3Q29tcG9uZW50KSxcbiAgICAgIC8vICAgICBkYXRhOiB7IHJldXNlOiB0cnVlIH0sXG4gICAgICAvLyAgICAgcmVzb2x2ZToge1xuICAgICAgLy8gICAgICAgYWRhcHRlcjogQVhQTGF5b3V0RGV0YWlsc1ZpZXdSb3V0ZVJlc29sdmVyLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgIH0sXG4gICAgICAvLyBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcGF0aDogJ2Vycm9yJyxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnb2ZmbGluZScsXG4gICAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgnLi9wYWdlcy9lcnJvcnMvZXJyb3Itb2ZmbGluZS9lcnJvci1vZmZsaW5lLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQRXJyb3JPZmZsaW5lQ29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6ICc0MDQnLFxuICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoJy4vcGFnZXMvZXJyb3JzL2Vycm9yLTQwNC9lcnJvci00MDQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWFBFcnJvcjQwNENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnNDAxJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL3BhZ2VzL2Vycm9ycy9lcnJvci00MDEvZXJyb3ItNDAxLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQRXJyb3I0MDFDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gcm91dGVzO1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQVhQQ29tbW9uTW9kdWxlLCBBWFBUaGVtZXNTaGFyZWRNb2R1bGVdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9DT05GSUdfVE9LRU4sXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgICB2aWV3ZXJzOiB7XG4gICAgICAgICAgICByb290OiAoKSA9PiBpbXBvcnQoJy4vbGF5b3V0cy9yb290LWxheW91dC9yb290LWxheW91dC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYUFJvb3RMYXlvdXRDb21wb25lbnQpLFxuICAgICAgICAgICAgbWFzdGVyOiB7XG4gICAgICAgICAgICAgIHNpbmdsZTogKCkgPT5cbiAgICAgICAgICAgICAgICBpbXBvcnQoJy4vbGF5b3V0cy9lbnRpdHktbGF5b3V0cy9lbnRpdHktbWFzdGVyLXNpbmdsZS12aWV3L2VudGl0eS1tYXN0ZXItc2luZ2xlLXZpZXcuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgICAgIChjKSA9PiBjLkFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGV0YWlsczogKCkgPT4gaW1wb3J0KCdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cycpLnRoZW4oKGMpID0+IGMuQVhQTGF5b3V0RGV0YWlsc1ZpZXdDb21wb25lbnQpLFxuICAgICAgICAgICAgICAvLy9cbiAgICAgICAgICAgICAgY3JlYXRlOiAoKSA9PlxuICAgICAgICAgICAgICAgIGltcG9ydCgnLi9sYXlvdXRzL2VudGl0eS1sYXlvdXRzL2VudGl0eS1tYXN0ZXItY3JlYXRlLXZpZXcvZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAgICAgKGMpID0+IGMuQVhQRW50aXR5TWFzdGVyQ3JlYXRlVmlld0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAvLy9cbiAgICAgICAgICAgICAgbW9kaWZ5OiAoKSA9PlxuICAgICAgICAgICAgICAgIGltcG9ydCgnLi9sYXlvdXRzL2VudGl0eS1sYXlvdXRzL2VudGl0eS1tYXN0ZXItbW9kaWZ5LXZpZXcvZW50aXR5LW1hc3Rlci1tb2RpZnktdmlldy5jb21wb25lbnQnKS50aGVuKFxuICAgICAgICAgICAgICAgICAgKGMpID0+IGMuQVhQRW50aXR5TWFzdGVyTW9kaWZ5Vmlld0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICBsaXN0OiAoKSA9PlxuICAgICAgICAgICAgICAgIGltcG9ydCgnLi9sYXlvdXRzL2VudGl0eS1sYXlvdXRzL2VudGl0eS1tYXN0ZXItbGlzdC12aWV3L2VudGl0eS1tYXN0ZXItbGlzdC12aWV3LmNvbXBvbmVudCcpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAoYykgPT4gYy5BWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEFYUEVudGl0eUNvbmZpZ3M7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICB7IHByb3ZpZGU6IFJvdXRlUmV1c2VTdHJhdGVneSwgdXNlQ2xhc3M6IEFYUEVudGl0eVJldXNlU3RyYXRlZ3kgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBST1VURVMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUZhY3Rvcnk6IHJvdXRlc0ZhY29yeSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBEZWZhdWx0VGhlbWVNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLXRoZW1lcy1kZWZhdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvYWNvcmV4LXBsYXRmb3JtLXRoZW1lcy1kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i4","i8","i9","i1","i2","i3","i5","sortBy","i6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-themes-default.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.html","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-category/entity-category.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-category/entity-category.component.html","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-toolbar-view/entity-master-toolbar-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-toolbar-view/entity-master-toolbar-view.component.html","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/footer/footer.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/footer/footer.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/header/header.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/header/header.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/side-menu/side-menu.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/side-menu/side-menu.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/horizontal/horizontal-layout.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/horizontal/horizontal-layout.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/vertical/vertical-layout.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/vertical/vertical-layout.component.html","../../../../libs/platform/themes/default/src/lib/layouts/root-layout/root-layout.component.ts","../../../../libs/platform/themes/default/src/lib/entity-reuse.strategy.ts","../../../../libs/platform/themes/default/src/lib/default.module.ts","../../../../libs/platform/themes/default/src/acorex-platform-themes-default.ts"],"sourcesContent":["import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXActionSheetModule, AXActionSheetService } from '@acorex/components/action-sheet';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport {\n AXDataTableComponent,\n AXDataTableModule,\n AXDataTableRowDbClick,\n AXRowCommandItem,\n AXRowCommandItemClickEvent,\n} from '@acorex/components/data-table';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPEntityCommandTriggerViewModel, AXPEntityDetailListViewModel } from '@acorex/platform/layout/entity';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsModule } from '@acorex/platform/layout/widgets';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'axp-entity-detail-list-view',\n templateUrl: 'entity-detail-list-view.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXUnsubscriber],\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n AXButtonModule,\n AXDecoratorModule,\n AXBadgeModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXTooltipModule,\n AXBreadcrumbsModule,\n AXSearchBoxModule,\n AXDataTableModule,\n //\n AXPWidgetCoreModule,\n AXPWidgetsModule,\n AXPAuthModule,\n AXTranslationModule,\n ],\n})\nexport class AXPEntityDetailListViewComponent {\n private workflow = inject(AXPWorkflowService);\n protected store = inject(AXPLayoutThemeService);\n protected deviceService = inject(AXPDeviceService);\n\n protected toolbarPrimaryActions = signal<AXPEntityCommandTriggerViewModel[]>([]);\n protected toolbarSecondaryActions = signal<AXPEntityCommandTriggerViewModel[]>([]);\n\n @Input('viewModel')\n vm: AXPEntityDetailListViewModel;\n\n protected focusedRow: any;\n //\n @ViewChild('grid', { static: true }) grid: AXDataTableComponent;\n\n constructor(\n private actionSheetService: AXActionSheetService,\n private unsubscriber: AXUnsubscriber,\n ) {\n effect(() => {\n this.grid.selectedRows = this.vm.selectedItems();\n // Re-evaluate toolbar actions whenever selection changes\n this.refreshToolbarActions();\n });\n this.subscribeActionEvents();\n }\n\n private readonly destroyed = new Subject<void>();\n\n handleChangeSearchValue(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n this.vm.applyInlineFilter(e.value);\n }\n }\n\n protected subscribeActionEvents() {\n this.workflow.events$\n .pipe(ofType(AXPRefreshEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n console.log(event);\n this.grid.refresh({\n reset: false,\n });\n // Re-evaluate toolbar actions after refresh events\n this.refreshToolbarActions();\n });\n }\n\n ngAfterViewInit(): void {\n // this.grid.refresh();\n this.refreshToolbarActions();\n }\n\n protected dropdownRowItems = computed<AXRowCommandItem[]>(() => {\n return this.vm.secondaryRowActions().map(\n (c) =>\n ({\n icon: c.icon,\n name: c.name,\n text: c.title,\n color: c.color,\n }) as AXRowCommandItem,\n );\n });\n\n protected commandRowItems = computed<AXRowCommandItem[]>(() => {\n return this.vm.primaryRowActions().map((c) => {\n return {\n icon: c.icon,\n name: c.name,\n text: c.title,\n color: c.color,\n } as AXRowCommandItem;\n });\n });\n\n protected async handleRowDbClick(e: AXDataTableRowDbClick) {\n const allItems = [...this.commandRowItems(), ...this.dropdownRowItems()];\n // const defaultAction = allItems.find((c) => (c as any).default) || allItems[0];\n const defaultAction = allItems.find((c) => (c as any).default);\n if (!defaultAction) {\n return;\n }\n const d: AXRowCommandItemClickEvent = {\n component: e.component,\n name: defaultAction.name,\n data: e.data,\n };\n this.handleRowCommandClick(d);\n }\n\n protected getCommandRowItems = (): AXRowCommandItem[] => {\n return this.commandRowItems();\n };\n\n protected getDropdownRowItems = (rowData: unknown): Promise<AXRowCommandItem[]> => {\n return Promise.resolve(this.dropdownRowItems());\n };\n\n protected async handleSelectedRowsChange(rows: unknown[]) {\n this.vm.selectedItems.set(rows);\n }\n\n protected async handleRowCommandClick(e: AXRowCommandItemClickEvent) {\n this.vm.executeCommand(e.name, e.data);\n }\n\n private async refreshToolbarActions() {\n const [primary, secondary] = await Promise.all([this.vm.getPrimaryActions(), this.vm.getSecondaryActions()]);\n this.toolbarPrimaryActions.set(primary);\n this.toolbarSecondaryActions.set(secondary);\n }\n\n protected destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n}\n","<div class=\"ax-flex ax-p-2\">\n <div class=\"ax-flex ax-flex-col ax-items-end ax-gap-3 ax-flex-1 ax-overflow-auto ax-min-h-72\">\n <div class=\"ax-flex ax-justify-between ax-items-center ax-w-full\">\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-4\">\n @if (vm.hasSelectedItems()) {\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.selectedItems().length }}\n {{ '@general:terms.items-selected' | translate | async }}\n </span>\n <span\n (click)=\"vm.clearSelection()\"\n class=\"ax-text-sm ax-text-primary-500 ax-underline ax-cursor-pointer\"\n >{{ '@general:actions.unselect.title' | translate | async }}</span\n >\n </div>\n } @else {\n @if (vm.hasInlineFilters() && !deviceService.isSmall()) {\n <div class=\"ax-w-72\">\n <ax-search-box\n [placeholder]=\"\n ('@general:widgets.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\n \"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for (tr of toolbarPrimaryActions(); track $index) {\n <ax-button\n [text]=\"(tr.title | translate | async)!\"\n [color]=\"tr.color\"\n [disabled]=\"tr.disabled\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n }\n @if (toolbarSecondaryActions().length) {\n <ax-button\n [text]=\"deviceService.isSmall() ? null : ('@general:terms.interface.actions' | translate | async)\"\n [color]=\"'default'\"\n >\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (tr of toolbarSecondaryActions(); track $index) {\n <ng-container>\n @if (tr.separated && !$first) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"(tr.title | translate | async)!\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n </div>\n\n <div class=\"ax-flex ax-flex-1 ax-pt-0 ax-overflow-auto ax-max-w-full\">\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"ax-flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm.parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm.dataSource\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.selectedScopeActionsCount()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (col of vm.columns(); track col.name) {\n @if (col.visible) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && vm.parentKey() ? true : false\"\n [caption]=\"(col.title | translate | async)!\"\n [node]=\"col.node()\"\n ></axp-widget-column-renderer>\n }\n }\n @if (getCommandRowItems().length) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"getCommandRowItems().length * 60 + 'px'\"\n [items]=\"getCommandRowItems()\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-command-column>\n }\n @if (dropdownRowItems().length) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n </div>\n </div>\n</div>\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n computed,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXClickEvent, AXDataSourceFilterOption, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport {\n AXTreeViewComponent,\n AXTreeViewDragArea,\n AXTreeViewDragBehavior,\n AXTreeViewModule,\n AXTreeViewNode,\n AXTreeViewNodeToggleEvent,\n AXTreeViewSelectionBehavior,\n AXTreeViewSelectMode,\n AXTreeViewViewLook,\n} from '@acorex/components/tree-view';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPQueryFilter, AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXHighlightService, AXPResolveMultiLanguageStringPipe } from '@acorex/platform/core';\nimport {\n AXPStateMessageComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n} from '@acorex/platform/layout/components';\nimport {\n AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY,\n AXPCategoryTreeService,\n AXPEntityDefinitionRegistryService,\n AXPEntityMasterListViewModel,\n CategoryTreeConfig,\n CategoryTreeNodeData,\n} from '@acorex/platform/layout/entity';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPWorkflowContext, AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n//#region ---- Constants ----\n\nconst ROOT_NODE_ID = 'all';\nconst LOADING_DELAY_MS = 300;\nconst DEFAULT_TEXT_FIELD = 'title';\nconst DEFAULT_VALUE_FIELD = 'id';\n\n//#endregion\n\n@Component({\n selector: 'axp-entity-category',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXTreeViewModule,\n AXTreeViewComponent,\n AXSkeletonModule,\n AXPThemeLayoutBlockComponent,\n AXSearchBoxModule,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutToolbarComponent,\n AXTranslationModule,\n AXButtonModule,\n AXDropdownModule,\n AXPStateMessageComponent,\n AXPResolveMultiLanguageStringPipe\n ],\n templateUrl: './entity-category.component.html',\n styleUrl: './entity-category.component.scss',\n})\nexport class AXPEntityCategoryComponent {\n //#region ---- Services & Dependencies ----\n\n /** i18n key for the synthetic \"all items\" root row; resolved in the template with the translate pipe. */\n protected readonly categoryTreeRootTitleI18nKey = AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY;\n\n protected readonly translate = inject(AXTranslationService);\n protected readonly workflow = inject(AXPWorkflowService);\n protected readonly commandService = inject(AXPCommandService);\n protected readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n protected readonly categoryTreeService = inject(AXPCategoryTreeService);\n protected readonly highlightService = inject(AXHighlightService);\n\n //#endregion\n\n //#region ---- Component Inputs & View Queries ----\n\n vm = input.required<AXPEntityMasterListViewModel>();\n tree = viewChild<AXTreeViewComponent>('tree');\n searchValue = input<string>('');\n\n // Tree view inputs with defaults\n selectMode = input<AXTreeViewSelectMode>('single');\n selectionBehavior = input<AXTreeViewSelectionBehavior>('intermediate');\n dragArea = input<AXTreeViewDragArea>('handler');\n dragBehavior = input<AXTreeViewDragBehavior>('none');\n showIcons = input(true);\n showChildrenBadge = input(false);\n expandedIcon = input('fa-solid fa-chevron-down');\n collapsedIcon = input('fa-solid fa-chevron-right');\n indentSize = input(16);\n look = input<AXTreeViewViewLook>('default');\n searchWithChildren = input<boolean>(true); // Include children of search results\n\n //#endregion\n\n //#region ---- Component State ----\n\n isLoading = signal(true);\n protected isSearching = signal(false);\n protected searchResultCount = signal(0);\n protected currentSearchValue = signal('');\n protected resultsFoundText = signal('');\n\n //#endregion\n\n //#region ---- Private Properties ----\n\n private loadingTimeoutId: ReturnType<typeof setTimeout> | null = null;\n protected treeData: CategoryTreeNodeData | null = null;\n private treeConfig: CategoryTreeConfig | null = null;\n private matchingNodeIds = new Set<string>();\n private relevantNodeIds = new Set<string>(); // For search filtering\n private nodeDataCache = new Map<string, Record<string, unknown>>(); // Cache parent data from search results\n private expandedNodesBeforeSearch: string[] = [];\n private nodesExpandedDuringSearch: string[] = [];\n private currentSearchTerm: string | null = null;\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly textField = computed(() => this.vm().entityDef.category?.textField || DEFAULT_TEXT_FIELD);\n protected readonly valueField = computed(() => this.vm().entityDef.category?.valueField || DEFAULT_VALUE_FIELD);\n\n /** When true, add/edit/delete category actions are hidden (from category plugin readonly option). */\n protected readonly categoryReadonly = computed(\n () => (this.vm().entityDef as any)?.extensions?.category?.readonly === true,\n );\n\n /**\n * Computed property to check if we should show the \"no search results\" empty state.\n * Returns true when search is active, not searching, and no results found.\n */\n protected readonly showNoSearchResults = computed(() => {\n const searchValue = this.currentSearchValue().trim();\n const isSearching = this.isSearching();\n const resultCount = this.searchResultCount();\n return searchValue.length > 0 && !isSearching && resultCount === 0;\n });\n\n private readonly categoryEntityKey = computed(() => {\n const key = this.vm().entityDef.category?.entity;\n if (!key) {\n throw new Error('Category entity is not configured');\n }\n return key;\n });\n\n //#endregion\n\n //#region ---- Constructor & Lifecycle ----\n\n constructor() {\n afterNextRender(() => {\n this.initializeTree();\n });\n this.workflow.events$\n .pipe(ofType(AXPRefreshEvent))\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this.tree()?.reloadData();\n // this.tree()?.refresh();\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handles category search input changes - Uses server-side search for efficiency and reliability\n */\n async handleCategorySearchChange(event: AXValueChangedEvent<string>): Promise<void> {\n if (!this.isTreeInitialized()) {\n return;\n }\n\n const searchTerm = (event.value ?? '').trim().toLowerCase();\n const previousSearchTerm = this.currentSearchValue();\n\n // If search is cleared, reset tree\n if (!searchTerm) {\n if (previousSearchTerm || this.matchingNodeIds.size > 0) {\n this.currentSearchValue.set('');\n this.currentSearchTerm = null;\n await this.resetSearch();\n }\n return;\n }\n\n // For non-empty search, only process user interactions\n if (!event.isUserInteraction) {\n return;\n }\n\n // Prevent concurrent searches\n if (this.isSearching() && this.currentSearchTerm !== null) {\n if (this.currentSearchTerm === searchTerm) {\n return;\n }\n }\n\n this.currentSearchValue.set(event.value ?? '');\n this.currentSearchTerm = searchTerm;\n\n const treeComponent = this.tree();\n if (!treeComponent) {\n return;\n }\n\n // Store expanded nodes before starting a new search (only on first search)\n if (!previousSearchTerm && this.expandedNodesBeforeSearch.length === 0) {\n const expandedNodes = treeComponent.getExpandedNodes();\n this.expandedNodesBeforeSearch = expandedNodes\n .map((node) => String(node['id'] ?? ''))\n .filter((id) => id && id !== ROOT_NODE_ID);\n }\n\n // Collapse nodes from previous search before starting new search\n if (previousSearchTerm && this.nodesExpandedDuringSearch.length > 0) {\n const nodesToCollapse = [...this.nodesExpandedDuringSearch].reverse();\n this.nodesExpandedDuringSearch = [];\n for (const nodeId of nodesToCollapse) {\n // Only collapse if it wasn't originally expanded before search\n if (!this.expandedNodesBeforeSearch.includes(nodeId)) {\n try {\n treeComponent.collapseNode(nodeId);\n } catch {\n // Node might not exist anymore, ignore\n }\n }\n }\n }\n\n this.isSearching.set(true);\n\n try {\n // Step 1: Use server-side search to get matching items\n const searchResults = await this.categoryTreeService.searchCategories(\n searchTerm,\n this.treeData!,\n this.treeConfig!,\n );\n\n // Check if search term changed during the API call\n if (this.currentSearchTerm !== searchTerm) {\n return;\n }\n\n if (!searchResults || searchResults.length === 0) {\n this.matchingNodeIds.clear();\n this.relevantNodeIds.clear();\n this.searchResultCount.set(0);\n await this.updateTranslatedMessages(0);\n // Clear highlighting and reload tree to show all nodes\n this.highlightService.clear();\n await treeComponent.reloadData();\n return;\n }\n\n // Store matching node IDs from search results\n this.matchingNodeIds.clear();\n const valueField = this.valueField();\n searchResults.forEach((item) => {\n const nodeId = String(item[valueField] ?? '');\n if (nodeId) {\n this.matchingNodeIds.add(nodeId);\n }\n });\n\n const resultCount = searchResults.length;\n this.searchResultCount.set(resultCount);\n\n // Update translated messages\n await this.updateTranslatedMessages(resultCount);\n\n // Step 2: Collect parent IDs (builds relevantNodeIds for filtering)\n const parentsToExpand = await this.collectParentIds(searchResults);\n\n // Step 2.5: Collect children IDs if searchWithChildren is enabled\n if (this.searchWithChildren()) {\n await this.collectChildrenIds(searchResults);\n }\n\n // Step 3: Reload tree to apply filtering\n await treeComponent.reloadData();\n\n // Step 4: Expand root node\n if (!treeComponent.isNodeExpanded(ROOT_NODE_ID)) {\n try {\n await treeComponent.expandNode(ROOT_NODE_ID);\n this.nodesExpandedDuringSearch.push(ROOT_NODE_ID);\n } catch {\n // Root might not exist\n }\n }\n\n // Step 4: Expand all parent nodes in order (from root to leaves)\n // Sort parents by their depth to expand in correct order\n const sortedParents = await this.sortParentsByDepth(Array.from(parentsToExpand));\n for (const parentId of sortedParents) {\n // Only expand if not already expanded\n if (!treeComponent.isNodeExpanded(parentId)) {\n try {\n await treeComponent.expandNode(parentId);\n this.nodesExpandedDuringSearch.push(parentId);\n // Small delay to prevent overwhelming the tree component\n await new Promise((resolve) => setTimeout(resolve, 10));\n } catch {\n // Node might not exist, ignore\n }\n }\n }\n\n // Step 5: Apply highlighting after tree is rendered\n // Use setTimeout to ensure DOM is updated after tree reload\n setTimeout(() => {\n if (this.currentSearchValue().trim()) {\n this.highlightService.highlight('ax-tree-view .ax-truncate', this.currentSearchValue().trim());\n }\n }, 100);\n } catch (error) {\n console.error('Error searching categories:', error);\n this.matchingNodeIds.clear();\n this.relevantNodeIds.clear();\n this.searchResultCount.set(0);\n this.highlightService.clear();\n // Reload tree to clear any filters\n const treeComponent = this.tree();\n if (treeComponent) {\n await treeComponent.reloadData();\n }\n } finally {\n if (this.currentSearchTerm === searchTerm) {\n this.currentSearchTerm = null;\n }\n this.isSearching.set(false);\n }\n }\n\n /**\n * Collects all parent IDs for the given search results\n * Handles both nested 'parent' object and 'parentId' field in search results\n * Recursively fetches parent nodes to build the full parent chain\n */\n private async collectParentIds(items: Record<string, unknown>[]): Promise<Set<string>> {\n const parentsToExpand = new Set<string>();\n const valueField = this.valueField();\n const parentKey = this.treeData?.categoryEntityDef?.parentKey || 'parentId';\n\n // Build relevantNodeIds = matching nodes + all parents\n this.relevantNodeIds.clear();\n this.matchingNodeIds.forEach((id) => this.relevantNodeIds.add(id));\n\n // Recursively extract all parent IDs\n const extractParentIds = async (item: Record<string, unknown>): Promise<void> => {\n // First, try to get parent from nested 'parent' object (if available)\n const parent = item['parent'] as Record<string, unknown> | undefined;\n if (parent) {\n const parentId = String(parent[valueField] ?? parent['id'] ?? '');\n if (parentId && parentId !== ROOT_NODE_ID) {\n parentsToExpand.add(parentId);\n this.relevantNodeIds.add(parentId); // Add to filter set\n this.nodeDataCache.set(parentId, parent);\n await extractParentIds(parent);\n }\n } else {\n // Fallback: use parentId field and fetch parent from server\n // Try both parentKey from entity definition and common 'parentId' field\n const parentIdValue = item[parentKey] ?? item['parentId'];\n if (parentIdValue) {\n const parentId = String(parentIdValue);\n if (parentId && parentId !== ROOT_NODE_ID) {\n // Add to sets first\n parentsToExpand.add(parentId);\n this.relevantNodeIds.add(parentId);\n\n // Fetch parent from server if not already cached\n if (!this.nodeDataCache.has(parentId)) {\n const parentItem = await this.fetchItemById(parentId);\n if (parentItem) {\n this.nodeDataCache.set(parentId, parentItem);\n // Recursively fetch parent's parent\n await extractParentIds(parentItem);\n }\n } else {\n // Parent already in cache, recursively process it\n const cachedParent = this.nodeDataCache.get(parentId);\n if (cachedParent) {\n await extractParentIds(cachedParent);\n }\n }\n }\n }\n }\n };\n\n // Process all items\n for (const item of items) {\n await extractParentIds(item);\n }\n\n return parentsToExpand;\n }\n\n /**\n * Collects children IDs for matching search results recursively\n * Adds all descendants (children, grandchildren, etc.) to relevantNodeIds so they appear in the filtered tree\n */\n private async collectChildrenIds(items: Record<string, unknown>[]): Promise<void> {\n if (!this.treeData?.categoryEntityQueryFunc || !this.treeConfig) {\n return;\n }\n\n const valueField = this.valueField();\n const parentKey = this.treeData.categoryEntityDef?.parentKey;\n if (!parentKey) {\n return;\n }\n\n // For each matching node, recursively fetch all its descendants\n for (const item of items) {\n const nodeId = String(item[valueField] ?? '');\n if (!nodeId || nodeId === ROOT_NODE_ID) {\n continue;\n }\n\n await this.collectChildrenRecursively(nodeId, valueField, parentKey);\n }\n }\n\n /**\n * Recursively collects all descendant IDs for a given node\n */\n private async collectChildrenRecursively(nodeId: string, valueField: string, parentKey: string): Promise<void> {\n if (!this.treeData?.categoryEntityQueryFunc) {\n return;\n }\n\n try {\n // Fetch children for this node\n const event = {\n ...this.treeData.basicQueryEvent,\n filter: {\n field: parentKey,\n value: nodeId,\n operator: { type: 'equal' },\n },\n };\n\n const res = await this.treeData.categoryEntityQueryFunc(event);\n if (res?.items && res.items.length > 0) {\n // Add children IDs to relevantNodeIds so they appear in filtered tree\n for (const child of res.items) {\n const childId = String(child[valueField] ?? '');\n if (childId && childId !== ROOT_NODE_ID) {\n this.relevantNodeIds.add(childId);\n // Cache child data\n this.nodeDataCache.set(childId, child);\n // Recursively fetch children of this child\n await this.collectChildrenRecursively(childId, valueField, parentKey);\n }\n }\n }\n } catch (error) {\n console.error(`Error fetching children for node ${nodeId}:`, error);\n }\n }\n\n /**\n * Fetches a single item by ID from the server\n */\n private async fetchItemById(id: string): Promise<Record<string, unknown> | null> {\n if (!this.treeData?.categoryEntityQueryFunc) {\n return null;\n }\n\n try {\n const valueField = this.valueField();\n const event = {\n ...this.treeData.basicQueryEvent,\n filter: {\n field: valueField,\n value: id,\n operator: { type: 'equal' },\n },\n };\n\n const res = await this.treeData.categoryEntityQueryFunc(event);\n return res?.items?.[0] ?? null;\n } catch (error) {\n console.error('Error fetching item by ID:', error);\n return null;\n }\n }\n\n /**\n * Sorts parent IDs by their depth (root first, leaves last)\n * Uses cached data from collectParentIds\n */\n private async sortParentsByDepth(parentIds: string[]): Promise<string[]> {\n const parentKey = this.treeData?.categoryEntityDef?.parentKey;\n if (!parentKey || parentIds.length === 0) {\n return parentIds;\n }\n\n // Build depth map using cached data\n const depthMap = new Map<string, number>();\n\n for (const parentId of parentIds) {\n if (depthMap.has(parentId)) {\n continue;\n }\n\n let depth = 0;\n let currentId: string | null = parentId;\n const visited = new Set<string>();\n\n while (currentId && currentId !== ROOT_NODE_ID && !visited.has(currentId)) {\n visited.add(currentId);\n depth++;\n\n // Use nodeDataCache which was populated by collectParentIds\n const item = this.nodeDataCache.get(currentId);\n if (item) {\n currentId = item[parentKey] ? String(item[parentKey]) : null;\n } else {\n break;\n }\n }\n\n depthMap.set(parentId, depth);\n }\n\n // Sort by depth (lower depth = closer to root = expand first)\n return parentIds.sort((a, b) => {\n const depthA = depthMap.get(a) ?? 0;\n const depthB = depthMap.get(b) ?? 0;\n return depthA - depthB;\n });\n }\n\n /**\n * Updates translated messages for search results\n */\n private async updateTranslatedMessages(resultCount: number): Promise<void> {\n if (resultCount > 0) {\n const key =\n resultCount === 1\n ? '@general:terms.interface.category.search.results-found.singular'\n : '@general:terms.interface.category.search.results-found.plural';\n const text = await this.translate.translateAsync(key, { params: { count: resultCount } });\n this.resultsFoundText.set(text);\n } else {\n this.resultsFoundText.set('');\n }\n }\n\n /**\n * Resets search state and restores tree to original expanded state\n */\n private async resetSearch(): Promise<void> {\n this.searchResultCount.set(0);\n this.resultsFoundText.set('');\n this.currentSearchTerm = null;\n this.isSearching.set(false);\n this.matchingNodeIds.clear();\n this.relevantNodeIds.clear();\n this.nodeDataCache.clear();\n // Clear highlighting\n this.highlightService.clear();\n\n const treeComponent = this.tree();\n if (!treeComponent) {\n this.expandedNodesBeforeSearch = [];\n this.nodesExpandedDuringSearch = [];\n return;\n }\n\n // Reload tree to show all nodes (no filtering)\n await treeComponent.reloadData();\n\n // Collapse nodes that were expanded during search (in reverse order - leaves first)\n const nodesToCollapse = [...this.nodesExpandedDuringSearch].reverse();\n this.nodesExpandedDuringSearch = [];\n\n for (const nodeId of nodesToCollapse) {\n // Only collapse if it wasn't originally expanded before search\n if (!this.expandedNodesBeforeSearch.includes(nodeId)) {\n try {\n treeComponent.collapseNode(nodeId);\n } catch {\n // Node might not exist anymore, ignore\n }\n }\n }\n\n // Clear the stored expanded nodes\n this.expandedNodesBeforeSearch = [];\n }\n\n /**\n * Checks if a node matches the current search term\n */\n protected isMatchingNode(nodeId: string): boolean {\n return this.matchingNodeIds.has(nodeId);\n }\n\n /**\n * Handles node click events to apply category filters and track selected category for create command\n */\n protected handleNodeClick(node: AXTreeViewNode): void {\n const nodeData = this.extractNodeData(node);\n const applyConditions = this.vm().entityDef.category?.applyConditions || [];\n const valueField = this.valueField();\n const textField = this.textField();\n const nodeId = String(nodeData[valueField] ?? node['id'] ?? '');\n\n // Track selected category for default category when creating new entities\n if (nodeId === 'all' || !nodeId) {\n this.vm().setSelectedCategory(null);\n } else {\n this.vm().setSelectedCategory({\n id: nodeId,\n title: String(nodeData[textField] ?? node['title'] ?? ''),\n });\n }\n\n const categoryFilters = this.buildCategoryFilters(nodeData, applyConditions);\n const viewFilters = this.buildViewFilters();\n\n this.vm().dataSource.filter({\n filters: [...viewFilters, ...categoryFilters],\n logic: 'and',\n });\n this.vm().dataSource.refresh();\n }\n\n /**\n * Handles node toggle events (expansion/collapse)\n */\n protected async onNodeToggle(_event: AXTreeViewNodeToggleEvent): Promise<void> {\n // Tree component handles lazy loading via datasource callback\n }\n\n // protected toggleExpand(e: AXTreeViewNodeDoubleClickEvent) {\n // (e.component as AXTreeViewComponent).toggleNodeExpansion(String(e.node[this.valueField()] ?? ''));\n // }\n\n //#endregion\n\n //#region ---- Tree Data Source ----\n\n /**\n * Datasource callback for tree-view component.\n * Provides lazy loading support for tree nodes.\n */\n protected datasource = async (parentId?: string): Promise<AXTreeViewNode[]> => {\n if (!this.isTreeInitialized()) {\n return [];\n }\n\n // Load root nodes if no parent ID provided\n if (!parentId) {\n return await this.loadRootNodes();\n }\n\n // Load children for the specified parent\n return await this.loadChildNodes(parentId);\n };\n\n //#endregion\n\n //#region ---- CRUD Operations ----\n\n /**\n * Creates a new root category node (uses Entity:Create command).\n */\n async handleCreateRootClick(event: AXClickEvent): Promise<void> {\n this.preventDefaultAndStopPropagation(event);\n\n try {\n const result = await this.executeCreateCommand(undefined);\n await this.applyCreateResult(result, undefined);\n } catch (error) {\n console.error('Error creating root category:', error);\n }\n }\n\n /**\n * Creates a new child category under the given parent node (uses Entity:Create command).\n */\n async handleCreateChildClick(node: AXTreeViewNode, event: AXClickEvent): Promise<void> {\n this.preventDefaultAndStopPropagation(event);\n\n try {\n const parentId = this.extractNodeId(node);\n const result = await this.executeCreateCommand(parentId);\n await this.applyCreateResult(result, parentId);\n } catch (error) {\n console.error('Error creating child category:', error);\n }\n }\n\n /**\n * Updates an existing category node (uses Entity:Update command).\n */\n async handleEditNodeClick(node: AXTreeViewNode, event: AXClickEvent): Promise<void> {\n this.preventDefaultAndStopPropagation(event);\n\n try {\n const nodeData = this.extractNodeData(node);\n const result = await this.executeUpdateCommand(nodeData);\n await this.applyUpdateResult(result, node);\n } catch (error) {\n console.error('Error editing category:', error);\n }\n }\n\n /**\n * Deletes a category node\n */\n async handleDeleteNodeClick(node: AXTreeViewNode, event: AXClickEvent): Promise<void> {\n this.preventDefaultAndStopPropagation(event);\n\n try {\n const nodeData = this.extractNodeData(node);\n const context = await this.executeDeleteWorkflow(nodeData);\n await this.handleDeleteResult(context, node);\n } catch (error) {\n console.error('Error deleting category:', error);\n }\n }\n\n //#endregion\n\n //#region ---- Private Tree Management Methods ----\n\n /**\n * Initializes the category tree data structure\n */\n private async initializeTree(): Promise<void> {\n this.setLoadingWithDelay(true);\n\n try {\n const entityKey = this.categoryEntityKey();\n this.treeConfig = {\n entityKey,\n textField: this.textField(),\n valueField: this.valueField(),\n };\n\n this.treeData = await this.categoryTreeService.initializeCategoryTree(this.treeConfig);\n if (!this.treeData) {\n this.clearLoadingState();\n return;\n }\n\n // Set parent key from entity definition\n if (this.treeData.categoryEntityDef?.parentKey) {\n this.treeConfig.parentKey = this.treeData.categoryEntityDef.parentKey;\n }\n } catch (error) {\n console.error('Error loading categories:', error);\n } finally {\n this.clearLoadingState();\n }\n }\n\n /**\n * Loads root nodes for the tree\n */\n private async loadRootNodes(): Promise<AXTreeViewNode[]> {\n if (!this.isTreeInitialized()) {\n return [];\n }\n\n // Load root categories\n const items = await this.categoryTreeService.loadRootCategories(this.treeData!, this.treeConfig!);\n if (!items) {\n return [];\n }\n\n const rootNode = await this.categoryTreeService.createRootNode(items, this.treeConfig!);\n\n // Filter root's children when search is active\n if (this.relevantNodeIds.size > 0 && rootNode['children']) {\n rootNode['children'] = (rootNode['children'] as AXTreeViewNode[]).filter((child) => {\n const childId = String(child['id'] ?? '');\n return this.relevantNodeIds.has(childId);\n });\n rootNode['childrenCount'] = (rootNode['children'] as AXTreeViewNode[]).length;\n }\n\n return [rootNode];\n }\n\n /**\n * Loads child nodes for a given parent ID\n */\n private async loadChildNodes(parentId: string): Promise<AXTreeViewNode[]> {\n if (!this.isTreeInitialized()) {\n return [];\n }\n\n // Create minimal node object - loadChildren only needs node.id\n const targetNode: AXTreeViewNode = {\n id: parentId,\n } as AXTreeViewNode;\n\n let children = await this.categoryTreeService.loadChildren(targetNode, this.treeData!, this.treeConfig!);\n\n // Filter children when search is active\n if (this.relevantNodeIds.size > 0) {\n children = children.filter((child) => {\n const childId = String(child['id'] ?? '');\n return this.relevantNodeIds.has(childId);\n });\n }\n\n return children;\n }\n\n /**\n * Refreshes the tree view component\n */\n private refreshTree(): void {\n const treeComponent = this.tree();\n if (treeComponent) {\n treeComponent.refresh();\n }\n }\n\n /**\n * Refreshes tree after CRUD operations\n */\n private async refreshAfterChange(parentId?: string): Promise<void> {\n this.refreshTree();\n }\n\n /**\n * Adds a new node to the tree after create operation\n */\n private async addNodeToTree(entityData: Record<string, unknown>, parentId?: string): Promise<void> {\n if (!this.isTreeInitialized()) {\n return;\n }\n\n const treeComponent = this.tree();\n if (!treeComponent) {\n return;\n }\n\n const newNode = this.categoryTreeService.convertToTreeNode(entityData, this.treeConfig!);\n\n if (parentId) {\n await this.addChildNode(treeComponent, parentId, newNode);\n } else {\n await this.addRootNode(treeComponent, newNode);\n }\n }\n\n /**\n * Adds a child node to a parent node\n */\n private async addChildNode(\n treeComponent: AXTreeViewComponent,\n parentId: string,\n newNode: AXTreeViewNode,\n ): Promise<void> {\n const parentNode = treeComponent.findNode(parentId);\n if (!parentNode) {\n await this.refreshAfterChange(parentId);\n return;\n }\n\n if (!treeComponent.isNodeExpanded(parentId)) {\n await treeComponent.expandNode(parentId);\n }\n\n treeComponent.addChild(parentId, newNode);\n }\n\n /**\n * Adds a root node to the tree\n */\n private async addRootNode(treeComponent: AXTreeViewComponent, newNode: AXTreeViewNode): Promise<void> {\n const rootNode = treeComponent.findNode(ROOT_NODE_ID);\n if (!rootNode) {\n await this.refreshAfterChange();\n return;\n }\n\n if (!treeComponent.isNodeExpanded(ROOT_NODE_ID)) {\n await treeComponent.expandNode(ROOT_NODE_ID);\n }\n\n treeComponent.addChild(ROOT_NODE_ID, newNode);\n }\n\n /**\n * Updates an existing node in the tree after edit operation\n */\n private async updateNodeInTree(nodeId: string, entityData: Record<string, unknown>): Promise<void> {\n if (!this.isTreeInitialized()) {\n return;\n }\n\n const treeComponent = this.tree();\n if (!treeComponent) {\n return;\n }\n\n const existingNode = treeComponent.findNode(nodeId);\n if (!existingNode) {\n await this.refreshNodeParent(entityData);\n return;\n }\n\n // Check if parent changed\n const parentKey = this.treeData?.categoryEntityDef?.parentKey;\n let newParentId: string | undefined = undefined;\n if (parentKey && entityData[parentKey]) {\n const parentValue = String(entityData[parentKey]);\n // 'all' means root, so treat it as undefined\n newParentId = parentValue !== 'all' && parentValue !== '' ? parentValue : undefined;\n }\n\n const currentParent = treeComponent.getParent(nodeId);\n const currentParentId = currentParent ? String(currentParent['id'] ?? '') : undefined;\n // Normalize current parent: 'all' means root (undefined)\n const normalizedCurrentParentId = currentParentId === 'all' || currentParentId === '' ? undefined : currentParentId;\n\n // Handle parent change: move node to new parent if parent changed\n if (newParentId !== normalizedCurrentParentId) {\n // If parent changed, move the node first\n const moved = treeComponent.moveNode(nodeId, newParentId);\n\n if (!moved) {\n // If move failed, refresh the tree to ensure consistency\n await this.refreshNodeParent(entityData);\n return;\n }\n\n // After moving, we need to ensure the new parent is expanded\n if (newParentId) {\n if (!treeComponent.isNodeExpanded(newParentId)) {\n await treeComponent.expandNode(newParentId);\n }\n } else {\n // Moving to root - ensure root is expanded\n if (!treeComponent.isNodeExpanded(ROOT_NODE_ID)) {\n await treeComponent.expandNode(ROOT_NODE_ID);\n }\n }\n }\n\n // Update node properties (title, data, etc.)\n const updatedNode = this.categoryTreeService.convertToTreeNode(entityData, this.treeConfig!);\n const updates: Partial<AXTreeViewNode> = {\n ['title']: updatedNode['title'],\n ['data']: updatedNode['data'],\n ['childrenCount']: updatedNode['childrenCount'],\n ['icon']: updatedNode['icon'],\n };\n\n treeComponent.editNode(nodeId, updates);\n }\n\n /**\n * Removes a node from the tree after delete operation\n */\n private async removeNodeFromTree(nodeId: string): Promise<void> {\n const treeComponent = this.tree();\n if (!treeComponent) {\n return;\n }\n\n const nodeToDelete = treeComponent.findNode(nodeId);\n if (!nodeToDelete) {\n await this.refreshAfterChange();\n return;\n }\n\n treeComponent.removeNode(nodeId);\n }\n\n //#endregion\n\n //#region ---- Entity CRUD (Commands) ----\n\n /**\n * Executes Entity:Create command for category (standard command-based create).\n */\n private async executeCreateCommand(parentId?: string): Promise<{ success: boolean; data?: Record<string, unknown> }> {\n const entityKey = this.categoryEntityKey();\n const [moduleName, entityName] = entityKey.split('.');\n const entityRef = await this.entityRegistry.resolve(moduleName, entityName);\n\n const data: Record<string, unknown> = {};\n if (parentId && this.treeData?.categoryEntityDef?.parentKey) {\n data[this.treeData.categoryEntityDef.parentKey] = parentId;\n }\n\n const createCategoryTitle = await this.translate.translateAsync('@general:actions.create-category.title');\n\n const result = await this.commandService.execute<unknown, { success: boolean; data?: Record<string, unknown> }>(\n 'Entity:Create',\n {\n __context__: {\n entity: entityKey,\n entityInfo: {\n name: entityRef.name,\n module: entityRef.module,\n title: entityRef.title ?? entityRef.formats?.individual ?? '',\n parentKey: entityRef.parentKey,\n },\n data: Object.keys(data).length > 0 ? data : undefined,\n options: {\n process: { redirect: false, canCreateNewOne: !!parentId },\n decoration: { header: { title: createCategoryTitle } },\n },\n },\n },\n );\n return result ?? { success: false };\n }\n\n /**\n * Executes Entity:Update command for category (standard command-based update).\n */\n private async executeUpdateCommand(\n nodeData: Record<string, unknown>,\n ): Promise<{ success: boolean; data?: Record<string, unknown> }> {\n const entityKey = this.categoryEntityKey();\n const [moduleName, entityName] = entityKey.split('.');\n const entityRef = await this.entityRegistry.resolve(moduleName, entityName);\n\n const result = await this.commandService.execute<unknown, { success: boolean; data?: Record<string, unknown> }>(\n 'Entity:Update',\n {\n __context__: {\n entity: entityKey,\n entityInfo: {\n name: entityRef.name,\n module: entityRef.module,\n title: entityRef.title ?? entityRef.formats?.individual ?? '',\n parentKey: entityRef.parentKey,\n },\n data: nodeData,\n options: { layout: { size: 'md' } },\n },\n },\n );\n return result ?? { success: false };\n }\n\n /**\n * Applies create command result to the tree (add node or refresh).\n */\n private async applyCreateResult(\n result: { success: boolean; data?: Record<string, unknown> },\n parentId?: string,\n ): Promise<void> {\n if (!result.success || !this.isTreeInitialized()) {\n await this.refreshAfterChange(parentId);\n return;\n }\n const newEntityData = result.data;\n if (newEntityData) {\n await this.addNodeToTree(newEntityData, parentId);\n } else {\n await this.refreshAfterChange(parentId);\n }\n }\n\n /**\n * Applies update command result to the tree (update node or refresh).\n */\n private async applyUpdateResult(\n result: { success: boolean; data?: Record<string, unknown> },\n node: AXTreeViewNode,\n ): Promise<void> {\n if (!result.success || !this.isTreeInitialized()) {\n await this.refreshNodeParent(this.extractNodeData(node));\n return;\n }\n const updatedEntityData = result.data;\n if (updatedEntityData) {\n await this.updateNodeInTree(this.extractNodeId(node), updatedEntityData);\n } else {\n await this.refreshNodeParent(this.extractNodeData(node));\n }\n }\n\n //#endregion\n\n //#region ---- Delete (Workflow) ----\n\n /**\n * Executes delete-entity workflow (platform has no Entity:Delete command).\n */\n private async executeDeleteWorkflow(nodeData: Record<string, unknown>): Promise<AXPWorkflowContext> {\n return await this.workflow.execute('delete-entity', {\n entity: this.categoryEntityKey(),\n data: nodeData,\n options: { process: { showResult: true } },\n });\n }\n\n /**\n * Handles the result of a delete operation\n */\n private async handleDeleteResult(context: AXPWorkflowContext, node: AXTreeViewNode): Promise<void> {\n const result = context.getOutput<boolean>('result');\n if (result) {\n await this.removeNodeFromTree(this.extractNodeId(node));\n } else {\n await this.refreshNodeParent(this.extractNodeData(node));\n }\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n /**\n * Checks if tree data and config are initialized\n */\n private isTreeInitialized(): boolean {\n return !!(this.treeData && this.treeConfig);\n }\n\n /**\n * Extracts node data from a tree node\n */\n private extractNodeData(node: AXTreeViewNode): Record<string, unknown> {\n return ((node['data'] as Record<string, unknown>) || node) as Record<string, unknown>;\n }\n\n /**\n * Extracts node ID from a tree node\n */\n private extractNodeId(node: AXTreeViewNode): string {\n return String(node['id'] ?? '');\n }\n\n /**\n * Builds category filters from node data and apply conditions\n */\n private buildCategoryFilters(\n nodeData: Record<string, unknown>,\n applyConditions: AXPQueryFilter[],\n ): AXDataSourceFilterOption[] {\n return applyConditions\n .map((condition) => {\n const value = nodeData[condition.value];\n if (value === 'all' || value == null) {\n return null;\n }\n return {\n field: condition.name,\n value,\n operator: condition.operator,\n } as AXDataSourceFilterOption;\n })\n .filter((item): item is NonNullable<typeof item> => item !== null);\n }\n\n /**\n * Builds view filters from view conditions\n */\n private buildViewFilters(): AXDataSourceFilterOption[] {\n return this.vm()\n .view()\n .conditions.map((condition) => ({ ...condition, field: condition.name }) as AXDataSourceFilterOption);\n }\n\n /**\n * Refreshes the parent node of the given entity data\n */\n private async refreshNodeParent(entityData: Record<string, unknown>): Promise<void> {\n const parentKey = this.treeData?.categoryEntityDef?.parentKey;\n const parentId = parentKey && entityData[parentKey] ? (entityData[parentKey] as string) : undefined;\n await this.refreshAfterChange(parentId);\n }\n\n /**\n * Prevents default behavior and stops event propagation\n */\n private preventDefaultAndStopPropagation(event: AXClickEvent): void {\n event.nativeEvent.preventDefault();\n event.nativeEvent.stopPropagation();\n }\n\n //#endregion\n\n //#region ---- Loading State Management ----\n\n /**\n * Sets loading state with delay to avoid flickering for fast responses\n */\n private setLoadingWithDelay(loading: boolean): void {\n if (!loading) {\n return;\n }\n\n if (this.loadingTimeoutId) {\n clearTimeout(this.loadingTimeoutId);\n }\n\n this.loadingTimeoutId = setTimeout(() => {\n this.isLoading.set(true);\n this.loadingTimeoutId = null;\n }, LOADING_DELAY_MS);\n }\n\n /**\n * Clears loading state and cancels any pending timeout\n */\n private clearLoadingState(): void {\n if (this.loadingTimeoutId) {\n clearTimeout(this.loadingTimeoutId);\n this.loadingTimeoutId = null;\n }\n\n this.isLoading.set(false);\n }\n\n //#endregion\n}\n","<axp-layout-header>\n <axp-layout-title>{{\n vm().entityDef.category?.title || '@general:terms.classification.category' | translate | async\n }}</axp-layout-title>\n <axp-layout-toolbar>\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-w-full\">\n <ax-search-box (onValueChanged)=\"handleCategorySearchChange($event)\" [delayTime]=\"300\"\n [placeholder]=\"'@general:terms.interface.category.search.placeholder' | translate | async\">\n </ax-search-box>\n @if (isSearching() && currentSearchValue().trim()) {\n <div class=\"ax-text-xs ax-text-muted ax-flex ax-items-center ax-gap-1\">\n <span>{{ '@general:terms.interface.category.search.searching' | translate | async }}</span>\n </div>\n } @else if (currentSearchValue().trim() && !isSearching()) {\n <div class=\"ax-text-xs ax-text-muted ax-flex ax-items-center ax-gap-1\">\n @if (searchResultCount() > 0) {\n <span>{{ resultsFoundText() }}</span>\n }\n </div>\n }\n </div>\n </axp-layout-toolbar>\n</axp-layout-header>\n<axp-layout-content>\n @if (isLoading()) {\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-3\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded-md\"></ax-skeleton>\n </div>\n } @else if (showNoSearchResults()) {\n <div class=\"__empty-state\">\n <axp-state-message icon=\"fa-light fa-search\"\n [title]=\"'@general:terms.interface.category.search.no-results-found.title'\"\n [description]=\"'@general:terms.interface.category.search.no-results-found.description'\">\n </axp-state-message>\n </div>\n } @else if (treeData) {\n <div class=\"ax-px-4 ax-max-h-[calc(100vh-250px)] ax-overflow-auto\">\n <ax-tree-view [datasource]=\"datasource\" [selectMode]=\"selectMode()\" [selectionBehavior]=\"selectionBehavior()\"\n [dragArea]=\"dragArea()\" [dragBehavior]=\"dragBehavior()\" [showIcons]=\"showIcons()\"\n [showChildrenBadge]=\"showChildrenBadge()\" [expandedIcon]=\"expandedIcon()\" [collapsedIcon]=\"collapsedIcon()\"\n [indentSize]=\"indentSize()\" [look]=\"look()\" [titleField]=\"textField()\" [idField]=\"valueField()\"\n [expandOnDoubleClick]=\"true\" [nodeTemplate]=\"itemTemplate\" (onNodeToggle)=\"onNodeToggle($event)\"\n (onNodeClick)=\"handleNodeClick($event.node)\" #tree>\n </ax-tree-view>\n </div>\n } @else {\n <div class=\"__empty-state\">\n <axp-state-message icon=\"fa-light fa-folder-open\"\n [title]=\"'@general:terms.interface.category.search.no-records.title'\"\n [description]=\"'@general:terms.interface.category.search.no-records.description'\">\n @if (!categoryReadonly()) {\n <ax-button slot=\"actions\" (onClick)=\"handleCreateRootClick($event)\" look=\"solid\" color=\"primary\"\n [text]=\"'@general:actions.add-new.title' | translate | async\">\n <ax-icon class=\"fas fa-plus\"></ax-icon>\n </ax-button>\n }\n </axp-state-message>\n </div>\n }\n\n <ng-template #itemTemplate let-node=\"node\" let-level=\"level\">\n @let item = node.data || node;\n @let textField = vm().entityDef.category?.textField || 'title';\n @let valueField = vm().entityDef.category?.valueField || 'id';\n @let itemId = item[valueField] || node.id;\n @let rawLabel = item[textField] || node.title;\n @let itemTitle = rawLabel | axpResolveMultiLanguageString;\n <div class=\"ax-flex ax-items-center ax-justify-between ax-w-full ax-gap-2 ax-overflow-hidden ax-py-1\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-min-w-0\">\n <ax-icon class=\"fas fa-folder\"\n [style.color]=\"item.color ?? 'rgba(var(--ax-sys-color-warning-500), 1)'\"></ax-icon>\n <span class=\"ax-truncate\">\n @if (itemId === 'all') {\n {{ categoryTreeRootTitleI18nKey | translate | async }}\n } @else {\n {{ itemTitle }}\n }\n </span>\n </div>\n @if (itemId && itemId !== 'all' && !categoryReadonly()) {\n <div class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-button class=\"ax-xs\" color=\"default\" look=\"blank\" (onClick)=\"$event.nativeEvent.stopPropagation()\">\n <ax-icon class=\"fas fa-ellipsis-v\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item (onClick)=\"handleCreateChildClick(node, $event)\" look=\"blank\" color=\"default\"\n [text]=\"('@general:actions.add-new-child.title' | translate | async)!\">\n <ax-icon class=\"fas fa-plus\"></ax-icon>\n </ax-button-item>\n <ax-button-item (onClick)=\"handleEditNodeClick(node, $event)\" look=\"blank\"\n [text]=\"('@general:actions.edit.title' | translate | async)!\">\n <ax-icon class=\"fas fa-pen\"></ax-icon>\n </ax-button-item>\n <ax-button-item (onClick)=\"handleDeleteNodeClick(node, $event)\" color=\"danger\" look=\"blank\"\n [text]=\"('@general:actions.delete.title' | translate | async)!\">\n <ax-icon class=\"fas fa-trash\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n } @else if (itemId === 'all' && !categoryReadonly()) {\n <div class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-button class=\"ax-xs\" (onClick)=\"handleCreateRootClick($event)\" look=\"blank\" color=\"default\">\n <ax-icon class=\"fas fa-plus\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </ng-template>\n</axp-layout-content>","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXPColumnQuery,\n AXPDeviceService,\n AXPFilterDefinition,\n AXPFilterQuery,\n AXPSortDefinition,\n AXPSortQuery,\n AXPViewQuery,\n} from '@acorex/platform/core';\nimport {\n AXPQueryColumnsComponent,\n AXPQueryFiltersComponent,\n AXPQuerySortsComponent,\n AXPQueryViewsComponent,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityListViewColumnViewModel, AXPEntityMasterListViewModel } from '@acorex/platform/layout/entity';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n Input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex/platform/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { AXPEntityMasterListViewComponent } from '../entity-master-list-view/entity-master-list-view.component';\n\n@Component({\n selector: 'axp-entity-master-toolbar-view',\n templateUrl: './entity-master-toolbar-view.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPQueryFiltersComponent,\n AXPopoverModule,\n AXPQuerySortsComponent,\n AXPQueryViewsComponent,\n AXPQueryColumnsComponent,\n ],\n host: {\n class: 'ax-w-full',\n },\n})\nexport class AXPEntityMasterToolbarViewComponent {\n protected layoutService = inject(AXPLayoutThemeService);\n protected deviceService = inject(AXPDeviceService);\n protected parent = inject(AXPEntityMasterListViewComponent);\n private router = inject(Router);\n private activeRoute = inject(ActivatedRoute);\n private settingsService = inject(AXPSettingsService);\n\n private isInitializing = false;\n private pendingInitialFilters = true;\n private pendingInitialSorts = true;\n\n protected filterTriggerMode: 'auto' | 'manual' = 'manual';\n\n protected previousFilterQueries = signal<AXPFilterQuery[]>([]);\n\n async ngOnInit(): Promise<void> {\n // Prefer saved settings (view/columns/sorts/filters) if available, then apply\n await this.loadSettings();\n await this.vm.setView();\n this.filtersDefinitions.set(this.vm.filtersDef);\n this.isInitializing = true;\n // this.pendingInitialFilters = true;\n // this.pendingInitialSorts = true;\n this.setInitialFiltersFromSettingsOrView();\n // Ensure initial load even when filters/sorts are absent\n setTimeout(() => {\n this.isInitializing = false;\n this.scheduleApply();\n }, 0);\n }\n\n private async loadSettings() {\n const filterTriggerMode = await this.settingsService.get(AXPCommonSettings.EntityFilterApplyMode);\n this.filterTriggerMode = (filterTriggerMode?.value ?? 'auto') as 'auto' | 'manual';\n }\n\n @Input('viewModel')\n public vm!: AXPEntityMasterListViewModel;\n\n protected initialFilters = signal<AXPFilterQuery[]>([]);\n protected filtersDefinitions = signal<AXPFilterDefinition[]>([]);\n\n protected viewQueries = computed<AXPViewQuery[]>(() =>\n this.vm.views().map((v) => ({\n name: v.name,\n fixed: false,\n title: v.title,\n columns: v.columns,\n conditions: v.conditions.map((c) => ({\n field: c.name,\n operator: c.operator,\n value: c.value,\n })),\n sorts: v.sorts,\n })),\n );\n protected selectedViewQuery = computed<AXPViewQuery>(() => ({\n name: this.vm.view().name,\n fixed: false,\n title: this.vm.view().title,\n columns: this.vm.view().columns,\n conditions: this.vm.view().conditions.map((c) => ({\n field: c.name,\n operator: c.operator,\n value: c.value,\n })),\n sorts: this.vm.view().sorts,\n }));\n\n protected isFiltersDirty = computed(() => !isEqual(this.vm.filterQueries(), this.previousFilterQueries()));\n\n // Debounced apply to coalesce multiple UI changes (filters/sorts/columns)\n private applyTimer: any = null;\n private scheduleApply() {\n clearTimeout(this.applyTimer);\n this.applyTimer = setTimeout(() => {\n this.vm.applyFilterAndSort();\n }, 50);\n }\n\n async onViewChanged(view: AXPViewQuery) {\n await this.vm.setView(view.name);\n // Sync query param immediately on tab change\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: { view: view.name },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n this.isInitializing = true;\n this.pendingInitialFilters = true;\n this.pendingInitialSorts = true;\n this.setInitialFiltersFromSettingsOrView();\n // Ensure initial load after view change\n setTimeout(() => {\n this.isInitializing = false;\n this.scheduleApply();\n }, 0);\n }\n\n #effect = effect(() => {\n // Keep definitions up to date; initial filters are set explicitly from settings or view\n this.filtersDefinitions.set(this.vm.filtersDef);\n });\n\n private setInitialFiltersFromSettingsOrView() {\n const saved = this.vm.filterQueries();\n this.previousFilterQueries.set(saved);\n const viewConditions = this.vm.view().conditions.map((c) => c.name);\n if (saved && saved.length) {\n this.initialFilters.set(saved.map((s) => ({ ...s, hidden: viewConditions.includes(s.field!) })));\n return;\n }\n this.initialFilters.set(\n this.vm.view().conditions.map(\n (c) =>\n ({\n field: c.name,\n operator: c.operator,\n value: c.value,\n hidden: true,\n }) as any,\n ),\n );\n }\n\n onFiltersChanged(filters: AXPFilterQuery[]) {\n if (this.isInitializing || this.pendingInitialFilters) {\n this.pendingInitialFilters = false;\n return;\n }\n\n this.vm.filterQueries.set(filters);\n if (this.filterTriggerMode === 'auto') {\n this.applyFilters();\n }\n }\n\n protected applyFilters() {\n this.previousFilterQueries.set(this.vm.filterQueries());\n this.vm.saveSettings('filters', this.vm.filterQueries());\n this.scheduleApply();\n }\n\n protected sortQueries = computed<AXPSortQuery[]>(() =>\n this.vm\n .sortedFields()\n .filter((s) => !!s.dir)\n .map((s) => ({ name: s.name, dir: s.dir as 'asc' | 'desc' })),\n );\n\n protected sortDefinitions = computed<AXPSortDefinition[]>(() =>\n this.vm.sortableFields().map((s) => ({\n name: s.name,\n title: s.title,\n dir: s.dir as 'asc' | 'desc' | undefined,\n })),\n );\n\n protected onSortQueriesChange(e: AXPSortQuery[]) {\n if (this.isInitializing || this.pendingInitialSorts) {\n this.pendingInitialSorts = false;\n return;\n }\n this.vm.sortedFields.set(\n e.map((s) => ({\n name: s.name,\n title: s.name,\n dir: s.dir,\n })),\n );\n // Persist sorts per module/entity/view\n this.vm.saveSettings('sorts', e);\n this.scheduleApply();\n }\n\n protected onColumnsChange(columns: AXPColumnQuery[]) {\n const keyOf = (c: { name: string; column?: any }) => c.column?.options?.dataPath ?? c.name;\n\n this.vm.columns.update((prev) => {\n const byKey = new Map(prev.map((c) => [keyOf(c as any), c]));\n\n return columns.map((newColumn) => {\n const existing = byKey.get(keyOf(newColumn))!;\n return new AXPEntityListViewColumnViewModel(existing.property, {\n ...existing.column,\n options: {\n ...existing.column.options,\n visible: newColumn.visible,\n },\n });\n });\n });\n // Persist column order/visibility\n this.vm.onColumnsChanged(this.vm.columns());\n // Use debounced apply to avoid triple refresh when combined with sorts/filters\n // this.scheduleApply();\n }\n}\n","<!-- <axp-entity-view-toolbar [viewModel]=\"vm\"></axp-entity-view-toolbar> -->\n<axp-query-views\n id=\"axp-toolbar-view-selector\"\n [views]=\"viewQueries()\"\n [selectedView]=\"selectedViewQuery()\"\n (selectedViewChange)=\"onViewChanged($event)\"\n></axp-query-views>\n<div class=\"ax-flex ax-items-center ax-gap-2 ax-border-b ax-border-light w-full\">\n <!-- <axp-entity-filter-toolbar [viewModel]=\"vm\"></axp-entity-filter-toolbar> -->\n <axp-query-filters\n id=\"axp-toolbar-filters\"\n [filtersDefinitions]=\"filtersDefinitions()\"\n [initialFilters]=\"initialFilters()\"\n (onFiltersChanged)=\"onFiltersChanged($event)\"\n ></axp-query-filters>\n\n <div class=\"ax-flex ax-items-center ax-gap-2 md:ax-gap-2\">\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\n <ax-button\n id=\"axp-toolbar-btn-filter\"\n [title]=\"'@general:actions.apply.title'\"\n [iconOnly]=\"true\"\n #filterButton\n [color]=\"'primary'\"\n (onClick)=\"applyFilters()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-search\"></i>\n </ax-prefix>\n </ax-button>\n }\n <div>\n <ax-button id=\"axp-toolbar-btn-columns\" [iconOnly]=\"true\" #columnButton [color]=\"'default'\">\n <i class=\"fa-light fa-table-columns\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-columns\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"columnButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #popover\n >\n <div class=\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\">\n <ax-header class=\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\">\n {{ '@general:terms.common.columns' | translate | async }}\n </ax-header>\n <div class=\"ax-py-2 ax-px-4\">\n <axp-query-columns [columns]=\"vm.columns()\" (columnsChange)=\"onColumnsChange($event)\"></axp-query-columns>\n <!-- <axp-list-view-option-columns [viewModel]=\"vm\"></axp-list-view-option-columns> -->\n </div>\n </div>\n </ax-popover>\n </div>\n\n @if (vm.canSort()) {\n <div>\n <ax-button id=\"axp-toolbar-btn-sort\" [iconOnly]=\"true\" [text]=\"'Sorts'\" #sortButton [color]=\"'default'\">\n <i class=\"fa-light fa-sort-amount-up\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-sort\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"sortButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #popover\n >\n <div class=\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\">\n <ax-header class=\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\">\n {{ '@general:terms.common.sorts' | translate | async }}\n </ax-header>\n <div class=\"ax-py-2 ax-px-4\">\n <!-- <axp-list-view-option-sorting [viewModel]=\"vm\"></axp-list-view-option-sorting> -->\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n @if (deviceService.isSmall()) {\n <ax-button\n id=\"axp-toolbar-btn-category\"\n (onClick)=\"parent.toggleCategoryDrawer()\"\n [iconOnly]=\"true\"\n [color]=\"'default'\"\n >\n <i class=\"fa-light fa-bars\"></i>\n </ax-button>\n }\n </div>\n</div>\n","import { AXActionSheetModule } from '@acorex/components/action-sheet';\nimport {\n AXColumnsOrderChangedEvent,\n AXDataTableComponent,\n AXDataTableModule,\n AXDataTableRowDbClick,\n AXRowCommandItem,\n AXRowCommandItemClickEvent,\n onColumnSizeChangedEvent,\n} from '@acorex/components/data-table';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXPlatform } from '@acorex/core/platform';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\n\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataPagerChangedEvent } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule, translateSync } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutStartSideComponent } from '@acorex/platform/layout/components';\nimport { AXPEntityMasterListViewModel } from '@acorex/platform/layout/entity';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsModule } from '@acorex/platform/layout/widgets';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXPActionMenuItem, AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { Subscription } from 'rxjs';\nimport { AXPEntityCategoryComponent } from '../entity-category/entity-category.component';\nimport { AXPEntityMasterToolbarViewComponent } from '../entity-master-toolbar-view/entity-master-toolbar-view.component';\n\n@Component({\n templateUrl: 'entity-master-list-view.component.html',\n styleUrls: ['entity-master-list-view.component.scss'],\n selector: 'axp-entity-master-list',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n AXButtonModule,\n AXDecoratorModule,\n AXBadgeModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXTooltipModule,\n AXBreadcrumbsModule,\n AXDropdownButtonModule,\n AXSearchBoxModule,\n AXDataTableModule,\n AXTranslationModule,\n DragDropModule,\n //\n AXPWidgetCoreModule,\n AXPWidgetsModule,\n AXPAuthModule,\n //\n AXPEntityMasterToolbarViewComponent,\n //\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXPThemeLayoutStartSideComponent,\n AXPEntityCategoryComponent,\n ],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPEntityMasterListViewComponent,\n },\n ],\n})\nexport class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {\n private activeRoute = inject(ActivatedRoute);\n private router = inject(Router);\n\n protected readonly vm = this.activeRoute.snapshot.data['vm'] as AXPEntityMasterListViewModel;\n\n //\n protected store = inject(AXPLayoutThemeService);\n //\n protected searchBarShown = signal(true);\n protected activeEndSideView = signal<'column' | 'filter' | 'sort'>('column');\n\n protected categorySearchValue = signal('');\n\n // @ViewChild('grid', { static: true}) grid: AXDataTableComponent;\n protected grid = viewChild<AXDataTableComponent>('grid');\n private queryParamSub?: Subscription;\n private initializedFromRoute = false;\n\n constructor(protected platform: AXPlatform) {\n super();\n effect(() => {\n if (this.grid()) {\n this.grid()!.selectedRows = this.vm.selectedItems();\n }\n });\n //\n this.vm.events$.subscribe(async (e) => {\n const refreshTargetId = e.meta?.refreshTargetId;\n const resetPagination = e.meta?.resetPagination === true;\n if (e.action == 'refresh') {\n if (refreshTargetId) {\n await this.grid()?.refreshItemChildren(refreshTargetId);\n this.updateParentHasChildAfterRefresh(refreshTargetId);\n } else {\n this.grid()?.refresh({\n reset: resetPagination,\n });\n }\n }\n });\n\n // Keep URL query param `view` in sync with current vm view\n effect(() => {\n if (!this.initializedFromRoute) {\n return;\n }\n const currentViewName = this.vm.view().name;\n const urlView = this.activeRoute.snapshot.queryParamMap.get('view');\n if (currentViewName && currentViewName !== urlView) {\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: { view: currentViewName },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n });\n }\n\n override async ngOnInit(): Promise<void> {\n // React to external URL changes (back/forward navigation or deep links)\n this.queryParamSub = this.activeRoute.queryParamMap.subscribe(async (qp) => {\n const viewFromUrl = qp.get('view');\n await this.vm.setView(viewFromUrl);\n });\n }\n\n async ngAfterViewInit() {\n const viewFromUrl = this.activeRoute.snapshot.queryParamMap.get('view');\n await this.vm.setView(viewFromUrl);\n\n const resolvedView = this.vm.view().name;\n const currentUrlView = this.activeRoute.snapshot.queryParamMap.get('view');\n if (currentUrlView !== resolvedView) {\n this.router.navigate([], {\n relativeTo: this.activeRoute,\n queryParams: { view: resolvedView },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n this.initializedFromRoute = true;\n }\n\n protected onColumnSizeChanged(e: onColumnSizeChangedEvent) {\n if (e.isUserInteraction && e.type === 'end') {\n this.vm.saveSettings('columnSizes', e.data);\n }\n }\n\n protected onPageChanged(e: AXDataPagerChangedEvent) {\n if (e.isUserInteraction) {\n const pageSizeChanged = e.take != this.vm.dataSource.pageSize;\n if (pageSizeChanged) {\n this.vm.saveSettings('pageSize', e.take);\n }\n }\n }\n\n protected onColumnsOrderChanged(e: AXColumnsOrderChangedEvent) {\n if (e.isUserInteraction) {\n this.vm.onColumnsOrderChanged(e.data.event);\n }\n }\n\n protected async dropdownRowItems(rowData: any): Promise<AXRowCommandItem[]> {\n return (await this.vm.secondaryRowActions(rowData)).map((c) => ({\n icon: c.icon,\n name: c.name,\n text: c.title,\n color: c.color,\n disabled: c.disabled,\n default: c.default,\n divided: c.separated,\n })) as AXRowCommandItem[];\n }\n\n private commandRowItems = computed<AXRowCommandItem[]>(() => {\n return this.vm.primaryRowActions().map((c) => {\n return {\n icon: c.icon,\n name: c.name,\n text: translateSync(c.title),\n color: c.color,\n disabled: c.disabled,\n default: c.default,\n } as AXRowCommandItem;\n });\n });\n\n protected async handleRowDbClick(e: AXDataTableRowDbClick) {\n if (this.grid()?.dataSource.isLoading) {\n return;\n }\n const allItems = [...this.commandRowItems(), ...(await this.dropdownRowItems(e.data))];\n // const defaultAction = allItems.find((c) => (c as any).default) || allItems[0];\n\n const defaultAction = allItems.find((c) => {\n const commandName = c.name.split('&')[0];\n return ((c as any).default || commandName === 'open-entity') && !c.disabled;\n });\n\n if (!defaultAction) {\n return;\n }\n\n const d: AXRowCommandItemClickEvent = {\n component: e.component,\n name: defaultAction.name,\n data: e.data,\n };\n this.handleRowCommandClick(d);\n }\n\n protected getDropdownRowItems = (rowData: unknown): Promise<AXRowCommandItem[]> => {\n return Promise.resolve(this.dropdownRowItems(rowData));\n };\n\n protected getCommandRowItems = (): AXRowCommandItem[] => {\n return this.commandRowItems();\n };\n\n protected async handleRowCommandClick(e: AXRowCommandItemClickEvent) {\n if (this.grid()?.dataSource.isLoading) {\n return;\n }\n if (e.setLoading) {\n e.setLoading(true);\n }\n await this.vm.executeCommand(e.name, e.data);\n if (e.setLoading) {\n e.setLoading(false);\n }\n }\n\n protected async handleSelectedRowsChange(rows: unknown[]) {\n this.vm.selectedItems.set(rows);\n }\n\n /**\n * After refreshing a row's children (e.g. when a new child was created), update the parent row's\n * hasChild so the expand icon is shown. The list query sets hasChild from childrenCount only on\n * initial load; refreshItemChildren does not re-fetch the parent, so we patch it here.\n */\n private updateParentHasChildAfterRefresh(parentId: string): void {\n const gridRef = this.grid();\n const ds = gridRef?.dataSource as { cachedItems?: unknown[]; config?: { key?: string } } | undefined;\n if (!ds?.cachedItems?.length) {\n return;\n }\n const key = ds.config?.key ?? 'id';\n const parent = this.findItemById(ds.cachedItems, String(parentId), key);\n if (parent && typeof parent === 'object') {\n (parent as Record<string, unknown>)['hasChild'] = true;\n }\n }\n\n private findItemById(items: unknown[], id: string, key: string): Record<string, unknown> | null {\n for (const item of items) {\n if (item && typeof item === 'object' && String((item as Record<string, unknown>)[key]) === id) {\n return item as Record<string, unknown>;\n }\n const rec = item as Record<string, unknown>;\n const metaChildren = (rec?.['__meta__'] as Record<string, unknown> | undefined)?.['children'];\n const directChildren = rec?.['children'];\n const childArr = Array.isArray(metaChildren)\n ? (metaChildren as unknown[])\n : Array.isArray(directChildren)\n ? (directChildren as unknown[])\n : null;\n if (childArr?.length) {\n const found = this.findItemById(childArr, id, key);\n if (found) return found;\n }\n }\n return null;\n }\n\n protected makeResponsive<t>(value: t): t | string {\n if (this.platform.is('Mobile') || this.platform.is('SM')) {\n return '';\n } else {\n return value;\n }\n }\n\n protected toggleSideBar(sideBar?: 'column' | 'filter' | 'sort') {\n this.toggleEndSide();\n if (sideBar) {\n this.activeEndSideView.set(sideBar);\n }\n }\n\n protected toggleSearchBar() {\n this.searchBarShown.update((v) => !v);\n }\n\n protected handleResetClick(sideBar: 'filter' | 'sort' | 'column') {\n switch (sideBar) {\n case 'filter': {\n this.vm.resetFilters();\n break;\n }\n case 'sort': {\n this.vm.resetSorts();\n break;\n }\n case 'column': {\n this.vm.resetColumns();\n break;\n }\n }\n }\n\n // protected handleDiscardClick(sideBar: 'filter' | 'sort' | 'column') {\n // switch (sideBar) {\n // case 'filter': {\n // this.vm.discardFilters();\n // break;\n // }\n // case 'sort': {\n // this.vm.resetSorts();\n // break;\n // }\n // case 'column': {\n // this.vm.resetColumns();\n // break;\n // }\n // }\n // }\n\n protected handleApplyClick(sideBar: 'filter' | 'sort' | 'column') {\n this.vm.applyFilterAndSort();\n this.toggleEndSide();\n }\n\n ngOnDestroy(): void {\n this.queryParamSub?.unsubscribe();\n this.vm.destroy();\n }\n\n toggleCategoryDrawer() {\n this.toggleStartSide();\n }\n\n override getPageTitle(): string {\n return this.vm.title();\n }\n\n override async getPageDescription(): Promise<string> {\n const description = this.vm.description();\n if (description) {\n return this.translateService.translateAsync(description);\n }\n return '';\n }\n\n override getPageBreadcrumbs(): AXPBreadcrumbItem[] {\n return this.vm.beardcrumbs();\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return (await this.vm.getPrimaryActions())\n .filter((tr) => !tr.isChild)\n .map(\n (tr) =>\n ({\n name: tr.name,\n title: tr.title,\n icon: tr.icon,\n color: tr.color,\n disabled: tr.disabled,\n items: tr.items?.map((sub) => ({\n name: sub.name,\n title: sub.title,\n icon: sub.icon,\n color: sub.color,\n disabled: sub.disabled,\n command: {\n name: sub.name,\n options: sub.options,\n metadata: sub.metadata,\n },\n })),\n command: {\n name: tr.name,\n options: tr.options,\n metadata: tr.metadata,\n },\n }) as AXPActionMenuItem,\n );\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return (await this.vm.getSecondaryActions()).map((tr) => ({\n name: tr.name,\n title: tr.title,\n icon: tr.icon,\n color: tr.color,\n disabled: tr.disabled,\n separated: tr.separated,\n command: {\n name: tr.name,\n options: tr.options,\n metadata: tr.metadata,\n },\n }));\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n if (command) {\n this.vm.execute(command);\n }\n }\n\n protected handleUnselectAll() {\n this.vm.selectedItems.set([]);\n }\n}\n","<axp-page-layout *translate=\"let t\">\n @if (vm.entityDef.category) {\n <axp-layout-start-side id=\"axp-entity-category-drawer\">\n <axp-entity-category id=\"axp-entity-category\" class=\"ax-w-80\" [vm]=\"vm\"\n [searchValue]=\"categorySearchValue()\"></axp-entity-category>\n </axp-layout-start-side>\n }\n <axp-page-toolbar id=\"axp-entity-toolbar\">\n <axp-entity-master-toolbar-view [viewModel]=\"vm\"></axp-entity-master-toolbar-view>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-overflow-auto ax-pt-0\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-1 ax-pb-1 ax-text-muted ax-text-sm\"\n [class.ax-invisible]=\"!grid.selectedRows.length\">\n <span>{{ grid.selectedRows.length }}\n <span>{{ '@general:terms.interface.items-selected' | translate | async }}</span>\n </span>\n <ax-button text=\"@general:terms.interface.unselect-all\" class=\"ax-xs\" (onClick)=\"handleUnselectAll()\"></ax-button>\n </div>\n <ax-data-table id=\"axp-entity-table\" [allowReordering]=\"true\"\n (onColumnsOrderChanged)=\"onColumnsOrderChanged($event)\" #grid [showFooter]=\"false\" class=\"ax-flex-1\"\n [paging]=\"true\" [fetchDataMode]=\"'manual'\" [parentField]=\"vm.parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\" (onRowDbClick)=\"handleRowDbClick($event)\"\n (onColumnSizeChanged)=\"onColumnSizeChanged($event)\" (onPageChanged)=\"onPageChanged($event)\">\n @if (vm.view().indexCol === true) {\n <ax-index-column id=\"axp-table-col-index\" fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n }\n @if (vm.selectedScopeActionsCount()) {\n <ax-select-column id=\"axp-table-col-select\" fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (col of vm.columns(); track col.name) {\n @if (col.visible) {\n <axp-widget-column-renderer [attr.id]=\"'axp-table-col-' + col.name\"\n [expandHandler]=\"$index === 0 && vm.parentKey() ? true : false\" [caption]=\"(col.title | translate | async)!\"\n [node]=\"col.node()\" [customWidth]=\"col.width\"></axp-widget-column-renderer>\n }\n }\n @if (getCommandRowItems().length) {\n <ax-command-column id=\"axp-table-col-commands\" fixed=\"end\" [width]=\"getCommandRowItems().length * 70 + 'px'\"\n [items]=\"getCommandRowItems()\" (onItemClick)=\"handleRowCommandClick($event)\"></ax-command-column>\n }\n <ax-dropdown-command-column id=\"axp-table-col-dropdown-commands\" fixed=\"end\" [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\" (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\n </ax-data-table>\n </axp-page-content>\n</axp-page-layout>","import { AXPComponentSlotModule } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'axp-dashboard-admin-footer',\n templateUrl: './footer.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [],\n host: {\n class: 'ax-h-10 ax-flex ax-item-center ax-justify-between ax-bg-lighter ax-border-lighter ax-px-6 ax-border-t',\n },\n standalone: true,\n imports: [\n AXPComponentSlotModule\n ]\n})\nexport class AXPRootLayoutFooterComponent { }\n","<div class=\"ax-flex ax-items-center ax-justify-start ax-gap-1\">\n <axp-component-slot name=\"root-footer-start\"></axp-component-slot>\n</div>\n<div class=\"ax-flex ax-items-center ax-justify-end ax-gap-1\">\n <axp-component-slot name=\"root-footer-end\"></axp-component-slot>\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { AXPComponentSlotModule } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'axp-dashboard-admin-header',\n templateUrl: './header.component.html',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'ax-w-full ax-flex ax-items-center ax-justify-between ax-bg-primary-surface ax-text-primary-on-surface ax-h-14 ax-px-2 ax-light' },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXPComponentSlotModule,\n AXButtonModule,\n AXDecoratorModule\n ]\n})\nexport class AXPRootLayoutHeaderComponent {\n private config = inject(AXP_PLATFORM_CONFIG_TOKEN);\n\n protected store = inject(AXPLayoutThemeService);\n private router = inject(Router);\n protected logo = this.config.logo;\n\n\n protected toggleSideMenu() {\n this.store.toggleSideMenu();\n }\n\n protected handleLogoClick() {\n this.router.navigate(['/']);\n }\n}\n","<ax-button id=\"axp-menu-toggle\" (onClick)=\"toggleSideMenu()\" color=\"primary\">\n <ax-icon class=\"rtl:ax-rotate-180\">\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n @if (store.isSideMenuOpen()) {\n <defs>\n <clipPath id=\"clip1382_20239\">\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1382_20239)\">\n <rect\n id=\"rect\"\n x=\"17.420410\"\n y=\"12.316406\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(137.159 17.420410 12.316406)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"12.959473\"\n y=\"13.728516\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(40.853 12.959473 13.728516)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n } @else {\n <defs>\n <clipPath id=\"clip1381_20236\">\n <rect id=\"打开边栏0730\" width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect id=\"打开边栏0730\" width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1381_20236)\">\n <rect\n id=\"rect\"\n x=\"11.572754\"\n y=\"17.683594\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(-42.841 11.572754 17.683594)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"16.033691\"\n y=\"16.271484\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(-139.147 16.033691 16.271484)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n }\n </svg>\n </ax-icon>\n</ax-button>\n<div class=\"ax-flex ax-items-center ax-gap-1 ax-justify-between ax-w-full\">\n <div class=\"ax-flex ax-items-center ax-gap-1\">\n <axp-component-slot name=\"root-header-start\"></axp-component-slot>\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-1\">\n <axp-component-slot name=\"root-header-end\"></axp-component-slot>\n </div>\n</div>\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMenuItem, AXPMenuService, AXPMenuVisibilityService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPExecuteCommand, AXPPlatformScope, AXPNavigateActionCommand } from '@acorex/platform/core';\nimport { AXPMenuBadgeHelper, AXPTaskBadgeDirective, AXPTaskBadgeService } from '@acorex/platform/layout/components';\nimport { AXPThemeLayoutSetting } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, Signal, ViewEncapsulation } from '@angular/core';\nimport { NavigationExtras, Router, UrlTree } from '@angular/router';\nimport { sortBy } from 'lodash-es';\n\n@Component({\n selector: 'axp-side-menu',\n templateUrl: './side-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXSideMenuModule,\n AXTranslationModule,\n AXPTaskBadgeDirective,\n AXDecoratorModule,\n AXBadgeModule,\n ],\n})\nexport class AXPRootLayoutMenuComponent {\n protected menuStore = inject(AXPMenuService);\n protected router = inject(Router);\n protected badgeService = inject(AXPTaskBadgeService);\n protected settingsService = inject(AXPSettingsService);\n protected visibilityService = inject(AXPMenuVisibilityService);\n\n protected badgeVisible = signal(true);\n\n constructor() {\n // Debug: Track menu items changes\n // effect(() => {\n // const items = this.menuStore.items();\n // console.log('🎯 Sidebar menu items updated:', items.map(i => ({ name: i.name, priority: i.priority })));\n // });\n }\n\n async ngOnInit() {\n this.badgeVisible.set(\n await this.settingsService.scope(AXPPlatformScope.User).get<boolean>(AXPThemeLayoutSetting.MenuBadgeVisible),\n );\n //subscribe to changes\n this.settingsService.onChanged.subscribe((setting) => {\n if (setting.keys.includes(AXPThemeLayoutSetting.MenuBadgeVisible)) {\n this.badgeVisible.set(setting.values[AXPThemeLayoutSetting.MenuBadgeVisible]);\n }\n });\n }\n\n onMenuItemClick(item: AXPMenuItem, hasRouterLink?: boolean): void {\n if (hasRouterLink || item.children?.length) {\n return;\n }\n this.menuStore.executeCommand(item);\n }\n\n protected sort(items: AXPMenuItem[]): AXPMenuItem[] {\n return sortBy(items, [(c) => c.priority ?? 0, (c) => c.text]);\n }\n\n protected getMenuBadge(item: AXPMenuItem): Signal<number> {\n return AXPMenuBadgeHelper.getTotalCount(item, this.badgeService);\n }\n\n //#region ---- Menu Visibility Helpers ----\n\n /**\n * Checks if a menu item should be visible based on permissions and features.\n */\n protected isItemVisible(item: AXPMenuItem): boolean {\n return this.visibilityService.isItemVisible(item);\n }\n\n /**\n * Determines if a menu item should be rendered.\n * A menu item should be rendered if:\n * 1. It has a routerLink, OR\n * 2. It has visible children, OR\n * 3. It has a command (for non-router navigation)\n */\n protected shouldRenderMenuItem(item: AXPMenuItem): boolean {\n return this.visibilityService.shouldRenderMenuItem(item, (item) => this.getRouterLink(item));\n }\n\n /**\n * Checks if an item takes up visual space in the menu (group title or rendered menu item).\n */\n protected isItemRendered(item: AXPMenuItem): boolean {\n if (item.type === 'break') {\n return false;\n }\n if (item.type === 'group') {\n return this.isItemVisible(item);\n }\n return this.shouldRenderMenuItem(item);\n }\n\n /**\n * Determines if a divider should be shown. A divider is only shown when there is\n * visible content on both sides; if before or after is blank, the divider is hidden.\n */\n protected shouldShowDivider(item: AXPMenuItem, items: AXPMenuItem[], index: number): boolean {\n if (item.type !== 'break' || !items || index < 0) {\n return false;\n }\n const hasVisibleBefore = items.slice(0, index).some((i) => this.isItemRendered(i));\n const hasVisibleAfter = items.slice(index + 1).some((i) => this.isItemRendered(i));\n return hasVisibleBefore && hasVisibleAfter;\n }\n\n //#endregion\n\n //#region ---- Menu Navigation Helpers ----\n\n /**\n * Builds a UrlTree that can be consumed by the routerLink directive when the menu item targets\n * an internal route. When the item does not represent an internal route, null is returned so the\n * command execution pipeline remains responsible for navigation.\n */\n protected getRouterLink(item: AXPMenuItem): UrlTree | null {\n const navigation = this.extractRouterNavigation(item);\n if (!navigation) {\n return null;\n }\n\n if (!this.isRouterLinkCompatible(navigation)) {\n return null;\n }\n\n const normalizedPath = this.normalizeRouterPath(navigation.path);\n\n try {\n return this.router.parseUrl(normalizedPath);\n } catch (error) {\n console.warn('Failed to create router link for menu item.', { item, error });\n return null;\n }\n }\n\n /**\n * Extracts internal navigation data regardless of whether it is provided via the legacy `path`\n * property, a direct navigate command, or the execution command wrapper.\n */\n private extractRouterNavigation(item: AXPMenuItem): MenuRouterNavigation | null {\n if (item.path) {\n return { path: item.path };\n }\n\n const command = item.command;\n if (!command) {\n return null;\n }\n\n const navigateCommand = command as AXPNavigateActionCommand<'router'>;\n if (navigateCommand?.type === 'router' && typeof navigateCommand.options?.path === 'string') {\n return {\n path: navigateCommand.options.path,\n extras: navigateCommand.options.extras,\n };\n }\n\n const executeCommand = command as AXPExecuteCommand;\n if (executeCommand?.options && typeof executeCommand.options === 'object') {\n const commandOptions = executeCommand.options as MenuRouterCommandOptions;\n\n if (commandOptions?.type === 'router') {\n const routerOptions = commandOptions.options ?? commandOptions;\n if (typeof routerOptions?.path === 'string') {\n return {\n path: routerOptions.path,\n extras: routerOptions.extras,\n };\n }\n }\n\n if (typeof commandOptions?.path === 'string') {\n return { path: commandOptions.path };\n }\n }\n\n return null;\n }\n\n /**\n * Determines whether routerLink can safely be used based on the target path and navigation\n * extras. If the navigation requires additional runtime behaviour (e.g., opening in a new tab),\n * we fallback to the imperative command pipeline.\n */\n private isRouterLinkCompatible(navigation: MenuRouterNavigation): boolean {\n if (!navigation.path) {\n return false;\n }\n\n if (this.isExternalNavigation(navigation.path)) {\n return false;\n }\n\n const extras = navigation.extras;\n if (!extras) {\n return true;\n }\n\n if ((extras as MenuRouterExtras).target === 'blank') {\n return false;\n }\n\n const unsupportedKeys: (keyof NavigationExtras)[] = ['skipLocationChange', 'replaceUrl', 'state'];\n return !unsupportedKeys.some((key) => extras[key] !== undefined);\n }\n\n /**\n * Ensures router links include a leading slash while preserving any query parameters or\n * fragments present in the original path.\n */\n private normalizeRouterPath(path: string): string {\n const trimmed = path.trim();\n if (!trimmed.length) {\n return trimmed;\n }\n\n if (trimmed.startsWith('/') || trimmed.startsWith('?') || trimmed.startsWith('#')) {\n return trimmed;\n }\n\n return `/${trimmed}`;\n }\n\n private isExternalNavigation(path: string): boolean {\n const lowerPath = path.trim().toLowerCase();\n return lowerPath.startsWith('http://') || lowerPath.startsWith('https://');\n }\n\n //#endregion\n}\n\ntype MenuRouterExtras = NavigationExtras & { target?: string };\n\ntype MenuRouterCommandOptions = {\n type?: string;\n path?: string;\n extras?: MenuRouterExtras;\n options?: {\n path?: string;\n extras?: MenuRouterExtras;\n };\n};\n\ntype MenuRouterNavigation = {\n path: string;\n extras?: MenuRouterExtras;\n};\n","<ax-side-menu look=\"pills\">\n @let sortedItems = sort(menuStore.items());\n @for (item of sortedItems; track item; let i = $index) {\n <ng-container [ngTemplateOutlet]=\"recursiveMenu\" [ngTemplateOutletContext]=\"{ item: item, items: sortedItems, index: i }\"> </ng-container>\n }\n</ax-side-menu>\n<ng-template #recursiveMenu let-item=\"item\" let-items=\"items\" let-index=\"index\">\n @if (item.type == 'group') {\n @if (isItemVisible(item)) {\n <ax-title>{{ item.text | translate | async }}</ax-title>\n }\n } @else if (item.type == 'break') {\n @if (shouldShowDivider(item, items, index)) {\n <ax-divider></ax-divider>\n }\n } @else {\n @if (shouldRenderMenuItem(item)) {\n @let routerLinkValue = getRouterLink(item);\n @if (routerLinkValue) {\n <ax-side-menu-item [attr.id]=\"'axp-menu-item-' + (item.name || item.text)\" (onClick)=\"onMenuItemClick(item, true)\"\n [routerLink]=\"routerLinkValue\" [active]=\"item === menuStore.selectedMenuItem().item\"\n [isCollapsed]=\"!menuStore.isItemOpen(item)\">\n <ax-prefix>\n <ax-icon [class]=\"item.icon\" class=\"fa-fw\"></ax-icon>\n </ax-prefix>\n <span>{{ item.text | translate | async }}</span>\n @if (item.children?.length) {\n <ng-container>\n @let sortedChildren = sort(item.children);\n @for (child of sortedChildren; track child; let childIndex = $index) {\n <ng-container [ngTemplateOutlet]=\"recursiveMenu\" [ngTemplateOutletContext]=\"{ item: child, items: sortedChildren, index: childIndex }\">\n </ng-container>\n }\n </ng-container>\n }\n <ax-suffix>\n @if (badgeVisible()) {\n <ax-badge [axp-task-badge]=\"getMenuBadge(item)()\" color=\"secondary\"></ax-badge>\n }\n </ax-suffix>\n </ax-side-menu-item>\n } @else {\n <ax-side-menu-item [attr.id]=\"'axp-menu-item-' + (item.name || item.text)\" (onClick)=\"onMenuItemClick(item)\"\n [active]=\"item === menuStore.selectedMenuItem().item\" [isCollapsed]=\"!menuStore.isItemOpen(item)\">\n <ax-prefix>\n <ax-icon [class]=\"item.icon\" class=\"fa-fw\"></ax-icon>\n </ax-prefix>\n <span>{{ item.text | translate | async }}</span>\n @if (item.children?.length) {\n <ng-container>\n @let sortedChildren = sort(item.children);\n @for (child of sortedChildren; track child; let childIndex = $index) {\n <ng-container [ngTemplateOutlet]=\"recursiveMenu\" [ngTemplateOutletContext]=\"{ item: child, items: sortedChildren, index: childIndex }\">\n </ng-container>\n }\n </ng-container>\n }\n <ax-suffix>\n @if (badgeVisible()) {\n <ax-badge [axp-task-badge]=\"getMenuBadge(item)()\" color=\"secondary\"></ax-badge>\n }\n </ax-suffix>\n </ax-side-menu-item>\n }\n }\n }\n</ng-template>","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_PLATFORM_CONFIG_TOKEN, AXPMenuItem, AXPMenuService, AXPMenuVisibilityService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { AXPComponentSlotModule } from '@acorex/platform/core';\nimport { AXPTaskBadgeService, AXPMenuBadgeHelper } from '@acorex/platform/layout/components';\nimport { AXPExecuteCommand, AXPPlatformScope, AXPNavigateActionCommand } from '@acorex/platform/core';\nimport { AXPLayoutThemeService, AXPThemeLayoutSetting } from '@acorex/platform/themes/shared';\nimport { AXPTaskBadgeDirective } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, Signal, ViewEncapsulation } from '@angular/core';\nimport { NavigationExtras, Router, UrlTree } from '@angular/router';\nimport sortBy from 'lodash-es/sortBy';\n\n@Component({\n selector: 'axp-horizontal-menu',\n templateUrl: './horizontal-menu.component.html',\n styleUrl: './horizontal-menu.component.scss',\n host: { class: 'ax-light' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n imports: [\n CommonModule,\n AXPComponentSlotModule,\n AXDecoratorModule,\n AXPLogoComponent,\n AXMenuModule,\n AXTranslationModule,\n AXPTaskBadgeDirective,\n AXBadgeModule,\n ],\n\n})\nexport class AXPHorizontalMenuComponent {\n protected platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);\n\n protected menuStore = inject(AXPMenuService);\n protected router = inject(Router);\n protected layoutService = inject(AXPLayoutThemeService);\n protected badgeService = inject(AXPTaskBadgeService);\n protected settingsService = inject(AXPSettingsService);\n protected visibilityService = inject(AXPMenuVisibilityService);\n\n protected badgeVisible = signal(true);\n\n async ngOnInit() {\n this.badgeVisible.set(await this.settingsService.scope(AXPPlatformScope.User).get<boolean>(AXPThemeLayoutSetting.MenuBadgeVisible));\n //subscribe to changes\n this.settingsService.onChanged.subscribe(setting => {\n if (setting.keys.includes(AXPThemeLayoutSetting.MenuBadgeVisible)) {\n this.badgeVisible.set(setting.values[AXPThemeLayoutSetting.MenuBadgeVisible]);\n }\n });\n }\n\n onMenuItemClick(item: AXPMenuItem): void {\n if (!item.children?.length) {\n this.menuStore.executeCommand(item);\n }\n }\n\n\n\n protected sort(items: AXPMenuItem[]): AXPMenuItem[] {\n return sortBy(items, [c => c.priority ?? 0, c => c.text]);\n }\n\n protected getMenuBadge(item: AXPMenuItem): Signal<number> {\n return AXPMenuBadgeHelper.getTotalCount(item, this.badgeService);\n }\n\n //#region ---- Menu Visibility Helpers ----\n\n /**\n * Checks if a menu item should be visible based on permissions and features.\n */\n protected isItemVisible(item: AXPMenuItem): boolean {\n return this.visibilityService.isItemVisible(item);\n }\n\n /**\n * Determines if a menu item should be rendered.\n * A menu item should be rendered if:\n * 1. It has a routerLink, OR\n * 2. It has visible children, OR\n * 3. It has a command (for non-router navigation)\n */\n protected shouldRenderMenuItem(item: AXPMenuItem): boolean {\n return this.visibilityService.shouldRenderMenuItem(item, (item) => this.getRouterLink(item));\n }\n\n /**\n * Checks if an item takes up visual space in the menu (group title or rendered menu item).\n */\n protected isItemRendered(item: AXPMenuItem): boolean {\n if (item.type === 'break') {\n return false;\n }\n if (item.type === 'group') {\n return this.isItemVisible(item);\n }\n return this.shouldRenderMenuItem(item);\n }\n\n /**\n * Determines if a divider should be shown. A divider is only shown when there is\n * visible content on both sides; if before or after is blank, the divider is hidden.\n */\n protected shouldShowDivider(item: AXPMenuItem, items: AXPMenuItem[], index: number): boolean {\n if (item.type !== 'break' || !items || index < 0) {\n return false;\n }\n const hasVisibleBefore = items.slice(0, index).some((i) => this.isItemRendered(i));\n const hasVisibleAfter = items.slice(index + 1).some((i) => this.isItemRendered(i));\n return hasVisibleBefore && hasVisibleAfter;\n }\n\n //#endregion\n\n //#region ---- Menu Navigation Helpers ----\n\n /**\n * Builds a UrlTree that can be consumed by the routerLink directive when the menu item targets\n * an internal route. When the item does not represent an internal route, null is returned so the\n * command execution pipeline remains responsible for navigation.\n */\n protected getRouterLink(item: AXPMenuItem): UrlTree | null {\n const navigation = this.extractRouterNavigation(item);\n if (!navigation) {\n return null;\n }\n\n if (!this.isRouterLinkCompatible(navigation)) {\n return null;\n }\n\n const normalizedPath = this.normalizeRouterPath(navigation.path);\n\n try {\n return this.router.parseUrl(normalizedPath);\n } catch (error) {\n console.warn('Failed to create router link for menu item.', { item, error });\n return null;\n }\n }\n\n /**\n * Extracts internal navigation data regardless of whether it is provided via the legacy `path`\n * property, a direct navigate command, or the execution command wrapper.\n */\n private extractRouterNavigation(item: AXPMenuItem): MenuRouterNavigation | null {\n if (item.path) {\n return { path: item.path };\n }\n\n const command = item.command;\n if (!command) {\n return null;\n }\n\n const navigateCommand = command as AXPNavigateActionCommand<'router'>;\n if (navigateCommand?.type === 'router' && typeof navigateCommand.options?.path === 'string') {\n return {\n path: navigateCommand.options.path,\n extras: navigateCommand.options.extras,\n };\n }\n\n const executeCommand = command as AXPExecuteCommand;\n if (executeCommand?.options && typeof executeCommand.options === 'object') {\n const commandOptions = executeCommand.options as MenuRouterCommandOptions;\n\n if (commandOptions?.type === 'router') {\n const routerOptions = commandOptions.options ?? commandOptions;\n if (typeof routerOptions?.path === 'string') {\n return {\n path: routerOptions.path,\n extras: routerOptions.extras,\n };\n }\n }\n\n if (typeof commandOptions?.path === 'string') {\n return { path: commandOptions.path };\n }\n }\n\n return null;\n }\n\n /**\n * Determines whether routerLink can safely be used based on the target path and navigation\n * extras. If the navigation requires additional runtime behaviour (e.g., opening in a new tab),\n * we fallback to the imperative command pipeline.\n */\n private isRouterLinkCompatible(navigation: MenuRouterNavigation): boolean {\n if (!navigation.path) {\n return false;\n }\n\n if (this.isExternalNavigation(navigation.path)) {\n return false;\n }\n\n const extras = navigation.extras;\n if (!extras) {\n return true;\n }\n\n if ((extras as MenuRouterExtras).target === 'blank') {\n return false;\n }\n\n const unsupportedKeys: (keyof NavigationExtras)[] = ['skipLocationChange', 'replaceUrl', 'state'];\n return !unsupportedKeys.some((key) => extras[key] !== undefined);\n }\n\n /**\n * Ensures router links include a leading slash while preserving any query parameters or\n * fragments present in the original path.\n */\n private normalizeRouterPath(path: string): string {\n const trimmed = path.trim();\n if (!trimmed.length) {\n return trimmed;\n }\n\n if (trimmed.startsWith('/') || trimmed.startsWith('?') || trimmed.startsWith('#')) {\n return trimmed;\n }\n\n return `/${trimmed}`;\n }\n\n private isExternalNavigation(path: string): boolean {\n const lowerPath = path.trim().toLowerCase();\n return lowerPath.startsWith('http://') || lowerPath.startsWith('https://');\n }\n\n //#endregion\n}\n\ntype MenuRouterExtras = NavigationExtras & { target?: string };\n\ntype MenuRouterCommandOptions = {\n type?: string;\n path?: string;\n extras?: MenuRouterExtras;\n options?: {\n path?: string;\n extras?: MenuRouterExtras;\n };\n};\n\ntype MenuRouterNavigation = {\n path: string;\n extras?: MenuRouterExtras;\n};\n","<div\n class=\"ax-w-full ax-flex ax-items-center ax-justify-between ax-gap-1 ax-bg-primary-surface ax-text-primary-on-surface ax-h-14 ax-px-4\"\n>\n <div class=\"ax-flex ax-items-center ax-gap-1\">\n <axp-logo\n [source]=\"platformConfig.logo?.full?.dark\"\n [attr.alt]=\"platformConfig.title\"\n class=\"ax-mx-auto ax-text-2xl\"\n ></axp-logo>\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-1\">\n <axp-component-slot name=\"root-header-start\"></axp-component-slot>\n <axp-component-slot name=\"root-header-end\"></axp-component-slot>\n </div>\n</div>\n\n<div class=\"__menu-bar\">\n <ax-menu [orientation]=\"'horizontal'\" [class.ax-dark]=\"layoutService.isDarkMode()\" [hasArrow]=\"true\">\n @let sortedItems = sort(menuStore.items());\n @for (item of sortedItems; track item; let i = $index) {\n <ng-container [ngTemplateOutlet]=\"recursiveMenu\" [ngTemplateOutletContext]=\"{ item: item, items: sortedItems, index: i }\"> </ng-container>\n }\n <!-- Item Templates -->\n <ng-template #recursiveMenu let-item=\"item\" let-items=\"items\" let-index=\"index\">\n @if (item.type == 'group') {\n @if (isItemVisible(item)) {\n <ax-title>{{ item.text | translate | async }}</ax-title>\n }\n } @else if (item.type == 'break') {\n @if (shouldShowDivider(item, items, index)) {\n <ax-divider></ax-divider>\n }\n } @else {\n @if (shouldRenderMenuItem(item)) {\n <ax-menu-item (onClick)=\"onMenuItemClick(item)\">\n @if (!item.meta?.isRoot) {\n <ax-prefix>\n <ax-icon [class]=\"item.icon\" class=\"fa-fw\"></ax-icon>\n </ax-prefix>\n }\n <ax-text> {{ item.text | translate | async }}</ax-text>\n @if (item.children?.length) {\n <ng-container>\n @let sortedChildren = sort(item.children);\n @for (child of sortedChildren; track child; let childIndex = $index) {\n <ng-container [ngTemplateOutlet]=\"recursiveMenu\" [ngTemplateOutletContext]=\"{ item: child, items: sortedChildren, index: childIndex }\">\n </ng-container>\n }\n </ng-container>\n }\n <ax-suffix>\n @if (badgeVisible()) {\n <ax-badge [axp-task-badge]=\"getMenuBadge(item)()\" color=\"secondary\"></ax-badge>\n }\n </ax-suffix>\n </ax-menu-item>\n }\n }\n </ng-template>\n </ax-menu>\n</div>\n<!-- <div class=\"__tab-bar\">\n<div class=\"axp-tabs-item axp-state-active\">\n <span class=\"ax-font-medium\">Account</span>\n <i class=\"fa-light fa-times ax-text-sm\"></i>\n</div>\n<div class=\"axp-tabs-item\">\n <span class=\"ax-font-medium\">Projects</span>\n\n</div>\n</div> -->\n","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerComponent, AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\n\nimport { ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXPRootLayoutFooterComponent } from '../components/footer/footer.component';\nimport { AXPHorizontalMenuComponent } from '../components/horizontal-menu/horizontal-menu.component';\nimport { AXPComponentSlotModule } from '@acorex/platform/core';\n\n@Component({\n selector: 'axp-root-horizontal-layout',\n templateUrl: './horizontal-layout.component.html',\n styleUrl: './horizontal-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n RouterModule,\n AXButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXAvatarModule,\n AXImageModule,\n AXImageModule,\n AXPopoverModule,\n AXBadgeModule,\n AXTabsModule,\n AXDrawerModule,\n AXSideMenuModule,\n AXLoadingModule,\n AXPAuthModule,\n AXPRootLayoutFooterComponent,\n AXPHorizontalMenuComponent,\n AXPComponentSlotModule\n],\n})\nexport class AXPRootHorizontalLayoutComponent {\n @ViewChild('drawer') drawer!: AXDrawerComponent;\n private config = inject(AXP_PLATFORM_CONFIG_TOKEN);\n\n protected logo = this.config.logo;\n\n protected store = inject(AXPLayoutThemeService);\n\n protected handleCollapsedChange(value: boolean) {\n if (value) {\n this.store.closeSideMenu();\n }\n }\n\n protected handleResizingEnded(e: AXValueChangedEvent<number>) {\n if (e.isUserInteraction) {\n this.store.setSideMenuWidth(e.value!);\n }\n }\n}\n","<div class=\"axp-root-layout\">\n <ax-drawer-container>\n <ax-content class=\"ax-flex ax-flex-col ax-relative ax-bg-lightest dark:ax-bg-lighter\">\n @if(store.isNavigationLoading()) {\n <div class=\"axp-navigating-progress\">\n <div></div>\n </div>\n }\n <axp-horizontal-menu></axp-horizontal-menu>\n <div class=\"ax-flex-1 ax-overflow-auto ax-relative\">\n <router-outlet></router-outlet>\n </div>\n </ax-content>\n </ax-drawer-container>\n <axp-dashboard-admin-footer></axp-dashboard-admin-footer>\n</div>","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXResizableDirective } from '@acorex/cdk/resizable';\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerComponent, AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { AXPComponentSlotModule, AXPDeviceService } from '@acorex/platform/core';\nimport { AXPLogoComponent } from '@acorex/platform/layout/components';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { ChangeDetectionStrategy, Component, inject, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AXPRootLayoutFooterComponent } from '../components/footer/footer.component';\nimport { AXPRootLayoutHeaderComponent } from '../components/header/header.component';\nimport { AXPRootLayoutMenuComponent } from '../components/side-menu/side-menu.component';\n\n@Component({\n selector: 'axp-root-vertical-layout',\n templateUrl: './vertical-layout.component.html',\n styleUrl: './vertical-layout.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n RouterModule,\n AXButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXAvatarModule,\n AXImageModule,\n AXImageModule,\n AXPopoverModule,\n AXBadgeModule,\n AXTabsModule,\n AXDrawerModule,\n AXDrawerModule,\n AXSideMenuModule,\n AXLoadingModule,\n AXPLogoComponent,\n AXPAuthModule,\n AXResizableDirective,\n AXPRootLayoutFooterComponent,\n AXPRootLayoutHeaderComponent,\n AXPRootLayoutMenuComponent,\n AXPComponentSlotModule,\n ],\n})\nexport class AXPRootVerticalLayoutComponent {\n @ViewChild('drawer') drawer!: AXDrawerComponent;\n private config = inject(AXP_PLATFORM_CONFIG_TOKEN);\n\n protected logo = this.config.logo;\n\n protected store = inject(AXPLayoutThemeService);\n protected deviceService = inject(AXPDeviceService);\n protected router = inject(Router);\n\n constructor() {\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n if (this.deviceService.isSmall() || this.deviceService.isMedium()) {\n this.store.closeSideMenu();\n }\n });\n }\n\n protected handleResizingEnded(e: AXValueChangedEvent<number>) {\n //console.log('handleResizingEnded', e.value);\n if (e.isUserInteraction) {\n this.store.setSideMenuWidth(e.value!);\n }\n }\n}\n","<div id=\"axp-root-layout\" class=\"axp-root-layout\">\n <ax-drawer-container>\n <ax-drawer id=\"axp-side-menu-drawer\" [axResizable]=\"deviceService.isLarge()\" #drawer\n class=\"ax-w-[75%] lg:ax-w-72 ax-border-lighter ax-bg-lighter dark:ax-border-darkest dark:ax-bg-darkest ax-h-full !ax-flex ax-flex-col\"\n [width]=\"(deviceService.isLarge() ? store.sideMenuWidth() : null)!\" location=\"start\"\n [collapsed]=\"!store.isSideMenuOpen()\" [closeOnBackdropClick]=\"false\" [defaultWidth]=\"288\"\n [mode]=\"deviceService.isSmall() || deviceService.isMedium() ? 'overlay' : 'push'\" [dblClickAction]=\"'fit'\"\n (onResizingEnded)=\"handleResizingEnded($event)\" (onResizingDblClick)=\"handleResizingEnded($event)\"\n (onBackdropClick)=\"store.closeSideMenu()\" backdropClass=\"ax-bg-black/50\">\n <ax-header id=\"axp-side-menu-header\"\n class=\"ax-light ax-h-14 ax-flex ax-items-center ax-justify-center ax-bg-primary-500 ax-text-primary-on-surface ax-border-e ax-border-primary-600\">\n <axp-logo [source]=\"logo?.full?.dark\"></axp-logo>\n </ax-header>\n <ax-content class=\"ax-flex ax-flex-col ax-border-e ax-h-full ax-overflow-auto\">\n <axp-component-slot name=\"root-side-menu-header\"></axp-component-slot>\n <div class=\"ax-overflow-auto ax-flex-1\">\n <axp-side-menu id=\"axp-side-menu\" class=\"ax-p-4 ax-block\"></axp-side-menu>\n </div>\n <axp-component-slot name=\"root-side-menu-footer\"></axp-component-slot>\n </ax-content>\n </ax-drawer>\n <ax-content class=\"ax-flex ax-flex-col ax-relative ax-bg-lightest dark:ax-bg-lighter ax-overflow-auto\">\n @if (store.isNavigationLoading()) {\n <div class=\"axp-navigating-progress\">\n <div></div>\n </div>\n }\n <axp-dashboard-admin-header id=\"axp-main-header\" class=\"ax-light\"></axp-dashboard-admin-header>\n\n <div class=\"ax-flex-1 ax-overflow-auto ax-relative\">\n <router-outlet></router-outlet>\n </div>\n </ax-content>\n </ax-drawer-container>\n <axp-dashboard-admin-footer id=\"axp-main-footer\"></axp-dashboard-admin-footer>\n</div>","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPSessionService, AXPSessionStatus } from '@acorex/platform/auth';\nimport { AXPMenuService } from '@acorex/platform/common';\nimport { AXPBroadcastEventService, AXPContextStore } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AXPRootHorizontalLayoutComponent } from './horizontal/horizontal-layout.component';\nimport { AXPRootVerticalLayoutComponent } from './vertical/vertical-layout.component';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n template: `\n @if(layout.isMenuHorizontal()){\n <axp-root-horizontal-layout></axp-root-horizontal-layout>\n }@else{\n <axp-root-vertical-layout></axp-root-vertical-layout>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [AXPRootHorizontalLayoutComponent, AXPRootVerticalLayoutComponent],\n providers: [AXUnsubscriber, AXPContextStore],\n})\nexport class AXPRootLayoutComponent {\n protected layout = inject(AXPLayoutThemeService);\n\n protected menuStore = inject(AXPMenuService);\n protected router = inject(Router);\n private eventService = inject(AXPBroadcastEventService);\n private sessionService = inject(AXPSessionService);\n private unsubscriber = inject(AXUnsubscriber);\n private contextStore = inject(AXPContextStore);\n\n ngOnInit(): void {\n // Select the menu item based on the current route when the page loads\n this.menuStore.selectMenuItemByRoute(this.router.url);\n\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {\n // Update the selected menu item whenever the route changes\n this.menuStore.selectMenuItemByRoute(event.urlAfterRedirects);\n // Reset the context store\n this.contextStore.reset();\n });\n\n this.eventService.listen(AXPSessionStatus.SignedOut).subscribe(() => {\n console.log('signed out in root layout');\n this.router.navigate(['/auth/login']);\n });\n //\n this.sessionService.status$.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (status) => {\n\n // Don't redirect if still loading\n const isLoading = await firstValueFrom(this.sessionService.isLoading$);\n if (isLoading) {\n console.log('Session is still loading, skipping redirect check');\n return;\n }\n\n const redirectKeys = [AXPSessionStatus.SignedOut, AXPSessionStatus.Unauthenticated, AXPSessionStatus.Expired];\n if (redirectKeys.includes(status)) {\n console.log('Redirecting to login due to status:', status);\n this.router.navigate(['/auth/login']);\n }\n });\n }\n}\n","import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\n\nexport class AXPEntityReuseStrategy implements RouteReuseStrategy {\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {}\n\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n return null;\n }\n\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n // If paths are different, never reuse\n if (future.routeConfig?.path !== curr.routeConfig?.path) {\n return false;\n }\n\n const reuseConfig = future.data?.['reuse'];\n\n // If reuse is explicitly false, don't reuse\n if (reuseConfig === false) {\n return false;\n }\n\n // If reuse is explicitly true, always reuse (same path)\n if (reuseConfig === true) {\n return true;\n }\n\n // Handle string-based reuse strategies\n if (typeof reuseConfig === 'string') {\n const paramsChanged = this.haveParamsChanged(future, curr);\n const queryParamsChanged = this.haveQueryParamsChanged(future, curr);\n\n switch (reuseConfig) {\n case 'paramsChange':\n // Reuse when params change, but destroy if queryParams change\n return !queryParamsChanged;\n\n case 'queryParamsChange':\n // Reuse when queryParams change, but destroy if params change\n return !paramsChanged;\n\n case 'paramsOrQueryParamsChange':\n // Reuse when either params or queryParams change\n return true;\n\n default:\n // Unknown strategy, use default behavior\n return true;\n }\n }\n\n // Default behavior: reuse if paths are the same\n return true;\n }\n\n //#region ---- Helper Methods ----\n\n /**\n * Check if route params have changed between current and future routes\n */\n private haveParamsChanged(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n const futureParams = future.params;\n const currParams = curr.params;\n\n const futureKeys = Object.keys(futureParams);\n const currKeys = Object.keys(currParams);\n\n if (futureKeys.length !== currKeys.length) {\n return true;\n }\n\n for (const key of futureKeys) {\n if (futureParams[key] !== currParams[key]) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Check if query params have changed between current and future routes\n */\n private haveQueryParamsChanged(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\n const futureQueryParams = future.queryParams;\n const currQueryParams = curr.queryParams;\n\n const futureKeys = Object.keys(futureQueryParams);\n const currKeys = Object.keys(currQueryParams);\n\n if (futureKeys.length !== currKeys.length) {\n return true;\n }\n\n for (const key of futureKeys) {\n if (futureQueryParams[key] !== currQueryParams[key]) {\n return true;\n }\n }\n\n return false;\n }\n\n //#endregion\n}\n","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXPCommonModule } from '@acorex/platform/common';\nimport { AXP_ENTITY_CONFIG_TOKEN, AXPEntityConfigs } from '@acorex/platform/layout/entity';\nimport { AXPThemesSharedModule } from '@acorex/platform/themes/shared';\nimport { inject, NgModule } from '@angular/core';\nimport { RouteReuseStrategy, Routes, ROUTES } from '@angular/router';\nimport { AXPEntityReuseStrategy } from './entity-reuse.strategy';\n\nfunction routesFacory() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n let routes: Routes = [\n {\n path: ':app/modules/:module/:entity',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return config.viewers.root();\n },\n // children: [\n // {\n // path: 'details/:id',\n // loadComponent: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),\n // data: { reuse: true },\n // resolve: {\n // adapter: AXPLayoutDetailsViewRouteResolver,\n // },\n // },\n // ],\n },\n {\n path: 'error',\n children: [\n {\n path: 'offline',\n loadComponent: () =>\n import('./pages/errors/error-offline/error-offline.component').then((c) => c.AXPErrorOfflineComponent),\n },\n {\n path: '404',\n loadComponent: () =>\n import('./pages/errors/error-404/error-404.component').then((c) => c.AXPError404Component),\n },\n {\n path: '401',\n loadComponent: () =>\n import('./pages/errors/error-401/error-401.component').then((c) => c.AXPError401Component),\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [AXPCommonModule, AXPThemesSharedModule],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_ENTITY_CONFIG_TOKEN,\n useFactory: () => {\n const config = {\n viewers: {\n root: () => import('./layouts/root-layout/root-layout.component').then((c) => c.AXPRootLayoutComponent),\n master: {\n single: () =>\n import('./layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component').then(\n (c) => c.AXPEntityMasterSingleViewComponent,\n ),\n details: () => import('@acorex/platform/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),\n ///\n create: () =>\n import('./layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component').then(\n (c) => c.AXPEntityMasterCreateViewComponent,\n ),\n ///\n modify: () =>\n import('./layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component').then(\n (c) => c.AXPEntityMasterModifyViewComponent,\n ),\n //\n list: () =>\n import('./layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component').then(\n (c) => c.AXPEntityMasterListViewComponent,\n ),\n },\n },\n } as AXPEntityConfigs;\n return config;\n },\n },\n\n { provide: RouteReuseStrategy, useClass: AXPEntityReuseStrategy },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n})\nexport class AXPDefaultThemeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i8","i9","i1","i2","i3","i5","i6","sortBy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiFa,gCAAgC,CAAA;IAe3C,WAAA,CACU,kBAAwC,EACxC,YAA4B,EAAA;QAD5B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,YAAY,GAAZ,YAAY;AAhBd,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAExC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAqC,EAAE,4FAAC;AACtE,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAqC,EAAE,8FAAC;AAqBjE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AA2BtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAqB,MAAK;AAC7D,YAAA,OAAO,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,CACtC,CAAC,CAAC,MACC;gBACC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,KAAK;gBACb,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,aAAA,CAAqB,CACzB;AACH,QAAA,CAAC,uFAAC;AAEQ,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAqB,MAAK;AAC5D,YAAA,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;gBAC3C,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,KAAK;oBACb,KAAK,EAAE,CAAC,CAAC,KAAK;iBACK;AACvB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,sFAAC;QAiBQ,IAAA,CAAA,kBAAkB,GAAG,MAAyB;AACtD,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE;AAC/B,QAAA,CAAC;AAES,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,OAAgB,KAAiC;YAChF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACjD,QAAA,CAAC;QA/EC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;YAEhD,IAAI,CAAC,qBAAqB,EAAE;AAC9B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAIA,IAAA,uBAAuB,CAAC,CAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC;QACpC;IACF;IAEU,qBAAqB,GAAA;QAC7B,IAAI,CAAC,QAAQ,CAAC;AACX,aAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AAC5B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAChB,gBAAA,KAAK,EAAE,KAAK;AACb,aAAA,CAAC;;YAEF,IAAI,CAAC,qBAAqB,EAAE;AAC9B,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;;QAEb,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAyBU,MAAM,gBAAgB,CAAC,CAAwB,EAAA;AACvD,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAExE,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,OAAO,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;AACA,QAAA,MAAM,CAAC,GAA+B;YACpC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb;AACD,QAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/B;IAUU,MAAM,wBAAwB,CAAC,IAAe,EAAA;QACtD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;IAEU,MAAM,qBAAqB,CAAC,CAA6B,EAAA;AACjE,QAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACxC;AAEQ,IAAA,MAAM,qBAAqB,GAAA;QACjC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC;IAC7C;IAEU,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;IAChB;8GAzHW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,+GA3BhC,CAAC,cAAc,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtD7B,s9JA4HA,2CDpEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,2wBACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,8BACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,8BACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,8BACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,iBAAiB,0ZACjB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;AAEjB,gBAAA,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,8BACb,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGV,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAhC5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,aAAA,EAExB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,cAAc,CAAC,EAAA,OAAA,EAClB;wBACP,YAAY;wBACZ,WAAW;wBACX,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,iBAAiB;wBACjB,iBAAiB;;wBAEjB,mBAAmB;wBACnB,gBAAgB;wBAChB,aAAa;wBACb,mBAAmB;AACpB,qBAAA,EAAA,QAAA,EAAA,s9JAAA,EAAA;;sBAUA,KAAK;uBAAC,WAAW;;sBAKjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AE5CrC;AAEA,MAAM,YAAY,GAAG,KAAK;AAC1B,MAAM,gBAAgB,GAAG,GAAG;AAC5B,MAAM,kBAAkB,GAAG,OAAO;AAClC,MAAM,mBAAmB,GAAG,IAAI;AAEhC;MAyBa,0BAA0B,CAAA;;;AA6FrC,IAAA,WAAA,GAAA;;;QAzFmB,IAAA,CAAA,4BAA4B,GAAG,qCAAqC;AAEpE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kCAAkC,CAAC;AAC3D,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACpD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;;;AAMhE,QAAA,IAAA,CAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,wEAAgC;AACnD,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAsB,MAAM,2EAAC;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAG/B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAuB,QAAQ,iFAAC;AAClD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAA8B,cAAc,wFAAC;AACtE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,+EAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAyB,MAAM,mFAAC;AACpD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,gFAAC;AACvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,wFAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,0BAA0B,mFAAC;AAChD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,2BAA2B,oFAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE,iFAAC;AACtB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;AAC3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC,CAAC;;;AAM1C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI,gFAAC;AACd,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAC3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,CAAC,wFAAC;AAC7B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,EAAE,yFAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,EAAE,uFAAC;;;QAM/B,IAAA,CAAA,gBAAgB,GAAyC,IAAI;QAC3D,IAAA,CAAA,QAAQ,GAAgC,IAAI;QAC9C,IAAA,CAAA,UAAU,GAA8B,IAAI;AAC5C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAU;AACnC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;QAC3D,IAAA,CAAA,yBAAyB,GAAa,EAAE;QACxC,IAAA,CAAA,yBAAyB,GAAa,EAAE;QACxC,IAAA,CAAA,iBAAiB,GAAkB,IAAI;;;AAM5B,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,IAAI,kBAAkB,gFAAC;AACzF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,IAAI,mBAAmB,iFAAC;;QAG5F,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAC5C,MAAO,IAAI,CAAC,EAAE,EAAE,CAAC,SAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC5E;AAED;;;AAGG;AACgB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE;AACpD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC5C,YAAA,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,CAAC;AACpE,QAAA,CAAC,0FAAC;AAEe,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACjD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM;YAChD,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;YACtD;AACA,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,wFAAC;;;;;;AA2fF;;;AAGG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,OAAO,QAAiB,KAA+B;AAC5E,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,gBAAA,OAAO,EAAE;YACX;;YAGA,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE;YACnC;;AAGA,YAAA,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5C,QAAA,CAAC;QApgBC,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC;AACX,aAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;aAC5B,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE;;AAE3B,QAAA,CAAC,CAAC;IACN;;;AAMA;;AAEG;IACH,MAAM,0BAA0B,CAAC,KAAkC,EAAA;AACjE,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3D,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;;QAGpD,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,kBAAkB,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE;AACvD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,gBAAA,MAAM,IAAI,CAAC,WAAW,EAAE;YAC1B;YACA;QACF;;AAGA,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC5B;QACF;;QAGA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACzD,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE;gBACzC;YACF;QACF;QAEA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU;AAEnC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;;QAGA,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE;AACtE,YAAA,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,EAAE;YACtD,IAAI,CAAC,yBAAyB,GAAG;AAC9B,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACtC,iBAAA,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,YAAY,CAAC;QAC9C;;QAGA,IAAI,kBAAkB,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnE,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE;AACrE,YAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;AACnC,YAAA,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;;gBAEpC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpD,oBAAA,IAAI;AACF,wBAAA,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC;oBACpC;AAAE,oBAAA,MAAM;;oBAER;gBACF;YACF;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI;;AAEF,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CACnE,UAAU,EACV,IAAI,CAAC,QAAS,EACd,IAAI,CAAC,UAAW,CACjB;;AAGD,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE;gBACzC;YACF;YAEA,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,gBAAA,MAAM,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;;AAEtC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,gBAAA,MAAM,aAAa,CAAC,UAAU,EAAE;gBAChC;YACF;;AAGA,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC7C,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;gBAClC;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM;AACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;;AAGvC,YAAA,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;;YAGhD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;;AAGlE,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAC9C;;AAGA,YAAA,MAAM,aAAa,CAAC,UAAU,EAAE;;YAGhC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AAC/C,gBAAA,IAAI;AACF,oBAAA,MAAM,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;AAC5C,oBAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC;gBACnD;AAAE,gBAAA,MAAM;;gBAER;YACF;;;AAIA,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAChF,YAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;;gBAEpC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC3C,oBAAA,IAAI;AACF,wBAAA,MAAM,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxC,wBAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAE7C,wBAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACzD;AAAE,oBAAA,MAAM;;oBAER;gBACF;YACF;;;YAIA,UAAU,CAAC,MAAK;gBACd,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;AACpC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChG;YACF,CAAC,EAAE,GAAG,CAAC;QACT;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACnD,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;AAE7B,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;YACjC,IAAI,aAAa,EAAE;AACjB,gBAAA,MAAM,aAAa,CAAC,UAAU,EAAE;YAClC;QACF;gBAAU;AACR,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACzC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YAC/B;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;AAEA;;;;AAIG;IACK,MAAM,gBAAgB,CAAC,KAAgC,EAAA;AAC7D,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,IAAI,UAAU;;AAG3E,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;AAGlE,QAAA,MAAM,gBAAgB,GAAG,OAAO,IAA6B,KAAmB;;AAE9E,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAwC;YACpE,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACjE,gBAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE;AACzC,oBAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxC,oBAAA,MAAM,gBAAgB,CAAC,MAAM,CAAC;gBAChC;YACF;iBAAO;;;gBAGL,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;gBACzD,IAAI,aAAa,EAAE;AACjB,oBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,oBAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE;;AAEzC,wBAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,wBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;;wBAGlC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;4BACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;4BACrD,IAAI,UAAU,EAAE;gCACd,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;;AAE5C,gCAAA,MAAM,gBAAgB,CAAC,UAAU,CAAC;4BACpC;wBACF;6BAAO;;4BAEL,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;4BACrD,IAAI,YAAY,EAAE;AAChB,gCAAA,MAAM,gBAAgB,CAAC,YAAY,CAAC;4BACtC;wBACF;oBACF;gBACF;YACF;AACF,QAAA,CAAC;;AAGD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,gBAAgB,CAAC,IAAI,CAAC;QAC9B;AAEA,QAAA,OAAO,eAAe;IACxB;AAEA;;;AAGG;IACK,MAAM,kBAAkB,CAAC,KAAgC,EAAA;AAC/D,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC/D;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS;QAC5D,IAAI,CAAC,SAAS,EAAE;YACd;QACF;;AAGA,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,YAAY,EAAE;gBACtC;YACF;YAEA,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;QACtE;IACF;AAEA;;AAEG;AACK,IAAA,MAAM,0BAA0B,CAAC,MAAc,EAAE,UAAkB,EAAE,SAAiB,EAAA;AAC5F,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE;YAC3C;QACF;AAEA,QAAA,IAAI;;AAEF,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAChC,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5B,iBAAA;aACF;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAC9D,YAAA,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEtC,gBAAA,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE;oBAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/C,oBAAA,IAAI,OAAO,IAAI,OAAO,KAAK,YAAY,EAAE;AACvC,wBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;;wBAEjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;;wBAEtC,MAAM,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC;oBACvE;gBACF;YACF;QACF;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,CAAA,iCAAA,EAAoC,MAAM,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;QACrE;IACF;AAEA;;AAEG;IACK,MAAM,aAAa,CAAC,EAAU,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE;AAC3C,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAChC,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5B,iBAAA;aACF;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC;YAC9D,OAAO,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI;QAChC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;AAClD,YAAA,OAAO,IAAI;QACb;IACF;AAEA;;;AAGG;IACK,MAAM,kBAAkB,CAAC,SAAmB,EAAA;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS;QAC7D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,SAAS;QAClB;;AAGA,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB;AAE1C,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,YAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAC1B;YACF;YAEA,IAAI,KAAK,GAAG,CAAC;YACb,IAAI,SAAS,GAAkB,QAAQ;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU;AAEjC,YAAA,OAAO,SAAS,IAAI,SAAS,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACzE,gBAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACtB,gBAAA,KAAK,EAAE;;gBAGP,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC9C,IAAI,IAAI,EAAE;AACR,oBAAA,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI;gBAC9D;qBAAO;oBACL;gBACF;YACF;AAEA,YAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC/B;;QAGA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,OAAO,MAAM,GAAG,MAAM;AACxB,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,MAAM,wBAAwB,CAAC,WAAmB,EAAA;AACxD,QAAA,IAAI,WAAW,GAAG,CAAC,EAAE;AACnB,YAAA,MAAM,GAAG,GACP,WAAW,KAAK;AACd,kBAAE;kBACA,+DAA+D;YACrE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;AACzF,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B;IACF;AAEA;;AAEG;AACK,IAAA,MAAM,WAAW,GAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;;AAE1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAE7B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;AACnC,YAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;YACnC;QACF;;AAGA,QAAA,MAAM,aAAa,CAAC,UAAU,EAAE;;QAGhC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,EAAE;AACrE,QAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;AAEnC,QAAA,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;;YAEpC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpD,gBAAA,IAAI;AACF,oBAAA,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC;gBACpC;AAAE,gBAAA,MAAM;;gBAER;YACF;QACF;;AAGA,QAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;IACrC;AAEA;;AAEG;AACO,IAAA,cAAc,CAAC,MAAc,EAAA;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;IACzC;AAEA;;AAEG;AACO,IAAA,eAAe,CAAC,IAAoB,EAAA;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC3C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,IAAI,EAAE;AAC3E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;AAG/D,QAAA,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACrC;aAAO;AACL,YAAA,IAAI,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC;AAC5B,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC1D,aAAA,CAAC;QACJ;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC5E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAE3C,QAAA,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;AAC1B,YAAA,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,eAAe,CAAC;AAC7C,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE;IAChC;AAEA;;AAEG;IACO,MAAM,YAAY,CAAC,MAAiC,EAAA;;IAE9D;;;AAgCA;;AAEG;IACH,MAAM,qBAAqB,CAAC,KAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;AAE5C,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;YACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC;QACjD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;QACvD;IACF;AAEA;;AAEG;AACH,IAAA,MAAM,sBAAsB,CAAC,IAAoB,EAAE,KAAmB,EAAA;AACpE,QAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;AAE5C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACxD,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC;QACxD;IACF;AAEA;;AAEG;AACH,IAAA,MAAM,mBAAmB,CAAC,IAAoB,EAAE,KAAmB,EAAA;AACjE,QAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;AAE5C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACxD,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC;QACjD;IACF;AAEA;;AAEG;AACH,IAAA,MAAM,qBAAqB,CAAC,IAAoB,EAAE,KAAmB,EAAA;AACnE,QAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;AAE5C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YAC1D,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;QAC9C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;QAClD;IACF;;;AAMA;;AAEG;AACK,IAAA,MAAM,cAAc,GAAA;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAE9B,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;YAC1C,IAAI,CAAC,UAAU,GAAG;gBAChB,SAAS;AACT,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;aAC9B;AAED,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC;AACtF,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,iBAAiB,EAAE;gBACxB;YACF;;YAGA,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE;AAC9C,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS;YACvE;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;QACnD;gBAAU;YACR,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;AAEA;;AAEG;AACK,IAAA,MAAM,aAAa,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;;AAGA,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAS,EAAE,IAAI,CAAC,UAAW,CAAC;QACjG,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,UAAW,CAAC;;AAGvF,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzD,YAAA,QAAQ,CAAC,UAAU,CAAC,GAAI,QAAQ,CAAC,UAAU,CAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;gBACjF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1C,YAAA,CAAC,CAAC;YACF,QAAQ,CAAC,eAAe,CAAC,GAAI,QAAQ,CAAC,UAAU,CAAsB,CAAC,MAAM;QAC/E;QAEA,OAAO,CAAC,QAAQ,CAAC;IACnB;AAEA;;AAEG;IACK,MAAM,cAAc,CAAC,QAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;;AAGA,QAAA,MAAM,UAAU,GAAmB;AACjC,YAAA,EAAE,EAAE,QAAQ;SACK;AAEnB,QAAA,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,QAAS,EAAE,IAAI,CAAC,UAAW,CAAC;;QAGxG,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE;YACjC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;gBACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1C,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEA;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,OAAO,EAAE;QACzB;IACF;AAEA;;AAEG;IACK,MAAM,kBAAkB,CAAC,QAAiB,EAAA;QAChD,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;AAEG;AACK,IAAA,MAAM,aAAa,CAAC,UAAmC,EAAE,QAAiB,EAAA;AAChF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAW,CAAC;QAExF,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC;QAC3D;aAAO;YACL,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC;QAChD;IACF;AAEA;;AAEG;AACK,IAAA,MAAM,YAAY,CACxB,aAAkC,EAClC,QAAgB,EAChB,OAAuB,EAAA;QAEvB,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACvC;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC3C,YAAA,MAAM,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1C;AAEA,QAAA,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3C;AAEA;;AAEG;AACK,IAAA,MAAM,WAAW,CAAC,aAAkC,EAAE,OAAuB,EAAA;QACnF,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE;YAC/B;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AAC/C,YAAA,MAAM,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;QAC9C;AAEA,QAAA,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/C;AAEA;;AAEG;AACK,IAAA,MAAM,gBAAgB,CAAC,MAAc,EAAE,UAAmC,EAAA;AAChF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;QAEA,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;YACxC;QACF;;QAGA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS;QAC7D,IAAI,WAAW,GAAuB,SAAS;AAC/C,QAAA,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;AAEjD,YAAA,WAAW,GAAG,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,EAAE,GAAG,WAAW,GAAG,SAAS;QACrF;QAEA,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC;AACrD,QAAA,MAAM,eAAe,GAAG,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS;;AAErF,QAAA,MAAM,yBAAyB,GAAG,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,EAAE,GAAG,SAAS,GAAG,eAAe;;AAGnH,QAAA,IAAI,WAAW,KAAK,yBAAyB,EAAE;;YAE7C,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;YAEzD,IAAI,CAAC,KAAK,EAAE;;AAEV,gBAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;gBACxC;YACF;;YAGA,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AAC9C,oBAAA,MAAM,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC;gBAC7C;YACF;iBAAO;;gBAEL,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AAC/C,oBAAA,MAAM,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC9C;YACF;QACF;;AAGA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAW,CAAC;AAC5F,QAAA,MAAM,OAAO,GAA4B;AACvC,YAAA,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAC/B,YAAA,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AAC7B,YAAA,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;AAC/C,YAAA,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;SAC9B;AAED,QAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzC;AAEA;;AAEG;IACK,MAAM,kBAAkB,CAAC,MAAc,EAAA;AAC7C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;QAEA,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE;YAC/B;QACF;AAEA,QAAA,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC;IAClC;;;AAMA;;AAEG;IACK,MAAM,oBAAoB,CAAC,QAAiB,EAAA;AAClD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC1C,QAAA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACrD,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;QAE3E,MAAM,IAAI,GAA4B,EAAE;QACxC,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE;YAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,QAAQ;QAC5D;QAEA,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,wCAAwC,CAAC;QAEzG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC9C,eAAe,EACf;AACE,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE;oBAC7D,SAAS,EAAE,SAAS,CAAC,SAAS;AAC/B,iBAAA;AACD,gBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;AACrD,gBAAA,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE;oBACzD,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;AACvD,iBAAA;AACF,aAAA;AACF,SAAA,CACF;AACD,QAAA,OAAO,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IACrC;AAEA;;AAEG;IACK,MAAM,oBAAoB,CAChC,QAAiC,EAAA;AAEjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC1C,QAAA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACrD,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;QAE3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC9C,eAAe,EACf;AACE,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE;oBAC7D,SAAS,EAAE,SAAS,CAAC,SAAS;AAC/B,iBAAA;AACD,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AACpC,aAAA;AACF,SAAA,CACF;AACD,QAAA,OAAO,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IACrC;AAEA;;AAEG;AACK,IAAA,MAAM,iBAAiB,CAC7B,MAA4D,EAC5D,QAAiB,EAAA;QAEjB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAChD,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACvC;QACF;AACA,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI;QACjC,IAAI,aAAa,EAAE;YACjB,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC;QACnD;aAAO;AACL,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QACzC;IACF;AAEA;;AAEG;AACK,IAAA,MAAM,iBAAiB,CAC7B,MAA4D,EAC5D,IAAoB,EAAA;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAChD,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxD;QACF;AACA,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI;QACrC,IAAI,iBAAiB,EAAE;AACrB,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAC1E;aAAO;YACL,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D;IACF;;;AAMA;;AAEG;IACK,MAAM,qBAAqB,CAAC,QAAiC,EAAA;QACnE,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AAClD,YAAA,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAChC,YAAA,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;AAC3C,SAAA,CAAC;IACJ;AAEA;;AAEG;AACK,IAAA,MAAM,kBAAkB,CAAC,OAA2B,EAAE,IAAoB,EAAA;QAChF,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAU,QAAQ,CAAC;QACnD,IAAI,MAAM,EAAE;YACV,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzD;aAAO;YACL,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D;IACF;;;AAMA;;AAEG;IACK,iBAAiB,GAAA;QACvB,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC;IAC7C;AAEA;;AAEG;AACK,IAAA,eAAe,CAAC,IAAoB,EAAA;QAC1C,QAAS,IAAI,CAAC,MAAM,CAA6B,IAAI,IAAI;IAC3D;AAEA;;AAEG;AACK,IAAA,aAAa,CAAC,IAAoB,EAAA;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC;AAEA;;AAEG;IACK,oBAAoB,CAC1B,QAAiC,EACjC,eAAiC,EAAA;AAEjC,QAAA,OAAO;AACJ,aAAA,GAAG,CAAC,CAAC,SAAS,KAAI;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;YACvC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;AACpC,gBAAA,OAAO,IAAI;YACb;YACA,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,IAAI;gBACrB,KAAK;gBACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;aACD;AAC/B,QAAA,CAAC;aACA,MAAM,CAAC,CAAC,IAAI,KAAuC,IAAI,KAAK,IAAI,CAAC;IACtE;AAEA;;AAEG;IACK,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,EAAE;AACX,aAAA,IAAI;aACJ,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAA6B,CAAC;IACzG;AAEA;;AAEG;IACK,MAAM,iBAAiB,CAAC,UAAmC,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS;AAC7D,QAAA,MAAM,QAAQ,GAAG,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,GAAI,UAAU,CAAC,SAAS,CAAY,GAAG,SAAS;AACnG,QAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACzC;AAEA;;AAEG;AACK,IAAA,gCAAgC,CAAC,KAAmB,EAAA;AAC1D,QAAA,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE;AAClC,QAAA,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE;IACrC;;;AAMA;;AAEG;AACK,IAAA,mBAAmB,CAAC,OAAgB,EAAA;QAC1C,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrC;AAEA,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAK;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B,CAAC,EAAE,gBAAgB,CAAC;IACtB;AAEA;;AAEG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;8GAhpCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClFvC,g3LAmHqB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnDjB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,4BAA4B,EAAA,QAAA,EAAA,qfAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC5B,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,6BAA6B,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,8BAA8B,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC9B,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,wBAAwB,8OACxB,iCAAiC,EAAA,IAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKxB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAvBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,gBAAgB;wBAChB,mBAAmB;wBACnB,gBAAgB;wBAChB,4BAA4B;wBAC5B,iBAAiB;wBACjB,6BAA6B;wBAC7B,8BAA8B;wBAC9B,mBAAmB;wBACnB,cAAc;wBACd,gBAAgB;wBAChB,wBAAwB;wBACxB;AACD,qBAAA,EAAA,QAAA,EAAA,g3LAAA,EAAA;+KAsBqC,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzCjC,mCAAmC,CAAA;AArBhD,IAAA,WAAA,GAAA;AAsBY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACnD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;AACpC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAE5C,IAAA,CAAA,cAAc,GAAG,KAAK;QACtB,IAAA,CAAA,qBAAqB,GAAG,IAAI;QAC5B,IAAA,CAAA,mBAAmB,GAAG,IAAI;QAExB,IAAA,CAAA,iBAAiB,GAAsB,QAAQ;AAE/C,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAmB,EAAE,4FAAC;AA0BpD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAmB,EAAE,qFAAC;AAC7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAwB,EAAE,yFAAC;QAEtD,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAiB,MAC/C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,YAAA,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;AAClB,YAAA,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBACnC,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,aAAA,CAAC,CAAC;YACH,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,kFACJ;AACS,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAe,OAAO;YAC1D,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI;AACzB,YAAA,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;YAC3B,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO;AAC/B,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBAChD,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,aAAA,CAAC,CAAC;YACH,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5B,SAAA,CAAC,wFAAC;QAEO,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;QAGlG,IAAA,CAAA,UAAU,GAAQ,IAAI;AA4B9B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAK;;YAEpB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AACjD,QAAA,CAAC,8EAAC;QAyCQ,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAiB,MAC/C,IAAI,CAAC;AACF,aAAA,YAAY;aACZ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;aACrB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAqB,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAChE;QAES,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAsB,MACxD,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YACnC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,GAAiC;SACzC,CAAC,CAAC,sFACJ;AAyCF,IAAA;AAvLC,IAAA,MAAM,QAAQ,GAAA;;AAEZ,QAAA,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;QACvB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;QAG1B,IAAI,CAAC,mCAAmC,EAAE;;QAE1C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B,IAAI,CAAC,aAAa,EAAE;QACtB,CAAC,EAAE,CAAC,CAAC;IACP;AAEQ,IAAA,MAAM,YAAY,GAAA;AACxB,QAAA,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;QACjG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,EAAE,KAAK,IAAI,MAAM,CAAsB;IACpF;IAuCQ,aAAa,GAAA;AACnB,QAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE;QAC9B,CAAC,EAAE,EAAE,CAAC;IACR;IAEA,MAAM,aAAa,CAAC,IAAkB,EAAA;QACpC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,WAAW;AAC5B,YAAA,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAChC,YAAA,mBAAmB,EAAE,OAAO;AAC5B,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;QAC/B,IAAI,CAAC,mCAAmC,EAAE;;QAE1C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B,IAAI,CAAC,aAAa,EAAE;QACtB,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,OAAO;IAKC,mCAAmC,GAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACrC,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACnE,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAChG;QACF;QACA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAC3B,CAAC,CAAC,MACC;YACC,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,YAAA,MAAM,EAAE,IAAI;SACb,CAAQ,CACZ,CACF;IACH;AAEA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;QACxC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACrD,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;YAClC;QACF;QAEA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAClC,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,EAAE;YACrC,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACxD,IAAI,CAAC,aAAa,EAAE;IACtB;AAiBU,IAAA,mBAAmB,CAAC,CAAiB,EAAA;QAC7C,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACnD,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;YAChC;QACF;AACA,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CACtB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,GAAG,EAAE,CAAC,CAAC,GAAG;SACX,CAAC,CAAC,CACJ;;QAED,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE;IACtB;AAEU,IAAA,eAAe,CAAC,OAAyB,EAAA;AACjD,QAAA,MAAM,KAAK,GAAG,CAAC,CAAiC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC,IAAI;QAE1F,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;YAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5D,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAE;AAC7C,gBAAA,OAAO,IAAI,gCAAgC,CAAC,QAAQ,CAAC,QAAQ,EAAE;oBAC7D,GAAG,QAAQ,CAAC,MAAM;AAClB,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO;wBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;AAC3B,qBAAA;AACF,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;;;IAG7C;8GAtMW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,sKC3DhD,mvHAkGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrDI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,6XACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,8IACxB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,sBAAsB,+IACtB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,GAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMf,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBArB/C,SAAS;+BACE,gCAAgC,EAAA,aAAA,EAE3B,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,mBAAmB;wBACnB,wBAAwB;wBACxB,eAAe;wBACf,sBAAsB;wBACtB,sBAAsB;wBACtB,wBAAwB;qBACzB,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,WAAW;AACnB,qBAAA,EAAA,QAAA,EAAA,mvHAAA,EAAA;;sBAuCA,KAAK;uBAAC,WAAW;;;AEOd,MAAO,gCAAiC,SAAQ,0BAA0B,CAAA;AAmB9E,IAAA,WAAA,CAAsB,QAAoB,EAAA;AACxC,QAAA,KAAK,EAAE;QADa,IAAA,CAAA,QAAQ,GAAR,QAAQ;AAlBtB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEZ,IAAA,CAAA,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAiC;;AAGlF,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;;AAErC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,IAAI,qFAAC;AAC7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAA+B,QAAQ,wFAAC;AAElE,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,EAAE,0FAAC;;AAGhC,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAuB,MAAM,2EAAC;QAEhD,IAAA,CAAA,oBAAoB,GAAG,KAAK;AAqG5B,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAqB,MAAK;AAC1D,YAAA,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;gBAC3C,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,oBAAA,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC5B,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACC;AACvB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,sFAAC;AA0BQ,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,OAAgB,KAAiC;YAChF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACxD,QAAA,CAAC;QAES,IAAA,CAAA,kBAAkB,GAAG,MAAyB;AACtD,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE;AAC/B,QAAA,CAAC;QA5IC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,EAAG,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACrD;AACF,QAAA,CAAC,CAAC;;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAI;AACpC,YAAA,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe;YAC/C,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI;AACxD,YAAA,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE;gBACzB,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC,eAAe,CAAC;AACvD,oBAAA,IAAI,CAAC,gCAAgC,CAAC,eAAe,CAAC;gBACxD;qBAAO;AACL,oBAAA,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC;AACnB,wBAAA,KAAK,EAAE,eAAe;AACvB,qBAAA,CAAC;gBACJ;YACF;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B;YACF;YACA,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI;AAC3C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AACnE,YAAA,IAAI,eAAe,IAAI,eAAe,KAAK,OAAO,EAAE;AAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;oBACvB,UAAU,EAAE,IAAI,CAAC,WAAW;AAC5B,oBAAA,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;AACtC,oBAAA,mBAAmB,EAAE,OAAO;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAES,IAAA,MAAM,QAAQ,GAAA;;AAErB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,KAAI;YACzE,MAAM,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;YAClC,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QACvE,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;QAElC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI;AACxC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1E,QAAA,IAAI,cAAc,KAAK,YAAY,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACvB,UAAU,EAAE,IAAI,CAAC,WAAW;AAC5B,gBAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,gBAAA,mBAAmB,EAAE,OAAO;AAC5B,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;IAClC;AAEU,IAAA,mBAAmB,CAAC,CAA2B,EAAA;QACvD,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YAC3C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC;QAC7C;IACF;AAEU,IAAA,aAAa,CAAC,CAA0B,EAAA;AAChD,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;AACvB,YAAA,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ;YAC7D,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;YAC1C;QACF;IACF;AAEU,IAAA,qBAAqB,CAAC,CAA6B,EAAA;AAC3D,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7C;IACF;IAEU,MAAM,gBAAgB,CAAC,OAAY,EAAA;AAC3C,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;YAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,SAAS;AACrB,SAAA,CAAC,CAAuB;IAC3B;IAeU,MAAM,gBAAgB,CAAC,CAAwB,EAAA;QACvD,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE;YACrC;QACF;QACA,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;QAGtF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACxC,YAAA,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC,YAAA,OAAO,CAAE,CAAS,CAAC,OAAO,IAAI,WAAW,KAAK,aAAa,KAAK,CAAC,CAAC,CAAC,QAAQ;AAC7E,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,CAAC,GAA+B;YACpC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;SACb;AACD,QAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/B;IAUU,MAAM,qBAAqB,CAAC,CAA6B,EAAA;QACjE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,SAAS,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,CAAC,UAAU,EAAE;AAChB,YAAA,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB;AACA,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,CAAC,UAAU,EAAE;AAChB,YAAA,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QACrB;IACF;IAEU,MAAM,wBAAwB,CAAC,IAAe,EAAA;QACtD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;AAEA;;;;AAIG;AACK,IAAA,gCAAgC,CAAC,QAAgB,EAAA;AACvD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,UAAgF;AACpG,QAAA,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;YAC5B;QACF;QACA,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;AACvE,QAAA,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACvC,YAAA,MAAkC,CAAC,UAAU,CAAC,GAAG,IAAI;QACxD;IACF;AAEQ,IAAA,YAAY,CAAC,KAAgB,EAAE,EAAU,EAAE,GAAW,EAAA;AAC5D,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AAC7F,gBAAA,OAAO,IAA+B;YACxC;YACA,MAAM,GAAG,GAAG,IAA+B;YAC3C,MAAM,YAAY,GAAI,GAAG,GAAG,UAAU,CAAyC,GAAG,UAAU,CAAC;AAC7F,YAAA,MAAM,cAAc,GAAG,GAAG,GAAG,UAAU,CAAC;AACxC,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY;AACzC,kBAAG;AACH,kBAAE,KAAK,CAAC,OAAO,CAAC,cAAc;AAC5B,sBAAG;sBACD,IAAI;AACV,YAAA,IAAI,QAAQ,EAAE,MAAM,EAAE;AACpB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC;AAClD,gBAAA,IAAI,KAAK;AAAE,oBAAA,OAAO,KAAK;YACzB;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEU,IAAA,cAAc,CAAI,KAAQ,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACxD,YAAA,OAAO,EAAE;QACX;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;AAEU,IAAA,aAAa,CAAC,OAAsC,EAAA;QAC5D,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;QACrC;IACF;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC;AAEU,IAAA,gBAAgB,CAAC,OAAqC,EAAA;QAC9D,QAAQ,OAAO;YACb,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;gBACtB;YACF;YACA,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;gBACpB;YACF;YACA,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;gBACtB;YACF;;IAEJ;;;;;;;;;;;;;;;;;AAmBU,IAAA,gBAAgB,CAAC,OAAqC,EAAA;AAC9D,QAAA,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE;QAC5B,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;IACnB;IAEA,oBAAoB,GAAA;QAClB,IAAI,CAAC,eAAe,EAAE;IACxB;IAES,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;IACxB;AAES,IAAA,MAAM,kBAAkB,GAAA;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;QACzC,IAAI,WAAW,EAAE;YACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC;QAC1D;AACA,QAAA,OAAO,EAAE;IACX;IAES,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;IAC9B;AAES,IAAA,MAAM,mBAAmB,GAAA;QAChC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE;aACtC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO;AAC1B,aAAA,GAAG,CACF,CAAC,EAAE,MACA;YACC,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,QAAQ,EAAE,EAAE,CAAC,QAAQ;AACrB,YAAA,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACvB,iBAAA;AACF,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ;AACtB,aAAA;AACF,SAAA,CAAsB,CAC1B;IACL;AAES,IAAA,MAAM,qBAAqB,GAAA;AAClC,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM;YACxD,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,QAAQ,EAAE,EAAE,CAAC,QAAQ;YACrB,SAAS,EAAE,EAAE,CAAC,SAAS;AACvB,YAAA,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ,EAAE,EAAE,CAAC,QAAQ;AACtB,aAAA;AACF,SAAA,CAAC,CAAC;IACL;IAES,MAAM,OAAO,CAAC,OAA0B,EAAA;QAC/C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1B;IACF;IAEU,iBAAiB,GAAA;QACzB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;8GAtWW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,SAAA,EAPhC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,gCAAgC;AAC9C,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrGH,+yFA6CkB,EAAA,MAAA,EAAA,CAAA,gpEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDiBd,YAAY,8BACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,6XACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,8BAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,8BACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,YAAY,8BACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,sBAAsB,8BACtB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,mBAAmB,+GACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;gBAEd,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBAEb,mCAAmC,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;AAEnC,gBAAA,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,4BAA4B,EAAA,QAAA,EAAA,qfAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAE5B,gCAAgC,8FAChC,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,aAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,GAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FASjB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAhD5C,SAAS;+BAGE,wBAAwB,EAAA,aAAA,EACnB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,WAAW;wBACX,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,cAAc;;wBAEd,mBAAmB;wBACnB,gBAAgB;wBAChB,aAAa;;wBAEb,mCAAmC;;wBAEnC,sBAAsB;wBACtB,4BAA4B;wBAC5B,sBAAsB;wBACtB,gCAAgC;wBAChC,0BAA0B;qBAC3B,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,gCAAkC;AAC9C,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+yFAAA,EAAA,MAAA,EAAA,CAAA,gpEAAA,CAAA,EAAA;qHAiBgD,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;;;;;;MErG5C,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uGAAA,EAAA,EAAA,SAAA,EAT5B,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRf,oSAMA,2CDQI,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGb,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;+BACE,4BAA4B,EAAA,aAAA,EAEvB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,EAAE,EAAA,IAAA,EACP;AACJ,wBAAA,KAAK,EAAE,uGAAuG;AAC/G,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,OAAA,EACP;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,oSAAA,EAAA;;;MEMU,4BAA4B,CAAA;AAbzC,IAAA,WAAA,GAAA;AAcU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAExC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAUlC,IAAA;IAPW,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;IAC7B;IAEU,eAAe,GAAA;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B;8GAdW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,kPCrBzC,87PAyGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzFI,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,cAAc,6XACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGR,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,iBAEvB,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,gIAAgI,EAAE,cACrI,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,sBAAsB;wBACtB,cAAc;wBACd;AACD,qBAAA,EAAA,QAAA,EAAA,87PAAA,EAAA;;;MESU,0BAA0B,CAAA;AASrC,IAAA,WAAA,GAAA;AARU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAEpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,IAAI,mFAAC;;;;;;IAQrC;AAEA,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAU,qBAAqB,CAAC,gBAAgB,CAAC,CAC7G;;QAED,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YACnD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE;AACjE,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YAC/E;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,CAAC,IAAiB,EAAE,aAAuB,EAAA;QACxD,IAAI,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YAC1C;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;IACrC;AAEU,IAAA,IAAI,CAAC,KAAoB,EAAA;QACjC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D;AAEU,IAAA,YAAY,CAAC,IAAiB,EAAA;QACtC,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;IAClE;;AAIA;;AAEG;AACO,IAAA,aAAa,CAAC,IAAiB,EAAA;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC;IACnD;AAEA;;;;;;AAMG;AACO,IAAA,oBAAoB,CAAC,IAAiB,EAAA;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9F;AAEA;;AAEG;AACO,IAAA,cAAc,CAAC,IAAiB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACjC;AACA,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IACxC;AAEA;;;AAGG;AACO,IAAA,iBAAiB,CAAC,IAAiB,EAAE,KAAoB,EAAE,KAAa,EAAA;AAChF,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE;AAChD,YAAA,OAAO,KAAK;QACd;QACA,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,gBAAgB,IAAI,eAAe;IAC5C;;;AAMA;;;;AAIG;AACO,IAAA,aAAa,CAAC,IAAiB,EAAA;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;AAEhE,QAAA,IAAI;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC7C;QAAE,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5E,YAAA,OAAO,IAAI;QACb;IACF;AAEA;;;AAGG;AACK,IAAA,uBAAuB,CAAC,IAAiB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAC5B;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,eAAe,GAAG,OAA6C;AACrE,QAAA,IAAI,eAAe,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,eAAe,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC3F,OAAO;AACL,gBAAA,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI;AAClC,gBAAA,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM;aACvC;QACH;QAEA,MAAM,cAAc,GAAG,OAA4B;QACnD,IAAI,cAAc,EAAE,OAAO,IAAI,OAAO,cAAc,CAAC,OAAO,KAAK,QAAQ,EAAE;AACzE,YAAA,MAAM,cAAc,GAAG,cAAc,CAAC,OAAmC;AAEzE,YAAA,IAAI,cAAc,EAAE,IAAI,KAAK,QAAQ,EAAE;AACrC,gBAAA,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc;AAC9D,gBAAA,IAAI,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ,EAAE;oBAC3C,OAAO;wBACL,IAAI,EAAE,aAAa,CAAC,IAAI;wBACxB,MAAM,EAAE,aAAa,CAAC,MAAM;qBAC7B;gBACH;YACF;AAEA,YAAA,IAAI,OAAO,cAAc,EAAE,IAAI,KAAK,QAAQ,EAAE;AAC5C,gBAAA,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE;YACtC;QACF;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACK,IAAA,sBAAsB,CAAC,UAAgC,EAAA;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACpB,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;QAChC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAK,MAA2B,CAAC,MAAM,KAAK,OAAO,EAAE;AACnD,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,eAAe,GAA+B,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,CAAC;AACjG,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAClE;AAEA;;;AAGG;AACK,IAAA,mBAAmB,CAAC,IAAY,EAAA;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,OAAO;QAChB;QAEA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACjF,YAAA,OAAO,OAAO;QAChB;QAEA,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;IACtB;AAEQ,IAAA,oBAAoB,CAAC,IAAY,EAAA;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3C,QAAA,OAAO,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;IAC5E;8GAlNW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BvC,mtFAkEc,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,iBAAiB,0VACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,GAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAftC,SAAS;+BACE,eAAe,EAAA,aAAA,EAEV,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;wBACjB,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,mtFAAA,EAAA;;;MEUU,0BAA0B,CAAA;AApBvC,IAAA,WAAA,GAAA;AAqBc,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAElD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAEpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,IAAI,mFAAC;AAqMxC,IAAA;AAnMG,IAAA,MAAM,QAAQ,GAAA;QACV,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAU,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;;QAEnI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,IAAG;YAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE;AAC/D,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YACjF;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,eAAe,CAAC,IAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;QACvC;IACJ;AAIU,IAAA,IAAI,CAAC,KAAoB,EAAA;QAC/B,OAAOE,QAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D;AAEU,IAAA,YAAY,CAAC,IAAiB,EAAA;QACpC,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;IACpE;;AAIA;;AAEG;AACO,IAAA,aAAa,CAAC,IAAiB,EAAA;QACrC,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC;IACrD;AAEA;;;;;;AAMG;AACO,IAAA,oBAAoB,CAAC,IAAiB,EAAA;QAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChG;AAEA;;AAEG;AACO,IAAA,cAAc,CAAC,IAAiB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACvB,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QACnC;AACA,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAC1C;AAEA;;;AAGG;AACO,IAAA,iBAAiB,CAAC,IAAiB,EAAE,KAAoB,EAAE,KAAa,EAAA;AAC9E,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK;QAChB;QACA,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,gBAAgB,IAAI,eAAe;IAC9C;;;AAMA;;;;AAIG;AACO,IAAA,aAAa,CAAC,IAAiB,EAAA;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,OAAO,IAAI;QACf;QAEA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE;AAC1C,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;AAEhE,QAAA,IAAI;YACA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/C;QAAE,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC5E,YAAA,OAAO,IAAI;QACf;IACJ;AAEA;;;AAGG;AACK,IAAA,uBAAuB,CAAC,IAAiB,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAC9B;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,eAAe,GAAG,OAA6C;AACrE,QAAA,IAAI,eAAe,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,eAAe,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE;YACzF,OAAO;AACH,gBAAA,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI;AAClC,gBAAA,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM;aACzC;QACL;QAEA,MAAM,cAAc,GAAG,OAA4B;QACnD,IAAI,cAAc,EAAE,OAAO,IAAI,OAAO,cAAc,CAAC,OAAO,KAAK,QAAQ,EAAE;AACvE,YAAA,MAAM,cAAc,GAAG,cAAc,CAAC,OAAmC;AAEzE,YAAA,IAAI,cAAc,EAAE,IAAI,KAAK,QAAQ,EAAE;AACnC,gBAAA,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc;AAC9D,gBAAA,IAAI,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ,EAAE;oBACzC,OAAO;wBACH,IAAI,EAAE,aAAa,CAAC,IAAI;wBACxB,MAAM,EAAE,aAAa,CAAC,MAAM;qBAC/B;gBACL;YACJ;AAEA,YAAA,IAAI,OAAO,cAAc,EAAE,IAAI,KAAK,QAAQ,EAAE;AAC1C,gBAAA,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE;YACxC;QACJ;AAEA,QAAA,OAAO,IAAI;IACf;AAEA;;;;AAIG;AACK,IAAA,sBAAsB,CAAC,UAAgC,EAAA;AAC3D,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAClB,YAAA,OAAO,KAAK;QAChB;QAEA,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;QAChC,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAK,MAA2B,CAAC,MAAM,KAAK,OAAO,EAAE;AACjD,YAAA,OAAO,KAAK;QAChB;QAEA,MAAM,eAAe,GAA+B,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,CAAC;AACjG,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IACpE;AAEA;;;AAGG;AACK,IAAA,mBAAmB,CAAC,IAAY,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,OAAO;QAClB;QAEA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/E,YAAA,OAAO,OAAO;QAClB;QAEA,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;IACxB;AAEQ,IAAA,oBAAoB,CAAC,IAAY,EAAA;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3C,QAAA,OAAO,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;IAC9E;8GA5MS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,qHCpCvC,qzFAuEA,EAAA,MAAA,EAAA,CAAA,+qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,gBAAgB,wEAChB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,oGACrB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,GAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIR,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBApBtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,IAAA,EAGzB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAA,aAAA,EACZ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EAEtC;wBACL,YAAY;wBACZ,sBAAsB;wBACtB,iBAAiB;wBACjB,gBAAgB;wBAChB,YAAY;wBACZ,mBAAmB;wBACnB,qBAAqB;wBACrB,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,qzFAAA,EAAA,MAAA,EAAA,CAAA,+qCAAA,CAAA,EAAA;;;MEkBQ,gCAAgC,CAAA;AA5B7C,IAAA,WAAA,GAAA;AA8BU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAExC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAahD,IAAA;AAXW,IAAA,qBAAqB,CAAC,KAAc,EAAA;QAC5C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;QAC5B;IACF;AAEU,IAAA,mBAAmB,CAAC,CAA8B,EAAA;AAC1D,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAM,CAAC;QACvC;IACF;8GAlBW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnD7C,+nBAeM,EAAA,MAAA,EAAA,CAAA,s7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDgBF,YAAY,8NACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,8BACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,6HACd,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,0BAA0B,+DAC1B,sBAAsB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGb,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBA5B5C,SAAS;+BACE,4BAA4B,EAAA,aAAA,EAGvB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,cAAc;wBACd,mBAAmB;wBACnB,iBAAiB;wBACjB,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,4BAA4B;wBAC5B,0BAA0B;wBAC1B;AACH,qBAAA,EAAA,QAAA,EAAA,+nBAAA,EAAA,MAAA,EAAA,CAAA,s7CAAA,CAAA,EAAA;;sBAGE,SAAS;uBAAC,QAAQ;;;MEMR,8BAA8B,CAAA;AAUzC,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAExC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAG/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACxF,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE;AACjE,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,mBAAmB,CAAC,CAA8B,EAAA;;AAE1D,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAM,CAAC;QACvC;IACF;8GAvBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,sLC1D3C,8nEAmCM,EAAA,MAAA,EAAA,CAAA,s7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,8BACd,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,cAAc,8BACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,YAAY,8BACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEd,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,+BACf,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,oBAAoB,qVACpB,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,0BAA0B,yDAC1B,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGb,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhC1C,SAAS;+BACE,0BAA0B,EAAA,aAAA,EAGrB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,cAAc;wBACd,mBAAmB;wBACnB,iBAAiB;wBACjB,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,cAAc;wBACd,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,oBAAoB;wBACpB,4BAA4B;wBAC5B,4BAA4B;wBAC5B,0BAA0B;wBAC1B,sBAAsB;AACvB,qBAAA,EAAA,QAAA,EAAA,8nEAAA,EAAA,MAAA,EAAA,CAAA,s7CAAA,CAAA,EAAA;;sBAGA,SAAS;uBAAC,QAAQ;;;MEjCR,sBAAsB,CAAA;AAdnC,IAAA,WAAA,GAAA;AAeY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAEtC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACzB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC/C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AAkC/C,IAAA;IAhCC,QAAQ,GAAA;;QAEN,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;;YAE5G,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,iBAAiB,CAAC;;AAE7D,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAK;AAClE,YAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;AACvC,QAAA,CAAC,CAAC;;QAEF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,OAAO,MAAM,KAAI;;YAG9F,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;YACtE,IAAI,SAAS,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC;gBAChE;YACF;AAEA,YAAA,MAAM,YAAY,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,OAAO,CAAC;AAC7G,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;YACvC;AACF,QAAA,CAAC,CAAC;IACJ;8GAzCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,2DAFtB,CAAC,cAAc,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXlC;;;;;;GAMT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAIS,gCAAgC,uEAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAG/D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,gCAAgC,EAAE,8BAA8B,CAAC;AAC3E,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;AAC7C,iBAAA;;;;;;;;MCvBY,sBAAsB,CAAA;AACjC,IAAA,YAAY,CAAC,KAA6B,EAAA;AACxC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,KAAK,CAAC,KAA6B,EAAE,YAAiC,IAAS;AAE/E,IAAA,YAAY,CAAC,KAA6B,EAAA;AACxC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,QAAQ,CAAC,KAA6B,EAAA;AACpC,QAAA,OAAO,IAAI;IACb;IAEA,gBAAgB,CAAC,MAA8B,EAAE,IAA4B,EAAA;;AAE3E,QAAA,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;AACvD,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;;AAG1C,QAAA,IAAI,WAAW,KAAK,KAAK,EAAE;AACzB,YAAA,OAAO,KAAK;QACd;;AAGA,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACxB,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACnC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;YAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;YAEpE,QAAQ,WAAW;AACjB,gBAAA,KAAK,cAAc;;oBAEjB,OAAO,CAAC,kBAAkB;AAE5B,gBAAA,KAAK,mBAAmB;;oBAEtB,OAAO,CAAC,aAAa;AAEvB,gBAAA,KAAK,2BAA2B;;AAE9B,oBAAA,OAAO,IAAI;AAEb,gBAAA;;AAEE,oBAAA,OAAO,IAAI;;QAEjB;;AAGA,QAAA,OAAO,IAAI;IACb;;AAIA;;AAEG;IACK,iBAAiB,CAAC,MAA8B,EAAE,IAA4B,EAAA;AACpF,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;QAE9B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAExC,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,EAAE;AACzC,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;IACK,sBAAsB,CAAC,MAA8B,EAAE,IAA4B,EAAA;AACzF,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW;AAC5C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW;QAExC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAE7C,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC5B,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE;AACnD,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAGD;;ACxGD,SAAS,YAAY,GAAA;AACnB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC9C,IAAA,IAAI,MAAM,GAAW;AACnB,QAAA;AACE,YAAA,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,CAAC,YAAY,CAAC;YAC3B,aAAa,EAAE,MAAK;AAClB,gBAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YAC9B,CAAC;;;;;;;;;;;AAWF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,aAAa,EAAE,MACb,OAAO,uEAAsD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC;AACzG,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,aAAa,EAAE,MACb,OAAO,mEAA8C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC7F,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,aAAa,EAAE,MACb,OAAO,mEAA8C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AAC7F,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACD,IAAA,OAAO,MAAM;AACf;MAiDa,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAArB,qBAAqB,EAAA,OAAA,EAAA,CA9CtB,eAAe,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;AA8CrC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,SAAA,EA3CrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;gBAChC,UAAU,EAAE,MAAK;AACf,oBAAA,MAAM,MAAM,GAAG;AACb,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,MAAM,oEAAqD,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC;AACvG,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,MACN,OAAO,mFAAwF,CAAC,CAAC,IAAI,CACnG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACH,gCAAA,OAAO,EAAE,MAAM,OAAO,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;;AAEnG,gCAAA,MAAM,EAAE,MACN,OAAO,mFAAwF,CAAC,CAAC,IAAI,CACnG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;;AAEH,gCAAA,MAAM,EAAE,MACN,OAAO,mFAAwF,CAAC,CAAC,IAAI,CACnG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;;AAEH,gCAAA,IAAI,EAAE,MACJ,8EAA4F,CAAC,IAAI,CAC/F,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAC1C;AACJ,6BAAA;AACF,yBAAA;qBACkB;AACrB,oBAAA,OAAO,MAAM;gBACf,CAAC;AACF,aAAA;AAED,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AACjE,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;SACF,EAAA,OAAA,EAAA,CA5CS,eAAe,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FA8CrC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA/CjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC;AACjD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;4BAChC,UAAU,EAAE,MAAK;AACf,gCAAA,MAAM,MAAM,GAAG;AACb,oCAAA,OAAO,EAAE;AACP,wCAAA,IAAI,EAAE,MAAM,oEAAqD,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC;AACvG,wCAAA,MAAM,EAAE;AACN,4CAAA,MAAM,EAAE,MACN,OAAO,mFAAwF,CAAC,CAAC,IAAI,CACnG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACH,4CAAA,OAAO,EAAE,MAAM,OAAO,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;;AAEnG,4CAAA,MAAM,EAAE,MACN,OAAO,mFAAwF,CAAC,CAAC,IAAI,CACnG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;;AAEH,4CAAA,MAAM,EAAE,MACN,OAAO,mFAAwF,CAAC,CAAC,IAAI,CACnG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;;AAEH,4CAAA,IAAI,EAAE,MACJ,8EAA4F,CAAC,IAAI,CAC/F,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAC1C;AACJ,yCAAA;AACF,qCAAA;iCACkB;AACrB,gCAAA,OAAO,MAAM;4BACf,CAAC;AACF,yBAAA;AAED,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AACjE,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,YAAY;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AClGD;;AAEG;;;;"}
|