@dotglitch/ngx-common 1.1.16 → 1.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/components/menu/menu.component.d.ts +3 -3
  2. package/directives/menu.directive.d.ts +2 -2
  3. package/directives/tooltip.directive.d.ts +1 -1
  4. package/esm2022/components/command-palette/command-palette.component.mjs +4 -4
  5. package/esm2022/components/command-palette/shortcut/shortcut.component.mjs +3 -3
  6. package/esm2022/components/dynamic-html/dynamic-html.component.mjs +4 -4
  7. package/esm2022/components/dynamic-html/dynamic-html.module.mjs +4 -4
  8. package/esm2022/components/dynamic-html/dynamic-html.service.mjs +4 -4
  9. package/esm2022/components/filemanager/file-grid/file-grid.component.mjs +6 -6
  10. package/esm2022/components/filemanager/filemanager.component.mjs +4 -4
  11. package/esm2022/components/filemanager/folder-rename/folder-rename.component.mjs +4 -4
  12. package/esm2022/components/filemanager/icon-resolver.mjs +1 -1
  13. package/esm2022/components/filemanager/toolbar/breadcrumb/breadcrumb.component.mjs +3 -3
  14. package/esm2022/components/filemanager/toolbar/icon-button/icon-button.component.mjs +3 -3
  15. package/esm2022/components/filemanager/toolbar/toolbar.component.mjs +3 -3
  16. package/esm2022/components/filemanager/tree-view/tree-view.component.mjs +5 -5
  17. package/esm2022/components/lazy-loader/lazy-loader.component.mjs +4 -4
  18. package/esm2022/components/lazy-loader/lazy-loader.module.mjs +4 -4
  19. package/esm2022/components/lazy-loader/lazy-loader.service.mjs +4 -4
  20. package/esm2022/components/menu/menu.component.mjs +36 -29
  21. package/esm2022/components/react-magic-wrapper/react-magic-wrapper.component.mjs +4 -4
  22. package/esm2022/components/tabulator/tabulator.component.mjs +5 -5
  23. package/esm2022/components/tooltip/tooltip.component.mjs +5 -8
  24. package/esm2022/components/vscode/ts-type-resolver/dependency-parser.mjs +1 -1
  25. package/esm2022/components/vscode/ts-type-resolver/import-resolver.mjs +1 -1
  26. package/esm2022/components/vscode/ts-type-resolver/main.mjs +1 -1
  27. package/esm2022/components/vscode/ts-type-resolver/types.mjs +1 -1
  28. package/esm2022/components/vscode/ts-type-resolver/unpkg-source-resolver.mjs +1 -1
  29. package/esm2022/components/vscode/ts-type-resolver/update-emitter.mjs +1 -1
  30. package/esm2022/components/vscode/vscode.component.mjs +4 -4
  31. package/esm2022/directives/menu.directive.mjs +30 -42
  32. package/esm2022/directives/tooltip.directive.mjs +25 -38
  33. package/esm2022/directives/utils.mjs +1 -1
  34. package/esm2022/pipes/html-bypass.pipe.mjs +3 -3
  35. package/esm2022/pipes/resource-bypass.pipe.mjs +3 -3
  36. package/esm2022/pipes/script-bypass.pipe.mjs +3 -3
  37. package/esm2022/pipes/style-bypass.pipe.mjs +3 -3
  38. package/esm2022/pipes/url-bypass.pipe.mjs +3 -3
  39. package/esm2022/services/command-palette.service.mjs +4 -4
  40. package/esm2022/services/dependency.service.mjs +4 -4
  41. package/esm2022/services/dialog.service.mjs +3 -3
  42. package/esm2022/services/fetch.service.mjs +3 -3
  43. package/esm2022/services/file.service.mjs +3 -3
  44. package/esm2022/services/keyboard.service.mjs +4 -4
  45. package/esm2022/services/navigation.service.mjs +3 -3
  46. package/esm2022/services/theme.service.mjs +3 -3
  47. package/esm2022/utils/index.mjs +1 -1
  48. package/fesm2022/{dotglitch-ngx-common-folder-rename.component-h07keNnV.mjs → dotglitch-ngx-common-folder-rename.component-0RqscdRS.mjs} +4 -4
  49. package/fesm2022/{dotglitch-ngx-common-folder-rename.component-h07keNnV.mjs.map → dotglitch-ngx-common-folder-rename.component-0RqscdRS.mjs.map} +1 -1
  50. package/fesm2022/dotglitch-ngx-common.mjs +188 -211
  51. package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
  52. package/package.json +3 -3
