@worktile/theia 3.0.5 → 3.0.8
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/bundles/worktile-theia.umd.js +64 -27
- package/bundles/worktile-theia.umd.js.map +1 -1
- package/editor.component.d.ts +2 -1
- package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +3 -2
- package/esm2015/components/toolbar-group/toolbar-group.component.js +2 -1
- package/esm2015/core/toolbar-item/base-toolbar-item.js +4 -4
- package/esm2015/editor.component.js +15 -2
- package/esm2015/interfaces/toolbar.js +1 -1
- package/esm2015/plugins/code/code.component.js +6 -3
- package/esm2015/plugins/color/toolbar-item.component.js +2 -1
- package/esm2015/plugins/deserializers/deserialize-md.plugin.js +2 -1
- package/esm2015/plugins/image/image.component.js +13 -8
- package/esm2015/plugins/image/image.editor.js +3 -5
- package/esm2015/plugins/link/link.component.js +3 -1
- package/esm2015/plugins/quick-insert/quick-insert.editor.js +2 -1
- package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +2 -1
- package/esm2015/plugins/table/table.service.js +2 -1
- package/esm2015/plugins/table/toolbar-item.component.js +2 -1
- package/esm2015/plugins/vertical-align/toolbar-item.component.js +2 -1
- package/esm2015/queries/get-plugin-by-toolbar.js +13 -0
- package/esm2015/queries/get-toolbar-disabled.js +1 -1
- package/esm2015/queries/index.js +3 -3
- package/esm2015/services/color-select.service.js +2 -1
- package/esm2015/services/context.service.js +7 -6
- package/esm2015/services/table-contextmenu.service.js +2 -1
- package/fesm2015/worktile-theia.js +64 -28
- package/fesm2015/worktile-theia.js.map +1 -1
- package/interfaces/toolbar.d.ts +2 -0
- package/package.json +1 -1
- package/plugins/image/image.component.d.ts +4 -1
- package/queries/get-plugin-by-toolbar.d.ts +3 -0
- package/queries/get-toolbar-disabled.d.ts +2 -2
- package/queries/index.d.ts +2 -2
- package/services/context.service.d.ts +8 -4
- package/esm2015/queries/get-plugin-key-by-toolbar-key.js +0 -10
- package/queries/get-plugin-key-by-toolbar-key.d.ts +0 -3
package/editor.component.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
|
|
|
28
28
|
data?: DomEventDataInfo;
|
|
29
29
|
}>;
|
|
30
30
|
theEditorCreated: EventEmitter<Editor>;
|
|
31
|
+
theUploadingStatus: EventEmitter<boolean>;
|
|
31
32
|
templateInstance: TheTemplateComponent;
|
|
32
33
|
globalToolbarInstance: TheToolbarComponent;
|
|
33
34
|
quickInsertInstance: TheQuickInsertComponent;
|
|
@@ -86,6 +87,6 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
|
|
|
86
87
|
text: string;
|
|
87
88
|
};
|
|
88
89
|
static ɵfac: i0.ɵɵFactoryDeclaration<TheEditorComponent, never>;
|
|
89
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TheEditorComponent, "the-editor, theEditor", never, { "theOptions": "theOptions"; "thePlugins": "thePlugins"; "theGlobalToolbar": "theGlobalToolbar"; "theDecorate": "theDecorate"; "theOnError": "theOnError"; }, { "theOnSave": "theOnSave"; "theOnDOMEvent": "theOnDOMEvent"; "theEditorCreated": "theEditorCreated"; }, never, never>;
|
|
90
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TheEditorComponent, "the-editor, theEditor", never, { "theOptions": "theOptions"; "thePlugins": "thePlugins"; "theGlobalToolbar": "theGlobalToolbar"; "theDecorate": "theDecorate"; "theOnError": "theOnError"; }, { "theOnSave": "theOnSave"; "theOnDOMEvent": "theOnDOMEvent"; "theEditorCreated": "theEditorCreated"; "theUploadingStatus": "theUploadingStatus"; }, never, never>;
|
|
90
91
|
}
|
|
91
92
|
export {};
|
|
@@ -70,6 +70,7 @@ export class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
|
|
|
70
70
|
backdropClosable: true,
|
|
71
71
|
hasBackdrop: false,
|
|
72
72
|
offset: 10,
|
|
73
|
+
minWidth: 0,
|
|
73
74
|
viewContainerRef: this.viewContainerRef,
|
|
74
75
|
scrollStrategy: this.overlay.scrollStrategies.reposition()
|
|
75
76
|
});
|
|
@@ -101,7 +102,7 @@ export class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
|
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
TheToolbarDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
-
TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { itemMousedownHandle: "itemMousedownHandle" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenuItem?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenuItem
|
|
105
|
+
TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { itemMousedownHandle: "itemMousedownHandle" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenuItem?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenuItem?.key && !toolbarItem?.dropdownFixedIcon\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i5.ThyActionMenuDividerComponent, selector: "thy-action-menu-divider", inputs: ["thyTitle", "thyType"] }], directives: [{ type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }] });
|
|
105
106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
|
|
106
107
|
type: Component,
|
|
107
108
|
args: [{
|
|
@@ -129,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
129
130
|
type: HostListener,
|
|
130
131
|
args: ['document: mousedown', ['$event']]
|
|
131
132
|
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxZQUFZLEVBQWUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUkxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7OztBQVNuRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsc0JBQXNCO0lBc0NuRSxZQUNXLFVBQXNCLEVBQ3JCLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxPQUFnQjtRQUV4QixLQUFLLEVBQUUsQ0FBQztRQUxELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyQzVCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBd0M1QixDQUFDO0lBckNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkksQ0FBQztJQVlELGNBQWMsQ0FBQyxLQUFpQjs7UUFDNUIsS0FBSyxDQUFDLE9BQU8s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QVEsQ0FBQztnQkFXckMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBIb3N0TGlzdGVuZXIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2RlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVGhlQmFzZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbGJhci1pdGVtL2Jhc2UtdG9vbGJhci1pdGVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhci1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtdG9vbGJhci1kcm9wZG93bi1jb250YWluZXInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBpdGVtTW91c2Vkb3duSGFuZGxlOiAoaXRlbTogVG9vbGJhckl0ZW0pID0+IHZvaWQ7XG5cbiAgICBlZGl0b3I6IEVkaXRvcjtcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBkcm9wZG93bk1vZGUgPSBEcm9wZG93bk1vZGU7XG4gICAgZHJvcGRvd25Qb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBnZXQgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93blBvcG92ZXJSZWYgJiYgdGhpcy5kcm9wZG93blBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpICYmIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2ljb25Nb2RlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGljb25Nb2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0ZXh0TW9kZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB0ZXh0TW9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd25UZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgZHJvcGRvd25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShldmVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd25Qb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25Qb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGhpcy5tb2RlID09PSB0aGlzLmRyb3Bkb3duTW9kZS5pY29uID8gdGhpcy5pY29uTW9kZVRlbXBsYXRlIDogdGhpcy50ZXh0TW9kZVRlbXBsYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gdGhpcy5kZWZhdWx0RHJvcGRvd25JdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbGJhckl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYCR7dGhpcy50b29sYmFySXRlbT8ua2V5fWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXRlbU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCwgaXRlbTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShldmVudCk7XG5cbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duUG9wb3ZlcigpO1xuXG4gICAgICAgIGlmICghdGhpcy50b29sYmFySXRlbS5kcm9wZG93bkZpeGVkSWNvbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IGl0ZW07ICAgICAgICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pdGVtTW91c2Vkb3duSGFuZGxlKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1Nb3VzZWRvd25IYW5kbGUoaXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbT8uZXhlY3V0ZSkge1xuICAgICAgICAgICAgaXRlbT8uZXhlY3V0ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuRHJvcGRvd25Qb3BvdmVyKCkge1xuICAgICAgICB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS10b29sYmFyLWRyb3Bkb3duLXBvcG92ZXInLCB0aGlzLnRvb2xiYXJJdGVtPy5rZXldLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0OiAxMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgY2xvc2VEcm9wZG93blBvcG92ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCB0b3BQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICBvZmZzZXRZOiAtMTVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgLi4udG9wUG9zaXRpb24sXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXRZOiA0MlxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbYm90dG9tUG9zaXRpb24sIHRvcFBvc2l0aW9uXSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uTW9kZVRlbXBsYXRlPlxuICAgIDxhIHRoeUljb25OYXZMaW5rIGNsYXNzPVwiaWNvbi1tb2RlIGxpbmstd2l0aC1kb3duXCIgW3RoeVRvb2x0aXBdPVwiYWN0aXZlTWVudUl0ZW0/Lm5hbWVcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiYWN0aXZlTWVudUl0ZW0/Lmljb25cIj48L3RoeS1pY29uPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJjYXJldC1kb3duLWljb24gZm9udC1zaXplLXNtIHRleHQtZGVzY1wiIHRoeUljb25OYW1lPVwiY2FyZXQtZG93blwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0ZXh0TW9kZVRlbXBsYXRlPlxuICAgIDxhIHRoeUljb25OYXZMaW5rIGNsYXNzPVwidGV4dC1tb2RlXCIgW3RoeVRvb2x0aXBdPVwiYWN0aXZlTWVudUl0ZW0/Lm5hbWVcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy10ZXh0XCI+e3sgYWN0aXZlTWVudUl0ZW0/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInRleHQtY2FyZXQtZG93bi1pY29uIGZvbnQtc2l6ZS1zbSB0ZXh0LWRlc2NcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25UZW1wbGF0ZT5cbiAgICA8dGh5LWFjdGlvbi1tZW51IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51c1wiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUua2V5ICE9PSAnc3BsaXQnXCJcbiAgICAgICAgICAgICAgICB0aHlBY3Rpb25NZW51SXRlbVxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgICAgIFt0aHlBY3Rpb25NZW51SXRlbUFjdGl2ZV09XCJtZW51LmtleSA9PT0gYWN0aXZlTWVudUl0ZW0ua2V5ICYmICF0b29sYmFySXRlbS5kcm9wZG93bkZpeGVkSWNvblwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJpdGVtTW91c2Vkb3duKCRldmVudCwgbWVudSlcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIm1lbnU/LnN0eWxlc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZW51Lmljb24gJiYgbW9kZSA9PT0gZHJvcGRvd25Nb2RlLmljb25cIiB0aHlBY3Rpb25NZW51SXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwibWVudS5pY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZW51Lm5hbWVcIiB0aHlBY3Rpb25NZW51SXRlbU5hbWU+e3sgbWVudS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHRoeS1hY3Rpb24tbWVudS1kaXZpZGVyICpuZ0lmPVwibWVudS5rZXkgPT09ICdzcGxpdCdcIj48L3RoeS1hY3Rpb24tbWVudS1kaXZpZGVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RoeS1hY3Rpb24tbWVudT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxZQUFZLEVBQWUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUkxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7OztBQVNuRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsc0JBQXNCO0lBc0NuRSxZQUNXLFVBQXNCLEVBQ3JCLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxPQUFnQjtRQUV4QixLQUFLLEVBQUUsQ0FBQztRQUxELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyQzVCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBd0M1QixDQUFDO0lBckNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkksQ0FBQztJQVlELGNBQWMsQ0FBQyxLQUFpQjs7UUFDNUIsS0FBSyxDQUFDLE9BQU8s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QUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVdyQyx1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdG9vbGJhcic7XG5pbXBvcnQgeyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYmFyLWl0ZW0vYmFzZS10b29sYmFyLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10b29sYmFyLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS10b29sYmFyLWRyb3Bkb3duLWNvbnRhaW5lcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VUb29sYmFyRHJvcGRvd24gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGl0ZW1Nb3VzZWRvd25IYW5kbGU6IChpdGVtOiBUb29sYmFySXRlbSkgPT4gdm9pZDtcblxuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcbiAgICBkcm9wZG93blBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZiAmJiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy5kcm9wZG93blBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaWNvbk1vZGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgaWNvbk1vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RleHRNb2RlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRleHRNb2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBkcm9wZG93blRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICB0b2dnbGVEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBzdXBlci5leGVjdXRlKGV2ZW50KTtcblxuICAgICAgICBpZiAodGhpcy5lZGl0b3I/LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93blBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDogbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93blBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSB0aGlzLm1vZGUgPT09IHRoaXMuZHJvcGRvd25Nb2RlLmljb24gPyB0aGlzLmljb25Nb2RlVGVtcGxhdGUgOiB0aGlzLnRleHRNb2RlVGVtcGxhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlTWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSB0aGlzLmRlZmF1bHREcm9wZG93bkl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50b29sYmFySXRlbSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgJHt0aGlzLnRvb2xiYXJJdGVtPy5rZXl9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtTW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBUb29sYmFySXRlbSkge1xuICAgICAgICBzdXBlci5leGVjdXRlKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25Qb3BvdmVyKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRvb2xiYXJJdGVtLmRyb3Bkb3duRml4ZWRJY29uKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gaXRlbTsgICAgICAgICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLml0ZW1Nb3VzZWRvd25IYW5kbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbU1vdXNlZG93bkhhbmRsZShpdGVtKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtPy5leGVjdXRlKSB7XG4gICAgICAgICAgICBpdGVtPy5leGVjdXRlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5Ecm9wZG93blBvcG92ZXIoKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4odGhpcy5kcm9wZG93blRlbXBsYXRlLCB7XG4gICAgICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsndGhlLXRvb2xiYXItZHJvcGRvd24tcG9wb3ZlcicsIHRoaXMudG9vbGJhckl0ZW0/LmtleV0sXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IDEwLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIGNsb3NlRHJvcGRvd25Qb3BvdmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpIHtcbiAgICAgICAgY29uc3QgdG9wUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogLTE1XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLnRvcFBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WTogNDJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW2JvdHRvbVBvc2l0aW9uLCB0b3BQb3NpdGlvbl0pO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbk1vZGVUZW1wbGF0ZT5cbiAgICA8YSB0aHlJY29uTmF2TGluayBjbGFzcz1cImljb24tbW9kZSBsaW5rLXdpdGgtZG93blwiIFt0aHlUb29sdGlwXT1cImFjdGl2ZU1lbnVJdGVtPy5uYW1lXCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImFjdGl2ZU1lbnVJdGVtPy5pY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwiY2FyZXQtZG93bi1pY29uIGZvbnQtc2l6ZS1zbSB0ZXh0LWRlc2NcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGV4dE1vZGVUZW1wbGF0ZT5cbiAgICA8YSB0aHlJY29uTmF2TGluayBjbGFzcz1cInRleHQtbW9kZVwiIFt0aHlUb29sdGlwXT1cImFjdGl2ZU1lbnVJdGVtPy5uYW1lXCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctdGV4dFwiPnt7IGFjdGl2ZU1lbnVJdGVtPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJ0ZXh0LWNhcmV0LWRvd24taWNvbiBmb250LXNpemUtc20gdGV4dC1kZXNjXCIgdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgPHRoeS1hY3Rpb24tbWVudSBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnUgb2YgbWVudXNcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmtleSAhPT0gJ3NwbGl0J1wiXG4gICAgICAgICAgICAgICAgdGh5QWN0aW9uTWVudUl0ZW1cbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgICAgICBbdGh5QWN0aW9uTWVudUl0ZW1BY3RpdmVdPVwibWVudS5rZXkgPT09IGFjdGl2ZU1lbnVJdGVtPy5rZXkgJiYgIXRvb2xiYXJJdGVtPy5kcm9wZG93bkZpeGVkSWNvblwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJpdGVtTW91c2Vkb3duKCRldmVudCwgbWVudSlcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIm1lbnU/LnN0eWxlc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZW51Lmljb24gJiYgbW9kZSA9PT0gZHJvcGRvd25Nb2RlLmljb25cIiB0aHlBY3Rpb25NZW51SXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwibWVudS5pY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZW51Lm5hbWVcIiB0aHlBY3Rpb25NZW51SXRlbU5hbWU+e3sgbWVudS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHRoeS1hY3Rpb24tbWVudS1kaXZpZGVyICpuZ0lmPVwibWVudS5rZXkgPT09ICdzcGxpdCdcIj48L3RoeS1hY3Rpb24tbWVudS1kaXZpZGVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RoeS1hY3Rpb24tbWVudT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -71,6 +71,7 @@ export class TheToolbarGroupComponent {
|
|
|
71
71
|
this.groupPopoverRef = this.thyPopover.open(this.groupTemplate, {
|
|
72
72
|
panelClass: 'the-toolbar-group-container',
|
|
73
73
|
offset: 10,
|
|
74
|
+
minWidth: 0,
|
|
74
75
|
placement: 'bottomRight',
|
|
75
76
|
origin: event.currentTarget,
|
|
76
77
|
viewContainerRef: this.viewContainerRef,
|
|
@@ -112,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
112
113
|
type: HostListener,
|
|
113
114
|
args: ['click', ['$event']]
|
|
114
115
|
}] } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWdyb3VwL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1ncm91cC90b29sYmFyLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUErQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVl4SSxNQUFNLE9BQU8sd0JBQXdCO0lBc0NqQyxZQUFtQixVQUFzQixFQUFVLFVBQXNCLEVBQVUsZ0JBQWtDO1FBQWxHLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWxCckgsV0FBTSxHQUFHLEtBQUssQ0FBQztJQWtCeUcsQ0FBQztJQWpDekgsSUFDSSxJQUFJLENBQUMsQ0FBcUI7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlILENBQUM7SUFXRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztR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UzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjtxQkFDN0I7aUJBQ0o7eUpBSVksS0FBSztzQkFBYixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSztnQkFvQk4sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0QsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9yQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBEZWZhdWx0VG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhci1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtdG9vbGJhci1ncm91cCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoZVRvb2xiYXJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIF9pdGVtOiBEZWZhdWx0VG9vbGJhckl0ZW07XG5cbiAgICBASW5wdXQoKSBtZW51czogRGVmYXVsdFRvb2xiYXJJdGVtW107XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtKGk6IERlZmF1bHRUb29sYmFySXRlbSkge1xuICAgICAgICB0aGlzLl9pdGVtID0gaTtcbiAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IGk7XG4gICAgfVxuXG4gICAgZ2V0IGl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtO1xuICAgIH1cblxuICAgIGdldCBpc09wZW5lZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBQb3BvdmVyUmVmICYmIHRoaXMuZ3JvdXBQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmdyb3VwUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBlZGl0b3I6IEVkaXRvcjtcbiAgICBhY3RpdmUgPSBmYWxzZTtcbiAgICBhY3RpdmVNZW51SXRlbTogRGVmYXVsdFRvb2xiYXJJdGVtO1xuICAgIGdyb3VwUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnZ3JvdXBUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIG1vdXNlZG93bkhhbmRsZXIoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVHcm91cE1lbnVzKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgY2xpY2tIYW5kbGUoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlciwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sc2VHcm91cCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZUdyb3VwTWVudXMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHNlR3JvdXAoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3Blbkdyb3VwKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2UoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMubWVudXNBY3RpdmUoZWRpdG9yKTtcbiAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IGFjdGl2ZUl0ZW0gPyBhY3RpdmVJdGVtIDogbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5jb2xzZUdyb3VwKCk7XG4gICAgfVxuXG4gICAgbWVudXNBY3RpdmUoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudXMuZmluZChpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvcj8uc2VsZWN0aW9uICYmIGk/LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpPy5hY3RpdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWN0aXZlQ2hhbmdlKCkge1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5tZW51c0FjdGl2ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkICYmICFhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlID0gYWN0aXZlSXRlbSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBvcGVuR3JvdXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmdyb3VwUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMuZ3JvdXBUZW1wbGF0ZSwge1xuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoZS10b29sYmFyLWdyb3VwLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBvZmZzZXQ6IDEwLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21SaWdodCcsXG4gICAgICAgICAgICBvcmlnaW46IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBQb3BvdmVyUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbHNlR3JvdXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGEgdGh5SWNvbk5hdkxpbmsgW3RoeUljb25OYXZMaW5rSWNvbl09XCJpdGVtLmljb25cIiBbdGh5VG9vbHRpcF09XCJpdGVtPy5uYW1lXCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIFt0aHlJY29uTmF2TGlua0FjdGl2ZV09XCJhY3RpdmVcIj48L2E+XG5cbjxuZy10ZW1wbGF0ZSAjZ3JvdXBUZW1wbGF0ZT5cbiAgICA8dGhlLXRvb2xiYXIgY2xhc3M9XCJncm91cFwiIFtlZGl0b3JdPVwiZWRpdG9yXCIgW3Rvb2xiYXJJdGVtc109XCJtZW51c1wiIFtpc01vcmVdPVwiZmFsc2VcIj48L3RoZS10b29sYmFyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -29,15 +29,15 @@ export class TheBaseToolbarItem {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
selectionChange(editor) {
|
|
32
|
-
var _a, _b, _c, _d, _e
|
|
32
|
+
var _a, _b, _c, _d, _e;
|
|
33
33
|
if (editor.selection) {
|
|
34
34
|
this.active = ((_a = this._toolbarItem) === null || _a === void 0 ? void 0 : _a.active) ? (_b = this._toolbarItem) === null || _b === void 0 ? void 0 : _b.active(editor) : false;
|
|
35
35
|
if ((_c = this._toolbarItem) === null || _c === void 0 ? void 0 : _c.disable) {
|
|
36
36
|
this.disabled = ((_d = this._toolbarItem) === null || _d === void 0 ? void 0 : _d.disable) ? (_e = this._toolbarItem) === null || _e === void 0 ? void 0 : _e.disable(editor) : false;
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
const
|
|
40
|
-
this.disabled =
|
|
39
|
+
const thePlugin = TheQueries.getPluginByToolbarItem(editor, this._toolbarItem);
|
|
40
|
+
this.disabled = thePlugin && TheQueries.getToolbarItemDisabled(editor, thePlugin.key);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
89
89
|
}], dropdownItemKey: [{
|
|
90
90
|
type: Input
|
|
91
91
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b29sYmFyLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29yZS90b29sYmFyLWl0ZW0vYmFzZS10b29sYmFyLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDOztBQUc1QyxNQUFNLE9BQWdCLGtCQUFrQjtJQUNwQyxJQUNJLFdBQVcsQ0FBQyxLQUFrQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFPRCxJQUFtQyxhQUFhO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBaUMsV0FBVztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFpQjs7UUFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLFNBQVMsQ0FBQSxFQUFFO1lBQ3RELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjOztRQUMxQixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3BGLElBQUksTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxPQUFPLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxZQUFZLDBDQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUMzRjtpQkFBTTtnQkFDSCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLElBQUksVUFBVSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekY7U0FDSjtJQUNMLENBQUM7O2dIQTNDaUIsa0JBQWtCO29HQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzs4QkFHRixXQUFXO3NCQURkLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU02QixhQUFhO3NCQUEvQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFJSSxXQUFXO3NCQUEzQyxXQUFXO3VCQUFDLGNBQWM7O0FBNkIvQixNQUFNLE9BQWdCLHNCQUF1QixTQUFRLGtCQUFrQjtJQUR2RTs7UUFNYSxTQUFJLEdBQWlCLFlBQVksQ0FBQyxJQUFJLENBQUM7S0FvQm5EO0lBaEJHLElBQUksbUJBQW1CO1FBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hHLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjO1FBQzFCLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsTUFBTSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1NBQzVFO0lBQ0wsQ0FBQzs7b0hBeEJpQixzQkFBc0I7d0dBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQUQzQyxTQUFTOzhCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUb29sYmFySXRlbSwgVG9vbGJhcktleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGhlQmFzZVRvb2xiYXJJdGVtIHtcbiAgICBASW5wdXQoKVxuICAgIHNldCB0b29sYmFySXRlbSh2YWx1ZTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0gPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHRvb2xiYXJJdGVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07XG4gICAgfVxuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIGFjdGl2ZTogc3RyaW5nIHwgYm9vbGVhbjtcbiAgICBfdG9vbGJhckl0ZW06IFRvb2xiYXJJdGVtO1xuICAgIGl0ZW1Nb3VzZWRvd25IYW5kbGU6IChpdGVtOiBUb29sYmFySXRlbSkgPT4gdm9pZDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKSBnZXQgZGlzYWJsZWRTdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKSBnZXQgYWN0aXZlU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICB9XG5cbiAgICBleGVjdXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuaXRlbU1vdXNlZG93bkhhbmRsZSAmJiAhdGhpcy5lZGl0b3I/LnNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgbGFzdE5vZGUgPSBUaGVRdWVyaWVzLmdldExhc3ROb2RlKHRoaXMuZWRpdG9yLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IEVkaXRvci5lbmQodGhpcy5lZGl0b3IsIGxhc3ROb2RlWzFdKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBlbmQpO1xuICAgICAgICAgICAgQW5ndWxhckVkaXRvci5mb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2UoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdGhpcy5fdG9vbGJhckl0ZW0/LmFjdGl2ZSA/IHRoaXMuX3Rvb2xiYXJJdGVtPy5hY3RpdmUoZWRpdG9yKSA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Rvb2xiYXJJdGVtPy5kaXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuX3Rvb2xiYXJJdGVtPy5kaXNhYmxlID8gdGhpcy5fdG9vbGJhckl0ZW0/LmRpc2FibGUoZWRpdG9yKSA6IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGVQbHVnaW4gPSBUaGVRdWVyaWVzLmdldFBsdWdpbkJ5VG9vbGJhckl0ZW0oZWRpdG9yLCB0aGlzLl90b29sYmFySXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoZVBsdWdpbiAmJiBUaGVRdWVyaWVzLmdldFRvb2xiYXJJdGVtRGlzYWJsZWQoZWRpdG9yLCB0aGVQbHVnaW4ua2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGhlQmFzZVRvb2xiYXJEcm9wZG93biBleHRlbmRzIFRoZUJhc2VUb29sYmFySXRlbSB7XG4gICAgYWN0aXZlTWVudUl0ZW06IFRvb2xiYXJJdGVtO1xuXG4gICAgQElucHV0KCkgbWVudXM6IFRvb2xiYXJJdGVtW107XG5cbiAgICBASW5wdXQoKSBtb2RlOiBEcm9wZG93bk1vZGUgPSBEcm9wZG93bk1vZGUudGV4dDtcblxuICAgIEBJbnB1dCgpIGRyb3Bkb3duSXRlbUtleTogVG9vbGJhcktleTtcblxuICAgIGdldCBkZWZhdWx0RHJvcGRvd25JdGVtKCkge1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5kcm9wZG93bkl0ZW1LZXkgJiYgdGhpcy5tZW51cy5maW5kKChpdGVtKSA9PiBpdGVtLmtleSA9PT0gdGhpcy5kcm9wZG93bkl0ZW1LZXkpO1xuICAgICAgICByZXR1cm4gYWN0aXZlSXRlbSA/IGFjdGl2ZUl0ZW0gOiB0aGlzLm1lbnVzWzBdO1xuICAgIH1cblxuICAgIHNlbGVjdGlvbkNoYW5nZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBzdXBlci5zZWxlY3Rpb25DaGFuZ2UoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMubWVudXMuZmluZChpID0+IHtcbiAgICAgICAgICAgIGlmIChpPy5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaT8uYWN0aXZlKGVkaXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMudG9vbGJhckl0ZW0uZHJvcGRvd25GaXhlZEljb24pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSBhY3RpdmVJdGVtID8gYWN0aXZlSXRlbSA6IHRoaXMuZGVmYXVsdERyb3Bkb3duSXRlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -38,6 +38,7 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
38
38
|
this.theOnSave = new EventEmitter();
|
|
39
39
|
this.theOnDOMEvent = new EventEmitter();
|
|
40
40
|
this.theEditorCreated = new EventEmitter();
|
|
41
|
+
this.theUploadingStatus = new EventEmitter(); // true 上传结束 false 上传中
|
|
41
42
|
this.autoScrollView = _.debounce(function (editor, scrollContainer) {
|
|
42
43
|
return autoScrollViewHandle(editor, scrollContainer);
|
|
43
44
|
}, 80);
|
|
@@ -147,6 +148,16 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
147
148
|
}
|
|
148
149
|
ngOnInit() {
|
|
149
150
|
this.initialize();
|
|
151
|
+
this.theContextService.uploadingStatus$.subscribe(isUploading => {
|
|
152
|
+
if (isUploading) {
|
|
153
|
+
this.theUploadingStatus.emit(true);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
if (this.theContextService.uploadingFiles.length === 0) {
|
|
157
|
+
this.theUploadingStatus.emit(false);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
});
|
|
150
161
|
this.onErrorHandler();
|
|
151
162
|
}
|
|
152
163
|
ngOnChanges(changes) {
|
|
@@ -369,7 +380,7 @@ export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
|
|
|
369
380
|
}
|
|
370
381
|
}
|
|
371
382
|
TheEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheEditorComponent, deps: [{ token: i1.TheContextService }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
372
|
-
TheEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheEditorComponent, selector: "the-editor, theEditor", inputs: { theOptions: "theOptions", thePlugins: "thePlugins", theGlobalToolbar: "theGlobalToolbar", theDecorate: "theDecorate", theOnError: "theOnError" }, outputs: { theOnSave: "theOnSave", theOnDOMEvent: "theOnDOMEvent", theEditorCreated: "theEditorCreated" }, host: { properties: { "class.the-editor-readonly": "theOptions?.readonly" }, classAttribute: "the-editor" }, providers: [
|
|
383
|
+
TheEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheEditorComponent, selector: "the-editor, theEditor", inputs: { theOptions: "theOptions", thePlugins: "thePlugins", theGlobalToolbar: "theGlobalToolbar", theDecorate: "theDecorate", theOnError: "theOnError" }, outputs: { theOnSave: "theOnSave", theOnDOMEvent: "theOnDOMEvent", theEditorCreated: "theEditorCreated", theUploadingStatus: "theUploadingStatus" }, host: { properties: { "class.the-editor-readonly": "theOptions?.readonly" }, classAttribute: "the-editor" }, providers: [
|
|
373
384
|
TheContextService,
|
|
374
385
|
TheColorSelectService,
|
|
375
386
|
{
|
|
@@ -414,6 +425,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
414
425
|
type: Output
|
|
415
426
|
}], theEditorCreated: [{
|
|
416
427
|
type: Output
|
|
428
|
+
}], theUploadingStatus: [{
|
|
429
|
+
type: Output
|
|
417
430
|
}], templateInstance: [{
|
|
418
431
|
type: ViewChild,
|
|
419
432
|
args: ['templateInstance', { static: true }]
|
|
@@ -424,4 +437,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
424
437
|
type: ViewChild,
|
|
425
438
|
args: ['quickInsert', { static: true }]
|
|
426
439
|
}] } });
|
|
427
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBSVosdUJBQXVCLEVBRTFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUF1QixLQUFLLEVBQUUsSUFBSSxFQUFhLE1BQU0sT0FBTyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBYyxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEyQyxXQUFXLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUNILFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLGVBQWUsRUFDZixTQUFTLEVB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SyxFQUFFLFlBQVk7d0JBQ25CLDZCQUE2QixFQUFFLHNCQUFzQjtxQkFDeEQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO3FOQUVZLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBR1AsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkvQyxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZTtnQkFJMUIsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIE5nWm9uZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWl4aW5VbnN1YnNjcmliZSwgTWl4aW5CYXNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCBpc0hvdGtleSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgRWRpdG9yLCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IsIEVsZW1lbnQsIERlc2NlbmRhbnQsIFJhbmdlLCBQYXRoLCBOb2RlRW50cnkgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgU2xhdGVFcnJvciwgd2l0aEFuZ3VsYXIgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZU9wdGlvbnMsIERvbUV2ZW50RGF0YUluZm8sIFRoZUVkaXRvciwgVGhlRGF0YU1vZGUsIFRvb2xiYXJFbnRpdHkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFya1R5cGVzLCBDTElQQk9BUkRfRk9STUFUX0tFWSwgREVGQVVMVF9TQ1JPTExfQ09OVEFJTkVSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVDb2xvclNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgYXV0b0ZvY3VzLFxuICAgIGF1dG9TY3JvbGxWaWV3SGFuZGxlLFxuICAgIGRhdGFEZXNlcmlhbGl6ZSxcbiAgICBkYXRhU2VyaWFsaXppbmcsXG4gICAgaWRDcmVhdG9yLFxuICAgIHNldEVkaXRvclVVSUQsXG4gICAgY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgXyB9IGZyb20gJy4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IFRoZVF1aWNrSW5zZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgd2l0aFRoZWlhLCBjcmVhdGVUb29sYmFyIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IGludGVybmFsUGx1Z2lucyB9IGZyb20gJy4vcGx1Z2lucyc7XG5pbXBvcnQgeyBzaG9ydGN1dHMgfSBmcm9tICcuL3Nob3J0Y3V0cyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVQbHVnaW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcGx1Z2lucy9wbHVnaW5zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtZWRpdG9yLCB0aGVFZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS1lZGl0b3InLFxuICAgICAgICAnW2NsYXNzLnRoZS1lZGl0b3ItcmVhZG9ubHldJzogJ3RoZU9wdGlvbnM/LnJlYWRvbmx5J1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdGhlT3B0aW9uczogVGhlT3B0aW9ucztcblxuICAgIEBJbnB1dCgpIHRoZVBsdWdpbnM6IFRoZVBsdWdpbltdID0gW107XG5cbiAgICBASW5wdXQoKSB0aGVHbG9iYWxUb29sYmFyPzogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHRoZURlY29yYXRlOiAoZWRpdG9yOiBUaGVFZGl0b3IsIG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgQElucHV0KCkgdGhlT25FcnJvcj86IChlcnJvcjogU2xhdGVFcnJvcikgPT4gdm9pZDtcblxuICAgIEBPdXRwdXQoKSB0aGVPblNhdmU6IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+KCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlT25ET01FdmVudDogRXZlbnRFbWl0dGVyPHsgbmF0aXZlRXZlbnQ6IEV2ZW50OyBkYXRhPzogRG9tRXZlbnREYXRhSW5mbyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVFZGl0b3JDcmVhdGVkOiBFdmVudEVtaXR0ZXI8RWRpdG9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlSW5zdGFuY2UnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRlbXBsYXRlSW5zdGFuY2U6IFRoZVRlbXBsYXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnZ2xvYmFsVG9vbGJhcicpXG4gICAgZ2xvYmFsVG9vbGJhckluc3RhbmNlOiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgncXVpY2tJbnNlcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHF1aWNrSW5zZXJ0SW5zdGFuY2U6IFRoZVF1aWNrSW5zZXJ0Q29tcG9uZW50O1xuXG4gICAgdG9vbGJhckVudGl0eTogVG9vbGJhckVudGl0eTtcblxuICAgIGVkaXRvcjogVGhlRWRpdG9yO1xuXG4gICAgZWRpdG9yVmFsdWU6IERlc2NlbmRhbnRbXTtcblxuICAgIGdsb2JhbFRvb2xiYXJDbGFzczogc3RyaW5nW107XG5cbiAgICBkZWNvcmF0ZTogKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgZ2V0IHRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZSgpOiBUaGVUb29sYmFyQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlR2xvYmFsVG9vbGJhciA/IHRoaXMudGhlR2xvYmFsVG9vbGJhciA6IHRoaXMuZ2xvYmFsVG9vbGJhckluc3RhbmNlO1xuICAgIH1cblxuICAgIGdldCBtYXhIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZU9wdGlvbnM/Lm1heEhlaWdodCA/IGAke3RoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0fXB4YCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IHF1aWNrVG9vbGJhckl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyRW50aXR5Py5xdWljaztcbiAgICB9XG5cbiAgICBhdXRvU2Nyb2xsVmlldyA9IF8uZGVib3VuY2UoZnVuY3Rpb24gKGVkaXRvcjogRWRpdG9yLCBzY3JvbGxDb250YWluZXI6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXV0b1Njcm9sbFZpZXdIYW5kbGUoZWRpdG9yLCBzY3JvbGxDb250YWluZXIpO1xuICAgIH0sIDgwKTtcblxuICAgIGVsZW1lbnRUb0h0bWw6IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nPiA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5vbkVycm9ySGFuZGxlcigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGNoYW5nZXMudGhlT3B0aW9ucztcblxuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuY3VycmVudFZhbHVlPy5yZWFkb25seSAhPT0gb3B0aW9ucy5wcmV2aW91c1ZhbHVlPy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUF1dG9Gb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWyd0aGVEZWNvcmF0ZSddKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lZGl0b3I/LnNlbGVjdGlvbiAmJiAob3B0aW9ucz8uY3VycmVudFZhbHVlPy5yZWFkb25seSB8fCBvcHRpb25zPy5jdXJyZW50VmFsdWU/LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZXNlbGVjdCh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UGx1Z2lucyA9IGludGVybmFsUGx1Z2lucygpO1xuICAgICAgICBjb25zdCBwbHVnaW5zID0gWy4uLmRlZmF1bHRQbHVnaW5zLCAuLi50aGlzLnRoZVBsdWdpbnNdO1xuICAgICAgICB0aGlzLmVkaXRvciA9IHdpdGhUaGVpYSh3aXRoSGlzdG9yeSh3aXRoQW5ndWxhcihjcmVhdGVFZGl0b3IoKSwgQ0xJUEJPQVJEX0ZPUk1BVF9LRVkpKSwgcGx1Z2lucyk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEZWNvcmF0ZSgpO1xuICAgICAgICB0aGlzLmVkaXRvci5kaXNhYmxlZCA9IHRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuZWRpdG9yLmV4dHJhRWxlbWVudE9wdGlvbnMgPSB0aGlzLnRoZU9wdGlvbnM/LmV4dHJhRWxlbWVudE9wdGlvbnM7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9wdGlvbnMgPSB0aGlzLnRoZU9wdGlvbnM7XG4gICAgICAgIHNldEVkaXRvclVVSUQodGhpcy5lZGl0b3IsIGlkQ3JlYXRvcigpKTtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5pbml0aWFsaXplKHtcbiAgICAgICAgICAgIHRoZU9wdGlvbnM6IHRoaXMudGhlT3B0aW9ucyxcbiAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvb2xiYXJDYWxjdWxhdGUoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBZb3UgbmVlZCB0byB3YWl0IGZvciB0aGUgZWRpdG9yIHJlbmRlcmluZyB0byBjb21wbGV0ZVxuICAgICAgICAgICAgLy8gYmVmb3JlIHRyaWdnZXJpbmcgdGhlIGV4dGVybmFsIHRvb2xiYXIgYXNzaWdubWVudCBkZXRlY3Rpb25cbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsVG9vbGJhckluaXQoKTtcbiAgICAgICAgICAgIHRoaXMudGhlRWRpdG9yQ3JlYXRlZC5lbWl0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZU9wdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnRoZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1vZGU6IFRoZURhdGFNb2RlLmh0bWxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRoZU9wdGlvbnMubW9kZSkge1xuICAgICAgICAgICAgdGhpcy50aGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMudGhlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBtb2RlOiBUaGVEYXRhTW9kZS5odG1sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXBwbHlBdXRvRm9jdXMoKSB7XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zPy5kaXNhYmxlZCAmJiAhdGhpcy50aGVPcHRpb25zPy5yZWFkb25seSkge1xuICAgICAgICAgICAgYXV0b0ZvY3VzKHRoaXMuZWRpdG9yLCB0aGlzLnRoZU9wdGlvbnM/LmF1dG9Gb2N1cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b29sYmFyQ2FsY3VsYXRlKCkge1xuICAgICAgICBjb25zdCB7IGdsb2JhbFRvb2xiYXJDbGFzcywgdG9vbGJhckVudGl0eSB9ID0gY3JlYXRlVG9vbGJhcih0aGlzLmVkaXRvciwgdGhpcz8udGhlT3B0aW9ucz8udG9vbGJhcik7XG4gICAgICAgIHRoaXMuZ2xvYmFsVG9vbGJhckNsYXNzID0gZ2xvYmFsVG9vbGJhckNsYXNzO1xuICAgICAgICB0aGlzLnRvb2xiYXJFbnRpdHkgPSB0b29sYmFyRW50aXR5O1xuICAgIH1cblxuICAgIGdsb2JhbFRvb2xiYXJJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50aGVHbG9iYWxUb29sYmFyKSB7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnRvb2xiYXJJdGVtcyA9IHRoaXMudG9vbGJhckVudGl0eS5nbG9iYWw7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5jb250YWluZXJDbGFzcyA9IHRoaXMuZ2xvYmFsVG9vbGJhckNsYXNzO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuYWxpZ24gPSB0aGlzPy50aGVPcHRpb25zPy50b29sYmFyPy5hbGlnbjtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnNldFRvb2xiYXJDbGFzcygpO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UucmVuZGVyVG9vbGJhclZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IERlc2NlbmRhbnRbXSkge1xuICAgICAgICBjb25zdCBkYXRhID0gZGF0YURlc2VyaWFsaXplKHRoaXMudGhlT3B0aW9ucz8ubW9kZSwgdmFsdWUpO1xuICAgICAgICAvLyBkYXRhLWRlc2VyaWFsaXplXG4gICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSBkYXRhO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgdmFsdWVDaGFuZ2UodmFsdWU6IERlc2NlbmRhbnRbXSkge1xuICAgICAgICBjb25zdCBpc0VkaXRhYmxlID0gIXRoaXMudGhlT3B0aW9ucz8ucmVhZG9ubHkgJiYgIXRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQ7XG5cbiAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2U/LnNlbGVjdGlvbkNoYW5nZSh0aGlzLmVkaXRvcik7XG5cbiAgICAgICAgLy8gcXVpY2sgaW5zZXJ0IGJ1dHRvblxuICAgICAgICBpZiAoaXNFZGl0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5xdWlja0luc2VydEluc3RhbmNlPy5jaGVja1N0YXR1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYXV0byBzY3JvbGwgdmlld1xuICAgICAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSB0aGlzLnRoZU9wdGlvbnM/LnNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHQ7XG4gICAgICAgIGlmIChpc0VkaXRhYmxlICYmIChzY3JvbGxDb250YWluZXIgfHwgbWF4SGVpZ2h0KSkge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gbWF4SGVpZ2h0ID8gREVGQVVMVF9TQ1JPTExfQ09OVEFJTkVSIDogc2Nyb2xsQ29udGFpbmVyO1xuICAgICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsVmlldyh0aGlzLmVkaXRvciwgY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVkaXRvclZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLnNlcmlhbGl6aW5nVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHNlcmlhbGl6aW5nVmFsdWUodmFsdWU6IERlc2NlbmRhbnRbXSk6IHN0cmluZyB8IERlc2NlbmRhbnRbXSB7XG4gICAgICAgIGlmICh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUgPT09IFRoZURhdGFNb2RlLmh0bWwpIHtcbiAgICAgICAgICAgIGxldCBodG1sVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudEh0bWwgPSB0aGlzLmVsZW1lbnRUb0h0bWwuZ2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50SHRtbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNlcmlhbGl6aW5nXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRIdG1sID0gZGF0YVNlcmlhbGl6aW5nKHRoaXMudGhlT3B0aW9ucz8ubW9kZSwgW2VsZW1lbnRdKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50VG9IdG1sLnNldChlbGVtZW50LCBlbGVtZW50SHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaHRtbFZhbHVlICs9IGVsZW1lbnRIdG1sO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaHRtbFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBvbkVycm9ySGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub25FcnJvciA9IChlcnJvckRhdGE6IFNsYXRlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uRXJyb3IoZXJyb3JEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvckRhdGEubmF0aXZlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVJbnN0YW5jZS5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmVkaXRvci5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50ID8gY29tcG9uZW50IDogdGVtcGxhdGU7XG4gICAgfTtcblxuICAgIHJlbmRlckxlYWYgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsZWFmID0gdGhpcy5lZGl0b3IucmVuZGVyTGVhZih0ZXh0KTtcbiAgICAgICAgcmV0dXJuIGxlYWYgPyBsZWFmIDogbnVsbDtcbiAgICB9O1xuXG4gICAgcmVuZGVyVGV4dCA9ICh0ZXh0OiBUZXh0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIE1hcmtUeXBlcykge1xuICAgICAgICAgICAgaWYgKHRleHRbTWFya1R5cGVzW2tleV1dKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRoZVRleHRDb21wb25lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHQudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBnZW5lcmF0ZURlY29yYXRlKCkge1xuICAgICAgICB0aGlzLmRlY29yYXRlID0gKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWNvcmF0aW9ucyA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aGVEZWNvcmF0ZSkge1xuICAgICAgICAgICAgICAgIGRlY29yYXRpb25zLnB1c2goLi4udGhpcy50aGVEZWNvcmF0ZSh0aGlzLmVkaXRvciwgbm9kZUVudHJ5KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0aW9ucztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBvbktleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgc2hvcnRjdXRzKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBrZXk6IGV2ZW50LmtleVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSG90a2V5KCdtb2QrcycsIGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uU2F2ZS5lbWl0KHRoaXMuZWRpdG9yVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0hvdGtleSgnbW9kK2EnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgQW5ndWxhckVkaXRvci5vbktleWRvd24odGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICB9O1xuXG4gICAgbW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVkaXRvcik7XG4gICAgICAgIGNvbnN0IHJlY3RFZGl0YWJsZSA9IGVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC54LCBldmVudC55KTtcbiAgICAgICAgaWYgKCFlZGl0YWJsZUVsZW1lbnQuaXNFcXVhbE5vZGUoYWJzb2x1dGVFbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRWxlbWVudCA9IGFic29sdXRlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICAgICAgaWYgKCFibG9ja0NhcmRFbGVtZW50KSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgcGFkZGluZ1JpZ2h0IH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0YWJsZUVsZW1lbnQsIG51bGwpO1xuICAgICAgICBjb25zdCBwYWRkaW5nUmlnaHRQaXhlbHMgPSBjb2VyY2VQaXhlbHNGcm9tQ3NzVmFsdWUocGFkZGluZ1JpZ2h0KTtcbiAgICAgICAgY29uc3QgZmFrZVJpZ2h0WCA9IHJlY3RFZGl0YWJsZS5yaWdodCAtIHBhZGRpbmdSaWdodFBpeGVscyAtIDUwO1xuICAgICAgICBsZXQgcmVsYXRpdmVFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChmYWtlUmlnaHRYLCBldmVudC55KTtcbiAgICAgICAgbGV0IHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudCA9IHJlbGF0aXZlRWxlbWVudC5jbG9zZXN0KCcuc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICBpZiAocmVsYXRpdmVCbG9ja0NhcmRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gcmVjdEVkaXRhYmxlLnggKyByZWN0RWRpdGFibGUud2lkdGggLyAyO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkodGhpcy5lZGl0b3IsIHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCk7XG4gICAgICAgICAgICBpZiAoYmxvY2tDYXJkRW50cnkgJiYgdGhpcy5lZGl0b3IuaXNCbG9ja0NhcmQoYmxvY2tDYXJkRW50cnlbMF0pKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQodGhpcy5lZGl0b3IsIGJsb2NrQ2FyZEVudHJ5WzBdLCB7IGRpcmVjdGlvbjogZXZlbnQueCA8IGNlbnRlclggPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlU2VsZWN0QWxsKCkge1xuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvci5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0RW5kU2VsZWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSBSYW5nZS5lZGdlcyh0aGlzLmVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25SYW5nZSA9IEVkaXRvci5yYW5nZSh0aGlzLmVkaXRvciwgc3RhcnQsIGVuZCk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckJsb2NrcyA9IFRoZVF1ZXJpZXMuZ2V0Q29udGFpbmVyQmxvY2tzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJCbG9ja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIFtub2RlXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUodGhpcy5lZGl0b3IsIGNvbnRhaW5lckJsb2Nrc1tpXSk7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIHBhdGhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1N0YXJ0UGFyZW50ID0gUGF0aC5lcXVhbHMocGF0aCwgc3RhcnQucGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRW5kUGFyZW50ID0gUGF0aC5lcXVhbHMocGF0aCwgZW5kLnBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFydFBhcmVudCAmJiBpc0VuZFBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlUmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVJhbmdlLmVxdWFscyhub2RlUmFuZ2UsIHNlbGVjdGlvblJhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIG5vZGVSYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvbkNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25DbGljayh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhUGFzdGUgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRleHRBbmRKU09OKGV2ZW50LmNsaXBib2FyZERhdGEpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUJlZm9yZUlucHV0ID0gKFxuICAgICAgICBldmVudDogRXZlbnQgJiB7XG4gICAgICAgICAgICBpbnB1dFR5cGU6IHN0cmluZztcbiAgICAgICAgICAgIGRhdGE6IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgICBkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciB8IG51bGw7XG4gICAgICAgIH1cbiAgICApID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICBpbnB1dFR5cGU6IGV2ZW50LmlucHV0VHlwZSxcbiAgICAgICAgICAgIHRleHQ6IChldmVudC5kYXRhIHx8IGV2ZW50LmRhdGFUcmFuc2ZlcikgYXMgc3RyaW5nXG4gICAgICAgIH07XG4gICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICdpbnNlcnRGcm9tUGFzdGUnKSB7XG4gICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUZXh0QW5kSlNPTigoZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhVHJhbnNmZXIpIGFzIERhdGFUcmFuc2ZlcilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFCbHVyID0gKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFGb2N1cyA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUN1dCA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUNvcHkgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhQ29tcG9zaXRpb25TdGFydCA9IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge307XG5cbiAgICBvblNsYUNvbXBvc2l0aW9uRW5kID0gKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFEcmFnT3ZlciA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7fTtcblxuICAgIG9uRHJvcCA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZ2V0VGV4dEFuZEpTT04oZGF0YTogRGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIGNvbnN0IGZyYWdtZW50ID0gZGF0YS5nZXREYXRhKGBhcHBsaWNhdGlvbi8ke0NMSVBCT0FSRF9GT1JNQVRfS0VZfWApO1xuICAgICAgICBsZXQganNvbiA9IFtdO1xuICAgICAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cuYXRvYihmcmFnbWVudCkpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gZGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBqc29uLFxuICAgICAgICAgICAgdGV4dFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjx0aGUtdG9vbGJhclxuICAgICpuZ0lmPVwiIXRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGVHbG9iYWxUb29sYmFyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICd0aGUtdG9vbGJhci1kaXNhYmxlZCc6IHRoZU9wdGlvbnM/LmRpc2FibGVkXG4gICAgfVwiXG4gICAgI2dsb2JhbFRvb2xiYXJcbiAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFyRW50aXR5Lmdsb2JhbFwiXG4gICAgW2NvbnRhaW5lckNsYXNzXT1cImdsb2JhbFRvb2xiYXJDbGFzc1wiXG4gICAgW2FsaWduXT1cInRoZU9wdGlvbnM/LnRvb2xiYXI/LmFsaWduXCJcbj48L3RoZS10b29sYmFyPlxuXG48ZGl2XG4gICAgY2xhc3M9XCJ0aGUtZWRpdGFibGUtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICd0aGUtZWRpdG9yLWRpc2FibGVkJzogdGhlT3B0aW9ucz8uZGlzYWJsZWQsXG4gICAgICAgICdtYXgtaGVpZ2h0JzogbWF4SGVpZ2h0XG4gICAgfVwiXG4gICAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IG1heEhlaWdodCB9XCJcbj5cbiAgICA8c2xhdGUtZWRpdGFibGVcbiAgICAgICAgY2xhc3M9XCJ0aGUtZWRpdG9yLXR5cG9cIlxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFtuZ01vZGVsXT1cImVkaXRvclZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkZWNvcmF0ZV09XCJkZWNvcmF0ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aGVPcHRpb25zPy5wbGFjZWhvbGRlclwiXG4gICAgICAgIFtwbGFjZWhvbGRlckRlY29yYXRlXT1cInRoZU9wdGlvbnM/LnBsYWNlaG9sZGVyRGVjb3JhdGUgPyB0aGVPcHRpb25zPy5wbGFjZWhvbGRlckRlY29yYXRlIDogbnVsbFwiXG4gICAgICAgIFtyZW5kZXJFbGVtZW50XT1cInJlbmRlckVsZW1lbnRcIlxuICAgICAgICBbcmVuZGVyVGV4dF09XCJyZW5kZXJUZXh0XCJcbiAgICAgICAgW3JlbmRlckxlYWZdPVwicmVuZGVyTGVhZlwiXG4gICAgICAgIFtyZWFkb25seV09XCJ0aGVPcHRpb25zPy5yZWFkb25seSB8fCB0aGVPcHRpb25zPy5kaXNhYmxlZFwiXG4gICAgICAgIFtrZXlkb3duXT1cIm9uS2V5RG93blwiXG4gICAgICAgIFtjbGlja109XCJvbkNsaWNrXCJcbiAgICAgICAgW3Bhc3RlXT1cIm9uU2xhUGFzdGVcIlxuICAgICAgICBbYmVmb3JlSW5wdXRdPVwib25TbGFCZWZvcmVJbnB1dFwiXG4gICAgICAgIFtibHVyXT1cIm9uU2xhQmx1clwiXG4gICAgICAgIFtmb2N1c109XCJvblNsYUZvY3VzXCJcbiAgICAgICAgW2NvcHldPVwib25TbGFDb3B5XCJcbiAgICAgICAgW2N1dF09XCJvblNsYUN1dFwiXG4gICAgICAgIFtpc1N0cmljdERlY29yYXRlXT1cImZhbHNlXCJcbiAgICAgICAgW2NvbXBvc2l0aW9uU3RhcnRdPVwib25TbGFDb21wb3NpdGlvblN0YXJ0XCJcbiAgICAgICAgW2NvbXBvc2l0aW9uRW5kXT1cIm9uU2xhQ29tcG9zaXRpb25FbmRcIlxuICAgICAgICBbZHJhZ1N0YXJ0XT1cIm9uU2xhRHJhZ1N0YXJ0XCJcbiAgICAgICAgW2RyYWdPdmVyXT1cIm9uU2xhRHJhZ092ZXJcIlxuICAgICAgICBbZHJvcF09XCJvbkRyb3BcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm1vdXNlZG93bigkZXZlbnQpXCJcbiAgICA+PC9zbGF0ZS1lZGl0YWJsZT5cbiAgICA8dGhlLWlubGluZS10b29sYmFyXG4gICAgICAgICpuZ0lmPVwiIXRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmIHRoZU9wdGlvbnM/LmlubGluZVRvb2JhclZpc2libGVcIlxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckVudGl0eS5pbmxpbmVcIlxuICAgID48L3RoZS1pbmxpbmUtdG9vbGJhcj5cbiAgICA8ZGl2XG4gICAgICAgICNxdWlja0luc2VydFxuICAgICAgICB0aGVRdWlja0luc2VydFxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFtxdWlja1Rvb2xiYXJJdGVtc109XCJxdWlja1Rvb2xiYXJJdGVtc1wiXG4gICAgICAgIFtpc1Zpc2libGVdPVwidGhlT3B0aW9ucz8ucXVpY2tJbnNlcnRWaXNpYmxlXCJcbiAgICA+PC9kaXY+XG4gICAgPHRoZS10ZW1wbGF0ZSAjdGVtcGxhdGVJbnN0YW5jZT48L3RoZS10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBSVosdUJBQXVCLEVBRTFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUF1QixLQUFLLEVBQUUsSUFBSSxFQUFhLE1BQU0sT0FBTyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBYyxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEyQyxXQUFXLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUNILFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLGVBQWUsRUFDZixTQUFTLEVB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LEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixzYUMzREwsMm1FQThEQTs0RkRJYSxrQkFBa0I7a0JBbEI5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDUCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckI7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsNkJBQTZCLEVBQUUsc0JBQXNCO3FCQUN4RDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7cU5BRVksVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR1AsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkvQyxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZTtnQkFJMUIsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIE5nWm9uZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWl4aW5VbnN1YnNjcmliZSwgTWl4aW5CYXNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCBpc0hvdGtleSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgRWRpdG9yLCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IsIEVsZW1lbnQsIERlc2NlbmRhbnQsIFJhbmdlLCBQYXRoLCBOb2RlRW50cnkgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgU2xhdGVFcnJvciwgd2l0aEFuZ3VsYXIgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZU9wdGlvbnMsIERvbUV2ZW50RGF0YUluZm8sIFRoZUVkaXRvciwgVGhlRGF0YU1vZGUsIFRvb2xiYXJFbnRpdHkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFya1R5cGVzLCBDTElQQk9BUkRfRk9STUFUX0tFWSwgREVGQVVMVF9TQ1JPTExfQ09OVEFJTkVSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVDb2xvclNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgYXV0b0ZvY3VzLFxuICAgIGF1dG9TY3JvbGxWaWV3SGFuZGxlLFxuICAgIGRhdGFEZXNlcmlhbGl6ZSxcbiAgICBkYXRhU2VyaWFsaXppbmcsXG4gICAgaWRDcmVhdG9yLFxuICAgIHNldEVkaXRvclVVSUQsXG4gICAgY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgXyB9IGZyb20gJy4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IFRoZVF1aWNrSW5zZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgd2l0aFRoZWlhLCBjcmVhdGVUb29sYmFyIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IGludGVybmFsUGx1Z2lucyB9IGZyb20gJy4vcGx1Z2lucyc7XG5pbXBvcnQgeyBzaG9ydGN1dHMgfSBmcm9tICcuL3Nob3J0Y3V0cyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVQbHVnaW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcGx1Z2lucy9wbHVnaW5zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtZWRpdG9yLCB0aGVFZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS1lZGl0b3InLFxuICAgICAgICAnW2NsYXNzLnRoZS1lZGl0b3ItcmVhZG9ubHldJzogJ3RoZU9wdGlvbnM/LnJlYWRvbmx5J1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdGhlT3B0aW9uczogVGhlT3B0aW9ucztcblxuICAgIEBJbnB1dCgpIHRoZVBsdWdpbnM6IFRoZVBsdWdpbltdID0gW107XG5cbiAgICBASW5wdXQoKSB0aGVHbG9iYWxUb29sYmFyPzogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHRoZURlY29yYXRlOiAoZWRpdG9yOiBUaGVFZGl0b3IsIG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgQElucHV0KCkgdGhlT25FcnJvcj86IChlcnJvcjogU2xhdGVFcnJvcikgPT4gdm9pZDtcblxuICAgIEBPdXRwdXQoKSB0aGVPblNhdmU6IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+KCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlT25ET01FdmVudDogRXZlbnRFbWl0dGVyPHsgbmF0aXZlRXZlbnQ6IEV2ZW50OyBkYXRhPzogRG9tRXZlbnREYXRhSW5mbyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVFZGl0b3JDcmVhdGVkOiBFdmVudEVtaXR0ZXI8RWRpdG9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVVcGxvYWRpbmdTdGF0dXM6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdHJ1ZSDkuIrkvKDnu5PmnZ8gZmFsc2Ug5LiK5Lyg5LitXG5cbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZUluc3RhbmNlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB0ZW1wbGF0ZUluc3RhbmNlOiBUaGVUZW1wbGF0ZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2dsb2JhbFRvb2xiYXInKVxuICAgIGdsb2JhbFRvb2xiYXJJbnN0YW5jZTogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ3F1aWNrSW5zZXJ0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBxdWlja0luc2VydEluc3RhbmNlOiBUaGVRdWlja0luc2VydENvbXBvbmVudDtcblxuICAgIHRvb2xiYXJFbnRpdHk6IFRvb2xiYXJFbnRpdHk7XG5cbiAgICBlZGl0b3I6IFRoZUVkaXRvcjtcblxuICAgIGVkaXRvclZhbHVlOiBEZXNjZW5kYW50W107XG5cbiAgICBnbG9iYWxUb29sYmFyQ2xhc3M6IHN0cmluZ1tdO1xuXG4gICAgZGVjb3JhdGU6IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4gUmFuZ2VbXTtcblxuICAgIGdldCB0aGVHbG9iYWxUb29sYmFySW5zdGFuY2UoKTogVGhlVG9vbGJhckNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgPyB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgOiB0aGlzLmdsb2JhbFRvb2xiYXJJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgbWF4SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHQgPyBgJHt0aGlzLnRoZU9wdGlvbnM/Lm1heEhlaWdodH1weGAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBxdWlja1Rvb2xiYXJJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhckVudGl0eT8ucXVpY2s7XG4gICAgfVxuXG4gICAgYXV0b1Njcm9sbFZpZXcgPSBfLmRlYm91bmNlKGZ1bmN0aW9uIChlZGl0b3I6IEVkaXRvciwgc2Nyb2xsQ29udGFpbmVyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGF1dG9TY3JvbGxWaWV3SGFuZGxlKGVkaXRvciwgc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB9LCA4MCk7XG5cbiAgICBlbGVtZW50VG9IdG1sOiBXZWFrTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aGVDb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5zdWJzY3JpYmUoaXNVcGxvYWRpbmcgPT4ge1xuICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVVcGxvYWRpbmdTdGF0dXMuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVXBsb2FkaW5nU3RhdHVzLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25FcnJvckhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBjaGFuZ2VzLnRoZU9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgIT09IG9wdGlvbnMucHJldmlvdXNWYWx1ZT8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sndGhlRGVjb3JhdGUnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURlY29yYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5zZWxlY3Rpb24gJiYgKG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgfHwgb3B0aW9ucz8uY3VycmVudFZhbHVlPy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFBsdWdpbnMgPSBpbnRlcm5hbFBsdWdpbnMoKTtcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFsuLi5kZWZhdWx0UGx1Z2lucywgLi4udGhpcy50aGVQbHVnaW5zXTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSB3aXRoVGhlaWEod2l0aEhpc3Rvcnkod2l0aEFuZ3VsYXIoY3JlYXRlRWRpdG9yKCksIENMSVBCT0FSRF9GT1JNQVRfS0VZKSksIHBsdWdpbnMpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuICAgICAgICB0aGlzLmVkaXRvci5leHRyYUVsZW1lbnRPcHRpb25zID0gdGhpcy50aGVPcHRpb25zPy5leHRyYUVsZW1lbnRPcHRpb25zO1xuICAgICAgICB0aGlzLmVkaXRvci5vcHRpb25zID0gdGhpcy50aGVPcHRpb25zO1xuICAgICAgICBzZXRFZGl0b3JVVUlEKHRoaXMuZWRpdG9yLCBpZENyZWF0b3IoKSk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB0aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyQ2FsY3VsYXRlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGVkaXRvciByZW5kZXJpbmcgdG8gY29tcGxldGVcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBleHRlcm5hbCB0b29sYmFyIGFzc2lnbm1lbnQgZGV0ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJJbml0KCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVPcHRpb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy50aGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtb2RlOiBUaGVEYXRhTW9kZS5odG1sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zLm1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgbW9kZTogVGhlRGF0YU1vZGUuaHRtbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5QXV0b0ZvY3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQgJiYgIXRoaXMudGhlT3B0aW9ucz8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1cyh0aGlzLmVkaXRvciwgdGhpcy50aGVPcHRpb25zPy5hdXRvRm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbGJhckNhbGN1bGF0ZSgpIHtcbiAgICAgICAgY29uc3QgeyBnbG9iYWxUb29sYmFyQ2xhc3MsIHRvb2xiYXJFbnRpdHkgfSA9IGNyZWF0ZVRvb2xiYXIodGhpcy5lZGl0b3IsIHRoaXM/LnRoZU9wdGlvbnM/LnRvb2xiYXIpO1xuICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcyA9IGdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgdGhpcy50b29sYmFyRW50aXR5ID0gdG9vbGJhckVudGl0eTtcbiAgICB9XG5cbiAgICBnbG9iYWxUb29sYmFySW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGhlR2xvYmFsVG9vbGJhcikge1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS50b29sYmFySXRlbXMgPSB0aGlzLnRvb2xiYXJFbnRpdHkuZ2xvYmFsO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuY29udGFpbmVyQ2xhc3MgPSB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmFsaWduID0gdGhpcz8udGhlT3B0aW9ucz8udG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFEZXNlcmlhbGl6ZSh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHZhbHVlQ2hhbmdlKHZhbHVlOiBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgaXNFZGl0YWJsZSA9ICF0aGlzLnRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuXG4gICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlPy5zZWxlY3Rpb25DaGFuZ2UodGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIC8vIHF1aWNrIGluc2VydCBidXR0b25cbiAgICAgICAgaWYgKGlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnRJbnN0YW5jZT8uY2hlY2tTdGF0dXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGF1dG8gc2Nyb2xsIHZpZXdcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy50aGVPcHRpb25zPy5zY3JvbGxDb250YWluZXI7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0O1xuICAgICAgICBpZiAoaXNFZGl0YWJsZSAmJiAoc2Nyb2xsQ29udGFpbmVyIHx8IG1heEhlaWdodCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1heEhlaWdodCA/IERFRkFVTFRfU0NST0xMX0NPTlRBSU5FUiA6IHNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbFZpZXcodGhpcy5lZGl0b3IsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemluZ1ZhbHVlKHZhbHVlOiBEZXNjZW5kYW50W10pOiBzdHJpbmcgfCBEZXNjZW5kYW50W10ge1xuICAgICAgICBpZiAodGhpcy50aGVPcHRpb25zPy5tb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRIdG1sID0gdGhpcy5lbGVtZW50VG9IdG1sLmdldChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEh0bWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50SHRtbCA9IGRhdGFTZXJpYWxpemluZyh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIFtlbGVtZW50XSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBodG1sVmFsdWUgKz0gZWxlbWVudEh0bWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFRvSHRtbC5zZXQoZWxlbWVudCwgZWxlbWVudEh0bWwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25FcnJvckhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uRXJyb3IgPSAoZXJyb3JEYXRhOiBTbGF0ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aGVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPbkVycm9yKGVycm9yRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlSW5zdGFuY2UucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5lZGl0b3IucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudCA/IGNvbXBvbmVudCA6IHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZW5kZXJMZWFmID0gKHRleHQ6IFRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZiA9IHRoaXMuZWRpdG9yLnJlbmRlckxlYWYodGV4dCk7XG4gICAgICAgIHJldHVybiBsZWFmID8gbGVhZiA6IG51bGw7XG4gICAgfTtcblxuICAgIHJlbmRlclRleHQgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBNYXJrVHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0W01hcmtUeXBlc1trZXldXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUaGVUZXh0Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0LnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2VuZXJhdGVEZWNvcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0ZSA9IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjb3JhdGlvbnMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlRGVjb3JhdGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucy5wdXNoKC4uLnRoaXMudGhlRGVjb3JhdGUodGhpcy5lZGl0b3IsIG5vZGVFbnRyeSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25LZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHNob3J0Y3V0cyh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAga2V5OiBldmVudC5rZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hvdGtleSgnbW9kK3MnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPblNhdmUuZW1pdCh0aGlzLmVkaXRvclZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgfTtcblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZWN0RWRpdGFibGUgPSBlZGl0YWJsZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGFic29sdXRlRWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7XG4gICAgICAgIGlmICghZWRpdGFibGVFbGVtZW50LmlzRXF1YWxOb2RlKGFic29sdXRlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSBhYnNvbHV0ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGlmICghYmxvY2tDYXJkRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHBhZGRpbmdSaWdodCB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdGFibGVFbGVtZW50LCBudWxsKTtcbiAgICAgICAgY29uc3QgcGFkZGluZ1JpZ2h0UGl4ZWxzID0gY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlKHBhZGRpbmdSaWdodCk7XG4gICAgICAgIGNvbnN0IGZha2VSaWdodFggPSByZWN0RWRpdGFibGUucmlnaHQgLSBwYWRkaW5nUmlnaHRQaXhlbHMgLSA1MDtcbiAgICAgICAgbGV0IHJlbGF0aXZlRWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZmFrZVJpZ2h0WCwgZXZlbnQueSk7XG4gICAgICAgIGxldCByZWxhdGl2ZUJsb2NrQ2FyZEVsZW1lbnQgPSByZWxhdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgaWYgKHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyWCA9IHJlY3RFZGl0YWJsZS54ICsgcmVjdEVkaXRhYmxlLndpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVudHJ5ID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KHRoaXMuZWRpdG9yLCByZWxhdGl2ZUJsb2NrQ2FyZEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVudHJ5ICYmIHRoaXMuZWRpdG9yLmlzQmxvY2tDYXJkKGJsb2NrQ2FyZEVudHJ5WzBdKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5tb3ZlQmxvY2tDYXJkKHRoaXMuZWRpdG9yLCBibG9ja0NhcmRFbnRyeVswXSwgeyBkaXJlY3Rpb246IGV2ZW50LnggPCBjZW50ZXJYID8gJ2xlZnQnIDogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVNlbGVjdEFsbCgpIHtcbiAgICAgICAgbGV0IG5vZGU7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldEVuZFNlbGVjdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gUmFuZ2UuZWRnZXModGhpcy5lZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uUmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy5lZGl0b3IsIHN0YXJ0LCBlbmQpO1xuICAgICAgICBjb25zdCBjb250YWluZXJCbG9ja3MgPSBUaGVRdWVyaWVzLmdldENvbnRhaW5lckJsb2Nrcyh0aGlzLmVkaXRvcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGFpbmVyQmxvY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBbbm9kZV0gPSBUaGVRdWVyaWVzLmdldE5vZGVzQnlUeXBlKHRoaXMuZWRpdG9yLCBjb250YWluZXJCbG9ja3NbaV0pO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBwYXRoXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdGFydFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIHN0YXJ0LnBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VuZFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIGVuZC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhcnRQYXJlbnQgJiYgaXNFbmRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFSYW5nZS5lcXVhbHMobm9kZVJhbmdlLCBzZWxlY3Rpb25SYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBub2RlUmFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25DbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBBbmd1bGFyRWRpdG9yLm9uQ2xpY2sodGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYVBhc3RlID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUZXh0QW5kSlNPTihldmVudC5jbGlwYm9hcmREYXRhKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFCZWZvcmVJbnB1dCA9IChcbiAgICAgICAgZXZlbnQ6IEV2ZW50ICYge1xuICAgICAgICAgICAgaW5wdXRUeXBlOiBzdHJpbmc7XG4gICAgICAgICAgICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsO1xuICAgICAgICB9XG4gICAgKSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgaW5wdXRUeXBlOiBldmVudC5pbnB1dFR5cGUsXG4gICAgICAgICAgICB0ZXh0OiAoZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhVHJhbnNmZXIpIGFzIHN0cmluZ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAnaW5zZXJ0RnJvbVBhc3RlJykge1xuICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBEYXRhVHJhbnNmZXIpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmx1ciA9IChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhRm9jdXMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFDdXQgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFDb3B5ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge307XG5cbiAgICBvblNsYUNvbXBvc2l0aW9uU3RhcnQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvbkVuZCA9IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdTdGFydCA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhRHJhZ092ZXIgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvbkRyb3AgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGdldFRleHRBbmRKU09OKGRhdGE6IERhdGFUcmFuc2Zlcikge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgbGV0IGpzb24gPSBbXTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZnJhZ21lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIHRleHRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGhlLXRvb2xiYXJcbiAgICAqbmdJZj1cIiF0aGVPcHRpb25zPy5yZWFkb25seSAmJiAhdGhlR2xvYmFsVG9vbGJhclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLXRvb2xiYXItZGlzYWJsZWQnOiB0aGVPcHRpb25zPy5kaXNhYmxlZFxuICAgIH1cIlxuICAgICNnbG9iYWxUb29sYmFyXG4gICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckVudGl0eS5nbG9iYWxcIlxuICAgIFtjb250YWluZXJDbGFzc109XCJnbG9iYWxUb29sYmFyQ2xhc3NcIlxuICAgIFthbGlnbl09XCJ0aGVPcHRpb25zPy50b29sYmFyPy5hbGlnblwiXG4+PC90aGUtdG9vbGJhcj5cblxuPGRpdlxuICAgIGNsYXNzPVwidGhlLWVkaXRhYmxlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLWVkaXRvci1kaXNhYmxlZCc6IHRoZU9wdGlvbnM/LmRpc2FibGVkLFxuICAgICAgICAnbWF4LWhlaWdodCc6IG1heEhlaWdodFxuICAgIH1cIlxuICAgIFtuZ1N0eWxlXT1cInsgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHQgfVwiXG4+XG4gICAgPHNsYXRlLWVkaXRhYmxlXG4gICAgICAgIGNsYXNzPVwidGhlLWVkaXRvci10eXBvXCJcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbbmdNb2RlbF09XCJlZGl0b3JWYWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGVjb3JhdGVdPVwiZGVjb3JhdGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwidGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJEZWNvcmF0ZV09XCJ0aGVPcHRpb25zPy5wbGFjZWhvbGRlckRlY29yYXRlID8gdGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA6IG51bGxcIlxuICAgICAgICBbcmVuZGVyRWxlbWVudF09XCJyZW5kZXJFbGVtZW50XCJcbiAgICAgICAgW3JlbmRlclRleHRdPVwicmVuZGVyVGV4dFwiXG4gICAgICAgIFtyZW5kZXJMZWFmXT1cInJlbmRlckxlYWZcIlxuICAgICAgICBbcmVhZG9ubHldPVwidGhlT3B0aW9ucz8ucmVhZG9ubHkgfHwgdGhlT3B0aW9ucz8uZGlzYWJsZWRcIlxuICAgICAgICBba2V5ZG93bl09XCJvbktleURvd25cIlxuICAgICAgICBbY2xpY2tdPVwib25DbGlja1wiXG4gICAgICAgIFtwYXN0ZV09XCJvblNsYVBhc3RlXCJcbiAgICAgICAgW2JlZm9yZUlucHV0XT1cIm9uU2xhQmVmb3JlSW5wdXRcIlxuICAgICAgICBbYmx1cl09XCJvblNsYUJsdXJcIlxuICAgICAgICBbZm9jdXNdPVwib25TbGFGb2N1c1wiXG4gICAgICAgIFtjb3B5XT1cIm9uU2xhQ29weVwiXG4gICAgICAgIFtjdXRdPVwib25TbGFDdXRcIlxuICAgICAgICBbaXNTdHJpY3REZWNvcmF0ZV09XCJmYWxzZVwiXG4gICAgICAgIFtjb21wb3NpdGlvblN0YXJ0XT1cIm9uU2xhQ29tcG9zaXRpb25TdGFydFwiXG4gICAgICAgIFtjb21wb3NpdGlvbkVuZF09XCJvblNsYUNvbXBvc2l0aW9uRW5kXCJcbiAgICAgICAgW2RyYWdTdGFydF09XCJvblNsYURyYWdTdGFydFwiXG4gICAgICAgIFtkcmFnT3Zlcl09XCJvblNsYURyYWdPdmVyXCJcbiAgICAgICAgW2Ryb3BdPVwib25Ecm9wXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiXG4gICAgPjwvc2xhdGUtZWRpdGFibGU+XG4gICAgPHRoZS1pbmxpbmUtdG9vbGJhclxuICAgICAgICAqbmdJZj1cIiF0aGVPcHRpb25zPy5yZWFkb25seSAmJiB0aGVPcHRpb25zPy5pbmxpbmVUb29iYXJWaXNpYmxlXCJcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJFbnRpdHkuaW5saW5lXCJcbiAgICA+PC90aGUtaW5saW5lLXRvb2xiYXI+XG4gICAgPGRpdlxuICAgICAgICAjcXVpY2tJbnNlcnRcbiAgICAgICAgdGhlUXVpY2tJbnNlcnRcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbcXVpY2tUb29sYmFySXRlbXNdPVwicXVpY2tUb29sYmFySXRlbXNcIlxuICAgICAgICBbaXNWaXNpYmxlXT1cInRoZU9wdGlvbnM/LnF1aWNrSW5zZXJ0VmlzaWJsZVwiXG4gICAgPjwvZGl2PlxuICAgIDx0aGUtdGVtcGxhdGUgI3RlbXBsYXRlSW5zdGFuY2U+PC90aGUtdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -9,4 +9,4 @@ export var ToolbarAlignment;
|
|
|
9
9
|
ToolbarAlignment["center"] = "center";
|
|
10
10
|
ToolbarAlignment["right"] = "end";
|
|
11
11
|
})(ToolbarAlignment || (ToolbarAlignment = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9pbnRlcmZhY2VzL3Rvb2xiYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN2QixzQ0FBbUIsQ0FBQTtJQUNuQix3Q0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsZUFBZSxLQUFmLGVBQWUsUUFHMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQ3hCLGtDQUFjLENBQUE7SUFDZCxxQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBNYXJrVHlwZXMsIERyb3Bkb3duTW9kZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbHVnaW5LZXkgfSBmcm9tICcuL3BsdWdpbnMnO1xuXG5leHBvcnQgdHlwZSBUb29sYmFyS2V5ID0gTWFya1R5cGVzIHwgRWxlbWVudEtpbmRzIHwgc3RyaW5nO1xuXG5leHBvcnQgZW51bSBUb29sYmFySXRlbVR5cGUge1xuICAgIGRlZmF1bHQgPSAnZGVmYXVsdCcsXG4gICAgZHJvcGRvd24gPSAnZHJvcGRvd24nXG59XG5cbmV4cG9ydCBlbnVtIFRvb2xiYXJBbGlnbm1lbnQge1xuICAgIGxlZnQgPSAnc3RhcnQnLFxuICAgIGNlbnRlciA9ICdjZW50ZXInLFxuICAgIHJpZ2h0ID0gJ2VuZCdcbn1cblxuZXhwb3J0IHR5cGUgVG9vbGJhckRlZmluaXRpb24gPSB7XG4gICAgZ2xvYmFsPzogc3RyaW5nW107XG4gICAgaW5saW5lPzogc3RyaW5nW107XG4gICAgcXVpY2s/OiBzdHJpbmdbXTtcbn07XG5cbmludGVyZmFjZSBUb29sYmFySXRlbUJhc2Uge1xuICAgIGtleTogVG9vbGJhcktleTtcbiAgICBwbHVnaW5LZXk/OiBQbHVnaW5LZXk7IC8vIOWFs+iBlOeahCBwbHVnaW5LZXkgLCDnlKjkuo7moLnmja4gdG9vbGJhckl0ZW0g57K+5YeG5p+l6K+iIHBsdWdpbu+8jOi/m+iAjOiOt+WPluW3peWFt+agj+ebuOWFs+eahOmFjee9rlxuICAgIGV4ZWN1dGU/OiAoZWRpdG9yOiBFZGl0b3IpID0+IHZvaWQ7XG4gICAgYWN0aXZlPzogKGVkaXRvcjogRWRpdG9yKSA9PiBib29sZWFuIHwgc3RyaW5nO1xuICAgIGRpc2FibGU/OiAoZWRpdG9yOiBFZGl0b3IpID0+IGJvb2xlYW47XG4gICAgdHJhbnNmb3JtVG9vbGJhcj86IChlZGl0b3I6IEVkaXRvcikgPT4gVG9vbGJhckRlZmluaXRpb24gfCB2b2lkO1xuICAgIHN0eWxlcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgaW5jbHVkZXM/OiAoVG9vbGJhcktleSB8IFRvb2xiYXJJdGVtKVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWl6ZVRvb2xiYXJJdGVtIGV4dGVuZHMgVG9vbGJhckl0ZW1CYXNlIHtcbiAgICBpY29uQ29tcG9uZW50PzogQ29tcG9uZW50VHlwZTxhbnk+O1xuICAgIHF1aWNrSXRlbUNvbXBvbmVudD86IENvbXBvbmVudFR5cGU8YW55PjtcbiAgICB0eXBlPzogVG9vbGJhckl0ZW1UeXBlO1xuICAgIGRyb3Bkb3duTW9kZT86IERyb3Bkb3duTW9kZTtcbiAgICBkcm9wZG93bkl0ZW1LZXk/OiBUb29sYmFyS2V5O1xuICAgIGRyb3Bkb3duRml4ZWRJY29uPzogYm9vbGVhbjsvLyDlm7rlrprnmoQgaWNvbiAvIOmAiemhueaXoOmAieS4reeKtuaAge+8mue8qei/m+aPkuS7tlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRUb29sYmFySXRlbSBleHRlbmRzIFRvb2xiYXJJdGVtQmFzZSB7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHNob3J0Y3V0S2V5Pzogc3RyaW5nO1xuICAgIHR5cGU/OiBUb29sYmFySXRlbVR5cGU7XG59XG5cbmV4cG9ydCB0eXBlIFRvb2xiYXJJdGVtID0gQ3VzdG9taXplVG9vbGJhckl0ZW0gJiBEZWZhdWx0VG9vbGJhckl0ZW07XG5cbmV4cG9ydCB0eXBlIFRvb2xiYXJFbnRpdHkgPSB7XG4gICAgZ2xvYmFsPzogVG9vbGJhckl0ZW1bXTtcbiAgICBpbmxpbmU/OiBUb29sYmFySXRlbVtdO1xuICAgIHF1aWNrPzogVG9vbGJhckl0ZW1bXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGJhckluaXRPcHRpb24ge1xuICAgIHRvb2xiYXJEZWZpbml0aW9uOiBUb29sYmFyRGVmaW5pdGlvbjtcbiAgICB0b29sYmFyRW50aXR5OiBUb29sYmFyRW50aXR5O1xuICAgIHRvb2xiYXJPcGVyYXRpb25zOiBNYXA8c3RyaW5nLCBUb29sYmFySXRlbT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGJhck9wdGlvbiBleHRlbmRzIFRvb2xiYXJEZWZpbml0aW9uIHtcbiAgICBhbGlnbj86IFRvb2xiYXJBbGlnbm1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybiB7XG4gICAgaXRlbXM6IFRvb2xiYXJJdGVtW107XG4gICAgZ3JvdXA6IFRvb2xiYXJJdGVtW107XG59XG4iXX0=
|