@provoly/dashboard 0.21.3 → 0.21.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/auth/geoAuth.service.mjs +29 -5
- package/esm2022/lib/core/components/select/select.component.mjs +13 -3
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +14 -6
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +8 -3
- package/esm2022/lib/core/i18n/en.translations.mjs +9 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +9 -3
- package/esm2022/lib/core/model/display-options.interface.mjs +24 -7
- package/esm2022/lib/core/store/item/item.effects.mjs +2 -2
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -3
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +12 -5
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +8 -2
- package/esm2022/presentation/components/presentation.component.mjs +9 -3
- package/esm2022/presentation/i18n/en.translations.mjs +2 -1
- package/esm2022/presentation/i18n/fr.translations.mjs +3 -2
- package/esm2022/toolbox/components/delete/delete.component.mjs +29 -0
- package/esm2022/toolbox/components/share/share.component.mjs +69 -0
- package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +26 -0
- package/esm2022/toolbox/components/toolbox.component.mjs +3 -3
- package/esm2022/toolbox/public-api.mjs +4 -1
- package/esm2022/toolbox/toolbox.model.mjs +22 -2
- package/esm2022/toolbox/toolbox.module.mjs +16 -4
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +27 -13
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +7 -8
- package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +6 -5
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-presentation.mjs +11 -3
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +131 -7
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +37 -23
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +116 -29
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/auth/geoAuth.service.d.ts +5 -1
- package/lib/core/components/select/select.component.d.ts +2 -0
- package/lib/core/components/share/group-share/group-share.component.d.ts +2 -2
- package/lib/core/components/snackbar/snackbar.service.d.ts +2 -1
- package/lib/core/i18n/en.translations.d.ts +7 -0
- package/lib/core/i18n/fr.translations.d.ts +7 -1
- package/lib/core/model/display-options.interface.d.ts +3 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +1 -1
- package/package.json +19 -19
- package/presentation/components/presentation.component.d.ts +1 -0
- package/presentation/i18n/en.translations.d.ts +1 -0
- package/presentation/i18n/fr.translations.d.ts +1 -0
- package/styles/components/_o-draggable-menu.scss +8 -0
- package/toolbox/components/delete/delete.component.d.ts +19 -0
- package/toolbox/components/share/share.component.d.ts +25 -0
- package/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.d.ts +15 -0
- package/toolbox/public-api.d.ts +3 -0
- package/toolbox/toolbox.module.d.ts +12 -9
- package/widgets/widget-map/component/widget-map-layer.service.d.ts +4 -3
- package/widgets/widget-map/component/widget-map.component.d.ts +3 -5
|
@@ -60,11 +60,11 @@ export class ToolboxComponent {
|
|
|
60
60
|
return this._dropdownActions$.getValue().find((action) => actionName === action.name)?.order;
|
|
61
61
|
}
|
|
62
62
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToolboxComponent, deps: [{ token: i1.Store }, { token: PRY_ACCESS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToolboxComponent, selector: "pry-toolbox", inputs: { displayLabels: "displayLabels", actions: "actions", dropdownActions: "dropdownActions" }, ngImport: i0, template: "<ul class=\"m-actions-list\" #input>\n <ng-container *ngFor=\"let action of mainActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"m-actions-list__item\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"showDropdownButton$ | async\">\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-md\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n >\n <ng-container *ngIf=\"displayLabels\"\n ><span class=\"u-visually-hidden\">{{ '@pry.toolbox.options' | i18n }}</span>\n <span>{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"14\" [height]=\"14\" iconSvg=\"chevron_bottom\"></pry-icon>\n </ng-container>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let action of dropdownActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"showEditToggle$ | async\">\n <li class=\"m-actions-list__item\" *ngIf=\"isManualMode$ | async\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n </ng-container>\n</ul>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.ToolboxActionInstanciatorComponent, selector: "pry-toolbox-action-instanciator", inputs: ["displayLabels", "action"], outputs: ["closeOptions"] }, { kind: "component", type: i6.EditModeToggleComponent, selector: "pry-edit-mode-toggle" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToolboxComponent, selector: "pry-toolbox", inputs: { displayLabels: "displayLabels", actions: "actions", dropdownActions: "dropdownActions" }, ngImport: i0, template: "<ul class=\"m-actions-list\" #input>\n <ng-container *ngFor=\"let action of mainActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"m-actions-list__item\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"showDropdownButton$ | async\">\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-md\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n >\n <ng-container *ngIf=\"displayLabels\"\n ><span class=\"u-visually-hidden\">{{ '@pry.toolbox.options' | i18n }}</span>\n <span>{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"14\" [height]=\"14\" iconSvg=\"chevron_bottom\"></pry-icon>\n </ng-container>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu -dropdown\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let action of dropdownActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"showEditToggle$ | async\">\n <li class=\"m-actions-list__item\" *ngIf=\"isManualMode$ | async\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n </ng-container>\n</ul>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.ToolboxActionInstanciatorComponent, selector: "pry-toolbox-action-instanciator", inputs: ["displayLabels", "action"], outputs: ["closeOptions"] }, { kind: "component", type: i6.EditModeToggleComponent, selector: "pry-edit-mode-toggle" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
64
64
|
}
|
|
65
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToolboxComponent, decorators: [{
|
|
66
66
|
type: Component,
|
|
67
|
-
args: [{ selector: 'pry-toolbox', template: "<ul class=\"m-actions-list\" #input>\n <ng-container *ngFor=\"let action of mainActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"m-actions-list__item\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"showDropdownButton$ | async\">\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-md\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n >\n <ng-container *ngIf=\"displayLabels\"\n ><span class=\"u-visually-hidden\">{{ '@pry.toolbox.options' | i18n }}</span>\n <span>{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"14\" [height]=\"14\" iconSvg=\"chevron_bottom\"></pry-icon>\n </ng-container>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let action of dropdownActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"showEditToggle$ | async\">\n <li class=\"m-actions-list__item\" *ngIf=\"isManualMode$ | async\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n </ng-container>\n</ul>\n" }]
|
|
67
|
+
args: [{ selector: 'pry-toolbox', template: "<ul class=\"m-actions-list\" #input>\n <ng-container *ngFor=\"let action of mainActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"m-actions-list__item\" *pryAccess=\"action.access\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"showDropdownButton$ | async\">\n <li class=\"m-actions-list__item\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary -size-md\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n id=\"options\"\n aria-controls=\"IDpanel\"\n aria-expanded=\"false\"\n (click)=\"openDropdown($event)\"\n >\n <ng-container *ngIf=\"displayLabels\"\n ><span class=\"u-visually-hidden\">{{ '@pry.toolbox.options' | i18n }}</span>\n <span>{{ '@pry.toolbox.options' | i18n }}</span>\n <pry-icon [width]=\"14\" [height]=\"14\" iconSvg=\"chevron_bottom\"></pry-icon>\n </ng-container>\n </button>\n </li>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isDropdownOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"isDropdownOpen = false\"\n >\n <div class=\"o-draggable-menu -dropdown\" aria-labelledby=\"\">\n <ul class=\"o-draggable-menu__list\">\n <ng-container *ngFor=\"let action of dropdownActions$ | async\">\n <ng-container *ngIf=\"action.visible\">\n <li class=\"o-draggable-menu__list__item\" [style.order]=\"getOrder(action.name)\">\n <pry-toolbox-action-instanciator\n [action]=\"action\"\n [displayLabels]=\"displayLabels\"\n (closeOptions)=\"closeDropdown($event)\"\n ></pry-toolbox-action-instanciator>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"showEditToggle$ | async\">\n <li class=\"m-actions-list__item\" *ngIf=\"isManualMode$ | async\">\n <pry-edit-mode-toggle\n *pryAccess=\"{ module: 'dashboard', page: 'toolbox', action: 'edit_dashboard' }\"\n [displayLabels]=\"displayLabels\"\n ></pry-edit-mode-toggle>\n </li>\n </ng-container>\n</ul>\n" }]
|
|
68
68
|
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i4.PryBaseAccess, decorators: [{
|
|
69
69
|
type: Optional
|
|
70
70
|
}, {
|
|
@@ -77,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
77
77
|
}], dropdownActions: [{
|
|
78
78
|
type: Input
|
|
79
79
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7O0FBTTFELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0IsSUFBYSxPQUFPLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsZUFBZSxDQUFDLGVBQWtEO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQVksS0FBWSxFQUFnRCxJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBckIzRixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQWtCLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFvQyxFQUFFLENBQUMsQ0FBQztRQUN0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NUIsU0FBUzsrQkFDRSxhQUFhOzswQkF5QkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7NENBbkJyRCxhQUFhO3NCQUFyQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERpc3BsYXlPcHRpb25zLFxuICBQUllfQUNDRVNTX1RPS0VOLFxuICBQcnlCYXNlQWNjZXNzXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQUNUSU9OUywgVG9vbGJveEFjdGlvbiB9IGZyb20gJy4uL3Rvb2xib3gubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktdG9vbGJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYm94LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb29sYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRvb2xib3hBY3Rpb25bXT4oQUNUSU9OUyk7XG4gIF9kcm9wZG93bkFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IG5hbWU6IHN0cmluZzsgb3JkZXI6IG51bWJlciB9W10+KFtdKTtcbiAgQElucHV0KCkgZGlzcGxheUxhYmVscyA9IHRydWU7XG4gIGhhc0luaXRpYWxQcmVzZW50YXRpb24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc01hbnVhbE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhbGxBY3Rpb25zJCE6IE9ic2VydmFibGU8VG9vbGJveEFjdGlvbltdPjtcbiAgbWFpbkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBkcm9wZG93bkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBzaG93RHJvcGRvd25CdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgYWN0aW9uc0F2YWlsYWJsZSQ6IE9ic2VydmFibGU8RGlzcGxheU9wdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzaG93RWRpdFRvZ2dsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgQElucHV0KCkgc2V0IGFjdGlvbnMoYWN0aW9uczogVG9vbGJveEFjdGlvbltdKSB7XG4gICAgdGhpcy5hY3Rpb25zJC5uZXh0KGFjdGlvbnMpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRyb3Bkb3duQWN0aW9ucyhkcm9wZG93bkFjdGlvbnM6IHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXSkge1xuICAgIHRoaXMuX2Ryb3Bkb3duQWN0aW9ucyQubmV4dChkcm9wZG93bkFjdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlLCBAT3B0aW9uYWwoKSBASW5qZWN0KFBSWV9BQ0NFU1NfVE9LRU4pIHByaXZhdGUgcm9sZTogUHJ5QmFzZUFjY2Vzcykge1xuICAgIHRoaXMuaGFzSW5pdGlhbFByZXNlbnRhdGlvbiQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikucGlwZShtYXAoKHByZXMpID0+ICEhcHJlcy5pbml0aWFsKSk7XG4gICAgdGhpcy5pc01hbnVhbE1vZGUkID0gc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChwcmVzKSA9PiAocHJlcy5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkpO1xuICAgIHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKTtcbiAgICB0aGlzLnNob3dFZGl0VG9nZ2xlJCA9IHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQucGlwZShtYXAoKGFjdGlvbnMpID0+ICEhYWN0aW9ucz8uZWRpdF90b2dnbGUpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGlvbnMkLCB0aGlzLmFjdGlvbnNBdmFpbGFibGUkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2FjdGlvbnMsIGRpc3BsYXlPcHRpb25zXSkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBhY3Rpb25BdmFpbGFibGUgPSBhY3Rpb24udmlzaWJsZSAmJiBkaXNwbGF5T3B0aW9ucy50b29sYm94W2FjdGlvbi5uYW1lXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvbGVcbiAgICAgICAgICAgICAgPyB0aGlzLnJvbGUuaGFzUm9sZShudWxsLCBhY3Rpb24uYWNjZXNzLm1vZHVsZSwgYWN0aW9uLmFjY2Vzcy5wYWdlLCBhY3Rpb24uYWNjZXNzLmFjdGlvbikucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKGhhc1JvbGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGFjdGlvbkF2YWlsYWJsZSAmJiAoIXRoaXMucm9sZSB8fCBoYXNSb2xlKVxuICAgICAgICAgICAgICAgICAgICAgIH0gYXMgVG9vbGJveEFjdGlvbilcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogb2Yoe1xuICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYWN0aW9uQXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm1haW5BY3Rpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Ryb3Bkb3duQWN0aW9ucyQsIHRoaXMuYWxsQWN0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZHJvcGRvd25BY3Rpb25zLCBhY3Rpb25zXSkgPT5cbiAgICAgICAgYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5kcm9wZG93bkFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZHJvcGRvd25BY3Rpb25zJCwgdGhpcy5hbGxBY3Rpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtkcm9wZG93bkFjdGlvbnMsIGFjdGlvbnNdKSA9PlxuICAgICAgICBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNob3dEcm9wZG93bkJ1dHRvbiQgPSB0aGlzLmRyb3Bkb3duQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnZpc2libGUpLmxlbmd0aCA+IDApXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigkZXZlbnQ6IEV2ZW50IHwgdm9pZCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICBpZiAoJGV2ZW50KSAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXRPcmRlcihhY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5nZXRWYWx1ZSgpLmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uTmFtZSA9PT0gYWN0aW9uLm5hbWUpPy5vcmRlcjtcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RcIiAjaW5wdXQ+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBtYWluQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqcHJ5QWNjZXNzPVwiYWN0aW9uLmFjY2Vzc1wiPlxuICAgICAgICA8cHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvclxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Ryb3Bkb3duQnV0dG9uJCB8IGFzeW5jXCI+XG4gICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgLXNpemUtbWRcIlxuICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgIGlkPVwib3B0aW9uc1wiXG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJJRHBhbmVsXCJcbiAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIxNFwiIFtoZWlnaHRdPVwiMTRcIiBpY29uU3ZnPVwiY2hldnJvbl9ib3R0b21cIj48L3ByeS1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0Ryb3Bkb3duT3BlblwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cIlwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRyb3Bkb3duQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi52aXNpYmxlXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX2l0ZW1cIiBbc3R5bGUub3JkZXJdPVwiZ2V0T3JkZXIoYWN0aW9uLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgPHByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3JcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgICAgICAgICAgKGNsb3NlT3B0aW9ucyk9XCJjbG9zZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L3ByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3I+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0VkaXRUb2dnbGUkIHwgYXN5bmNcIj5cbiAgICA8bGkgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdF9faXRlbVwiICpuZ0lmPVwiaXNNYW51YWxNb2RlJCB8IGFzeW5jXCI+XG4gICAgICA8cHJ5LWVkaXQtbW9kZS10b2dnbGVcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ3Rvb2xib3gnLCBhY3Rpb246ICdlZGl0X2Rhc2hib2FyZCcgfVwiXG4gICAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgPjwvcHJ5LWVkaXQtbW9kZS10b2dnbGU+XG4gICAgPC9saT5cbiAgPC9uZy1jb250YWluZXI+XG48L3VsPlxuIl19
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7O0FBTTFELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0IsSUFBYSxPQUFPLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsZUFBZSxDQUFDLGVBQWtEO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQVksS0FBWSxFQUFnRCxJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBckIzRixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQWtCLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFvQyxFQUFFLENBQUMsQ0FBQztRQUN0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NUIsU0FBUzsrQkFDRSxhQUFhOzswQkF5QkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7NENBbkJyRCxhQUFhO3NCQUFyQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERpc3BsYXlPcHRpb25zLFxuICBQUllfQUNDRVNTX1RPS0VOLFxuICBQcnlCYXNlQWNjZXNzXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQUNUSU9OUywgVG9vbGJveEFjdGlvbiB9IGZyb20gJy4uL3Rvb2xib3gubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktdG9vbGJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYm94LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb29sYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRvb2xib3hBY3Rpb25bXT4oQUNUSU9OUyk7XG4gIF9kcm9wZG93bkFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IG5hbWU6IHN0cmluZzsgb3JkZXI6IG51bWJlciB9W10+KFtdKTtcbiAgQElucHV0KCkgZGlzcGxheUxhYmVscyA9IHRydWU7XG4gIGhhc0luaXRpYWxQcmVzZW50YXRpb24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc01hbnVhbE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhbGxBY3Rpb25zJCE6IE9ic2VydmFibGU8VG9vbGJveEFjdGlvbltdPjtcbiAgbWFpbkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBkcm9wZG93bkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBzaG93RHJvcGRvd25CdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgYWN0aW9uc0F2YWlsYWJsZSQ6IE9ic2VydmFibGU8RGlzcGxheU9wdGlvbnMgfCB1bmRlZmluZWQ+O1xuICBzaG93RWRpdFRvZ2dsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgQElucHV0KCkgc2V0IGFjdGlvbnMoYWN0aW9uczogVG9vbGJveEFjdGlvbltdKSB7XG4gICAgdGhpcy5hY3Rpb25zJC5uZXh0KGFjdGlvbnMpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRyb3Bkb3duQWN0aW9ucyhkcm9wZG93bkFjdGlvbnM6IHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXSkge1xuICAgIHRoaXMuX2Ryb3Bkb3duQWN0aW9ucyQubmV4dChkcm9wZG93bkFjdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlLCBAT3B0aW9uYWwoKSBASW5qZWN0KFBSWV9BQ0NFU1NfVE9LRU4pIHByaXZhdGUgcm9sZTogUHJ5QmFzZUFjY2Vzcykge1xuICAgIHRoaXMuaGFzSW5pdGlhbFByZXNlbnRhdGlvbiQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikucGlwZShtYXAoKHByZXMpID0+ICEhcHJlcy5pbml0aWFsKSk7XG4gICAgdGhpcy5pc01hbnVhbE1vZGUkID0gc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChwcmVzKSA9PiAocHJlcy5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkpO1xuICAgIHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKTtcbiAgICB0aGlzLnNob3dFZGl0VG9nZ2xlJCA9IHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQucGlwZShtYXAoKGFjdGlvbnMpID0+ICEhYWN0aW9ucz8uZWRpdF90b2dnbGUpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGlvbnMkLCB0aGlzLmFjdGlvbnNBdmFpbGFibGUkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2FjdGlvbnMsIGRpc3BsYXlPcHRpb25zXSkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBhY3Rpb25BdmFpbGFibGUgPSBhY3Rpb24udmlzaWJsZSAmJiBkaXNwbGF5T3B0aW9ucy50b29sYm94W2FjdGlvbi5uYW1lXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvbGVcbiAgICAgICAgICAgICAgPyB0aGlzLnJvbGUuaGFzUm9sZShudWxsLCBhY3Rpb24uYWNjZXNzLm1vZHVsZSwgYWN0aW9uLmFjY2Vzcy5wYWdlLCBhY3Rpb24uYWNjZXNzLmFjdGlvbikucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKGhhc1JvbGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGFjdGlvbkF2YWlsYWJsZSAmJiAoIXRoaXMucm9sZSB8fCBoYXNSb2xlKVxuICAgICAgICAgICAgICAgICAgICAgIH0gYXMgVG9vbGJveEFjdGlvbilcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogb2Yoe1xuICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYWN0aW9uQXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm1haW5BY3Rpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Ryb3Bkb3duQWN0aW9ucyQsIHRoaXMuYWxsQWN0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZHJvcGRvd25BY3Rpb25zLCBhY3Rpb25zXSkgPT5cbiAgICAgICAgYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5kcm9wZG93bkFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZHJvcGRvd25BY3Rpb25zJCwgdGhpcy5hbGxBY3Rpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtkcm9wZG93bkFjdGlvbnMsIGFjdGlvbnNdKSA9PlxuICAgICAgICBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNob3dEcm9wZG93bkJ1dHRvbiQgPSB0aGlzLmRyb3Bkb3duQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnZpc2libGUpLmxlbmd0aCA+IDApXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigkZXZlbnQ6IEV2ZW50IHwgdm9pZCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICBpZiAoJGV2ZW50KSAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXRPcmRlcihhY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5nZXRWYWx1ZSgpLmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uTmFtZSA9PT0gYWN0aW9uLm5hbWUpPy5vcmRlcjtcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RcIiAjaW5wdXQ+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBtYWluQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqcHJ5QWNjZXNzPVwiYWN0aW9uLmFjY2Vzc1wiPlxuICAgICAgICA8cHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvclxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Ryb3Bkb3duQnV0dG9uJCB8IGFzeW5jXCI+XG4gICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgLXNpemUtbWRcIlxuICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgIGlkPVwib3B0aW9uc1wiXG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJJRHBhbmVsXCJcbiAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIxNFwiIFtoZWlnaHRdPVwiMTRcIiBpY29uU3ZnPVwiY2hldnJvbl9ib3R0b21cIj48L3ByeS1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0Ryb3Bkb3duT3BlblwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudSAtZHJvcGRvd25cIiBhcmlhLWxhYmVsbGVkYnk9XCJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudV9fbGlzdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkcm9wZG93bkFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0X19pdGVtXCIgW3N0eWxlLm9yZGVyXT1cImdldE9yZGVyKGFjdGlvbi5uYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxwcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgICAgICAgICAgIChjbG9zZU9wdGlvbnMpPVwiY2xvc2VEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dFZGl0VG9nZ2xlJCB8IGFzeW5jXCI+XG4gICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqbmdJZj1cImlzTWFudWFsTW9kZSQgfCBhc3luY1wiPlxuICAgICAgPHByeS1lZGl0LW1vZGUtdG9nZ2xlXG4gICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICd0b29sYm94JywgYWN0aW9uOiAnZWRpdF9kYXNoYm9hcmQnIH1cIlxuICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgID48L3ByeS1lZGl0LW1vZGUtdG9nZ2xlPlxuICAgIDwvbGk+XG4gIDwvbmctY29udGFpbmVyPlxuPC91bD5cbiJdfQ==
|
|
@@ -12,6 +12,9 @@ export * from './components/toolbox-action/toolbox-action.component';
|
|
|
12
12
|
export * from './components/toolbox-action-instanciator/toolbox-action-instanciator.component';
|
|
13
13
|
export * from './components/refresh-datasets/refresh-datasets.component';
|
|
14
14
|
export * from './components/automate-refresh/automate-refresh.component';
|
|
15
|
+
export * from './components/delete/delete.component';
|
|
16
|
+
export * from './components/share/share.component';
|
|
17
|
+
export * from './components/switch-to-edit-content/switch-to-edit-content.component';
|
|
15
18
|
export * from './style/css.component';
|
|
16
19
|
export * from './toolbox.model';
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnRkFBZ0YsQ0FBQztBQUMvRixjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90b29sYm94Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NhdmUtdmlldy9zYXZlLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9uYW1lZC1xdWVyeS9uYW1lZC1xdWVyeS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2xhdW5jaC10YWIvbGF1bmNoLXRhYi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtbW9kZS10b2dnbGUvZWRpdC1tb2RlLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RyYWctd2lkZ2V0cy9kcmFnLXdpZGdldHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jbGVhci12aWV3L2NsZWFyLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3QtZ3JpZC1sYXlvdXQvc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZmlsdGVyLXNldHRpbmdzL2ZpbHRlci1zZXR0aW5ncy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3Rvb2xib3gtYWN0aW9uL3Rvb2xib3gtYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yL3Rvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3JlZnJlc2gtZGF0YXNldHMvcmVmcmVzaC1kYXRhc2V0cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2F1dG9tYXRlLXJlZnJlc2gvYXV0b21hdGUtcmVmcmVzaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RlbGV0ZS9kZWxldGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9zaGFyZS9zaGFyZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3N3aXRjaC10by1lZGl0LWNvbnRlbnQvc3dpdGNoLXRvLWVkaXQtY29udGVudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHlsZS9jc3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbGJveC5tb2RlbCc7XG4iXX0=
|
|
@@ -5,6 +5,9 @@ import { LaunchTabComponent } from './components/launch-tab/launch-tab.component
|
|
|
5
5
|
import { RefreshDatasetsComponent } from './components/refresh-datasets/refresh-datasets.component';
|
|
6
6
|
import { SaveViewComponent } from './components/save-view/save-view.component';
|
|
7
7
|
import { SelectGridLayoutComponent } from './components/select-grid-layout/select-grid-layout.component';
|
|
8
|
+
import { SwitchToEditContentComponent } from './components/switch-to-edit-content/switch-to-edit-content.component';
|
|
9
|
+
import { ShareComponent } from './components/share/share.component';
|
|
10
|
+
import { DeleteComponent } from './components/delete/delete.component';
|
|
8
11
|
export const ACTIONS = [
|
|
9
12
|
{
|
|
10
13
|
name: 'filter_settings',
|
|
@@ -53,7 +56,24 @@ export const ACTIONS = [
|
|
|
53
56
|
component: AutomateRefreshComponent,
|
|
54
57
|
visible: true,
|
|
55
58
|
access: { module: 'dashboard', page: 'toolbox', action: 'automate_refresh' }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'edit_presentation_content',
|
|
62
|
+
component: SwitchToEditContentComponent,
|
|
63
|
+
visible: true,
|
|
64
|
+
access: { module: 'dashboard', page: 'toolbox', action: 'edit_presentation_content' }
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'share',
|
|
68
|
+
component: ShareComponent,
|
|
69
|
+
visible: true,
|
|
70
|
+
access: { module: 'dashboard', page: 'toolbox', action: 'share' }
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'delete',
|
|
74
|
+
component: DeleteComponent,
|
|
75
|
+
visible: true,
|
|
76
|
+
access: { module: 'dashboard', page: 'toolbox', action: 'delete' }
|
|
56
77
|
}
|
|
57
|
-
// { name: 'drag_widget', component: DragWidgetsComponent, visible: true }
|
|
58
78
|
];
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvdG9vbGJveC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV6RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBU3ZFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBb0I7SUFDdEM7UUFDRSxJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLFNBQVMsRUFBRSwwQkFBMEI7UUFDckMsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFO0tBQzVFO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7S0FDakU7SUFDRDtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtLQUNqRTtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUUsa0JBQWtCO1FBQzdCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7S0FDcEU7SUFDRDtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSxrQkFBa0I7UUFDN0IsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRTtLQUN2RTtJQUNEO1FBQ0UsSUFBSSxFQUFFLGNBQWM7UUFDcEIsU0FBUyxFQUFFLHlCQUF5QjtRQUNwQyxPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFO0tBQ3pFO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFNBQVMsRUFBRSx3QkFBd0I7UUFDbkMsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFO0tBQzdFO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFNBQVMsRUFBRSx3QkFBd0I7UUFDbkMsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFO0tBQzdFO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLDJCQUEyQixFQUFFO0tBQ3RGO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsT0FBTztRQUNiLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDbEU7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLGVBQWU7UUFDMUIsT0FBTyxFQUFFLElBQUk7UUFDYixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtLQUNuRTtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcnlBY2Nlc3NDaGVjayB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBBdXRvbWF0ZVJlZnJlc2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0b21hdGUtcmVmcmVzaC9hdXRvbWF0ZS1yZWZyZXNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDbGVhclZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2xlYXItdmlldy9jbGVhci12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlGaWx0ZXJTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWx0ZXItc2V0dGluZ3MvZmlsdGVyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYXVuY2hUYWJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF1bmNoLXRhYi9sYXVuY2gtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWZyZXNoRGF0YXNldHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVmcmVzaC1kYXRhc2V0cy9yZWZyZXNoLWRhdGFzZXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYXZlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zYXZlLXZpZXcvc2F2ZS12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RHcmlkTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC1ncmlkLWxheW91dC9zZWxlY3QtZ3JpZC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2xib3hBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJveC1hY3Rpb24vdG9vbGJveC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXRjaFRvRWRpdENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc3dpdGNoLXRvLWVkaXQtY29udGVudC9zd2l0Y2gtdG8tZWRpdC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGFyZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaGFyZS9zaGFyZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RlbGV0ZS9kZWxldGUuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBUb29sYm94QWN0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wb25lbnQ6IFR5cGU8VG9vbGJveEFjdGlvbkNvbXBvbmVudD47XG4gIGFjY2VzczogUHJ5QWNjZXNzQ2hlY2s7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBQ1RJT05TOiBUb29sYm94QWN0aW9uW10gPSBbXG4gIHtcbiAgICBuYW1lOiAnZmlsdGVyX3NldHRpbmdzJyxcbiAgICBjb21wb25lbnQ6IFByeUZpbHRlclNldHRpbmdzQ29tcG9uZW50LFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgYWNjZXNzOiB7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICd0b29sYm94JywgYWN0aW9uOiAnZmlsdGVyX3NldHRpbmdzJyB9XG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnc2F2ZV92aWV3JyxcbiAgICBjb21wb25lbnQ6IFNhdmVWaWV3Q29tcG9uZW50LFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgYWNjZXNzOiB7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICd0b29sYm94JywgYWN0aW9uOiAnc2F2ZScgfVxuICB9LFxuICB7XG4gICAgbmFtZTogJ3NhdmVfdmlld19hcycsXG4gICAgY29tcG9uZW50OiBTYXZlVmlld0NvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ3NhdmUnIH1cbiAgfSxcbiAge1xuICAgIG5hbWU6ICduZXdfdGFiJyxcbiAgICBjb21wb25lbnQ6IExhdW5jaFRhYkNvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ25ld190YWInIH1cbiAgfSxcbiAge1xuICAgIG5hbWU6ICdjbGVhcl92aWV3JyxcbiAgICBjb21wb25lbnQ6IENsZWFyVmlld0NvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2NsZWFyX3ZpZXcnIH1cbiAgfSxcbiAge1xuICAgIG5hbWU6ICdkZWZhdWx0X3NpemUnLFxuICAgIGNvbXBvbmVudDogU2VsZWN0R3JpZExheW91dENvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2RlZmF1bHRfc2l6ZScgfVxuICB9LFxuICB7XG4gICAgbmFtZTogJ3JlZnJlc2hfZGF0YXNldHMnLFxuICAgIGNvbXBvbmVudDogUmVmcmVzaERhdGFzZXRzQ29tcG9uZW50LFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgYWNjZXNzOiB7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICd0b29sYm94JywgYWN0aW9uOiAncmVmcmVzaF9kYXRhc2V0cycgfVxuICB9LFxuICB7XG4gICAgbmFtZTogJ2F1dG9tYXRlX3JlZnJlc2gnLFxuICAgIGNvbXBvbmVudDogQXV0b21hdGVSZWZyZXNoQ29tcG9uZW50LFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgYWNjZXNzOiB7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICd0b29sYm94JywgYWN0aW9uOiAnYXV0b21hdGVfcmVmcmVzaCcgfVxuICB9LFxuICB7XG4gICAgbmFtZTogJ2VkaXRfcHJlc2VudGF0aW9uX2NvbnRlbnQnLFxuICAgIGNvbXBvbmVudDogU3dpdGNoVG9FZGl0Q29udGVudENvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2VkaXRfcHJlc2VudGF0aW9uX2NvbnRlbnQnIH1cbiAgfSxcbiAge1xuICAgIG5hbWU6ICdzaGFyZScsXG4gICAgY29tcG9uZW50OiBTaGFyZUNvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ3NoYXJlJyB9XG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnZGVsZXRlJyxcbiAgICBjb21wb25lbnQ6IERlbGV0ZUNvbXBvbmVudCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGFjY2VzczogeyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2RlbGV0ZScgfVxuICB9XG5dO1xuIl19
|
|
@@ -21,6 +21,9 @@ import { ToolboxActionComponent } from './components/toolbox-action/toolbox-acti
|
|
|
21
21
|
import { RefreshDatasetsComponent } from './components/refresh-datasets/refresh-datasets.component';
|
|
22
22
|
import { AutomateRefreshComponent } from './components/automate-refresh/automate-refresh.component';
|
|
23
23
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
24
|
+
import { SwitchToEditContentComponent } from './components/switch-to-edit-content/switch-to-edit-content.component';
|
|
25
|
+
import { ShareComponent } from './components/share/share.component';
|
|
26
|
+
import { DeleteComponent } from './components/delete/delete.component';
|
|
24
27
|
import * as i0 from "@angular/core";
|
|
25
28
|
const components = [
|
|
26
29
|
ToolboxActionComponent,
|
|
@@ -36,7 +39,10 @@ const components = [
|
|
|
36
39
|
PrySelectGridLayoutCssComponent,
|
|
37
40
|
PryFilterSettingsComponent,
|
|
38
41
|
RefreshDatasetsComponent,
|
|
39
|
-
AutomateRefreshComponent
|
|
42
|
+
AutomateRefreshComponent,
|
|
43
|
+
SwitchToEditContentComponent,
|
|
44
|
+
ShareComponent,
|
|
45
|
+
DeleteComponent
|
|
40
46
|
];
|
|
41
47
|
export class PryToolboxModule {
|
|
42
48
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryToolboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -53,7 +59,10 @@ export class PryToolboxModule {
|
|
|
53
59
|
PrySelectGridLayoutCssComponent,
|
|
54
60
|
PryFilterSettingsComponent,
|
|
55
61
|
RefreshDatasetsComponent,
|
|
56
|
-
AutomateRefreshComponent
|
|
62
|
+
AutomateRefreshComponent,
|
|
63
|
+
SwitchToEditContentComponent,
|
|
64
|
+
ShareComponent,
|
|
65
|
+
DeleteComponent], imports: [CommonModule,
|
|
57
66
|
FormsModule,
|
|
58
67
|
OverlayModule,
|
|
59
68
|
PryOverlayModule,
|
|
@@ -82,7 +91,10 @@ export class PryToolboxModule {
|
|
|
82
91
|
PrySelectGridLayoutCssComponent,
|
|
83
92
|
PryFilterSettingsComponent,
|
|
84
93
|
RefreshDatasetsComponent,
|
|
85
|
-
AutomateRefreshComponent
|
|
94
|
+
AutomateRefreshComponent,
|
|
95
|
+
SwitchToEditContentComponent,
|
|
96
|
+
ShareComponent,
|
|
97
|
+
DeleteComponent] }); }
|
|
86
98
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryToolboxModule, imports: [CommonModule,
|
|
87
99
|
FormsModule,
|
|
88
100
|
OverlayModule,
|
|
@@ -124,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
124
136
|
exports: [...components]
|
|
125
137
|
}]
|
|
126
138
|
}] });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L3Rvb2xib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGNBQWMsRUFDZCxlQUFlLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDbkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFDcEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDcEcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDcEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRXZFLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLHNCQUFzQjtJQUN0QixrQ0FBa0M7SUFDbEMsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQix1QkFBdUI7SUFDdkIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIseUJBQXlCO0lBQ3pCLGdCQUFnQjtJQUNoQiwrQkFBK0I7SUFDL0IsMEJBQTBCO0lBQzFCLHdCQUF3QjtJQUN4Qix3QkFBd0I7SUFDeEIsNEJBQTRCO0lBQzVCLGNBQWM7SUFDZCxlQUFlO0NBQ2hCLENBQUM7QUF5QkYsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsaUJBMUMzQixzQkFBc0I7WUFDdEIsa0NBQWtDO1lBQ2xDLGtCQUFrQjtZQUNsQixvQkFBb0I7WUFDcEIsdUJBQXVCO1lBQ3ZCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLHlCQUF5QjtZQUN6QixnQkFBZ0I7WUFDaEIsK0JBQStCO1lBQy9CLDBCQUEwQjtZQUMxQix3QkFBd0I7WUFDeEIsd0JBQXdCO1lBQ3hCLDRCQUE0QjtZQUM1QixjQUFjO1lBQ2QsZUFBZSxhQU1iLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsY0FBYztZQUNkLGFBQWE7WUFDYixXQUFXO1lBQ1gsT0FBTztZQUNQLGFBQWE7WUFDYixVQUFVLGFBdENaLHNCQUFzQjtZQUN0QixrQ0FBa0M7WUFDbEMsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQix1QkFBdUI7WUFDdkIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIseUJBQXlCO1lBQ3pCLGdCQUFnQjtZQUNoQiwrQkFBK0I7WUFDL0IsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4Qix3QkFBd0I7WUFDeEIsNEJBQTRCO1lBQzVCLGNBQWM7WUFDZCxlQUFlO2dIQTBCSixnQkFBZ0IsWUFwQnpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsY0FBYztZQUNkLGFBQWE7WUFJYixVQUFVOzs0RkFJRCxnQkFBZ0I7a0JBdkI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUM3QixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixXQUFXO3dCQUNYLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixVQUFVO3FCQUNYO29CQUNELE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWcsIENka0RyYWdIYW5kbGUsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIFByeUNvcmVNb2R1bGUsXG4gIFByeURhc2hib2FyZE1vZHVsZSxcbiAgUHJ5STE4bk1vZHVsZSxcbiAgUHJ5SWNvbk1vZHVsZSxcbiAgUHJ5T3ZlcmxheU1vZHVsZSxcbiAgUHJ5U2VsZWN0TW9kdWxlLFxuICBQcnlTaGFyZU1vZHVsZSxcbiAgUHJ5VG9nZ2xlTW9kdWxlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBQcnlDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NoZWNrYm94JztcbmltcG9ydCB7IFByeVN0ZXBwZXJNb2R1bGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9zdGVwcGVyJztcbmltcG9ydCB7IENsZWFyVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jbGVhci12aWV3L2NsZWFyLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IERyYWdXaWRnZXRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RyYWctd2lkZ2V0cy9kcmFnLXdpZGdldHMuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRNb2RlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtbW9kZS10b2dnbGUvZWRpdC1tb2RlLXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJ5RmlsdGVyU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsdGVyLXNldHRpbmdzL2ZpbHRlci1zZXR0aW5ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF1bmNoVGFiQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xhdW5jaC10YWIvbGF1bmNoLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmFtZWRRdWVyeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9uYW1lZC1xdWVyeS9uYW1lZC1xdWVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2F2ZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2F2ZS12aWV3L3NhdmUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0R3JpZExheW91dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWxlY3QtZ3JpZC1sYXlvdXQvc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rvb2xib3guY29tcG9uZW50JztcbmltcG9ydCB7IFByeVNlbGVjdEdyaWRMYXlvdXRDc3NDb21wb25lbnQgfSBmcm9tICcuL3N0eWxlL2Nzcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJveEFjdGlvbkluc3RhbmNpYXRvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3IvdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYm94QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rvb2xib3gtYWN0aW9uL3Rvb2xib3gtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWZyZXNoRGF0YXNldHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVmcmVzaC1kYXRhc2V0cy9yZWZyZXNoLWRhdGFzZXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvbWF0ZVJlZnJlc2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0b21hdGUtcmVmcmVzaC9hdXRvbWF0ZS1yZWZyZXNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgU3dpdGNoVG9FZGl0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zd2l0Y2gtdG8tZWRpdC1jb250ZW50L3N3aXRjaC10by1lZGl0LWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NoYXJlL3NoYXJlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGVsZXRlL2RlbGV0ZS5jb21wb25lbnQnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1xuICBUb29sYm94QWN0aW9uQ29tcG9uZW50LFxuICBUb29sYm94QWN0aW9uSW5zdGFuY2lhdG9yQ29tcG9uZW50LFxuICBDbGVhclZpZXdDb21wb25lbnQsXG4gIERyYWdXaWRnZXRzQ29tcG9uZW50LFxuICBFZGl0TW9kZVRvZ2dsZUNvbXBvbmVudCxcbiAgTGF1bmNoVGFiQ29tcG9uZW50LFxuICBOYW1lZFF1ZXJ5Q29tcG9uZW50LFxuICBTYXZlVmlld0NvbXBvbmVudCxcbiAgU2VsZWN0R3JpZExheW91dENvbXBvbmVudCxcbiAgVG9vbGJveENvbXBvbmVudCxcbiAgUHJ5U2VsZWN0R3JpZExheW91dENzc0NvbXBvbmVudCxcbiAgUHJ5RmlsdGVyU2V0dGluZ3NDb21wb25lbnQsXG4gIFJlZnJlc2hEYXRhc2V0c0NvbXBvbmVudCxcbiAgQXV0b21hdGVSZWZyZXNoQ29tcG9uZW50LFxuICBTd2l0Y2hUb0VkaXRDb250ZW50Q29tcG9uZW50LFxuICBTaGFyZUNvbXBvbmVudCxcbiAgRGVsZXRlQ29tcG9uZW50XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFsuLi5jb21wb25lbnRzXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFByeU92ZXJsYXlNb2R1bGUsXG4gICAgUHJ5Q29yZU1vZHVsZSxcbiAgICBQcnlEYXNoYm9hcmRNb2R1bGUsXG4gICAgUHJ5U2VsZWN0TW9kdWxlLFxuICAgIFByeUljb25Nb2R1bGUsXG4gICAgUHJ5Q2hlY2tib3hNb2R1bGUsXG4gICAgUHJ5VG9nZ2xlTW9kdWxlLFxuICAgIFByeVN0ZXBwZXJNb2R1bGUsXG4gICAgUHJ5U2hhcmVNb2R1bGUsXG4gICAgUHJ5STE4bk1vZHVsZSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdIYW5kbGUsXG4gICAgQTExeU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbLi4uY29tcG9uZW50c11cbn0pXG5leHBvcnQgY2xhc3MgUHJ5VG9vbGJveE1vZHVsZSB7fVxuIl19
|
|
@@ -6,13 +6,14 @@ import { GeoJSON, MVT } from 'ol/format';
|
|
|
6
6
|
import { Heatmap, Tile } from 'ol/layer';
|
|
7
7
|
import VectorLayer from 'ol/layer/Vector';
|
|
8
8
|
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
9
|
-
import { Cluster, TileWMS, Vector, WMTS, XYZ } from 'ol/source';
|
|
9
|
+
import { Cluster, ImageWMS, TileWMS, Vector, WMTS, XYZ } from 'ol/source';
|
|
10
10
|
import VectorSource from 'ol/source/Vector';
|
|
11
11
|
import VectorTile from 'ol/source/VectorTile';
|
|
12
12
|
import { Circle, Fill, Stroke, Style, Text } from 'ol/style';
|
|
13
13
|
import CircleStyle from 'ol/style/Circle';
|
|
14
14
|
import WMTSTileGrid from 'ol/tilegrid/WMTS';
|
|
15
15
|
import { WidgetMapUtils } from '../utils/widget-map.utils';
|
|
16
|
+
import ImageLayer from 'ol/layer/Image';
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
17
18
|
export class WidgetMapLayerService {
|
|
18
19
|
constructor() {
|
|
@@ -163,18 +164,31 @@ export class WidgetMapLayerService {
|
|
|
163
164
|
});
|
|
164
165
|
},
|
|
165
166
|
wms: (layer, attributesForClass, layerClassesId, resultSet, range, itemStyles, map) => {
|
|
166
|
-
const impl =
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
167
|
+
const impl = layer.paramTiled === undefined || layer.paramTiled
|
|
168
|
+
? new Tile({
|
|
169
|
+
minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,
|
|
170
|
+
maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,
|
|
171
|
+
opacity: (layer.opacity ?? 100) / 100,
|
|
172
|
+
source: new TileWMS({
|
|
173
|
+
attributions: [layer.attribution ?? ''],
|
|
174
|
+
crossOrigin: 'anonymous',
|
|
175
|
+
url: layer.url,
|
|
176
|
+
tileLoadFunction: (tile, str) => this.geoAuthService?.customLoader(tile, str),
|
|
177
|
+
params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }
|
|
178
|
+
})
|
|
176
179
|
})
|
|
177
|
-
|
|
180
|
+
: new ImageLayer({
|
|
181
|
+
minZoom: layer.minZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MIN,
|
|
182
|
+
maxZoom: layer.maxZoom ?? WidgetMapUtils.DEFAULT_ZOOM_MAX,
|
|
183
|
+
opacity: (layer.opacity ?? 100) / 100,
|
|
184
|
+
source: new ImageWMS({
|
|
185
|
+
attributions: [layer.attribution ?? ''],
|
|
186
|
+
crossOrigin: 'anonymous',
|
|
187
|
+
url: layer.url,
|
|
188
|
+
imageLoadFunction: (tile, str) => this.geoAuthService?.customLoader(tile, str),
|
|
189
|
+
params: { LAYERS: layer.paramLayer, TILED: layer.paramTiled, ...(layer.additionalParameters ?? {}) }
|
|
190
|
+
})
|
|
191
|
+
});
|
|
178
192
|
impl.set('url', layer.url);
|
|
179
193
|
impl.set('paramLayer', layer.paramLayer);
|
|
180
194
|
impl.set('oClass', layer.oClass);
|
|
@@ -354,4 +368,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
354
368
|
providedIn: 'root'
|
|
355
369
|
}]
|
|
356
370
|
}] });
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtbWFwL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFlVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxlQUFlLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEUsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxZQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztB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QU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDM0U7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxPQUFlO1FBQ2xELFFBQVEsT0FBTyxFQUFFO1lBQ2YsS0FBSyxTQUFTLENBQUMsS0FBSztnQkFDbEIsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxTQUFTLENBQUMsU0FBUztnQkFDdEIsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxTQUFTLENBQUMsWUFBWTtnQkFDekIsT0FBTyxlQUFlLENBQUM7WUFDekI7Z0JBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sbUJBQW1CLENBQUMsQ0FBQztnQkFDdkQsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDSCxDQUFDOytHQXJrQlUscUJBQXFCO21IQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgRmllbGRUeXBlLFxuICBJdGVtVXRpbHMsXG4gIE1hcEF1dG9MYXllck9wdGlvbnMsXG4gIE1hcEZlYXR1cmVMYXllck9wdGlvbnMsXG4gIE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgTWFwUmFzdGVyVGlsZUxheWVyT3B0aW9ucyxcbiAgTWFwVmVjdG9yVGlsZUxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0UmVsYXRpb25MYXllck9wdGlvbnMsXG4gIE1hcFdNU0xheWVyTGF5ZXJPcHRpb25zLFxuICBNYXBXTVRTTGF5ZXJMYXllck9wdGlvbnMsXG4gIFByeUdlb0F1dGhTZXJ2aWNlLFxuICBSZXN1bHRTZXRcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEZlYXR1cmUsIE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IGdldFRvcExlZnQsIGdldFdpZHRoIH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCB7IEdlb0pTT04sIE1WVCB9IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IHsgSGVhdG1hcCwgVGlsZSB9IGZyb20gJ29sL2xheWVyJztcbmltcG9ydCBCYXNlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvQmFzZSc7XG5pbXBvcnQgVmVjdG9yTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcbmltcG9ydCBWZWN0b3JUaWxlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yVGlsZSc7XG5pbXBvcnQgeyBDbHVzdGVyLCBUaWxlV01TLCBWZWN0b3IsIFdNVFMsIFhZWiB9IGZyb20gJ29sL3NvdXJjZSc7XG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IFZlY3RvclRpbGUgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xuaW1wb3J0IHsgQ2lyY2xlLCBGaWxsLCBTdHJva2UsIFN0eWxlLCBUZXh0IH0gZnJvbSAnb2wvc3R5bGUnO1xuaW1wb3J0IENpcmNsZVN0eWxlIGZyb20gJ29sL3N0eWxlL0NpcmNsZSc7XG5pbXBvcnQgV01UU1RpbGVHcmlkIGZyb20gJ29sL3RpbGVncmlkL1dNVFMnO1xuaW1wb3J0IHsgUHJvamVjdGlvbkxpa2UgfSBmcm9tICdvbC9wcm9qJztcbmltcG9ydCB7IFdpZGdldE1hcFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMvd2lkZ2V0LW1hcC51dGlscyc7XG5cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZXNGb3JDbGFzcyA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGludGVuc2l0eUF0dHJpYnV0ZTogQXR0cmlidXRlO1xuICAgIGxvY2F0aW9uQXR0cmlidXRlOiBBdHRyaWJ1dGU7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJdGVtU3R5bGVzID0geyBbaWQ6IHN0cmluZ106IHsgY2xhc3NpYzogU3R5bGU7IGJvcmRlcmVkOiBTdHlsZSB9IH07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldE1hcExheWVyU2VydmljZSB7XG4gIHN0eWxlQ2FjaGU6IGFueSA9IHt9O1xuXG4gIGNpcmNsZVN0eWxlID0gbmV3IFN0eWxlKHtcbiAgICBmaWxsOiBuZXcgRmlsbCh7XG4gICAgICBjb2xvcjogJ3JnYmEoMzcsODksMTYzLDAuMjQpJ1xuICAgIH0pLFxuICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICBjb2xvcjogJ3JnYigzNyw4OSwxNjMpJyxcbiAgICAgIHdpZHRoOiAyXG4gICAgfSlcbiAgfSk7XG4gIHNlbGVjdGVkQ2lyY2xlU3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgIGNvbG9yOiAncmdiYSgzNywxNjMsNTgsMC4yNCknXG4gICAgfSksXG4gICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgIGNvbG9yOiAncmdiKDM3LDE2Myw1OCknLFxuICAgICAgd2lkdGg6IDJcbiAgICB9KVxuICB9KTtcblxuICBwb2ludFN0eWxlID0gbmV3IFN0eWxlKHtcbiAgICBpbWFnZTogbmV3IENpcmNsZSh7XG4gICAgICBmaWxsOiBuZXcgRmlsbCh7IGNvbG9yOiAncmdiYSgzNyw4OSwxNjMsMC4yNCknIH0pLFxuICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHsgY29sb3I6ICdyZ2IoMzcsODksMTYzKScsIHdpZHRoOiAyIH0pLFxuICAgICAgcmFkaXVzOiAxMFxuICAgIH0pXG4gIH0pO1xuICBzZWxlY3RlZFBvaW50U3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcbiAgICAgIGZpbGw6IG5ldyBGaWxsKHsgY29sb3I6ICdyZ2JhKDM3LDE2Myw1OCwwLjI0KScgfSksXG4gICAgICBzdHJva2U6IG5ldyBTdHJva2UoeyBjb2xvcjogJ3JnYigzNywxNjMsNTgpJywgd2lkdGg6IDIgfSksXG4gICAgICByYWRpdXM6IDEwXG4gICAgfSlcbiAgfSk7XG4gIGdlb0F1dGhTZXJ2aWNlPzogUHJ5R2VvQXV0aFNlcnZpY2U7XG5cbiAgd2l0aEdlb0F1dGgoZ2VvQXV0aFNlcnZpY2U6IFByeUdlb0F1dGhTZXJ2aWNlKSB7XG4gICAgdGhpcy5nZW9BdXRoU2VydmljZSA9IGdlb0F1dGhTZXJ2aWNlO1xuICB9XG5cbiAgZ2V0IGltcGxlbWVudGF0aW9uTGlzdCgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5sYXllcnNJbXBsZW1lbnRhdGlvbikuZmlsdGVyKChpbXBsZW1lbnRhdGlvbikgPT4gaW1wbGVtZW50YXRpb24gIT09ICdnZW9zZXJ2ZXInKTtcbiAgfVxuXG4gIGRvbnROZWVkTG9jYXRpb24gPSBbJ3JlbGF0aW9uJywgJ3dtcycsICd3bXRzJywgJ2dlb3NlcnZlcicsICdmZWF0dXJlbGF5ZXInLCAndmVjdG9ydGlsZScsICdyYXN0ZXJ0aWxlJ107XG4gIGRvbnROZWVkSW50ZW5zaXR5ID0gW1xuICAgIC4uLnRoaXMuZG9udE5lZWRMb2NhdGlvbixcbiAgICAnbWFya2VyJyxcbiAgICAncG9pbnQnLFxuICAgICdsaW5lJyxcbiAgICAncG9seWdvbicsXG4gICAgJ211bHRpLWxpbmUnLFxuICAgICdtdWx0aS1wb2x5Z29uJyxcbiAgICAnYXV0bydcbiAgXTtcblxuICBsYXllcnNJbXBsZW1lbnRhdGlvbiA9IHtcbiAgICBhdXRvOiAoXG4gICAgICBsYXllcjogTWFwQXV0b0xheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXJzSW1wbGVtZW50YXRpb25bV2lkZ2V0TWFwTGF5ZXJTZXJ2aWNlLnRyYW5zbGF0ZUZpZWxkVHlwZVRvTGF5ZXJUeXBlKGxheWVyLnN1YlR5cGUpXShcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsYXllcixcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICByYW5nZSxcbiAgICAgICAgaXRlbVN0eWxlcyxcbiAgICAgICAgbWFwXG4gICAgICApIGFzIEJhc2VMYXllcjtcbiAgICB9LFxuICAgIGhlYXRtYXA6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBoZWF0bWFwID0gbmV3IEhlYXRtYXAoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pLFxuICAgICAgICBibHVyOiAobGF5ZXIucmFkaXVzID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfSEVBVE1BUF9SQURJVVMpIC8gMixcbiAgICAgICAgcmFkaXVzOiBsYXllci5yYWRpdXMgPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9IRUFUTUFQX1JBRElVUyxcbiAgICAgICAgd2VpZ2h0OiAoZmVhdHVyZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBJdGVtVXRpbHMuZ2V0QXR0cmlidXRlQ2FsY3VsYXRlZFZhbHVlKFxuICAgICAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tmZWF0dXJlLmdldCgnb0NsYXNzJykgYXMgc3RyaW5nXS5pbnRlbnNpdHlBdHRyaWJ1dGVcbiAgICAgICAgICApIGFzIG51bWJlcjtcbiAgICAgICAgICBjb25zdCBhdFNjYWxlID0gKHZhbHVlIC0gcmFuZ2UubWluKSAvIChyYW5nZS5tYXggLSByYW5nZS5taW4pO1xuICAgICAgICAgIHJldHVybiBsYXllci5pbnRlbnNpdHlBc2MgPyBhdFNjYWxlIDogMSAtIGF0U2NhbGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBsYXllckNsYXNzZXNJZC5mb3JFYWNoKChjbGFzc0lkKSA9PiB7XG4gICAgICAgIChyZXN1bHRTZXQuaXRlbXNbY2xhc3NJZF0gfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBXaWRnZXRNYXBVdGlscy5yZWFkR2VvbWV0cnkoXG4gICAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAncG9pbnQnLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbY2xhc3NJZF0ubG9jYXRpb25BdHRyaWJ1dGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gISFsb2NhdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBoZWF0bWFwXG4gICAgICAgICAgICAgIC5nZXRTb3VyY2UoKVxuICAgICAgICAgICAgICA/LmFkZEZlYXR1cmUoXG4gICAgICAgICAgICAgICAgV2lkZ2V0TWFwVXRpbHMuZ2V0RmVhdHVyZUZyb21JdGVtKFxuICAgICAgICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgJ2hlYXRwb2ludCcsXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBoZWF0bWFwIGFzIEJhc2VMYXllcjtcbiAgICB9LFxuICAgIG1hcmtlcjogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgdmVjdG9yTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgICB9KTtcblxuICAgICAgbGF5ZXJDbGFzc2VzSWQuZm9yRWFjaCgoY2xhc3NJZCkgPT4ge1xuICAgICAgICAocmVzdWx0U2V0Lml0ZW1zW2NsYXNzSWRdIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gV2lkZ2V0TWFwVXRpbHMucmVhZEdlb21ldHJ5KFxuICAgICAgICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgJ3BvaW50JyxcbiAgICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2l0ZW0ub0NsYXNzXS5sb2NhdGlvbkF0dHJpYnV0ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiAhIWxvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goYXN5bmMgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1GZWF0dXJlID0gV2lkZ2V0TWFwVXRpbHMuZ2V0RmVhdHVyZUZyb21JdGVtKFxuICAgICAgICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgJ21hcmtlcicsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZXNbaXRlbS5pZF0/LmNsYXNzaWMsXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZXNbaXRlbS5pZF0/LmJvcmRlcmVkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaXRlbUZlYXR1cmUuc2V0U3R5bGUoaXRlbUZlYXR1cmUuZ2V0KCdjbGFzc2ljU3R5bGUnKSk7XG4gICAgICAgICAgICB2ZWN0b3JMYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShpdGVtRmVhdHVyZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFrZUNsdXN0ZXJlZCh2ZWN0b3JMYXllciwgbGF5ZXIpO1xuICAgIH0sXG4gICAgcG9pbnQ6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShcbiAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgIGxheWVyLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgICdwb2ludCdcbiAgICAgICk7XG4gICAgfSxcbiAgICBsaW5lOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllckZyb21HZW9Kc29uR2VvbWV0cnkoXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICBsYXllcixcbiAgICAgICAgbGF5ZXJDbGFzc2VzSWQsXG4gICAgICAgIHJlc3VsdFNldCxcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICAnbGluZSdcbiAgICAgICk7XG4gICAgfSxcbiAgICAnbXVsdGktbGluZSc6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShcbiAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgIGxheWVyLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgICdtdWx0aS1saW5lJ1xuICAgICAgKTtcbiAgICB9LFxuICAgIHBvbHlnb246IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShcbiAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgIGxheWVyLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgICdwb2x5Z29uJ1xuICAgICAgKTtcbiAgICB9LFxuICAgICdtdWx0aS1wb2x5Z29uJzogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXJGcm9tR2VvSnNvbkdlb21ldHJ5KFxuICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgICAgJ211bHRpLXBvbHlnb24nXG4gICAgICApO1xuICAgIH0sXG4gICAgYnViYmxlOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBidWJibGVMYXllciA9IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2UoeyBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10gfSlcbiAgICAgIH0pO1xuXG4gICAgICBsYXllckNsYXNzZXNJZC5mb3JFYWNoKChjbGFzc0lkKSA9PiB7XG4gICAgICAgIChyZXN1bHRTZXQuaXRlbXNbY2xhc3NJZF0gfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBXaWRnZXRNYXBVdGlscy5yZWFkR2VvbWV0cnkoXG4gICAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAncG9pbnQnLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuICEhbG9jYXRpb247XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBJdGVtVXRpbHMuZ2V0QXR0cmlidXRlQ2FsY3VsYXRlZFZhbHVlKFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmludGVuc2l0eUF0dHJpYnV0ZVxuICAgICAgICAgICAgKSBhcyBudW1iZXI7XG4gICAgICAgICAgICBjb25zdCBhdFNjYWxlID0gKHZhbHVlIC0gcmFuZ2UubWluKSAvIChyYW5nZS5tYXggLSByYW5nZS5taW4pO1xuICAgICAgICAgICAgY29uc3QgaXRlbUZlYXR1cmUgPSBXaWRnZXRNYXBVdGlscy5nZXRDaXJjbGVGZWF0dXJlRnJvbUl0ZW0oXG4gICAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlLFxuICAgICAgICAgICAgICAobGF5ZXIuaW50ZW5zaXR5QXNjID8gYXRTY2FsZSA6IDEgLSBhdFNjYWxlKSAqXG4gICAgICAgICAgICAgICAgKGxheWVyLnJhZGl1c0ZhY3RvciA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1JBRElVU19JTlRFTlNJVFlfRkFDVE9SKSxcbiAgICAgICAgICAgICAgdGhpcy5jaXJjbGVTdHlsZSxcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENpcmNsZVN0eWxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaXRlbUZlYXR1cmUuc2V0U3R5bGUoaXRlbUZlYXR1cmUuZ2V0KCdjbGFzc2ljU3R5bGUnKSk7XG4gICAgICAgICAgICBidWJibGVMYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShpdGVtRmVhdHVyZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJ1YmJsZUxheWVyO1xuICAgIH0sXG4gICAgcmVsYXRpb246IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRSZWxhdGlvbkxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2UoeyBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10gfSlcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgd21zOiAoXG4gICAgICBsYXllcjogTWFwV01TTGF5ZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGltcGwgPSBuZXcgVGlsZSh7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10sXG4gICAgICAgICAgY3Jvc3NPcmlnaW46ICdhbm9ueW1vdXMnLFxuICAgICAgICAgIHVybDogbGF5ZXIudXJsLFxuICAgICAgICAgIHRpbGVMb2FkRnVuY3Rpb246ICh0aWxlOiBhbnksIHN0cjogc3RyaW5nKSA9PiB0aGlzLmdlb0F1dGhTZXJ2aWNlPy5jdXN0b21Mb2FkZXIodGlsZSwgc3RyKSxcbiAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllci5wYXJhbUxheWVyLCBUSUxFRDogbGF5ZXIucGFyYW1UaWxlZCwgLi4uKGxheWVyLmFkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KSB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIGltcGwuc2V0KCd1cmwnLCBsYXllci51cmwpO1xuICAgICAgaW1wbC5zZXQoJ3BhcmFtTGF5ZXInLCBsYXllci5wYXJhbUxheWVyKTtcbiAgICAgIGltcGwuc2V0KCdvQ2xhc3MnLCBsYXllci5vQ2xhc3MpO1xuICAgICAgaW1wbC5zZXQoJ2dldEZlYXR1cmVJbmZvQWRkaXRpb25hbFBhcmFtZXRlcnMnLCBsYXllci5nZXRGZWF0dXJlSW5mb0FkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KTtcbiAgICAgIHJldHVybiBpbXBsO1xuICAgIH0sXG4gICAgd210czogKFxuICAgICAgbGF5ZXI6IE1hcFdNVFNMYXllckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdGlvbiA9IG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgICAgY29uc3QgcHJvamVjdGlvbkV4dGVudCA9IHByb2plY3Rpb24uZ2V0RXh0ZW50KCk7XG4gICAgICBjb25zdCBzaXplID0gZ2V0V2lkdGgocHJvamVjdGlvbkV4dGVudCkgLyAyNTY7XG4gICAgICBjb25zdCByZXNvbHV0aW9ucyA9IG5ldyBBcnJheSgxOSk7XG4gICAgICBjb25zdCBtYXRyaXhJZHMgPSBuZXcgQXJyYXkoMTkpO1xuICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCAxOTsgKyt6KSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJlc29sdXRpb25zIGFuZCBtYXRyaXhJZHMgYXJyYXlzIGZvciB0aGlzIFdNVFNcbiAgICAgICAgcmVzb2x1dGlvbnNbel0gPSBzaXplIC8gTWF0aC5wb3coMiwgeik7XG4gICAgICAgIG1hdHJpeElkc1t6XSA9IHo7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFRpbGUoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgV01UUyh7XG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybCxcbiAgICAgICAgICBsYXllcjogbGF5ZXIucGFyYW1MYXllcixcbiAgICAgICAgICBtYXRyaXhTZXQ6IGxheWVyLm1hdHJpeFNldCxcbiAgICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICAgIHRpbGVHcmlkOiBuZXcgV01UU1RpbGVHcmlkKHtcbiAgICAgICAgICAgIG9yaWdpbjogZ2V0VG9wTGVmdChwcm9qZWN0aW9uRXh0ZW50KSxcbiAgICAgICAgICAgIHJlc29sdXRpb25zOiByZXNvbHV0aW9ucyxcbiAgICAgICAgICAgIG1hdHJpeElkczogbWF0cml4SWRzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3R5bGU6IGxheWVyLnN0eWxlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdlb3NlcnZlcjogKFxuICAgICAgbGF5ZXI6IE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW1wbCA9IHRoaXMubGF5ZXJzSW1wbGVtZW50YXRpb25bJ3dtcyddKFxuICAgICAgICB7IC4uLmxheWVyLCB0eXBlOiAnd21zJywgb0NsYXNzOiBsYXllci5vQ2xhc3MgfSxcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICByYW5nZSxcbiAgICAgICAgaXRlbVN0eWxlcyxcbiAgICAgICAgbWFwXG4gICAgICApO1xuICAgICAgaW1wbC5zZXQoJ3RpdGxlJywgbGF5ZXIudGl0bGUpO1xuICAgICAgaW1wbC5zZXQoJ29DbGFzcycsIGxheWVyLm9DbGFzcyk7XG4gICAgICBpbXBsLnNldCgnZGF0YXNvdXJjZUlkJywgbGF5ZXIuZGF0YXNvdXJjZUlkKTtcbiAgICAgIHJldHVybiBpbXBsO1xuICAgIH0sXG4gICAgZmVhdHVyZWxheWVyOiAoXG4gICAgICBsYXllcjogTWFwRmVhdHVyZUxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSxcbiAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgdXJsOiBsYXllci51cmxcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdmVjdG9ydGlsZTogKFxuICAgICAgbGF5ZXI6IE1hcFZlY3RvclRpbGVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yVGlsZUxheWVyKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclRpbGUoe1xuICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSxcbiAgICAgICAgICBmb3JtYXQ6IG5ldyBNVlQoKSxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybFxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSxcbiAgICByYXN0ZXJ0aWxlOiAoXG4gICAgICBsYXllcjogTWFwUmFzdGVyVGlsZUxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBUaWxlKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgdXJsOiBsYXllci51cmwsXG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBsYXllckZyb21HZW9Kc29uR2VvbWV0cnkoXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgdHlwZTogJ3BvaW50JyB8ICdsaW5lJyB8ICdtdWx0aS1saW5lJyB8ICdwb2x5Z29uJyB8ICdtdWx0aS1wb2x5Z29uJ1xuICApIHtcbiAgICBjb25zdCB2ZWN0b3JMYXllciA9IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgfSk7XG5cbiAgICBsYXllckNsYXNzZXNJZC5mb3JFYWNoKChjbGFzc0lkKSA9PiB7XG4gICAgICAocmVzdWx0U2V0Lml0ZW1zW2NsYXNzSWRdIHx8IFtdKVxuICAgICAgICAubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgbG9jYXRpb246IFdpZGdldE1hcFV0aWxzLnJlYWRHZW9tZXRyeShcbiAgICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGVcbiAgICAgICAgICApXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKCh7IGxvY2F0aW9uIH0pID0+ICEhbG9jYXRpb24pXG4gICAgICAgIC5mb3JFYWNoKGFzeW5jIChzdWJJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbUZlYXR1cmUgPSBuZXcgRmVhdHVyZSh7XG4gICAgICAgICAgICAuLi5zdWJJdGVtLml0ZW0sXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHN1Ykl0ZW0ubG9jYXRpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2xhc3NpY1N0eWxlOiB0eXBlID09PSAncG9pbnQnID8gdGhpcy5wb2ludFN0eWxlIDogdGhpcy5jaXJjbGVTdHlsZSxcbiAgICAgICAgICAgIHNlbGVjdGVkU3R5bGU6IHR5cGUgPT09ICdwb2ludCcgPyB0aGlzLnNlbGVjdGVkUG9pbnRTdHlsZSA6IHRoaXMuc2VsZWN0ZWRDaXJjbGVTdHlsZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGl0ZW1GZWF0dXJlLnNldFN0eWxlKGl0ZW1GZWF0dXJlLmdldCgnY2xhc3NpY1N0eWxlJykpO1xuICAgICAgICAgIHZlY3RvckxheWVyLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlKGl0ZW1GZWF0dXJlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5tYWtlQ2x1c3RlcmVkKHZlY3RvckxheWVyLCBsYXllcik7XG4gIH1cblxuICBwcml2YXRlIG1ha2VDbHVzdGVyZWQobGF5ZXI6IEJhc2VMYXllciwgbGF5ZXJPcHRpb25zOiBNYXBXaWRnZXRMYXllck9wdGlvbnMpIHtcbiAgICBpZiAoIVsnbWFya2VyJywgJ2J1YmJsZSddLmluY2x1ZGVzKGxheWVyT3B0aW9ucy50eXBlKSB8fCAhKCdjbHVzdGVyZWQnIGluIGxheWVyT3B0aW9ucyAmJiBsYXllck9wdGlvbnMuY2x1c3RlcmVkKSkge1xuICAgICAgcmV0dXJuIGxheWVyO1xuICAgIH1cbiAgICAvLyBDbHVzdGVyaW5nIHNvdXJjZVxuICAgIGNvbnN0IHZlY3RvckxheWVyID0gbGF5ZXIgYXMgVmVjdG9yTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj47XG4gICAgdmVjdG9yTGF5ZXIuc2V0U291cmNlKFxuICAgICAgbmV3IENsdXN0ZXIoe1xuICAgICAgICBkaXN0YW5jZTogbGF5ZXJPcHRpb25zLmNsdXN0ZXJEaXN0YW5jZSxcbiAgICAgICAgbWluRGlzdGFuY2U6IDEwLFxuICAgICAgICBzb3VyY2U6IHZlY3RvckxheWVyLmdldFNvdXJjZSgpIGFzIFZlY3RvclNvdXJjZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdmVjdG9yTGF5ZXIuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSBmZWF0dXJlLmdldCgnZmVhdHVyZXMnKS5sZW5ndGg7XG4gICAgICBpZiAoc2l6ZSA+IDEpIHtcbiAgICAgICAgbGV0IHN0eWxlID0gdGhpcy5zdHlsZUNhY2hlW3NpemVdO1xuICAgICAgICBpZiAoIXN0eWxlKSB7XG4gICAgICAgICAgc3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgICAgICAgICAgaW1hZ2U6IG5ldyBDaXJjbGVTdHlsZSh7XG4gICAgICAgICAgICAgIHJhZGl1czogMTAsXG4gICAgICAgICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzMzOTlDQydcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGV4dDogbmV3IFRleHQoeyB0ZXh0OiBgJHtzaXplfWAgfSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnN0eWxlQ2FjaGVbc2l6ZV0gPSBzdHlsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2l6ZSA9PT0gMSA/IGZlYXR1cmUuZ2V0KCdmZWF0dXJlcycpWzBdLmdldCgnY2xhc3NpY1N0eWxlJykgOiBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgc3RhdGljIHRyYW5zbGF0ZUZpZWxkVHlwZVRvTGF5ZXJUeXBlKHN1YlR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc3ViVHlwZSkge1xuICAgICAgY2FzZSBGaWVsZFR5cGUuUE9JTlQ6XG4gICAgICAgIHJldHVybiAnbWFya2VyJztcbiAgICAgIGNhc2UgRmllbGRUeXBlLkxJTkU6XG4gICAgICAgIHJldHVybiAnbGluZSc7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5QT0xZR09OOlxuICAgICAgICByZXR1cm4gJ3BvbHlnb24nO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuTVVMVElMSU5FOlxuICAgICAgICByZXR1cm4gJ211bHRpLWxpbmUnO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuTVVMVElQT0xZR09OOlxuICAgICAgICByZXR1cm4gJ211bHRpLXBvbHlnb24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKGB3cm9uZyB0eXBlICR7c3ViVHlwZX0gZm9yIGF1dG8gb3B0aW9uc2ApO1xuICAgICAgICByZXR1cm4gJ21hcmtlcic7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtbWFwL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwsU0FBUyxFQUNULFNBQVMsRUFlVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxlQUFlLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFFLE9BQU8sWUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sWUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFB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QUNmLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2xCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2pCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDLFNBQVM7Z0JBQ3RCLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssU0FBUyxDQUFDLFlBQVk7Z0JBQ3pCLE9BQU8sZUFBZSxDQUFDO1lBQ3pCO2dCQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxPQUFPLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sUUFBUSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzsrR0FubEJVLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGUsXG4gIEZpZWxkVHlwZSxcbiAgSXRlbVV0aWxzLFxuICBNYXBBdXRvTGF5ZXJPcHRpb25zLFxuICBNYXBGZWF0dXJlTGF5ZXJPcHRpb25zLFxuICBNYXBHZW9TZXJ2ZXJMYXllck9wdGlvbnMsXG4gIE1hcFJhc3RlclRpbGVMYXllck9wdGlvbnMsXG4gIE1hcFZlY3RvclRpbGVMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0TGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldFJlbGF0aW9uTGF5ZXJPcHRpb25zLFxuICBNYXBXTVNMYXllckxheWVyT3B0aW9ucyxcbiAgTWFwV01UU0xheWVyTGF5ZXJPcHRpb25zLFxuICBQcnlHZW9BdXRoU2VydmljZSxcbiAgUmVzdWx0U2V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBnZXRUb3BMZWZ0LCBnZXRXaWR0aCB9IGZyb20gJ29sL2V4dGVudCc7XG5pbXBvcnQgeyBHZW9KU09OLCBNVlQgfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB7IEhlYXRtYXAsIFRpbGUgfSBmcm9tICdvbC9sYXllcic7XG5pbXBvcnQgQmFzZUxheWVyIGZyb20gJ29sL2xheWVyL0Jhc2UnO1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgVmVjdG9yVGlsZUxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnO1xuaW1wb3J0IHsgQ2x1c3RlciwgSW1hZ2VXTVMsIFRpbGVXTVMsIFZlY3RvciwgV01UUywgWFlaIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgVmVjdG9yVGlsZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yVGlsZSc7XG5pbXBvcnQgeyBDaXJjbGUsIEZpbGwsIFN0cm9rZSwgU3R5bGUsIFRleHQgfSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgQ2lyY2xlU3R5bGUgZnJvbSAnb2wvc3R5bGUvQ2lyY2xlJztcbmltcG9ydCBXTVRTVGlsZUdyaWQgZnJvbSAnb2wvdGlsZWdyaWQvV01UUyc7XG5pbXBvcnQgeyBQcm9qZWN0aW9uTGlrZSB9IGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgV2lkZ2V0TWFwVXRpbHMgfSBmcm9tICcuLi91dGlscy93aWRnZXQtbWFwLnV0aWxzJztcbmltcG9ydCBJbWFnZUxheWVyIGZyb20gJ29sL2xheWVyL0ltYWdlJztcblxuZXhwb3J0IHR5cGUgQXR0cmlidXRlc0ZvckNsYXNzID0ge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgaW50ZW5zaXR5QXR0cmlidXRlOiBBdHRyaWJ1dGU7XG4gICAgbG9jYXRpb25BdHRyaWJ1dGU6IEF0dHJpYnV0ZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEl0ZW1TdHlsZXMgPSB7IFtpZDogc3RyaW5nXTogeyBjbGFzc2ljOiBTdHlsZTsgYm9yZGVyZWQ6IFN0eWxlIH0gfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwTGF5ZXJTZXJ2aWNlIHtcbiAgc3R5bGVDYWNoZTogYW55ID0ge307XG5cbiAgY2lyY2xlU3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGZpbGw6IG5ldyBGaWxsKHtcbiAgICAgIGNvbG9yOiAncmdiYSgzNyw4OSwxNjMsMC4yNCknXG4gICAgfSksXG4gICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcbiAgICAgIGNvbG9yOiAncmdiKDM3LDg5LDE2MyknLFxuICAgICAgd2lkdGg6IDJcbiAgICB9KVxuICB9KTtcbiAgc2VsZWN0ZWRDaXJjbGVTdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgY29sb3I6ICdyZ2JhKDM3LDE2Myw1OCwwLjI0KSdcbiAgICB9KSxcbiAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xuICAgICAgY29sb3I6ICdyZ2IoMzcsMTYzLDU4KScsXG4gICAgICB3aWR0aDogMlxuICAgIH0pXG4gIH0pO1xuXG4gIHBvaW50U3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcbiAgICAgIGZpbGw6IG5ldyBGaWxsKHsgY29sb3I6ICdyZ2JhKDM3LDg5LDE2MywwLjI0KScgfSksXG4gICAgICBzdHJva2U6IG5ldyBTdHJva2UoeyBjb2xvcjogJ3JnYigzNyw4OSwxNjMpJywgd2lkdGg6IDIgfSksXG4gICAgICByYWRpdXM6IDEwXG4gICAgfSlcbiAgfSk7XG4gIHNlbGVjdGVkUG9pbnRTdHlsZSA9IG5ldyBTdHlsZSh7XG4gICAgaW1hZ2U6IG5ldyBDaXJjbGUoe1xuICAgICAgZmlsbDogbmV3IEZpbGwoeyBjb2xvcjogJ3JnYmEoMzcsMTYzLDU4LDAuMjQpJyB9KSxcbiAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7IGNvbG9yOiAncmdiKDM3LDE2Myw1OCknLCB3aWR0aDogMiB9KSxcbiAgICAgIHJhZGl1czogMTBcbiAgICB9KVxuICB9KTtcbiAgZ2VvQXV0aFNlcnZpY2U/OiBQcnlHZW9BdXRoU2VydmljZTtcblxuICB3aXRoR2VvQXV0aChnZW9BdXRoU2VydmljZTogUHJ5R2VvQXV0aFNlcnZpY2UpIHtcbiAgICB0aGlzLmdlb0F1dGhTZXJ2aWNlID0gZ2VvQXV0aFNlcnZpY2U7XG4gIH1cblxuICBnZXQgaW1wbGVtZW50YXRpb25MaXN0KCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmxheWVyc0ltcGxlbWVudGF0aW9uKS5maWx0ZXIoKGltcGxlbWVudGF0aW9uKSA9PiBpbXBsZW1lbnRhdGlvbiAhPT0gJ2dlb3NlcnZlcicpO1xuICB9XG5cbiAgZG9udE5lZWRMb2NhdGlvbiA9IFsncmVsYXRpb24nLCAnd21zJywgJ3dtdHMnLCAnZ2Vvc2VydmVyJywgJ2ZlYXR1cmVsYXllcicsICd2ZWN0b3J0aWxlJywgJ3Jhc3RlcnRpbGUnXTtcbiAgZG9udE5lZWRJbnRlbnNpdHkgPSBbXG4gICAgLi4udGhpcy5kb250TmVlZExvY2F0aW9uLFxuICAgICdtYXJrZXInLFxuICAgICdwb2ludCcsXG4gICAgJ2xpbmUnLFxuICAgICdwb2x5Z29uJyxcbiAgICAnbXVsdGktbGluZScsXG4gICAgJ211bHRpLXBvbHlnb24nLFxuICAgICdhdXRvJ1xuICBdO1xuXG4gIGxheWVyc0ltcGxlbWVudGF0aW9uID0ge1xuICAgIGF1dG86IChcbiAgICAgIGxheWVyOiBNYXBBdXRvTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllcnNJbXBsZW1lbnRhdGlvbltXaWRnZXRNYXBMYXllclNlcnZpY2UudHJhbnNsYXRlRmllbGRUeXBlVG9MYXllclR5cGUobGF5ZXIuc3ViVHlwZSldKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxheWVyLFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBpdGVtU3R5bGVzLFxuICAgICAgICBtYXBcbiAgICAgICkgYXMgQmFzZUxheWVyO1xuICAgIH0sXG4gICAgaGVhdG1hcDogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGhlYXRtYXAgPSBuZXcgSGVhdG1hcCh7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3IoeyBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10gfSksXG4gICAgICAgIGJsdXI6IChsYXllci5yYWRpdXMgPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9IRUFUTUFQX1JBRElVUykgLyAyLFxuICAgICAgICByYWRpdXM6IGxheWVyLnJhZGl1cyA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX0hFQVRNQVBfUkFESVVTLFxuICAgICAgICB3ZWlnaHQ6IChmZWF0dXJlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVDYWxjdWxhdGVkVmFsdWUoXG4gICAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2ZlYXR1cmUuZ2V0KCdvQ2xhc3MnKSBhcyBzdHJpbmddLmludGVuc2l0eUF0dHJpYnV0ZVxuICAgICAgICAgICkgYXMgbnVtYmVyO1xuICAgICAgICAgIGNvbnN0IGF0U2NhbGUgPSAodmFsdWUgLSByYW5nZS5taW4pIC8gKHJhbmdlLm1heCAtIHJhbmdlLm1pbik7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLmludGVuc2l0eUFzYyA/IGF0U2NhbGUgOiAxIC0gYXRTY2FsZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGxheWVyQ2xhc3Nlc0lkLmZvckVhY2goKGNsYXNzSWQpID0+IHtcbiAgICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IFdpZGdldE1hcFV0aWxzLnJlYWRHZW9tZXRyeShcbiAgICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICdwb2ludCcsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tjbGFzc0lkXS5sb2NhdGlvbkF0dHJpYnV0ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiAhIWxvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGhlYXRtYXBcbiAgICAgICAgICAgICAgLmdldFNvdXJjZSgpXG4gICAgICAgICAgICAgID8uYWRkRmVhdHVyZShcbiAgICAgICAgICAgICAgICBXaWRnZXRNYXBVdGlscy5nZXRGZWF0dXJlRnJvbUl0ZW0oXG4gICAgICAgICAgICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAnaGVhdHBvaW50JyxcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGhlYXRtYXAgYXMgQmFzZUxheWVyO1xuICAgIH0sXG4gICAgbWFya2VyOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB2ZWN0b3JMYXllciA9IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2UoeyBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10gfSlcbiAgICAgIH0pO1xuXG4gICAgICBsYXllckNsYXNzZXNJZC5mb3JFYWNoKChjbGFzc0lkKSA9PiB7XG4gICAgICAgIChyZXN1bHRTZXQuaXRlbXNbY2xhc3NJZF0gfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBXaWRnZXRNYXBVdGlscy5yZWFkR2VvbWV0cnkoXG4gICAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAncG9pbnQnLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3NbaXRlbS5vQ2xhc3NdLmxvY2F0aW9uQXR0cmlidXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuICEhbG9jYXRpb247XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZm9yRWFjaChhc3luYyAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbUZlYXR1cmUgPSBXaWRnZXRNYXBVdGlscy5nZXRGZWF0dXJlRnJvbUl0ZW0oXG4gICAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAnbWFya2VyJyxcbiAgICAgICAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzW2l0ZW0ub0NsYXNzXS5sb2NhdGlvbkF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgaXRlbVN0eWxlc1tpdGVtLmlkXT8uY2xhc3NpYyxcbiAgICAgICAgICAgICAgaXRlbVN0eWxlc1tpdGVtLmlkXT8uYm9yZGVyZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpdGVtRmVhdHVyZS5zZXRTdHlsZShpdGVtRmVhdHVyZS5nZXQoJ2NsYXNzaWNTdHlsZScpKTtcbiAgICAgICAgICAgIHZlY3RvckxheWVyLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlKGl0ZW1GZWF0dXJlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdGhpcy5tYWtlQ2x1c3RlcmVkKHZlY3RvckxheWVyLCBsYXllcik7XG4gICAgfSxcbiAgICBwb2ludDogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXJGcm9tR2VvSnNvbkdlb21ldHJ5KFxuICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgICAgJ3BvaW50J1xuICAgICAgKTtcbiAgICB9LFxuICAgIGxpbmU6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRNYXJrZXJMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyRnJvbUdlb0pzb25HZW9tZXRyeShcbiAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgIGxheWVyLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICAgICdsaW5lJ1xuICAgICAgKTtcbiAgICB9LFxuICAgICdtdWx0aS1saW5lJzogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXJGcm9tR2VvSnNvbkdlb21ldHJ5KFxuICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgICAgJ211bHRpLWxpbmUnXG4gICAgICApO1xuICAgIH0sXG4gICAgcG9seWdvbjogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXJGcm9tR2VvSnNvbkdlb21ldHJ5KFxuICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGxheWVyQ2xhc3Nlc0lkLFxuICAgICAgICByZXN1bHRTZXQsXG4gICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgICAgJ3BvbHlnb24nXG4gICAgICApO1xuICAgIH0sXG4gICAgJ211bHRpLXBvbHlnb24nOiAoXG4gICAgICBsYXllcjogTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllckZyb21HZW9Kc29uR2VvbWV0cnkoXG4gICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLFxuICAgICAgICBsYXllcixcbiAgICAgICAgbGF5ZXJDbGFzc2VzSWQsXG4gICAgICAgIHJlc3VsdFNldCxcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICAnbXVsdGktcG9seWdvbidcbiAgICAgICk7XG4gICAgfSxcbiAgICBidWJibGU6IChcbiAgICAgIGxheWVyOiBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGJ1YmJsZUxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7IGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSB9KVxuICAgICAgfSk7XG5cbiAgICAgIGxheWVyQ2xhc3Nlc0lkLmZvckVhY2goKGNsYXNzSWQpID0+IHtcbiAgICAgICAgKHJlc3VsdFNldC5pdGVtc1tjbGFzc0lkXSB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IFdpZGdldE1hcFV0aWxzLnJlYWRHZW9tZXRyeShcbiAgICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICdwb2ludCcsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gISFsb2NhdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IEl0ZW1VdGlscy5nZXRBdHRyaWJ1dGVDYWxjdWxhdGVkVmFsdWUoXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10uaW50ZW5zaXR5QXR0cmlidXRlXG4gICAgICAgICAgICApIGFzIG51bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IGF0U2NhbGUgPSAodmFsdWUgLSByYW5nZS5taW4pIC8gKHJhbmdlLm1heCAtIHJhbmdlLm1pbik7XG4gICAgICAgICAgICBjb25zdCBpdGVtRmVhdHVyZSA9IFdpZGdldE1hcFV0aWxzLmdldENpcmNsZUZlYXR1cmVGcm9tSXRlbShcbiAgICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCksXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIChsYXllci5pbnRlbnNpdHlBc2MgPyBhdFNjYWxlIDogMSAtIGF0U2NhbGUpICpcbiAgICAgICAgICAgICAgICAobGF5ZXIucmFkaXVzRmFjdG9yID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfUkFESVVTX0lOVEVOU0lUWV9GQUNUT1IpLFxuICAgICAgICAgICAgICB0aGlzLmNpcmNsZVN0eWxlLFxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2lyY2xlU3R5bGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpdGVtRmVhdHVyZS5zZXRTdHlsZShpdGVtRmVhdHVyZS5nZXQoJ2NsYXNzaWNTdHlsZScpKTtcbiAgICAgICAgICAgIGJ1YmJsZUxheWVyLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlKGl0ZW1GZWF0dXJlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYnViYmxlTGF5ZXI7XG4gICAgfSxcbiAgICByZWxhdGlvbjogKFxuICAgICAgbGF5ZXI6IE1hcFdpZGdldFJlbGF0aW9uTGF5ZXJPcHRpb25zLFxuICAgICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICAgIHJhbmdlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LFxuICAgICAgaXRlbVN0eWxlczogSXRlbVN0eWxlcyxcbiAgICAgIG1hcDogTWFwXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7IGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSB9KVxuICAgICAgfSk7XG4gICAgfSxcbiAgICB3bXM6IChcbiAgICAgIGxheWVyOiBNYXBXTVNMYXllckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW1wbCA9XG4gICAgICAgIGxheWVyLnBhcmFtVGlsZWQgPT09IHVuZGVmaW5lZCB8fCBsYXllci5wYXJhbVRpbGVkXG4gICAgICAgICAgPyBuZXcgVGlsZSh7XG4gICAgICAgICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvbnM6IFtsYXllci5hdHRyaWJ1dGlvbiA/PyAnJ10sXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46ICdhbm9ueW1vdXMnLFxuICAgICAgICAgICAgICAgIHVybDogbGF5ZXIudXJsLFxuICAgICAgICAgICAgICAgIHRpbGVMb2FkRnVuY3Rpb246ICh0aWxlOiBhbnksIHN0cjogc3RyaW5nKSA9PiB0aGlzLmdlb0F1dGhTZXJ2aWNlPy5jdXN0b21Mb2FkZXIodGlsZSwgc3RyKSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllci5wYXJhbUxheWVyLCBUSUxFRDogbGF5ZXIucGFyYW1UaWxlZCwgLi4uKGxheWVyLmFkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KSB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogbmV3IEltYWdlTGF5ZXIoe1xuICAgICAgICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgICAgICAgc291cmNlOiBuZXcgSW1hZ2VXTVMoe1xuICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogJ2Fub255bW91cycsXG4gICAgICAgICAgICAgICAgdXJsOiBsYXllci51cmwsXG4gICAgICAgICAgICAgICAgaW1hZ2VMb2FkRnVuY3Rpb246ICh0aWxlOiBhbnksIHN0cjogc3RyaW5nKSA9PiB0aGlzLmdlb0F1dGhTZXJ2aWNlPy5jdXN0b21Mb2FkZXIodGlsZSwgc3RyKSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllci5wYXJhbUxheWVyLCBUSUxFRDogbGF5ZXIucGFyYW1UaWxlZCwgLi4uKGxheWVyLmFkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KSB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgIGltcGwuc2V0KCd1cmwnLCBsYXllci51cmwpO1xuICAgICAgaW1wbC5zZXQoJ3BhcmFtTGF5ZXInLCBsYXllci5wYXJhbUxheWVyKTtcbiAgICAgIGltcGwuc2V0KCdvQ2xhc3MnLCBsYXllci5vQ2xhc3MpO1xuICAgICAgaW1wbC5zZXQoJ2dldEZlYXR1cmVJbmZvQWRkaXRpb25hbFBhcmFtZXRlcnMnLCBsYXllci5nZXRGZWF0dXJlSW5mb0FkZGl0aW9uYWxQYXJhbWV0ZXJzID8/IHt9KTtcbiAgICAgIHJldHVybiBpbXBsO1xuICAgIH0sXG4gICAgd210czogKFxuICAgICAgbGF5ZXI6IE1hcFdNVFNMYXllckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgcHJvamVjdGlvbiA9IG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgICAgY29uc3QgcHJvamVjdGlvbkV4dGVudCA9IHByb2plY3Rpb24uZ2V0RXh0ZW50KCk7XG4gICAgICBjb25zdCBzaXplID0gZ2V0V2lkdGgocHJvamVjdGlvbkV4dGVudCkgLyAyNTY7XG4gICAgICBjb25zdCByZXNvbHV0aW9ucyA9IG5ldyBBcnJheSgxOSk7XG4gICAgICBjb25zdCBtYXRyaXhJZHMgPSBuZXcgQXJyYXkoMTkpO1xuICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCAxOTsgKyt6KSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJlc29sdXRpb25zIGFuZCBtYXRyaXhJZHMgYXJyYXlzIGZvciB0aGlzIFdNVFNcbiAgICAgICAgcmVzb2x1dGlvbnNbel0gPSBzaXplIC8gTWF0aC5wb3coMiwgeik7XG4gICAgICAgIG1hdHJpeElkc1t6XSA9IHo7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFRpbGUoe1xuICAgICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICAgIG1heFpvb206IGxheWVyLm1heFpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01BWCxcbiAgICAgICAgb3BhY2l0eTogKGxheWVyLm9wYWNpdHkgPz8gMTAwKSAvIDEwMCxcbiAgICAgICAgc291cmNlOiBuZXcgV01UUyh7XG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiAnYW5vbnltb3VzJyxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybCxcbiAgICAgICAgICBsYXllcjogbGF5ZXIucGFyYW1MYXllcixcbiAgICAgICAgICBtYXRyaXhTZXQ6IGxheWVyLm1hdHJpeFNldCxcbiAgICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICAgIHRpbGVHcmlkOiBuZXcgV01UU1RpbGVHcmlkKHtcbiAgICAgICAgICAgIG9yaWdpbjogZ2V0VG9wTGVmdChwcm9qZWN0aW9uRXh0ZW50KSxcbiAgICAgICAgICAgIHJlc29sdXRpb25zOiByZXNvbHV0aW9ucyxcbiAgICAgICAgICAgIG1hdHJpeElkczogbWF0cml4SWRzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc3R5bGU6IGxheWVyLnN0eWxlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdlb3NlcnZlcjogKFxuICAgICAgbGF5ZXI6IE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW1wbCA9IHRoaXMubGF5ZXJzSW1wbGVtZW50YXRpb25bJ3dtcyddKFxuICAgICAgICB7IC4uLmxheWVyLCB0eXBlOiAnd21zJywgb0NsYXNzOiBsYXllci5vQ2xhc3MgfSxcbiAgICAgICAgYXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgICBsYXllckNsYXNzZXNJZCxcbiAgICAgICAgcmVzdWx0U2V0LFxuICAgICAgICByYW5nZSxcbiAgICAgICAgaXRlbVN0eWxlcyxcbiAgICAgICAgbWFwXG4gICAgICApO1xuICAgICAgaW1wbC5zZXQoJ3RpdGxlJywgbGF5ZXIudGl0bGUpO1xuICAgICAgaW1wbC5zZXQoJ29DbGFzcycsIGxheWVyLm9DbGFzcyk7XG4gICAgICBpbXBsLnNldCgnZGF0YXNvdXJjZUlkJywgbGF5ZXIuZGF0YXNvdXJjZUlkKTtcbiAgICAgIHJldHVybiBpbXBsO1xuICAgIH0sXG4gICAgZmVhdHVyZWxheWVyOiAoXG4gICAgICBsYXllcjogTWFwRmVhdHVyZUxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIG1pblpvb206IGxheWVyLm1pblpvb20gPz8gV2lkZ2V0TWFwVXRpbHMuREVGQVVMVF9aT09NX01JTixcbiAgICAgICAgbWF4Wm9vbTogbGF5ZXIubWF4Wm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUFYLFxuICAgICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSxcbiAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgdXJsOiBsYXllci51cmxcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdmVjdG9ydGlsZTogKFxuICAgICAgbGF5ZXI6IE1hcFZlY3RvclRpbGVMYXllck9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzRm9yQ2xhc3M6IEF0dHJpYnV0ZXNGb3JDbGFzcyxcbiAgICAgIGxheWVyQ2xhc3Nlc0lkOiBzdHJpbmdbXSxcbiAgICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgICAgcmFuZ2U6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0sXG4gICAgICBpdGVtU3R5bGVzOiBJdGVtU3R5bGVzLFxuICAgICAgbWFwOiBNYXBcbiAgICApID0+IHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yVGlsZUxheWVyKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclRpbGUoe1xuICAgICAgICAgIGF0dHJpYnV0aW9uczogW2xheWVyLmF0dHJpYnV0aW9uID8/ICcnXSxcbiAgICAgICAgICBmb3JtYXQ6IG5ldyBNVlQoKSxcbiAgICAgICAgICB1cmw6IGxheWVyLnVybFxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSxcbiAgICByYXN0ZXJ0aWxlOiAoXG4gICAgICBsYXllcjogTWFwUmFzdGVyVGlsZUxheWVyT3B0aW9ucyxcbiAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzczogQXR0cmlidXRlc0ZvckNsYXNzLFxuICAgICAgbGF5ZXJDbGFzc2VzSWQ6IHN0cmluZ1tdLFxuICAgICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgICByYW5nZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSxcbiAgICAgIGl0ZW1TdHlsZXM6IEl0ZW1TdHlsZXMsXG4gICAgICBtYXA6IE1hcFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBUaWxlKHtcbiAgICAgICAgbWluWm9vbTogbGF5ZXIubWluWm9vbSA/PyBXaWRnZXRNYXBVdGlscy5ERUZBVUxUX1pPT01fTUlOLFxuICAgICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICAgIG9wYWNpdHk6IChsYXllci5vcGFjaXR5ID8/IDEwMCkgLyAxMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgdXJsOiBsYXllci51cmwsXG4gICAgICAgICAgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBsYXllckZyb21HZW9Kc29uR2VvbWV0cnkoXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgbGF5ZXI6IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgICBsYXllckNsYXNzZXNJZDogc3RyaW5nW10sXG4gICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgYXR0cmlidXRlc0ZvckNsYXNzOiBBdHRyaWJ1dGVzRm9yQ2xhc3MsXG4gICAgdHlwZTogJ3BvaW50JyB8ICdsaW5lJyB8ICdtdWx0aS1saW5lJyB8ICdwb2x5Z29uJyB8ICdtdWx0aS1wb2x5Z29uJ1xuICApIHtcbiAgICBjb25zdCB2ZWN0b3JMYXllciA9IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICBtaW5ab29tOiBsYXllci5taW5ab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NSU4sXG4gICAgICBtYXhab29tOiBsYXllci5tYXhab29tID8/IFdpZGdldE1hcFV0aWxzLkRFRkFVTFRfWk9PTV9NQVgsXG4gICAgICBvcGFjaXR5OiAobGF5ZXIub3BhY2l0eSA/PyAxMDApIC8gMTAwLFxuICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHsgYXR0cmlidXRpb25zOiBbbGF5ZXIuYXR0cmlidXRpb24gPz8gJyddIH0pXG4gICAgfSk7XG5cbiAgICBsYXllckNsYXNzZXNJZC5mb3JFYWNoKChjbGFzc0lkKSA9PiB7XG4gICAgICAocmVzdWx0U2V0Lml0ZW1zW2NsYXNzSWRdIHx8IFtdKVxuICAgICAgICAubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgbG9jYXRpb246IFdpZGdldE1hcFV0aWxzLnJlYWRHZW9tZXRyeShcbiAgICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXNGb3JDbGFzc1tpdGVtLm9DbGFzc10ubG9jYXRpb25BdHRyaWJ1dGVcbiAgICAgICAgICApXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKCh7IGxvY2F0aW9uIH0pID0+ICEhbG9jYXRpb24pXG4gICAgICAgIC5mb3JFYWNoKGFzeW5jIChzdWJJdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbUZlYXR1cmUgPSBuZXcgRmVhdHVyZSh7XG4gICAgICAgICAgICAuLi5zdWJJdGVtLml0ZW0sXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHN1Ykl0ZW0ubG9jYXRpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2xhc3NpY1N0eWxlOiB0eXBlID09PSAncG9pbnQnID8gdGhpcy5wb2ludFN0eWxlIDogdGhpcy5jaXJjbGVTdHlsZSxcbiAgICAgICAgICAgIHNlbGVjdGVkU3R5bGU6IHR5cGUgPT09ICdwb2ludCcgPyB0aGlzLnNlbGVjdGVkUG9pbnRTdHlsZSA6IHRoaXMuc2VsZWN0ZWRDaXJjbGVTdHlsZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGl0ZW1GZWF0dXJlLnNldFN0eWxlKGl0ZW1GZWF0dXJlLmdldCgnY2xhc3NpY1N0eWxlJykpO1xuICAgICAgICAgIHZlY3RvckxheWVyLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlKGl0ZW1GZWF0dXJlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5tYWtlQ2x1c3RlcmVkKHZlY3RvckxheWVyLCBsYXllcik7XG4gIH1cblxuICBwcml2YXRlIG1ha2VDbHVzdGVyZWQobGF5ZXI6IEJhc2VMYXllciwgbGF5ZXJPcHRpb25zOiBNYXBXaWRnZXRMYXllck9wdGlvbnMpIHtcbiAgICBpZiAoIVsnbWFya2VyJywgJ2J1YmJsZSddLmluY2x1ZGVzKGxheWVyT3B0aW9ucy50eXBlKSB8fCAhKCdjbHVzdGVyZWQnIGluIGxheWVyT3B0aW9ucyAmJiBsYXllck9wdGlvbnMuY2x1c3RlcmVkKSkge1xuICAgICAgcmV0dXJuIGxheWVyO1xuICAgIH1cbiAgICAvLyBDbHVzdGVyaW5nIHNvdXJjZVxuICAgIGNvbnN0IHZlY3RvckxheWVyID0gbGF5ZXIgYXMgVmVjdG9yTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj47XG4gICAgdmVjdG9yTGF5ZXIuc2V0U291cmNlKFxuICAgICAgbmV3IENsdXN0ZXIoe1xuICAgICAgICBkaXN0YW5jZTogbGF5ZXJPcHRpb25zLmNsdXN0ZXJEaXN0YW5jZSxcbiAgICAgICAgbWluRGlzdGFuY2U6IDEwLFxuICAgICAgICBzb3VyY2U6IHZlY3RvckxheWVyLmdldFNvdXJjZSgpIGFzIFZlY3RvclNvdXJjZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdmVjdG9yTGF5ZXIuc2V0U3R5bGUoKGZlYXR1cmUpID0+IHtcbiAgICAgIGNvbnN0IHNpemUgPSBmZWF0dXJlLmdldCgnZmVhdHVyZXMnKS5sZW5ndGg7XG4gICAgICBpZiAoc2l6ZSA+IDEpIHtcbiAgICAgICAgbGV0IHN0eWxlID0gdGhpcy5zdHlsZUNhY2hlW3NpemVdO1xuICAgICAgICBpZiAoIXN0eWxlKSB7XG4gICAgICAgICAgc3R5bGUgPSBuZXcgU3R5bGUoe1xuICAgICAgICAgICAgaW1hZ2U6IG5ldyBDaXJjbGVTdHlsZSh7XG4gICAgICAgICAgICAgIHJhZGl1czogMTAsXG4gICAgICAgICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzMzOTlDQydcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGV4dDogbmV3IFRleHQoeyB0ZXh0OiBgJHtzaXplfWAgfSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnN0eWxlQ2FjaGVbc2l6ZV0gPSBzdHlsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc2l6ZSA9PT0gMSA/IGZlYXR1cmUuZ2V0KCdmZWF0dXJlcycpWzBdLmdldCgnY2xhc3NpY1N0eWxlJykgOiBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgc3RhdGljIHRyYW5zbGF0ZUZpZWxkVHlwZVRvTGF5ZXJUeXBlKHN1YlR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoc3ViVHlwZSkge1xuICAgICAgY2FzZSBGaWVsZFR5cGUuUE9JTlQ6XG4gICAgICAgIHJldHVybiAnbWFya2VyJztcbiAgICAgIGNhc2UgRmllbGRUeXBlLkxJTkU6XG4gICAgICAgIHJldHVybiAnbGluZSc7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5QT0xZR09OOlxuICAgICAgICByZXR1cm4gJ3BvbHlnb24nO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuTVVMVElMSU5FOlxuICAgICAgICByZXR1cm4gJ211bHRpLWxpbmUnO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuTVVMVElQT0xZR09OOlxuICAgICAgICByZXR1cm4gJ211bHRpLXBvbHlnb24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKGB3cm9uZyB0eXBlICR7c3ViVHlwZX0gZm9yIGF1dG8gb3B0aW9uc2ApO1xuICAgICAgICByZXR1cm4gJ21hcmtlcic7XG4gICAgfVxuICB9XG59XG4iXX0=
|