mis-crystal-design-system 18.1.0-signal → 18.1.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/async-search-dropdown/async-dropdown.component.d.ts +2 -2
- package/button/button.component.d.ts +0 -2
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +4 -0
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +9 -5
- package/dropdown/dropdown.component.d.ts +1 -1
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +2 -2
- package/esm2022/button/button.component.mjs +7 -15
- package/esm2022/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/chip/chip.component.mjs +4 -4
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +17 -10
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +87 -32
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +6 -3
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +316 -141
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/fab/fab.component.mjs +4 -4
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +28 -27
- package/esm2022/input/directives/input/input.directive.mjs +28 -10
- package/esm2022/input/mis-input.component.mjs +19 -13
- package/esm2022/loader/loader.component.mjs +13 -7
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +4 -4
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +10 -5
- package/esm2022/phone-input/phone-input.component.mjs +4 -4
- package/esm2022/radio-button/radio-button.component.mjs +4 -4
- package/esm2022/ske-loader/ske-loader.component.mjs +4 -4
- package/esm2022/slider/slider.component.mjs +4 -4
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +4 -4
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +24 -20
- package/esm2022/switch/switch.component.mjs +2 -4
- package/esm2022/table/sub-table/sub-table.component.mjs +18 -5
- package/esm2022/table/table.component.mjs +52 -28
- package/esm2022/toast/toast.component.mjs +4 -4
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +4 -4
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-button.mjs +6 -14
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +101 -39
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +320 -142
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-fab.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +27 -26
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +45 -21
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +12 -6
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +9 -4
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +23 -19
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +1 -3
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +68 -32
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +1 -1
- package/input/directives/input/input.directive.d.ts +3 -4
- package/input/mis-input.component.d.ts +3 -6
- package/input/mis-input.component.scss +12 -4
- package/loader/loader.component.d.ts +7 -1
- package/package.json +13 -13
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** @format */
|
|
2
2
|
import { trigger, transition, style, animate } from "@angular/animations";
|
|
3
3
|
import { ComponentPortal, PortalInjector } from "@angular/cdk/portal";
|
|
4
|
-
import { Component, ViewChild, ViewContainerRef,
|
|
4
|
+
import { Component, ViewChild, ViewContainerRef, signal } from "@angular/core";
|
|
5
5
|
import { DrawerRef } from "../drawer-ref";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/cdk/portal";
|
|
@@ -42,11 +42,11 @@ export class DrawerBodyComponent {
|
|
|
42
42
|
transition(":enter", [style({ transform: "translateX(100%)" }), animate("200ms ease-out", style({ transform: "translateX(0%)" }))]),
|
|
43
43
|
transition(":leave", [animate("200ms ease-out", style({ transform: "translateX(100%)" }))])
|
|
44
44
|
])
|
|
45
|
-
] }
|
|
45
|
+
] } }); }
|
|
46
46
|
}
|
|
47
47
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawerBodyComponent, [{
|
|
48
48
|
type: Component,
|
|
49
|
-
args: [{ selector: "mis-drawer-body",
|
|
49
|
+
args: [{ selector: "mis-drawer-body", animations: [
|
|
50
50
|
trigger("slideInOut", [
|
|
51
51
|
transition(":enter", [style({ transform: "translateX(100%)" }), animate("200ms ease-out", style({ transform: "translateX(0%)" }))]),
|
|
52
52
|
transition(":leave", [animate("200ms ease-out", style({ transform: "translateX(100%)" }))])
|
|
@@ -57,4 +57,4 @@ export class DrawerBodyComponent {
|
|
|
57
57
|
args: ["place", { static: false, read: ViewContainerRef }]
|
|
58
58
|
}] }); })();
|
|
59
59
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DrawerBodyComponent, { className: "DrawerBodyComponent" }); })();
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWJvZHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJhd2VyL2RyYXdlci1ib2R5L2RyYXdlci1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RyYXdlci9kcmF3ZXItYm9keS9kcmF3ZXItYm9keS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBOEMsU0FBUyxFQUFFLGdCQUFnQixFQUEyQixNQUFNLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQzVLLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBYTFDLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFBb0IsR0FBNkI7UUFBN0IsUUFBRyxHQUFILEdBQUcsQ0FBMEI7UUFGakQsaUJBQVksR0FBZ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJCLENBQUM7SUFJckQsYUFBYSxDQUFDLElBQVMsRUFBRSxRQUF3QjtRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVMsRUFBRSxRQUF3QjtRQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxjQUFjLENBQUMsR0FBYyxFQUFFLEdBQWE7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDL0MsdUZBQXVGO0lBQ3pGLENBQUM7b0hBbkJVLG1CQUFtQjtvRUFBbkIsbUJBQW1CO21DQUthLGdCQUFnQjs7Ozs7WUNyQjdELGlDQUFnRDtZQUM5QyxvRkFBZ0Q7WUFDbEQsaUJBQU07O1lBRjhCLHVDQUFXO1lBQ2hDLGVBQWtDO1lBQWxDLG9EQUFrQzsySkRRbkM7Z0JBQ1YsT0FBTyxDQUFDLFlBQVksRUFBRTtvQkFDcEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RixDQUFDO2FBQ0g7O2lGQUVVLG1CQUFtQjtjQVgvQixTQUFTOzJCQUNFLGlCQUFpQixjQUdmO29CQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQUU7d0JBQ3BCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbkksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDNUYsQ0FBQztpQkFDSDt5REFPOEQsS0FBSztrQkFBbkUsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTs7a0ZBTGxELG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZm9ybWF0ICovXG5cbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgUG9ydGFsSW5qZWN0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEluamVjdG9yLCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIHNpZ25hbCwgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tIFwiLi4vZHJhd2VyLXJlZlwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWRyYXdlci1ib2R5XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHJhd2VyLWJvZHkuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2RyYXdlci1ib2R5LmNvbXBvbmVudC5zY3NzXCJdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNsaWRlSW5PdXRcIiwgW1xuICAgICAgdHJhbnNpdGlvbihcIjplbnRlclwiLCBbc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgxMDAlKVwiIH0pLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIiwgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWCgwJSlcIiB9KSldKSxcbiAgICAgIHRyYW5zaXRpb24oXCI6bGVhdmVcIiwgW2FuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDEwMCUpXCIgfSkpXSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERyYXdlckJvZHlDb21wb25lbnQge1xuICBkcmF3ZXJQb3J0YWw6IFdyaXRhYmxlU2lnbmFsPENvbXBvbmVudFBvcnRhbDxhbnk+IHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG4gIFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7fVxuXG4gIEBWaWV3Q2hpbGQoXCJwbGFjZVwiLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcGxhY2U6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgYmluZENvbXBvbmVudCh0eXBlOiBhbnksIGluamVjdG9yOiBQb3J0YWxJbmplY3Rvcikge1xuICAgIHRoaXMuaW5pdENvbXBvbmVudCh0eXBlLCBpbmplY3Rvcik7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb21wb25lbnQodHlwZTogYW55LCBpbmplY3RvcjogUG9ydGFsSW5qZWN0b3IpIHtcbiAgICB0aGlzLmRyYXdlclBvcnRhbC5zZXQobmV3IENvbXBvbmVudFBvcnRhbCh0eXBlLCB0aGlzLnBsYWNlLCBpbmplY3RvcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbmplY3RvcihyZWY6IERyYXdlclJlZiwgaW5qOiBJbmplY3Rvcik6IFBvcnRhbEluamVjdG9yIHtcbiAgICBjb25zdCBpbmplY3RvclRva2VucyA9IG5ldyBXZWFrTWFwKFtbRHJhd2VyUmVmLCByZWZdXSk7XG4gICAgcmV0dXJuIG5ldyBQb3J0YWxJbmplY3RvcihpbmosIGluamVjdG9yVG9rZW5zKTtcbiAgICAvLyByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHsgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBpbmosIHVzZVZhbHVlOiBpbmplY3RvclRva2VucyB9XSB9KTtcbiAgfVxufVxuIiwiPCEtLSBAZm9ybWF0IC0tPlxuXG48ZGl2IGNsYXNzPVwibWlzLWRyYXdlci1ib2R5XCIgI3BsYWNlIEBzbGlkZUluT3V0PlxuICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJkcmF3ZXJQb3J0YWwoKVwiPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -494,4 +494,4 @@ export class DropdownComponent {
|
|
|
494
494
|
args: ["keyup.esc", ["$event"]]
|
|
495
495
|
}] }); })();
|
|
496
496
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DropdownComponent, { className: "DropdownComponent" }); })();
|
|
497
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBRVosU0FBUyxFQUdULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHNCQUFzQixFQUV0QixhQUFhLEdBRWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSDlELDBCQUE0SDs7OztJQUF0RSxBQUFkLEFBQWIsMEJBQVksY0FBYyxnR0FBbUM7OztJQUV0Riw2QkFBdUQ7SUFDckQsWUFDRjtJQUFBLGlCQUFJOzs7O0lBREYsY0FDRjtJQURFLHdQQUNGOzs7SUFFRSw2QkFBOEM7SUFDNUMsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUsK0NBQ0Y7OztJQUNBLDBCQUE2Rjs7OztJQUE1Qyx1R0FBNEI7OztJQUE3RSxBQUhBLDZFQUE4QyxvRUFHK0M7Ozs7O0lBSDVFLHlGQUEyQjtJQUd6QixjQUE0QjtJQUE1QiwwRkFBNEI7Ozs7SUFvQ2pELCtCQVFDO0lBQ0MsMkJBS0U7SUFDSixpQkFBTTs7Ozs7SUFlTiwrQkFTQztJQU5DLDJNQUFTLGtDQUEyQixLQUFDO0lBT3JDLDJCQUtFO0lBQ0osaUJBQU07Ozs7SUEvQ1IsK0JBQXNEO0lBQ3BELDZG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UUFBUSxDQUFDOztrRkEvUTFCLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIGVmZmVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1kcm9wZG93blwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kcm9wZG93bi5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQge1xuICAvLyBJbnRlcm5hbCBzaWduYWxzXG4gIHJlYWRvbmx5IGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1NlYXJjaElucHV0Rm9jdXNlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHNlYXJjaElucHV0ID0gc2lnbmFsKFwiXCIpO1xuICByZWFkb25seSBzZWFyY2hEYXRhID0gc2lnbmFsPERyb3Bkb3duSXRlbVtdPihbXSk7XG4gIHJlYWRvbmx5IGR5bmFtaWNIZWlnaHQgPSBzaWduYWwoXCJhdXRvXCIpO1xuXG4gIC8vIOKchSBXcml0YWJsZSBzaWduYWwgZm9yIGludGVybmFsIGRhdGFcbiAgcmVhZG9ubHkgaW50ZXJuYWxEYXRhID0gc2lnbmFsPERyb3Bkb3duSXRlbVtdPihbXSk7XG5cbiAgLy8gSW5wdXRzXG4gIHJlYWRvbmx5IGRhdGEgPSBpbnB1dDxEcm9wZG93bkl0ZW1bXT4oW10pO1xuICByZWFkb25seSBoZWlnaHQgPSBpbnB1dChcIlwiKTtcbiAgcmVhZG9ubHkgYXJpYUxhYmVsID0gaW5wdXQoXCJcIik7XG4gIHJlYWRvbmx5IHdpZHRoID0gaW5wdXQoXCJcIik7XG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQoXCJTZWxlY3RcIik7XG4gIHJlYWRvbmx5IGl0ZW1TaXplRm9yQ2RrID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBzaG93T25seUljb24gPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGhpZ2xpZ2h0U2VsZWN0ZWRWYWx1ZSA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgZHJvcGRvd25MaXN0SGVpZ2h0ID0gaW5wdXQoXCJcIik7XG4gIHJlYWRvbmx5IGRyb3Bkb3duTGlzdFdpZHRoID0gaW5wdXQoXCJcIik7XG4gIHJlYWRvbmx5IGRyb3Bkb3duTGlzdFBvc2l0aW9uID0gaW5wdXQ8XCJMZWZ0XCIgfCBcIlJpZ2h0XCI+KFwiTGVmdFwiKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8YW55PigpO1xuICByZWFkb25seSBzZWFyY2hFbmFibGVkID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbSA9IGlucHV0PERyb3Bkb3duSXRlbT4oeyB2YWx1ZTogXCJcIiwgbGFiZWw6IFwiXCIgfSk7XG4gIHJlYWRvbmx5IG5vRGF0YU1lc3NhZ2UgPSBpbnB1dChcIk5vIERhdGFcIik7XG4gIHJlYWRvbmx5IG11bHRpTGluZSA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbEluZm9NZXNzYWdlID0gaW5wdXQ8c3RyaW5nPihcIlwiKTtcbiAgcmVhZG9ubHkgc2Nyb2xsSW50b1ZpZXcgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IHNlYXJjaExhYmVsID0gaW5wdXQoXCJTZWFyY2ggS2V5d29yZFwiKTtcbiAgcmVhZG9ubHkgY3VzdG9tU3R5bGVzID0gaW5wdXQ8eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4oe30pO1xuICByZWFkb25seSBhY3RpdmVJdGVtID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8vIE91dHB1dFxuICByZWFkb25seSBvbkNoYW5nZSA9IG91dHB1dDxEcm9wZG93bkl0ZW0+KCk7XG5cbiAgLy8gVGVtcGxhdGUgJiBET00gcmVmc1xuICBAVmlld0NoaWxkKFwic2VsZWN0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWxlY3RFbGVtZW50ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcInBvcHVwQ29udGFpbmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwb3B1cENvbnRhaW5lciE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlld1BvcnQhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG4gIEBDb250ZW50Q2hpbGQoXCJtaXNDdXN0b21JdGVtXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JdGVtITogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgcHJpdmF0ZSBfaXRlbXNDb250YWluZXI6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZChcIml0ZW1zQ29udGFpbmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBzZXQgaXRlbXNDb250YWluZXIoXG4gICAgY29udGFpbmVyOiBFbGVtZW50UmVmIHwgbnVsbFxuICApIHtcbiAgICB0aGlzLl9pdGVtc0NvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICBpZiAoY29udGFpbmVyKSB0aGlzLm1lYXN1cmVBbmRVcGRhdGVIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIC8vIOKchSBLZWVwIGludGVybmFsRGF0YSBpbiBzeW5jIHdpdGggaW5wdXQgZGF0YSAoYW5kIGFsbG93IHdyaXRlcylcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxEYXRhLnNldCh0aGlzLmRhdGEoKSB8fCBbXSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT0gQ29yZSBMb2dpYyA9PT09PT09PT09XG5cbiAgbWVhc3VyZUFuZFVwZGF0ZUhlaWdodCgpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkgfHwgIXRoaXMuX2l0ZW1zQ29udGFpbmVyKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLl9pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGl0ZW1zID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuaXRlbVwiKTtcblxuICAgIGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmR5bmFtaWNIZWlnaHQuc2V0KFwiNTBweFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdG90YWxNZWFzdXJlZEhlaWdodCA9IDA7XG4gICAgbGV0IG1heEl0ZW1IZWlnaHQgPSAwO1xuXG4gICAgQXJyYXkuZnJvbShpdGVtcylcbiAgICAgIC5zbGljZSgwLCBNYXRoLm1pbig4LCBpdGVtcy5sZW5ndGgpKVxuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgaHRtbEl0ZW0gPSBpdGVtIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBsZXQgaXRlbUhlaWdodCA9IGh0bWxJdGVtLm9mZnNldEhlaWdodCB8fCAwO1xuICAgICAgICB0b3RhbE1lYXN1cmVkSGVpZ2h0ICs9IGl0ZW1IZWlnaHQ7XG4gICAgICAgIG1heEl0ZW1IZWlnaHQgPSBNYXRoLm1heChtYXhJdGVtSGVpZ2h0LCBpdGVtSGVpZ2h0KTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyUGFkZGluZyA9IDg7XG4gICAgY29uc3QgZmluYWxIZWlnaHQgPSBNYXRoLm1heChcbiAgICAgIDUwLFxuICAgICAgTWF0aC5taW4odG90YWxNZWFzdXJlZEhlaWdodCArIGNvbnRhaW5lclBhZGRpbmcsIDMyMClcbiAgICApO1xuXG4gICAgdGhpcy5keW5hbWljSGVpZ2h0LnNldChcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0SGVpZ2h0KCkgPyB0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCgpIDogYCR7ZmluYWxIZWlnaHR9cHhgXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50RGF0YSgpOiBEcm9wZG93bkl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoSW5wdXQoKSA/IHRoaXMuc2VhcmNoRGF0YSgpIDogdGhpcy5pbnRlcm5hbERhdGEoKTtcbiAgfVxuXG4gIGdldCBpdGVtc0NvbnRhaW5lclN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IHRoaXMuZHluYW1pY0hlaWdodCgpLFxuICAgICAgXCJtYXgtaGVpZ2h0XCI6IFwiMzIwcHhcIixcbiAgICAgIFwibWluLWhlaWdodFwiOiBcIjUwcHhcIixcbiAgICB9O1xuICB9XG5cbiAgc2V0VXBBc3luY0RhdGFTZWFyY2goKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkpIHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmNvbmZpZygpXG4gICAgICAgID8uZGF0YVN0cmVhbSgpXG4gICAgICAgID8ucGlwZSgpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogRHJvcGRvd25JdGVtW10pID0+IHtcbiAgICAgICAgICB0aGlzLmludGVybmFsRGF0YS5zZXQocmVzIHx8IFtdKTsgLy8g4pyFIHNhZmVcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubWVhc3VyZUFuZFVwZGF0ZUhlaWdodCgpLCA2MCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9XG4gICAgICB0aGlzLmludGVybmFsRGF0YSgpPy5maW5kSW5kZXgoXG4gICAgICAgIChkYXRhSXRlbSkgPT4gZGF0YUl0ZW0/LnZhbHVlID09PSB0aGlzLnNlbGVjdGVkSXRlbSgpPy52YWx1ZVxuICAgICAgKSB8fCAtMTtcbiAgICBpZiAodGhpcy5zY3JvbGxJbnRvVmlldygpICYmIHRoaXMudmlld1BvcnQpIHtcbiAgICAgIHRoaXMudmlld1BvcnQuc2Nyb2xsVG9JbmRleChpbmRleCwgXCJzbW9vdGhcIik7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoSW5wdXRPbkNoYW5nZShuZXdWYWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5zZXQobmV3VmFsdWUpO1xuICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgdGhpcy5zZWFyY2hEYXRhLnNldChcbiAgICAgICAgdGhpcy5tdWx0aUxpbmUoKVxuICAgICAgICAgID8gdGhpcy5maWx0ZXJCeVByaW1hcnlUZXh0KHRoaXMuaW50ZXJuYWxEYXRhKCksIG5ld1ZhbHVlKVxuICAgICAgICAgIDogdGhpcy5maWx0ZXJCeVZhbHVlKHRoaXMuaW50ZXJuYWxEYXRhKCksIG5ld1ZhbHVlKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hEYXRhLnNldChbXSk7XG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLm1lYXN1cmVBbmRVcGRhdGVIZWlnaHQoKSk7XG4gIH1cblxuICBmaWx0ZXJCeVZhbHVlKGFycmF5OiBEcm9wZG93bkl0ZW1bXSwgc3RyaW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXJyYXk/LmZpbHRlcigobykgPT5cbiAgICAgICAgbz8ubGFiZWw/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKHN0cmluZz8udG9Mb3dlckNhc2UoKT8udHJpbSgpKVxuICAgICAgKSB8fCBbXVxuICAgICk7XG4gIH1cblxuICBmaWx0ZXJCeVByaW1hcnlUZXh0KGFycmF5OiBEcm9wZG93bkl0ZW1bXSwgc3RyaW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXJyYXk/LmZpbHRlcigobykgPT5cbiAgICAgICAgbz8ubGFiZWw/LnByaW1hcnlUZXh0XG4gICAgICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgPy5pbmNsdWRlcyhzdHJpbmc/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKSlcbiAgICAgICkgfHwgW11cbiAgICApO1xuICB9XG5cbiAgc2VhcmNoSW5wdXRGb2N1c2VkKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQuc2V0KGlzRm9jdXNlZCk7XG4gIH1cblxuICBzZWFyY2hJbnB1dENhbmNlbGVkKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQuc2V0KFwiXCIpO1xuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQuc2V0KGZhbHNlKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5tZWFzdXJlQW5kVXBkYXRlSGVpZ2h0KCkpO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc09wZW4uc2V0KCF0aGlzLmlzT3BlbigpKTtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5wb3B1cENvbnRhaW5lciwgdGhpcy5zZWxlY3RFbGVtZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50Piwgb3JpZ2luOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9uc0JvdHRvbSA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LFxuICAgICAgICB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sXG4gICAgICAgIDAsXG4gICAgICAgIDRcbiAgICAgICksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sXG4gICAgICAgIDAsXG4gICAgICAgIDRcbiAgICAgICksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwidG9wXCIgfSxcbiAgICAgICAgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LFxuICAgICAgICAwLFxuICAgICAgICAtNFxuICAgICAgKSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6IFwiZW5kXCIsIG9yaWdpblk6IFwidG9wXCIgfSxcbiAgICAgICAgeyBvdmVybGF5WDogXCJlbmRcIiwgb3ZlcmxheVk6IFwiYm90dG9tXCIgfSxcbiAgICAgICAgMCxcbiAgICAgICAgLTRcbiAgICAgICksXG4gICAgXTtcblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09IFwiUmlnaHRcIlxuICAgICAgICAgID8gcG9zaXRpb25zQm90dG9tLnJldmVyc2UoKVxuICAgICAgICAgIDogcG9zaXRpb25zQm90dG9tKSxcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gXCJSaWdodFwiXG4gICAgICAgICAgPyBwb3NpdGlvbnNUb3AucmV2ZXJzZSgpXG4gICAgICAgICAgOiBwb3NpdGlvbnNUb3ApLFxuICAgICAgXSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcblxuICAgIGNvbnN0IGNvbmZpZ3MgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIixcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHdpZHRoOiBvcmlnaW4/LmNsaWVudFdpZHRoLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcblxuICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZHJvcGRvd25MaXN0V2lkdGgoKSB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0SGVpZ2h0KCkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgaGVpZ2h0OiB0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCgpIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm9uQ2FuY2VsKCk7XG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3RJdGVtKGl0ZW06IERyb3Bkb3duSXRlbSkge1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdChpdGVtKTtcbiAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkLnNldChmYWxzZSk7XG4gICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQuc2V0KFwiXCIpO1xuICAgIHRoaXMuX2l0ZW1zQ29udGFpbmVyID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXl1cC5lc2NcIiwgW1wiJGV2ZW50XCJdKVxuICBjbG9zZU9uRXNjKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93bkl0ZW0ge1xuICBsYWJlbDogYW55O1xuICB2YWx1ZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGN1c3RvbUljb24/OiBzdHJpbmc7XG59XG4iLCI8ZGl2IChjbGljayk9XCJzZXRVcEFzeW5jRGF0YVNlYXJjaCgpXCJcbihrZXl1cC5lbnRlcik9XCJzZXRVcEFzeW5jRGF0YVNlYXJjaCgpXCJcbiAgY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGhlaWdodCgpLmxlbmd0aCA+IDAgPyBoZWlnaHQoKSA6ICcnLFxuICAgIHdpZHRoOiB3aWR0aCgpLmxlbmd0aCA+IDAgPyB3aWR0aCgpIDogJydcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICAjc2VsZWN0XG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIFtuZ1N0eWxlXT1cImN1c3RvbVN0eWxlcygpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcbiAgICBbbmdDbGFzc109XCJpc09wZW4oKSA/ICdkcm9wZG93bi1wb3J0JzogJydcIlxuICA+XG4gICAgPGltZyBjbGFzcz1cImltZy1jb250YWluZXJcIiBbd2lkdGhdPVwiMTZcIiBbaGVpZ2h0XT1cIjE2XCIgW3NyY109XCJzZWxlY3RlZEl0ZW0oKT8uY3VzdG9tSWNvblwiICpuZ0lmPVwic2VsZWN0ZWRJdGVtKCk/LmN1c3RvbUljb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBbbmdTdHlsZV09XCJ7d2lkdGg6IHNlbGVjdGVkSXRlbSgpPy5jdXN0b21JY29uID8gJ2NhbGMoMTAwJSAtIDQ4cHgpJyA6ICdjYWxjKDEwMCUgLSAzMnB4KSd9XCI+XG4gICAgICA8cCBjbGFzcz1cInRleHRcIiAqbmdJZj1cIiFzaG93T25seUljb24oKTsgZWxzZSBzaG93SWNvblwiPlxuICAgICAgICB7eyBtdWx0aUxpbmUoKSA/IHNlbGVjdGVkSXRlbSgpPy5sYWJlbD8ucHJpbWFyeVRleHQgOiBzZWxlY3RlZEl0ZW0oKT8ubGFiZWwgfHwgbGFiZWwoKSB9fVxuICAgICAgPC9wPlxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93SWNvbj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCIhc2VsZWN0ZWRJdGVtKCk/Lmljb25cIj5cbiAgICAgICAgICB7eyBsYWJlbCgpIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGltZyBjbGFzcz1cImljb25cIiAqbmdJZj1cIiEhc2VsZWN0ZWRJdGVtKCk/Lmljb25cIiBbc3JjXT1cInNlbGVjdGVkSXRlbSgpPy5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPHN2Z1xuICAgICAgY2xhc3M9XCJoYW5kbGVcIlxuICAgICAgW25nU3R5bGVdPVwieyB0cmFuc2Zvcm06IGlzT3BlbigpID8gJ3JvdGF0ZSgxODBkZWcpJyA6ICdyb3RhdGUoMGRlZyknIH1cIlxuICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMy44MjUgNy4xNTg0NUwxMCAxMC45NzUxTDYuMTc1IDcuMTU4NDVMNSA4LjMzMzQ1TDEwIDEzLjMzMzRMMTUgOC4zMzM0NUwxMy44MjUgNy4xNTg0NVpcIlxuICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BvcHVwQ29udGFpbmVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIiBcbiAgICBjZGtUcmFwRm9jdXMgXG4gICAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIiBcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGhlaWdodDogZHJvcGRvd25MaXN0SGVpZ2h0KCksXG4gICAgICB3aWR0aDogZHJvcGRvd25MaXN0V2lkdGgoKVxuICAgIH1cIlxuICAgIChrZXl1cC5lc2MpPVwiY2xvc2VPbkVzYygkZXZlbnQpXCJcbiAgICBhcmlhLWxhYmVsPVwiZHJvcGRvd25cIlxuICA+XG4gICAgPGRpdiAqbmdJZj1cInNlYXJjaEVuYWJsZWQoKVwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cIiFpc1NlYXJjaElucHV0Rm9jdXNlZCgpXCJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXG4gICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNNC4yMTUwOCAxMS4xNDU2QzQuMjE1MDggNy4zMTc5IDcuMzM3MjIgNC4yMTE2NSAxMS4xOTI2IDQuMjExNjVDMTUuMDQ4IDQuMjExNjUgMTguMTcwMiA3LjMxNzkgMTguMTcwMiAxMS4xNDU2QzE4LjE3MDIgMTIuNjkzMSAxNy42NTk5IDE0LjEyMjYgMTYuNzk3MiAxNS4yNzY3TDE1LjM2ODUgMTYuNzAxM0MxNC4yMDQ0IDE3LjU2NjggMTIuNzU5IDE4LjA3OTYgMTEuMTkyNiAxOC4wNzk2QzcuMzM3MjIgMTguMDc5NiA0LjIxNTA4IDE0Ljk3MzQgNC4yMTUwOCAxMS4xNDU2Wk0xNS45NDIxIDE3Ljc4MzVDMTQuNjAyMSAxOC43MzI5IDEyLjk2MjcgMTkuMjkxMyAxMS4xOTI2IDE5LjI5MTNDNi42Njk3NyAxOS4yOTEzIDMgMTUuNjQ2MSAzIDExLjE0NTZDMyA2LjY0NTEyIDYuNjY5NzcgMyAxMS4xOTI2IDNDMTUuNzE1NSAzIDE5LjM4NTIgNi42NDUxMiAxOS4zODUyIDExLjE0NTZDMTkuMzg1MiAxMi45MzcxIDE4LjgwMzcgMTQuNTkzMSAxNy44MTg0IDE1LjkzNzVMMTkuODM2MSAxNy40MDQ4QzIwLjY3MDUgMTcuOTEyIDIxLjc1NTQgMTguNjU0MyAyMC4yNDU0IDIwLjIxNUMxOC43MzUzIDIxLjc3NTYgMTguMDA5OSAyMC42NjYzIDE3LjQ5OTEgMTkuODM2NEwxNS45NDIxIDE3Ljc4MzVaXCJcbiAgICAgICAgICBmaWxsPVwiIzZBNzM3RFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxpbnB1dFxuICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hJbnB1dCgpXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIHBhZGRpbmdMZWZ0OiBpc1NlYXJjaElucHV0Rm9jdXNlZCgpID8gJzEycHgnIDogJzQ1cHgnLFxuICAgICAgICAgIGJvcmRlcjogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcxcHggc29saWQgIzA5MzdCMicgOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgICAgICAgIHBhZGRpbmdSaWdodDogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICc0NXB4JyA6ICcxMHB4J1xuICAgICAgICB9XCJcbiAgICAgICAgW3RhYkluZGV4XT1cIjBcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hJbnB1dE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcnIDogc2VhcmNoTGFiZWwoKVwiXG4gICAgICAgIChmb2N1cyk9XCJzZWFyY2hJbnB1dEZvY3VzZWQodHJ1ZSlcIlxuICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VhcmNoTGFiZWwoKVwiXG4gICAgICAvPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cImlzU2VhcmNoSW5wdXRGb2N1c2VkKClcIlxuICAgICAgICBjbGFzcz1cImNhbmNlbC1pY29uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaElucHV0Q2FuY2VsZWQoJGV2ZW50KVwiXG4gICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNOC44NzQ0NiA3LjMyMTQ0QzguNDQ1ODggNi44OTI4NSA3Ljc1MSA2Ljg5Mjg1IDcuMzIyNDIgNy4zMjE0NEM2Ljg5MzgzIDcuNzUwMDIgNi44OTM4MyA4LjQ0NDkgNy4zMjI0MiA4Ljg3MzQ5TDEwLjQ0ODggMTEuOTk5OUw3LjMyMzU3IDE1LjEyNTJDNi44OTQ5OCAxNS41NTM4IDYuODk0OTggMTYuMjQ4NiA3LjMyMzU3IDE2LjY3NzJDNy43NTIxNSAxNy4xMDU4IDguNDQ3MDMgMTcuMTA1OCA4Ljg3NTYxIDE2LjY3NzJMMTIuMDAwOSAxMy41NTJMMTUuMTI2MSAxNi42NzcyQzE1LjU1NDcgMTcuMTA1OCAxNi4yNDk2IDE3LjEwNTggMTYuNjc4MSAxNi42NzcyQzE3LjEwNjcgMTYuMjQ4NiAxNy4xMDY3IDE1LjU1MzcgMTYuNjc4MSAxNS4xMjUxTDEzLjU1MjkgMTEuOTk5OUwxNi42NzkzIDguODczNTRDMTcuMTA3OSA4LjQ0NDk2IDE3LjEwNzkgNy43NTAwOCAxNi42NzkzIDcuMzIxNUMxNi4yNTA3IDYuODkyOTEgMTUuNTU1OCA2Ljg5MjkxIDE1LjEyNzMgNy4zMjE1TDEyLjAwMDkgMTAuNDQ3OUw4Ljg3NDQ2IDcuMzIxNDRaXCJcbiAgICAgICAgICBmaWxsPVwiIzZBNzM3RFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiICpuZ0lmPVwibG9hZGluZygpXCI+XG4gICAgICA8bWlzLWxvYWRlciBbbW9iaWxlVmlld109XCJ0cnVlXCI+PC9taXMtbG9hZGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdGFiaW5kZXg9XCItMVwiICpuZ0lmPVwiIXNlYXJjaEVuYWJsZWQoKVwiIGNka0ZvY3VzSW5pdGlhbD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbXNcIiAjaXRlbXNDb250YWluZXIgW25nU3R5bGVdPVwiaXRlbXNDb250YWluZXJTdHlsZVwiICpuZ0lmPVwiIWxvYWRpbmcoKVwiPlxuICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCAqbmdJZj1cImN1cnJlbnREYXRhLmxlbmd0aCA+IDBcIiBcbiAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1TaXplRm9yQ2RrKCkgfHwgMzZcIiBcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi12aWV3cG9ydFwiXG4gICAgICAgIFttaW5CdWZmZXJQeF09XCIyMDBcIlxuICAgICAgICBbbWF4QnVmZmVyUHhdPVwiNDAwXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBcbiAgICAgICAgICAgICdpdGVtLWRpc2FibGVkJzogaXRlbS5kaXNhYmxlZCwgXG4gICAgICAgICAgICAnaXRlbS1zZWxlY3RlZCc6IChoaWdsaWdodFNlbGVjdGVkVmFsdWUoKSAmJiBpdGVtLnZhbHVlID09PSBzZWxlY3RlZEl0ZW0oKT8udmFsdWUpLCBcbiAgICAgICAgICAgICdpY29uLW9ubHknOiBzaG93T25seUljb24oKSBcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwiaXRlbS5kaXNhYmxlZCA/IG51bGwgOiBzZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaXRlbS5kaXNhYmxlZCA/IG51bGwgOiBzZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBpdGVtIG9mIGN1cnJlbnREYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUl0ZW07IGVsc2Ugc3RhbmRhcmRJdGVtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUl0ZW1cIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZEl0ZW0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdJZj1cIiFzaG93T25seUljb24oKVwiIFtuZ1N0eWxlXT1cInsgXG4gICAgICAgICAgICAgIHdpZHRoOiBpdGVtLmljb24gPyAnOTAlJyA6ICcxMDAlJywgXG4gICAgICAgICAgICAgICdkaXNwbGF5JzogbXVsdGlMaW5lKCkgPyAnZmxleCc6ICdpbmhlcml0JywgXG4gICAgICAgICAgICAgICdmbGV4LWRpcmVjdGlvbic6IG11bHRpTGluZSgpID8gJ2NvbHVtbic6ICdpbmhlcml0JyBcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmltYXJ5VGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7IG11bHRpTGluZSgpID8gaXRlbT8ubGFiZWw/LnByaW1hcnlUZXh0IDogaXRlbT8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZGFyeVRleHRcIiAqbmdJZj1cIm11bHRpTGluZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbT8ubGFiZWw/LnNlY29uZGFyeVRleHQgPyBpdGVtPy5sYWJlbD8uc2Vjb25kYXJ5VGV4dCA6IGFkZGl0aW9uYWxJbmZvTWVzc2FnZSgpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb25cIiBbc3JjXT1cIml0ZW0uaWNvblwiIGFsdD1cIm5vIGltZ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgPGRpdiBjbGFzcz1cIm5vRGF0YVwiICpuZ0lmPVwiY3VycmVudERhdGEubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIHt7IHNlYXJjaElucHV0KCkgPT09IFwiXCIgPyBub0RhdGFNZXNzYWdlKCkgOiBcIk5vIHJlc3VsdHNcIiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
497
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBRVosU0FBUyxFQUdULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHNCQUFzQixFQUV0QixhQUFhLEdBRWQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSDlELDBCQUE0SDs7OztJQUF0RSxBQUFkLEFBQWIsMEJBQVksY0FBYyxnR0FBbUM7OztJQUV0Riw2QkFBdUQ7SUFDckQsWUFDRjtJQUFBLGlCQUFJOzs7O0lBREYsY0FDRjtJQURFLHdQQUNGOzs7SUFFRSw2QkFBOEM7SUFDNUMsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUsK0NBQ0Y7OztJQUNBLDBCQUE2Rjs7OztJQUE1Qyx1R0FBNEI7OztJQUE3RSxBQUhBLDZFQUE4QyxvRUFHK0M7Ozs7O0lBSDVFLHlGQUEyQjtJQUd6QixjQUE0QjtJQUE1QiwwRkFBNEI7Ozs7SUFvQ2pELCtCQVFDO0lBQ0MsMkJBS0U7SUFDSixpQkFBTTs7Ozs7SUFlTiwrQkFTQztJQU5DLDJNQUFTLGtDQUEyQixLQUFDO0lBT3JDLDJCQUtFO0lBQ0osaUJBQU07Ozs7SUEvQ1IsK0JBQXNEO0lBQ3BELDZG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UUFBUSxDQUFDOztrRkEvUTFCLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIGVmZmVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1kcm9wZG93blwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kcm9wZG93bi5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQge1xuICAvLyBJbnRlcm5hbCBzaWduYWxzXG4gIHB1YmxpYyBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNTZWFyY2hJbnB1dEZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBzZWFyY2hJbnB1dCA9IHNpZ25hbChcIlwiKTtcbiAgcmVhZG9ubHkgc2VhcmNoRGF0YSA9IHNpZ25hbDxEcm9wZG93bkl0ZW1bXT4oW10pO1xuICByZWFkb25seSBkeW5hbWljSGVpZ2h0ID0gc2lnbmFsKFwiYXV0b1wiKTtcblxuICAvLyDinIUgV3JpdGFibGUgc2lnbmFsIGZvciBpbnRlcm5hbCBkYXRhXG4gIHJlYWRvbmx5IGludGVybmFsRGF0YSA9IHNpZ25hbDxEcm9wZG93bkl0ZW1bXT4oW10pO1xuXG4gIC8vIElucHV0c1xuICByZWFkb25seSBkYXRhID0gaW5wdXQ8RHJvcGRvd25JdGVtW10+KFtdKTtcbiAgcmVhZG9ubHkgaGVpZ2h0ID0gaW5wdXQoXCJcIik7XG4gIHJlYWRvbmx5IGFyaWFMYWJlbCA9IGlucHV0KFwiXCIpO1xuICByZWFkb25seSB3aWR0aCA9IGlucHV0KFwiXCIpO1xuICByZWFkb25seSBsYWJlbCA9IGlucHV0KFwiU2VsZWN0XCIpO1xuICByZWFkb25seSBpdGVtU2l6ZUZvckNkayA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgc2hvd09ubHlJY29uID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBoaWdsaWdodFNlbGVjdGVkVmFsdWUgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGRyb3Bkb3duTGlzdEhlaWdodCA9IGlucHV0KFwiXCIpO1xuICByZWFkb25seSBkcm9wZG93bkxpc3RXaWR0aCA9IGlucHV0KFwiXCIpO1xuICByZWFkb25seSBkcm9wZG93bkxpc3RQb3NpdGlvbiA9IGlucHV0PFwiTGVmdFwiIHwgXCJSaWdodFwiPihcIkxlZnRcIik7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgc2VhcmNoRW5hYmxlZCA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW0gPSBpbnB1dDxEcm9wZG93bkl0ZW0+KHsgdmFsdWU6IFwiXCIsIGxhYmVsOiBcIlwiIH0pO1xuICByZWFkb25seSBub0RhdGFNZXNzYWdlID0gaW5wdXQoXCJObyBEYXRhXCIpO1xuICByZWFkb25seSBtdWx0aUxpbmUgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxJbmZvTWVzc2FnZSA9IGlucHV0PHN0cmluZz4oXCJcIik7XG4gIHJlYWRvbmx5IHNjcm9sbEludG9WaWV3ID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBzZWFyY2hMYWJlbCA9IGlucHV0KFwiU2VhcmNoIEtleXdvcmRcIik7XG4gIHJlYWRvbmx5IGN1c3RvbVN0eWxlcyA9IGlucHV0PHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+KHt9KTtcbiAgcmVhZG9ubHkgYWN0aXZlSXRlbSA9IGlucHV0KGZhbHNlKTtcblxuICAvLyBPdXRwdXRcbiAgcmVhZG9ubHkgb25DaGFuZ2UgPSBvdXRwdXQ8RHJvcGRvd25JdGVtPigpO1xuXG4gIC8vIFRlbXBsYXRlICYgRE9NIHJlZnNcbiAgQFZpZXdDaGlsZChcInNlbGVjdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VsZWN0RWxlbWVudCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJwb3B1cENvbnRhaW5lclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcG9wdXBDb250YWluZXIhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdQb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuICBAQ29udGVudENoaWxkKFwibWlzQ3VzdG9tSXRlbVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSXRlbSE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgX2l0ZW1zQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XG4gIEBWaWV3Q2hpbGQoXCJpdGVtc0NvbnRhaW5lclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgc2V0IGl0ZW1zQ29udGFpbmVyKFxuICAgIGNvbnRhaW5lcjogRWxlbWVudFJlZiB8IG51bGxcbiAgKSB7XG4gICAgdGhpcy5faXRlbXNDb250YWluZXIgPSBjb250YWluZXI7XG4gICAgaWYgKGNvbnRhaW5lcikgdGhpcy5tZWFzdXJlQW5kVXBkYXRlSGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICAvLyDinIUgS2VlcCBpbnRlcm5hbERhdGEgaW4gc3luYyB3aXRoIGlucHV0IGRhdGEgKGFuZCBhbGxvdyB3cml0ZXMpXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmludGVybmFsRGF0YS5zZXQodGhpcy5kYXRhKCkgfHwgW10pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICAvLyA9PT09PT09PT09IENvcmUgTG9naWMgPT09PT09PT09PVxuXG4gIG1lYXN1cmVBbmRVcGRhdGVIZWlnaHQoKSB7XG4gICAgaWYgKCF0aGlzLmlzT3BlbigpIHx8ICF0aGlzLl9pdGVtc0NvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5faXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpdGVtcyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLml0ZW1cIik7XG5cbiAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5keW5hbWljSGVpZ2h0LnNldChcIjUwcHhcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHRvdGFsTWVhc3VyZWRIZWlnaHQgPSAwO1xuICAgIGxldCBtYXhJdGVtSGVpZ2h0ID0gMDtcblxuICAgIEFycmF5LmZyb20oaXRlbXMpXG4gICAgICAuc2xpY2UoMCwgTWF0aC5taW4oOCwgaXRlbXMubGVuZ3RoKSlcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGh0bWxJdGVtID0gaXRlbSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IGl0ZW1IZWlnaHQgPSBodG1sSXRlbS5vZmZzZXRIZWlnaHQgfHwgMDtcbiAgICAgICAgdG90YWxNZWFzdXJlZEhlaWdodCArPSBpdGVtSGVpZ2h0O1xuICAgICAgICBtYXhJdGVtSGVpZ2h0ID0gTWF0aC5tYXgobWF4SXRlbUhlaWdodCwgaXRlbUhlaWdodCk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclBhZGRpbmcgPSA4O1xuICAgIGNvbnN0IGZpbmFsSGVpZ2h0ID0gTWF0aC5tYXgoXG4gICAgICA1MCxcbiAgICAgIE1hdGgubWluKHRvdGFsTWVhc3VyZWRIZWlnaHQgKyBjb250YWluZXJQYWRkaW5nLCAzMjApXG4gICAgKTtcblxuICAgIHRoaXMuZHluYW1pY0hlaWdodC5zZXQoXG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCgpID8gdGhpcy5kcm9wZG93bkxpc3RIZWlnaHQoKSA6IGAke2ZpbmFsSGVpZ2h0fXB4YFxuICAgICk7XG4gIH1cblxuICBnZXQgY3VycmVudERhdGEoKTogRHJvcGRvd25JdGVtW10ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaElucHV0KCkgPyB0aGlzLnNlYXJjaERhdGEoKSA6IHRoaXMuaW50ZXJuYWxEYXRhKCk7XG4gIH1cblxuICBnZXQgaXRlbXNDb250YWluZXJTdHlsZSgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiB0aGlzLmR5bmFtaWNIZWlnaHQoKSxcbiAgICAgIFwibWF4LWhlaWdodFwiOiBcIjMyMHB4XCIsXG4gICAgICBcIm1pbi1oZWlnaHRcIjogXCI1MHB4XCIsXG4gICAgfTtcbiAgfVxuXG4gIHNldFVwQXN5bmNEYXRhU2VhcmNoKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZygpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5jb25maWcoKVxuICAgICAgICA/LmRhdGFTdHJlYW0oKVxuICAgICAgICA/LnBpcGUoKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IERyb3Bkb3duSXRlbVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbERhdGEuc2V0KHJlcyB8fCBbXSk7IC8vIOKchSBzYWZlXG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1lYXN1cmVBbmRVcGRhdGVIZWlnaHQoKSwgNjApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPVxuICAgICAgdGhpcy5pbnRlcm5hbERhdGEoKT8uZmluZEluZGV4KFxuICAgICAgICAoZGF0YUl0ZW0pID0+IGRhdGFJdGVtPy52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZEl0ZW0oKT8udmFsdWVcbiAgICAgICkgfHwgLTE7XG4gICAgaWYgKHRoaXMuc2Nyb2xsSW50b1ZpZXcoKSAmJiB0aGlzLnZpZXdQb3J0KSB7XG4gICAgICB0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoaW5kZXgsIFwic21vb3RoXCIpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaElucHV0T25DaGFuZ2UobmV3VmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQuc2V0KG5ld1ZhbHVlKTtcbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YS5zZXQoXG4gICAgICAgIHRoaXMubXVsdGlMaW5lKClcbiAgICAgICAgICA/IHRoaXMuZmlsdGVyQnlQcmltYXJ5VGV4dCh0aGlzLmludGVybmFsRGF0YSgpLCBuZXdWYWx1ZSlcbiAgICAgICAgICA6IHRoaXMuZmlsdGVyQnlWYWx1ZSh0aGlzLmludGVybmFsRGF0YSgpLCBuZXdWYWx1ZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YS5zZXQoW10pO1xuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5tZWFzdXJlQW5kVXBkYXRlSGVpZ2h0KCkpO1xuICB9XG5cbiAgZmlsdGVyQnlWYWx1ZShhcnJheTogRHJvcGRvd25JdGVtW10sIHN0cmluZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGFycmF5Py5maWx0ZXIoKG8pID0+XG4gICAgICAgIG8/LmxhYmVsPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhzdHJpbmc/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKSlcbiAgICAgICkgfHwgW11cbiAgICApO1xuICB9XG5cbiAgZmlsdGVyQnlQcmltYXJ5VGV4dChhcnJheTogRHJvcGRvd25JdGVtW10sIHN0cmluZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGFycmF5Py5maWx0ZXIoKG8pID0+XG4gICAgICAgIG8/LmxhYmVsPy5wcmltYXJ5VGV4dFxuICAgICAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgID8uaW5jbHVkZXMoc3RyaW5nPy50b0xvd2VyQ2FzZSgpPy50cmltKCkpXG4gICAgICApIHx8IFtdXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaElucHV0Rm9jdXNlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkLnNldChpc0ZvY3VzZWQpO1xuICB9XG5cbiAgc2VhcmNoSW5wdXRDYW5jZWxlZChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldChcIlwiKTtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkLnNldChmYWxzZSk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMubWVhc3VyZUFuZFVwZGF0ZUhlaWdodCgpKTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMucG9wdXBDb250YWluZXIsIHRoaXMuc2VsZWN0RWxlbWVudD8ubmF0aXZlRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwiYm90dG9tXCIgfSxcbiAgICAgICAgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LFxuICAgICAgICAwLFxuICAgICAgICA0XG4gICAgICApLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LFxuICAgICAgICB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LFxuICAgICAgICAwLFxuICAgICAgICA0XG4gICAgICApLFxuICAgIF07XG4gICAgY29uc3QgcG9zaXRpb25zVG9wID0gW1xuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogXCJzdGFydFwiLCBvcmlnaW5ZOiBcInRvcFwiIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6IFwic3RhcnRcIiwgb3ZlcmxheVk6IFwiYm90dG9tXCIgfSxcbiAgICAgICAgMCxcbiAgICAgICAgLTRcbiAgICAgICksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcInRvcFwiIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcImJvdHRvbVwiIH0sXG4gICAgICAgIDAsXG4gICAgICAgIC00XG4gICAgICApLFxuICAgIF07XG5cbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8ob3JpZ2luKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSBcIlJpZ2h0XCJcbiAgICAgICAgICA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKClcbiAgICAgICAgICA6IHBvc2l0aW9uc0JvdHRvbSksXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09IFwiUmlnaHRcIlxuICAgICAgICAgID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKVxuICAgICAgICAgIDogcG9zaXRpb25zVG9wKSxcbiAgICAgIF0pXG4gICAgICAud2l0aFB1c2godHJ1ZSk7XG5cbiAgICBjb25zdCBjb25maWdzID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiBcImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCIsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICB3aWR0aDogb3JpZ2luPy5jbGllbnRXaWR0aCxcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG5cbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IHdpZHRoOiB0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKCkgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdEhlaWdodCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IGhlaWdodDogdGhpcy5kcm9wZG93bkxpc3RIZWlnaHQoKSB9KTtcbiAgICB9XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNhbmNlbCgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0SXRlbShpdGVtOiBEcm9wZG93bkl0ZW0pIHtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoaXRlbSk7XG4gICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldChcIlwiKTtcbiAgICB0aGlzLl9pdGVtc0NvbnRhaW5lciA9IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwia2V5dXAuZXNjXCIsIFtcIiRldmVudFwiXSlcbiAgY2xvc2VPbkVzYyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMub25DYW5jZWwoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JdGVtIHtcbiAgbGFiZWw6IGFueTtcbiAgdmFsdWU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjdXN0b21JY29uPzogc3RyaW5nO1xufVxuIiwiPGRpdiAoY2xpY2spPVwic2V0VXBBc3luY0RhdGFTZWFyY2goKVwiXG4oa2V5dXAuZW50ZXIpPVwic2V0VXBBc3luY0RhdGFTZWFyY2goKVwiXG4gIGNsYXNzPVwibWFpbi1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgaGVpZ2h0OiBoZWlnaHQoKS5sZW5ndGggPiAwID8gaGVpZ2h0KCkgOiAnJyxcbiAgICB3aWR0aDogd2lkdGgoKS5sZW5ndGggPiAwID8gd2lkdGgoKSA6ICcnXG4gIH1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgI3NlbGVjdFxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCJcbiAgICBbbmdTdHlsZV09XCJjdXN0b21TdHlsZXMoKVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKVwiXG4gICAgW25nQ2xhc3NdPVwiaXNPcGVuKCkgPyAnZHJvcGRvd24tcG9ydCc6ICcnXCJcbiAgPlxuICAgIDxpbWcgY2xhc3M9XCJpbWctY29udGFpbmVyXCIgW3dpZHRoXT1cIjE2XCIgW2hlaWdodF09XCIxNlwiIFtzcmNdPVwic2VsZWN0ZWRJdGVtKCk/LmN1c3RvbUljb25cIiAqbmdJZj1cInNlbGVjdGVkSXRlbSgpPy5jdXN0b21JY29uXCI+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgW25nU3R5bGVdPVwie3dpZHRoOiBzZWxlY3RlZEl0ZW0oKT8uY3VzdG9tSWNvbiA/ICdjYWxjKDEwMCUgLSA0OHB4KScgOiAnY2FsYygxMDAlIC0gMzJweCknfVwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCIhc2hvd09ubHlJY29uKCk7IGVsc2Ugc2hvd0ljb25cIj5cbiAgICAgICAge3sgbXVsdGlMaW5lKCkgPyBzZWxlY3RlZEl0ZW0oKT8ubGFiZWw/LnByaW1hcnlUZXh0IDogc2VsZWN0ZWRJdGVtKCk/LmxhYmVsIHx8IGxhYmVsKCkgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0ljb24+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwiIXNlbGVjdGVkSXRlbSgpPy5pY29uXCI+XG4gICAgICAgICAge3sgbGFiZWwoKSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJpY29uXCIgKm5nSWY9XCIhIXNlbGVjdGVkSXRlbSgpPy5pY29uXCIgW3NyY109XCJzZWxlY3RlZEl0ZW0oKT8uaWNvblwiIGFsdD1cIm5vIGltZ1wiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwiaGFuZGxlXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiBpc09wZW4oKSA/ICdyb3RhdGUoMTgwZGVnKScgOiAncm90YXRlKDBkZWcpJyB9XCJcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuODI1IDcuMTU4NDVMMTAgMTAuOTc1MUw2LjE3NSA3LjE1ODQ1TDUgOC4zMzM0NUwxMCAxMy4zMzM0TDE1IDguMzMzNDVMMTMuODI1IDcuMTU4NDVaXCJcbiAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwb3B1cENvbnRhaW5lcj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicG9wdXAtY29udGFpbmVyXCIgXG4gICAgY2RrVHJhcEZvY3VzIFxuICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICBoZWlnaHQ6IGRyb3Bkb3duTGlzdEhlaWdodCgpLFxuICAgICAgd2lkdGg6IGRyb3Bkb3duTGlzdFdpZHRoKClcbiAgICB9XCJcbiAgICAoa2V5dXAuZXNjKT1cImNsb3NlT25Fc2MoJGV2ZW50KVwiXG4gICAgYXJpYS1sYWJlbD1cImRyb3Bkb3duXCJcbiAgPlxuICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hFbmFibGVkKClcIiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCIhaXNTZWFyY2hJbnB1dEZvY3VzZWQoKVwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLWljb25cIlxuICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTQuMjE1MDggMTEuMTQ1NkM0LjIxNTA4IDcuMzE3OSA3LjMzNzIyIDQuMjExNjUgMTEuMTkyNiA0LjIxMTY1QzE1LjA0OCA0LjIxMTY1IDE4LjE3MDIgNy4zMTc5IDE4LjE3MDIgMTEuMTQ1NkMxOC4xNzAyIDEyLjY5MzEgMTcuNjU5OSAxNC4xMjI2IDE2Ljc5NzIgMTUuMjc2N0wxNS4zNjg1IDE2LjcwMTNDMTQuMjA0NCAxNy41NjY4IDEyLjc1OSAxOC4wNzk2IDExLjE5MjYgMTguMDc5NkM3LjMzNzIyIDE4LjA3OTYgNC4yMTUwOCAxNC45NzM0IDQuMjE1MDggMTEuMTQ1NlpNMTUuOTQyMSAxNy43ODM1QzE0LjYwMjEgMTguNzMyOSAxMi45NjI3IDE5LjI5MTMgMTEuMTkyNiAxOS4yOTEzQzYuNjY5NzcgMTkuMjkxMyAzIDE1LjY0NjEgMyAxMS4xNDU2QzMgNi42NDUxMiA2LjY2OTc3IDMgMTEuMTkyNiAzQzE1LjcxNTUgMyAxOS4zODUyIDYuNjQ1MTIgMTkuMzg1MiAxMS4xNDU2QzE5LjM4NTIgMTIuOTM3MSAxOC44MDM3IDE0LjU5MzEgMTcuODE4NCAxNS45Mzc1TDE5LjgzNjEgMTcuNDA0OEMyMC42NzA1IDE3LjkxMiAyMS43NTU0IDE4LjY1NDMgMjAuMjQ1NCAyMC4yMTVDMTguNzM1MyAyMS43NzU2IDE4LjAwOTkgMjAuNjY2MyAxNy40OTkxIDE5LjgzNjRMMTUuOTQyMSAxNy43ODM1WlwiXG4gICAgICAgICAgZmlsbD1cIiM2QTczN0RcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoSW5wdXQoKVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBwYWRkaW5nTGVmdDogaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcxMnB4JyA6ICc0NXB4JyxcbiAgICAgICAgICBib3JkZXI6IGlzU2VhcmNoSW5wdXRGb2N1c2VkKCkgPyAnMXB4IHNvbGlkICMwOTM3QjInIDogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICAgICAgICBwYWRkaW5nUmlnaHQ6IGlzU2VhcmNoSW5wdXRGb2N1c2VkKCkgPyAnNDVweCcgOiAnMTBweCdcbiAgICAgICAgfVwiXG4gICAgICAgIFt0YWJJbmRleF09XCIwXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoSW5wdXRPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzU2VhcmNoSW5wdXRGb2N1c2VkKCkgPyAnJyA6IHNlYXJjaExhYmVsKClcIlxuICAgICAgICAoZm9jdXMpPVwic2VhcmNoSW5wdXRGb2N1c2VkKHRydWUpXCJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNlYXJjaExhYmVsKClcIlxuICAgICAgLz5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpc1NlYXJjaElucHV0Rm9jdXNlZCgpXCJcbiAgICAgICAgY2xhc3M9XCJjYW5jZWwtaWNvblwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hJbnB1dENhbmNlbGVkKCRldmVudClcIlxuICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTguODc0NDYgNy4zMjE0NEM4LjQ0NTg4IDYuODkyODUgNy43NTEgNi44OTI4NSA3LjMyMjQyIDcuMzIxNDRDNi44OTM4MyA3Ljc1MDAyIDYuODkzODMgOC40NDQ5IDcuMzIyNDIgOC44NzM0OUwxMC40NDg4IDExLjk5OTlMNy4zMjM1NyAxNS4xMjUyQzYuODk0OTggMTUuNTUzOCA2Ljg5NDk4IDE2LjI0ODYgNy4zMjM1NyAxNi42NzcyQzcuNzUyMTUgMTcuMTA1OCA4LjQ0NzAzIDE3LjEwNTggOC44NzU2MSAxNi42NzcyTDEyLjAwMDkgMTMuNTUyTDE1LjEyNjEgMTYuNjc3MkMxNS41NTQ3IDE3LjEwNTggMTYuMjQ5NiAxNy4xMDU4IDE2LjY3ODEgMTYuNjc3MkMxNy4xMDY3IDE2LjI0ODYgMTcuMTA2NyAxNS41NTM3IDE2LjY3ODEgMTUuMTI1MUwxMy41NTI5IDExLjk5OTlMMTYuNjc5MyA4Ljg3MzU0QzE3LjEwNzkgOC40NDQ5NiAxNy4xMDc5IDcuNzUwMDggMTYuNjc5MyA3LjMyMTVDMTYuMjUwNyA2Ljg5MjkxIDE1LjU1NTggNi44OTI5MSAxNS4xMjczIDcuMzIxNUwxMi4wMDA5IDEwLjQ0NzlMOC44NzQ0NiA3LjMyMTQ0WlwiXG4gICAgICAgICAgZmlsbD1cIiM2QTczN0RcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jb250YWluZXJcIiAqbmdJZj1cImxvYWRpbmcoKVwiPlxuICAgICAgPG1pcy1sb2FkZXIgW21vYmlsZVZpZXddPVwidHJ1ZVwiPjwvbWlzLWxvYWRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiAqbmdJZj1cIiFzZWFyY2hFbmFibGVkKClcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW1zXCIgI2l0ZW1zQ29udGFpbmVyIFtuZ1N0eWxlXT1cIml0ZW1zQ29udGFpbmVyU3R5bGVcIiAqbmdJZj1cIiFsb2FkaW5nKClcIj5cbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgKm5nSWY9XCJjdXJyZW50RGF0YS5sZW5ndGggPiAwXCIgXG4gICAgICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZUZvckNkaygpIHx8IDM2XCIgXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdmlld3BvcnRcIlxuICAgICAgICBbbWluQnVmZmVyUHhdPVwiMjAwXCJcbiAgICAgICAgW21heEJ1ZmZlclB4XT1cIjQwMFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgICAgICAnaXRlbS1kaXNhYmxlZCc6IGl0ZW0uZGlzYWJsZWQsIFxuICAgICAgICAgICAgJ2l0ZW0tc2VsZWN0ZWQnOiAoaGlnbGlnaHRTZWxlY3RlZFZhbHVlKCkgJiYgaXRlbS52YWx1ZSA9PT0gc2VsZWN0ZWRJdGVtKCk/LnZhbHVlKSwgXG4gICAgICAgICAgICAnaWNvbi1vbmx5Jzogc2hvd09ubHlJY29uKCkgXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogc2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cIml0ZW0uZGlzYWJsZWQgPyBudWxsIDogc2VsZWN0SXRlbShpdGVtKVwiXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBjdXJyZW50RGF0YTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgdGFiSW5kZXg9XCIwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JdGVtOyBlbHNlIHN0YW5kYXJkSXRlbVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JdGVtXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRJdGVtPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgKm5nSWY9XCIhc2hvd09ubHlJY29uKClcIiBbbmdTdHlsZV09XCJ7IFxuICAgICAgICAgICAgICB3aWR0aDogaXRlbS5pY29uID8gJzkwJScgOiAnMTAwJScsIFxuICAgICAgICAgICAgICAnZGlzcGxheSc6IG11bHRpTGluZSgpID8gJ2ZsZXgnOiAnaW5oZXJpdCcsIFxuICAgICAgICAgICAgICAnZmxleC1kaXJlY3Rpb24nOiBtdWx0aUxpbmUoKSA/ICdjb2x1bW4nOiAnaW5oZXJpdCcgXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpbWFyeVRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyBtdWx0aUxpbmUoKSA/IGl0ZW0/LmxhYmVsPy5wcmltYXJ5VGV4dCA6IGl0ZW0/LmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNvbmRhcnlUZXh0XCIgKm5nSWY9XCJtdWx0aUxpbmUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0/LmxhYmVsPy5zZWNvbmRhcnlUZXh0ID8gaXRlbT8ubGFiZWw/LnNlY29uZGFyeVRleHQgOiBhZGRpdGlvbmFsSW5mb01lc3NhZ2UoKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpY29uXCIgW3NyY109XCJpdGVtLmljb25cIiBhbHQ9XCJubyBpbWdcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgIDxkaXYgY2xhc3M9XCJub0RhdGFcIiAqbmdJZj1cImN1cnJlbnREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICB7eyBzZWFyY2hJbnB1dCgpID09PSBcIlwiID8gbm9EYXRhTWVzc2FnZSgpIDogXCJObyByZXN1bHRzXCIgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @format */
|
|
2
|
-
import { Component, HostListener,
|
|
2
|
+
import { Component, HostListener, input, signal, computed } from "@angular/core";
|
|
3
3
|
import { trigger, transition, style, animate, state } from "@angular/animations";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/common";
|
|
@@ -114,11 +114,11 @@ export class FabComponent {
|
|
|
114
114
|
transition("rotated => default", animate("300ms ease-out")),
|
|
115
115
|
transition("default => rotated", animate("200ms ease-in"))
|
|
116
116
|
])
|
|
117
|
-
] }
|
|
117
|
+
] } }); }
|
|
118
118
|
}
|
|
119
119
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FabComponent, [{
|
|
120
120
|
type: Component,
|
|
121
|
-
args: [{ selector: "mis-fab",
|
|
121
|
+
args: [{ selector: "mis-fab", animations: [
|
|
122
122
|
trigger("slideUpFab", [
|
|
123
123
|
transition(":enter", [
|
|
124
124
|
style({ transform: "translateY(50px)", opacity: 0 }),
|
|
@@ -138,4 +138,4 @@ export class FabComponent {
|
|
|
138
138
|
args: ["document:click", ["$event"]]
|
|
139
139
|
}] }); })();
|
|
140
140
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FabComponent, { className: "FabComponent" }); })();
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZhYi9mYWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZmFiL2ZhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQXNDLEtBQUssRUFBRSxNQUFNLEVBQWtCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztJQ0EzRSwrQkFBNEM7SUFDMUMsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUsOENBQ0Y7Ozs7SUFIRiw4QkFBc0c7SUFBMUIsNE1BQVMseUJBQWUsS0FBQztJQUNuRywrRUFBNEM7SUFHNUMsK0JBS0M7SUFDQywwQkFBeUM7SUFFN0MsQUFERSxpQkFBTSxFQUNGOzs7SUFYRSxjQUFnQjtJQUFoQixvQ0FBZ0I7SUFLcEIsY0FFRTtJQUZGLDBGQUVFO0lBRUcsY0FBaUI7SUFBakIsb0RBQWlCOzs7SUFYNUIsOEJBQW9EO0lBQ2xELHlFQUFzRztJQWF4RyxpQkFBTTs7O0lBZGtDLHVDQUFXO0lBQ1YsY0FBc0I7SUFBdEIsa0RBQXNCOzs7O0lBRmpFLDhCQUF3QztJQUN0QyxtRUFBb0Q7SUFlcEQsOEJBTUM7SUFEQyxxS0FBUyxrQkFBVyxLQUFDOztJQUVyQiw4QkFRQztJQUNDLDBCQUtFO0lBR1IsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjs7O0lBdkNvQixjQUFjO0lBQWQsc0NBQWM7SUFpQnBDLGNBRUU7SUFGRix1S0FFRTtJQUlBLGNBQWtEO0lBQWxELHVFQUFrRDs7QURpQnhELE1BQU0sT0FB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LENBQUM7NEJBQ3BELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQy9FLENBQUM7d0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4RyxDQUFDO29CQUNGLE9BQU8sQ0FBQyxjQUFjLEVBQUU7d0JBQ3RCLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7d0JBQ25ELEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7d0JBQ3ZELFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDM0QsVUFBVSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztxQkFDM0QsQ0FBQztpQkFDSDsyQ0F1QkQsUUFBUTtrQkFEUCxZQUFZO21CQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFwQi9CLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGZvcm1hdCAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5wdXQsIHNpZ25hbCwgV3JpdGFibGVTaWduYWwsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlLCBzdGF0ZSB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5cbmV4cG9ydCB0eXBlIEZhYk9wdGlvbnMgPSB7XG4gIGJhY2tncm91bmRDb2xvckNsb3NlZD86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yT3BlbmVkPzogc3RyaW5nO1xuICBzaXplPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRmFiSXRlbSA9IHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgY2xpY2s/OiAoKSA9PiBhbnk7XG59O1xuXG5leHBvcnQgdHlwZSBGYWJJdGVtcyA9IEZhYkl0ZW1bXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1mYWJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9mYWIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2ZhYi5jb21wb25lbnQuc2Nzc1wiXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoXCJzbGlkZVVwRmFiXCIsIFtcbiAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDUwcHgpXCIsIG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoXCIzMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDBweClcIiwgb3BhY2l0eTogMSB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoNzBweClcIiwgb3BhY2l0eTogMCB9KSldKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoXCJyb3RhdGVCdXR0b25cIiwgW1xuICAgICAgc3RhdGUoXCJkZWZhdWx0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInJvdGF0ZSgwKVwiIH0pKSxcbiAgICAgIHN0YXRlKFwicm90YXRlZFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJyb3RhdGUoNDVkZWcpXCIgfSkpLFxuICAgICAgdHJhbnNpdGlvbihcInJvdGF0ZWQgPT4gZGVmYXVsdFwiLCBhbmltYXRlKFwiMzAwbXMgZWFzZS1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcImRlZmF1bHQgPT4gcm90YXRlZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pblwiKSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIG9wdGlvbnMgPSBpbnB1dDxGYWJPcHRpb25zPih7fSk7XG4gIGl0ZW1zID0gaW5wdXQ8RmFiSXRlbXM+KFtdKTtcblxuICBpc09wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIG9wdGlvbnMgd2l0aCBkZWZhdWx0c1xuICBjb21wdXRlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogNTYsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3JDbG9zZWQ6IFwiIzA5MzdCMlwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yT3BlbmVkOiBcIiMzYTVmYzFcIixcbiAgICAgIC4uLmN1cnJlbnRPcHRpb25zXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2VGYWIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgY2xpY2tJdGVtKGl0ZW06IEZhYkl0ZW0pIHtcbiAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgaXRlbS5jbGljaz8uKCk7XG4gIH1cblxuICBjbG9zZUZhYigpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgdG9vZ2xlRmFiKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmYWItd3JhcHBlclwiICpuZ0lmPVwic2hvdygpXCI+XG4gIDxkaXYgY2xhc3M9XCJmYWItaXRlbXNcIiAqbmdJZj1cImlzT3BlbigpXCIgQHNsaWRlVXBGYWI+XG4gICAgPGRpdiBjbGFzcz1cImZhYi1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMoKS5yZXZlcnNlKCk7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiY2xpY2tJdGVtKGl0ZW0pXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5sYWJlbFwiIGNsYXNzPVwiZmFiLXRvb2x0aXBcIj5cbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmFiLWJ1dHRvblwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yIHx8ICcjMDkzN0IyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiYWRkLWltZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZhYi1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaXNPcGVuKCkgPyBjb21wdXRlZE9wdGlvbnMoKS5iYWNrZ3JvdW5kQ29sb3JPcGVuZWQgOiBjb21wdXRlZE9wdGlvbnMoKS5iYWNrZ3JvdW5kQ29sb3JDbG9zZWRcbiAgICB9XCJcbiAgICAoY2xpY2spPVwidG9vZ2xlRmFiKClcIlxuICA+XG4gICAgPHN2Z1xuICAgICAgW0Byb3RhdGVCdXR0b25dPVwiaXNPcGVuKCkgPyAncm90YXRlZCcgOiAnZGVmYXVsdCdcIlxuICAgICAgY2xhc3M9XCJhZGQtaW1nXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuMTQyNCA1LjE1NjA3QzEzLjE0MjQgNC41MTc1OSAxMi42MzEzIDQgMTIuMDAwOSA0QzExLjM3MDQgNCAxMC44NTk0IDQuNTE3NTkgMTAuODU5NCA1LjE1NjA3VjEwLjg0MjFINS4xNDE0OUM0LjUxMTA2IDEwLjg0MjEgNCAxMS4zNTk3IDQgMTEuOTk4MkM0IDEyLjYzNjcgNC41MTEwNiAxMy4xNTQzIDUuMTQxNDkgMTMuMTU0M0gxMC44NTk0VjE4Ljg0MzlDMTAuODU5NCAxOS40ODI0IDExLjM3MDQgMjAgMTIuMDAwOSAyMEMxMi42MzEzIDIwIDEzLjE0MjQgMTkuNDgyNCAxMy4xNDI0IDE4Ljg0MzlWMTMuMTU0M0gxOC44NTg1QzE5LjQ4ODkgMTMuMTU0MyAyMCAxMi42MzY3IDIwIDExLjk5ODJDMjAgMTEuMzU5NyAxOS40ODg5IDEwLjg0MjEgMTguODU4NSAxMC44NDIxSDEzLjE0MjRWNS4xNTYwN1pcIlxuICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, signal,
|
|
1
|
+
import { Component, signal, input, output } from '@angular/core';
|
|
2
2
|
import { slideFromRight } from '../animations/slideFromRight';
|
|
3
3
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -238,37 +238,38 @@ export class FilterPanelComponent {
|
|
|
238
238
|
startDate: '',
|
|
239
239
|
endDate: '',
|
|
240
240
|
});
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
else if (filter.type === 'multiSelect' || filter.type === 'checkbox') {
|
|
255
|
-
if (value.length > 0) {
|
|
256
|
-
count++;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
count++;
|
|
261
|
-
}
|
|
241
|
+
}
|
|
242
|
+
// Method to calculate filter count (not a computed signal because form values aren't reactive)
|
|
243
|
+
getFilterCount() {
|
|
244
|
+
let count = 0;
|
|
245
|
+
const formValue = this.filterForm.value;
|
|
246
|
+
this.config().forEach((filter) => {
|
|
247
|
+
const value = formValue[filter.key];
|
|
248
|
+
// Special handling for range type - only count if at least one value is set
|
|
249
|
+
if (filter.type === 'range') {
|
|
250
|
+
if (value && (value.min !== null || value.max !== null)) {
|
|
251
|
+
count++;
|
|
262
252
|
}
|
|
263
|
-
|
|
264
|
-
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
// Special handling for multiSelect/checkbox - check array length directly
|
|
256
|
+
if (filter.type === 'multiSelect' || filter.type === 'checkbox') {
|
|
257
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
258
|
+
count++;
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
// For other types, use hasValue pipe
|
|
263
|
+
if (this.hasValue.transform(value)) {
|
|
264
|
+
count++;
|
|
265
|
+
}
|
|
265
266
|
});
|
|
267
|
+
return count;
|
|
266
268
|
}
|
|
267
269
|
ngOnInit() {
|
|
268
270
|
// Access the config signal value by calling it like a function
|
|
269
271
|
this.initializeFormControls(this.config());
|
|
270
272
|
}
|
|
271
|
-
// The ngOnChanges lifecycle hook is no longer necessary with signal inputs.
|
|
272
273
|
initializeFormControls(config) {
|
|
273
274
|
this.filterForm = new FormGroup({});
|
|
274
275
|
config.forEach((filter) => {
|
|
@@ -322,7 +323,7 @@ export class FilterPanelComponent {
|
|
|
322
323
|
// Emit the apply event with the filter data using the signal output
|
|
323
324
|
this.onApply.emit({
|
|
324
325
|
filterData: this.filterForm.value,
|
|
325
|
-
filterCount: this.
|
|
326
|
+
filterCount: this.getFilterCount()
|
|
326
327
|
});
|
|
327
328
|
this.closePanel();
|
|
328
329
|
}
|
|
@@ -395,4 +396,4 @@ export class FilterPanelComponent {
|
|
|
395
396
|
args: [{ selector: 'mis-filter-panel', animations: [slideFromRight], template: "<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n\n <div class=\"horizontal-divider first\"></div>\n\n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key).value\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key).value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key).value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n {{filter.placeholder}}\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datepickerConfig\" [placeholder]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" [value]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key).value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get?.(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n</div>\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:var(--bg-primary, #FFFFFF);top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container .panel-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container .panel-header span{font-size:1.25rem}.filter-panel-container .panel-header .close-icon{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container .panel-header .close-icon:hover{background:var(--bg-tertiary, #F5F5F5)}.filter-panel-container .panel-header .close-icon:active{background:var(--border-primary, #E0E0E0)}.filter-panel-container .mat-divider.horizontal{margin:1rem}.filters{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters .filter{display:flex;flex-direction:column}.filters .filter .filter-title{color:var(--text-secondary, #6A737D);font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters .filter .checkbox-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters .filter .checkbox-row .checkbox-container{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters .filter .checkbox-row .checkbox-label{display:block;width:8rem}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-inner-container{width:20px;height:20px}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-frame{border-radius:5px}.filters .filter .multiselect-filter,.filters .filter mis-input{padding:.7rem 0}.horizontal-divider{display:block;width:100%;height:1px;margin:.5rem 0;background:var(--border-primary, #E0E0E0)}.first{margin-top:0}.actions{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid var(--border-primary, #E0E0E0);flex-basis:4%;padding:.5rem}.actions button{font-weight:700;border-radius:.5rem;width:6rem}.no-padding ::ng-deep .container{padding:0!important}.range-container{display:flex;justify-content:space-between;padding:.8rem 0}.range-container .range-inner-container{display:flex;flex-direction:column}.range-container .range-inner-container input{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid var(--border-primary, #E0E0E0);width:8rem;padding:0 .5rem}.range-container .range-inner-container span{margin-bottom:.2rem}input.ng-invalid.ng-touched{border:1px solid var(--brand-error, #B00020);background-color:var(--brand-error-lightest, #FDF2F2)}\n"] }]
|
|
396
397
|
}], () => [{ type: i1.HasValuePipe }], null); })();
|
|
397
398
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
|
|
398
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFrQixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNjMUMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQU8zRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxp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LENBQUMsQ0FBQztnQkFDL0QsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3FIQXhLVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjtZQ2pDakMsdUVBQW1FOztZQUE5QixpQ0FBWTsrMVBEK0JuQyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsLCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2xpZGVGcm9tUmlnaHQgfSBmcm9tICcuLi9hbmltYXRpb25zL3NsaWRlRnJvbVJpZ2h0JztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92Mic7XG5pbXBvcnQgeyBJUlNlbGVjdGVkRGF0ZXNDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3NwZWNpZmljZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyBhcyBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyXCI7XG5pbXBvcnQgeyBIYXNWYWx1ZVBpcGUgfSBmcm9tICcuLi9oYXMtdmFsdWUucGlwZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYW5lbENvbmZpZyB7XG4gIGtleTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiAnbXVsdGlTZWxlY3QnIHwgJ3NlbGVjdCcgfCAnZGF0ZVBpY2tlcicgfCAnZGF0ZVJhbmdlUGlja2VyJyB8ICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ251bWJlcicgfCAncmFuZ2UnO1xuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBkYXRhPzogYW55W107XG4gIH0+O1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGFzVmFsdWU6IEhhc1ZhbHVlUGlwZSkge31cblxuICAvLyBTaWduYWwgaW5wdXRzIHJlcGxhY2luZyBASW5wdXQoKVxuICBwdWJsaWMgc2hvdyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEZpbHRlclBhbmVsQ29uZmlnW10+KCk7XG4gIHB1YmxpYyBlbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBTaWduYWwgb3V0cHV0cyByZXBsYWNpbmcgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNsb3NlID0gb3V0cHV0KCk7XG4gIHB1YmxpYyBvbkFwcGx5ID0gb3V0cHV0PHsgZmlsdGVyRGF0YTogYW55LCBmaWx0ZXJDb3VudDogbnVtYmVyIH0+KCk7XG5cbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHB1YmxpYyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzOiBXcml0YWJsZVNpZ25hbDxJUlNlbGVjdGVkRGF0ZXNDb25maWc+ID0gc2lnbmFsKHtcbiAgICBzdGFydERhdGU6ICcnLFxuICAgIGVuZERhdGU6ICcnLFxuICB9KTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIGZpbHRlciBjb3VudFxuICBmaWx0ZXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICAvLyBBY2Nlc3MgdGhlIGNvbmZpZyBzaWduYWwgdmFsdWUgYnkgY2FsbGluZyBpdCBsaWtlIGEgZnVuY3Rpb25cbiAgICB0aGlzLmNvbmZpZygpLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlW2ZpbHRlci5rZXldO1xuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKHZhbHVlKSkge1xuICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICBpZiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQWNjZXNzIHRoZSBjb25maWcgc2lnbmFsIHZhbHVlIGJ5IGNhbGxpbmcgaXQgbGlrZSBhIGZ1bmN0aW9uXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKHRoaXMuY29uZmlnKCkpO1xuICB9XG5cbiAgLy8gVGhlIG5nT25DaGFuZ2VzIGxpZmVjeWNsZSBob29rIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2l0aCBzaWduYWwgaW5wdXRzLlxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgY29uZmlnLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGxldCBjb250cm9sOiBhbnk7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgIG1pbjogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsaWRhdG9yczogKGdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IGdyb3VwLmdldCgnbWluJykudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBncm91cC5nZXQoJ21heCcpLnZhbHVlO1xuICAgICAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFtdKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybShmaWx0ZXIuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIGlmICh0aGlzLmxhc3RBcHBsaWVkRGF0YSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgLy8gRW1pdCB0aGUgY2xvc2UgZXZlbnQgdXNpbmcgdGhlIHNpZ25hbCBvdXRwdXRcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLmZpbHRlckZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIFxuICAgIHRoaXMubGFzdEFwcGxpZWREYXRhID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgICAvLyBFbWl0IHRoZSBhcHBseSBldmVudCB3aXRoIHRoZSBmaWx0ZXIgZGF0YSB1c2luZyB0aGUgc2lnbmFsIG91dHB1dFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIGZpbHRlckNvdW50OiB0aGlzLmZpbHRlckNvdW50KClcbiAgICB9KTtcbiAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zZXQoe1xuICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoZWNrYm94KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBjaGVja2JveFZhbHVlOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnZhbHVlO1xuICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi5jdXJyZW50VmFsdWVzLCBjaGVja2JveFZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShjdXJyZW50VmFsdWVzLmZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUgIT09IGNoZWNrYm94VmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybVZhbHVlcygpIHtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcoKS5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IG51bGw7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IHsgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcbiAgICAgIH1cbiAgICAgIHJlc2V0VmFsdWVzW2ZpbHRlci5rZXldID0gZGVmYXVsdFZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKHJlc2V0VmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBzZXRGaWx0ZXJWYWx1ZShjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pIHtcbiAgICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGlmIChmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGFueVZhbHVlU2V0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFueVZhbHVlU2V0ICYmIHRoaXMuZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMoKSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbC1jb250YWluZXJcIiAqbmdJZj1cInNob3coKVwiIEBzbGlkZUZyb21SaWdodD5cbiAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgPHNwYW4+RmlsdGVyczwvc3Bhbj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICAgIDxwYXRoIGlkPVwiVW5pb25cIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOC42MDQ2OCA2LjY0MzU1QzguMDkwMzYgNi4xMjkyMyA3LjI1NjQ5IDYuMTI5MjMgNi43NDIxOCA2LjY0MzU1QzYuMjI3ODcgNy4xNTc4NiA2LjIyNzg3IDcuOTkxNzMgNi43NDIxOCA4LjUwNjA0TDEwLjQ5MzggMTIuMjU3Nkw2Ljc0MzEgMTYuMDA4M0M2LjIyODc5IDE2LjUyMjYgNi4yMjg3OSAxNy4zNTY0IDYuNzQzMSAxNy44NzA4QzcuMjU3NDIgMTguMzg1MSA4LjA5MTI5IDE4LjM4NTEgOC42MDU2MCAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUwIDE3LjQ1NTAgMTguMzg1MCAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyMCA2LjEyOTMyIDE2LjEwNzcgNi42NDM2M0wxMi4zNTYyIDEwLjM5NTFMOC42MDQ2OCA2LjY0MzU1WlwiIGZpbGw9XCIjMTgxRjMzXCIgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICA8L3N2Zz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlciBmaXJzdFwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnKCk7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLXRpdGxlXCI+e3tmaWx0ZXIudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gY2xhc3M9XCJuby1wYWRkaW5nXCIgW2xhYmVsXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWxlY3RlZEl0ZW1zXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXBwbHlCdXR0b25dPVwiZmFsc2VcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1kcm9wZG93biBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkSXRlbV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFt0eXBlXT1cIidEZWZhdWx0J1wiIFtjaGVja2VkXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXCIgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNoZWNrYm94KCRldmVudCwgZmlsdGVyLmtleSwgb3B0aW9uLnZhbHVlLCBmaWx0ZXIpXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNUekRwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJtaXMtaW5wdXRcIiBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVwaWNrZXJDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgPyBmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA6IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpXCIgW3ZhbHVlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWREYXRlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgW3Bvc2l0aW9uWF09XCInZW5kJ1wiIFtvZmZzZXRYXT1cIi0xMFwiPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHJwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtaXMtaW5wdXRcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvblldPVwiJ3RvcCdcIiBbc2VsZWN0ZWREYXRlc109XCJkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKClcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzBdPy5sYWJlbCB8fCAnTWluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzFdPy5sYWJlbCB8fCAnTWF4JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXJcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidDbGVhciBBbGwnXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidUZXh0J1wiIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPjwvbWlzLWJ1dHRvbj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiIFtkaXNhYmxlZF09XCJmaWx0ZXJGb3JtLmludmFsaWRcIj48L21pcy1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUE0QixLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztJQ2MxQyw2QkFBb0Q7SUFFNUMsQUFESiwrQkFBZ0Msb0NBRzZCO0lBRmlGLHFTQUFZLHFEQUF3QyxLQUFDO0lBR25NLEFBRDZELGlCQUE0QixFQUNuRjs7Ozs7SUFINEMsZUFBd0M7SUFFbEYsQUFEMkIsQUFBM0IsQUFEb04sQUFBeEIsQUFBekcsQUFBekMseURBQXdDLDZEQUFtRCwyQkFBOEUsdUJBQXVCLDJCQUNoTix5QkFBeUIsMEJBQzFCOzs7O0lBR3JDLDZCQUErQztJQUV2QyxBQURKLCtCQUFnQyx1QkFFb0Y7SUFBeEcsd1JBQVkscURBQXdDLEtBQUM7SUFFakUsQUFESSxpQkFBZSxFQUNiOzs7OztJQUhZLGVBQXVCO0lBQ3lCLEFBRHhCLEFBQXhCLHdDQUF1Qix1QkFBdUIsNERBQ21EOzs7O0lBTzNHLEFBREosK0JBQXNFLHVCQUM2RztJQUF6RSxnVUFBZSx3RUFBd0QsS0FBQztJQUFDLGlCQUFlO0lBQzlMLGdDQUE2QjtJQUFBLFlBQWdCO0lBQ2pELEFBRGlELGlCQUFPLEVBQ2xE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TUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvRCxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7cUhBL0tVLG9CQUFvQjtvRUFBcEIsb0JBQW9CO1lDakNqQyx1RUFBbUU7O1lBQTlCLGlDQUFZOysxUEQrQm5DLENBQUMsY0FBYyxDQUFDOztpRkFFakIsb0JBQW9CO2NBTmhDLFNBQVM7MkJBQ0Usa0JBQWtCLGNBR2hCLENBQUMsY0FBYyxDQUFDOztrRkFFakIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCwgV3JpdGFibGVTaWduYWwsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcGlja2VyX3YyJztcbmltcG9ydCB7IElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vc3BlY2lmaWNkYXRlcGlja2VyJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIGFzIElEYXRlUmFuZ2VQaWNrZXJDb25maWcgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcmFuZ2VwaWNrZXJfdjJcIjtcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclBhbmVsQ29uZmlnIHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6ICdtdWx0aVNlbGVjdCcgfCAnc2VsZWN0JyB8ICdkYXRlUGlja2VyJyB8ICdkYXRlUmFuZ2VQaWNrZXInIHwgJ2NoZWNrYm94JyB8ICdyYWRpbycgfCAndGV4dCcgfCAnbnVtYmVyJyB8ICdyYW5nZSc7XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGRhdGE/OiBhbnlbXTtcbiAgfT47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkYXRlUGlja2VyQ29uZmlnPzogSURhdGVQaWNrZXJDb25maWc7XG4gIGRhdGVSYW5nZVBpY2tlckNvbmZpZz86IElEYXRlUmFuZ2VQaWNrZXJDb25maWc7XG4gIG9uQ2hhbmdlPzogKGV2ZW50OiBhbnksIGNvbmZpZz86IEZpbHRlclBhbmVsQ29uZmlnW10sIGZvcm1WYWx1ZT86IGFueSkgPT4gdm9pZDtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBzZWxlY3RlZFZhbHVlPzogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtZmlsdGVyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbc2xpZGVGcm9tUmlnaHRdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBoYXNWYWx1ZTogSGFzVmFsdWVQaXBlKSB7fVxuXG4gIC8vIFNpZ25hbCBpbnB1dHMgcmVwbGFjaW5nIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8RmlsdGVyUGFuZWxDb25maWdbXT4oKTtcbiAgcHVibGljIGVtaXRGaWx0ZXJzQWZ0ZXJTZXR0aW5nTmV3VmFsdWVzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIFNpZ25hbCBvdXRwdXRzIHJlcGxhY2luZyBAT3V0cHV0KClcbiAgcHVibGljIG9uQ2xvc2UgPSBvdXRwdXQoKTtcbiAgcHVibGljIG9uQXBwbHkgPSBvdXRwdXQ8eyBmaWx0ZXJEYXRhOiBhbnksIGZpbHRlckNvdW50OiBudW1iZXIgfT4oKTtcblxuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbGFzdEFwcGxpZWREYXRhOiBhbnk7XG5cbiAgcHVibGljIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXM6IFdyaXRhYmxlU2lnbmFsPElSU2VsZWN0ZWREYXRlc0NvbmZpZz4gPSBzaWduYWwoe1xuICAgIHN0YXJ0RGF0ZTogJycsXG4gICAgZW5kRGF0ZTogJycsXG4gIH0pO1xuXG4gIC8vIE1ldGhvZCB0byBjYWxjdWxhdGUgZmlsdGVyIGNvdW50IChub3QgYSBjb21wdXRlZCBzaWduYWwgYmVjYXVzZSBmb3JtIHZhbHVlcyBhcmVuJ3QgcmVhY3RpdmUpXG4gIGdldEZpbHRlckNvdW50KCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZpbHRlckZvcm0udmFsdWU7XG4gICAgXG4gICAgdGhpcy5jb25maWcoKS5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZVtmaWx0ZXIua2V5XTtcbiAgICAgIFxuICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgcmFuZ2UgdHlwZSAtIG9ubHkgY291bnQgaWYgYXQgbGVhc3Qgb25lIHZhbHVlIGlzIHNldFxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkpIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgbXVsdGlTZWxlY3QvY2hlY2tib3ggLSBjaGVjayBhcnJheSBsZW5ndGggZGlyZWN0bHlcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBGb3Igb3RoZXIgdHlwZXMsIHVzZSBoYXNWYWx1ZSBwaXBlXG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0odmFsdWUpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQWNjZXNzIHRoZSBjb25maWcgc2lnbmFsIHZhbHVlIGJ5IGNhbGxpbmcgaXQgbGlrZSBhIGZ1bmN0aW9uXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKHRoaXMuY29uZmlnKCkpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUZvcm1Db250cm9scyhjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pIHtcbiAgICB0aGlzLmZpbHRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBjb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGNvbnRyb2w6IGFueTtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgbWF4OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWluID0gZ3JvdXAuZ2V0KCdtaW4nKS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IGdyb3VwLmdldCgnbWF4JykudmFsdWU7XG4gICAgICAgICAgICBpZiAobWluICE9PSBudWxsICYmIG1heCAhPT0gbnVsbCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcmFuZ2VFcnJvcjogJ01pbiB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG1heCB2YWx1ZScgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woW10pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKGZpbHRlci5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlckZvcm0uYWRkQ29udHJvbChmaWx0ZXIua2V5LCBjb250cm9sKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlUGFuZWwoKSB7XG4gICAgaWYgKHRoaXMubGFzdEFwcGxpZWREYXRhKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uc2V0VmFsdWUodGhpcy5sYXN0QXBwbGllZERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIH1cbiAgICAvLyBFbWl0IHRoZSBjbG9zZSBldmVudCB1c2luZyB0aGUgc2lnbmFsIG91dHB1dFxuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgdGhpcy5sYXN0QXBwbGllZERhdGEgPSB7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9O1xuICAgIC8vIEVtaXQgdGhlIGFwcGx5IGV2ZW50IHdpdGggdGhlIGZpbHRlciBkYXRhIHVzaW5nIHRoZSBzaWduYWwgb3V0cHV0XG4gICAgdGhpcy5vbkFwcGx5LmVtaXQoe1xuICAgICAgZmlsdGVyRGF0YTogdGhpcy5maWx0ZXJGb3JtLnZhbHVlLFxuICAgICAgZmlsdGVyQ291bnQ6IHRoaXMuZ2V0RmlsdGVyQ291bnQoKVxuICAgIH0pO1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKGV2ZW50KTtcbiAgICBpZiAoZmlsdGVyLm9uQ2hhbmdlKSB7XG4gICAgICBmaWx0ZXIub25DaGFuZ2UoZXZlbnQsIHRoaXMuY29uZmlnKCksIHRoaXMuZmlsdGVyRm9ybS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKGV2ZW50KTtcbiAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnNldCh7XG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlOiBldmVudC5lbmREYXRlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2hlY2tib3goZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGNoZWNrYm94VmFsdWU6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWU7XG4gICAgaWYgKGV2ZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkuc2V0VmFsdWUoWy4uLmN1cnJlbnRWYWx1ZXMsIGNoZWNrYm94VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKGN1cnJlbnRWYWx1ZXMuZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZSAhPT0gY2hlY2tib3hWYWx1ZSkpO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyLm9uQ2hhbmdlKSB7XG4gICAgICBmaWx0ZXIub25DaGFuZ2UoZXZlbnQsIHRoaXMuY29uZmlnKCksIHRoaXMuZmlsdGVyRm9ybS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJGb3JtVmFsdWVzKCkge1xuICAgIGNvbnN0IHJlc2V0VmFsdWVzOiBhbnkgPSB7fTtcbiAgICB0aGlzLmNvbmZpZygpLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGxldCBkZWZhdWx0VmFsdWU6IGFueSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgbnVsbDtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IFtdO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgeyBtaW46IG51bGwsIG1heDogbnVsbCB9O1xuICAgICAgfVxuICAgICAgcmVzZXRWYWx1ZXNbZmlsdGVyLmtleV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRWYWx1ZXMpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclZhbHVlKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSkge1xuICAgIGxldCBhbnlWYWx1ZVNldCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGNvbmZpZykge1xuICAgICAgaWYgKGZpbHRlcj8uc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnNldFZhbHVlKGZpbHRlci5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgYW55VmFsdWVTZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYW55VmFsdWVTZXQgJiYgdGhpcy5lbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcygpKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvdygpXCIgQHNsaWRlRnJvbVJpZ2h0PlxuICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCI+XG4gICAgICA8c3Bhbj5GaWx0ZXJzPC9zcGFuPlxuICAgICAgPHN2ZyBjbGFzcz1cImNsb3NlLWljb25cIiAoY2xpY2spPVwiY2xvc2VQYW5lbCgpXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyNSAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxnIGlkPVwiaWMtbmF2aWdhdGlvbi1jYW5jZWwtMjRcIj5cbiAgICAgICAgICAgICAgPHBhdGggaWQ9XCJVbmlvblwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04LjYwNDY4IDYuNjQzNTVDOC4wOTAzNiA2LjEyOTIzIDcuMjU2NDkgNi4xMjkyMyA2Ljc0MjE4IDYuNjQzNTVDNi4yMjc4NyA3LjE1Nzg2IDYuMjI3ODcgNy45OTE3MyA2Ljc0MjE4IDguNTA2MDRMMTAuNDkzOCAxMi4yNTc2TDYuNzQzMSAxNi4wMDgzQzYuMjI4NzkgMTYuNTIyNiA2LjIyODc5IDE3LjM1NjQgNi43NDMxIDE3Ljg3MDhDNy4yNTc0MiAxOC4zODUxIDguMDkxMjkgMTguMzg1MSA4LjYwNTYwIDE3Ljg3MDhMMTIuMzU2MiAxNC4xMjAxTDE2LjEwNjggMTcuODcwN0MxNi42MjExIDE4LjM4NTAgMTcuNDU1MCAxOC4zODUwIDE3Ljk2OTMgMTcuODcwN0MxOC40ODM2IDE3LjM1NjQgMTguNDgzNiAxNi41MjI1IDE3Ljk2OTMgMTYuMDA4MkwxNC4yMTg3IDEyLjI1NzZMMTcuOTcwMiA4LjUwNjEzQzE4LjQ4NDUgNy45OTE4MSAxOC40ODQ1IDcuMTU3OTQgMTcuOTcwMiA2LjY0MzYzQzE3LjQ1NTkgNi4xMjkzMiAxNi42MjIwIDYuMTI5MzIgMTYuMTA3NyA2LjY0MzYzTDEyLjM1NjIgMTAuMzk1MUw4LjYwNDY4IDYuNjQzNTVaXCIgZmlsbD1cIiMxODFGMzNcIiAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgIDwvc3ZnPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1kaXZpZGVyIGZpcnN0XCI+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZpbHRlcnNcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBjb25maWcoKTsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlclwiICpuZ0lmPVwiIWZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBjbGFzcz1cIm5vLXBhZGRpbmdcIiBbbGFiZWxdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnXCIgW3NlbGVjdGVkSXRlbXNdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWVcIiAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2VuYWJsZVNlbGVjdEFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcHBseUJ1dHRvbl09XCJmYWxzZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWRJdGVtXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9taXMtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtY2hlY2tib3ggW3R5cGVdPVwiJ0RlZmF1bHQnXCIgW2NoZWNrZWRdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWU/LmluY2x1ZGVzKG9wdGlvbi52YWx1ZSlcIiAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlQ2hlY2tib3goJGV2ZW50LCBmaWx0ZXIua2V5LCBvcHRpb24udmFsdWUsIGZpbHRlcilcIj48L21pcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPnt7b3B0aW9uLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2RhdGVQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICB7e2ZpbHRlci5wbGFjZWhvbGRlcn19XG4gICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBjbGFzcz1cIm1pcy1pbnB1dFwiIFtkcENvbmZpZ109XCJmaWx0ZXIuZGF0ZXBpY2tlckNvbmZpZ1wiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA/IGZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlIDogKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JylcIiBbdmFsdWVdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgPyBmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA6IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpXCIgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZERhdGVdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWVcIiBbcG9zaXRpb25YXT1cIidlbmQnXCIgW29mZnNldFhdPVwiLTEwXCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2RhdGVSYW5nZVBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcnAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm1pcy1pbnB1dFwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoIWRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgJiYgIWRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSArICcgLSAnICsgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCIgW3Bvc2l0aW9uWF09XCInc3RhcnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uWV09XCIndG9wJ1wiIFtzZWxlY3RlZERhdGVzXT1cImRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVSYW5nZVBpY2tlckNvbmZpZ1wiIC8+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3RleHQnXCI+XG4gICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAncmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1pbm5lci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyPy5vcHRpb25zPy5bMF0/LmxhYmVsIHx8ICdNaW4nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1pbm5lci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyPy5vcHRpb25zPy5bMV0/LmxhYmVsIHx8ICdNYXgnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJmaWx0ZXJGb3JtLmdldD8uKGZpbHRlci5rZXkpPy5nZXQoJ21pbicpPy52YWx1ZSB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlclwiICpuZ0lmPVwiIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPG1pcy1idXR0b24gW25hbWVdPVwiJ0NsZWFyIEFsbCdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1RleHQnXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+PC9taXMtYnV0dG9uPlxuICAgICAgPG1pcy1idXR0b24gW25hbWVdPVwiJ0FwcGx5J1wiIFtzaXplXT1cIidTbWFsbCdcIiBbdHlwZV09XCInU29saWQnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCIgW2Rpc2FibGVkXT1cImZpbHRlckZvcm0uaW52YWxpZFwiPjwvbWlzLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
|