@@ -22,9 +22,9 @@ export declare class MenuComponent implements OnInit {
22
22
  selfCords: any;
23
23
  parentItem: any;
24
24
  parentContext: any;
25
+ isLockedOpen: boolean;
25
26
  hasBootstrapped: boolean;
26
27
  pointerIsOnVoid: boolean;
27
- isLockedOpen: boolean;
28
28
  pointerHasBeenOverMask: boolean;
29
29
  coverRectCords: {
30
30
  top: number;
@@ -50,7 +50,7 @@ export declare class MenuComponent implements OnInit {
50
50
  * @param evt
51
51
  * @returns
52
52
  */
53
- onMenuItemClick(item: MenuItem, row: HTMLTableRowElement): Promise<any>;
53
+ onMenuItemClick(item: MenuItem, row: HTMLTableRowElement, keepOpen?: boolean): Promise<any>;
54
54
  /**
55
55
  *
56
56
  * @param label
@@ -71,5 +71,5 @@ export declare class MenuComponent implements OnInit {
71
71
  private onResize;
72
72
  onWheel(evt: WheelEvent): void;
73
73
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, [null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
74
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "ngx-menu", never, { "data": { "alias": "data"; "required": false; }; "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; "id": { "alias": "id"; "required": false; }; "overlayOverlap": { "alias": "overlayOverlap"; "required": false; }; "hoverDelay": { "alias": "hoverDelay"; "required": false; }; "showDebugOverlay": { "alias": "showDebugOverlay"; "required": false; }; "ownerCords": { "alias": "ownerCords"; "required": false; }; "selfCords": { "alias": "selfCords"; "required": false; }; "parentItem": { "alias": "parentItem"; "required": false; }; "parentContext": { "alias": "parentContext"; "required": false; }; }, {}, never, never, true, never>;
74
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "ngx-menu", never, { "data": { "alias": "data"; "required": false; }; "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; "id": { "alias": "id"; "required": false; }; "overlayOverlap": { "alias": "overlayOverlap"; "required": false; }; "hoverDelay": { "alias": "hoverDelay"; "required": false; }; "showDebugOverlay": { "alias": "showDebugOverlay"; "required": false; }; "ownerCords": { "alias": "ownerCords"; "required": false; }; "selfCords": { "alias": "selfCords"; "required": false; }; "parentItem": { "alias": "parentItem"; "required": false; }; "parentContext": { "alias": "parentContext"; "required": false; }; "isLockedOpen": { "alias": "isLockedOpen"; "required": false; }; }, {}, never, never, true, never>;
75
75
  }
@@ -24,8 +24,8 @@ export declare class MenuDirective {
24
24
  config: MenuOptions;
25
25
  constructor(dialog: MatDialog, viewContainer: ViewContainerRef);
26
26
  ngAfterViewInit(): void;
27
- openMenu(evt: PointerEvent, items?: MenuItem[]): Promise<[value: any]>;
27
+ openMenu(evt: PointerEvent, items?: MenuItem[], keepOpen?: boolean): Promise<[value: any]>;
28
28
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuDirective, never>;
29
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuDirective, "[ngx-contextmenu],[ngx-menu],[ngxContextmenu],[ngxMenu]", never, { "data": { "alias": "ngx-menu-context"; "required": false; }; "ctxMenuItems": { "alias": "ngx-contextmenu"; "required": false; }; "menuItems": { "alias": "ngx-menu"; "required": false; }; "config": { "alias": "ngx-menu-config"; "required": false; }; }, {}, never, never, true, never>;
29
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MenuDirective, "[ngx-contextmenu],[ngx-menu]", never, { "data": { "alias": "ngx-menu-context"; "required": false; }; "ctxMenuItems": { "alias": "ngx-contextmenu"; "required": false; }; "menuItems": { "alias": "ngx-menu"; "required": false; }; "config": { "alias": "ngx-menu-config"; "required": false; }; }, {}, never, never, true, never>;
30
30
  }
31
31
  export declare const openMenu: (dialog: MatDialog, menuItems: MenuItem[], data: any, evt: PointerEvent, config?: MenuOptions, el?: HTMLElement) => Promise<any>;
@@ -24,6 +24,6 @@ export declare class TooltipDirective {
24
24
  onPointerEnter(evt: PointerEvent): Promise<void>;
25
25
  onPointerLeave(evt: PointerEvent): Promise<void>;
26
26
  static ɵfac: i0.ɵɵFactoryDeclaration<TooltipDirective, never>;
27
- static ɵdir: i0.ɵɵDirectiveDeclaration<TooltipDirective, "[ngxTooltip],[ngx-tooltip]", never, { "template": { "alias": "ngx-tooltip"; "required": false; }; "config": { "alias": "ngx-tooltip-config"; "required": false; }; "data": { "alias": "ngx-tooltip-context"; "required": false; }; }, {}, never, never, true, never>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TooltipDirective, "[ngx-tooltip]", never, { "template": { "alias": "ngx-tooltip"; "required": false; }; "config": { "alias": "ngx-tooltip-config"; "required": false; }; "data": { "alias": "ngx-tooltip-context"; "required": false; }; }, {}, never, never, true, never>;
28
28
  }
29
29
  export declare const openTooltip: (dialog: MatDialog, template: TemplateRef<any> | Type<any>, data: any, el: HTMLElement, config?: TooltipOptions, focusTrap?: boolean, matPopupOptions?: MatDialogConfig<any>) => Promise<any>;
@@ -97,10 +97,10 @@ export class CommandPaletteComponent {
97
97
  onBlur() {
98
98
  // this.dialog.close();
99
99
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CommandPaletteComponent, deps: [{ token: i1.CommandPaletteService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: CommandPaletteComponent, isStandalone: true, selector: "app-command-palette", inputs: { contextElement: "contextElement" }, host: { listeners: { "window:blur": "onBlur()" } }, ngImport: i0, template: "<mat-form-field style=\"width: 100%; padding: 8px 8px 0 8px\">\n <input\n matInput\n type=\"text\"\n [value]=\"queryString\"\n (keydown)=\"onKeyDown($event)\"\n >\n</mat-form-field>\n\n@if (filteredCommands.length == 0) {\n <div class=\"commands\">\n <div class=\"command selected\">\n <div class=\"label\">No matching results.</div>\n </div>\n </div>\n}\n@else {\n <div\n class=\"commands\"\n [style.flex]=\"(filteredCommands.length * 28) + 'px'\"\n >\n <ng-scrollbar>\n <cdk-virtual-scroll-viewport itemSize=\"28\" scrollViewport>\n <div\n *cdkVirtualFor=\"let command of filteredCommands; let index = index\"\n class=\"command\"\n [class.selected]=\"index==activeIndex\"\n (click)=\"executeCommand(command)\"\n >\n <div\n class=\"label\"\n [innerHTML]=\"command['_renderedLabel'] || command.label || command.description\"\n ></div>\n <div>\n @for (shortcut of (command.shortcutKey?.find ? command.shortcutKey : [command.shortcutKey]); track shortcut) {\n @if (shortcut) {\n <app-shortcut [shortcut]=\"shortcut\"></app-shortcut>\n }\n }\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-scrollbar>\n </div>\n}\n\n", styles: [":host{display:flex;flex-direction:column;width:860px;max-height:460px;border:1px solid #484848;border-radius:5px;background-color:#222;-webkit-user-select:none;user-select:none}.commands{max-height:100%;overflow:hidden}.commands .command{display:flex;height:28px;padding-left:16px;padding-right:32px;align-items:center;border-radius:3px;justify-content:space-between}.commands .command:hover{background-color:#2a2d2e}.commands .command.selected{background-color:#04395e}.commands .command .label ::ng-deep b{color:#2196f3}ng-scrollbar.ng-scrollbar{--scrollbar-padding: 0px;--scrollbar-size: 14px;--scrollbar-border-radius: 0;--scrollbar-thumb-color: #0000;--scrollbar-thumb-transition: height ease-out .15s, width ease-out .15s, background-color ease 1.2s}ng-scrollbar.ng-scrollbar:hover{--scrollbar-thumb-color: #444}cdk-virtual-scroll-viewport{height:100%}:host ::ng-deep .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding:4px 0}:host ::ng-deep .mat-mdc-form-field-infix{min-height:32px}:host ::ng-deep .mat-mdc-text-field-wrapper{margin-bottom:8px}:host ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .dark :host{border:1px solid #e5e5e5;background-color:#f8f8f8}::ng-deep .dark :host .commands .command:hover{background-color:#f2f2f2}::ng-deep .dark :host .commands .command.selected{background-color:#e8e8e8}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i6.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "directive", type: i6.ScrollViewport, selector: "[scrollViewport]" }, { kind: "component", type: ShortcutComponent, selector: "app-shortcut", inputs: ["shortcut"] }] }); }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CommandPaletteComponent, deps: [{ token: i1.CommandPaletteService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: CommandPaletteComponent, isStandalone: true, selector: "app-command-palette", inputs: { contextElement: "contextElement" }, host: { listeners: { "window:blur": "onBlur()" } }, ngImport: i0, template: "<mat-form-field style=\"width: 100%; padding: 8px 8px 0 8px\">\n <input\n matInput\n type=\"text\"\n [value]=\"queryString\"\n (keydown)=\"onKeyDown($event)\"\n >\n</mat-form-field>\n\n@if (filteredCommands.length == 0) {\n <div class=\"commands\">\n <div class=\"command selected\">\n <div class=\"label\">No matching results.</div>\n </div>\n </div>\n}\n@else {\n <div\n class=\"commands\"\n [style.flex]=\"(filteredCommands.length * 28) + 'px'\"\n >\n <ng-scrollbar>\n <cdk-virtual-scroll-viewport itemSize=\"28\" scrollViewport>\n <div\n *cdkVirtualFor=\"let command of filteredCommands; let index = index\"\n class=\"command\"\n [class.selected]=\"index==activeIndex\"\n (click)=\"executeCommand(command)\"\n >\n <div\n class=\"label\"\n [innerHTML]=\"command['_renderedLabel'] || command.label || command.description\"\n ></div>\n <div>\n @for (shortcut of (command.shortcutKey?.find ? command.shortcutKey : [command.shortcutKey]); track shortcut) {\n @if (shortcut) {\n <app-shortcut [shortcut]=\"shortcut\"></app-shortcut>\n }\n }\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-scrollbar>\n </div>\n}\n\n", styles: [":host{display:flex;flex-direction:column;width:860px;max-height:460px;border:1px solid #484848;border-radius:5px;background-color:#222;-webkit-user-select:none;user-select:none}.commands{max-height:100%;overflow:hidden}.commands .command{display:flex;height:28px;padding-left:16px;padding-right:32px;align-items:center;border-radius:3px;justify-content:space-between}.commands .command:hover{background-color:#2a2d2e}.commands .command.selected{background-color:#04395e}.commands .command .label ::ng-deep b{color:#2196f3}ng-scrollbar.ng-scrollbar{--scrollbar-padding: 0px;--scrollbar-size: 14px;--scrollbar-border-radius: 0;--scrollbar-thumb-color: #0000;--scrollbar-thumb-transition: height ease-out .15s, width ease-out .15s, background-color ease 1.2s}ng-scrollbar.ng-scrollbar:hover{--scrollbar-thumb-color: #444}cdk-virtual-scroll-viewport{height:100%}:host ::ng-deep .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding:4px 0}:host ::ng-deep .mat-mdc-form-field-infix{min-height:32px}:host ::ng-deep .mat-mdc-text-field-wrapper{margin-bottom:8px}:host ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .dark :host{border:1px solid #e5e5e5;background-color:#f8f8f8}::ng-deep .dark :host .commands .command:hover{background-color:#f2f2f2}::ng-deep .dark :host .commands .command.selected{background-color:#e8e8e8}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i5.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i5.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i5.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i6.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "directive", type: i6.ScrollViewport, selector: "[scrollViewport]" }, { kind: "component", type: ShortcutComponent, selector: "app-shortcut", inputs: ["shortcut"] }] }); }
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: CommandPaletteComponent, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CommandPaletteComponent, decorators: [{
104
104
  type: Component,
105
105
  args: [{ selector: 'app-command-palette', imports: [
106
106
  MatInputModule,
@@ -117,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
117
117
  type: HostListener,
118
118
  args: ["window:blur"]
119
119
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9jb21tYW5kLXBhbGV0dGUvY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9jb21tYW5kLXBhbGV0dGUvY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7QUFjbEUsTUFBTSxPQUFPLHVCQUF1QjtJQVVoQyxZQUNxQixjQUFxQyxFQUNyQyxNQUF5QixFQUNqQixJQUFTO1FBRmpCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQVI5QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQixhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBb0IsRUFBRSxDQUFDO1FBT25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDekUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV0QywwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQWtCO1FBQ3hCLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDcEIseUJBQXlCO1lBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUVqRSxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNWO1FBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRTtZQUN0Qix5QkFBeUI7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRW5ELEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN0QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhGLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN0QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXJELDRDQUE0QztRQUM1Qyw2QkFBNkI7UUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLEdBQUksR0FBRyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDO1lBRTFELDRCQUE0QjtZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLE9BQU87YUFDVjtZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXO2lCQUM5QixXQUFXLEVBQUU7aUJBQ2IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWYsTUFBTSxlQUFlLEdBQW9CLEVBQUUsQ0FBQztZQUU1QyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBRTFCLE1BQU0sWUFBWSxHQUFHLEtBQUs7cUJBQ3JCLFdBQVcsRUFBRTtxQkFDYixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRWYsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUN2QixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztnQkFFbkIsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUU7b0JBQzNCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUVwRCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRTt3QkFDYixPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNoQixNQUFNO3FCQUNUO3lCQUNJO3dCQUNELGFBQWEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBQyxDQUFDLENBQUUsTUFBTSxDQUFDO3dCQUMxRixTQUFTLEdBQUcsS0FBSyxHQUFDLENBQUMsQ0FBQztxQkFDdkI7aUJBQ0o7Z0JBRUQsYUFBYSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRXhDLElBQUksT0FBTyxFQUFFO29CQUNULE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGFBQWEsQ0FBQztvQkFDMUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDakM7YUFDSjtZQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQXNCO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELE1BQU07UUFDRix1QkFBdUI7SUFDM0IsQ0FBQzs4R0FwSFEsdUJBQXVCLG1GQWFwQixlQUFlO2tHQWJsQix1QkFBdUIsaUxDcEJwQyx1bERBOENBLDI3Q0RqQ1EsY0FBYyxxakJBQ2QsZUFBZSwyakJBQ2YsaUJBQWlCLGlqQkFDakIsaUJBQWlCOzsyRkFJWix1QkFBdUI7a0JBWm5DLFNBQVM7K0JBQ0kscUJBQXFCLFdBR3RCO3dCQUNMLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDcEIsY0FDVyxJQUFJOzswQkFlWCxNQUFNOzJCQUFDLGVBQWU7eUNBWGxCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBZ0hOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbWFuZEFjdGlvbiwgQ29tbWFuZFBhbGV0dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbWFuZC1wYWxldHRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE5nU2Nyb2xsYmFyTW9kdWxlIH0gZnJvbSAnbmd4LXNjcm9sbGJhcic7XG5pbXBvcnQgeyBTaG9ydGN1dENvbXBvbmVudCB9IGZyb20gJy4vc2hvcnRjdXQvc2hvcnRjdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY29tbWFuZC1wYWxldHRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tYW5kLXBhbGV0dGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICAgIE5nU2Nyb2xsYmFyTW9kdWxlLFxuICAgICAgICBTaG9ydGN1dENvbXBvbmVudFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb21tYW5kUGFsZXR0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBxdWVyeVN0cmluZyA9IFwiXCI7XG4gICAgYWN0aXZlSW5kZXggPSAwO1xuXG4gICAgY29tbWFuZHM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuICAgIGZpbHRlcmVkQ29tbWFuZHM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZFBhbGV0dGU6IENvbW1hbmRQYWxldHRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZ1JlZjxhbnk+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YTogYW55XG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29udGV4dEVsZW1lbnQgPSB0aGlzLmNvbnRleHRFbGVtZW50ID8/IGRhdGEuY29udGV4dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZHMgPSB0aGlzLmNvbW1hbmRQYWxldHRlLmdldFJlZ2lzdGVyZWRDb21tYW5kcyh0aGlzLmNvbnRleHRFbGVtZW50KVxuICAgICAgICAgICAgLmZpbHRlcihjID0+IGMudmlzaWJsZUluTGlzdCAhPSBmYWxzZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb21tYW5kcyA9IHRoaXMuY29tbWFuZHM7XG5cbiAgICAgICAgLy8gUmVzZXQgdGhlIGZpbHRlciBsYWJlbHNcbiAgICAgICAgdGhpcy5jb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4gY29tbWFuZFsnX3JlbmRlcmVkTGFiZWwnXSA9ICcnKTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldnQua2V5ID09IFwiRW50ZXJcIikge1xuICAgICAgICAgICAgLy8gRmlyZSB0aGUgZmlyc3QgY29tbWFuZFxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWRDb21tYW5kcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUNvbW1hbmQodGhpcy5maWx0ZXJlZENvbW1hbmRzW3RoaXMuYWN0aXZlSW5kZXhdKTtcblxuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2dC5rZXkgPT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgICAgIC8vIEZpcmUgdGhlIGZpcnN0IGNvbW1hbmRcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBNYXRoLm1heCh0aGlzLmFjdGl2ZUluZGV4LTEsIDApO1xuXG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZ0LmtleSA9PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gTWF0aC5taW4odGhpcy5maWx0ZXJlZENvbW1hbmRzLmxlbmd0aC0xLCB0aGlzLmFjdGl2ZUluZGV4KzEpO1xuXG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5jb21tYW5kcy5mb3JFYWNoKGMgPT4gY1snX3JlbmRlcmVkTGFiZWwnXSA9ICcnKTtcblxuICAgICAgICAvLyBDaGVjayBpbiB0aGUgbmV4dCB0aWNrIHRvIGdldCB0aGUgaW5wdXQnc1xuICAgICAgICAvLyB2YWx1ZSBzbyB0aGF0IGl0J3MgdXBkYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlTdHJpbmcgPSAoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgICAgICAgICAgLy8gV2hpdGVzcGFjZSBkb2Vzbid0IGNvdW50LlxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlTdHJpbmcudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENvbW1hbmRzID0gdGhpcy5jb21tYW5kcztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5Q2hhcnMgPSB0aGlzLnF1ZXJ5U3RyaW5nXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoJycpO1xuXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkQ29tbWFuZHM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGFiZWwgfSA9IGNvbW1hbmQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kQ2hhcnMgPSBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJycpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHJlbmRlcmVkTGFiZWwgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgaXNNYXRjaCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgcXVlcnlDaGFycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGNvbW1hbmRDaGFycy5pbmRleE9mKGNoYXIsIGxhc3RJbmRleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkTGFiZWwgKz0gbGFiZWwuc2xpY2UobGFzdEluZGV4LCBpbmRleCkgKyBgPGI+JHtsYWJlbC5zbGljZShpbmRleCwgaW5kZXgrMSkgfTwvYj5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gaW5kZXgrMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbmRlcmVkTGFiZWwgKz0gbGFiZWwuc2xpY2UobGFzdEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRbJ19yZW5kZXJlZExhYmVsJ10gPSByZW5kZXJlZExhYmVsO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGVkQ29tbWFuZHMucHVzaChjb21tYW5kKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb21tYW5kcyA9IG1hdGNoZWRDb21tYW5kcztcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBleGVjdXRlQ29tbWFuZChjb21tYW5kOiBDb21tYW5kQWN0aW9uKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZFBhbGV0dGUuaW52b2tlQWN0aW9uKGNvbW1hbmQpO1xuICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6Ymx1clwiKVxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgLy8gdGhpcy5kaWFsb2cuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogOHB4IDhweCAwIDhweFwiPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFt2YWx1ZV09XCJxdWVyeVN0cmluZ1wiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICA+XG48L21hdC1mb3JtLWZpZWxkPlxuXG5AaWYgKGZpbHRlcmVkQ29tbWFuZHMubGVuZ3RoID09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwiY29tbWFuZHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1hbmQgc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPk5vIG1hdGNoaW5nIHJlc3VsdHMuPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuQGVsc2Uge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb21tYW5kc1wiXG4gICAgICAgIFtzdHlsZS5mbGV4XT1cIihmaWx0ZXJlZENvbW1hbmRzLmxlbmd0aCAqIDI4KSArICdweCdcIlxuICAgID5cbiAgICAgICAgPG5nLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCIyOFwiIHNjcm9sbFZpZXdwb3J0PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgY29tbWFuZCBvZiBmaWx0ZXJlZENvbW1hbmRzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWFuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpbmRleD09YWN0aXZlSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZUNvbW1hbmQoY29tbWFuZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1hbmRbJ19yZW5kZXJlZExhYmVsJ10gfHwgY29tbWFuZC5sYWJlbCB8fCBjb21tYW5kLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc2hvcnRjdXQgb2YgKGNvbW1hbmQuc2hvcnRjdXRLZXk/LmZpbmQgPyBjb21tYW5kLnNob3J0Y3V0S2V5IDogW2NvbW1hbmQuc2hvcnRjdXRLZXldKTsgdHJhY2sgc2hvcnRjdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3J0Y3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtc2hvcnRjdXQgW3Nob3J0Y3V0XT1cInNob3J0Y3V0XCI+PC9hcHAtc2hvcnRjdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICA8L25nLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbn1cblxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9jb21tYW5kLXBhbGV0dGUvY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9jb21tYW5kLXBhbGV0dGUvY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7QUFjbEUsTUFBTSxPQUFPLHVCQUF1QjtJQVVoQyxZQUNxQixjQUFxQyxFQUNyQyxNQUF5QixFQUNqQixJQUFTO1FBRmpCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQVI5QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQixhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FBb0IsRUFBRSxDQUFDO1FBT25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxRQUFR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dUI7a0JBWm5DLFNBQVM7K0JBQ0kscUJBQXFCLFdBR3RCO3dCQUNMLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDcEIsY0FDVyxJQUFJOzswQkFlWCxNQUFNOzJCQUFDLGVBQWU7eUNBWGxCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBZ0hOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbWFuZEFjdGlvbiwgQ29tbWFuZFBhbGV0dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbWFuZC1wYWxldHRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE5nU2Nyb2xsYmFyTW9kdWxlIH0gZnJvbSAnbmd4LXNjcm9sbGJhcic7XG5pbXBvcnQgeyBTaG9ydGN1dENvbXBvbmVudCB9IGZyb20gJy4vc2hvcnRjdXQvc2hvcnRjdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY29tbWFuZC1wYWxldHRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tbWFuZC1wYWxldHRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb21tYW5kLXBhbGV0dGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICAgIE5nU2Nyb2xsYmFyTW9kdWxlLFxuICAgICAgICBTaG9ydGN1dENvbXBvbmVudFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb21tYW5kUGFsZXR0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoKSBjb250ZXh0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBxdWVyeVN0cmluZyA9IFwiXCI7XG4gICAgYWN0aXZlSW5kZXggPSAwO1xuXG4gICAgY29tbWFuZHM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuICAgIGZpbHRlcmVkQ29tbWFuZHM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZFBhbGV0dGU6IENvbW1hbmRQYWxldHRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZ1JlZjxhbnk+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YTogYW55XG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29udGV4dEVsZW1lbnQgPSB0aGlzLmNvbnRleHRFbGVtZW50ID8/IGRhdGEuY29udGV4dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZHMgPSB0aGlzLmNvbW1hbmRQYWxldHRlLmdldFJlZ2lzdGVyZWRDb21tYW5kcyh0aGlzLmNvbnRleHRFbGVtZW50KVxuICAgICAgICAgICAgLmZpbHRlcihjID0+IGMudmlzaWJsZUluTGlzdCAhPSBmYWxzZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb21tYW5kcyA9IHRoaXMuY29tbWFuZHM7XG5cbiAgICAgICAgLy8gUmVzZXQgdGhlIGZpbHRlciBsYWJlbHNcbiAgICAgICAgdGhpcy5jb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4gY29tbWFuZFsnX3JlbmRlcmVkTGFiZWwnXSA9ICcnKTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldnQua2V5ID09IFwiRW50ZXJcIikge1xuICAgICAgICAgICAgLy8gRmlyZSB0aGUgZmlyc3QgY29tbWFuZFxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWRDb21tYW5kcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUNvbW1hbmQodGhpcy5maWx0ZXJlZENvbW1hbmRzW3RoaXMuYWN0aXZlSW5kZXhdKTtcblxuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2dC5rZXkgPT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgICAgIC8vIEZpcmUgdGhlIGZpcnN0IGNvbW1hbmRcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBNYXRoLm1heCh0aGlzLmFjdGl2ZUluZGV4LTEsIDApO1xuXG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZ0LmtleSA9PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gTWF0aC5taW4odGhpcy5maWx0ZXJlZENvbW1hbmRzLmxlbmd0aC0xLCB0aGlzLmFjdGl2ZUluZGV4KzEpO1xuXG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcbiAgICAgICAgdGhpcy5jb21tYW5kcy5mb3JFYWNoKGMgPT4gY1snX3JlbmRlcmVkTGFiZWwnXSA9ICcnKTtcblxuICAgICAgICAvLyBDaGVjayBpbiB0aGUgbmV4dCB0aWNrIHRvIGdldCB0aGUgaW5wdXQnc1xuICAgICAgICAvLyB2YWx1ZSBzbyB0aGF0IGl0J3MgdXBkYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlTdHJpbmcgPSAoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgICAgICAgICAgLy8gV2hpdGVzcGFjZSBkb2Vzbid0IGNvdW50LlxuICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlTdHJpbmcudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENvbW1hbmRzID0gdGhpcy5jb21tYW5kcztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5Q2hhcnMgPSB0aGlzLnF1ZXJ5U3RyaW5nXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoJycpO1xuXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkQ29tbWFuZHM6IENvbW1hbmRBY3Rpb25bXSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGFiZWwgfSA9IGNvbW1hbmQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb21tYW5kQ2hhcnMgPSBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJycpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHJlbmRlcmVkTGFiZWwgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgaXNNYXRjaCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgcXVlcnlDaGFycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGNvbW1hbmRDaGFycy5pbmRleE9mKGNoYXIsIGxhc3RJbmRleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVkTGFiZWwgKz0gbGFiZWwuc2xpY2UobGFzdEluZGV4LCBpbmRleCkgKyBgPGI+JHtsYWJlbC5zbGljZShpbmRleCwgaW5kZXgrMSkgfTwvYj5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gaW5kZXgrMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbmRlcmVkTGFiZWwgKz0gbGFiZWwuc2xpY2UobGFzdEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRbJ19yZW5kZXJlZExhYmVsJ10gPSByZW5kZXJlZExhYmVsO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGVkQ29tbWFuZHMucHVzaChjb21tYW5kKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb21tYW5kcyA9IG1hdGNoZWRDb21tYW5kcztcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBleGVjdXRlQ29tbWFuZChjb21tYW5kOiBDb21tYW5kQWN0aW9uKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZFBhbGV0dGUuaW52b2tlQWN0aW9uKGNvbW1hbmQpO1xuICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6Ymx1clwiKVxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgLy8gdGhpcy5kaWFsb2cuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTAwJTsgcGFkZGluZzogOHB4IDhweCAwIDhweFwiPlxuICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFt2YWx1ZV09XCJxdWVyeVN0cmluZ1wiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICA+XG48L21hdC1mb3JtLWZpZWxkPlxuXG5AaWYgKGZpbHRlcmVkQ29tbWFuZHMubGVuZ3RoID09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwiY29tbWFuZHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1hbmQgc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiPk5vIG1hdGNoaW5nIHJlc3VsdHMuPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuQGVsc2Uge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjb21tYW5kc1wiXG4gICAgICAgIFtzdHlsZS5mbGV4XT1cIihmaWx0ZXJlZENvbW1hbmRzLmxlbmd0aCAqIDI4KSArICdweCdcIlxuICAgID5cbiAgICAgICAgPG5nLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgaXRlbVNpemU9XCIyOFwiIHNjcm9sbFZpZXdwb3J0PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgY29tbWFuZCBvZiBmaWx0ZXJlZENvbW1hbmRzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tbWFuZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpbmRleD09YWN0aXZlSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZUNvbW1hbmQoY29tbWFuZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNvbW1hbmRbJ19yZW5kZXJlZExhYmVsJ10gfHwgY29tbWFuZC5sYWJlbCB8fCBjb21tYW5kLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc2hvcnRjdXQgb2YgKGNvbW1hbmQuc2hvcnRjdXRLZXk/LmZpbmQgPyBjb21tYW5kLnNob3J0Y3V0S2V5IDogW2NvbW1hbmQuc2hvcnRjdXRLZXldKTsgdHJhY2sgc2hvcnRjdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3J0Y3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtc2hvcnRjdXQgW3Nob3J0Y3V0XT1cInNob3J0Y3V0XCI+PC9hcHAtc2hvcnRjdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICA8L25nLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbn1cblxuIl19
@@ -7,10 +7,10 @@ export class ShortcutComponent {
7
7
  ngOnChanges() {
8
8
  this.keys = this.shortcut?.split("+");
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ShortcutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.9", type: ShortcutComponent, isStandalone: true, selector: "app-shortcut", inputs: { shortcut: "shortcut" }, usesOnChanges: true, ngImport: i0, template: "@for (key of keys; track key; let i = $index) {\n @if(i > 0) {\n <span class=\"plus\">+</span>\n }\n\n <span class=\"key\">{{key}}</span>\n}\n", styles: [".key{background:#444;padding:2px 6px;border-radius:4px;font-family:Fira Mono,Courier New,Courier,monospace;text-transform:capitalize}.plus{margin:0 4px}\n"] }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ShortcutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: ShortcutComponent, isStandalone: true, selector: "app-shortcut", inputs: { shortcut: "shortcut" }, usesOnChanges: true, ngImport: i0, template: "@for (key of keys; track key; let i = $index) {\n @if(i > 0) {\n <span class=\"plus\">+</span>\n }\n\n <span class=\"key\">{{key}}</span>\n}\n", styles: [".key{background:#444;padding:2px 6px;border-radius:4px;font-family:Fira Mono,Courier New,Courier,monospace;text-transform:capitalize}.plus{margin:0 4px}\n"] }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ShortcutComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: ShortcutComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'app-shortcut', standalone: true, template: "@for (key of keys; track key; let i = $index) {\n @if(i > 0) {\n <span class=\"plus\">+</span>\n }\n\n <span class=\"key\">{{key}}</span>\n}\n", styles: [".key{background:#444;padding:2px 6px;border-radius:4px;font-family:Fira Mono,Courier New,Courier,monospace;text-transform:capitalize}.plus{margin:0 4px}\n"] }]
16
16
  }], propDecorators: { shortcut: [{
@@ -27,10 +27,10 @@ export class DynamicHTMLComponent {
27
27
  this.ref = null;
28
28
  }
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DynamicHTMLComponent, deps: [{ token: i1.DynamicHTMLRenderer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: DynamicHTMLComponent, isStandalone: true, selector: "dynamic-html", inputs: { content: "content" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DynamicHTMLComponent, deps: [{ token: i1.DynamicHTMLRenderer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: DynamicHTMLComponent, isStandalone: true, selector: "dynamic-html", inputs: { content: "content" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DynamicHTMLComponent, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DynamicHTMLComponent, decorators: [{
34
34
  type: Component,
35
35
  args: [{
36
36
  selector: 'dynamic-html',
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
40
40
  }], ctorParameters: () => [{ type: i1.DynamicHTMLRenderer }, { type: i0.ElementRef }], propDecorators: { content: [{
41
41
  type: Input
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1odG1sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9keW5hbWljLWh0bWwvZHluYW1pYy1odG1sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssR0FLUixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTyxvQkFBb0I7SUFLN0IsWUFDWSxRQUE2QixFQUM3QixVQUFzQjtRQUR0QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSjFCLFFBQUcsR0FBbUIsSUFBSSxDQUFDO0lBSy9CLENBQUM7SUFFTCxXQUFXLENBQUMsQ0FBZ0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztTQUNuQjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0U7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDbkI7SUFDTCxDQUFDOzhHQS9CUSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw2SEFIbkIsRUFBRTs7MkZBR0gsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7aUhBRVksT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRG9DaGVjayxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IER5bmFtaWNIVE1MUmVuZGVyZXIsIER5bmFtaWNIVE1MUmVmIH0gZnJvbSAnLi9keW5hbWljLWh0bWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHluYW1pYy1odG1sJyxcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljSFRNTENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHJlZjogRHluYW1pY0hUTUxSZWYgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IER5bmFtaWNIVE1MUmVuZGVyZXIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICApIHsgfVxuXG4gICAgbmdPbkNoYW5nZXMoXzogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMucmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuZWxlbWVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5yZWYgPSB0aGlzLnJlbmRlcmVyLnJlbmRlcklubmVySFRNTCh0aGlzLmVsZW1lbnRSZWYsIHRoaXMuY29udGVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZikge1xuICAgICAgICAgICAgdGhpcy5yZWYuY2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMucmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1odG1sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy9keW5hbWljLWh0bWwvZHluYW1pYy1odG1sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssR0FLUixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTyxvQkFBb0I7SUFLN0IsWUFDWSxRQUE2QixFQUM3QixVQUFzQjtRQUR0QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBSjFCLFFBQUcsR0FBbUIsSUFBSSxDQUFDO0lBSy9CLENBQUM7SUFFTCxXQUFXLENBQUMsQ0FBZ0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO0lBQ0wsQ0FBQzs4R0EvQlEsb0JBQW9CO2tHQUFwQixvQkFBb0IsNkhBSG5CLEVBQUU7OzJGQUdILG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25CO2lIQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIERvQ2hlY2ssXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEeW5hbWljSFRNTFJlbmRlcmVyLCBEeW5hbWljSFRNTFJlZiB9IGZyb20gJy4vZHluYW1pYy1odG1sLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2R5bmFtaWMtaHRtbCcsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0hUTUxDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgY29udGVudDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSByZWY6IER5bmFtaWNIVE1MUmVmID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBEeW5hbWljSFRNTFJlbmRlcmVyLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgKSB7IH1cblxuICAgIG5nT25DaGFuZ2VzKF86IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucmVmKSB7XG4gICAgICAgICAgICB0aGlzLnJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmVsZW1lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmID0gdGhpcy5yZW5kZXJlci5yZW5kZXJJbm5lckhUTUwodGhpcy5lbGVtZW50UmVmLCB0aGlzLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmLmNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVmKSB7XG4gICAgICAgICAgICB0aGlzLnJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -13,11 +13,11 @@ export class NgxDynamicHTMLModule {
13
13
  ],
14
14
  };
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NgxDynamicHTMLModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: NgxDynamicHTMLModule, imports: [DynamicHTMLComponent], exports: [DynamicHTMLComponent] }); }
18
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NgxDynamicHTMLModule }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NgxDynamicHTMLModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: NgxDynamicHTMLModule, imports: [DynamicHTMLComponent], exports: [DynamicHTMLComponent] }); }
18
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NgxDynamicHTMLModule }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NgxDynamicHTMLModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: NgxDynamicHTMLModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  imports: [DynamicHTMLComponent],
@@ -54,13 +54,13 @@ export class DynamicHTMLRenderer {
54
54
  },
55
55
  };
56
56
  }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DynamicHTMLRenderer, deps: [{ token: NGX_DYNAMIC_CONFIG }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
58
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DynamicHTMLRenderer }); }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DynamicHTMLRenderer, deps: [{ token: NGX_DYNAMIC_CONFIG }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
58
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DynamicHTMLRenderer }); }
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: DynamicHTMLRenderer, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DynamicHTMLRenderer, decorators: [{
61
61
  type: Injectable
62
62
  }], ctorParameters: () => [{ type: i1.DynamicHTMLOptions, decorators: [{
63
63
  type: Inject,
64
64
  args: [NGX_DYNAMIC_CONFIG]
65
65
  }] }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1odG1sLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvZHluYW1pYy1odG1sL2R5bmFtaWMtaHRtbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWtGLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQXNCLGtCQUFrQixFQUFXLE1BQU0sU0FBUyxDQUFDOzs7QUFPMUUsU0FBUyxpQkFBaUI7SUFDdEIsT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO0FBQ3JELENBQUM7QUFHRCxNQUFNLE9BQU8sbUJBQW1CO0lBTTVCLFlBQWdELE1BQTBCLEVBQVUsR0FBNkIsRUFBVSxRQUFrQjtRQUE3RixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUpySSx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUU5RCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBRzdELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxFQUF5QixDQUFDO1lBQzlCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDdEIsT0FBTztnQkFDSCxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztnQkFDaEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDckIsQ0FBQztTQUNMO1FBQ0QsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRTFDLE1BQU0sYUFBYSxHQUE2QixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQzVDLE1BQU0sUUFBUSxHQUFJLFVBQVUsQ0FBQyxhQUF5QixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xGLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFXLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRW5GLEVBQUUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRWpDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUU7b0JBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO29CQUMzQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRTt3QkFDcEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFVLEVBQUUsRUFBRTs0QkFDdkQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQ0EsTUFBTSxDQUFDLFFBQW9CLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ3RFO2dCQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVsRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEYsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDVixhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQzs4R0F0RFEsbUJBQW1CLGtCQU1SLGtCQUFrQjtrSEFON0IsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzswQkFPTSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBFbGVtZW50UmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudEZhY3RvcnksIENvbXBvbmVudFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljSFRNTE9wdGlvbnMsIE5HWF9EWU5BTUlDX0NPTkZJRywgT25Nb3VudCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNIVE1MUmVmIHtcbiAgICBjaGVjazogKCkgPT4gdm9pZDtcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBpc0Jyb3dzZXJQbGF0Zm9ybSgpIHtcbiAgICByZXR1cm4gd2luZG93ICE9IG51bGwgJiYgd2luZG93LmRvY3VtZW50ICE9IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEeW5hbWljSFRNTFJlbmRlcmVyIHtcblxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yaWVzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudEZhY3Rvcnk8YW55Pj4oKTtcblxuICAgIHByaXZhdGUgY29tcG9uZW50UmVmcyA9IG5ldyBNYXA8YW55LCBBcnJheTxDb21wb25lbnRSZWY8YW55Pj4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HWF9EWU5BTUlDX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IER5bmFtaWNIVE1MT3B0aW9ucywgcHJpdmF0ZSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5jb25maWcuY29tcG9uZW50cy5mb3JFYWNoKCh7IHNlbGVjdG9yLCBjb21wb25lbnQgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IGNmOiBDb21wb25lbnRGYWN0b3J5PGFueT47XG4gICAgICAgICAgICBjZiA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3Rvcmllcy5zZXQoc2VsZWN0b3IsIGNmKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVuZGVySW5uZXJIVE1MKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGh0bWw6IHN0cmluZyk6IER5bmFtaWNIVE1MUmVmIHtcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXJQbGF0Zm9ybSgpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNoZWNrOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICAgICAgZGVzdHJveTogKCkgPT4geyB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaHRtbDtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWZzOiBBcnJheTxDb21wb25lbnRSZWY8YW55Pj4gPSBbXTtcbiAgICAgICAgdGhpcy5jb25maWcuY29tcG9uZW50cy5mb3JFYWNoKCh7IHNlbGVjdG9yIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZWxlbWVudHMsIChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBlbC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgY29uc3QgY21wUmVmID0gdGhpcy5jb21wb25lbnRGYWN0b3JpZXMuZ2V0KHNlbGVjdG9yKS5jcmVhdGUodGhpcy5pbmplY3RvciwgW10sIGVsKTtcblxuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNtcFJlZi5pbnN0YW5jZS5keW5hbWljT25Nb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5oYXNBdHRyaWJ1dGVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZWwuYXR0cmlidXRlcywgKGF0dHI6IEF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyc01hcC5zZXQoYXR0ci5uYW1lLCBhdHRyLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIChjbXBSZWYuaW5zdGFuY2UgYXMgT25Nb3VudCkuZHluYW1pY09uTW91bnQoYXR0cnNNYXAsIGNvbnRlbnQsIGVsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWZzLnB1c2goY21wUmVmKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzLnNldChlbGVtZW50UmVmLCBjb21wb25lbnRSZWZzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hlY2s6ICgpID0+IGNvbXBvbmVudFJlZnMuZm9yRWFjaChyZWYgPT4gcmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSksXG4gICAgICAgICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmcy5mb3JFYWNoKHJlZiA9PiByZWYuZGVzdHJveSgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZnMuZGVsZXRlKGVsZW1lbnRSZWYpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1odG1sLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvZHluYW1pYy1odG1sL2R5bmFtaWMtaHRtbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWtGLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQXNCLGtCQUFrQixFQUFXLE1BQU0sU0FBUyxDQUFDOzs7QUFPMUUsU0FBUyxpQkFBaUI7SUFDdEIsT0FBTyxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO0FBQ3JELENBQUM7QUFHRCxNQUFNLE9BQU8sbUJBQW1CO0lBTTVCLFlBQWdELE1BQTBCLEVBQVUsR0FBNkIsRUFBVSxRQUFrQjtRQUE3RixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQTBCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUpySSx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztRQUU5RCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBRzdELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxFQUF5QixDQUFDO1lBQzlCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO2dCQUNILEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUNoQixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQzthQUNyQixDQUFDO1FBQ04sQ0FBQztRQUNELFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUUxQyxNQUFNLGFBQWEsR0FBNkIsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtZQUM1QyxNQUFNLFFBQVEsR0FBSSxVQUFVLENBQUMsYUFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBVyxFQUFFLEVBQUU7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVuRixFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUVqQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO29CQUMzQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO3dCQUNyQixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQVUsRUFBRSxFQUFFOzRCQUN2RCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN4QyxDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDO29CQUNBLE1BQU0sQ0FBQyxRQUFvQixDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUVELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVsRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEYsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDVixhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQzs4R0F0RFEsbUJBQW1CLGtCQU1SLGtCQUFrQjtrSEFON0IsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzswQkFPTSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBFbGVtZW50UmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudEZhY3RvcnksIENvbXBvbmVudFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljSFRNTE9wdGlvbnMsIE5HWF9EWU5BTUlDX0NPTkZJRywgT25Nb3VudCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNIVE1MUmVmIHtcbiAgICBjaGVjazogKCkgPT4gdm9pZDtcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBpc0Jyb3dzZXJQbGF0Zm9ybSgpIHtcbiAgICByZXR1cm4gd2luZG93ICE9IG51bGwgJiYgd2luZG93LmRvY3VtZW50ICE9IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEeW5hbWljSFRNTFJlbmRlcmVyIHtcblxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yaWVzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudEZhY3Rvcnk8YW55Pj4oKTtcblxuICAgIHByaXZhdGUgY29tcG9uZW50UmVmcyA9IG5ldyBNYXA8YW55LCBBcnJheTxDb21wb25lbnRSZWY8YW55Pj4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE5HWF9EWU5BTUlDX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IER5bmFtaWNIVE1MT3B0aW9ucywgcHJpdmF0ZSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5jb25maWcuY29tcG9uZW50cy5mb3JFYWNoKCh7IHNlbGVjdG9yLCBjb21wb25lbnQgfSkgPT4ge1xuICAgICAgICAgICAgbGV0IGNmOiBDb21wb25lbnRGYWN0b3J5PGFueT47XG4gICAgICAgICAgICBjZiA9IHRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3Rvcmllcy5zZXQoc2VsZWN0b3IsIGNmKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVuZGVySW5uZXJIVE1MKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGh0bWw6IHN0cmluZyk6IER5bmFtaWNIVE1MUmVmIHtcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXJQbGF0Zm9ybSgpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNoZWNrOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICAgICAgZGVzdHJveTogKCkgPT4geyB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gaHRtbDtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWZzOiBBcnJheTxDb21wb25lbnRSZWY8YW55Pj4gPSBbXTtcbiAgICAgICAgdGhpcy5jb25maWcuY29tcG9uZW50cy5mb3JFYWNoKCh7IHNlbGVjdG9yIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gKGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZWxlbWVudHMsIChlbDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBlbC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgY29uc3QgY21wUmVmID0gdGhpcy5jb21wb25lbnRGYWN0b3JpZXMuZ2V0KHNlbGVjdG9yKS5jcmVhdGUodGhpcy5pbmplY3RvciwgW10sIGVsKTtcblxuICAgICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNtcFJlZi5pbnN0YW5jZS5keW5hbWljT25Nb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRyc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC5oYXNBdHRyaWJ1dGVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZWwuYXR0cmlidXRlcywgKGF0dHI6IEF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyc01hcC5zZXQoYXR0ci5uYW1lLCBhdHRyLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIChjbXBSZWYuaW5zdGFuY2UgYXMgT25Nb3VudCkuZHluYW1pY09uTW91bnQoYXR0cnNNYXAsIGNvbnRlbnQsIGVsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb21wb25lbnRSZWZzLnB1c2goY21wUmVmKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzLnNldChlbGVtZW50UmVmLCBjb21wb25lbnRSZWZzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hlY2s6ICgpID0+IGNvbXBvbmVudFJlZnMuZm9yRWFjaChyZWYgPT4gcmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSksXG4gICAgICAgICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmcy5mb3JFYWNoKHJlZiA9PiByZWYuZGVzdHJveSgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZnMuZGVsZXRlKGVsZW1lbnRSZWYpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=