aril 1.0.12 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/boot/config/apps/src/apps.service.mjs +4 -2
- package/esm2022/keycloak/index.mjs +1 -2
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +3 -3
- package/esm2022/ui/table/src/table.component.mjs +4 -4
- package/fesm2022/aril-boot-config-apps.mjs +3 -1
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +3 -53
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +2 -2
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +3 -3
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/keycloak/index.d.ts +0 -1
- package/package.json +150 -150
- package/theme/layout/app/expandableMenu/expandable-menu.component.html +0 -6
- package/theme/layout/app/expandableMenu/expandable-menu.component.ts +2 -3
- package/theme/styles/layout/_expanded_sidebar.scss +314 -147
- package/theme/styles/layout/_responsive.scss +0 -1
- package/theme/styles/theme/light/custom/theme.scss +3 -3
- package/esm2022/keycloak/src/auth.guard.mjs +0 -52
- package/keycloak/src/auth.guard.d.ts +0 -11
- package/theme/layout/app/expandableMenu/expandable-menu.component.scss +0 -715
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable, inject, isDevMode } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { WebComponentWrapper, startsWith } from '@angular-architects/module-federation-tools';
|
|
4
|
+
import { KeycloakAuthGuard } from 'keycloak-angular';
|
|
4
5
|
import { catchError, of, tap } from 'rxjs';
|
|
5
6
|
import { NotFoundComponent } from 'aril/util/custom_pages';
|
|
6
7
|
import { ShadowDOMWrapperComponent } from './showdowDOMWrapper';
|
|
@@ -26,7 +27,8 @@ export class MicroAppService {
|
|
|
26
27
|
return {
|
|
27
28
|
matcher: startsWith(options.remoteName),
|
|
28
29
|
component: options.shadowDomPassive ? WebComponentWrapper : ShadowDOMWrapperComponent,
|
|
29
|
-
data: options
|
|
30
|
+
data: options,
|
|
31
|
+
canActivate: [KeycloakAuthGuard]
|
|
30
32
|
};
|
|
31
33
|
});
|
|
32
34
|
return routes;
|
|
@@ -44,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
44
46
|
type: Injectable,
|
|
45
47
|
args: [{ providedIn: 'root' }]
|
|
46
48
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUczRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFUyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBc0NoQztJQXBDQSxJQUFJLENBQUMsVUFBc0IsRUFBRSxPQUFlO1FBQzNDLE9BQU8sVUFBVTthQUNmLEdBQUcsQ0FBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQzthQUNyRyxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM3QyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBdUI7UUFDbEMsTUFBTSxNQUFNLEdBQVcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlDLE9BQU87Z0JBQ04sT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUN2QyxTQUFTLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCO2dCQUNyRixJQUFJLEVBQUUsT0FBcUM7Z0JBQzNDLFdBQVcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQ2hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QjtRQUM3QixVQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDaEcsR0FBRyxLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0F0Q1csZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuXHRXZWJDb21wb25lbnRXcmFwcGVyLFxyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zLFxyXG5cdHN0YXJ0c1dpdGhcclxufSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRoR3VhcmQgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICdhcmlsL3V0aWwvY3VzdG9tX3BhZ2VzJztcclxuXHJcbmltcG9ydCB7IEFwcHNEVE8sIFBsdWdpbkNvbmZpZywgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93RE9NV3JhcHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWljcm9BcHBTZXJ2aWNlIHtcclxuXHRwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cclxuXHRpbml0KGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGhvc3RBUEk6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIGh0dHBDbGllbnRcclxuXHRcdFx0LmdldDxBcHBzRFRPPihpc0Rldk1vZGUoKSA/ICcuL2Fzc2V0cy9sb2NhbC1jb25maWdzL2FwcC5sb2NhbC5qc29uJyA6IGhvc3RBUEkgKyAnL3VpLXNpZGViYXItY29uZmlncycpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHRhcCgoYXBwcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3Qgcm91dGVzID0gdGhpcy5idWlsZFJvdXRlcyhbLi4uYXBwcy5tb2R1bGVzLCAuLi5hcHBzLnBsdWdpbnNdKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLnJvdXRlci5yZXNldENvbmZpZyhbLi4udGhpcy5yb3V0ZXIuY29uZmlnLCAuLi5yb3V0ZXMsIHsgcGF0aDogJyoqJywgY29tcG9uZW50OiBOb3RGb3VuZENvbXBvbmVudCB9XSk7XHJcblx0XHRcdFx0XHR0aGlzLnNldE1lbnVJdGVtcyhhcHBzLm1lbnVJdGVtcyk7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3IgTWljcm8gQXBwcyBMb2FkaW5nJywgZXJyKTtcclxuXHRcdFx0XHRcdHJldHVybiBvZigpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdCk7XHJcblx0fVxyXG5cclxuXHRidWlsZFJvdXRlcyhvcHRpb25zOiBQbHVnaW5Db25maWdbXSk6IFJvdXRlcyB7XHJcblx0XHRjb25zdCByb3V0ZXM6IFJvdXRlcyA9IG9wdGlvbnMubWFwKChvcHRpb25zKSA9PiB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0bWF0Y2hlcjogc3RhcnRzV2l0aChvcHRpb25zLnJlbW90ZU5hbWUpLFxyXG5cdFx0XHRcdGNvbXBvbmVudDogb3B0aW9ucy5zaGFkb3dEb21QYXNzaXZlID8gV2ViQ29tcG9uZW50V3JhcHBlciA6IFNoYWRvd0RPTVdyYXBwZXJDb21wb25lbnQsXHJcblx0XHRcdFx0ZGF0YTogb3B0aW9ucyBhcyBXZWJDb21wb25lbnRXcmFwcGVyT3B0aW9ucyxcclxuXHRcdFx0XHRjYW5BY3RpdmF0ZTogW0tleWNsb2FrQXV0aEd1YXJkXVxyXG5cdFx0XHR9O1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIHJvdXRlcztcclxuXHR9XHJcblxyXG5cdHNldE1lbnVJdGVtcyhpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdFx0KDxhbnk+Z2xvYmFsVGhpcykuaG9zdE1lbnVJdGVtcy5zZXQoW1xyXG5cdFx0XHR7IHJvb3Q6IHRydWUsIGxhYmVsOiB7IHRyOiAnQW5hc2F5ZmEnLCBlbjogJ0hvbWUnIH0sIGljb246ICdwaSBwaS1mdyBwaS1ob21lJywgcm91dGVyTGluazogJy8nIH0sXHJcblx0XHRcdC4uLml0ZW1zXHJcblx0XHRdKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export * from './src/auth.interceptor';
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2tleWNsb2FrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL2F1dGguaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hdXRoLmd1YXJkJzsiXX0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2tleWNsb2FrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9hdXRoLmludGVyY2VwdG9yJzsiXX0=
|
|
@@ -236,13 +236,13 @@ export class ExpandableMenuComponent {
|
|
|
236
236
|
return this.translateJsonPipe.transform(text);
|
|
237
237
|
}
|
|
238
238
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1.TranslateJsonPipe }, { token: i2.AppMenuService }, { token: i3.Router }, { token: i4.KeycloakService }, { token: i5.TranslocoService }, { token: i6.LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
239
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\">\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\">\r\n\t\t<div class=\"main-sidebar-header\">\r\n\t\t\t<div class=\"user-avatar\">\r\n\t\t\t\t<span>{{ username }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(item.label, activeLang(), 'main') ? (item.label && activeLang() ? item.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<!-- Toggle button at the bottom of main sidebar -->\r\n\t\t<div class=\"main-sidebar-footer\">\r\n\t\t\t<button class=\"sidebar-toggle-button\" (click)=\"toggleSecondarySidebar()\" \r\n\t\t\t\t[pTooltip]=\"!isMobile() ? (secondarySidebarExpanded ? getLocalText(tooltipText.toggleButton.expanded) : getLocalText(tooltipText.toggleButton.collapsed)) : ''\" \r\n\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t<i class=\"pi\" [ngClass]=\"secondarySidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': secondarySidebarExpanded}\">\r\n\t\t<!-- Content container wrapper to prevent jumps during transitions -->\r\n\t\t<div class=\"secondary-content-wrapper\">\r\n\t\t\t<!-- Secondary sidebar header -->\r\n\t\t\t<div class=\"secondary-sidebar-header\">\r\n\t\t\t\t<div class=\"secondary-header-content\">\r\n\t\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t\t<h3 class=\"section-title\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"selectedMainMenuItem.icon\" class=\"section-icon\"></i>\r\n\t\t\t\t\t\t\t<span>{{ selectedMainMenuItem.label && activeLang() ? selectedMainMenuItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t<button class=\"sidebar-lock-button\" (click)=\"toggleSidebarLock()\" \r\n\t\t\t\t\t\t[pTooltip]=\"sidebarIsLocked ? getLocalText(tooltipText.lockButton.locked) : getLocalText(tooltipText.lockButton.unlocked)\" \r\n\t\t\t\t\t\ttooltipPosition=\"left\">\r\n\t\t\t\t\t\t<i class=\"pi\" [ngClass]=\"sidebarIsLocked ? 'pi-lock' : 'pi-lock-open'\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Create menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-angle-down submenu-toggle\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-angle-down submenu-toggle\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", styles: [".new-layout-sidebar{display:flex;position:fixed;top:0;left:0;height:100%;z-index:1000;transition:transform .2s cubic-bezier(.4,0,.2,1)}.new-layout-sidebar .main-sidebar{width:64px;height:100%;background-color:#f8f9fa;border-right:1px solid #e9ecef;display:flex;flex-direction:column;align-items:center;box-shadow:none;z-index:2}.new-layout-sidebar .main-sidebar .main-sidebar-header{padding:16px 0;width:100%;display:flex;justify-content:center}.new-layout-sidebar .main-sidebar .main-sidebar-header .user-avatar{width:40px;height:40px;border-radius:50%;background-color:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:500;box-shadow:0 2px 4px #0000001a}.new-layout-sidebar .main-sidebar .main-sidebar-header .user-avatar span{font-size:18px}.new-layout-sidebar .main-sidebar .main-sidebar-content{padding:8px 0;width:100%;flex:1;overflow-y:auto}.new-layout-sidebar .main-sidebar .main-sidebar-content::-webkit-scrollbar{width:3px}.new-layout-sidebar .main-sidebar .main-sidebar-content::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:3px}.new-layout-sidebar .main-sidebar .main-sidebar-content::-webkit-scrollbar-track{background-color:transparent}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu{list-style:none;padding:0;margin:0;width:100%}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li{width:100%;cursor:pointer;position:relative;overflow:hidden;margin-bottom:4px}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li .main-menu-item{display:flex;flex-direction:column;align-items:center;padding:12px 0;color:var(--text-muted);transition:all .2s ease}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li .main-menu-item .menu-icon{font-size:24px;margin-bottom:6px;transition:color .2s ease}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li .main-menu-item .menu-label{font-size:11px;font-weight:500;text-align:center;line-height:1.2;transition:color .2s ease;max-width:55px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li:hover .main-menu-item{color:var(--primary-color)}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li:hover:after{content:\"\";position:absolute;left:0;top:0;width:4px;height:100%;background-color:var(--primary-color);opacity:.9}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li.active{background-color:var(--primary-color)!important;position:relative}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li.active:before{content:\"\";position:absolute;left:0;top:0;width:4px;height:100%;background-color:var(--primary-color)}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li.active .main-menu-item{color:#fff!important}.new-layout-sidebar .main-sidebar .main-sidebar-footer{width:100%;padding:12px 0;display:flex;justify-content:center;align-items:center;border-top:1px solid rgba(0,0,0,.05)}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button{width:32px;height:32px;border-radius:4px;background-color:transparent;border:none;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;outline:none}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button:hover{background-color:#00000008;color:var(--primary-color)}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button:active{background-color:#0000000d}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button .pi{font-size:14px}.new-layout-sidebar .secondary-sidebar{width:0;height:100%;background-color:var(--bg-light);position:relative;transition:width .2s cubic-bezier(.4,0,.2,1);box-shadow:2px 0 5px #0000000d;z-index:1;overflow:hidden}.new-layout-sidebar .secondary-sidebar .secondary-content-wrapper{position:absolute;top:0;left:0;width:240px;height:100%;display:flex;flex-direction:column;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease}.new-layout-sidebar .secondary-sidebar.expanded{width:240px}.new-layout-sidebar .secondary-sidebar.expanded .secondary-content-wrapper{opacity:1;visibility:visible;pointer-events:auto}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header{height:70px;padding:0 16px;display:flex;align-items:center;border-bottom:1px solid var(--border-color);background-color:var(--bg-white);flex-shrink:0}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content{width:100%;display:flex;align-items:center;justify-content:space-between}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .section-title{font-size:15px;font-weight:600;color:var(--text-dark);margin:0;padding:0 8px;white-space:nowrap;display:flex;align-items:center}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .section-title .section-icon{font-size:18px;margin-right:12px;color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .section-title span{flex:1}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button{width:28px;height:28px;border-radius:4px;background-color:transparent;border:none;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;outline:none;padding:0;margin-left:8px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button .pi{font-size:14px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button:hover{background-color:#00000008;color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button:active{background-color:#0000000d}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content{padding:12px;flex:1;overflow-y:auto}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content::-webkit-scrollbar{width:3px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:3px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content::-webkit-scrollbar-track{background-color:transparent}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu{list-style:none;padding:0;margin:0}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item{margin-bottom:4px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link{display:flex;align-items:center;padding:10px 12px;border-radius:4px;color:var(--text-dark);text-decoration:none;transition:background-color .2s ease,color .2s ease;white-space:nowrap;position:relative}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link .submenu-icon{font-size:18px;margin-right:12px;color:var(--text-muted);flex-shrink:0;position:relative;transition:color .2s ease}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link .submenu-label{flex:1;font-size:14px;font-weight:500;color:var(--text-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;transition:color .2s ease;max-width:160px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link .submenu-toggle{font-size:14px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0;position:relative}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link{color:var(--primary-color);background-color:#1a365d0a}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link .submenu-icon,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link .submenu-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link .submenu-toggle{color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link{background-color:var(--primary-color)!important;color:#fff!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link .submenu-icon,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link .submenu-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link .submenu-toggle{color:#fff!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu{list-style:none;padding:0;margin:4px 0 8px 10px;max-height:1000px;overflow:hidden;transition:max-height .3s ease}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu.always-open{display:block!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item{margin-bottom:3px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:before{display:none}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item .tertiary-menu-link{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:4px;color:var(--text-dark);text-decoration:none;font-size:13.5px;font-weight:500;transition:background-color .2s ease,color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item .tertiary-menu-link .tertiary-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dark)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item .tertiary-menu-link .submenu-toggle{font-size:12px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link{color:var(--primary-color);background-color:#1a365d0a}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .tertiary-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .submenu-toggle{color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item.active .tertiary-menu-link{color:#fff!important;background-color:var(--primary-color)!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .tertiary-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .submenu-toggle{color:#fff!important}.secondary-menu-item.active .secondary-menu-link,.tertiary-menu-item.active .tertiary-menu-link{background-color:var(--primary-color)!important;color:#fff!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.main-menu li.active{background-color:var(--primary-color)!important}.main-menu li.active .main-menu-item{color:#fff!important}.submenu-label,.tertiary-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dark)}.menu-label{max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.secondary-menu-link:hover,.tertiary-menu-link:hover{background-color:#1a365d0a!important;transition:background-color .2s ease}.main-sidebar-content::-webkit-scrollbar,.secondary-sidebar-content::-webkit-scrollbar{width:3px}.main-sidebar-content::-webkit-scrollbar-thumb,.secondary-sidebar-content::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:3px}.main-sidebar-content::-webkit-scrollbar-track,.secondary-sidebar-content::-webkit-scrollbar-track{background-color:transparent}@media screen and (max-width: 991px){.new-layout-sidebar{transform:translate(-100%);box-shadow:0 0 15px #0003!important}.new-layout-sidebar .secondary-sidebar.expanded{width:240px}}:host-context(.layout-mobile-active) .new-layout-sidebar{transform:translate(0)!important}.layout-mobile-active .new-layout-sidebar{transform:translate(0)!important}.layout-mask{display:none}.layout-mobile-active .layout-mask{display:block}.tertiary-menu{list-style:none;padding:0;margin:4px 0 8px 10px;max-height:1000px;overflow:hidden;transition:max-height .3s ease}.tertiary-menu.always-open{display:block!important}.tertiary-menu .tertiary-menu-item{margin-bottom:3px}.tertiary-menu .tertiary-menu-item:before{display:none}.tertiary-menu .tertiary-menu-item .tertiary-menu-link{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:4px;color:var(--text-dark);text-decoration:none;font-size:13.5px;font-weight:500;transition:background-color .2s ease,color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}.tertiary-menu .tertiary-menu-item .tertiary-menu-link .tertiary-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dark)}.tertiary-menu .tertiary-menu-item .tertiary-menu-link .submenu-toggle{font-size:12px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link{color:var(--primary-color);background-color:#1a365d0a}.tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .tertiary-label,.tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .submenu-toggle{color:var(--primary-color)}.tertiary-menu .tertiary-menu-item.active .tertiary-menu-link{color:#fff!important;background-color:var(--primary-color)!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .tertiary-label,.tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .submenu-toggle{color:#fff!important}.nested-menu{padding:0 0 0 10px;list-style:none;overflow:hidden;max-height:1000px;margin:4px 0 6px 10px}.nested-menu.always-open{display:block!important}.nested-menu.level-1,.nested-menu.level-2,.nested-menu.level-3,.nested-menu.level-4,.nested-menu.level-5,.nested-menu.level-6{padding-left:10px}.nested-menu-item{position:relative;margin:3px 0}.nested-menu-item:before{display:none}.nested-menu-item .nested-menu-link{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;color:var(--text-color);text-decoration:none;font-size:13px;border-radius:4px;transition:all .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nested-menu-item .nested-menu-link .nested-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}.nested-menu-item .nested-menu-link .submenu-toggle{font-size:12px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.nested-menu-item:hover .nested-menu-link{background-color:#1a365d0a;color:var(--primary-color)}.nested-menu-item:hover .nested-menu-link .nested-label,.nested-menu-item:hover .nested-menu-link .submenu-toggle{color:var(--primary-color)}.nested-menu-item.active>.nested-menu-link{color:#fff!important;background-color:var(--primary-color)!important;font-weight:500!important}.nested-menu-item.active>.nested-menu-link .nested-label,.nested-menu-item.active>.nested-menu-link .submenu-toggle{color:#fff!important}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
|
|
239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\">\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\">\r\n\t\t<div class=\"main-sidebar-header\">\r\n\t\t\t<div class=\"user-avatar\">\r\n\t\t\t\t<span>{{ username }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(item.label, activeLang(), 'main') ? (item.label && activeLang() ? item.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<!-- Toggle button at the bottom of main sidebar -->\r\n\t\t<div class=\"main-sidebar-footer\">\r\n\t\t\t<button class=\"sidebar-toggle-button\" (click)=\"toggleSecondarySidebar()\" \r\n\t\t\t\t[pTooltip]=\"!isMobile() ? (secondarySidebarExpanded ? getLocalText(tooltipText.toggleButton.expanded) : getLocalText(tooltipText.toggleButton.collapsed)) : ''\" \r\n\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t<i class=\"pi\" [ngClass]=\"secondarySidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': secondarySidebarExpanded}\">\r\n\t\t<!-- Content container wrapper to prevent jumps during transitions -->\r\n\t\t<div class=\"secondary-content-wrapper\">\r\n\t\t\t<!-- Secondary sidebar header -->\r\n\t\t\t<div class=\"secondary-sidebar-header\">\r\n\t\t\t\t<div class=\"secondary-header-content\">\r\n\t\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t\t<h3 class=\"section-title\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"selectedMainMenuItem.icon\" class=\"section-icon\"></i>\r\n\t\t\t\t\t\t\t<span>{{ selectedMainMenuItem.label && activeLang() ? selectedMainMenuItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t<button class=\"sidebar-lock-button\" (click)=\"toggleSidebarLock()\" \r\n\t\t\t\t\t\t[pTooltip]=\"sidebarIsLocked ? getLocalText(tooltipText.lockButton.locked) : getLocalText(tooltipText.lockButton.unlocked)\" \r\n\t\t\t\t\t\ttooltipPosition=\"left\">\r\n\t\t\t\t\t\t<i class=\"pi\" [ngClass]=\"sidebarIsLocked ? 'pi-lock' : 'pi-lock-open'\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Create menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
|
|
240
240
|
}
|
|
241
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
|
|
242
242
|
type: Component,
|
|
243
|
-
args: [{ standalone: true, selector: 'app-expandable-menu', imports: [RouterLink, NgClass, TooltipModule], providers: [TranslateJsonPipe], template: "<div class=\"new-layout-sidebar\">\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\">\r\n\t\t<div class=\"main-sidebar-header\">\r\n\t\t\t<div class=\"user-avatar\">\r\n\t\t\t\t<span>{{ username }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(item.label, activeLang(), 'main') ? (item.label && activeLang() ? item.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<!-- Toggle button at the bottom of main sidebar -->\r\n\t\t<div class=\"main-sidebar-footer\">\r\n\t\t\t<button class=\"sidebar-toggle-button\" (click)=\"toggleSecondarySidebar()\" \r\n\t\t\t\t[pTooltip]=\"!isMobile() ? (secondarySidebarExpanded ? getLocalText(tooltipText.toggleButton.expanded) : getLocalText(tooltipText.toggleButton.collapsed)) : ''\" \r\n\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t<i class=\"pi\" [ngClass]=\"secondarySidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': secondarySidebarExpanded}\">\r\n\t\t<!-- Content container wrapper to prevent jumps during transitions -->\r\n\t\t<div class=\"secondary-content-wrapper\">\r\n\t\t\t<!-- Secondary sidebar header -->\r\n\t\t\t<div class=\"secondary-sidebar-header\">\r\n\t\t\t\t<div class=\"secondary-header-content\">\r\n\t\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t\t<h3 class=\"section-title\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"selectedMainMenuItem.icon\" class=\"section-icon\"></i>\r\n\t\t\t\t\t\t\t<span>{{ selectedMainMenuItem.label && activeLang() ? selectedMainMenuItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t<button class=\"sidebar-lock-button\" (click)=\"toggleSidebarLock()\" \r\n\t\t\t\t\t\t[pTooltip]=\"sidebarIsLocked ? getLocalText(tooltipText.lockButton.locked) : getLocalText(tooltipText.lockButton.unlocked)\" \r\n\t\t\t\t\t\ttooltipPosition=\"left\">\r\n\t\t\t\t\t\t<i class=\"pi\" [ngClass]=\"sidebarIsLocked ? 'pi-lock' : 'pi-lock-open'\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Create menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-angle-down submenu-toggle\"></i>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-angle-down submenu-toggle\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", styles: [".new-layout-sidebar{display:flex;position:fixed;top:0;left:0;height:100%;z-index:1000;transition:transform .2s cubic-bezier(.4,0,.2,1)}.new-layout-sidebar .main-sidebar{width:64px;height:100%;background-color:#f8f9fa;border-right:1px solid #e9ecef;display:flex;flex-direction:column;align-items:center;box-shadow:none;z-index:2}.new-layout-sidebar .main-sidebar .main-sidebar-header{padding:16px 0;width:100%;display:flex;justify-content:center}.new-layout-sidebar .main-sidebar .main-sidebar-header .user-avatar{width:40px;height:40px;border-radius:50%;background-color:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:500;box-shadow:0 2px 4px #0000001a}.new-layout-sidebar .main-sidebar .main-sidebar-header .user-avatar span{font-size:18px}.new-layout-sidebar .main-sidebar .main-sidebar-content{padding:8px 0;width:100%;flex:1;overflow-y:auto}.new-layout-sidebar .main-sidebar .main-sidebar-content::-webkit-scrollbar{width:3px}.new-layout-sidebar .main-sidebar .main-sidebar-content::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:3px}.new-layout-sidebar .main-sidebar .main-sidebar-content::-webkit-scrollbar-track{background-color:transparent}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu{list-style:none;padding:0;margin:0;width:100%}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li{width:100%;cursor:pointer;position:relative;overflow:hidden;margin-bottom:4px}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li .main-menu-item{display:flex;flex-direction:column;align-items:center;padding:12px 0;color:var(--text-muted);transition:all .2s ease}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li .main-menu-item .menu-icon{font-size:24px;margin-bottom:6px;transition:color .2s ease}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li .main-menu-item .menu-label{font-size:11px;font-weight:500;text-align:center;line-height:1.2;transition:color .2s ease;max-width:55px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li:hover .main-menu-item{color:var(--primary-color)}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li:hover:after{content:\"\";position:absolute;left:0;top:0;width:4px;height:100%;background-color:var(--primary-color);opacity:.9}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li.active{background-color:var(--primary-color)!important;position:relative}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li.active:before{content:\"\";position:absolute;left:0;top:0;width:4px;height:100%;background-color:var(--primary-color)}.new-layout-sidebar .main-sidebar .main-sidebar-content .main-menu li.active .main-menu-item{color:#fff!important}.new-layout-sidebar .main-sidebar .main-sidebar-footer{width:100%;padding:12px 0;display:flex;justify-content:center;align-items:center;border-top:1px solid rgba(0,0,0,.05)}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button{width:32px;height:32px;border-radius:4px;background-color:transparent;border:none;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;outline:none}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button:hover{background-color:#00000008;color:var(--primary-color)}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button:active{background-color:#0000000d}.new-layout-sidebar .main-sidebar .main-sidebar-footer .sidebar-toggle-button .pi{font-size:14px}.new-layout-sidebar .secondary-sidebar{width:0;height:100%;background-color:var(--bg-light);position:relative;transition:width .2s cubic-bezier(.4,0,.2,1);box-shadow:2px 0 5px #0000000d;z-index:1;overflow:hidden}.new-layout-sidebar .secondary-sidebar .secondary-content-wrapper{position:absolute;top:0;left:0;width:240px;height:100%;display:flex;flex-direction:column;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease}.new-layout-sidebar .secondary-sidebar.expanded{width:240px}.new-layout-sidebar .secondary-sidebar.expanded .secondary-content-wrapper{opacity:1;visibility:visible;pointer-events:auto}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header{height:70px;padding:0 16px;display:flex;align-items:center;border-bottom:1px solid var(--border-color);background-color:var(--bg-white);flex-shrink:0}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content{width:100%;display:flex;align-items:center;justify-content:space-between}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .section-title{font-size:15px;font-weight:600;color:var(--text-dark);margin:0;padding:0 8px;white-space:nowrap;display:flex;align-items:center}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .section-title .section-icon{font-size:18px;margin-right:12px;color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .section-title span{flex:1}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button{width:28px;height:28px;border-radius:4px;background-color:transparent;border:none;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;outline:none;padding:0;margin-left:8px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button .pi{font-size:14px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button:hover{background-color:#00000008;color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-header .secondary-header-content .sidebar-lock-button:active{background-color:#0000000d}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content{padding:12px;flex:1;overflow-y:auto}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content::-webkit-scrollbar{width:3px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:3px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content::-webkit-scrollbar-track{background-color:transparent}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu{list-style:none;padding:0;margin:0}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item{margin-bottom:4px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link{display:flex;align-items:center;padding:10px 12px;border-radius:4px;color:var(--text-dark);text-decoration:none;transition:background-color .2s ease,color .2s ease;white-space:nowrap;position:relative}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link .submenu-icon{font-size:18px;margin-right:12px;color:var(--text-muted);flex-shrink:0;position:relative;transition:color .2s ease}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link .submenu-label{flex:1;font-size:14px;font-weight:500;color:var(--text-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;transition:color .2s ease;max-width:160px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .secondary-menu-link .submenu-toggle{font-size:14px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0;position:relative}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link{color:var(--primary-color);background-color:#1a365d0a}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link .submenu-icon,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link .submenu-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item:hover .secondary-menu-link .submenu-toggle{color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link{background-color:var(--primary-color)!important;color:#fff!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link .submenu-icon,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link .submenu-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item.active>.secondary-menu-link .submenu-toggle{color:#fff!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu{list-style:none;padding:0;margin:4px 0 8px 10px;max-height:1000px;overflow:hidden;transition:max-height .3s ease}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu.always-open{display:block!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item{margin-bottom:3px}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:before{display:none}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item .tertiary-menu-link{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:4px;color:var(--text-dark);text-decoration:none;font-size:13.5px;font-weight:500;transition:background-color .2s ease,color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item .tertiary-menu-link .tertiary-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dark)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item .tertiary-menu-link .submenu-toggle{font-size:12px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link{color:var(--primary-color);background-color:#1a365d0a}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .tertiary-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .submenu-toggle{color:var(--primary-color)}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item.active .tertiary-menu-link{color:#fff!important;background-color:var(--primary-color)!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .tertiary-label,.new-layout-sidebar .secondary-sidebar .secondary-sidebar-content .secondary-menu .secondary-menu-item .tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .submenu-toggle{color:#fff!important}.secondary-menu-item.active .secondary-menu-link,.tertiary-menu-item.active .tertiary-menu-link{background-color:var(--primary-color)!important;color:#fff!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.main-menu li.active{background-color:var(--primary-color)!important}.main-menu li.active .main-menu-item{color:#fff!important}.submenu-label,.tertiary-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dark)}.menu-label{max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.secondary-menu-link:hover,.tertiary-menu-link:hover{background-color:#1a365d0a!important;transition:background-color .2s ease}.main-sidebar-content::-webkit-scrollbar,.secondary-sidebar-content::-webkit-scrollbar{width:3px}.main-sidebar-content::-webkit-scrollbar-thumb,.secondary-sidebar-content::-webkit-scrollbar-thumb{background-color:#00000026;border-radius:3px}.main-sidebar-content::-webkit-scrollbar-track,.secondary-sidebar-content::-webkit-scrollbar-track{background-color:transparent}@media screen and (max-width: 991px){.new-layout-sidebar{transform:translate(-100%);box-shadow:0 0 15px #0003!important}.new-layout-sidebar .secondary-sidebar.expanded{width:240px}}:host-context(.layout-mobile-active) .new-layout-sidebar{transform:translate(0)!important}.layout-mobile-active .new-layout-sidebar{transform:translate(0)!important}.layout-mask{display:none}.layout-mobile-active .layout-mask{display:block}.tertiary-menu{list-style:none;padding:0;margin:4px 0 8px 10px;max-height:1000px;overflow:hidden;transition:max-height .3s ease}.tertiary-menu.always-open{display:block!important}.tertiary-menu .tertiary-menu-item{margin-bottom:3px}.tertiary-menu .tertiary-menu-item:before{display:none}.tertiary-menu .tertiary-menu-item .tertiary-menu-link{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:4px;color:var(--text-dark);text-decoration:none;font-size:13.5px;font-weight:500;transition:background-color .2s ease,color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}.tertiary-menu .tertiary-menu-item .tertiary-menu-link .tertiary-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dark)}.tertiary-menu .tertiary-menu-item .tertiary-menu-link .submenu-toggle{font-size:12px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link{color:var(--primary-color);background-color:#1a365d0a}.tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .tertiary-label,.tertiary-menu .tertiary-menu-item:hover .tertiary-menu-link .submenu-toggle{color:var(--primary-color)}.tertiary-menu .tertiary-menu-item.active .tertiary-menu-link{color:#fff!important;background-color:var(--primary-color)!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .tertiary-label,.tertiary-menu .tertiary-menu-item.active .tertiary-menu-link .submenu-toggle{color:#fff!important}.nested-menu{padding:0 0 0 10px;list-style:none;overflow:hidden;max-height:1000px;margin:4px 0 6px 10px}.nested-menu.always-open{display:block!important}.nested-menu.level-1,.nested-menu.level-2,.nested-menu.level-3,.nested-menu.level-4,.nested-menu.level-5,.nested-menu.level-6{padding-left:10px}.nested-menu-item{position:relative;margin:3px 0}.nested-menu-item:before{display:none}.nested-menu-item .nested-menu-link{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;color:var(--text-color);text-decoration:none;font-size:13px;border-radius:4px;transition:all .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nested-menu-item .nested-menu-link .nested-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}.nested-menu-item .nested-menu-link .submenu-toggle{font-size:12px;color:var(--text-muted);transition:transform .2s ease;flex-shrink:0}.nested-menu-item:hover .nested-menu-link{background-color:#1a365d0a;color:var(--primary-color)}.nested-menu-item:hover .nested-menu-link .nested-label,.nested-menu-item:hover .nested-menu-link .submenu-toggle{color:var(--primary-color)}.nested-menu-item.active>.nested-menu-link{color:#fff!important;background-color:var(--primary-color)!important;font-weight:500!important}.nested-menu-item.active>.nested-menu-link .nested-label,.nested-menu-item.active>.nested-menu-link .submenu-toggle{color:#fff!important}\n"] }]
|
|
243
|
+
args: [{ standalone: true, selector: 'app-expandable-menu', imports: [RouterLink, NgClass, TooltipModule], providers: [TranslateJsonPipe], template: "<div class=\"new-layout-sidebar\">\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\">\r\n\t\t<div class=\"main-sidebar-header\">\r\n\t\t\t<div class=\"user-avatar\">\r\n\t\t\t\t<span>{{ username }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(item.label, activeLang(), 'main') ? (item.label && activeLang() ? item.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t\t<!-- Toggle button at the bottom of main sidebar -->\r\n\t\t<div class=\"main-sidebar-footer\">\r\n\t\t\t<button class=\"sidebar-toggle-button\" (click)=\"toggleSecondarySidebar()\" \r\n\t\t\t\t[pTooltip]=\"!isMobile() ? (secondarySidebarExpanded ? getLocalText(tooltipText.toggleButton.expanded) : getLocalText(tooltipText.toggleButton.collapsed)) : ''\" \r\n\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t<i class=\"pi\" [ngClass]=\"secondarySidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': secondarySidebarExpanded}\">\r\n\t\t<!-- Content container wrapper to prevent jumps during transitions -->\r\n\t\t<div class=\"secondary-content-wrapper\">\r\n\t\t\t<!-- Secondary sidebar header -->\r\n\t\t\t<div class=\"secondary-sidebar-header\">\r\n\t\t\t\t<div class=\"secondary-header-content\">\r\n\t\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t\t<h3 class=\"section-title\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"selectedMainMenuItem.icon\" class=\"section-icon\"></i>\r\n\t\t\t\t\t\t\t<span>{{ selectedMainMenuItem.label && activeLang() ? selectedMainMenuItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t</h3>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t<button class=\"sidebar-lock-button\" (click)=\"toggleSidebarLock()\" \r\n\t\t\t\t\t\t[pTooltip]=\"sidebarIsLocked ? getLocalText(tooltipText.lockButton.locked) : getLocalText(tooltipText.lockButton.unlocked)\" \r\n\t\t\t\t\t\ttooltipPosition=\"left\">\r\n\t\t\t\t\t\t<i class=\"pi\" [ngClass]=\"sidebarIsLocked ? 'pi-lock' : 'pi-lock-open'\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Create menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n" }]
|
|
244
244
|
}], ctorParameters: () => [{ type: i1.TranslateJsonPipe }, { type: i2.AppMenuService }, { type: i3.Router }, { type: i4.KeycloakService }, { type: i5.TranslocoService }, { type: i6.LayoutService }], propDecorators: { onResize: [{
|
|
245
245
|
type: HostListener,
|
|
246
246
|
args: ['window:resize']
|
|
247
247
|
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFlLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBYXBELE1BQU0sT0FBTyx1QkFBdUI7SUErQ25DLFlBQ1MsaUJBQW9DLEVBQ3BDLFdBQTJCLEVBQzNCLE1BQWMsRUFDZCxRQUF5QixFQUN6QixnQkFBa0MsRUFDbEMsYUFBNEI7UUFMNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFuRHJD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SSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO1lBQ2IsQ0FBQztZQUVFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxJQUFJLENBQUM7Z0JBQ2IsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVM7UUFDckIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBNVFXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDBIQUZ4QixDQUFDLGlCQUFpQixDQUFDLDBCQ3ZCL0Isd3JOQXNIQSw4NWdCRGxHVyxVQUFVLG9PQUFFLE9BQU8sbUZBQUUsYUFBYTs7MkZBS2hDLHVCQUF1QjtrQkFSbkMsU0FBUztpQ0FDRyxJQUFJLFlBQ04scUJBQXFCLFdBQ3RCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsYUFHbEMsQ0FBQyxpQkFBaUIsQ0FBQztpT0ErTjlCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBQbHVnaW5NZW51SXRlbSB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZXhwYW5kYWJsZS1tZW51JyxcclxuXHRpbXBvcnRzOiBbUm91dGVyTGluaywgTmdDbGFzcywgVG9vbHRpcE1vZHVsZV0sXHJcblx0dGVtcGxhdGVVcmw6ICdleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWydleHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtUcmFuc2xhdGVKc29uUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGFibGVNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHRhY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG5cdHNpZGViYXJJc0xvY2tlZCA9IGZhbHNlO1xyXG5cclxuICBpc0hvc3RNb2RlID0gKDxhbnk+Z2xvYmFsVGhpcykuaXNIb3N0TW9kZTtcclxuXHRob3N0TWVudUl0ZW1zID0gKDxhbnk+Z2xvYmFsVGhpcykuaG9zdE1lbnVJdGVtcztcclxuXHRjYWNoZWRNZW51SXRlbXM6IFBsdWdpbk1lbnVJdGVtW10gPSBbXTtcclxuXHJcblxyXG5cdC8vIFRyYWNrIHNlbGVjdGVkIG1haW4gbWVudSBpdGVtXHJcblx0c2VsZWN0ZWRNYWluSXRlbTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblx0c2VsZWN0ZWRNYWluTWVudUl0ZW06IFBsdWdpbk1lbnVJdGVtIHwgbnVsbCA9IG51bGw7XHJcblx0c2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblxyXG5cdHRvb2x0aXBUZXh0ID0ge1xyXG5cdFx0dG9nZ2xlQnV0dG9uOiB7XHJcblx0XHRcdGV4cGFuZGVkOiB7XHJcblx0XHRcdFx0dHI6ICdNZW7DvHnDvCBHaXpsZScsXHJcblx0XHRcdFx0ZW46ICdIaWRlIE1lbnUnXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbGxhcHNlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR8O2c3RlcicsXHJcblx0XHRcdFx0ZW46ICdTaG93IE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRsb2NrQnV0dG9uOiB7XHJcblx0XHRcdGxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnT3RvbWF0aWsgS2FwYW5tYXnEsSBBw6cnLFxyXG5cdFx0XHRcdGVuOiAnRW5hYmxlIEF1dG8tQ2xvc2UnXHJcblx0XHRcdH0sXHJcblx0XHRcdHVubG9ja2VkOiB7XHJcblx0XHRcdFx0dHI6ICdNZW7DvHnDvCBLaWxpdGxlJyxcclxuXHRcdFx0XHRlbjogJ0xvY2sgTWVudSdcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX0xFTkdUSCA9IHtcclxuXHRcdG1haW46IDgsIFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMCBcclxuXHR9O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRlSnNvblBpcGU6IFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0cHJpdmF0ZSBtZW51U2VydmljZTogQXBwTWVudVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHQvLyBDaGVjayBpZiB0ZXh0IGlzIHRydW5jYXRlZCBhbmQgbmVlZHMgdG9vbHRpcFxyXG5cdGlzVGV4dFRydW5jYXRlZChcclxuXHRcdGxhYmVsOiBhbnksXHJcblx0XHRsYW5nOiBzdHJpbmcgfCBudWxsLFxyXG5cdFx0bWVudVR5cGU6ICdtYWluJyB8ICdzZWNvbmRhcnknIHwgJ3RlcnRpYXJ5JyB8ICduZXN0ZWQnID0gJ3NlY29uZGFyeSdcclxuXHQpOiBib29sZWFuIHtcclxuXHRcdGlmICghbGFiZWwgfHwgIWxhbmcgfHwgIWxhYmVsW2xhbmddKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Y29uc3QgdGV4dCA9IGxhYmVsW2xhbmddO1xyXG5cdFx0Y29uc3QgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoO1xyXG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gbWVudVR5cGUgPT09ICduZXN0ZWQnID8gdGhpcy5NQVhfTEVOR1RILnRlcnRpYXJ5IDogdGhpcy5NQVhfTEVOR1RIW21lbnVUeXBlXTtcclxuXHRcdHJldHVybiB0ZXh0TGVuZ3RoID4gbWF4TGVuZ3RoO1xyXG5cdH1cclxuXHJcblx0Ly8gUmVjdXJzaXZlbHkgY2hlY2sgaWYgYSBtZW51IGl0ZW0gb3IgaXRzIGNoaWxkcmVuIG1hdGNoIHRoZSBjdXJyZW50IHJvdXRlXHJcblx0aXNBY3RpdmVSb3V0ZShtZW51SXRlbTogUGx1Z2luTWVudUl0ZW0pOiBib29sZWFuIHtcclxuXHRcdGlmICghbWVudUl0ZW0gfHwgIW1lbnVJdGVtLnJvdXRlckxpbmspIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHQvLyBHZXQgY3VycmVudCBVUkwgcGF0aCBhZnRlciB0aGUgaGFzaFxyXG5cdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdGNvbnN0IGhhc2hVcmwgPSBjdXJyZW50VXJsLmluZGV4T2YoJyMnKSA+IC0xID8gY3VycmVudFVybC5zcGxpdCgnIycpWzFdIDogY3VycmVudFVybDtcclxuXHJcblx0XHQvLyBDaGVjayBmb3IgZXhhY3QgbWF0Y2ggZmlyc3RcclxuXHRcdGlmIChoYXNoVXJsID09PSBtZW51SXRlbS5yb3V0ZXJMaW5rIHx8IGhhc2hVcmwgPT09ICcvJyArIG1lbnVJdGVtLnJvdXRlckxpbmspIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgaWYgY3VycmVudCBVUkwgc3RhcnRzIHdpdGggdGhlIHJvdXRlckxpbmsgKGhhbmRsZXMgY2hpbGQgcm91dGVzKVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRtZW51SXRlbS5yb3V0ZXJMaW5rICE9PSAnLycgJiZcclxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChtZW51SXRlbS5yb3V0ZXJMaW5rICsgJy8nKSB8fCBoYXNoVXJsLnN0YXJ0c1dpdGgoJy8nICsgbWVudUl0ZW0ucm91dGVyTGluayArICcvJykpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgY2hpbGQgaXRlbXMgaWYgdGhleSBleGlzdFxyXG5cdFx0aWYgKG1lbnVJdGVtLml0ZW1zICYmIG1lbnVJdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0cmV0dXJuIG1lbnVJdGVtLml0ZW1zLnNvbWUoKGNoaWxkSXRlbSkgPT4gdGhpcy5pc0FjdGl2ZVJvdXRlKGNoaWxkSXRlbSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7XHJcblx0XHR0aGlzLmluaXRpYWxpemVNZW51KCk7XHJcblxyXG5cdFx0dGhpcy5sb2FkU2lkZWJhckxvY2tTdGF0ZSgpO1xyXG5cdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIHRvIGhhbmRsZSBzZWNvbmRhcnkgc2lkZWJhciBjbG9zaW5nXHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHQvLyBVcGRhdGUgYWN0aXZlIG1lbnUgYmFzZWQgb24gdGhlIG5ldyByb3V0ZVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTtcclxuXHJcblx0XHRcdFx0Ly8gQ2xvc2Ugc2Vjb25kYXJ5IHNpZGViYXIgb24gbmF2aWdhdGlvbiBpZiBub3QgbG9ja2VkXHJcblx0XHRcdFx0aWYgKCF0aGlzLnNpZGViYXJJc0xvY2tlZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byBvdmVybGF5IG1lbnUgb3BlbiBub3RpZmljYXRpb25zXHJcblx0XHR0aGlzLm92ZXJsYXlNZW51T3BlblN1YnNjcmlwdGlvbiA9IHRoaXMubGF5b3V0U2VydmljZS5vdmVybGF5T3BlbiQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XHJcblx0XHRcdFx0dGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRsb2FkU2lkZWJhckxvY2tTdGF0ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHN0b3JlZFN0YXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NpZGViYXJJc0xvY2tlZCcpO1xyXG5cdFx0dGhpcy5zaWRlYmFySXNMb2NrZWQgPSBzdG9yZWRTdGF0ZSA9PT0gJ3RydWUnO1xyXG5cdH1cclxuXHJcblx0c2F2ZVNpZGViYXJMb2NrU3RhdGUoKTogdm9pZCB7XHJcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2lkZWJhcklzTG9ja2VkJywgdGhpcy5zaWRlYmFySXNMb2NrZWQudG9TdHJpbmcoKSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVTaWRlYmFyTG9jaygpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2lkZWJhcklzTG9ja2VkID0gIXRoaXMuc2lkZWJhcklzTG9ja2VkO1xyXG5cdFx0dGhpcy5zYXZlU2lkZWJhckxvY2tTdGF0ZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gSW5pdGlhbGl6ZSB0aGUgbWVudSB3aXRoIHByb3BlciBhY3RpdmUgc3RhdGVcclxuXHRpbml0aWFsaXplTWVudSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRNYWluSXRlbSA9IG51bGw7XHJcblx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbnVsbDtcclxuXHRcdHRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUZyb21Sb290S2V5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7IFxyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IG1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaXRlbSA9IG1lbnVJdGVtc1tpbmRleF07XHJcblx0XHRcdGlmICghaXRlbS5zZXBhcmF0b3IpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbkl0ZW0gPSBpbmRleDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHRcdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVwZGF0ZU1lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuY2FjaGVkTWVudUl0ZW1zID0gdGhpcy5pc0hvc3RNb2RlID8gdGhpcy5ob3N0TWVudUl0ZW1zKCkgOiB0aGlzLm1lbnVTZXJ2aWNlLm1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Z2V0TWVudUl0ZW1zKCk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FjaGVkTWVudUl0ZW1zO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0TWFpbkl0ZW0oaW5kZXg6IG51bWJlciwgaXRlbTogUGx1Z2luTWVudUl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmIChpdGVtLnJvdXRlckxpbmsgJiYgKCFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbkl0ZW0gPSBpbmRleDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlckxpbmtdKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSByZWd1bGFyIG1lbnUgaXRlbXMgd2l0aCBzdWJtZW51XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE1haW5JdGVtID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9ICF0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZDtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluSXRlbSA9IGluZGV4O1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHJcbiAgICAgIGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gdHJ1ZTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRm9yIG1vYmlsZSBkZXZpY2VzLCBlbnN1cmUgdGhlIG1lbnUgc3RheXMgb3BlblxyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUoKSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IHRydWU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVTZWNvbmRhcnlTaWRlYmFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPSAhdGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQ7XHJcblx0fVxyXG5cclxuXHRpc01vYmlsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKTtcclxuXHR9XHJcblxyXG5cdC8vIExpc3RlbiBmb3IgcmVzaXplIGV2ZW50cyB0byBoYW5kbGUgcmVzcG9uc2l2ZSBiZWhhdmlvciBmb3IgbW9iaWxlXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTogdm9pZCB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG5cclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGNvbnN0IG1lbnVJdGVtID0gbWVudUl0ZW1zW2ldO1xyXG5cdFx0XHRpZiAodGhpcy5pc0FjdGl2ZVJvdXRlKG1lbnVJdGVtKSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluSXRlbSA9IGk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IG1lbnVJdGVtO1xyXG5cclxuXHRcdFx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkICYmICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBib29sZWFuIHtcclxuXHRcdGlmICghaXRlbSB8fCAhaXRlbS5pdGVtcyB8fCBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgaXRlbS5pdGVtcykge1xyXG5cdFx0XHRpZiAodGhpcy5pc0FjdGl2ZVJvdXRlKGNoaWxkKSkge1xyXG5cdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHR9XHJcblxyXG4gICAgICBpZiAoY2hpbGQuaXRlbXMgJiYgY2hpbGQuaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzSGF2ZVNlbGVjdGVkQ2hpbGRJdGVtKGNoaWxkKSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0Z2V0TG9jYWxUZXh0KHRleHQ6IGFueSk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVKc29uUGlwZS50cmFuc2Zvcm0odGV4dCk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbGF5b3V0LXNpZGViYXJcIj5cclxuXHQ8IS0tIE1haW4gc2lkZWJhciAoZmlyc3QgbGV2ZWwpIC0tPlxyXG5cdDxkaXYgY2xhc3M9XCJtYWluLXNpZGViYXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJtYWluLXNpZGViYXItaGVhZGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPlxyXG5cdFx0XHRcdDxzcGFuPnt7IHVzZXJuYW1lIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1haW4tc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRcdDx1bCBjbGFzcz1cIm1haW4tbWVudVwiPlxyXG5cdFx0XHRcdEBmb3IoaXRlbSBvZiBnZXRNZW51SXRlbXMoKTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0QGlmKCFpdGVtLnNlcGFyYXRvcil7XHJcblx0XHRcdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzQWN0aXZlUm91dGUoaXRlbSkgfHwgaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oaXRlbSl9XCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cInNlbGVjdE1haW5JdGVtKGksIGl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChpdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICdtYWluJykgPyAoaXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBpdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIiBjbGFzcz1cIm1lbnUtaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJtZW51LWxhYmVsXCI+e3sgaXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBpdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NtYWxsPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3VsPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8IS0tIFRvZ2dsZSBidXR0b24gYXQgdGhlIGJvdHRvbSBvZiBtYWluIHNpZGViYXIgLS0+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyLWZvb3RlclwiPlxyXG5cdFx0XHQ8YnV0dG9uIGNsYXNzPVwic2lkZWJhci10b2dnbGUtYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVNlY29uZGFyeVNpZGViYXIoKVwiIFxyXG5cdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSA/IChzZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPyBnZXRMb2NhbFRleHQodG9vbHRpcFRleHQudG9nZ2xlQnV0dG9uLmV4cGFuZGVkKSA6IGdldExvY2FsVGV4dCh0b29sdGlwVGV4dC50b2dnbGVCdXR0b24uY29sbGFwc2VkKSkgOiAnJ1wiIFxyXG5cdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cInNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA/ICdwaS1hbmdsZS1sZWZ0JyA6ICdwaS1hbmdsZS1yaWdodCdcIj48L2k+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNlY29uZGFyeVNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDwhLS0gQ29udGVudCBjb250YWluZXIgd3JhcHBlciB0byBwcmV2ZW50IGp1bXBzIGR1cmluZyB0cmFuc2l0aW9ucyAtLT5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgaGVhZGVyIC0tPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5LXNpZGViYXItaGVhZGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1oZWFkZXItY29udGVudFwiPlxyXG5cdFx0XHRcdFx0QGlmKHNlbGVjdGVkTWFpbk1lbnVJdGVtKXtcclxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInNlbGVjdGVkTWFpbk1lbnVJdGVtLmljb25cIiBjbGFzcz1cInNlY3Rpb24taWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyBzZWxlY3RlZE1haW5NZW51SXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzZWxlY3RlZE1haW5NZW51SXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2gzPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cInNpZGViYXItbG9jay1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlU2lkZWJhckxvY2soKVwiIFxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwic2lkZWJhcklzTG9ja2VkID8gZ2V0TG9jYWxUZXh0KHRvb2x0aXBUZXh0LmxvY2tCdXR0b24ubG9ja2VkKSA6IGdldExvY2FsVGV4dCh0b29sdGlwVGV4dC5sb2NrQnV0dG9uLnVubG9ja2VkKVwiIFxyXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCI+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbbmdDbGFzc109XCJzaWRlYmFySXNMb2NrZWQgPyAncGktbG9jaycgOiAncGktbG9jay1vcGVuJ1wiPjwvaT5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIENyZWF0ZSBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGkgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKHN1Ykl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8YSBbcm91dGVyTGlua109XCJzdWJJdGVtLnJvdXRlckxpbmtcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNlY29uZGFyeS1tZW51LWxpbmtcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQoc3ViSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnc2Vjb25kYXJ5JykgPyAoc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgW25nQ2xhc3NdPVwic3ViSXRlbS5pY29uXCIgY2xhc3M9XCJzdWJtZW51LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGlmKHN1Ykl0ZW0uaXRlbXMgJiYgc3ViSXRlbS5pdGVtcy5sZW5ndGggPiAwKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktYW5nbGUtZG93biBzdWJtZW51LXRvZ2dsZVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBBbHdheXMgcmVuZGVyIHN1Ym1lbnUgaWYgaXQgZXhpc3RzIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgQGlmKHN1Ykl0ZW0uaXRlbXMgJiYgc3ViSXRlbS5pdGVtcy5sZW5ndGggPiAwKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgPHVsIGNsYXNzPVwidGVydGlhcnktbWVudSBhbHdheXMtb3BlblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihjaGlsZEl0ZW0gb2Ygc3ViSXRlbS5pdGVtczsgdHJhY2sgY2hpbGRJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInRlcnRpYXJ5LW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj57eyBjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLml0ZW1zICYmIGNoaWxkSXRlbS5pdGVtcy5sZW5ndGggPiAwKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1hbmdsZS1kb3duIHN1Ym1lbnUtdG9nZ2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8IS0tIEFsd2F5cyByZW5kZXIgZGVlcGVyIGxldmVscyBpZiB0aGV5IGV4aXN0LCBhbHNvIHZpc2libGUgYnkgZGVmYXVsdCAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAaWYoY2hpbGRJdGVtLml0ZW1zICYmIGNoaWxkSXRlbS5pdGVtcy5sZW5ndGggPiAwKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx1bCBjbGFzcz1cIm5lc3RlZC1tZW51IGFsd2F5cy1vcGVuXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBmb3IobmVzdGVkSXRlbSBvZiBjaGlsZEl0ZW0uaXRlbXM7IHRyYWNrIG5lc3RlZEl0ZW07IGxldCBpID0gJGluZGV4KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGkgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm5lc3RlZC1tZW51LWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKG5lc3RlZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgW3JvdXRlckxpbmtdPVwibmVzdGVkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibmVzdGVkLW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobmVzdGVkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnbmVzdGVkJykgPyAobmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5lc3RlZC1sYWJlbFwiPnt7IG5lc3RlZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gbmVzdGVkSXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCA8L3VsPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0XHJcbjwvZGl2PlxyXG4iXX0=
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9leHBhbmRhYmxlTWVudS9leHBhbmRhYmxlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2V4cGFuZGFibGVNZW51L2V4cGFuZGFibGUtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUloRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBWXBELE1BQU0sT0FBTyx1QkFBdUI7SUErQ25DLFlBQ1MsaUJBQW9DLEVBQ3BDLFdBQTJCLEVBQzNCLE1BQWMsRUFDZCxRQUF5QixFQUN6QixnQkFBa0MsRUFDbEMsYUFBNEI7UUFMNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFuRHJD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SSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO1lBQ2IsQ0FBQztZQUVFLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxJQUFJLENBQUM7Z0JBQ2IsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVM7UUFDckIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBNVFXLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDBIQUZ4QixDQUFDLGlCQUFpQixDQUFDLDBCQ3RCL0IsczBNQWdIQSw0Q0Q1RlcsVUFBVSxvT0FBRSxPQUFPLG1GQUFFLGFBQWE7OzJGQUloQyx1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0csSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLGFBRWxDLENBQUMsaUJBQWlCLENBQUM7aU9BK045QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLWV4cGFuZGFibGUtbWVudScsXHJcblx0aW1wb3J0czogW1JvdXRlckxpbmssIE5nQ2xhc3MsIFRvb2x0aXBNb2R1bGVdLFxyXG5cdHRlbXBsYXRlVXJsOiAnZXhwYW5kYWJsZS1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuXHRwcm92aWRlcnM6IFtUcmFuc2xhdGVKc29uUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZGFibGVNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHRhY3RpdmVMYW5nID0gdG9TaWduYWwodGhpcy50cmFuc2xvY29TZXJ2aWNlLmxhbmdDaGFuZ2VzJCwgeyBpbml0aWFsVmFsdWU6ICd0cicgfSk7XHJcblx0b3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHRyb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xyXG5cdHNpZGViYXJJc0xvY2tlZCA9IGZhbHNlO1xyXG5cclxuICBpc0hvc3RNb2RlID0gKDxhbnk+Z2xvYmFsVGhpcykuaXNIb3N0TW9kZTtcclxuXHRob3N0TWVudUl0ZW1zID0gKDxhbnk+Z2xvYmFsVGhpcykuaG9zdE1lbnVJdGVtcztcclxuXHRjYWNoZWRNZW51SXRlbXM6IFBsdWdpbk1lbnVJdGVtW10gPSBbXTtcclxuXHJcblxyXG5cdC8vIFRyYWNrIHNlbGVjdGVkIG1haW4gbWVudSBpdGVtXHJcblx0c2VsZWN0ZWRNYWluSXRlbTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblx0c2VsZWN0ZWRNYWluTWVudUl0ZW06IFBsdWdpbk1lbnVJdGVtIHwgbnVsbCA9IG51bGw7XHJcblx0c2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblxyXG5cdHRvb2x0aXBUZXh0ID0ge1xyXG5cdFx0dG9nZ2xlQnV0dG9uOiB7XHJcblx0XHRcdGV4cGFuZGVkOiB7XHJcblx0XHRcdFx0dHI6ICdNZW7DvHnDvCBHaXpsZScsXHJcblx0XHRcdFx0ZW46ICdIaWRlIE1lbnUnXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbGxhcHNlZDoge1xyXG5cdFx0XHRcdHRyOiAnTWVuw7x5w7wgR8O2c3RlcicsXHJcblx0XHRcdFx0ZW46ICdTaG93IE1lbnUnXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRsb2NrQnV0dG9uOiB7XHJcblx0XHRcdGxvY2tlZDoge1xyXG5cdFx0XHRcdHRyOiAnT3RvbWF0aWsgS2FwYW5tYXnEsSBBw6cnLFxyXG5cdFx0XHRcdGVuOiAnRW5hYmxlIEF1dG8tQ2xvc2UnXHJcblx0XHRcdH0sXHJcblx0XHRcdHVubG9ja2VkOiB7XHJcblx0XHRcdFx0dHI6ICdNZW7DvHnDvCBLaWxpdGxlJyxcclxuXHRcdFx0XHRlbjogJ0xvY2sgTWVudSdcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFYX0xFTkdUSCA9IHtcclxuXHRcdG1haW46IDgsIFxyXG5cdFx0c2Vjb25kYXJ5OiAyMCxcclxuXHRcdHRlcnRpYXJ5OiAyMCBcclxuXHR9O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRlSnNvblBpcGU6IFRyYW5zbGF0ZUpzb25QaXBlLFxyXG5cdFx0cHJpdmF0ZSBtZW51U2VydmljZTogQXBwTWVudVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHQvLyBDaGVjayBpZiB0ZXh0IGlzIHRydW5jYXRlZCBhbmQgbmVlZHMgdG9vbHRpcFxyXG5cdGlzVGV4dFRydW5jYXRlZChcclxuXHRcdGxhYmVsOiBhbnksXHJcblx0XHRsYW5nOiBzdHJpbmcgfCBudWxsLFxyXG5cdFx0bWVudVR5cGU6ICdtYWluJyB8ICdzZWNvbmRhcnknIHwgJ3RlcnRpYXJ5JyB8ICduZXN0ZWQnID0gJ3NlY29uZGFyeSdcclxuXHQpOiBib29sZWFuIHtcclxuXHRcdGlmICghbGFiZWwgfHwgIWxhbmcgfHwgIWxhYmVsW2xhbmddKSByZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0Y29uc3QgdGV4dCA9IGxhYmVsW2xhbmddO1xyXG5cdFx0Y29uc3QgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoO1xyXG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gbWVudVR5cGUgPT09ICduZXN0ZWQnID8gdGhpcy5NQVhfTEVOR1RILnRlcnRpYXJ5IDogdGhpcy5NQVhfTEVOR1RIW21lbnVUeXBlXTtcclxuXHRcdHJldHVybiB0ZXh0TGVuZ3RoID4gbWF4TGVuZ3RoO1xyXG5cdH1cclxuXHJcblx0Ly8gUmVjdXJzaXZlbHkgY2hlY2sgaWYgYSBtZW51IGl0ZW0gb3IgaXRzIGNoaWxkcmVuIG1hdGNoIHRoZSBjdXJyZW50IHJvdXRlXHJcblx0aXNBY3RpdmVSb3V0ZShtZW51SXRlbTogUGx1Z2luTWVudUl0ZW0pOiBib29sZWFuIHtcclxuXHRcdGlmICghbWVudUl0ZW0gfHwgIW1lbnVJdGVtLnJvdXRlckxpbmspIHJldHVybiBmYWxzZTtcclxuXHJcblx0XHQvLyBHZXQgY3VycmVudCBVUkwgcGF0aCBhZnRlciB0aGUgaGFzaFxyXG5cdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuXHRcdGNvbnN0IGhhc2hVcmwgPSBjdXJyZW50VXJsLmluZGV4T2YoJyMnKSA+IC0xID8gY3VycmVudFVybC5zcGxpdCgnIycpWzFdIDogY3VycmVudFVybDtcclxuXHJcblx0XHQvLyBDaGVjayBmb3IgZXhhY3QgbWF0Y2ggZmlyc3RcclxuXHRcdGlmIChoYXNoVXJsID09PSBtZW51SXRlbS5yb3V0ZXJMaW5rIHx8IGhhc2hVcmwgPT09ICcvJyArIG1lbnVJdGVtLnJvdXRlckxpbmspIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgaWYgY3VycmVudCBVUkwgc3RhcnRzIHdpdGggdGhlIHJvdXRlckxpbmsgKGhhbmRsZXMgY2hpbGQgcm91dGVzKVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRtZW51SXRlbS5yb3V0ZXJMaW5rICE9PSAnLycgJiZcclxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChtZW51SXRlbS5yb3V0ZXJMaW5rICsgJy8nKSB8fCBoYXNoVXJsLnN0YXJ0c1dpdGgoJy8nICsgbWVudUl0ZW0ucm91dGVyTGluayArICcvJykpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2hlY2sgY2hpbGQgaXRlbXMgaWYgdGhleSBleGlzdFxyXG5cdFx0aWYgKG1lbnVJdGVtLml0ZW1zICYmIG1lbnVJdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0cmV0dXJuIG1lbnVJdGVtLml0ZW1zLnNvbWUoKGNoaWxkSXRlbSkgPT4gdGhpcy5pc0FjdGl2ZVJvdXRlKGNoaWxkSXRlbSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7XHJcblx0XHR0aGlzLmluaXRpYWxpemVNZW51KCk7XHJcblxyXG5cdFx0dGhpcy5sb2FkU2lkZWJhckxvY2tTdGF0ZSgpO1xyXG5cdFx0dGhpcy51cGRhdGVBY3RpdmVNZW51RnJvbUN1cnJlbnRSb3V0ZSgpO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIHRvIGhhbmRsZSBzZWNvbmRhcnkgc2lkZWJhciBjbG9zaW5nXHJcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHQvLyBVcGRhdGUgYWN0aXZlIG1lbnUgYmFzZWQgb24gdGhlIG5ldyByb3V0ZVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTtcclxuXHJcblx0XHRcdFx0Ly8gQ2xvc2Ugc2Vjb25kYXJ5IHNpZGViYXIgb24gbmF2aWdhdGlvbiBpZiBub3QgbG9ja2VkXHJcblx0XHRcdFx0aWYgKCF0aGlzLnNpZGViYXJJc0xvY2tlZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdC8vIFN1YnNjcmliZSB0byBvdmVybGF5IG1lbnUgb3BlbiBub3RpZmljYXRpb25zXHJcblx0XHR0aGlzLm92ZXJsYXlNZW51T3BlblN1YnNjcmlwdGlvbiA9IHRoaXMubGF5b3V0U2VydmljZS5vdmVybGF5T3BlbiQuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XHJcblx0XHRcdFx0dGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMub3ZlcmxheU1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRsb2FkU2lkZWJhckxvY2tTdGF0ZSgpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHN0b3JlZFN0YXRlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NpZGViYXJJc0xvY2tlZCcpO1xyXG5cdFx0dGhpcy5zaWRlYmFySXNMb2NrZWQgPSBzdG9yZWRTdGF0ZSA9PT0gJ3RydWUnO1xyXG5cdH1cclxuXHJcblx0c2F2ZVNpZGViYXJMb2NrU3RhdGUoKTogdm9pZCB7XHJcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2lkZWJhcklzTG9ja2VkJywgdGhpcy5zaWRlYmFySXNMb2NrZWQudG9TdHJpbmcoKSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVTaWRlYmFyTG9jaygpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2lkZWJhcklzTG9ja2VkID0gIXRoaXMuc2lkZWJhcklzTG9ja2VkO1xyXG5cdFx0dGhpcy5zYXZlU2lkZWJhckxvY2tTdGF0ZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gSW5pdGlhbGl6ZSB0aGUgbWVudSB3aXRoIHByb3BlciBhY3RpdmUgc3RhdGVcclxuXHRpbml0aWFsaXplTWVudSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRNYWluSXRlbSA9IG51bGw7XHJcblx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gbnVsbDtcclxuXHRcdHRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR0aGlzLnVwZGF0ZU1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0dXBkYXRlTWVudUZyb21Sb290S2V5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuXHRcdHRoaXMudXBkYXRlTWVudUl0ZW1zKCk7IFxyXG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuXHJcblx0XHRpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IG1lbnVJdGVtcy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaXRlbSA9IG1lbnVJdGVtc1tpbmRleF07XHJcblx0XHRcdGlmICghaXRlbS5zZXBhcmF0b3IpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbkl0ZW0gPSBpbmRleDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHRcdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVwZGF0ZU1lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuY2FjaGVkTWVudUl0ZW1zID0gdGhpcy5pc0hvc3RNb2RlID8gdGhpcy5ob3N0TWVudUl0ZW1zKCkgOiB0aGlzLm1lbnVTZXJ2aWNlLm1lbnVJdGVtcygpO1xyXG5cdH1cclxuXHJcblx0Z2V0TWVudUl0ZW1zKCk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FjaGVkTWVudUl0ZW1zO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0TWFpbkl0ZW0oaW5kZXg6IG51bWJlciwgaXRlbTogUGx1Z2luTWVudUl0ZW0pOiB2b2lkIHtcclxuXHRcdGlmIChpdGVtLnJvdXRlckxpbmsgJiYgKCFpdGVtLml0ZW1zIHx8IGl0ZW0uaXRlbXMubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbkl0ZW0gPSBpbmRleDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlckxpbmtdKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSByZWd1bGFyIG1lbnUgaXRlbXMgd2l0aCBzdWJtZW51XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE1haW5JdGVtID09PSBpbmRleCkge1xyXG5cdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9ICF0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZDtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluSXRlbSA9IGluZGV4O1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkTWFpbk1lbnVJdGVtID0gaXRlbTtcclxuXHJcbiAgICAgIGlmIChpdGVtLml0ZW1zICYmIGl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gdHJ1ZTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRm9yIG1vYmlsZSBkZXZpY2VzLCBlbnN1cmUgdGhlIG1lbnUgc3RheXMgb3BlblxyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUoKSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IHRydWU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVTZWNvbmRhcnlTaWRlYmFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPSAhdGhpcy5zZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQ7XHJcblx0fVxyXG5cclxuXHRpc01vYmlsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKTtcclxuXHR9XHJcblxyXG5cdC8vIExpc3RlbiBmb3IgcmVzaXplIGV2ZW50cyB0byBoYW5kbGUgcmVzcG9uc2l2ZSBiZWhhdmlvciBmb3IgbW9iaWxlXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHRpZiAoIXRoaXMuaXNNb2JpbGUoKSAmJiB0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dXBkYXRlQWN0aXZlTWVudUZyb21DdXJyZW50Um91dGUoKTogdm9pZCB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG5cclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGNvbnN0IG1lbnVJdGVtID0gbWVudUl0ZW1zW2ldO1xyXG5cdFx0XHRpZiAodGhpcy5pc0FjdGl2ZVJvdXRlKG1lbnVJdGVtKSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRNYWluSXRlbSA9IGk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE1haW5NZW51SXRlbSA9IG1lbnVJdGVtO1xyXG5cclxuXHRcdFx0XHRpZiAobWVudUl0ZW0uaXRlbXMgJiYgbWVudUl0ZW0uaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmlzTW9iaWxlKCkgJiYgIXRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkICYmICF0aGlzLmxheW91dFNlcnZpY2Uuc3RhdGUuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA9IHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuc2Vjb25kYXJ5U2lkZWJhckV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oaXRlbTogUGx1Z2luTWVudUl0ZW0pOiBib29sZWFuIHtcclxuXHRcdGlmICghaXRlbSB8fCAhaXRlbS5pdGVtcyB8fCBpdGVtLml0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGZvciAoY29uc3QgY2hpbGQgb2YgaXRlbS5pdGVtcykge1xyXG5cdFx0XHRpZiAodGhpcy5pc0FjdGl2ZVJvdXRlKGNoaWxkKSkge1xyXG5cdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHR9XHJcblxyXG4gICAgICBpZiAoY2hpbGQuaXRlbXMgJiYgY2hpbGQuaXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzSGF2ZVNlbGVjdGVkQ2hpbGRJdGVtKGNoaWxkKSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0Z2V0TG9jYWxUZXh0KHRleHQ6IGFueSk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVKc29uUGlwZS50cmFuc2Zvcm0odGV4dCk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuZXctbGF5b3V0LXNpZGViYXJcIj5cclxuXHQ8IS0tIE1haW4gc2lkZWJhciAoZmlyc3QgbGV2ZWwpIC0tPlxyXG5cdDxkaXYgY2xhc3M9XCJtYWluLXNpZGViYXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJtYWluLXNpZGViYXItaGVhZGVyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPlxyXG5cdFx0XHRcdDxzcGFuPnt7IHVzZXJuYW1lIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cIm1haW4tc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRcdDx1bCBjbGFzcz1cIm1haW4tbWVudVwiPlxyXG5cdFx0XHRcdEBmb3IoaXRlbSBvZiBnZXRNZW51SXRlbXMoKTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0QGlmKCFpdGVtLnNlcGFyYXRvcil7XHJcblx0XHRcdFx0XHRcdDxsaVxyXG5cdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzQWN0aXZlUm91dGUoaXRlbSkgfHwgaXNIYXZlU2VsZWN0ZWRDaGlsZEl0ZW0oaXRlbSl9XCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cInNlbGVjdE1haW5JdGVtKGksIGl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChpdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICdtYWluJykgPyAoaXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBpdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIiBjbGFzcz1cIm1lbnUtaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJtZW51LWxhYmVsXCI+e3sgaXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBpdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NtYWxsPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3VsPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8IS0tIFRvZ2dsZSBidXR0b24gYXQgdGhlIGJvdHRvbSBvZiBtYWluIHNpZGViYXIgLS0+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibWFpbi1zaWRlYmFyLWZvb3RlclwiPlxyXG5cdFx0XHQ8YnV0dG9uIGNsYXNzPVwic2lkZWJhci10b2dnbGUtYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVNlY29uZGFyeVNpZGViYXIoKVwiIFxyXG5cdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSA/IChzZWNvbmRhcnlTaWRlYmFyRXhwYW5kZWQgPyBnZXRMb2NhbFRleHQodG9vbHRpcFRleHQudG9nZ2xlQnV0dG9uLmV4cGFuZGVkKSA6IGdldExvY2FsVGV4dCh0b29sdGlwVGV4dC50b2dnbGVCdXR0b24uY29sbGFwc2VkKSkgOiAnJ1wiIFxyXG5cdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cInNlY29uZGFyeVNpZGViYXJFeHBhbmRlZCA/ICdwaS1hbmdsZS1sZWZ0JyA6ICdwaS1hbmdsZS1yaWdodCdcIj48L2k+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgKHNlY29uZCBsZXZlbCkgLS0+XHJcblx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyXCIgW25nQ2xhc3NdPVwieydleHBhbmRlZCc6IHNlY29uZGFyeVNpZGViYXJFeHBhbmRlZH1cIj5cclxuXHRcdDwhLS0gQ29udGVudCBjb250YWluZXIgd3JhcHBlciB0byBwcmV2ZW50IGp1bXBzIGR1cmluZyB0cmFuc2l0aW9ucyAtLT5cclxuXHRcdDxkaXYgY2xhc3M9XCJzZWNvbmRhcnktY29udGVudC13cmFwcGVyXCI+XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgaGVhZGVyIC0tPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5LXNpZGViYXItaGVhZGVyXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1oZWFkZXItY29udGVudFwiPlxyXG5cdFx0XHRcdFx0QGlmKHNlbGVjdGVkTWFpbk1lbnVJdGVtKXtcclxuXHRcdFx0XHRcdFx0PGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpIFtuZ0NsYXNzXT1cInNlbGVjdGVkTWFpbk1lbnVJdGVtLmljb25cIiBjbGFzcz1cInNlY3Rpb24taWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyBzZWxlY3RlZE1haW5NZW51SXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzZWxlY3RlZE1haW5NZW51SXRlbS5sYWJlbFthY3RpdmVMYW5nKCkhXSB8fCAnJyA6ICcnIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2gzPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cInNpZGViYXItbG9jay1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlU2lkZWJhckxvY2soKVwiIFxyXG5cdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwic2lkZWJhcklzTG9ja2VkID8gZ2V0TG9jYWxUZXh0KHRvb2x0aXBUZXh0LmxvY2tCdXR0b24ubG9ja2VkKSA6IGdldExvY2FsVGV4dCh0b29sdGlwVGV4dC5sb2NrQnV0dG9uLnVubG9ja2VkKVwiIFxyXG5cdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCI+XHJcblx0XHRcdFx0XHRcdDxpIGNsYXNzPVwicGlcIiBbbmdDbGFzc109XCJzaWRlYmFySXNMb2NrZWQgPyAncGktbG9jaycgOiAncGktbG9jay1vcGVuJ1wiPjwvaT5cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHJcblx0XHRcdDwhLS0gU2Vjb25kYXJ5IHNpZGViYXIgY29udGVudCAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInNlY29uZGFyeS1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRAaWYoc2VsZWN0ZWRNYWluTWVudUl0ZW0pe1xyXG5cdFx0XHRcdFx0PHVsIGNsYXNzPVwic2Vjb25kYXJ5LW1lbnVcIj5cclxuXHRcdFx0XHRcdFx0QGZvcihzdWJJdGVtIG9mIHNlbGVjdGVkTWFpbk1lbnVJdGVtLml0ZW1zOyB0cmFjayBzdWJJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIENyZWF0ZSBtZW51IGl0ZW0gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGkgY2xhc3M9XCJzZWNvbmRhcnktbWVudS1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZVJvdXRlKHN1Ykl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8YSBbcm91dGVyTGlua109XCJzdWJJdGVtLnJvdXRlckxpbmtcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNlY29uZGFyeS1tZW51LWxpbmtcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQoc3ViSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAnc2Vjb25kYXJ5JykgPyAoc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgW25nQ2xhc3NdPVwic3ViSXRlbS5pY29uXCIgY2xhc3M9XCJzdWJtZW51LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJzdWJtZW51LWxhYmVsXCI+e3sgc3ViSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBzdWJJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PCEtLSBBbHdheXMgcmVuZGVyIHN1Ym1lbnUgaWYgaXQgZXhpc3RzIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgQGlmKHN1Ykl0ZW0uaXRlbXMgJiYgc3ViSXRlbS5pdGVtcy5sZW5ndGggPiAwKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgPHVsIGNsYXNzPVwidGVydGlhcnktbWVudSBhbHdheXMtb3BlblwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihjaGlsZEl0ZW0gb2Ygc3ViSXRlbS5pdGVtczsgdHJhY2sgY2hpbGRJdGVtOyBsZXQgaSA9ICRpbmRleCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBjbGFzcz1cInRlcnRpYXJ5LW1lbnUtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNBY3RpdmVSb3V0ZShjaGlsZEl0ZW0pfVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkSXRlbS5yb3V0ZXJMaW5rXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInRlcnRpYXJ5LW1lbnUtbGlua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKGNoaWxkSXRlbS5sYWJlbCwgYWN0aXZlTGFuZygpLCAndGVydGlhcnknKSA/IChjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycpIDogJydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidGVydGlhcnktbGFiZWxcIj57eyBjaGlsZEl0ZW0ubGFiZWwgJiYgYWN0aXZlTGFuZygpID8gY2hpbGRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwhLS0gQWx3YXlzIHJlbmRlciBkZWVwZXIgbGV2ZWxzIGlmIHRoZXkgZXhpc3QsIGFsc28gdmlzaWJsZSBieSBkZWZhdWx0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBpZihjaGlsZEl0ZW0uaXRlbXMgJiYgY2hpbGRJdGVtLml0ZW1zLmxlbmd0aCA+IDApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHVsIGNsYXNzPVwibmVzdGVkLW1lbnUgYWx3YXlzLW9wZW5cIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGZvcihuZXN0ZWRJdGVtIG9mIGNoaWxkSXRlbS5pdGVtczsgdHJhY2sgbmVzdGVkSXRlbTsgbGV0IGkgPSAkaW5kZXgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsaSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibmVzdGVkLW1lbnUtaXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGlzQWN0aXZlUm91dGUobmVzdGVkSXRlbSl9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YSBbcm91dGVyTGlua109XCJuZXN0ZWRJdGVtLnJvdXRlckxpbmtcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZXN0ZWQtbWVudS1saW5rXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChuZXN0ZWRJdGVtLmxhYmVsLCBhY3RpdmVMYW5nKCksICduZXN0ZWQnKSA/IChuZXN0ZWRJdGVtLmxhYmVsICYmIGFjdGl2ZUxhbmcoKSA/IG5lc3RlZEl0ZW0ubGFiZWxbYWN0aXZlTGFuZygpIV0gfHwgJycgOiAnJykgOiAnJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmVzdGVkLWxhYmVsXCI+e3sgbmVzdGVkSXRlbS5sYWJlbCAmJiBhY3RpdmVMYW5nKCkgPyBuZXN0ZWRJdGVtLmxhYmVsW2FjdGl2ZUxhbmcoKSFdIHx8ICcnIDogJycgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC91bD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IDwvdWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCB9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L3VsPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHRcclxuPC9kaXY+XHJcbiJdfQ==
|