aril 1.1.96 → 1.2.0
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/boot/base/index.d.ts +1 -0
- package/boot/base/src/create-base-app-config.d.ts +12 -0
- package/boot/bridge/index.d.ts +2 -0
- package/boot/bridge/src/mfe-bridge.d.ts +33 -0
- package/boot/bridge/src/provide-mfe-bridge.d.ts +1 -0
- package/boot/config/api/index.d.ts +1 -0
- package/boot/config/api/src/api.service.d.ts +2 -2
- package/boot/config/api/src/interfaces.d.ts +1 -19
- package/boot/config/apps/src/apps.service.d.ts +7 -4
- package/boot/config/plugins/src/getNgZone.d.ts +1 -1
- package/boot/config/plugins/src/interfaces.d.ts +0 -37
- package/boot/host/src/app.component.d.ts +5 -3
- package/boot/mfe/src/app.component.d.ts +4 -2
- package/esm2022/boot/base/aril-boot-base.mjs +5 -0
- package/esm2022/boot/base/index.mjs +2 -0
- package/esm2022/boot/base/src/create-base-app-config.mjs +30 -0
- package/esm2022/boot/bridge/aril-boot-bridge.mjs +5 -0
- package/esm2022/boot/bridge/index.mjs +3 -0
- package/esm2022/boot/bridge/src/mfe-bridge.mjs +59 -0
- package/esm2022/boot/bridge/src/provide-mfe-bridge.mjs +6 -0
- package/esm2022/boot/config/api/index.mjs +1 -1
- package/esm2022/boot/config/api/src/api.service.mjs +14 -9
- package/esm2022/boot/config/api/src/interfaces.mjs +2 -21
- package/esm2022/boot/config/apps/src/apps.service.mjs +13 -16
- package/esm2022/boot/config/plugins/src/getNgZone.mjs +4 -3
- package/esm2022/boot/config/plugins/src/interfaces.mjs +1 -60
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +9 -21
- package/esm2022/boot/host/src/app.component.mjs +11 -10
- package/esm2022/boot/host/src/bootstrap.mjs +9 -22
- package/esm2022/boot/mfe/src/app.component.mjs +20 -17
- package/esm2022/boot/mfe/src/bootstrap.mjs +13 -31
- package/esm2022/boot/pages/aril-boot-pages.mjs +5 -0
- package/esm2022/boot/pages/index.mjs +3 -0
- package/esm2022/{util/custom_pages → boot/pages}/src/forbidden.component.mjs +1 -1
- package/esm2022/{util/custom_pages → boot/pages}/src/notFound.component.mjs +1 -1
- package/esm2022/keycloak/src/auth.interceptor.mjs +15 -78
- package/esm2022/provider/src/prodiveHost.mjs +5 -8
- package/esm2022/provider/src/prodiveHostRouter.mjs +4 -3
- package/esm2022/provider/src/provideHostKeycloak.mjs +10 -2
- package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -3
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +3 -4
- package/esm2022/theme/layout/app/general-search/general-search.component.mjs +3 -2
- package/esm2022/theme/layout/app/history/history.service.mjs +3 -2
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +1 -2
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +5 -4
- package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +3 -4
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +7 -4
- package/esm2022/ui/form/src/form.component.mjs +22 -4
- package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +14 -2
- package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -3
- package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +3 -4
- package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +1 -1
- package/fesm2022/{aril-app.component-hxaLgwmC.mjs → aril-app.component-wxP3y8dg.mjs} +22 -22
- package/fesm2022/aril-app.component-wxP3y8dg.mjs.map +1 -0
- package/fesm2022/aril-boot-base.mjs +37 -0
- package/fesm2022/aril-boot-base.mjs.map +1 -0
- package/fesm2022/aril-boot-bridge.mjs +70 -0
- package/fesm2022/aril-boot-bridge.mjs.map +1 -0
- package/fesm2022/aril-boot-config-api.mjs +12 -27
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +12 -15
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +10 -81
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +17 -29
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-s1a-tkOD.mjs → aril-boot-mfe-app.component-7IjAmjz0.mjs} +22 -22
- package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs.map +1 -0
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs → aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs} +15 -69
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +3 -6
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/{aril-util-custom_pages.mjs → aril-boot-pages.mjs} +1 -1
- package/fesm2022/aril-boot-pages.mjs.map +1 -0
- package/fesm2022/aril-keycloak.mjs +14 -77
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +15 -10
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +15 -17
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs +13 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-form.mjs +20 -3
- package/fesm2022/aril-ui-form.mjs.map +1 -1
- package/fesm2022/aril-util-directives.mjs +3 -2
- package/fesm2022/aril-util-directives.mjs.map +1 -1
- package/fesm2022/aril-util-pipes.mjs +2 -3
- package/fesm2022/aril-util-pipes.mjs.map +1 -1
- package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
- package/fesm2022/aril.mjs +24 -87
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +111 -105
- package/provider/src/prodiveHost.d.ts +2 -2
- package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +3 -2
- package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +0 -2
- package/theme/layout/app/expandableMenu/expandable-menu.component.ts +373 -374
- package/theme/layout/app/general-search/general-search.component.ts +2 -1
- package/theme/layout/app/history/history.service.ts +2 -1
- package/theme/layout/app/layout/app.layout.component.d.ts +0 -1
- package/theme/layout/app/layout/app.layout.component.ts +0 -1
- package/theme/layout/app/site-map/site-map-sidebar.component.html +121 -121
- package/theme/layout/app/site-map/site-map-sidebar.component.ts +3 -2
- package/theme/layout/app/static-sidebar/static-sidebar.component.ts +336 -337
- package/theme/layout/app/topbar/app.topbar.component.ts +6 -3
- package/theme/styles/layout/_fonts.scss +1 -13
- package/ui/form/src/form.component.d.ts +4 -1
- package/boot/mfe/src/loadStyles.d.ts +0 -3
- package/esm2022/boot/mfe/src/loadStyles.mjs +0 -37
- package/esm2022/util/custom_pages/aril-util-custom_pages.mjs +0 -5
- package/esm2022/util/custom_pages/index.mjs +0 -3
- package/esm2022/util/loaders/aril-util-loaders.mjs +0 -5
- package/esm2022/util/loaders/index.mjs +0 -2
- package/esm2022/util/loaders/style/style.loader.service.mjs +0 -61
- package/fesm2022/aril-app.component-hxaLgwmC.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-s1a-tkOD.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs.map +0 -1
- package/fesm2022/aril-util-custom_pages.mjs.map +0 -1
- package/fesm2022/aril-util-loaders.mjs +0 -68
- package/fesm2022/aril-util-loaders.mjs.map +0 -1
- package/theme/fonts/Inter/Inter_18pt-Black.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-BlackItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-BoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraLight.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ExtraLightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Italic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Light.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-LightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-MediumItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-SemiBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-Thin.ttf +0 -0
- package/theme/fonts/Inter/Inter_18pt-ThinItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Black.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-BlackItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Bold.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-BoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraLight.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ExtraLightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Italic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Light.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-LightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Medium.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-MediumItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Regular.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-SemiBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-SemiBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-Thin.ttf +0 -0
- package/theme/fonts/Inter/Inter_24pt-ThinItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Black.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-BlackItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Bold.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-BoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraLight.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ExtraLightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Italic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Light.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-LightItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Medium.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-MediumItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Regular.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-SemiBold.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-SemiBoldItalic.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-Thin.ttf +0 -0
- package/theme/fonts/Inter/Inter_28pt-ThinItalic.ttf +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Black.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Black.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BlackItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BlackItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-BoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLight.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLight.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ExtraLightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Italic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Italic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Light.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Light.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-LightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-LightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-MediumItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-MediumItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-SemiBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-SemiBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Thin.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-Thin.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ThinItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter18pt-ThinItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Black.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Black.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BlackItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BlackItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Bold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Bold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-BoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLight.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLight.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ExtraLightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Italic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Italic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-LightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-LightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Medium.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Medium.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-MediumItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-MediumItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Regular.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Regular.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-SemiBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Thin.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-Thin.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ThinItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter24pt-ThinItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Black.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Black.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BlackItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BlackItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Bold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Bold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-BoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraBoldItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraBoldItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraLightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ExtraLightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Italic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Italic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Light.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Light.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-LightItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-LightItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Medium.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Medium.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-MediumItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-MediumItalic.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Regular.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Regular.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-SemiBold.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-SemiBold.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Thin.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-Thin.woff2 +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ThinItalic.woff +0 -0
- package/theme/fonts/Inter/woff/Inter28pt-ThinItalic.woff2 +0 -0
- package/util/loaders/index.d.ts +0 -1
- package/util/loaders/style/style.loader.service.d.ts +0 -13
- /package/{util/custom_pages → boot/pages}/index.d.ts +0 -0
- /package/{util/custom_pages → boot/pages}/src/forbidden.component.d.ts +0 -0
- /package/{util/custom_pages → boot/pages}/src/notFound.component.d.ts +0 -0
|
@@ -7,6 +7,7 @@ import { ScrollPanelModule } from 'primeng/scrollpanel';
|
|
|
7
7
|
import { TooltipModule } from 'primeng/tooltip';
|
|
8
8
|
import { TranslocoModule } from '@ngneat/transloco';
|
|
9
9
|
import { filter } from 'rxjs';
|
|
10
|
+
import { bridge } from 'aril/boot/bridge';
|
|
10
11
|
import { TranslateJsonPipe } from 'aril/util/pipes';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "../../service/app.menu.service";
|
|
@@ -109,9 +110,7 @@ export class StaticSidebarComponent {
|
|
|
109
110
|
});
|
|
110
111
|
}
|
|
111
112
|
getMenuItems() {
|
|
112
|
-
|
|
113
|
-
const hostMenuItems = globalThis.hostMenuItems;
|
|
114
|
-
return isHostMode ? hostMenuItems() : this.menuService.menuItems();
|
|
113
|
+
return bridge.isHostMode() ? bridge.hostMenuItems() : this.menuService.menuItems();
|
|
115
114
|
}
|
|
116
115
|
getLocalText(text) {
|
|
117
116
|
return this.translateJsonPipe.transform(text);
|
|
@@ -276,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
276
275
|
type: Component,
|
|
277
276
|
args: [{ standalone: true, selector: 'app-static-sidebar', imports: [RouterLink, NgClass, NgTemplateOutlet, ScrollPanelModule, TooltipModule, FormsModule, TranslocoModule], providers: [TranslateJsonPipe], template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track trackByKey($index, node)) {\r\n\t\t\t\t\t@if (node.action && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item is-action\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t} @else if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.action) {\r\n\t\t\t\t<!-- Action item: HTTP POST on click, then navigate -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item is-action\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>\r\n", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:55px;z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-item.is-action{cursor:pointer}.static-sidebar .tree-node .node-item.is-action.action-loading{opacity:.7;pointer-events:none}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"] }]
|
|
278
277
|
}], ctorParameters: () => [{ type: i1.AppMenuService }, { type: i2.Router }, { type: i3.LayoutService }, { type: i4.TranslateJsonPipe }, { type: i5.TranslocoService }, { type: i6.HttpClient }] });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9zdGF0aWMtc2lkZWJhci9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFNBQVMsRUFBNkIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBVSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUF3QnBELE1BQU0sT0FBTyxzQkFBc0I7SUFXbEMsWUFDa0IsV0FBMkIsRUFDM0IsTUFBYyxFQUNkLGFBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDbEMsSUFBZ0I7UUFMaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNC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LEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRO29CQUN4RSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUM7aUJBQ3JDLENBQUMsQ0FBQztZQUNKLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQzs4R0F6U1csc0JBQXNCO2tHQUF0QixzQkFBc0IsaUVBRnZCLENBQUMsaUJBQWlCLENBQUMsMEJDcEMvQixzeE9Ba0tBLDRuTkRqSVcsVUFBVSxvT0FBRSxPQUFPLG9GQUFFLGdCQUFnQixtSkFBRSxpQkFBaUIsK0lBQUUsYUFBYSxxWEFBRSxXQUFXLDhtQkFBRSxlQUFlOzsyRkFLbkcsc0JBQXNCO2tCQVJsQyxTQUFTO2lDQUNHLElBQUksWUFDTixvQkFBb0IsV0FDckIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLGFBR3JHLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29Nb2R1bGUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbUFjdGlvbiwgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVKc29uUGlwZSB9IGZyb20gJ2FyaWwvdXRpbC9waXBlcyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgTWVudU5vZGUge1xyXG5cdGtleTogc3RyaW5nO1xyXG5cdGxhYmVsOiBhbnk7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGFjdGlvbj86IE1lbnVJdGVtQWN0aW9uO1xyXG5cdGNoaWxkcmVuPzogTWVudU5vZGVbXTtcclxuXHRleHBhbmRlZDogYm9vbGVhbjtcclxuXHRhY3Rpb25Mb2FkaW5nPzogYm9vbGVhbjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1zdGF0aWMtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1JvdXRlckxpbmssIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIFNjcm9sbFBhbmVsTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsb2NvTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vc3RhdGljLXNpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuc2NzcycsXHJcblx0cHJvdmlkZXJzOiBbVHJhbnNsYXRlSnNvblBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGF0aWNTaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cdGFjdGl2ZUxhbmc6IFNpZ25hbDxzdHJpbmc+O1xyXG5cdG1lbnVOb2RlcyA9IHNpZ25hbDxNZW51Tm9kZVtdPihbXSk7XHJcblx0ZmlsdGVyZWROb2RlcyA9IHNpZ25hbDxNZW51Tm9kZVtdPihbXSk7XHJcblx0c2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuXHJcblx0cHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBNQVhfTEVOR1RIID0geyBsZXZlbDA6IDI1LCBsZXZlbDE6IDIwLCBsZXZlbDI6IDE2LCBsZXZlbDM6IDEzIH07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZTogQXBwTWVudVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVKc29uUGlwZTogVHJhbnNsYXRlSnNvblBpcGUsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnRcclxuXHQpIHtcclxuXHRcdHRoaXMuYWN0aXZlTGFuZyA9IHRvU2lnbmFsKHRoaXMudHJhbnNsb2NvU2VydmljZS5sYW5nQ2hhbmdlcyQsIHsgaW5pdGlhbFZhbHVlOiAndHInIH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0IGlzQ29sbGFwc2VkKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5pc1N0YXRpY1NpZGViYXJDb2xsYXBzZWQoKTtcclxuXHR9XHJcblxyXG5cdGdldCB0b3BMZXZlbE5vZGVzKCk6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIHRoaXMubWVudU5vZGVzKCk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuYnVpbGRNZW51VHJlZSgpO1xyXG5cdFx0dGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcclxuXHRcdFx0LnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmJ1aWxkTWVudVRyZWUoKSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRpc1RleHRUcnVuY2F0ZWQobGFiZWw6IGFueSwgbGFuZzogc3RyaW5nIHwgbnVsbCwgbGV2ZWwgPSAwKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIWxhYmVsIHx8ICFsYW5nIHx8ICFsYWJlbFtsYW5nXSkgcmV0dXJuIGZhbHNlO1xyXG5cdFx0Y29uc3QgdGV4dCA9IGxhYmVsW2xhbmddO1xyXG5cdFx0Y29uc3QgbGVuID0gdGV4dC5sZW5ndGg7XHJcblx0XHRjb25zdCBsaW1pdHMgPSBbdGhpcy5NQVhfTEVOR1RILmxldmVsMCwgdGhpcy5NQVhfTEVOR1RILmxldmVsMSwgdGhpcy5NQVhfTEVOR1RILmxldmVsMiwgdGhpcy5NQVhfTEVOR1RILmxldmVsM107XHJcblx0XHRyZXR1cm4gbGVuID4gbGltaXRzW01hdGgubWluKGxldmVsLCAzKV07XHJcblx0fVxyXG5cclxuXHRpc01vYmlsZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNNb2JpbGUoKTtcclxuXHR9XHJcblxyXG5cdGJ1aWxkTWVudVRyZWUoKSB7XHJcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLmNvbnZlcnRUb01lbnVOb2RlcyhtZW51SXRlbXMpO1xyXG5cdFx0dGhpcy5tZW51Tm9kZXMuc2V0KG5vZGVzKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLm5vZGVzXSk7XHJcblx0XHR0aGlzLmV4cGFuZEFjdGl2ZU1lbnUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZXhwYW5kQWN0aXZlTWVudSgpIHtcclxuXHRcdGNvbnN0IG5vZGVzID0gdGhpcy5tZW51Tm9kZXMoKTtcclxuXHRcdHRoaXMuZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZXMpO1xyXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4udGhpcy5maWx0ZXJlZE5vZGVzKCldKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZXM6IE1lbnVOb2RlW10pOiBNZW51Tm9kZSB8IG51bGwge1xyXG5cdFx0Zm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGNvbnN0IGFjdGl2ZUNoaWxkID0gdGhpcy5maW5kQW5kRXhwYW5kQWN0aXZlTm9kZShub2RlLmNoaWxkcmVuKTtcclxuXHRcdFx0XHRpZiAoYWN0aXZlQ2hpbGQpIHtcclxuXHRcdFx0XHRcdC8vIHdlIGZpbmQgYWN0aXZlIGNoaWxkIGFuZCB0aGVuIG9wZW5lZCBpdHMgcGFyZW50IG5vZGVzXHJcblx0XHRcdFx0XHRub2RlLmV4cGFuZGVkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHJldHVybiBhY3RpdmVDaGlsZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0Y29udmVydFRvTWVudU5vZGVzKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdLCBwYXJlbnRLZXkgPSAnJyk6IE1lbnVOb2RlW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zXHJcblx0XHRcdC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnNlcGFyYXRvcilcclxuXHRcdFx0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBrZXkgPSBwYXJlbnRLZXkgPyBgJHtwYXJlbnRLZXl9LSR7aW5kZXh9YCA6IGAke2luZGV4fWA7XHJcblx0XHRcdFx0Y29uc3Qgbm9kZTogTWVudU5vZGUgPSB7XHJcblx0XHRcdFx0XHRrZXksXHJcblx0XHRcdFx0XHRsYWJlbDogaXRlbS5sYWJlbCxcclxuXHRcdFx0XHRcdGljb246IGl0ZW0uaWNvbixcclxuXHRcdFx0XHRcdHJvdXRlckxpbms6IGl0ZW0uYWN0aW9uID8gdW5kZWZpbmVkIDogaXRlbS5yb3V0ZXJMaW5rLFxyXG5cdFx0XHRcdFx0YWN0aW9uOiBpdGVtLmFjdGlvbixcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmYWxzZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0aWYgKGl0ZW0uaXRlbXMgJiYgaXRlbS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5jb252ZXJ0VG9NZW51Tm9kZXMoaXRlbS5pdGVtcywga2V5KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0TWVudUl0ZW1zKCk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0Y29uc3QgaXNIb3N0TW9kZSA9ICg8YW55Pmdsb2JhbFRoaXMpLmlzSG9zdE1vZGU7XHJcblx0XHRjb25zdCBob3N0TWVudUl0ZW1zID0gKDxhbnk+Z2xvYmFsVGhpcykuaG9zdE1lbnVJdGVtcztcclxuXHRcdHJldHVybiBpc0hvc3RNb2RlID8gaG9zdE1lbnVJdGVtcygpIDogdGhpcy5tZW51U2VydmljZS5tZW51SXRlbXMoKTtcclxuXHR9XHJcblxyXG5cdGdldExvY2FsVGV4dCh0ZXh0OiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlSnNvblBpcGUudHJhbnNmb3JtKHRleHQpO1xyXG5cdH1cclxuXHJcblx0aXNBY3RpdmVSb3V0ZUZvck5vZGUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XHJcblx0XHRjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cdFx0Y29uc3QgaGFzaFVybCA9IGN1cnJlbnRVcmwuaW5kZXhPZignIycpID4gLTEgPyBjdXJyZW50VXJsLnNwbGl0KCcjJylbMV0gOiBjdXJyZW50VXJsO1xyXG5cdFx0aWYgKGhhc2hVcmwgPT09IG5vZGUucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBub2RlLnJvdXRlckxpbmspIHJldHVybiB0cnVlO1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0bm9kZS5yb3V0ZXJMaW5rICE9PSAnLycgJiZcclxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChub2RlLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBub2RlLnJvdXRlckxpbmsgKyAnLycpKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8vIHVzZSBvbiBjb2xsYXBzZWQgbW9kZVxyXG5cdGlzTm9kZU9yQ2hpbGRBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoKGNoaWxkKSA9PiB0aGlzLmlzTm9kZU9yQ2hpbGRBY3RpdmUoY2hpbGQpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlOiBNZW51Tm9kZSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaXNOb2RlT3JDaGlsZEFjdGl2ZShub2RlKTtcclxuXHR9XHJcblxyXG5cdGlzQ2hpbGROb2RlQWN0aXZlKG5vZGU6IE1lbnVOb2RlKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5pc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlKTtcclxuXHR9XHJcblxyXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUsIGxldmVsID0gMCkge1xyXG5cdFx0Y29uc3Qgd2FzRXhwYW5kZWQgPSBub2RlLmV4cGFuZGVkO1xyXG5cdFx0aWYgKGxldmVsID09PSAwKSB7XHJcblx0XHRcdC8vIERpxJ9lciBhbmEgbWVuw7xsZXJpIGthcGF0XHJcblx0XHRcdHRoaXMuY2xvc2VPdGhlclRvcExldmVsTm9kZXMobm9kZSk7XHJcblx0XHR9XHJcblx0XHRub2RlLmV4cGFuZGVkID0gIXdhc0V4cGFuZGVkO1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKGV4Y2VwdE5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XHJcblx0XHRub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcblx0XHRcdGlmIChub2RlICE9PSBleGNlcHROb2RlKSB7XHJcblx0XHRcdFx0bm9kZS5leHBhbmRlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdHRoaXMuY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGU6IE1lbnVOb2RlKSB7XHJcblx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xyXG5cdFx0XHRub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcblx0XHRcdFx0Y2hpbGQuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR0aGlzLmNsb3NlQWxsQ2hpbGROb2RlcyhjaGlsZCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dHJhY2tCeUtleShpbmRleDogbnVtYmVyLCBub2RlOiBNZW51Tm9kZSk6IGFueSB7XHJcblx0XHRyZXR1cm4gbm9kZS5rZXk7XHJcblx0fVxyXG5cclxuXHRvbk1lbnVJdGVtQ2xpY2soKSB7XHJcblx0XHRpZiAodGhpcy5pc01vYmlsZSgpKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5jbG9zZU1vYmlsZU1lbnUoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQodGhpcy5tZW51Tm9kZXMoKSB8fCBbXSk7XHJcblx0fVxyXG5cclxuXHRvbkFjdGlvbkl0ZW1DbGljayhub2RlOiBNZW51Tm9kZSwgZXZlbnQ6IEV2ZW50KSB7XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG5cdFx0aWYgKCFub2RlLmFjdGlvbiB8fCBub2RlLmFjdGlvbkxvYWRpbmcpIHJldHVybjtcclxuXHJcblx0XHQvLyBDYW5jZWwgYW55IHByZXZpb3VzIGFjdGlvbiByZXF1ZXN0XHJcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHJcblx0XHRub2RlLmFjdGlvbkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuXHRcdGNvbnN0IHJlcXVlc3QkID1cclxuXHRcdFx0bm9kZS5hY3Rpb24ubWV0aG9kID09PSAnR0VUJyA/XHJcblx0XHRcdFx0dGhpcy5odHRwLmdldChub2RlLmFjdGlvbi51cmwpXHJcblx0XHRcdDpcdHRoaXMuaHR0cC5wb3N0KG5vZGUuYWN0aW9uLnVybCwgbm9kZS5hY3Rpb24uYm9keSA/PyB7fSk7XHJcblxyXG5cdFx0dGhpcy5hY3Rpb25TdWJzY3JpcHRpb24gPSByZXF1ZXN0JC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdG5vZGUuYWN0aW9uTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdGNvbnN0IHJvdXRlID0gdGhpcy5idWlsZFN1Y2Nlc3NSb3V0ZShub2RlLmFjdGlvbiEsIHJlc3BvbnNlKTtcclxuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcclxuXHRcdFx0XHR0aGlzLm9uTWVudUl0ZW1DbGljaygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdG5vZGUuYWN0aW9uTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBNZW51SXRlbUFjdGlvbiwgcmVzcG9uc2U6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWFjdGlvbi5zdWNjZXNzUm91dGVSZXNwb25zZUtleSkgcmV0dXJuIGFjdGlvbi5zdWNjZXNzUm91dGU7XHJcblxyXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlQnlQYXRoKHJlc3BvbnNlLCBhY3Rpb24uc3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXkpO1xyXG5cdFx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHJldHVybiBhY3Rpb24uc3VjY2Vzc1JvdXRlO1xyXG5cclxuXHRcdHJldHVybiBgJHthY3Rpb24uc3VjY2Vzc1JvdXRlfS8ke3ZhbHVlfWA7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldFZhbHVlQnlQYXRoKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0aWYgKCFvYmogfHwgIXBhdGgpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0cmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xyXG5cdFx0XHRpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IGN1cnJlbnQgPT09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHQvLyBIYW5kbGUgYXJyYXkgYWNjZXNzIGxpa2UgJ3Jlc3VsdFswXSdcclxuXHRcdFx0Y29uc3QgYXJyYXlNYXRjaCA9IGtleS5tYXRjaCgvXiguKz8pXFxbKFxcZCspXFxdJC8pO1xyXG5cdFx0XHRpZiAoYXJyYXlNYXRjaCkge1xyXG5cdFx0XHRcdGNvbnN0IGFycmF5S2V5ID0gYXJyYXlNYXRjaFsxXTtcclxuXHRcdFx0XHRjb25zdCBpbmRleCA9IHBhcnNlSW50KGFycmF5TWF0Y2hbMl0sIDEwKTtcclxuXHRcdFx0XHRyZXR1cm4gY3VycmVudFthcnJheUtleV0/LltpbmRleF07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBjdXJyZW50W2tleV07XHJcblx0XHR9LCBvYmopO1xyXG5cdH1cclxuXHJcblx0b25Db2xsYXBzZWRJdGVtQ2xpY2sobm9kZTogTWVudU5vZGUpIHtcclxuXHRcdGlmICh0aGlzLmlzQ29sbGFwc2VkKSB7XHJcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5vbk1lbnVUb2dnbGUoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuY2xvc2VPdGhlclRvcExldmVsTm9kZXMobm9kZSk7XHJcblx0XHRpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bm9kZS5leHBhbmRlZCA9IHRydWU7XHJcblx0XHR9XHJcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KFsuLi50aGlzLmZpbHRlcmVkTm9kZXMoKV0pO1xyXG5cdFx0aWYgKG5vZGUucm91dGVyTGluaykge1xyXG5cdFx0XHR0aGlzLm9uTWVudUl0ZW1DbGljaygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25TZWFyY2hDaGFuZ2UoKTogdm9pZCB7XHJcblx0XHRjb25zdCBjdXJyZW50U2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybSgpPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XHJcblx0XHRpZiAoIWN1cnJlbnRTZWFyY2hUZXJtKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQodGhpcy5tZW51Tm9kZXMoKSB8fCBbXSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQodGhpcy5maWx0ZXJOb2Rlcyh0aGlzLm1lbnVOb2RlcygpLCBjdXJyZW50U2VhcmNoVGVybSkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBmaWx0ZXJOb2Rlcyhub2RlczogTWVudU5vZGVbXSwgc2VhcmNoVGVybTogc3RyaW5nKTogTWVudU5vZGVbXSB7XHJcblx0XHRjb25zdCBmaWx0ZXJlZDogTWVudU5vZGVbXSA9IFtdO1xyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xyXG5cdFx0XHQvLyBDb252ZXJ0IGxhYmVsIHRvIHN0cmluZyBmb3Igc2VhcmNoIGJhc2VkIG9uIGFjdGl2ZSBsYW5ndWFnZVxyXG5cdFx0XHRjb25zdCBsYWJlbFRleHQgPVxyXG5cdFx0XHRcdHR5cGVvZiBub2RlLmxhYmVsID09PSAnc3RyaW5nJyA/XHJcblx0XHRcdFx0XHRub2RlLmxhYmVsXHJcblx0XHRcdFx0Olx0KG5vZGUubGFiZWwgYXMgYW55KT8uW2N1cnJlbnRMYW5nXSB8fCAobm9kZS5sYWJlbCBhcyBhbnkpPy50ciB8fCAobm9kZS5sYWJlbCBhcyBhbnkpPy5lbiB8fCAnJztcclxuXHJcblx0XHRcdGNvbnN0IG1hdGNoZXMgPSBsYWJlbFRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcclxuXHRcdFx0bGV0IGZpbHRlcmVkQ2hpbGRyZW46IE1lbnVOb2RlW10gPSBbXTtcclxuXHJcblx0XHRcdGlmIChub2RlLmNoaWxkcmVuKSB7XHJcblx0XHRcdFx0ZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyTm9kZXMobm9kZS5jaGlsZHJlbiwgc2VhcmNoVGVybSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChtYXRjaGVzIHx8IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGZpbHRlcmVkLnB1c2goe1xyXG5cdFx0XHRcdFx0Li4ubm9kZSxcclxuXHRcdFx0XHRcdGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZENoaWxkcmVuIDogbm9kZS5jaGlsZHJlbixcclxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDBcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmaWx0ZXJlZDtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN0YXRpYy1zaWRlYmFyXCIgW2NsYXNzLmNvbGxhcHNlZF09XCJpc0NvbGxhcHNlZFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJzdGF0aWMtc2lkZWJhci1jb250ZW50XCI+XHJcblx0XHRAaWYgKCFpc0NvbGxhcHNlZCkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiICp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJydcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoIHNlYXJjaC1pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRcdFx0cElucHV0VGV4dFxyXG5cdFx0XHRcdFx0XHR2YXJpYW50PVwiZmlsbGVkXCJcclxuXHRcdFx0XHRcdFx0W3BsYWNlaG9sZGVyXT1cInQoJ3NlYXJjaCcpXCJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcclxuXHRcdFx0XHRcdFx0KG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwic2VhcmNoLXN0YXRpYy1zaWRlYmFyXCIgLz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxwLXNjcm9sbFBhbmVsIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJ2NhbGMoMTAwdmggLSAxMzBweCknIH1cIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1jb250YWluZXJcIj5cclxuXHRcdFx0XHRcdEBmb3IgKG5vZGUgb2YgZmlsdGVyZWROb2RlcygpOyB0cmFjayB0cmFja0J5S2V5KCRpbmRleCwgbm9kZSkpIHtcclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVOb2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlLCBsZXZlbDogMCB9XCI+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvcC1zY3JvbGxQYW5lbD5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8IS0tIENvbGxhcHNlZCBtb2RlIC0gb25seSBpY29ucyAtLT5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbGxhcHNlZC1jb250YWluZXJcIj5cclxuXHRcdFx0XHRAZm9yIChub2RlIG9mIHRvcExldmVsTm9kZXM7IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBub2RlKSkge1xyXG5cdFx0XHRcdFx0QGlmIChub2RlLmFjdGlvbiAmJiAoIW5vZGUuY2hpbGRyZW4gfHwgbm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApKSB7XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbGxhcHNlZC1pdGVtIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImdldExvY2FsVGV4dChub2RlLmxhYmVsKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3Rpb24tbG9hZGluZ109XCJub2RlLmFjdGlvbkxvYWRpbmdcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhub2RlLCAkZXZlbnQpXCI+XHJcblx0XHRcdFx0XHRcdFx0QGlmIChub2RlLmFjdGlvbkxvYWRpbmcpIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH0gQGVsc2UgaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLWNpcmNsZVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0fSBAZWxzZSBpZiAobm9kZS5yb3V0ZXJMaW5rICYmICghbm9kZS5jaGlsZHJlbiB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0XHRcdFx0PGFcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbGxhcHNlZC1pdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpXCJcclxuXHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHRcdFx0W3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFx0XHRbY2xhc3MuYWN0aXZlXT1cImlzVG9wTGV2ZWxOb2RlQWN0aXZlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25Db2xsYXBzZWRJdGVtQ2xpY2sobm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uIHBpIHBpLWNpcmNsZVwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjb2xsYXBzZWQtaXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImdldExvY2FsVGV4dChub2RlLmxhYmVsKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktY2lyY2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHQ8L2Rpdj5cclxuXHJcblx0PCEtLSBSZWN1cnNpdmUgVHJlZSBOb2RlIFRlbXBsYXRlIC0tPlxyXG5cdDxuZy10ZW1wbGF0ZSAjdHJlZU5vZGVUZW1wbGF0ZSBsZXQtbm9kZSBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRyZWUtbm9kZVwiIFtuZ0NsYXNzXT1cIidsZXZlbC0nICsgbGV2ZWxcIj5cclxuXHRcdFx0QGlmIChub2RlLmFjdGlvbikge1xyXG5cdFx0XHRcdDwhLS0gQWN0aW9uIGl0ZW06IEhUVFAgUE9TVCBvbiBjbGljaywgdGhlbiBuYXZpZ2F0ZSAtLT5cclxuXHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRjbGFzcz1cIm5vZGUtaXRlbSBpcy1hY3Rpb25cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuYWN0aW9uLWxvYWRpbmddPVwibm9kZS5hY3Rpb25Mb2FkaW5nXCJcclxuXHRcdFx0XHRcdFtwVG9vbHRpcF09XCIhaXNNb2JpbGUoKSAmJiBpc1RleHRUcnVuY2F0ZWQobm9kZS5sYWJlbCwgYWN0aXZlTGFuZygpLCBsZXZlbCkgPyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgOiAnJ1wiXHJcblx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2sobm9kZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUsIGxldmVsKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuYWN0aW9uTG9hZGluZykge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uIHBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fSBAZWxzZSBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9IEBlbHNlIGlmIChub2RlLnJvdXRlckxpbmspIHtcclxuXHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0W3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLXBhZ2VdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNDaGlsZE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChub2RlLmxhYmVsLCBhY3RpdmVMYW5nKCksIGxldmVsKSA/IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSA6ICcnXCJcclxuXHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soKVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUsIGxldmVsKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5vZGUtbGFiZWxcIj57eyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2E+XHJcblx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwibm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDBcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmlzLXBhZ2VdPVwibm9kZS5yb3V0ZXJMaW5rXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNDaGlsZE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChub2RlLmxhYmVsLCBhY3RpdmVMYW5nKCksIGxldmVsKSA/IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSA6ICcnXCJcclxuXHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJ0b2dnbGVOb2RlKG5vZGUsIGxldmVsKVwiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm5vZGUtY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZS1idG5cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVOb2RlKG5vZGUsIGxldmVsKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaVwiIFtjbGFzcy5waS1jaGV2cm9uLXJpZ2h0XT1cIiFub2RlLmV4cGFuZGVkXCIgW2NsYXNzLnBpLWNoZXZyb24tZG93bl09XCJub2RlLmV4cGFuZGVkXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRAaWYgKG5vZGUuaWNvbikge1xyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibm9kZS1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm5vZGUtbGFiZWxcIj57eyBnZXRMb2NhbFRleHQobm9kZS5sYWJlbCkgfX08L3NwYW4+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0PCEtLSBSZWN1cnNpdmUgQ2hpbGRyZW4gLS0+XHJcblx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmV4cGFuZGVkKSB7XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImNoaWxkcmVuLWNvbnRhaW5lclwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIj5cclxuXHRcdFx0XHRcdEBmb3IgKGNoaWxkIG9mIG5vZGUuY2hpbGRyZW47IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBjaGlsZCkpIHtcclxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0XHRcdCpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNoaWxkLCBsZXZlbDogbGV2ZWwgKyAxIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXNpZGViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3N0YXRpYy1zaWRlYmFyL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9zdGF0aWMtc2lkZWJhci9zdGF0aWMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFNBQVMsRUFBNkIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBVSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBd0JwRCxNQUFNLE9BQU8sc0JBQXNCO0lBV2xDLFlBQ2tCLFdBQTJCLEVBQzNCLE1BQWMsRUFDZCxhQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsZ0JBQWtDLEVB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QUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtvQkFDeEUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO2lCQUNyQyxDQUFDLENBQUM7WUFDSixDQUFDO1FBQ0YsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7OEdBdlNXLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlFQUZ2QixDQUFDLGlCQUFpQixDQUFDLDBCQ3JDL0Isc3hPQWtLQSw0bk5EaElXLFVBQVUsb09BQUUsT0FBTyxvRkFBRSxnQkFBZ0IsbUpBQUUsaUJBQWlCLCtJQUFFLGFBQWEscVhBQUUsV0FBVyw4bUJBQUUsZUFBZTs7MkZBS25HLHNCQUFzQjtrQkFSbEMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sb0JBQW9CLFdBQ3JCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxhQUdyRyxDQUFDLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTY3JvbGxQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2Nyb2xscGFuZWwnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSwgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xuaW1wb3J0IHsgTWVudUl0ZW1BY3Rpb24sIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcbmltcG9ydCB7IFRyYW5zbGF0ZUpzb25QaXBlIH0gZnJvbSAnYXJpbC91dGlsL3BpcGVzJztcblxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIE1lbnVOb2RlIHtcblx0a2V5OiBzdHJpbmc7XG5cdGxhYmVsOiBhbnk7XG5cdGljb24/OiBzdHJpbmc7XG5cdHJvdXRlckxpbms/OiBzdHJpbmc7XG5cdGFjdGlvbj86IE1lbnVJdGVtQWN0aW9uO1xuXHRjaGlsZHJlbj86IE1lbnVOb2RlW107XG5cdGV4cGFuZGVkOiBib29sZWFuO1xuXHRhY3Rpb25Mb2FkaW5nPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHNlbGVjdG9yOiAnYXBwLXN0YXRpYy1zaWRlYmFyJyxcblx0aW1wb3J0czogW1JvdXRlckxpbmssIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIFNjcm9sbFBhbmVsTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsb2NvTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL3N0YXRpYy1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJyxcblx0cHJvdmlkZXJzOiBbVHJhbnNsYXRlSnNvblBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRpY1NpZGViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cdGFjdGl2ZUxhbmc6IFNpZ25hbDxzdHJpbmc+O1xuXHRtZW51Tm9kZXMgPSBzaWduYWw8TWVudU5vZGVbXT4oW10pO1xuXHRmaWx0ZXJlZE5vZGVzID0gc2lnbmFsPE1lbnVOb2RlW10+KFtdKTtcblx0c2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuXHRwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgYWN0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IE1BWF9MRU5HVEggPSB7IGxldmVsMDogMjUsIGxldmVsMTogMjAsIGxldmVsMjogMTYsIGxldmVsMzogMTMgfTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IG1lbnVTZXJ2aWNlOiBBcHBNZW51U2VydmljZSxcblx0XHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuXHRcdHByaXZhdGUgcmVhZG9ubHkgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcblx0XHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZUpzb25QaXBlOiBUcmFuc2xhdGVKc29uUGlwZSxcblx0XHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50XG5cdCkge1xuXHRcdHRoaXMuYWN0aXZlTGFuZyA9IHRvU2lnbmFsKHRoaXMudHJhbnNsb2NvU2VydmljZS5sYW5nQ2hhbmdlcyQsIHsgaW5pdGlhbFZhbHVlOiAndHInIH0pO1xuXHR9XG5cblx0Z2V0IGlzQ29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UuaXNTdGF0aWNTaWRlYmFyQ29sbGFwc2VkKCk7XG5cdH1cblxuXHRnZXQgdG9wTGV2ZWxOb2RlcygpOiBNZW51Tm9kZVtdIHtcblx0XHRyZXR1cm4gdGhpcy5tZW51Tm9kZXMoKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuYnVpbGRNZW51VHJlZSgpO1xuXHRcdHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG5cdFx0XHQucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuXHRcdFx0LnN1YnNjcmliZSgoKSA9PiB0aGlzLmJ1aWxkTWVudVRyZWUoKSk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLnJvdXRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdGlzVGV4dFRydW5jYXRlZChsYWJlbDogYW55LCBsYW5nOiBzdHJpbmcgfCBudWxsLCBsZXZlbCA9IDApOiBib29sZWFuIHtcblx0XHRpZiAoIWxhYmVsIHx8ICFsYW5nIHx8ICFsYWJlbFtsYW5nXSkgcmV0dXJuIGZhbHNlO1xuXHRcdGNvbnN0IHRleHQgPSBsYWJlbFtsYW5nXTtcblx0XHRjb25zdCBsZW4gPSB0ZXh0Lmxlbmd0aDtcblx0XHRjb25zdCBsaW1pdHMgPSBbdGhpcy5NQVhfTEVOR1RILmxldmVsMCwgdGhpcy5NQVhfTEVOR1RILmxldmVsMSwgdGhpcy5NQVhfTEVOR1RILmxldmVsMiwgdGhpcy5NQVhfTEVOR1RILmxldmVsM107XG5cdFx0cmV0dXJuIGxlbiA+IGxpbWl0c1tNYXRoLm1pbihsZXZlbCwgMyldO1xuXHR9XG5cblx0aXNNb2JpbGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5pc01vYmlsZSgpO1xuXHR9XG5cblx0YnVpbGRNZW51VHJlZSgpIHtcblx0XHRjb25zdCBtZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xuXHRcdGNvbnN0IG5vZGVzID0gdGhpcy5jb252ZXJ0VG9NZW51Tm9kZXMobWVudUl0ZW1zKTtcblx0XHR0aGlzLm1lbnVOb2Rlcy5zZXQobm9kZXMpO1xuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLm5vZGVzXSk7XG5cdFx0dGhpcy5leHBhbmRBY3RpdmVNZW51KCk7XG5cdH1cblxuXHRwcml2YXRlIGV4cGFuZEFjdGl2ZU1lbnUoKSB7XG5cdFx0Y29uc3Qgbm9kZXMgPSB0aGlzLm1lbnVOb2RlcygpO1xuXHRcdHRoaXMuZmluZEFuZEV4cGFuZEFjdGl2ZU5vZGUobm9kZXMpO1xuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XG5cdH1cblxuXHRwcml2YXRlIGZpbmRBbmRFeHBhbmRBY3RpdmVOb2RlKG5vZGVzOiBNZW51Tm9kZVtdKTogTWVudU5vZGUgfCBudWxsIHtcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcblx0XHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XG5cdFx0XHRcdHJldHVybiBub2RlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgYWN0aXZlQ2hpbGQgPSB0aGlzLmZpbmRBbmRFeHBhbmRBY3RpdmVOb2RlKG5vZGUuY2hpbGRyZW4pO1xuXHRcdFx0XHRpZiAoYWN0aXZlQ2hpbGQpIHtcblx0XHRcdFx0XHQvLyB3ZSBmaW5kIGFjdGl2ZSBjaGlsZCBhbmQgdGhlbiBvcGVuZWQgaXRzIHBhcmVudCBub2Rlc1xuXHRcdFx0XHRcdG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiBhY3RpdmVDaGlsZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGNvbnZlcnRUb01lbnVOb2RlcyhpdGVtczogUGx1Z2luTWVudUl0ZW1bXSwgcGFyZW50S2V5ID0gJycpOiBNZW51Tm9kZVtdIHtcblx0XHRyZXR1cm4gaXRlbXNcblx0XHRcdC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnNlcGFyYXRvcilcblx0XHRcdC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdGNvbnN0IGtleSA9IHBhcmVudEtleSA/IGAke3BhcmVudEtleX0tJHtpbmRleH1gIDogYCR7aW5kZXh9YDtcblx0XHRcdFx0Y29uc3Qgbm9kZTogTWVudU5vZGUgPSB7XG5cdFx0XHRcdFx0a2V5LFxuXHRcdFx0XHRcdGxhYmVsOiBpdGVtLmxhYmVsLFxuXHRcdFx0XHRcdGljb246IGl0ZW0uaWNvbixcblx0XHRcdFx0XHRyb3V0ZXJMaW5rOiBpdGVtLmFjdGlvbiA/IHVuZGVmaW5lZCA6IGl0ZW0ucm91dGVyTGluayxcblx0XHRcdFx0XHRhY3Rpb246IGl0ZW0uYWN0aW9uLFxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmYWxzZVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAoaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRub2RlLmNoaWxkcmVuID0gdGhpcy5jb252ZXJ0VG9NZW51Tm9kZXMoaXRlbS5pdGVtcywga2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbm9kZTtcblx0XHRcdH0pO1xuXHR9XG5cblx0Z2V0TWVudUl0ZW1zKCk6IFBsdWdpbk1lbnVJdGVtW10ge1xuXHRcdHJldHVybiBicmlkZ2UuaXNIb3N0TW9kZSgpID8gYnJpZGdlLmhvc3RNZW51SXRlbXMoKSA6IHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zKCk7XG5cdH1cblxuXHRnZXRMb2NhbFRleHQodGV4dDogYW55KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVKc29uUGlwZS50cmFuc2Zvcm0odGV4dCk7XG5cdH1cblxuXHRpc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlOiBNZW51Tm9kZSk6IGJvb2xlYW4ge1xuXHRcdGlmICghbm9kZS5yb3V0ZXJMaW5rKSByZXR1cm4gZmFsc2U7XG5cdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcblx0XHRjb25zdCBoYXNoVXJsID0gY3VycmVudFVybC5pbmRleE9mKCcjJykgPiAtMSA/IGN1cnJlbnRVcmwuc3BsaXQoJyMnKVsxXSA6IGN1cnJlbnRVcmw7XG5cdFx0aWYgKGhhc2hVcmwgPT09IG5vZGUucm91dGVyTGluayB8fCBoYXNoVXJsID09PSAnLycgKyBub2RlLnJvdXRlckxpbmspIHJldHVybiB0cnVlO1xuXHRcdHJldHVybiAoXG5cdFx0XHRub2RlLnJvdXRlckxpbmsgIT09ICcvJyAmJlxuXHRcdFx0KGhhc2hVcmwuc3RhcnRzV2l0aChub2RlLnJvdXRlckxpbmsgKyAnLycpIHx8IGhhc2hVcmwuc3RhcnRzV2l0aCgnLycgKyBub2RlLnJvdXRlckxpbmsgKyAnLycpKVxuXHRcdCk7XG5cdH1cblxuXHQvLyB1c2Ugb24gY29sbGFwc2VkIG1vZGVcblx0aXNOb2RlT3JDaGlsZEFjdGl2ZShub2RlOiBNZW51Tm9kZSk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmlzQWN0aXZlUm91dGVGb3JOb2RlKG5vZGUpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gdGhpcy5pc05vZGVPckNoaWxkQWN0aXZlKGNoaWxkKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0aXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc05vZGVPckNoaWxkQWN0aXZlKG5vZGUpO1xuXHR9XG5cblx0aXNDaGlsZE5vZGVBY3RpdmUobm9kZTogTWVudU5vZGUpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc0FjdGl2ZVJvdXRlRm9yTm9kZShub2RlKTtcblx0fVxuXG5cdHRvZ2dsZU5vZGUobm9kZTogTWVudU5vZGUsIGxldmVsID0gMCkge1xuXHRcdGNvbnN0IHdhc0V4cGFuZGVkID0gbm9kZS5leHBhbmRlZDtcblx0XHRpZiAobGV2ZWwgPT09IDApIHtcblx0XHRcdC8vIERpxJ9lciBhbmEgbWVuw7xsZXJpIGthcGF0XG5cdFx0XHR0aGlzLmNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKG5vZGUpO1xuXHRcdH1cblx0XHRub2RlLmV4cGFuZGVkID0gIXdhc0V4cGFuZGVkO1xuXG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldChbLi4udGhpcy5maWx0ZXJlZE5vZGVzKCldKTtcblx0fVxuXG5cdHByaXZhdGUgY2xvc2VPdGhlclRvcExldmVsTm9kZXMoZXhjZXB0Tm9kZTogTWVudU5vZGUpIHtcblx0XHRjb25zdCBub2RlcyA9IHRoaXMubWVudU5vZGVzKCk7XG5cdFx0bm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0aWYgKG5vZGUgIT09IGV4Y2VwdE5vZGUpIHtcblx0XHRcdFx0bm9kZS5leHBhbmRlZCA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLmNsb3NlQWxsQ2hpbGROb2Rlcyhub2RlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgY2xvc2VBbGxDaGlsZE5vZGVzKG5vZGU6IE1lbnVOb2RlKSB7XG5cdFx0aWYgKG5vZGUuY2hpbGRyZW4pIHtcblx0XHRcdG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcblx0XHRcdFx0Y2hpbGQuZXhwYW5kZWQgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5jbG9zZUFsbENoaWxkTm9kZXMoY2hpbGQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0dHJhY2tCeUtleShpbmRleDogbnVtYmVyLCBub2RlOiBNZW51Tm9kZSk6IGFueSB7XG5cdFx0cmV0dXJuIG5vZGUua2V5O1xuXHR9XG5cblx0b25NZW51SXRlbUNsaWNrKCkge1xuXHRcdGlmICh0aGlzLmlzTW9iaWxlKCkpIHtcblx0XHRcdHRoaXMubGF5b3V0U2VydmljZS5jbG9zZU1vYmlsZU1lbnUoKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcblx0XHR0aGlzLmZpbHRlcmVkTm9kZXMuc2V0KHRoaXMubWVudU5vZGVzKCkgfHwgW10pO1xuXHR9XG5cblx0b25BY3Rpb25JdGVtQ2xpY2sobm9kZTogTWVudU5vZGUsIGV2ZW50OiBFdmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRpZiAoIW5vZGUuYWN0aW9uIHx8IG5vZGUuYWN0aW9uTG9hZGluZykgcmV0dXJuO1xuXG5cdFx0Ly8gQ2FuY2VsIGFueSBwcmV2aW91cyBhY3Rpb24gcmVxdWVzdFxuXHRcdHRoaXMuYWN0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG5cdFx0bm9kZS5hY3Rpb25Mb2FkaW5nID0gdHJ1ZTtcblxuXHRcdGNvbnN0IHJlcXVlc3QkID1cblx0XHRcdG5vZGUuYWN0aW9uLm1ldGhvZCA9PT0gJ0dFVCcgP1xuXHRcdFx0XHR0aGlzLmh0dHAuZ2V0KG5vZGUuYWN0aW9uLnVybClcblx0XHRcdDpcdHRoaXMuaHR0cC5wb3N0KG5vZGUuYWN0aW9uLnVybCwgbm9kZS5hY3Rpb24uYm9keSA/PyB7fSk7XG5cblx0XHR0aGlzLmFjdGlvblN1YnNjcmlwdGlvbiA9IHJlcXVlc3QkLnN1YnNjcmliZSh7XG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuXHRcdFx0XHRub2RlLmFjdGlvbkxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0Y29uc3Qgcm91dGUgPSB0aGlzLmJ1aWxkU3VjY2Vzc1JvdXRlKG5vZGUuYWN0aW9uISwgcmVzcG9uc2UpO1xuXHRcdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcblx0XHRcdFx0dGhpcy5vbk1lbnVJdGVtQ2xpY2soKTtcblx0XHRcdH0sXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xuXHRcdFx0XHRub2RlLmFjdGlvbkxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgYnVpbGRTdWNjZXNzUm91dGUoYWN0aW9uOiBNZW51SXRlbUFjdGlvbiwgcmVzcG9uc2U6IGFueSk6IHN0cmluZyB7XG5cdFx0aWYgKCFhY3Rpb24uc3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXkpIHJldHVybiBhY3Rpb24uc3VjY2Vzc1JvdXRlO1xuXG5cdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlQnlQYXRoKHJlc3BvbnNlLCBhY3Rpb24uc3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXkpO1xuXHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gYWN0aW9uLnN1Y2Nlc3NSb3V0ZTtcblxuXHRcdHJldHVybiBgJHthY3Rpb24uc3VjY2Vzc1JvdXRlfS8ke3ZhbHVlfWA7XG5cdH1cblxuXHRwcml2YXRlIGdldFZhbHVlQnlQYXRoKG9iajogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkge1xuXHRcdGlmICghb2JqIHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG5cdFx0cmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnQsIGtleSkgPT4ge1xuXHRcdFx0aWYgKGN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuXG5cdFx0XHQvLyBIYW5kbGUgYXJyYXkgYWNjZXNzIGxpa2UgJ3Jlc3VsdFswXSdcblx0XHRcdGNvbnN0IGFycmF5TWF0Y2ggPSBrZXkubWF0Y2goL14oLis/KVxcWyhcXGQrKVxcXSQvKTtcblx0XHRcdGlmIChhcnJheU1hdGNoKSB7XG5cdFx0XHRcdGNvbnN0IGFycmF5S2V5ID0gYXJyYXlNYXRjaFsxXTtcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBwYXJzZUludChhcnJheU1hdGNoWzJdLCAxMCk7XG5cdFx0XHRcdHJldHVybiBjdXJyZW50W2FycmF5S2V5XT8uW2luZGV4XTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGN1cnJlbnRba2V5XTtcblx0XHR9LCBvYmopO1xuXHR9XG5cblx0b25Db2xsYXBzZWRJdGVtQ2xpY2sobm9kZTogTWVudU5vZGUpIHtcblx0XHRpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuXHRcdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLm9uTWVudVRvZ2dsZSgpO1xuXHRcdH1cblx0XHR0aGlzLmNsb3NlT3RoZXJUb3BMZXZlbE5vZGVzKG5vZGUpO1xuXHRcdGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuXHRcdFx0bm9kZS5leHBhbmRlZCA9IHRydWU7XG5cdFx0fVxuXHRcdHRoaXMuZmlsdGVyZWROb2Rlcy5zZXQoWy4uLnRoaXMuZmlsdGVyZWROb2RlcygpXSk7XG5cdFx0aWYgKG5vZGUucm91dGVyTGluaykge1xuXHRcdFx0dGhpcy5vbk1lbnVJdGVtQ2xpY2soKTtcblx0XHR9XG5cdH1cblxuXHRvblNlYXJjaENoYW5nZSgpOiB2b2lkIHtcblx0XHRjb25zdCBjdXJyZW50U2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybSgpPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XG5cdFx0aWYgKCFjdXJyZW50U2VhcmNoVGVybSkge1xuXHRcdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLm1lbnVOb2RlcygpIHx8IFtdKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5maWx0ZXJlZE5vZGVzLnNldCh0aGlzLmZpbHRlck5vZGVzKHRoaXMubWVudU5vZGVzKCksIGN1cnJlbnRTZWFyY2hUZXJtKSk7XG5cdH1cblxuXHRwcml2YXRlIGZpbHRlck5vZGVzKG5vZGVzOiBNZW51Tm9kZVtdLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51Tm9kZVtdIHtcblx0XHRjb25zdCBmaWx0ZXJlZDogTWVudU5vZGVbXSA9IFtdO1xuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcblxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuXHRcdFx0Ly8gQ29udmVydCBsYWJlbCB0byBzdHJpbmcgZm9yIHNlYXJjaCBiYXNlZCBvbiBhY3RpdmUgbGFuZ3VhZ2Vcblx0XHRcdGNvbnN0IGxhYmVsVGV4dCA9XG5cdFx0XHRcdHR5cGVvZiBub2RlLmxhYmVsID09PSAnc3RyaW5nJyA/XG5cdFx0XHRcdFx0bm9kZS5sYWJlbFxuXHRcdFx0XHQ6XHQobm9kZS5sYWJlbCBhcyBhbnkpPy5bY3VycmVudExhbmddIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LnRyIHx8IChub2RlLmxhYmVsIGFzIGFueSk/LmVuIHx8ICcnO1xuXG5cdFx0XHRjb25zdCBtYXRjaGVzID0gbGFiZWxUZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XG5cdFx0XHRsZXQgZmlsdGVyZWRDaGlsZHJlbjogTWVudU5vZGVbXSA9IFtdO1xuXG5cdFx0XHRpZiAobm9kZS5jaGlsZHJlbikge1xuXHRcdFx0XHRmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJOb2Rlcyhub2RlLmNoaWxkcmVuLCBzZWFyY2hUZXJtKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1hdGNoZXMgfHwgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZpbHRlcmVkLnB1c2goe1xuXHRcdFx0XHRcdC4uLm5vZGUsXG5cdFx0XHRcdFx0Y2hpbGRyZW46IGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMCA/IGZpbHRlcmVkQ2hpbGRyZW4gOiBub2RlLmNoaWxkcmVuLFxuXHRcdFx0XHRcdGV4cGFuZGVkOiBmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDBcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZpbHRlcmVkO1xuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RhdGljLXNpZGViYXJcIiBbY2xhc3MuY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkXCI+XHJcblx0PGRpdiBjbGFzcz1cInN0YXRpYy1zaWRlYmFyLWNvbnRlbnRcIj5cclxuXHRcdEBpZiAoIWlzQ29sbGFwc2VkKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCIgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiAnJ1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiPlxyXG5cdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zZWFyY2ggc2VhcmNoLWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRwSW5wdXRUZXh0XHJcblx0XHRcdFx0XHRcdHZhcmlhbnQ9XCJmaWxsZWRcIlxyXG5cdFx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwidCgnc2VhcmNoJylcIlxyXG5cdFx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG5cdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgpXCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJzZWFyY2gtc3RhdGljLXNpZGViYXJcIiAvPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PHAtc2Nyb2xsUGFuZWwgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnY2FsYygxMDB2aCAtIDEzMHB4KScgfVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ0cmVlLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0QGZvciAobm9kZSBvZiBmaWx0ZXJlZE5vZGVzKCk7IHRyYWNrIHRyYWNrQnlLZXkoJGluZGV4LCBub2RlKSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZU5vZGVUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUsIGxldmVsOiAwIH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9wLXNjcm9sbFBhbmVsPlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDwhLS0gQ29sbGFwc2VkIG1vZGUgLSBvbmx5IGljb25zIC0tPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sbGFwc2VkLWNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdEBmb3IgKG5vZGUgb2YgdG9wTGV2ZWxOb2RlczsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIG5vZGUpKSB7XHJcblx0XHRcdFx0XHRAaWYgKG5vZGUuYWN0aW9uICYmICghbm9kZS5jaGlsZHJlbiB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY29sbGFwc2VkLWl0ZW0gaXMtYWN0aW9uXCJcclxuXHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpXCJcclxuXHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmFjdGlvbi1sb2FkaW5nXT1cIm5vZGUuYWN0aW9uTG9hZGluZ1wiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uQWN0aW9uSXRlbUNsaWNrKG5vZGUsICRldmVudClcIj5cclxuXHRcdFx0XHRcdFx0XHRAaWYgKG5vZGUuYWN0aW9uTG9hZGluZykge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvbiBwaSBwaS1zcGluIHBpLXNwaW5uZXJcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fSBAZWxzZSBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktY2lyY2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9IEBlbHNlIGlmIChub2RlLnJvdXRlckxpbmsgJiYgKCFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY29sbGFwc2VkLWl0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJnZXRMb2NhbFRleHQobm9kZS5sYWJlbClcIlxyXG5cdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdFx0XHRbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0XHRcdFtjbGFzcy5hY3RpdmVdPVwiaXNUb3BMZXZlbE5vZGVBY3RpdmUobm9kZSlcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJvbkNvbGxhcHNlZEl0ZW1DbGljayhub2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNvbGxhcHNlZC1pY29uXCIgW2NsYXNzXT1cIm5vZGUuaWNvblwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb24gcGkgcGktY2lyY2xlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PC9hPlxyXG5cdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cImNvbGxhcHNlZC1pdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpXCJcclxuXHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcblx0XHRcdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc1RvcExldmVsTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uQ29sbGFwc2VkSXRlbUNsaWNrKG5vZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0QGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiY29sbGFwc2VkLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjb2xsYXBzZWQtaWNvbiBwaSBwaS1jaXJjbGVcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8IS0tIFJlY3Vyc2l2ZSBUcmVlIE5vZGUgVGVtcGxhdGUgLS0+XHJcblx0PG5nLXRlbXBsYXRlICN0cmVlTm9kZVRlbXBsYXRlIGxldC1ub2RlIGxldC1sZXZlbD1cImxldmVsXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCIgW25nQ2xhc3NdPVwiJ2xldmVsLScgKyBsZXZlbFwiPlxyXG5cdFx0XHRAaWYgKG5vZGUuYWN0aW9uKSB7XHJcblx0XHRcdFx0PCEtLSBBY3Rpb24gaXRlbTogSFRUUCBQT1NUIG9uIGNsaWNrLCB0aGVuIG5hdmlnYXRlIC0tPlxyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGNsYXNzPVwibm9kZS1pdGVtIGlzLWFjdGlvblwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaGFzLWNoaWxkcmVuXT1cIm5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXCJcclxuXHRcdFx0XHRcdFtjbGFzcy5hY3Rpb24tbG9hZGluZ109XCJub2RlLmFjdGlvbkxvYWRpbmdcIlxyXG5cdFx0XHRcdFx0W3BUb29sdGlwXT1cIiFpc01vYmlsZSgpICYmIGlzVGV4dFRydW5jYXRlZChub2RlLmxhYmVsLCBhY3RpdmVMYW5nKCksIGxldmVsKSA/IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSA6ICcnXCJcclxuXHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbkFjdGlvbkl0ZW1DbGljayhub2RlLCAkZXZlbnQpXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm9kZS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ0blwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU5vZGUobm9kZSwgbGV2ZWwpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWNoZXZyb24tcmlnaHRdPVwiIW5vZGUuZXhwYW5kZWRcIiBbY2xhc3MucGktY2hldnJvbi1kb3duXT1cIm5vZGUuZXhwYW5kZWRcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5hY3Rpb25Mb2FkaW5nKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb24gcGkgcGktc3BpbiBwaS1zcGlubmVyXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9IEBlbHNlIGlmIChub2RlLmljb24pIHtcclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm5vZGUtaWNvblwiIFtjbGFzc109XCJub2RlLmljb25cIj48L2k+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJub2RlLWxhYmVsXCI+e3sgZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH0gQGVsc2UgaWYgKG5vZGUucm91dGVyTGluaykge1xyXG5cdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJub2RlLWl0ZW1cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc0NoaWxkTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5vZGUubGFiZWwsIGFjdGl2ZUxhbmcoKSwgbGV2ZWwpID8gZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIDogJydcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygpXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm9kZS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ0blwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU5vZGUobm9kZSwgbGV2ZWwpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWNoZXZyb24tcmlnaHRdPVwiIW5vZGUuZXhwYW5kZWRcIiBbY2xhc3MucGktY2hldnJvbi1kb3duXT1cIm5vZGUuZXhwYW5kZWRcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvYT5cclxuXHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0PGRpdlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJub2RlLWl0ZW1cIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmhhcy1jaGlsZHJlbl09XCJub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMFwiXHJcblx0XHRcdFx0XHRbY2xhc3MuaXMtcGFnZV09XCJub2RlLnJvdXRlckxpbmtcIlxyXG5cdFx0XHRcdFx0W2NsYXNzLmFjdGl2ZV09XCJpc0NoaWxkTm9kZUFjdGl2ZShub2RlKVwiXHJcblx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiIWlzTW9iaWxlKCkgJiYgaXNUZXh0VHJ1bmNhdGVkKG5vZGUubGFiZWwsIGFjdGl2ZUxhbmcoKSwgbGV2ZWwpID8gZ2V0TG9jYWxUZXh0KG5vZGUubGFiZWwpIDogJydcIlxyXG5cdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cInRvZ2dsZU5vZGUobm9kZSwgbGV2ZWwpXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibm9kZS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ0blwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU5vZGUobm9kZSwgbGV2ZWwpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpXCIgW2NsYXNzLnBpLWNoZXZyb24tcmlnaHRdPVwiIW5vZGUuZXhwYW5kZWRcIiBbY2xhc3MucGktY2hldnJvbi1kb3duXT1cIm5vZGUuZXhwYW5kZWRcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpZiAobm9kZS5pY29uKSB7XHJcblx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJub2RlLWljb25cIiBbY2xhc3NdPVwibm9kZS5pY29uXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibm9kZS1sYWJlbFwiPnt7IGdldExvY2FsVGV4dChub2RlLmxhYmVsKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuXHRcdFx0QGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuZXhwYW5kZWQpIHtcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyXCIgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiPlxyXG5cdFx0XHRcdFx0QGZvciAoY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgdHJhY2sgdHJhY2tCeUtleSgkaW5kZXgsIGNoaWxkKSkge1xyXG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRcdFx0Km5nVGVtcGxhdGVPdXRsZXQ9XCJ0cmVlTm9kZVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGxldmVsOiBsZXZlbCArIDEgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -7,6 +7,7 @@ import { DividerModule } from 'primeng/divider';
|
|
|
7
7
|
import { DropdownModule } from 'primeng/dropdown';
|
|
8
8
|
import { MenubarModule } from 'primeng/menubar';
|
|
9
9
|
import { TranslocoModule } from '@ngneat/transloco';
|
|
10
|
+
import { bridge } from 'aril/boot/bridge';
|
|
10
11
|
import { Apps } from 'aril/boot/config/apps';
|
|
11
12
|
import { LayoutService } from '../../service/app.layout.service';
|
|
12
13
|
import { LanguageCode } from '../../service/interfaces/enum';
|
|
@@ -94,8 +95,10 @@ export class AppTopbarComponent {
|
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
setLogoPath() {
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
const activeHost = bridge.activeHost();
|
|
99
|
+
const activeMF = bridge.activeMF();
|
|
100
|
+
if (activeHost) {
|
|
101
|
+
switch (activeHost) {
|
|
99
102
|
case Apps.YEAP:
|
|
100
103
|
this.logoPath = 'assets/images/yeap-logo-dark.png';
|
|
101
104
|
break;
|
|
@@ -110,7 +113,7 @@ export class AppTopbarComponent {
|
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
115
|
else {
|
|
113
|
-
switch (
|
|
116
|
+
switch (activeMF) {
|
|
114
117
|
case Apps.HES:
|
|
115
118
|
case Apps.CTS:
|
|
116
119
|
case Apps.SIS:
|
|
@@ -152,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
152
155
|
type: ViewChild,
|
|
153
156
|
args: ['menubutton']
|
|
154
157
|
}] } });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3RvcGJhci9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7O0FBbUJwRixNQUFNLE9BQU8sa0JBQWtCO0lBZ0I5QixZQUNrQixnQkFBa0MsRUFDbEMs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QUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1AsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO29CQUM5QyxNQUFNO2dCQUNQO29CQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDaEQsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDOzhHQXBJVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnTEN0Qy9CLCttR0FxRkEsdTFFRDVERSxZQUFZLGdlQUNaLGFBQWEsaURBQ2IsV0FBVyw4VkFDWCxhQUFhLDBKQUNiLFdBQVcsME1BQ1gsYUFBYSw4QkFDYixjQUFjLDJxQ0FDZCxlQUFlLGlPQUNmLHNCQUFzQjs7MkZBS1gsa0JBQWtCO2tCQWpCOUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sWUFBWSxXQUNiO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3RCOytJQUt3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBQdWJTdWJTZXJ2aWNlIH0gZnJvbSAnYXJpbC91dGlsL3B1Yi1zdWInO1xyXG5cclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXBwLmxheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VDb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbnRlcmZhY2VzL2VudW0nO1xyXG5pbXBvcnQgeyBMYW5ndWFnZSwgTGFuZ3VhZ2VDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgR2VuZXJhbFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2dlbmVyYWwtc2VhcmNoL2dlbmVyYWwtc2VhcmNoLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHNlbGVjdG9yOiAnYXBwLXRvcGJhcicsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0QnV0dG9uTW9kdWxlLFxyXG5cdFx0VXBwZXJDYXNlUGlwZSxcclxuXHRcdEZvcm1zTW9kdWxlLFxyXG5cdFx0RGl2aWRlck1vZHVsZSxcclxuXHRcdEJhZGdlTW9kdWxlLFxyXG5cdFx0TWVudWJhck1vZHVsZSxcclxuXHRcdERyb3Bkb3duTW9kdWxlLFxyXG5cdFx0VHJhbnNsb2NvTW9kdWxlLFxyXG5cdFx0R2VuZXJhbFNlYXJjaENvbXBvbmVudFxyXG5cdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FwcC50b3BiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL2FwcC50b3BiYXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwVG9wYmFyQ29tcG9uZW50IHtcclxuXHRAVmlld0NoaWxkKCdtZW51YnV0dG9uJykgbWVudUJ1dHRvbiE6IEVsZW1lbnRSZWY7XHJcblxyXG5cdHVzZXJuYW1lITogc3RyaW5nO1xyXG5cdGxheW91dFNlcnZpY2UgPSBpbmplY3QoTGF5b3V0U2VydmljZSk7XHJcblx0c2VhcmNoOiBzdHJpbmcgPSAnJztcclxuXHJcblx0bG9nb1BhdGg6IHN0cmluZyA9ICcnO1xyXG5cdGN1cnJlbnRGbGFnUGF0aDogc3RyaW5nID0gJyc7XHJcblx0Y3VycmVudExhbmc6IExhbmd1YWdlQ29kZSA9IChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZycpIGFzIExhbmd1YWdlQ29kZSkgfHwgTGFuZ3VhZ2VDb2RlLlRSO1xyXG5cclxuXHRsYW5ndWFnZXM6IExhbmd1YWdlW10gPSBbXHJcblx0XHR7IG5hbWU6ICdUUicsIGNvZGU6IExhbmd1YWdlQ29kZS5UUiwgZmxhZzogJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvdHIuc3ZnJyB9LFxyXG5cdFx0eyBuYW1lOiAnRU4nLCBjb2RlOiBMYW5ndWFnZUNvZGUuRU4sIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL2diLnN2ZycgfVxyXG5cdF07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBwdWJTdWJTZXJ2aWNlOiBQdWJTdWJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBrZXljbG9hazogS2V5Y2xvYWtTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHR0aGlzLnRyYW5zbG9jb1NlcnZpY2Uuc2V0QWN0aXZlTGFuZyh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMucHVibGlzaExhbmd1YWdlQ2hhbmdlKHRoaXMuY3VycmVudExhbmcpO1xyXG5cdFx0dGhpcy5zZXRGbGFnUGF0aCh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMuc2V0TG9nb1BhdGgoKTtcclxuXHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpO1xyXG5cdH1cclxuXHJcblx0Z2V0IHVucmVhZENvdW50KCk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldFVucmVhZE5vdGlmaWNhdGlvbkNvdW50KCk7XHJcblx0fVxyXG5cclxuXHRvbk1lbnVCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5vbk1lbnVUb2dnbGUoKTtcclxuXHR9XHJcblxyXG5cdG9uUHJvZmlsZUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dQcm9maWxlU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25IaXN0b3J5QnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd0hpc3RvcnlTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvblNpdGVNYXBCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93U2l0ZU1hcFNpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uRmF2b3JpdGVQYWdlc0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dGYXZvcml0ZVBhZ2VzU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25Ob3RpZmljYXRpb25zQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbnNTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvbkxhbmd1YWdlQ2hhbmdlKCk6IHZvaWQge1xyXG5cdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCB0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHJcblx0XHR0aGlzLnRyYW5zbG9jb1NlcnZpY2Uuc2V0QWN0aXZlTGFuZyh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHJcblx0XHR3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcblxyXG5cdFx0dGhpcy5wdWJsaXNoTGFuZ3VhZ2VDaGFuZ2UodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHB1Ymxpc2hMYW5ndWFnZUNoYW5nZShsYW5ndWFnZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XHJcblx0XHRjb25zdCBldmVudDogTGFuZ3VhZ2VDaGFuZ2VFdmVudCA9IHtcclxuXHRcdFx0bmFtZTogJ2xhbmd1YWdlQ2hhbmdlZCcsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRwYXRoOiAnJyxcclxuXHRcdFx0XHRjdXN0b206IHtcclxuXHRcdFx0XHRcdGxhbmd1YWdlXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdHRoaXMucHViU3ViU2VydmljZS5wdWJsaXNoKGV2ZW50KTtcclxuXHR9XHJcblxyXG5cdHNldEZsYWdQYXRoKGxhbmc6IExhbmd1YWdlQ29kZSkge1xyXG5cdFx0c3dpdGNoIChsYW5nKSB7XHJcblx0XHRcdGNhc2UgTGFuZ3VhZ2VDb2RlLlRSOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvdHIuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBMYW5ndWFnZUNvZGUuRU46XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50RmxhZ1BhdGggPSAnYXNzZXRzL2ltYWdlcy9mbGFncy9nYi5zdmcnO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvdHIuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNldExvZ29QYXRoKCkge1xyXG5cdFx0aWYgKCg8YW55Pmdsb2JhbFRoaXMpLmFjdGl2ZUhvc3QpIHtcclxuXHRcdFx0c3dpdGNoICgoPGFueT5nbG9iYWxUaGlzKS5hY3RpdmVIb3N0KSB7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLllFQVA6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5USE9SOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3Rob3ItbG9nby1kYXJrLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuTEVOQTpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy9sZW5hLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRzd2l0Y2ggKCg8YW55Pmdsb2JhbFRoaXMpLmFjdGl2ZU1GKSB7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkhFUzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuQ1RTOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5TSVM6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMvbGVuYS1sb2dvLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuQ1JNOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5CSUxMSU5HOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5QQVlNRU5UOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5XRE06XHJcblx0XHRcdFx0Y2FzZSBBcHBzLk1ORzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuRE1TOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3Rob3ItbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLk1XOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3llYXAtbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28ucG5nJztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhclwiPlxyXG5cdDxkaXYgY2xhc3M9XCJ0b3BiYXItc3RhcnRcIj5cclxuXHRcdDxidXR0b24gI21lbnVidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidG9wYmFyLW1lbnVidXR0b24gcC1saW5rIHAtdHJpZ2dlclwiIChjbGljayk9XCJvbk1lbnVCdXR0b25DbGljaygpXCI+XHJcblx0XHRcdDxpIGNsYXNzPVwicGkgcGktYmFyc1wiPjwvaT5cclxuXHRcdDwvYnV0dG9uPlxyXG5cdFx0PGltZyBbc3JjXT1cImxvZ29QYXRoXCIgY2xhc3M9XCJ0b3BiYXItbG9nb1wiIGFsdD1cImxvZ29cIiAvPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLXNlYXJjaFwiICp0cmFuc2xvY289XCJsZXQgdDsgcmVhZDogJydcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuXHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcblx0XHRcdDxhcHAtZ2VuZXJhbC1zZWFyY2g+PC9hcHAtZ2VuZXJhbC1zZWFyY2g+XHJcblx0XHQ8L3NwYW4+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJ0b3BiYXItZW5kIG1yLTJcIj5cclxuXHRcdDx1bCBjbGFzcz1cInRvcGJhci1tZW51XCI+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b25cclxuXHRcdFx0XHRcdGljb249XCJwaSBwaS1zaXRlbWFwXCJcclxuXHRcdFx0XHRcdHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxyXG5cdFx0XHRcdFx0W3JvdW5kZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwib25TaXRlTWFwQnV0dG9uQ2xpY2soKVwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b25cclxuXHRcdFx0XHRcdGljb249XCJwaSBwaS1oaXN0b3J5XCJcclxuXHRcdFx0XHRcdHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxyXG5cdFx0XHRcdFx0W3JvdW5kZWRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwib25IaXN0b3J5QnV0dG9uQ2xpY2soKVwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b25cclxuXHRcdFx0XHRcdGljb249XCJwaSBwaS1oZWFydFwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uRmF2b3JpdGVQYWdlc0J1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cclxuXHRcdFx0PGxpIGNsYXNzPVwidG9wYmFyLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdDxwLWJ1dHRvbiBzZXZlcml0eT1cInNlY29uZGFyeVwiIFt0ZXh0XT1cInRydWVcIiBbcm91bmRlZF09XCJ0cnVlXCIgKGNsaWNrKT1cIm9uUHJvZmlsZUJ1dHRvbkNsaWNrKClcIj5cclxuXHRcdFx0XHRcdHt7IHVzZXJuYW1lWzBdIHwgdXBwZXJjYXNlIH19XHJcblx0XHRcdFx0PC9wLWJ1dHRvbj5cclxuXHRcdFx0PC9saT5cclxuXHRcdFx0PGxpIGNsYXNzPVwidG9wYmFyLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdDxwLWRpdmlkZXIgbGF5b3V0PVwidmVydGljYWxcIiBzdHlsZUNsYXNzPVwiaC0xcmVtIGJvcmRlci01MDAgbS0wXCIgLz5cclxuXHRcdFx0PC9saT5cclxuXHRcdFx0PGxpIGNsYXNzPVwidG9wYmFyLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLWJlbGwgbm90aWZpY2F0aW9uLWljb25cIlxyXG5cdFx0XHRcdFx0cEJhZGdlXHJcblx0XHRcdFx0XHRbdmFsdWVdPVwidW5yZWFkQ291bnQgPiAwID8gdW5yZWFkQ291bnQudG9TdHJpbmcoKSA6ICcwJ1wiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwib25Ob3RpZmljYXRpb25zQnV0dG9uQ2xpY2soKVwiPjwvaT5cclxuXHRcdFx0PC9saT5cclxuXHRcdFx0PGxpIGNsYXNzPVwidG9wYmFyLW1lbnUtaXRlbVwiPlxyXG5cdFx0XHRcdDxwLWRyb3Bkb3duXHJcblx0XHRcdFx0XHRbb3B0aW9uc109XCJsYW5ndWFnZXNcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJjdXJyZW50TGFuZ1wiXHJcblx0XHRcdFx0XHQob25DaGFuZ2UpPVwib25MYW5ndWFnZUNoYW5nZSgpXCJcclxuXHRcdFx0XHRcdG9wdGlvbkxhYmVsPVwibmFtZVwiXHJcblx0XHRcdFx0XHRvcHRpb25WYWx1ZT1cImNvZGVcIlxyXG5cdFx0XHRcdFx0W3Nob3dDbGVhcl09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRjbGFzcz1cImN1c3RvbS1kcm9wZG93biBtbC0zXCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbWcgW3NyY109XCJjdXJyZW50RmxhZ1BhdGhcIiBjbGFzcz1cImZsYWctaWNvblwiIGFsdD1cImZsYWdcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibGFuZ3VhZ2UtdGV4dFwiPnt7IGN1cnJlbnRMYW5nIHwgdXBwZXJjYXNlIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIFtzcmNdPVwiaXRlbS5mbGFnXCIgY2xhc3M9XCJmbGFnLWljb25cIiBhbHQ9XCJmbGFnXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8c3Bhbj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L3AtZHJvcGRvd24+XHJcblx0XHRcdDwvbGk+XHJcblx0XHQ8L3VsPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gPGFwcC1icmVhZGNydW1iIGNsYXNzPVwidG9wYmFyLWJyZWFkY3J1bWJcIj48L2FwcC1icmVhZGNydW1iPiAtLT5cclxuIl19
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvdG9wYmFyL2FwcC50b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL3RvcGJhci9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7OztBQW1CcEYs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QUFDLE9BQU8sQ0FBQztnQkFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLElBQUksQ0FBQyxHQUFHO29CQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1AsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO29CQUM5QyxNQUFNO2dCQUNQO29CQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsNkJBQTZCLENBQUM7WUFDaEQsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDOzhHQXRJVyxrQkFBa0I7a0dBQWxCLGtCQUFrQixnTEN2Qy9CLCttR0FxRkEsdTFFRDNERSxZQUFZLGdlQUNaLGFBQWEsaURBQ2IsV0FBVyw4VkFDWCxhQUFhLDBKQUNiLFdBQVcsME1BQ1gsYUFBYSw4QkFDYixjQUFjLDJxQ0FDZCxlQUFlLGlPQUNmLHNCQUFzQjs7MkZBS1gsa0JBQWtCO2tCQWpCOUIsU0FBUztpQ0FDRyxJQUFJLFlBQ04sWUFBWSxXQUNiO3dCQUNSLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixzQkFBc0I7cUJBQ3RCOytJQUt3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgRGl2aWRlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGl2aWRlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgUHViU3ViU2VydmljZSB9IGZyb20gJ2FyaWwvdXRpbC9wdWItc3ViJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW50ZXJmYWNlcy9lbnVtJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2UsIExhbmd1YWdlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi9nZW5lcmFsLXNlYXJjaC9nZW5lcmFsLXNlYXJjaC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC10b3BiYXInLFxyXG5cdGltcG9ydHM6IFtcclxuXHRcdEJ1dHRvbk1vZHVsZSxcclxuXHRcdFVwcGVyQ2FzZVBpcGUsXHJcblx0XHRGb3Jtc01vZHVsZSxcclxuXHRcdERpdmlkZXJNb2R1bGUsXHJcblx0XHRCYWRnZU1vZHVsZSxcclxuXHRcdE1lbnViYXJNb2R1bGUsXHJcblx0XHREcm9wZG93bk1vZHVsZSxcclxuXHRcdFRyYW5zbG9jb01vZHVsZSxcclxuXHRcdEdlbmVyYWxTZWFyY2hDb21wb25lbnRcclxuXHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9hcHAudG9wYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvcGJhckNvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVCdXR0b24hOiBFbGVtZW50UmVmO1xyXG5cclxuXHR1c2VybmFtZSE6IHN0cmluZztcclxuXHRsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xyXG5cdHNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cdGxvZ29QYXRoOiBzdHJpbmcgPSAnJztcclxuXHRjdXJyZW50RmxhZ1BhdGg6IHN0cmluZyA9ICcnO1xyXG5cdGN1cnJlbnRMYW5nOiBMYW5ndWFnZUNvZGUgPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSBhcyBMYW5ndWFnZUNvZGUpIHx8IExhbmd1YWdlQ29kZS5UUjtcclxuXHJcblx0bGFuZ3VhZ2VzOiBMYW5ndWFnZVtdID0gW1xyXG5cdFx0eyBuYW1lOiAnVFInLCBjb2RlOiBMYW5ndWFnZUNvZGUuVFIsIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2ZycgfSxcclxuXHRcdHsgbmFtZTogJ0VOJywgY29kZTogTGFuZ3VhZ2VDb2RlLkVOLCBmbGFnOiAnYXNzZXRzL2ltYWdlcy9mbGFncy9nYi5zdmcnIH1cclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgcHViU3ViU2VydmljZTogUHViU3ViU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWs6IEtleWNsb2FrU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnB1Ymxpc2hMYW5ndWFnZUNoYW5nZSh0aGlzLmN1cnJlbnRMYW5nKTtcclxuXHRcdHRoaXMuc2V0RmxhZ1BhdGgodGhpcy5jdXJyZW50TGFuZyk7XHJcblx0XHR0aGlzLnNldExvZ29QYXRoKCk7XHJcblxyXG5cdFx0dGhpcy51c2VybmFtZSA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlcm5hbWUoKTtcclxuXHR9XHJcblxyXG5cdGdldCB1bnJlYWRDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5nZXRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG5cdH1cclxuXHJcblx0b25NZW51QnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uub25NZW51VG9nZ2xlKCk7XHJcblx0fVxyXG5cclxuXHRvblByb2ZpbGVCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93UHJvZmlsZVNpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uSGlzdG9yeUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dIaXN0b3J5U2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25TaXRlTWFwQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcblx0XHR0aGlzLmxheW91dFNlcnZpY2Uuc2hvd1NpdGVNYXBTaWRlYmFyKCk7XHJcblx0fVxyXG5cclxuXHRvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpOiB2b2lkIHtcclxuXHRcdHRoaXMubGF5b3V0U2VydmljZS5zaG93RmF2b3JpdGVQYWdlc1NpZGViYXIoKTtcclxuXHR9XHJcblxyXG5cdG9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnNob3dOb3RpZmljYXRpb25zU2lkZWJhcigpO1xyXG5cdH1cclxuXHJcblx0b25MYW5ndWFnZUNoYW5nZSgpOiB2b2lkIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nJywgdGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0dGhpcy50cmFuc2xvY29TZXJ2aWNlLnNldEFjdGl2ZUxhbmcodGhpcy5jdXJyZW50TGFuZyk7XHJcblxyXG5cdFx0d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG5cclxuXHRcdHRoaXMucHVibGlzaExhbmd1YWdlQ2hhbmdlKHRoaXMuY3VycmVudExhbmcpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwdWJsaXNoTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZXZlbnQ6IExhbmd1YWdlQ2hhbmdlRXZlbnQgPSB7XHJcblx0XHRcdG5hbWU6ICdsYW5ndWFnZUNoYW5nZWQnLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0cGF0aDogJycsXHJcblx0XHRcdFx0Y3VzdG9tOiB7XHJcblx0XHRcdFx0XHRsYW5ndWFnZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnB1YlN1YlNlcnZpY2UucHVibGlzaChldmVudCk7XHJcblx0fVxyXG5cclxuXHRzZXRGbGFnUGF0aChsYW5nOiBMYW5ndWFnZUNvZGUpIHtcclxuXHRcdHN3aXRjaCAobGFuZykge1xyXG5cdFx0XHRjYXNlIExhbmd1YWdlQ29kZS5UUjpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgTGFuZ3VhZ2VDb2RlLkVOOlxyXG5cdFx0XHRcdHRoaXMuY3VycmVudEZsYWdQYXRoID0gJ2Fzc2V0cy9pbWFnZXMvZmxhZ3MvZ2Iuc3ZnJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRGbGFnUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2ZsYWdzL3RyLnN2Zyc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRMb2dvUGF0aCgpIHtcclxuXHRcdGNvbnN0IGFjdGl2ZUhvc3QgPSBicmlkZ2UuYWN0aXZlSG9zdCgpO1xyXG5cdFx0Y29uc3QgYWN0aXZlTUYgPSBicmlkZ2UuYWN0aXZlTUYoKTtcclxuXHRcdGlmIChhY3RpdmVIb3N0KSB7XHJcblx0XHRcdHN3aXRjaCAoYWN0aXZlSG9zdCkge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL3llYXAtbG9nby1kYXJrLnBuZyc7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28tZGFyay5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkxFTkE6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMvbGVuYS1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLWRhcmsucG5nJztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3dpdGNoIChhY3RpdmVNRikge1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuU0lTOlxyXG5cdFx0XHRcdFx0dGhpcy5sb2dvUGF0aCA9ICdhc3NldHMvaW1hZ2VzL2xlbmEtbG9nby5wbmcnO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0XHRjYXNlIEFwcHMuUEFZTUVOVDpcclxuXHRcdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0Y2FzZSBBcHBzLkRNUzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy90aG9yLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRcdHRoaXMubG9nb1BhdGggPSAnYXNzZXRzL2ltYWdlcy95ZWFwLWxvZ28ucG5nJztcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR0aGlzLmxvZ29QYXRoID0gJ2Fzc2V0cy9pbWFnZXMveWVhcC1sb2dvLnBuZyc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLXN0YXJ0XCI+XHJcblx0XHQ8YnV0dG9uICNtZW51YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRvcGJhci1tZW51YnV0dG9uIHAtbGluayBwLXRyaWdnZXJcIiAoY2xpY2spPVwib25NZW51QnV0dG9uQ2xpY2soKVwiPlxyXG5cdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWJhcnNcIj48L2k+XHJcblx0XHQ8L2J1dHRvbj5cclxuXHRcdDxpbWcgW3NyY109XCJsb2dvUGF0aFwiIGNsYXNzPVwidG9wYmFyLWxvZ29cIiBhbHQ9XCJsb2dvXCIgLz5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRvcGJhci1zZWFyY2hcIiAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICcnXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInAtaW5wdXQtaWNvbi1sZWZ0XCI+XHJcblx0XHRcdDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG5cdFx0XHQ8YXBwLWdlbmVyYWwtc2VhcmNoPjwvYXBwLWdlbmVyYWwtc2VhcmNoPlxyXG5cdFx0PC9zcGFuPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwidG9wYmFyLWVuZCBtci0yXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJ0b3BiYXItbWVudVwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktc2l0ZW1hcFwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uU2l0ZU1hcEJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGlzdG9yeVwiXHJcblx0XHRcdFx0XHRzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFtyb3VuZGVkXT1cInRydWVcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uSGlzdG9yeUJ1dHRvbkNsaWNrKClcIiAvPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJ0b3BiYXItbWVudS1pdGVtXCI+XHJcblx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRpY29uPVwicGkgcGktaGVhcnRcIlxyXG5cdFx0XHRcdFx0c2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG5cdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRbcm91bmRlZF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJvbkZhdm9yaXRlUGFnZXNCdXR0b25DbGljaygpXCIgLz5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1idXR0b24gc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIiBbdGV4dF09XCJ0cnVlXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIChjbGljayk9XCJvblByb2ZpbGVCdXR0b25DbGljaygpXCI+XHJcblx0XHRcdFx0XHR7eyB1c2VybmFtZVswXSB8IHVwcGVyY2FzZSB9fVxyXG5cdFx0XHRcdDwvcC1idXR0b24+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCIgc3R5bGVDbGFzcz1cImgtMXJlbSBib3JkZXItNTAwIG0tMFwiIC8+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1iZWxsIG5vdGlmaWNhdGlvbi1pY29uXCJcclxuXHRcdFx0XHRcdHBCYWRnZVxyXG5cdFx0XHRcdFx0W3ZhbHVlXT1cInVucmVhZENvdW50ID4gMCA/IHVucmVhZENvdW50LnRvU3RyaW5nKCkgOiAnMCdcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uc0J1dHRvbkNsaWNrKClcIj48L2k+XHJcblx0XHRcdDwvbGk+XHJcblx0XHRcdDxsaSBjbGFzcz1cInRvcGJhci1tZW51LWl0ZW1cIj5cclxuXHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwibGFuZ3VhZ2VzXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiY3VycmVudExhbmdcIlxyXG5cdFx0XHRcdFx0KG9uQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG5cdFx0XHRcdFx0b3B0aW9uVmFsdWU9XCJjb2RlXCJcclxuXHRcdFx0XHRcdFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJjdXN0b20tZHJvcGRvd24gbWwtM1wiPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1nIFtzcmNdPVwiY3VycmVudEZsYWdQYXRoXCIgY2xhc3M9XCJmbGFnLWljb25cIiBhbHQ9XCJmbGFnXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImxhbmd1YWdlLXRleHRcIj57eyBjdXJyZW50TGFuZyB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0PGltZyBbc3JjXT1cIml0ZW0uZmxhZ1wiIGNsYXNzPVwiZmxhZy1pY29uXCIgYWx0PVwiZmxhZ1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLWRyb3Bkb3duPlxyXG5cdFx0XHQ8L2xpPlxyXG5cdFx0PC91bD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIDxhcHAtYnJlYWRjcnVtYiBjbGFzcz1cInRvcGJhci1icmVhZGNydW1iXCI+PC9hcHAtYnJlYWRjcnVtYj4gLS0+XHJcbiJdfQ==
|
|
@@ -1,13 +1,25 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, HostListener, input } from '@angular/core';
|
|
2
2
|
import { FlexGridDirective, FormErrorMessageDirective } from 'aril/ui/lib';
|
|
3
|
+
import { FormSubmitButtonComponent } from './form-submit-button.component';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "aril/ui/lib";
|
|
5
6
|
export class FormComponent {
|
|
6
7
|
constructor() {
|
|
7
8
|
this.formGroup = input.required();
|
|
8
9
|
}
|
|
10
|
+
onEnterKey(event) {
|
|
11
|
+
if (!this.submitButton)
|
|
12
|
+
return;
|
|
13
|
+
const target = event.target;
|
|
14
|
+
if (target.tagName === 'TEXTAREA')
|
|
15
|
+
return;
|
|
16
|
+
if (target.closest('p-chips'))
|
|
17
|
+
return;
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
this.submitButton.submit();
|
|
20
|
+
}
|
|
9
21
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.2", type: FormComponent, selector: "aril-form", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.FlexGridDirective }, { directive: i1.FormErrorMessageDirective, inputs: ["formErrorMessage", "formGroup"] }], ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.2", type: FormComponent, selector: "aril-form", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "keydown.enter": "onEnterKey($event)" } }, queries: [{ propertyName: "submitButton", first: true, predicate: FormSubmitButtonComponent, descendants: true }], hostDirectives: [{ directive: i1.FlexGridDirective }, { directive: i1.FormErrorMessageDirective, inputs: ["formErrorMessage", "formGroup"] }], ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11
23
|
}
|
|
12
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FormComponent, decorators: [{
|
|
13
25
|
type: Component,
|
|
@@ -23,5 +35,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
23
35
|
],
|
|
24
36
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
25
37
|
}]
|
|
26
|
-
}]
|
|
27
|
-
|
|
38
|
+
}], propDecorators: { submitButton: [{
|
|
39
|
+
type: ContentChild,
|
|
40
|
+
args: [FormSubmitButtonComponent]
|
|
41
|
+
}], onEnterKey: [{
|
|
42
|
+
type: HostListener,
|
|
43
|
+
args: ['keydown.enter', ['$event']]
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpL2Zvcm0vc3JjL2Zvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFjM0UsTUFBTSxPQUFPLGFBQWE7SUFaMUI7UUFhQyxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO0tBaUJ4QztJQVpBLFVBQVUsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFFM0MsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFVBQVU7WUFBRSxPQUFPO1FBRTFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFBRSxPQUFPO1FBRXRDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBakJXLGFBQWE7a0dBQWIsYUFBYSwwU0FHWCx5QkFBeUIsK0xBYjdCLDZCQUE2Qjs7MkZBVTNCLGFBQWE7a0JBWnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLGNBQWMsRUFBRTt3QkFDZixpQkFBaUI7d0JBQ2pCOzRCQUNDLFNBQVMsRUFBRSx5QkFBeUI7NEJBQ3BDLE1BQU0sRUFBRSxDQUFDLDZCQUE2QixDQUFDO3lCQUN2QztxQkFDRDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0M7OEJBSXlDLFlBQVk7c0JBQXBELFlBQVk7dUJBQUMseUJBQXlCO2dCQUd2QyxVQUFVO3NCQURULFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBIb3N0TGlzdGVuZXIsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEZsZXhHcmlkRGlyZWN0aXZlLCBGb3JtRXJyb3JNZXNzYWdlRGlyZWN0aXZlIH0gZnJvbSAnYXJpbC91aS9saWInO1xyXG5pbXBvcnQgeyBGb3JtU3VibWl0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1mb3JtJyxcclxuXHR0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtcclxuXHRcdEZsZXhHcmlkRGlyZWN0aXZlLFxyXG5cdFx0e1xyXG5cdFx0XHRkaXJlY3RpdmU6IEZvcm1FcnJvck1lc3NhZ2VEaXJlY3RpdmUsXHJcblx0XHRcdGlucHV0czogWydmb3JtRXJyb3JNZXNzYWdlOiBmb3JtR3JvdXAnXVxyXG5cdFx0fVxyXG5cdF0sXHJcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQge1xyXG5cdGZvcm1Hcm91cCA9IGlucHV0LnJlcXVpcmVkPEZvcm1Hcm91cD4oKTtcclxuXHJcblx0QENvbnRlbnRDaGlsZChGb3JtU3VibWl0QnV0dG9uQ29tcG9uZW50KSBzdWJtaXRCdXR0b24/OiBGb3JtU3VibWl0QnV0dG9uQ29tcG9uZW50O1xyXG5cclxuXHRASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcclxuXHRvbkVudGVyS2V5KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLnN1Ym1pdEJ1dHRvbikgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuXHJcblx0XHRpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScpIHJldHVybjtcclxuXHJcblx0XHRpZiAodGFyZ2V0LmNsb3Nlc3QoJ3AtY2hpcHMnKSkgcmV0dXJuO1xyXG5cclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLnN1Ym1pdEJ1dHRvbi5zdWJtaXQoKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -3,7 +3,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { AutoComplete, AutoCompleteModule } from 'primeng/autocomplete';
|
|
5
5
|
import { ObjectUtils } from 'primeng/utils';
|
|
6
|
-
import { Subject, switchMap } from 'rxjs';
|
|
6
|
+
import { Subject, filter, switchMap } from 'rxjs';
|
|
7
7
|
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
8
8
|
import { Apps } from 'aril/boot/config/apps';
|
|
9
9
|
import { BaseInputComponent, ValueAccessorDirective } from 'aril/ui/lib';
|
|
@@ -59,6 +59,18 @@ export class AssetPickerComponent extends BaseInputComponent {
|
|
|
59
59
|
this.search({ query: searchQuery });
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
+
// React to programmatic patches (createFormDataObject / patchAssetResponseToForm)
|
|
63
|
+
this.ngControl?.control?.valueChanges
|
|
64
|
+
.pipe(filter(value => value &&
|
|
65
|
+
typeof value === 'object' &&
|
|
66
|
+
'text' in value &&
|
|
67
|
+
!('attributes' in value)), takeUntilDestroyed(this.destroyRef))
|
|
68
|
+
.subscribe(value => {
|
|
69
|
+
if (!this.isUpdateMode()) {
|
|
70
|
+
this.isUpdateMode.set(true);
|
|
71
|
+
this.search({ query: value.text });
|
|
72
|
+
}
|
|
73
|
+
});
|
|
62
74
|
}
|
|
63
75
|
refreshFilteredSelectionItems() {
|
|
64
76
|
if (!this.selectionDefinitions)
|
|
@@ -187,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
187
199
|
}], selectedDefinitionEvent: [{
|
|
188
200
|
type: Output
|
|
189
201
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvYXNzZXRQaWNrZXIvc3JjL2Fzc2V0LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2Fzc2V0UGlja2VyL3NyYy9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7QUF1Q3pFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFzQjNELFlBQ2tCLElBQWdCLEVBQzFCLGdCQUFrQyxFQUN4QixxQkFBNEM7UUFFN0QsS0FBSyxFQUFFLENBQUM7UUFKUyxTQUFJLEdBQUosSUFBSSxD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L0JBNEJBLDhSRGtDVyxtQkFBbUIseVRBQUUsa0JBQWtCOzsyRkFHckMsb0JBQW9CO2tCQTNCaEMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sZ0dBQWdHLFdBc0JqRyxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLGtCQUNsQyxDQUFDLHNCQUFzQixDQUFDO2tKQUdmLGVBQWU7c0JBQXZDLFNBQVM7dUJBQUMsWUFBWTtnQkFtQmIsdUJBQXVCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENvbXBvbmVudCxcclxuXHREZXN0cm95UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdDaGlsZCxcclxuXHRlZmZlY3QsXHJcblx0aW5qZWN0LFxyXG5cdGlucHV0LFxyXG5cdHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGUsIEF1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7XHJcblx0QXNzZXRBZ2dyZWdhdGUsXHJcblx0QXR0cmlidXRlRWxlbWVudCxcclxuXHRDYWNoZVNlYXJjaFJlcXVlc3REVE8sXHJcblx0RGVmYXVsdFNlYXJjaEFnZ3JlZ2F0ZUFzc2V0QWdncmVnYXRlLFxyXG5cdFN1Z2dlc3Rpb25zRFRPLFxyXG5cdFN1Z2dlc3Rpb25zR3JvdXBEVE9cclxufSBmcm9tICcuL2ludGVyZmFjZSc7XHJcblxyXG50eXBlIFZhbHVlVHlwZXMgPSAndGV4dCcgfCAnbnVtYmVyJztcclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtYXNzZXQtcGlja2VyW25nTW9kZWxdLCBhcmlsLWFzc2V0LXBpY2tlcltmb3JtQ29udHJvbF0sIGFyaWwtYXNzZXQtcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlczogW1xyXG5cdFx0YFxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLW11bHRpcGxlLWNvbnRhaW5lciB7XHJcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0XHRcdG1heC1oZWlnaHQ6IDUwcHg7XHJcblx0XHRcdFx0b3ZlcmZsb3cteTogYXV0bztcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLXRva2VuIHtcclxuXHRcdFx0XHRtYXJnaW46IDA7XHJcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdDo6bmctZGVlcCAucC1hdXRvY29tcGxldGUtaW5wdXQtdG9rZW4ge1xyXG5cdFx0XHRcdGZsZXg6IDE7XHJcblx0XHRcdFx0bWluLXdpZHRoOiAxNTBweDtcclxuXHRcdFx0fVxyXG5cdFx0YFxyXG5cdF0sXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIEF1dG9Db21wbGV0ZU1vZHVsZV0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXRQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xyXG5cdEBWaWV3Q2hpbGQoQXV0b0NvbXBsZXRlKSBhdXRvQ29tcGxldGVSZWYhOiBBdXRvQ29tcGxldGU7XHJcblx0YXNzZXRDb2RlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10gfCBudWxsPihudWxsKTtcclxuXHR0eXBlID0gaW5wdXQ8VmFsdWVUeXBlcyB8IG51bGw+KG51bGwpO1xyXG5cclxuXHRwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJ0FyYW1hLi4uJyk7XHJcblx0Zm9yY2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0bXVsdGlwbGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0c2hvd0NsZWFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG9wdGlvblZhbHVlID0gaW5wdXQ8a2V5b2YgU3VnZ2VzdGlvbnNEVE8gfCBudWxsPihudWxsKTtcclxuXHRhcHBlbmRUbyA9IGlucHV0PHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbD4oJ2JvZHknKTtcclxuXHRtcWwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblx0c2hvd09ubHlBc3NldE51bWJlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRlbmFibGVBdXRvU2VhcmNoT25Jbml0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzVXBkYXRlTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdGZpbHRlcmVkU2VsZWN0aW9uSXRlbXMhOiBTdWdnZXN0aW9uc0dyb3VwRFRPW107XHJcblx0c2VsZWN0aW9uRGVmaW5pdGlvbnMhOiBEZWZhdWx0U2VhcmNoQWdncmVnYXRlQXNzZXRBZ2dyZWdhdGU7XHJcblx0Y2FjaGVTZWFyY2hSZXF1ZXN0JCA9IG5ldyBTdWJqZWN0PENhY2hlU2VhcmNoUmVxdWVzdERUTz4oKTtcclxuXHRkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RlZERlZmluaXRpb25FdmVudDogRXZlbnRFbWl0dGVyPEFzc2V0QWdncmVnYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXRBZ2dyZWdhdGU+KCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkdyb3VwU2VydmljZTogU2VsZWN0aW9uR3JvdXBTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykge1xyXG5cdFx0XHRcdHRoaXMucmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5jYWNoZVNlYXJjaFJlcXVlc3QkXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHN3aXRjaE1hcCgocGF5bG9hZCkgPT5cclxuXHRcdFx0XHRcdHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLk1ORykgKyAnL21hc3Rlci1kYXRhL2NhY2hlLXNlYXJjaCcsIHBheWxvYWQpXHJcblx0XHRcdFx0KSxcclxuXHRcdFx0XHR0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHNlbGVjdGlvbkdyb3VwKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucyA9IHNlbGVjdGlvbkdyb3VwO1xyXG5cdFx0XHRcdHRoaXMucmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0Ly8gSWYgdGhlIGZvcm0gY29udHJvbCdzIHZhbHVlIGlzIGEgc3RyaW5nLCBwZXJmb3JtIGEgY2FjaGUgc2VhcmNoIHRvIHJldHJpZXZlIHRoZSBJRC5cclxuXHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMubmdDb250cm9sPy5jb250cm9sPy52YWx1ZTtcclxuXHRcdGlmICh0aGlzLmVuYWJsZUF1dG9TZWFyY2hPbkluaXQoKSB8fCAoY3VycmVudFZhbHVlICYmIHR5cGVvZiBjdXJyZW50VmFsdWUgPT09ICdzdHJpbmcnKSkge1xyXG5cdFx0XHRcdGNvbnN0IHNlYXJjaFF1ZXJ5ID0gdHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gJ3N0cmluZycgPyBjdXJyZW50VmFsdWUgOiBjdXJyZW50VmFsdWU/LnRleHQ7XHJcblx0XHRcdFx0aWYgKHNlYXJjaFF1ZXJ5KSB7XHJcblx0XHRcdFx0XHR0aGlzLmlzVXBkYXRlTW9kZS5zZXQodHJ1ZSk7XHJcblx0XHRcdFx0XHR0aGlzLnNlYXJjaCh7IHF1ZXJ5OiBzZWFyY2hRdWVyeSB9KTtcclxuXHRcdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZWZyZXNoRmlsdGVyZWRTZWxlY3Rpb25JdGVtcygpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IG5ld0ZpbHRlcmVkR3JvdXBTdWdnZXN0aW9uczogU3VnZ2VzdGlvbnNHcm91cERUT1tdID0gW107XHJcblxyXG5cdFx0T2JqZWN0LmtleXModGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdFx0Y29uc3QgZ3JvdXBEYXRhOiBTdWdnZXN0aW9uc0dyb3VwRFRPID0ge1xyXG5cdFx0XHRcdHRleHQ6IHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XT8ucmVzdWx0WzBdPy5hc3NldHNbMF0/LmFzc2V0RGVmaW5pdGlvbk5hbWUsXHJcblx0XHRcdFx0a2V5OiBrZXksXHJcblx0XHRcdFx0aXRlbXM6IHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XS5yZXN1bHQubWFwKFxyXG5cdFx0XHRcdFx0KGl0ZW06IEFzc2V0QWdncmVnYXRlKSA9PlxyXG5cdFx0XHRcdFx0XHQoe1xyXG5cdFx0XHRcdFx0XHRcdGtleTogaXRlbS5pZCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiB0aGlzLmdldEF0dGlyaWJ1dGVzVmFsdWVEZXNjcihpdGVtLmF0dHJpYnV0ZXMpLFxyXG5cdFx0XHRcdFx0XHRcdGFzc2V0TnVtYmVyOiB0aGlzLmdldEFzc2V0TnVtYmVyVmFsdWUoaXRlbS5hdHRyaWJ1dGVzKSxcclxuXHRcdFx0XHRcdFx0XHRhdHRyaWJ1dGVzOiBpdGVtLmF0dHJpYnV0ZXMsXHJcblx0XHRcdFx0XHRcdFx0YXNzZXREZWZpbml0aW9uQ29kZTogaXRlbS5hc3NldERlZmluaXRpb25Db2RlXHJcblx0XHRcdFx0XHRcdH0pIGFzIFN1Z2dlc3Rpb25zRFRPXHJcblx0XHRcdFx0KVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRuZXdGaWx0ZXJlZEdyb3VwU3VnZ2VzdGlvbnMucHVzaChncm91cERhdGEpO1xyXG5cclxuXHRcdFx0Ly8gSWYgdGhlIHN0cmluZyB2YWx1ZSBpcyBwYXRjaGVkIGluIHVwZGF0ZSBtb2RlIGFuZCB0aGVyZSBpcyBncm91cCBkYXRhLCBzZWxlY3QgdGhlIGZpcnN0IGl0ZW1cclxuXHRcdFx0aWYgKHRoaXMuaXNVcGRhdGVNb2RlKCkgJiYgZ3JvdXBEYXRhLml0ZW1zLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5tdWx0aXBsZSgpKSB7XHJcblx0XHRcdFx0dGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKGdyb3VwRGF0YS5pdGVtc1swXSk7XHJcblx0XHRcdFx0dGhpcy5pc1VwZGF0ZU1vZGUuc2V0KGZhbHNlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJlZFNlbGVjdGlvbkl0ZW1zID0gbmV3RmlsdGVyZWRHcm91cFN1Z2dlc3Rpb25zO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVSZWYuZ2V0T3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlLmJpbmQodGhpcyk7XHJcblx0fVxyXG5cclxuXHRnZXRPcHRpb25WYWx1ZShvcHRpb246IGFueSkge1xyXG5cdFx0aWYgKCF0aGlzLm9wdGlvblZhbHVlKCkpIHtcclxuXHRcdFx0cmV0dXJuIG9wdGlvbjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcclxuXHRcdFx0cmV0dXJuIE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvblZhbHVlKCkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBvcHRpb247XHJcblx0fVxyXG5cclxuXHRvbk5nTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgdmFsaWRhdGVkVmFsdWUgPSB0aGlzLnZhbGlkYXRlSW5wdXQodmFsdWUpO1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2wudmlld1RvTW9kZWxVcGRhdGUodmFsaWRhdGVkVmFsdWUpO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHRpZiAodGhpcy50eXBlKCkgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3RleHQnKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bXmEtekEtWsSfw7zFn8Sxw7bDp8Sew5zFnsSww5bDh1xcc10vZywgJycpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoKGV2ZW50OiBhbnkpIHtcclxuXHRcdGlmICghZXZlbnQ/LnF1ZXJ5IHx8IHR5cGVvZiBldmVudC5xdWVyeSAhPT0gJ3N0cmluZycpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBxdWVyeSA9IHRoaXMudmFsaWRhdGVJbnB1dChldmVudC5xdWVyeSk7XHJcblx0XHRpZiAoIXF1ZXJ5Py50cmltKCkpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBwYXlsb2FkOiBDYWNoZVNlYXJjaFJlcXVlc3REVE8gPSB7XHJcblx0XHRcdHNlYXJjaFRleHQ6IHF1ZXJ5Py50cmltKCksXHJcblx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGVzOiBBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRDb2RlKCkpID8gdGhpcy5hc3NldENvZGUoKSA6IChbdGhpcy5hc3NldENvZGUoKV0gYXMgYW55KSxcclxuXHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRwYWdlU2l6ZTogNSxcclxuXHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKHRoaXMubXFsKCkpIHBheWxvYWQubXFsID0gdGhpcy5tcWwoKTtcclxuXHJcblx0XHR0aGlzLmNhY2hlU2VhcmNoUmVxdWVzdCQubmV4dChwYXlsb2FkKTtcclxuXHR9XHJcblxyXG5cdGdldEF0dGlyaWJ1dGVzVmFsdWVEZXNjcihhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVFbGVtZW50W10pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZXhjbHVkZWRBdHRyaWJ1dGVzID0gWydBc3NldElkJywgJ0Fzc2V0RGVmaW5pdGlvbk5hbWUnXTtcclxuXHRcdHJldHVybiBhdHRyaWJ1dGVzXHJcblx0XHRcdD8uZmlsdGVyKChhdHRyKSA9PiAhZXhjbHVkZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKGF0dHIuYXR0cmlidXRlPy5hdHRyaWJ1dGVDb2RlKSlcclxuXHRcdFx0Py5tYXAoKGF0dHIpID0+IHtcclxuXHRcdFx0XHQvLyBIYW5kbGUgU0VMRUNUIHR5cGUgYXR0cmlidXRlcyB1c2luZyBTZWxlY3Rpb25Hcm91cFNlcnZpY2VcclxuXHRcdFx0XHRpZiAoYXR0ci5hdHRyaWJ1dGU/LmF0dHJpYnV0ZVR5cGUgPT09ICdTRUxFQ1QnICYmIGF0dHIuYXR0cmlidXRlPy5zZWxlY3RPcHRpb24pIHtcclxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkRpc3BsYXkoYXR0ci5hdHRyaWJ1dGUuc2VsZWN0T3B0aW9uLCBhdHRyLnZhbHVlIGFzIHN0cmluZyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZURlc2MgPyBhdHRyLnZhbHVlRGVzYyA6IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuam9pbignIC0gJyk7XHJcblx0fVxyXG5cdHByaXZhdGUgZ2V0QXNzZXROdW1iZXJWYWx1ZShhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVFbGVtZW50W10pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgYXNzZXROdW1iZXJBdHRyID0gYXR0cmlidXRlcz8uZmluZCgoYXR0cikgPT4gYXR0ci5hdHRyaWJ1dGU/LmF0dHJpYnV0ZUNvZGUgPT09ICdBc3NldE51bWJlcicpO1xyXG5cdFx0aWYgKCFhc3NldE51bWJlckF0dHIpIHJldHVybiAnJztcclxuXHRcdHJldHVybiBTdHJpbmcoYXNzZXROdW1iZXJBdHRyLnZhbHVlRGVzYyB8fCBhc3NldE51bWJlckF0dHIudmFsdWUgfHwgJycpO1xyXG5cdH1cclxuXHRwcml2YXRlIGdldFNlbGVjdGlvbkRpc3BsYXkoZ3JvdXBOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3Qga2V5ID0gYCR7Z3JvdXBOYW1lfX5BTExgO1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKVtrZXldO1xyXG5cclxuXHRcdGlmICghc2VsZWN0aW9uR3JvdXApIHtcclxuXHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKGdyb3VwTmFtZSwgJ0FMTCcpO1xyXG5cdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uSXRlbSA9IHNlbGVjdGlvbkdyb3VwLnNlbGVjdGlvbkl0ZW1zPy5maW5kKCh0KSA9PiB0LnNlbGVjdGlvbktleSA9PT0gdmFsdWUpIGFzIHtcclxuXHRcdFx0c2VsZWN0aW9uTXVsdGlMYW5ndWFnZURpc3BsYXlzPzogeyBbbGFuZzogc3RyaW5nXTogc3RyaW5nIH07XHJcblx0XHRcdHNlbGVjdGlvbkRpc3BsYXk/OiBzdHJpbmc7XHJcblx0XHR9O1xyXG5cclxuXHRcdGlmICghc2VsZWN0aW9uSXRlbSkgcmV0dXJuIHZhbHVlO1xyXG5cclxuXHRcdHJldHVybiBzZWxlY3Rpb25JdGVtLnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz8uW2N1cnJlbnRMYW5nXSA/PyBzZWxlY3Rpb25JdGVtLnNlbGVjdGlvbkRpc3BsYXkgPz8gdmFsdWU7XHJcblx0fVxyXG5cclxuXHR0cmlnZ2VyU2VsZWN0ZWRFdmVudHMoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtczogQXNzZXRBZ2dyZWdhdGVbXSA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XS5yZXN1bHQuZmluZCgoaXRlbTogQXNzZXRBZ2dyZWdhdGUpID0+IGl0ZW0uaWQgPT09IGV2ZW50Py52YWx1ZT8ua2V5KTtcclxuXHRcdH0pIGFzIEFzc2V0QWdncmVnYXRlW107XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1swXTtcclxuXHJcblx0XHRjb25zdCBzZWxlY3RlZEV2ZW50ID0ge1xyXG5cdFx0XHQuLi5zZWxlY3RlZEl0ZW0sXHJcblx0XHRcdGtleTogc2VsZWN0ZWRJdGVtPy5pZCxcclxuXHRcdFx0dGV4dDogc2VsZWN0ZWRJdGVtPy5hc3NldERlZmluaXRpb25OYW1lLFxyXG5cdFx0XHRhdHRyaWJ1dGVzOiBzZWxlY3RlZEl0ZW0/LmF0dHJpYnV0ZXMsXHJcblx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGU6IHNlbGVjdGVkSXRlbT8uYXNzZXREZWZpbml0aW9uQ29kZVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkRGVmaW5pdGlvbkV2ZW50LmVtaXQoc2VsZWN0ZWRFdmVudCk7XHJcblx0fVxyXG59XHJcbiIsIjxwLWF1dG9Db21wbGV0ZVxyXG5cdG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcblx0W29wdGlvblZhbHVlXT1cIm9wdGlvblZhbHVlKCkhXCJcclxuXHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlKClcIlxyXG5cdFtncm91cF09XCJ0cnVlXCJcclxuXHRbZm9yY2VTZWxlY3Rpb25dPVwiZm9yY2VTZWxlY3Rpb24oKVwiXHJcblx0W2RlbGF5XT1cIjcwMFwiXHJcblx0W21pbkxlbmd0aF09XCIzXCJcclxuXHRbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRTZWxlY3Rpb25JdGVtc1wiXHJcblx0KGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuXHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFthdXRvSGlnaGxpZ2h0XT1cInRydWVcIlxyXG5cdFt0eXBlXT1cInR5cGUoKSFcIlxyXG5cdChuZ01vZGVsQ2hhbmdlKT1cIm9uTmdNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuXHRbc2hvd0NsZWFyXT1cInNob3dDbGVhcigpXCJcclxuXHRbZW1wdHlNZXNzYWdlXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5ub0RhdGFUb0Rpc3BsYXknKVwiXHJcblx0KG9uU2VsZWN0KT1cInRyaWdnZXJTZWxlY3RlZEV2ZW50cygkZXZlbnQpXCJcclxuXHRbYXBwZW5kVG9dPVwiYXBwZW5kVG8oKVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXAgcFRlbXBsYXRlPVwiZ3JvdXBcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgZ3JvdXAudGV4dCB9fTwvc3Bhbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdEBpZiAoc2hvd09ubHlBc3NldE51bWJlcigpKSB7XHJcblx0XHQ8bmctdGVtcGxhdGUgbGV0LXZhbHVlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHQ8c3Bhbj57eyB2YWx1ZT8uYXNzZXROdW1iZXIgfHwgdmFsdWU/LnRleHQgfX08L3NwYW4+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdH1cclxuPC9wLWF1dG9Db21wbGV0ZT5cclxuIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvYXNzZXRQaWNrZXIvc3JjL2Fzc2V0LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2Fzc2V0UGlja2VyL3NyYy9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBdUN6RSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBc0IzRCxZQUNrQixJQUFnQixFQUMxQixnQkFBa0MsRUFDeEIscUJBQTRDO1FBRTdELEtBQUssRUFBRSxDQUFDO1FBSlMsU0FBSSxH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LEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUcsQ0FBQyxDQUFxQixDQUFDO1FBRXZCLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QyxNQUFNLGFBQWEsR0FBRztZQUNyQixHQUFHLFlBQVk7WUFDZixHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDckIsSUFBSSxFQUFFLFlBQVksRUFBRSxtQkFBbUI7WUFDdkMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVO1lBQ3BDLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUI7U0FDdEQsQ0FBQztRQUVGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0ExTlcsb0JBQW9CO2tHQUFwQixvQkFBb0IsNnZEQUNyQixZQUFZLG1JQ2xFeEIsMC9CQTRCQSw4UkRrQ1csbUJBQW1CLHlUQUFFLGtCQUFrQjs7MkZBR3JDLG9CQUFvQjtrQkEzQmhDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdHQUFnRyxXQXNCakcsQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFDbEMsQ0FBQyxzQkFBc0IsQ0FBQztrSkFHZixlQUFlO3NCQUF2QyxTQUFTO3VCQUFDLFlBQVk7Z0JBbUJiLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDb21wb25lbnQsXHJcblx0RGVzdHJveVJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0ZWZmZWN0LFxyXG5cdGluamVjdCxcclxuXHRpbnB1dCxcclxuXHRzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlLCBBdXRvQ29tcGxldGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmaWx0ZXIsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7XHJcblx0QXNzZXRBZ2dyZWdhdGUsXHJcblx0QXR0cmlidXRlRWxlbWVudCxcclxuXHRDYWNoZVNlYXJjaFJlcXVlc3REVE8sXHJcblx0RGVmYXVsdFNlYXJjaEFnZ3JlZ2F0ZUFzc2V0QWdncmVnYXRlLFxyXG5cdFN1Z2dlc3Rpb25zRFRPLFxyXG5cdFN1Z2dlc3Rpb25zR3JvdXBEVE9cclxufSBmcm9tICcuL2ludGVyZmFjZSc7XHJcblxyXG50eXBlIFZhbHVlVHlwZXMgPSAndGV4dCcgfCAnbnVtYmVyJztcclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtYXNzZXQtcGlja2VyW25nTW9kZWxdLCBhcmlsLWFzc2V0LXBpY2tlcltmb3JtQ29udHJvbF0sIGFyaWwtYXNzZXQtcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlczogW1xyXG5cdFx0YFxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLW11bHRpcGxlLWNvbnRhaW5lciB7XHJcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0XHRcdG1heC1oZWlnaHQ6IDUwcHg7XHJcblx0XHRcdFx0b3ZlcmZsb3cteTogYXV0bztcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLXRva2VuIHtcclxuXHRcdFx0XHRtYXJnaW46IDA7XHJcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdDo6bmctZGVlcCAucC1hdXRvY29tcGxldGUtaW5wdXQtdG9rZW4ge1xyXG5cdFx0XHRcdGZsZXg6IDE7XHJcblx0XHRcdFx0bWluLXdpZHRoOiAxNTBweDtcclxuXHRcdFx0fVxyXG5cdFx0YFxyXG5cdF0sXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIEF1dG9Db21wbGV0ZU1vZHVsZV0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXRQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xyXG5cdEBWaWV3Q2hpbGQoQXV0b0NvbXBsZXRlKSBhdXRvQ29tcGxldGVSZWYhOiBBdXRvQ29tcGxldGU7XHJcblx0YXNzZXRDb2RlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10gfCBudWxsPihudWxsKTtcclxuXHR0eXBlID0gaW5wdXQ8VmFsdWVUeXBlcyB8IG51bGw+KG51bGwpO1xyXG5cclxuXHRwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJ0FyYW1hLi4uJyk7XHJcblx0Zm9yY2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0bXVsdGlwbGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0c2hvd0NsZWFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG9wdGlvblZhbHVlID0gaW5wdXQ8a2V5b2YgU3VnZ2VzdGlvbnNEVE8gfCBudWxsPihudWxsKTtcclxuXHRhcHBlbmRUbyA9IGlucHV0PHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbD4oJ2JvZHknKTtcclxuXHRtcWwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblx0c2hvd09ubHlBc3NldE51bWJlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRlbmFibGVBdXRvU2VhcmNoT25Jbml0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzVXBkYXRlTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdGZpbHRlcmVkU2VsZWN0aW9uSXRlbXMhOiBTdWdnZXN0aW9uc0dyb3VwRFRPW107XHJcblx0c2VsZWN0aW9uRGVmaW5pdGlvbnMhOiBEZWZhdWx0U2VhcmNoQWdncmVnYXRlQXNzZXRBZ2dyZWdhdGU7XHJcblx0Y2FjaGVTZWFyY2hSZXF1ZXN0JCA9IG5ldyBTdWJqZWN0PENhY2hlU2VhcmNoUmVxdWVzdERUTz4oKTtcclxuXHRkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RlZERlZmluaXRpb25FdmVudDogRXZlbnRFbWl0dGVyPEFzc2V0QWdncmVnYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXRBZ2dyZWdhdGU+KCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkdyb3VwU2VydmljZTogU2VsZWN0aW9uR3JvdXBTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykge1xyXG5cdFx0XHRcdHRoaXMucmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmNhY2hlU2VhcmNoUmVxdWVzdCRcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0c3dpdGNoTWFwKChwYXlsb2FkKSA9PlxyXG5cdFx0XHRcdFx0dGhpcy5odHRwLnBvc3Q8YW55PihBUElfQ09ORklHUy5nZXRFeHRlcm5hbEFwcEVuZHBvaW50KEFwcHMuTU5HKSArICcvbWFzdGVyLWRhdGEvY2FjaGUtc2VhcmNoJywgcGF5bG9hZClcclxuXHRcdFx0XHQpLFxyXG5cdFx0XHRcdHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgoc2VsZWN0aW9uR3JvdXApID0+IHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zID0gc2VsZWN0aW9uR3JvdXA7XHJcblx0XHRcdFx0dGhpcy5yZWZyZXNoRmlsdGVyZWRTZWxlY3Rpb25JdGVtcygpO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHQvLyBJZiB0aGUgZm9ybSBjb250cm9sJ3MgdmFsdWUgaXMgYSBzdHJpbmcsIHBlcmZvcm0gYSBjYWNoZSBzZWFyY2ggdG8gcmV0cmlldmUgdGhlIElELlxyXG5cdFx0Y29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbHVlO1xyXG5cdFx0aWYgKHRoaXMuZW5hYmxlQXV0b1NlYXJjaE9uSW5pdCgpIHx8IChjdXJyZW50VmFsdWUgJiYgdHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gJ3N0cmluZycpKSB7XHJcblx0XHRcdFx0Y29uc3Qgc2VhcmNoUXVlcnkgPSB0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJyA/IGN1cnJlbnRWYWx1ZSA6IGN1cnJlbnRWYWx1ZT8udGV4dDtcclxuXHRcdFx0XHRpZiAoc2VhcmNoUXVlcnkpIHtcclxuXHRcdFx0XHRcdHRoaXMuaXNVcGRhdGVNb2RlLnNldCh0cnVlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoKHsgcXVlcnk6IHNlYXJjaFF1ZXJ5IH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBSZWFjdCB0byBwcm9ncmFtbWF0aWMgcGF0Y2hlcyAoY3JlYXRlRm9ybURhdGFPYmplY3QgLyBwYXRjaEFzc2V0UmVzcG9uc2VUb0Zvcm0pXHJcblx0XHR0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsdWVDaGFuZ2VzXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGZpbHRlcih2YWx1ZSA9PlxyXG5cdFx0XHRcdFx0dmFsdWUgJiZcclxuXHRcdFx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuXHRcdFx0XHRcdCd0ZXh0JyBpbiB2YWx1ZSAmJlxyXG5cdFx0XHRcdFx0ISgnYXR0cmlidXRlcycgaW4gdmFsdWUpXHJcblx0XHRcdFx0KSxcclxuXHRcdFx0XHR0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG5cdFx0XHRcdGlmICghdGhpcy5pc1VwZGF0ZU1vZGUoKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5pc1VwZGF0ZU1vZGUuc2V0KHRydWUpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2goeyBxdWVyeTogdmFsdWUudGV4dCB9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBuZXdGaWx0ZXJlZEdyb3VwU3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25zR3JvdXBEVE9bXSA9IFtdO1xyXG5cclxuXHRcdE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGNvbnN0IGdyb3VwRGF0YTogU3VnZ2VzdGlvbnNHcm91cERUTyA9IHtcclxuXHRcdFx0XHR0ZXh0OiB0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zW2tleV0/LnJlc3VsdFswXT8uYXNzZXRzWzBdPy5hc3NldERlZmluaXRpb25OYW1lLFxyXG5cdFx0XHRcdGtleToga2V5LFxyXG5cdFx0XHRcdGl0ZW1zOiB0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zW2tleV0ucmVzdWx0Lm1hcChcclxuXHRcdFx0XHRcdChpdGVtOiBBc3NldEFnZ3JlZ2F0ZSkgPT5cclxuXHRcdFx0XHRcdFx0KHtcclxuXHRcdFx0XHRcdFx0XHRrZXk6IGl0ZW0uaWQsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5nZXRBdHRpcmlidXRlc1ZhbHVlRGVzY3IoaXRlbS5hdHRyaWJ1dGVzKSxcclxuXHRcdFx0XHRcdFx0XHRhc3NldE51bWJlcjogdGhpcy5nZXRBc3NldE51bWJlclZhbHVlKGl0ZW0uYXR0cmlidXRlcyksXHJcblx0XHRcdFx0XHRcdFx0YXR0cmlidXRlczogaXRlbS5hdHRyaWJ1dGVzLFxyXG5cdFx0XHRcdFx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGU6IGl0ZW0uYXNzZXREZWZpbml0aW9uQ29kZVxyXG5cdFx0XHRcdFx0XHR9KSBhcyBTdWdnZXN0aW9uc0RUT1xyXG5cdFx0XHRcdClcclxuXHRcdFx0fTtcclxuXHRcdFx0bmV3RmlsdGVyZWRHcm91cFN1Z2dlc3Rpb25zLnB1c2goZ3JvdXBEYXRhKTtcclxuXHJcblx0XHRcdC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgaXMgcGF0Y2hlZCBpbiB1cGRhdGUgbW9kZSBhbmQgdGhlcmUgaXMgZ3JvdXAgZGF0YSwgc2VsZWN0IHRoZSBmaXJzdCBpdGVtXHJcblx0XHRcdGlmICh0aGlzLmlzVXBkYXRlTW9kZSgpICYmIGdyb3VwRGF0YS5pdGVtcy5sZW5ndGggPT09IDEgJiYgIXRoaXMubXVsdGlwbGUoKSkge1xyXG5cdFx0XHRcdHRoaXMubmdDb250cm9sPy5jb250cm9sPy5zZXRWYWx1ZShncm91cERhdGEuaXRlbXNbMF0pO1xyXG5cdFx0XHRcdHRoaXMuaXNVcGRhdGVNb2RlLnNldChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyZWRTZWxlY3Rpb25JdGVtcyA9IG5ld0ZpbHRlcmVkR3JvdXBTdWdnZXN0aW9ucztcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlUmVmLmdldE9wdGlvblZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZS5iaW5kKHRoaXMpO1xyXG5cdH1cclxuXHJcblx0Z2V0T3B0aW9uVmFsdWUob3B0aW9uOiBhbnkpIHtcclxuXHRcdGlmICghdGhpcy5vcHRpb25WYWx1ZSgpKSB7XHJcblx0XHRcdHJldHVybiBvcHRpb247XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdHJldHVybiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25WYWx1ZSgpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gb3B0aW9uO1xyXG5cdH1cclxuXHJcblx0b25OZ01vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHZhbGlkYXRlZFZhbHVlID0gdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlKTtcclxuXHRcdHRoaXMubmdDb250cm9sLnZpZXdUb01vZGVsVXBkYXRlKHZhbGlkYXRlZFZhbHVlKTtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlSW5wdXQodmFsdWU6IHN0cmluZykge1xyXG5cdFx0aWYgKHRoaXMudHlwZSgpID09PSAnbnVtYmVyJykge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy50eXBlKCkgPT09ICd0ZXh0Jykge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUucmVwbGFjZSgvW15hLXpBLVrEn8O8xZ/EscO2w6fEnsOcxZ7EsMOWw4dcXHNdL2csICcnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHNlYXJjaChldmVudDogYW55KSB7XHJcblx0XHRpZiAoIWV2ZW50Py5xdWVyeSB8fCB0eXBlb2YgZXZlbnQucXVlcnkgIT09ICdzdHJpbmcnKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcXVlcnkgPSB0aGlzLnZhbGlkYXRlSW5wdXQoZXZlbnQucXVlcnkpO1xyXG5cdFx0aWYgKCFxdWVyeT8udHJpbSgpKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZDogQ2FjaGVTZWFyY2hSZXF1ZXN0RFRPID0ge1xyXG5cdFx0XHRzZWFyY2hUZXh0OiBxdWVyeT8udHJpbSgpLFxyXG5cdFx0XHRhc3NldERlZmluaXRpb25Db2RlczogQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0Q29kZSgpKSA/IHRoaXMuYXNzZXRDb2RlKCkgOiAoW3RoaXMuYXNzZXRDb2RlKCldIGFzIGFueSksXHJcblx0XHRcdHBhZ2VyOiB7XHJcblx0XHRcdFx0cGFnZVNpemU6IDUsXHJcblx0XHRcdFx0cGFnZU51bWJlcjogMVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGlmICh0aGlzLm1xbCgpKSBwYXlsb2FkLm1xbCA9IHRoaXMubXFsKCk7XHJcblxyXG5cdFx0dGhpcy5jYWNoZVNlYXJjaFJlcXVlc3QkLm5leHQocGF5bG9hZCk7XHJcblx0fVxyXG5cclxuXHRnZXRBdHRpcmlidXRlc1ZhbHVlRGVzY3IoYXR0cmlidXRlczogQXR0cmlidXRlRWxlbWVudFtdKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGV4Y2x1ZGVkQXR0cmlidXRlcyA9IFsnQXNzZXRJZCcsICdBc3NldERlZmluaXRpb25OYW1lJ107XHJcblx0XHRyZXR1cm4gYXR0cmlidXRlc1xyXG5cdFx0XHQ/LmZpbHRlcigoYXR0cikgPT4gIWV4Y2x1ZGVkQXR0cmlidXRlcy5pbmNsdWRlcyhhdHRyLmF0dHJpYnV0ZT8uYXR0cmlidXRlQ29kZSkpXHJcblx0XHRcdD8ubWFwKChhdHRyKSA9PiB7XHJcblx0XHRcdFx0Ly8gSGFuZGxlIFNFTEVDVCB0eXBlIGF0dHJpYnV0ZXMgdXNpbmcgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlXHJcblx0XHRcdFx0aWYgKGF0dHIuYXR0cmlidXRlPy5hdHRyaWJ1dGVUeXBlID09PSAnU0VMRUNUJyAmJiBhdHRyLmF0dHJpYnV0ZT8uc2VsZWN0T3B0aW9uKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25EaXNwbGF5KGF0dHIuYXR0cmlidXRlLnNlbGVjdE9wdGlvbiwgYXR0ci52YWx1ZSBhcyBzdHJpbmcpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWVEZXNjID8gYXR0ci52YWx1ZURlc2MgOiBhdHRyLnZhbHVlO1xyXG5cdFx0XHRcdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmpvaW4oJyAtICcpO1xyXG5cdH1cclxuXHRwcml2YXRlIGdldEFzc2V0TnVtYmVyVmFsdWUoYXR0cmlidXRlczogQXR0cmlidXRlRWxlbWVudFtdKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGFzc2V0TnVtYmVyQXR0ciA9IGF0dHJpYnV0ZXM/LmZpbmQoKGF0dHIpID0+IGF0dHIuYXR0cmlidXRlPy5hdHRyaWJ1dGVDb2RlID09PSAnQXNzZXROdW1iZXInKTtcclxuXHRcdGlmICghYXNzZXROdW1iZXJBdHRyKSByZXR1cm4gJyc7XHJcblx0XHRyZXR1cm4gU3RyaW5nKGFzc2V0TnVtYmVyQXR0ci52YWx1ZURlc2MgfHwgYXNzZXROdW1iZXJBdHRyLnZhbHVlIHx8ICcnKTtcclxuXHR9XHJcblx0cHJpdmF0ZSBnZXRTZWxlY3Rpb25EaXNwbGF5KGdyb3VwTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGtleSA9IGAke2dyb3VwTmFtZX1+QUxMYDtcclxuXHRcdGNvbnN0IHNlbGVjdGlvbkdyb3VwID0gdGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2Uuc2VsZWN0aW9uR3JvdXBzKClba2V5XTtcclxuXHJcblx0XHRpZiAoIXNlbGVjdGlvbkdyb3VwKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLmZldGNoRW51bShncm91cE5hbWUsICdBTEwnKTtcclxuXHRcdFx0cmV0dXJuIHZhbHVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IHNlbGVjdGlvbkl0ZW0gPSBzZWxlY3Rpb25Hcm91cC5zZWxlY3Rpb25JdGVtcz8uZmluZCgodCkgPT4gdC5zZWxlY3Rpb25LZXkgPT09IHZhbHVlKSBhcyB7XHJcblx0XHRcdHNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz86IHsgW2xhbmc6IHN0cmluZ106IHN0cmluZyB9O1xyXG5cdFx0XHRzZWxlY3Rpb25EaXNwbGF5Pzogc3RyaW5nO1xyXG5cdFx0fTtcclxuXHJcblx0XHRpZiAoIXNlbGVjdGlvbkl0ZW0pIHJldHVybiB2YWx1ZTtcclxuXHJcblx0XHRyZXR1cm4gc2VsZWN0aW9uSXRlbS5zZWxlY3Rpb25NdWx0aUxhbmd1YWdlRGlzcGxheXM/LltjdXJyZW50TGFuZ10gPz8gc2VsZWN0aW9uSXRlbS5zZWxlY3Rpb25EaXNwbGF5ID8/IHZhbHVlO1xyXG5cdH1cclxuXHJcblx0dHJpZ2dlclNlbGVjdGVkRXZlbnRzKGV2ZW50OiBhbnkpIHtcclxuXHRcdGNvbnN0IHNlbGVjdGVkSXRlbXM6IEFzc2V0QWdncmVnYXRlW10gPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdHJldHVybiB0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zW2tleV0ucmVzdWx0LmZpbmQoKGl0ZW06IEFzc2V0QWdncmVnYXRlKSA9PiBpdGVtLmlkID09PSBldmVudD8udmFsdWU/LmtleSk7XHJcblx0XHR9KSBhcyBBc3NldEFnZ3JlZ2F0ZVtdO1xyXG5cclxuXHRcdGNvbnN0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbXNbMF07XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRFdmVudCA9IHtcclxuXHRcdFx0Li4uc2VsZWN0ZWRJdGVtLFxyXG5cdFx0XHRrZXk6IHNlbGVjdGVkSXRlbT8uaWQsXHJcblx0XHRcdHRleHQ6IHNlbGVjdGVkSXRlbT8uYXNzZXREZWZpbml0aW9uTmFtZSxcclxuXHRcdFx0YXR0cmlidXRlczogc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzLFxyXG5cdFx0XHRhc3NldERlZmluaXRpb25Db2RlOiBzZWxlY3RlZEl0ZW0/LmFzc2V0RGVmaW5pdGlvbkNvZGVcclxuXHRcdH07XHJcblxyXG5cdFx0dGhpcy5zZWxlY3RlZERlZmluaXRpb25FdmVudC5lbWl0KHNlbGVjdGVkRXZlbnQpO1xyXG5cdH1cclxufVxyXG4iLCI8cC1hdXRvQ29tcGxldGVcclxuXHRvcHRpb25MYWJlbD1cInRleHRcIlxyXG5cdFtvcHRpb25WYWx1ZV09XCJvcHRpb25WYWx1ZSgpIVwiXHJcblx0W3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxyXG5cdFttdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcclxuXHRbZ3JvdXBdPVwidHJ1ZVwiXHJcblx0W2ZvcmNlU2VsZWN0aW9uXT1cImZvcmNlU2VsZWN0aW9uKClcIlxyXG5cdFtkZWxheV09XCI3MDBcIlxyXG5cdFttaW5MZW5ndGhdPVwiM1wiXHJcblx0W3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkU2VsZWN0aW9uSXRlbXNcIlxyXG5cdChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXHJcblx0W2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcclxuXHRbYXV0b0hpZ2hsaWdodF09XCJ0cnVlXCJcclxuXHRbdHlwZV09XCJ0eXBlKCkhXCJcclxuXHQobmdNb2RlbENoYW5nZSk9XCJvbk5nTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXHJcblx0W3Nob3dDbGVhcl09XCJzaG93Q2xlYXIoKVwiXHJcblx0W2VtcHR5TWVzc2FnZV09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMubm9EYXRhVG9EaXNwbGF5JylcIlxyXG5cdChvblNlbGVjdCk9XCJ0cmlnZ2VyU2VsZWN0ZWRFdmVudHMoJGV2ZW50KVwiXHJcblx0W2FwcGVuZFRvXT1cImFwcGVuZFRvKClcIj5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LWdyb3VwIHBUZW1wbGF0ZT1cImdyb3VwXCI+XHJcblx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IGdyb3VwLnRleHQgfX08L3NwYW4+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHRAaWYgKHNob3dPbmx5QXNzZXROdW1iZXIoKSkge1xyXG5cdFx0PG5nLXRlbXBsYXRlIGxldC12YWx1ZSBwVGVtcGxhdGU9XCJzZWxlY3RlZEl0ZW1cIj5cclxuXHRcdFx0PHNwYW4+e3sgdmFsdWU/LmFzc2V0TnVtYmVyIHx8IHZhbHVlPy50ZXh0IH19PC9zcGFuPlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcbjwvcC1hdXRvQ29tcGxldGU+XHJcbiJdfQ==
|