@onecx/angular-accelerator 5.47.3 → 5.47.5

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.
@@ -150,7 +150,7 @@
150
150
  "EXPORT": "Export all events"
151
151
  },
152
152
  "OCX_PAGE_HEADER": {
153
- "IMAGE": "Page title image",
153
+ "IMAGE": "Page title logo",
154
154
  "MORE_ACTIONS": "More actions",
155
155
  "HOME_DEFAULT_ARIA_LABEL": "Go to home page",
156
156
  "HOME_ARIA_LABEL": "Go to {{page}} home page"
@@ -196,11 +196,11 @@ export class PageHeaderComponent {
196
196
  }
197
197
  }
198
198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderComponent, deps: [{ token: i1.BreadcrumbService }, { token: i2.TranslateService }, { token: i3.AppStateService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageHeaderComponent, selector: "ocx-page-header", inputs: { header: "header", loading: "loading", figureBackground: "figureBackground", showFigure: "showFigure", figureImage: "figureImage", disableDefaultActions: "disableDefaultActions", subheader: "subheader", actions: "actions", objectDetails: "objectDetails", showBreadcrumbs: "showBreadcrumbs", manualBreadcrumbs: "manualBreadcrumbs", enableGridView: "enableGridView", gridLayoutDesktopColumns: "gridLayoutDesktopColumns" }, outputs: { save: "save" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n *ngIf=\"breadcrumbs$ | async as items\"\n [model]=\"items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n >\n <ng-template pTemplate=\"separator\"> <span class=\"pi pi-chevron-right\" aria-hidden=\"true\"></span> </ng-template\n ></p-breadcrumb>\n </ng-container>\n\n <div class=\"p-3 title-bar flex flex-row flex-wrap justify-content-between align-items-center gap-2\">\n <div class=\"title-wrap\">\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n [alt]=\"'OCX_PAGE_HEADER.IMAGE' | translate\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <h2 id=\"page-subheader\" *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i8.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i9.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i10.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "directive", type: i11.SrcDirective, selector: "[ocxSrc]", inputs: ["ocxSrc"], outputs: ["error"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.DynamicPipe, name: "dynamicPipe" }], encapsulation: i0.ViewEncapsulation.None }); }
199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageHeaderComponent, selector: "ocx-page-header", inputs: { header: "header", loading: "loading", figureBackground: "figureBackground", showFigure: "showFigure", figureImage: "figureImage", disableDefaultActions: "disableDefaultActions", subheader: "subheader", actions: "actions", objectDetails: "objectDetails", showBreadcrumbs: "showBreadcrumbs", manualBreadcrumbs: "manualBreadcrumbs", enableGridView: "enableGridView", gridLayoutDesktopColumns: "gridLayoutDesktopColumns" }, outputs: { save: "save" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n *ngIf=\"breadcrumbs$ | async as items\"\n [model]=\"items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n >\n <ng-template pTemplate=\"separator\"> <span class=\"pi pi-chevron-right\" aria-hidden=\"true\"></span> </ng-template\n ></p-breadcrumb>\n </ng-container>\n\n <div class=\"p-3 title-bar flex flex-row flex-wrap justify-content-between align-items-center gap-2\">\n <div class=\"title-wrap\">\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n [alt]=\"'OCX_PAGE_HEADER.IMAGE' | translate\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <section class=\"header\" *ngIf=\"!loading; else skeletonBar\" [attr.aria-label]=\"'Page Header'\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <div id=\"page-subheader\" *ngIf=\"!!subheader\" role=\"note\">{{ subheader }}</div>\n </section>\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i8.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i9.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i10.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "directive", type: i11.SrcDirective, selector: "[ocxSrc]", inputs: ["ocxSrc"], outputs: ["error"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.DynamicPipe, name: "dynamicPipe" }], encapsulation: i0.ViewEncapsulation.None }); }
200
200
  }
201
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderComponent, decorators: [{
202
202
  type: Component,
203
- args: [{ selector: 'ocx-page-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n *ngIf=\"breadcrumbs$ | async as items\"\n [model]=\"items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n >\n <ng-template pTemplate=\"separator\"> <span class=\"pi pi-chevron-right\" aria-hidden=\"true\"></span> </ng-template\n ></p-breadcrumb>\n </ng-container>\n\n <div class=\"p-3 title-bar flex flex-row flex-wrap justify-content-between align-items-center gap-2\">\n <div class=\"title-wrap\">\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n [alt]=\"'OCX_PAGE_HEADER.IMAGE' | translate\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <h2 id=\"page-subheader\" *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"] }]
203
+ args: [{ selector: 'ocx-page-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"onecx-page-header mb-4\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n *ngIf=\"breadcrumbs$ | async as items\"\n [model]=\"items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n >\n <ng-template pTemplate=\"separator\"> <span class=\"pi pi-chevron-right\" aria-hidden=\"true\"></span> </ng-template\n ></p-breadcrumb>\n </ng-container>\n\n <div class=\"p-3 title-bar flex flex-row flex-wrap justify-content-between align-items-center gap-2\">\n <div class=\"title-wrap\">\n <div class=\"mr-2 figure relative flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img\n *ngIf=\"figureImage && !figureImageLoadError\"\n [ocxSrc]=\"figureImage\"\n [alt]=\"'OCX_PAGE_HEADER.IMAGE' | translate\"\n class=\"w-full border-round-sm\"\n (error)=\"handleImageError()\"\n />\n </div>\n <div\n class=\"colorblob flex-1 border-round\"\n *ngIf=\"previewImage.children.length === 0 || figureImageLoadError\"\n ></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <section class=\"header\" *ngIf=\"!loading; else skeletonBar\" [attr.aria-label]=\"'Page Header'\">\n <h1 id=\"page-header\" *ngIf=\"!!header\">{{ header }}</h1>\n <div id=\"page-subheader\" *ngIf=\"!!subheader\" role=\"note\">{{ subheader }}</div>\n </section>\n </div>\n\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\">\n </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <span\n [pTooltip]=\"action.disabled ? (action.disabledTooltipKey ? (action.disabledTooltipKey | translate) : action.disabledTooltip) : (action.titleKey ? (action.titleKey | translate) : action.title)\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n [iconPos]=\"action.iconPos ?? 'left'\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\" (action.ariaLabelKey ? (action.ariaLabelKey | translate) : action.ariaLabel) || (action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </span>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [attr.aria-label]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n [pTooltip]=\"'OCX_PAGE_HEADER.MORE_ACTIONS' | translate\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div class=\"object-panel\" [ngClass]=\"getObjectPanelLayoutClasses()\">\n <ng-container *ngIf=\"objectDetails\">\n <div class=\"object-info\" [ngClass]=\"getObjectInfoLayoutClasses()\" *ngFor=\"let item of objectDetails\">\n <span\n class=\"flex font-medium text-600 object-info-grid-label\"\n name=\"object-detail-label\"\n [pTooltip]=\"item.labelTooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >{{ item.label | dynamicPipe:item.labelPipe }}</span\n >\n <span *ngIf=\"item.icon || item.value\" class=\"object-info-grid-value\">\n <span\n class=\"flex text-900 align-items-center gap-2 w-max\"\n [ngClass]=\"generateItemStyle(item)\"\n name=\"object-detail-value\"\n >\n <span\n class=\"flex align-items-center gap-2\"\n [pTooltip]=\"item.valueTooltip || item.tooltip || ''\"\n tooltipEvent=\"hover\"\n tooltipPosition=\"top\"\n >\n <i\n *ngIf=\"item.icon\"\n class='{{item.icon + \" \" + (item.iconStyleClass || \"\")}}'\n name=\"object-detail-icon\"\n ></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}\n </span>\n <p-button\n *ngIf=\"item.actionItemIcon && item.actionItemCallback\"\n [icon]=\"item.actionItemIcon\"\n styleClass=\"p-button-text p-0 w-full\"\n [pTooltip]=\"item.actionItemTooltip || ''\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [ariaLabel]=\"(item.actionItemAriaLabelKey ? (item.actionItemAriaLabelKey | translate) : item.actionItemAriaLabel) || item.actionItemTooltip || ''\"\n (onClick)=\"item.actionItemCallback()\"\n ></p-button>\n </span>\n </span>\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.1);box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem}.onecx-page-header .object-panel:empty{display:none!important}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}.object-info-grid-label{flex:1}.object-info-grid-value{flex:3}.min-w-120{min-width:120px!important}\n"] }]
204
204
  }], ctorParameters: () => [{ type: i1.BreadcrumbService }, { type: i2.TranslateService }, { type: i3.AppStateService }, { type: i3.UserService }], propDecorators: { header: [{
205
205
  type: Input
206
206
  }], loading: [{
@@ -236,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
236
236
  type: ContentChild,
237
237
  args: ['additionalToolbarContentLeft']
238
238
  }] } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7Ozs7Ozs7Ozs7OztBQW1FckUsTUFBTSxPQUFPLG1CQUFtQjtJQXdCOUIsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUE7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7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QkFBd0I7c0JBRHZCLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxNQUFNO2dCQUlQLHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEI7Z0JBSXhDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBNZW51SXRlbSwgUHJpbWVJY29ucyB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgY29uY2F0LCBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgQnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9icmVhZGNydW1iLnNlcnZpY2UnXG5pbXBvcnQgeyBQcmltZUljb24gfSBmcm9tICcuLi8uLi91dGlscy9wcmltZWljb24udXRpbHMnXG5cbi8qKlxuICogQWN0aW9uIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcbiAgaWQ/OiBzdHJpbmdcbiAgbGFiZWw/OiBzdHJpbmdcbiAgbGFiZWxLZXk/OiBzdHJpbmdcbiAgaWNvbj86IHN0cmluZ1xuICBpY29uUG9zPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSdcbiAgLyoqXG4gICAqIFBlcm1pc3Npb24gZm9yIHRoaXMgYWN0aW9uLiBJZiB0aGUgY3VycmVudCB1c2VyIGRvZXMgbm90IGhhdmUgdGhpcyBwZXJtaXNzaW9uLCB0aGUgYWN0aW9uIHdpbGwgbm90IGJlIHNob3duLlxuICAgKi9cbiAgcGVybWlzc2lvbj86IHN0cmluZ1xuICB0aXRsZT86IHN0cmluZ1xuICB0aXRsZUtleT86IHN0cmluZ1xuICBhcmlhTGFiZWw/OiBzdHJpbmdcbiAgYXJpYUxhYmVsS2V5Pzogc3RyaW5nXG4gIGJ0bkNsYXNzPzogc3RyaW5nXG4gIGFjdGlvbkNhbGxiYWNrKCk6IHZvaWRcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGRpc2FibGVkVG9vbHRpcD86IHN0cmluZ1xuICBkaXNhYmxlZFRvb2x0aXBLZXk/OiBzdHJpbmdcbiAgc2hvdz86ICdhbHdheXMnIHwgJ2FzT3ZlcmZsb3cnXG4gIGNvbmRpdGlvbmFsPzogYm9vbGVhblxuICAvLyBOb3RlOiBUaGlzIGN1cnJlbnRseSBkb2Vzbid0IHdvcmsgd2l0aCBkeW5hbWljIHZhbHVlcywgc2luY2UgYSBwYXNzZWQgaW4gQWN0aW9uIGlzIGp1c3QgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBvYmplY3QuXG4gIC8vIEFzIGEgd29ya2Fyb3VuZCwgeW91IGNhbiBtYW51YWxseSB1cGRhdGUvcmVwbGFjZSB0aGUgcGFzc2VkIGluIEFjdGlvbiBpZiB5b3Ugd2lzaCB0byB1cGRhdGUgYSBzaG93Q29uZGl0aW9uXG4gIHNob3dDb25kaXRpb24/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0RGV0YWlsSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgdmFsdWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgdmFsdWVUb29sdGlwYCBpbnN0ZWFkXG4gICAqL1xuICB0b29sdGlwPzogc3RyaW5nXG4gIGxhYmVsVG9vbHRpcD86IHN0cmluZ1xuICB2YWx1ZVRvb2x0aXA/OiBzdHJpbmdcbiAgaWNvbj86IFByaW1lSWNvblxuICBpY29uU3R5bGVDbGFzcz86IHN0cmluZ1xuICBsYWJlbFBpcGU/OiBUeXBlPGFueT5cbiAgdmFsdWVQaXBlPzogVHlwZTxhbnk+XG4gIHZhbHVlUGlwZUFyZ3M/OiBzdHJpbmdcbiAgdmFsdWVDc3NDbGFzcz86IHN0cmluZ1xuICBhY3Rpb25JdGVtSWNvbj86IFByaW1lSWNvblxuICBhY3Rpb25JdGVtQ2FsbGJhY2s/OiAoKSA9PiB2b2lkXG4gIGFjdGlvbkl0ZW1Ub29sdGlwPzogc3RyaW5nXG4gIGFjdGlvbkl0ZW1BcmlhTGFiZWxLZXk/OiBzdHJpbmdcbiAgYWN0aW9uSXRlbUFyaWFMYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvbWVJdGVtIHtcbiAgbWVudUl0ZW06IE1lbnVJdGVtXG4gIHBhZ2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbk9wdGlvbnMgPSAxIHwgMiB8IDMgfCA0IHwgNiB8IDEyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1wYWdlLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmcgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGZpZ3VyZUJhY2tncm91bmQgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2hvd0ZpZ3VyZSA9IHRydWVcblxuICAvL2ltYWdlIGZvdCBwcmV2aWV3IGluIHRvcC1oZWFkZXIgbGVmdCBzaWRlXG4gIEBJbnB1dCgpXG4gIGZpZ3VyZUltYWdlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBkaXNhYmxlRGVmYXVsdEFjdGlvbnMgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHN1YmhlYWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgX2FjdGlvbnM6IEFjdGlvbltdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIGdldCBhY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zXG4gIH1cbiAgc2V0IGFjdGlvbnModmFsdWUpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gdmFsdWVcbiAgICB0aGlzLmdlbmVyYXRlSW5saW5lQWN0aW9ucygpXG4gICAgdGhpcy5nZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpXG4gIH1cblxuICBASW5wdXQoKVxuICBvYmplY3REZXRhaWxzOiBPYmplY3REZXRhaWxJdGVtW10gfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBzaG93QnJlYWRjcnVtYnMgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgbWFudWFsQnJlYWRjcnVtYnMgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGVuYWJsZUdyaWRWaWV3OiB1bmRlZmluZWQgfCBib29sZWFuXG5cbiAgQElucHV0KClcbiAgZ3JpZExheW91dERlc2t0b3BDb2x1bW5zOiB1bmRlZmluZWQgfCBHcmlkQ29sdW1uT3B0aW9uc1xuXG4gIEBPdXRwdXQoKVxuICBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgQENvbnRlbnRDaGlsZCgnYWRkaXRpb25hbFRvb2xiYXJDb250ZW50JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgQENvbnRlbnRDaGlsZCgnYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCcpXG4gIGFkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBvdmVyZmxvd0FjdGlvbnM6IE1lbnVJdGVtW10gPSBbXVxuICBpbmxpbmVBY3Rpb25zOiBBY3Rpb25bXSB8IHVuZGVmaW5lZFxuICBkZCA9IG5ldyBEYXRlKClcbiAgYnJlYWRjcnVtYnMkITogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPlxuXG4gIGhvbWUkITogT2JzZXJ2YWJsZTxIb21lSXRlbT5cblxuICBmaWd1cmVJbWFnZUxvYWRFcnJvciA9IGZhbHNlXG5cbiAgb2JqZWN0UGFuZWxHcmlkTGF5b3V0Q2xhc3NlcyA9ICdncmlkIHJvdy1nYXAtMiBtLTAnXG4gIG9iamVjdFBhbmVsQ29sdW1uTGF5b3V0Q2xhc3NlcyA9ICdmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG92ZXJmbG93LXgtYXV0bydcblxuICBvYmplY3RQYW5lbERlZmF1bHRMYXlvdXRDbGFzc2VzID0gJ2ZsZXggZmxleC1jb2x1bW4gcm93LWdhcC0yIG1kOmZsZXgtcm93IG1kOmp1c3RpZnktY29udGVudC1iZXR3ZWVuJ1xuXG4gIG9iamVjdEluZm9HcmlkTGF5b3V0Q2xhc3NlcyA9ICdjb2wtMTIgZmxleCBnYXAtNCBtZDpjb2wtNiBhbGlnbi1pdGVtcy1jZW50ZXIgcC0wJ1xuICBvYmplY3RJbmZvQ29sdW1uTGF5b3V0Q2xhc3NlcyA9ICdmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtaW4tdy0xMjAnXG5cbiAgb2JqZWN0SW5mb0RlZmF1bHRMYXlvdXRDbGFzc2VzID0gJ2ZsZXggZmxleC1yb3cgbWQ6ZmxleC1jb2x1bW4gbWQ6YWxpZ24taXRlbXMtY2VudGVyIG1kOmdhcC0yJ1xuXG4gIHByb3RlY3RlZCBicmVhZGNydW1iczogQnJlYWRjcnVtYlNlcnZpY2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBicmVhZGNydW1iczogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5icmVhZGNydW1icyA9IGJyZWFkY3J1bWJzXG4gICAgdGhpcy5ob21lJCA9IGNvbmNhdChcbiAgICAgIG9mKHsgbWVudUl0ZW06IHsgaWNvbjogUHJpbWVJY29ucy5IT01FLCByb3V0ZXJMaW5rOiAnLycgfSB9KSxcbiAgICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRQb3J0YWwkLnBpcGUoXG4gICAgICAgIG1hcCgocG9ydGFsKSA9PiAoe1xuICAgICAgICAgIG1lbnVJdGVtOiB7XG4gICAgICAgICAgICBpY29uOiBQcmltZUljb25zLkhPTUUsXG4gICAgICAgICAgICByb3V0ZXJMaW5rOiBwb3J0YWwuYmFzZVVybCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZ2U6IHBvcnRhbC5wb3J0YWxOYW1lLFxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApXG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydhY3Rpb25zJ10pIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVJbmxpbmVBY3Rpb25zKClcbiAgICAgIHRoaXMuZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYW51YWxCcmVhZGNydW1icykge1xuICAgICAgdGhpcy5icmVhZGNydW1icyQgPSB0aGlzLmJyZWFkY3J1bWJzLmdlbmVyYXRlZEl0ZW1zU291cmNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnJlYWRjcnVtYnMkID0gdGhpcy5icmVhZGNydW1icy5pdGVtc0hhbmRsZXJcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0ZUlubGluZUFjdGlvbnMoKVxuICAgIHRoaXMuZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKVxuICB9XG5cbiAgb25BY3Rpb24oYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuc2F2ZS5lbWl0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSW1hZ2VFcnJvcigpIHtcbiAgICB0aGlzLmZpZ3VyZUltYWdlTG9hZEVycm9yID0gdHJ1ZVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlSXRlbVN0eWxlKGl0ZW06IE9iamVjdERldGFpbEl0ZW0pOiBzdHJpbmcge1xuICAgIGxldCBzdHlsZSA9ICcnXG4gICAgaWYgKGl0ZW0uaWNvbikgc3R5bGUgPSBzdHlsZS5jb25jYXQoc3R5bGUsICcgJywgJ2dhcC0xIGFsaWduLWl0ZW1zLWNlbnRlcicpXG4gICAgaWYgKGl0ZW0udmFsdWVDc3NDbGFzcykgc3R5bGUgPSBzdHlsZS5jb25jYXQoc3R5bGUsICcgJywgaXRlbS52YWx1ZUNzc0NsYXNzKVxuICAgIHJldHVybiBzdHlsZVxuICB9XG5cbiAgcHVibGljIGdldE9iamVjdFBhbmVsTGF5b3V0Q2xhc3NlcygpIHtcbiAgICBpZiAodGhpcy5lbmFibGVHcmlkVmlldykge1xuICAgICAgcmV0dXJuIHRoaXMub2JqZWN0UGFuZWxHcmlkTGF5b3V0Q2xhc3Nlc1xuICAgIH1cbiAgICBpZiAodGhpcy5lbmFibGVHcmlkVmlldyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLm9iamVjdFBhbmVsQ29sdW1uTGF5b3V0Q2xhc3Nlc1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vYmplY3RQYW5lbERlZmF1bHRMYXlvdXRDbGFzc2VzXG4gIH1cblxuICBwdWJsaWMgZ2V0T2JqZWN0SW5mb0xheW91dENsYXNzZXMoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlR3JpZFZpZXcpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm9iamVjdEluZm9HcmlkTGF5b3V0Q2xhc3Nlc30gbGc6Y29sLSR7XG4gICAgICAgIHRoaXMuZ3JpZExheW91dERlc2t0b3BDb2x1bW5zID8gMTIgLyB0aGlzLmdyaWRMYXlvdXREZXNrdG9wQ29sdW1ucyA6IDRcbiAgICAgIH1gXG4gICAgfVxuICAgIGlmICh0aGlzLmVuYWJsZUdyaWRWaWV3ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRoaXMub2JqZWN0SW5mb0NvbHVtbkxheW91dENsYXNzZXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub2JqZWN0SW5mb0RlZmF1bHRMYXlvdXRDbGFzc2VzXG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbGlzdCBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGFuIG92ZXJmbG93IG1lbnVcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgLi4udGhpcy5hY3Rpb25zLm1hcCgoYSkgPT4gYS5sYWJlbEtleSB8fCAnJykuZmlsdGVyKChhKSA9PiAhIWEpLFxuICAgICAgICAuLi50aGlzLmFjdGlvbnMubWFwKChhKSA9PiBhLnRpdGxlS2V5IHx8ICcnKS5maWx0ZXIoKGEpID0+ICEhYSksXG4gICAgICBdXG4gICAgICBjb25zdCB0cmFuc2xhdGlvbnMkID0gdHJhbnNsYXRpb25LZXlzLmxlbmd0aCA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodHJhbnNsYXRpb25LZXlzKSA6IG9mKFtdKVxuICAgICAgdHJhbnNsYXRpb25zJC5zdWJzY3JpYmUoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBhbGxvd2VkQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgICAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChhKSA9PiBhLnNob3cgPT09ICdhc092ZXJmbG93JylcbiAgICAgICAgICAgIC5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGEuY29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5zaG93Q29uZGl0aW9uKSByZXR1cm4gYVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gYVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja0FjdGlvblBlcm1pc3Npb24oYWxsb3dlZEFjdGlvbnMsIGFjdGlvbilcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5vdmVyZmxvd0FjdGlvbnMgPSBbXG4gICAgICAgICAgICAuLi5hbGxvd2VkQWN0aW9ucy5tYXA8TWVudUl0ZW0+KChhKSA9PiAoe1xuICAgICAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IGEubGFiZWxLZXkgPyB0cmFuc2xhdGlvbnNbYS5sYWJlbEtleV0gOiBhLmxhYmVsLFxuICAgICAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgICAgIHRvb2x0aXBPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcExhYmVsOiBhLnRpdGxlS2V5ID8gdHJhbnNsYXRpb25zW2EudGl0bGVLZXldIDogYS50aXRsZSxcbiAgICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ6ICdob3ZlcicsXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOiAndG9wJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29tbWFuZDogYS5hY3Rpb25DYWxsYmFjayxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGEuZGlzYWJsZWQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBsaXN0IG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgYXMgaW5saW5lIGJ1dHRvbnNcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVJbmxpbmVBY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbnMpIHtcbiAgICAgIC8vIFRlbXAgYXJyYXkgdG8gaG9sZCBhbGwgaW5saW5lIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyXG4gICAgICBjb25zdCBhbGxvd2VkQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMgZm9yIGFsbCBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkICdhbHdheXMnXG4gICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgLmZpbHRlcigoYSkgPT4gYS5zaG93ID09PSAnYWx3YXlzJylcbiAgICAgICAgLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICAgIGlmIChhLmNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5zaG93Q29uZGl0aW9uID8gYSA6IG51bGxcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIGFcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tBY3Rpb25QZXJtaXNzaW9uKGFsbG93ZWRBY3Rpb25zLCBhY3Rpb24pXG4gICAgICAgIH0pXG4gICAgICB0aGlzLmlubGluZUFjdGlvbnMgPSBbLi4uYWxsb3dlZEFjdGlvbnNdXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBBZGRzIGEgZ2l2ZW4gYWN0aW9uIHRvIGEgZ2l2ZW4gYXJyYXkgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIHNlZSBpdFxuICAgKiBAcGFyYW0gYWxsb3dlZEFjdGlvbnMgQXJyYXkgdGhhdCB0aGUgYWN0aW9uIHNob3VsZCBiZSBhZGRlZCB0byBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gc2VlIGl0XG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIGZvciB3aGljaCBhIHBlcm1pc3Npb24gY2hlY2sgc2hvdWxkIGJlIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIGNoZWNrQWN0aW9uUGVybWlzc2lvbihhbGxvd2VkQWN0aW9uczogQWN0aW9uW10sIGFjdGlvbjogQWN0aW9uKSB7XG4gICAgaWYgKGFjdGlvbi5wZXJtaXNzaW9uKSB7XG4gICAgICBpZiAodGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKGFjdGlvbi5wZXJtaXNzaW9uKSkge1xuICAgICAgICAvLyBQdXNoIGFjdGlvbiB0byBhbGxvd2VkIGFycmF5IGlmIHVzZXIgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnNcbiAgICAgICAgYWxsb3dlZEFjdGlvbnMucHVzaChhY3Rpb24pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFB1c2ggYWN0aW9uIHRvIGFsbG93ZWQgYXJyYXkgaWYgbm8gcGVybWlzc2lvbiB3YXMgc3BlY2lmaWVkXG4gICAgICBhbGxvd2VkQWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvbmVjeC1wYWdlLWhlYWRlciBtYi00XCIgbmFtZT1cIm9jeC1wYWdlLWhlYWRlci13cmFwcGVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnJlYWRjcnVtYnNcIj5cbiAgICA8cC1icmVhZGNydW1iXG4gICAgICAqbmdJZj1cImJyZWFkY3J1bWJzJCB8IGFzeW5jIGFzIGl0ZW1zXCJcbiAgICAgIFttb2RlbF09XCJpdGVtc1wiXG4gICAgICBbaG9tZV09XCIoaG9tZSQgfCBhc3luYyk/Lm1lbnVJdGVtID8/IHt9XCJcbiAgICAgIFtob21lQXJpYUxhYmVsXT1cIihob21lJCB8IGFzeW5jKT8ucGFnZSA/ICgnT0NYX1BBR0VfSEVBREVSLkhPTUVfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGU6IHsgcGFnZTogKGhvbWUkIHwgYXN5bmMpPy5wYWdlfSkgOiAoJ09DWF9QQUdFX0hFQURFUi5IT01FX0RFRkFVTFRfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgIFthdHRyLm1hbnVhbF09XCJtYW51YWxCcmVhZGNydW1ic1wiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlcGFyYXRvclwiPiA8c3BhbiBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+IDwvbmctdGVtcGxhdGVcbiAgICA+PC9wLWJyZWFkY3J1bWI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwLTMgdGl0bGUtYmFyIGZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS13cmFwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXItMiBmaWd1cmUgcmVsYXRpdmUgZmxleCBoLTJyZW0gdy0ycmVtIG1kOmgtM3JlbSBtZDp3LTNyZW1cIiAqbmdJZj1cInNob3dGaWd1cmVcIj5cbiAgICAgICAgPGRpdiAjcHJldmlld0ltYWdlIGNsYXNzPVwiZmlndXJlLWltYWdlIGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGJvdHRvbS0wXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZpZ3VyZUltYWdlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cImZpZ3VyZUltYWdlICYmICFmaWd1cmVJbWFnZUxvYWRFcnJvclwiXG4gICAgICAgICAgICBbb2N4U3JjXT1cImZpZ3VyZUltYWdlXCJcbiAgICAgICAgICAgIFthbHRdPVwiJ09DWF9QQUdFX0hFQURFUi5JTUFHRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLXJvdW5kLXNtXCJcbiAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2xvcmJsb2IgZmxleC0xIGJvcmRlci1yb3VuZFwiXG4gICAgICAgICAgKm5nSWY9XCJwcmV2aWV3SW1hZ2UuY2hpbGRyZW4ubGVuZ3RoID09PSAwIHx8IGZpZ3VyZUltYWdlTG9hZEVycm9yXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uQmFyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGp1c3RpZnktY29udGVudC1ldmVubHlcIj5cbiAgICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjEwcmVtXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMTByZW1cIj48L3Atc2tlbGV0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIiAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIHNrZWxldG9uQmFyXCI+XG4gICAgICAgIDxoMSBpZD1cInBhZ2UtaGVhZGVyXCIgKm5nSWY9XCIhIWhlYWRlclwiPnt7IGhlYWRlciB9fTwvaDE+XG4gICAgICAgIDxoMiBpZD1cInBhZ2Utc3ViaGVhZGVyXCIgKm5nSWY9XCIhIXN1YmhlYWRlclwiPnt7IHN1YmhlYWRlciB9fTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbXMtd3JhcCBtdC0yIG1kOm10LTBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZURlZmF1bHRBY3Rpb25zXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbkFjdGlvbnM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCI1cmVtXCIgaGVpZ2h0PVwiMnJlbVwiIHN0eWxlQ2xhc3M9XCJtci0yXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMnJlbVwiIGhlaWdodD1cIjJyZW1cIiBzdHlsZUNsYXNzPVwibWItMlwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIHNrZWxldG9uQWN0aW9uc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5saW5lQWN0aW9ucyAmJiBpbmxpbmVBY3Rpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cInRvb2xiYXIgZmxleCBmbGV4LXdyYXAgZ2FwLTEgc206Z2FwLTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lQWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImFjdGlvbi5kaXNhYmxlZCA/IChhY3Rpb24uZGlzYWJsZWRUb29sdGlwS2V5ID8gKGFjdGlvbi5kaXNhYmxlZFRvb2x0aXBLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmRpc2FibGVkVG9vbHRpcCkgOiAoYWN0aW9uLnRpdGxlS2V5ID8gKGFjdGlvbi50aXRsZUtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24udGl0bGUpXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICBpZD1cInt7IGFjdGlvbi5pZCB9fVwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gPz8gJydcIlxuICAgICAgICAgICAgICAgIFtpY29uUG9zXT1cImFjdGlvbi5pY29uUG9zID8/ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWxcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGlvbi5hY3Rpb25DYWxsYmFjaygpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkID8gYWN0aW9uLmRpc2FibGVkIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiYWN0aW9uLmljb24gPyAnb2N4LXBhZ2UtaGVhZGVyLWlubGluZS1hY3Rpb24taWNvbi1idXR0b24nIDogJ29jeC1wYWdlLWhlYWRlci1pbmxpbmUtYWN0aW9uLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiIChhY3Rpb24uYXJpYUxhYmVsS2V5ID8gKGFjdGlvbi5hcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmFyaWFMYWJlbCkgfHwgKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKSB8fCAoYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWwpXCJcbiAgICAgICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhckl0ZW1zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3ZlcmZsb3dBY3Rpb25zLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInBhZ2VIZWFkZXJNZW51QnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVsbGlwc2lzLXZcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vcmUtYWN0aW9ucy1tZW51LWJ1dHRvbiBhY3Rpb24tYnV0dG9uIG1sLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJvY3gtcGFnZS1oZWFkZXItb3ZlcmZsb3ctYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09DWF9QQUdFX0hFQURFUi5NT1JFX0FDVElPTlMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfUEFHRV9IRUFERVIuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxwLW1lbnUgI21lbnUgW3BvcHVwXT1cInRydWVcIiBbbW9kZWxdPVwib3ZlcmZsb3dBY3Rpb25zXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCI+IDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwib2JqZWN0LXBhbmVsXCIgW25nQ2xhc3NdPVwiZ2V0T2JqZWN0UGFuZWxMYXlvdXRDbGFzc2VzKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqZWN0RGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1pbmZvXCIgW25nQ2xhc3NdPVwiZ2V0T2JqZWN0SW5mb0xheW91dENsYXNzZXMoKVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9iamVjdERldGFpbHNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImZsZXggZm9udC1tZWRpdW0gdGV4dC02MDAgb2JqZWN0LWluZm8tZ3JpZC1sYWJlbFwiXG4gICAgICAgICAgbmFtZT1cIm9iamVjdC1kZXRhaWwtbGFiZWxcIlxuICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLmxhYmVsVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgPnt7IGl0ZW0ubGFiZWwgfCBkeW5hbWljUGlwZTppdGVtLmxhYmVsUGlwZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pY29uIHx8IGl0ZW0udmFsdWVcIiBjbGFzcz1cIm9iamVjdC1pbmZvLWdyaWQtdmFsdWVcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHRleHQtOTAwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB3LW1heFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZW5lcmF0ZUl0ZW1TdHlsZShpdGVtKVwiXG4gICAgICAgICAgICBuYW1lPVwib2JqZWN0LWRldGFpbC12YWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLnZhbHVlVG9vbHRpcCB8fCBpdGVtLnRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPSd7e2l0ZW0uaWNvbiArIFwiIFwiICsgKGl0ZW0uaWNvblN0eWxlQ2xhc3MgfHwgXCJcIil9fSdcbiAgICAgICAgICAgICAgICBuYW1lPVwib2JqZWN0LWRldGFpbC1pY29uXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB8IGR5bmFtaWNQaXBlOml0ZW0udmFsdWVQaXBlOml0ZW0udmFsdWVQaXBlQXJnc319XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmFjdGlvbkl0ZW1JY29uICYmIGl0ZW0uYWN0aW9uSXRlbUNhbGxiYWNrXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiaXRlbS5hY3Rpb25JdGVtSWNvblwiXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtMCB3LWZ1bGxcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiaXRlbS5hY3Rpb25JdGVtVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIoaXRlbS5hY3Rpb25JdGVtQXJpYUxhYmVsS2V5ID8gKGl0ZW0uYWN0aW9uSXRlbUFyaWFMYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBpdGVtLmFjdGlvbkl0ZW1BcmlhTGFiZWwpIHx8IGl0ZW0uYWN0aW9uSXRlbVRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJpdGVtLmFjdGlvbkl0ZW1DYWxsYmFjaygpXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7Ozs7Ozs7Ozs7OztBQW1FckUsTUFBTSxPQUFPLG1CQUFtQjtJQXdCOUIsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUE7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7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QkFBd0I7c0JBRHZCLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxNQUFNO2dCQUlQLHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEI7Z0JBSXhDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBNZW51SXRlbSwgUHJpbWVJY29ucyB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgY29uY2F0LCBtYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgQnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9icmVhZGNydW1iLnNlcnZpY2UnXG5pbXBvcnQgeyBQcmltZUljb24gfSBmcm9tICcuLi8uLi91dGlscy9wcmltZWljb24udXRpbHMnXG5cbi8qKlxuICogQWN0aW9uIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcbiAgaWQ/OiBzdHJpbmdcbiAgbGFiZWw/OiBzdHJpbmdcbiAgbGFiZWxLZXk/OiBzdHJpbmdcbiAgaWNvbj86IHN0cmluZ1xuICBpY29uUG9zPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbSdcbiAgLyoqXG4gICAqIFBlcm1pc3Npb24gZm9yIHRoaXMgYWN0aW9uLiBJZiB0aGUgY3VycmVudCB1c2VyIGRvZXMgbm90IGhhdmUgdGhpcyBwZXJtaXNzaW9uLCB0aGUgYWN0aW9uIHdpbGwgbm90IGJlIHNob3duLlxuICAgKi9cbiAgcGVybWlzc2lvbj86IHN0cmluZ1xuICB0aXRsZT86IHN0cmluZ1xuICB0aXRsZUtleT86IHN0cmluZ1xuICBhcmlhTGFiZWw/OiBzdHJpbmdcbiAgYXJpYUxhYmVsS2V5Pzogc3RyaW5nXG4gIGJ0bkNsYXNzPzogc3RyaW5nXG4gIGFjdGlvbkNhbGxiYWNrKCk6IHZvaWRcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGRpc2FibGVkVG9vbHRpcD86IHN0cmluZ1xuICBkaXNhYmxlZFRvb2x0aXBLZXk/OiBzdHJpbmdcbiAgc2hvdz86ICdhbHdheXMnIHwgJ2FzT3ZlcmZsb3cnXG4gIGNvbmRpdGlvbmFsPzogYm9vbGVhblxuICAvLyBOb3RlOiBUaGlzIGN1cnJlbnRseSBkb2Vzbid0IHdvcmsgd2l0aCBkeW5hbWljIHZhbHVlcywgc2luY2UgYSBwYXNzZWQgaW4gQWN0aW9uIGlzIGp1c3QgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBvYmplY3QuXG4gIC8vIEFzIGEgd29ya2Fyb3VuZCwgeW91IGNhbiBtYW51YWxseSB1cGRhdGUvcmVwbGFjZSB0aGUgcGFzc2VkIGluIEFjdGlvbiBpZiB5b3Ugd2lzaCB0byB1cGRhdGUgYSBzaG93Q29uZGl0aW9uXG4gIHNob3dDb25kaXRpb24/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0RGV0YWlsSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgdmFsdWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgdmFsdWVUb29sdGlwYCBpbnN0ZWFkXG4gICAqL1xuICB0b29sdGlwPzogc3RyaW5nXG4gIGxhYmVsVG9vbHRpcD86IHN0cmluZ1xuICB2YWx1ZVRvb2x0aXA/OiBzdHJpbmdcbiAgaWNvbj86IFByaW1lSWNvblxuICBpY29uU3R5bGVDbGFzcz86IHN0cmluZ1xuICBsYWJlbFBpcGU/OiBUeXBlPGFueT5cbiAgdmFsdWVQaXBlPzogVHlwZTxhbnk+XG4gIHZhbHVlUGlwZUFyZ3M/OiBzdHJpbmdcbiAgdmFsdWVDc3NDbGFzcz86IHN0cmluZ1xuICBhY3Rpb25JdGVtSWNvbj86IFByaW1lSWNvblxuICBhY3Rpb25JdGVtQ2FsbGJhY2s/OiAoKSA9PiB2b2lkXG4gIGFjdGlvbkl0ZW1Ub29sdGlwPzogc3RyaW5nXG4gIGFjdGlvbkl0ZW1BcmlhTGFiZWxLZXk/OiBzdHJpbmdcbiAgYWN0aW9uSXRlbUFyaWFMYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvbWVJdGVtIHtcbiAgbWVudUl0ZW06IE1lbnVJdGVtXG4gIHBhZ2U/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbk9wdGlvbnMgPSAxIHwgMiB8IDMgfCA0IHwgNiB8IDEyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1wYWdlLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmcgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGZpZ3VyZUJhY2tncm91bmQgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2hvd0ZpZ3VyZSA9IHRydWVcblxuICAvL2ltYWdlIGZvdCBwcmV2aWV3IGluIHRvcC1oZWFkZXIgbGVmdCBzaWRlXG4gIEBJbnB1dCgpXG4gIGZpZ3VyZUltYWdlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBkaXNhYmxlRGVmYXVsdEFjdGlvbnMgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHN1YmhlYWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgX2FjdGlvbnM6IEFjdGlvbltdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIGdldCBhY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zXG4gIH1cbiAgc2V0IGFjdGlvbnModmFsdWUpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gdmFsdWVcbiAgICB0aGlzLmdlbmVyYXRlSW5saW5lQWN0aW9ucygpXG4gICAgdGhpcy5nZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpXG4gIH1cblxuICBASW5wdXQoKVxuICBvYmplY3REZXRhaWxzOiBPYmplY3REZXRhaWxJdGVtW10gfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBzaG93QnJlYWRjcnVtYnMgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgbWFudWFsQnJlYWRjcnVtYnMgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIGVuYWJsZUdyaWRWaWV3OiB1bmRlZmluZWQgfCBib29sZWFuXG5cbiAgQElucHV0KClcbiAgZ3JpZExheW91dERlc2t0b3BDb2x1bW5zOiB1bmRlZmluZWQgfCBHcmlkQ29sdW1uT3B0aW9uc1xuXG4gIEBPdXRwdXQoKVxuICBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgQENvbnRlbnRDaGlsZCgnYWRkaXRpb25hbFRvb2xiYXJDb250ZW50JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgQENvbnRlbnRDaGlsZCgnYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCcpXG4gIGFkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBvdmVyZmxvd0FjdGlvbnM6IE1lbnVJdGVtW10gPSBbXVxuICBpbmxpbmVBY3Rpb25zOiBBY3Rpb25bXSB8IHVuZGVmaW5lZFxuICBkZCA9IG5ldyBEYXRlKClcbiAgYnJlYWRjcnVtYnMkITogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPlxuXG4gIGhvbWUkITogT2JzZXJ2YWJsZTxIb21lSXRlbT5cblxuICBmaWd1cmVJbWFnZUxvYWRFcnJvciA9IGZhbHNlXG5cbiAgb2JqZWN0UGFuZWxHcmlkTGF5b3V0Q2xhc3NlcyA9ICdncmlkIHJvdy1nYXAtMiBtLTAnXG4gIG9iamVjdFBhbmVsQ29sdW1uTGF5b3V0Q2xhc3NlcyA9ICdmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG92ZXJmbG93LXgtYXV0bydcblxuICBvYmplY3RQYW5lbERlZmF1bHRMYXlvdXRDbGFzc2VzID0gJ2ZsZXggZmxleC1jb2x1bW4gcm93LWdhcC0yIG1kOmZsZXgtcm93IG1kOmp1c3RpZnktY29udGVudC1iZXR3ZWVuJ1xuXG4gIG9iamVjdEluZm9HcmlkTGF5b3V0Q2xhc3NlcyA9ICdjb2wtMTIgZmxleCBnYXAtNCBtZDpjb2wtNiBhbGlnbi1pdGVtcy1jZW50ZXIgcC0wJ1xuICBvYmplY3RJbmZvQ29sdW1uTGF5b3V0Q2xhc3NlcyA9ICdmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtaW4tdy0xMjAnXG5cbiAgb2JqZWN0SW5mb0RlZmF1bHRMYXlvdXRDbGFzc2VzID0gJ2ZsZXggZmxleC1yb3cgbWQ6ZmxleC1jb2x1bW4gbWQ6YWxpZ24taXRlbXMtY2VudGVyIG1kOmdhcC0yJ1xuXG4gIHByb3RlY3RlZCBicmVhZGNydW1iczogQnJlYWRjcnVtYlNlcnZpY2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBicmVhZGNydW1iczogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5icmVhZGNydW1icyA9IGJyZWFkY3J1bWJzXG4gICAgdGhpcy5ob21lJCA9IGNvbmNhdChcbiAgICAgIG9mKHsgbWVudUl0ZW06IHsgaWNvbjogUHJpbWVJY29ucy5IT01FLCByb3V0ZXJMaW5rOiAnLycgfSB9KSxcbiAgICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRQb3J0YWwkLnBpcGUoXG4gICAgICAgIG1hcCgocG9ydGFsKSA9PiAoe1xuICAgICAgICAgIG1lbnVJdGVtOiB7XG4gICAgICAgICAgICBpY29uOiBQcmltZUljb25zLkhPTUUsXG4gICAgICAgICAgICByb3V0ZXJMaW5rOiBwb3J0YWwuYmFzZVVybCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZ2U6IHBvcnRhbC5wb3J0YWxOYW1lLFxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApXG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydhY3Rpb25zJ10pIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVJbmxpbmVBY3Rpb25zKClcbiAgICAgIHRoaXMuZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYW51YWxCcmVhZGNydW1icykge1xuICAgICAgdGhpcy5icmVhZGNydW1icyQgPSB0aGlzLmJyZWFkY3J1bWJzLmdlbmVyYXRlZEl0ZW1zU291cmNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnJlYWRjcnVtYnMkID0gdGhpcy5icmVhZGNydW1icy5pdGVtc0hhbmRsZXJcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0ZUlubGluZUFjdGlvbnMoKVxuICAgIHRoaXMuZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKVxuICB9XG5cbiAgb25BY3Rpb24oYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnc2F2ZSc6XG4gICAgICAgIHRoaXMuc2F2ZS5lbWl0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSW1hZ2VFcnJvcigpIHtcbiAgICB0aGlzLmZpZ3VyZUltYWdlTG9hZEVycm9yID0gdHJ1ZVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlSXRlbVN0eWxlKGl0ZW06IE9iamVjdERldGFpbEl0ZW0pOiBzdHJpbmcge1xuICAgIGxldCBzdHlsZSA9ICcnXG4gICAgaWYgKGl0ZW0uaWNvbikgc3R5bGUgPSBzdHlsZS5jb25jYXQoc3R5bGUsICcgJywgJ2dhcC0xIGFsaWduLWl0ZW1zLWNlbnRlcicpXG4gICAgaWYgKGl0ZW0udmFsdWVDc3NDbGFzcykgc3R5bGUgPSBzdHlsZS5jb25jYXQoc3R5bGUsICcgJywgaXRlbS52YWx1ZUNzc0NsYXNzKVxuICAgIHJldHVybiBzdHlsZVxuICB9XG5cbiAgcHVibGljIGdldE9iamVjdFBhbmVsTGF5b3V0Q2xhc3NlcygpIHtcbiAgICBpZiAodGhpcy5lbmFibGVHcmlkVmlldykge1xuICAgICAgcmV0dXJuIHRoaXMub2JqZWN0UGFuZWxHcmlkTGF5b3V0Q2xhc3Nlc1xuICAgIH1cbiAgICBpZiAodGhpcy5lbmFibGVHcmlkVmlldyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLm9iamVjdFBhbmVsQ29sdW1uTGF5b3V0Q2xhc3Nlc1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vYmplY3RQYW5lbERlZmF1bHRMYXlvdXRDbGFzc2VzXG4gIH1cblxuICBwdWJsaWMgZ2V0T2JqZWN0SW5mb0xheW91dENsYXNzZXMoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlR3JpZFZpZXcpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm9iamVjdEluZm9HcmlkTGF5b3V0Q2xhc3Nlc30gbGc6Y29sLSR7XG4gICAgICAgIHRoaXMuZ3JpZExheW91dERlc2t0b3BDb2x1bW5zID8gMTIgLyB0aGlzLmdyaWRMYXlvdXREZXNrdG9wQ29sdW1ucyA6IDRcbiAgICAgIH1gXG4gICAgfVxuICAgIGlmICh0aGlzLmVuYWJsZUdyaWRWaWV3ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRoaXMub2JqZWN0SW5mb0NvbHVtbkxheW91dENsYXNzZXNcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub2JqZWN0SW5mb0RlZmF1bHRMYXlvdXRDbGFzc2VzXG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbGlzdCBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGFuIG92ZXJmbG93IG1lbnVcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgLi4udGhpcy5hY3Rpb25zLm1hcCgoYSkgPT4gYS5sYWJlbEtleSB8fCAnJykuZmlsdGVyKChhKSA9PiAhIWEpLFxuICAgICAgICAuLi50aGlzLmFjdGlvbnMubWFwKChhKSA9PiBhLnRpdGxlS2V5IHx8ICcnKS5maWx0ZXIoKGEpID0+ICEhYSksXG4gICAgICBdXG4gICAgICBjb25zdCB0cmFuc2xhdGlvbnMkID0gdHJhbnNsYXRpb25LZXlzLmxlbmd0aCA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodHJhbnNsYXRpb25LZXlzKSA6IG9mKFtdKVxuICAgICAgdHJhbnNsYXRpb25zJC5zdWJzY3JpYmUoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBhbGxvd2VkQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgICAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChhKSA9PiBhLnNob3cgPT09ICdhc092ZXJmbG93JylcbiAgICAgICAgICAgIC5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGEuY29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5zaG93Q29uZGl0aW9uKSByZXR1cm4gYVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gYVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja0FjdGlvblBlcm1pc3Npb24oYWxsb3dlZEFjdGlvbnMsIGFjdGlvbilcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5vdmVyZmxvd0FjdGlvbnMgPSBbXG4gICAgICAgICAgICAuLi5hbGxvd2VkQWN0aW9ucy5tYXA8TWVudUl0ZW0+KChhKSA9PiAoe1xuICAgICAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICAgICAgbGFiZWw6IGEubGFiZWxLZXkgPyB0cmFuc2xhdGlvbnNbYS5sYWJlbEtleV0gOiBhLmxhYmVsLFxuICAgICAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgICAgIHRvb2x0aXBPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgdG9vbHRpcExhYmVsOiBhLnRpdGxlS2V5ID8gdHJhbnNsYXRpb25zW2EudGl0bGVLZXldIDogYS50aXRsZSxcbiAgICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ6ICdob3ZlcicsXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uOiAndG9wJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29tbWFuZDogYS5hY3Rpb25DYWxsYmFjayxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGEuZGlzYWJsZWQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBsaXN0IG9mIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgYXMgaW5saW5lIGJ1dHRvbnNcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVJbmxpbmVBY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbnMpIHtcbiAgICAgIC8vIFRlbXAgYXJyYXkgdG8gaG9sZCBhbGwgaW5saW5lIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyXG4gICAgICBjb25zdCBhbGxvd2VkQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMgZm9yIGFsbCBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkICdhbHdheXMnXG4gICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgLmZpbHRlcigoYSkgPT4gYS5zaG93ID09PSAnYWx3YXlzJylcbiAgICAgICAgLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICAgIGlmIChhLmNvbmRpdGlvbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5zaG93Q29uZGl0aW9uID8gYSA6IG51bGxcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIGFcbiAgICAgICAgfSlcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tBY3Rpb25QZXJtaXNzaW9uKGFsbG93ZWRBY3Rpb25zLCBhY3Rpb24pXG4gICAgICAgIH0pXG4gICAgICB0aGlzLmlubGluZUFjdGlvbnMgPSBbLi4uYWxsb3dlZEFjdGlvbnNdXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBBZGRzIGEgZ2l2ZW4gYWN0aW9uIHRvIGEgZ2l2ZW4gYXJyYXkgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIHNlZSBpdFxuICAgKiBAcGFyYW0gYWxsb3dlZEFjdGlvbnMgQXJyYXkgdGhhdCB0aGUgYWN0aW9uIHNob3VsZCBiZSBhZGRlZCB0byBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gc2VlIGl0XG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uIGZvciB3aGljaCBhIHBlcm1pc3Npb24gY2hlY2sgc2hvdWxkIGJlIGV4ZWN1dGVkXG4gICAqL1xuICBwcml2YXRlIGNoZWNrQWN0aW9uUGVybWlzc2lvbihhbGxvd2VkQWN0aW9uczogQWN0aW9uW10sIGFjdGlvbjogQWN0aW9uKSB7XG4gICAgaWYgKGFjdGlvbi5wZXJtaXNzaW9uKSB7XG4gICAgICBpZiAodGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKGFjdGlvbi5wZXJtaXNzaW9uKSkge1xuICAgICAgICAvLyBQdXNoIGFjdGlvbiB0byBhbGxvd2VkIGFycmF5IGlmIHVzZXIgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnNcbiAgICAgICAgYWxsb3dlZEFjdGlvbnMucHVzaChhY3Rpb24pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFB1c2ggYWN0aW9uIHRvIGFsbG93ZWQgYXJyYXkgaWYgbm8gcGVybWlzc2lvbiB3YXMgc3BlY2lmaWVkXG4gICAgICBhbGxvd2VkQWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvbmVjeC1wYWdlLWhlYWRlciBtYi00XCIgbmFtZT1cIm9jeC1wYWdlLWhlYWRlci13cmFwcGVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnJlYWRjcnVtYnNcIj5cbiAgICA8cC1icmVhZGNydW1iXG4gICAgICAqbmdJZj1cImJyZWFkY3J1bWJzJCB8IGFzeW5jIGFzIGl0ZW1zXCJcbiAgICAgIFttb2RlbF09XCJpdGVtc1wiXG4gICAgICBbaG9tZV09XCIoaG9tZSQgfCBhc3luYyk/Lm1lbnVJdGVtID8/IHt9XCJcbiAgICAgIFtob21lQXJpYUxhYmVsXT1cIihob21lJCB8IGFzeW5jKT8ucGFnZSA/ICgnT0NYX1BBR0VfSEVBREVSLkhPTUVfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGU6IHsgcGFnZTogKGhvbWUkIHwgYXN5bmMpPy5wYWdlfSkgOiAoJ09DWF9QQUdFX0hFQURFUi5IT01FX0RFRkFVTFRfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgIFthdHRyLm1hbnVhbF09XCJtYW51YWxCcmVhZGNydW1ic1wiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInNlcGFyYXRvclwiPiA8c3BhbiBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+IDwvbmctdGVtcGxhdGVcbiAgICA+PC9wLWJyZWFkY3J1bWI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwLTMgdGl0bGUtYmFyIGZsZXggZmxleC1yb3cgZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS13cmFwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXItMiBmaWd1cmUgcmVsYXRpdmUgZmxleCBoLTJyZW0gdy0ycmVtIG1kOmgtM3JlbSBtZDp3LTNyZW1cIiAqbmdJZj1cInNob3dGaWd1cmVcIj5cbiAgICAgICAgPGRpdiAjcHJldmlld0ltYWdlIGNsYXNzPVwiZmlndXJlLWltYWdlIGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGJvdHRvbS0wXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZpZ3VyZUltYWdlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdJZj1cImZpZ3VyZUltYWdlICYmICFmaWd1cmVJbWFnZUxvYWRFcnJvclwiXG4gICAgICAgICAgICBbb2N4U3JjXT1cImZpZ3VyZUltYWdlXCJcbiAgICAgICAgICAgIFthbHRdPVwiJ09DWF9QQUdFX0hFQURFUi5JTUFHRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLXJvdW5kLXNtXCJcbiAgICAgICAgICAgIChlcnJvcik9XCJoYW5kbGVJbWFnZUVycm9yKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2xvcmJsb2IgZmxleC0xIGJvcmRlci1yb3VuZFwiXG4gICAgICAgICAgKm5nSWY9XCJwcmV2aWV3SW1hZ2UuY2hpbGRyZW4ubGVuZ3RoID09PSAwIHx8IGZpZ3VyZUltYWdlTG9hZEVycm9yXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uQmFyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGp1c3RpZnktY29udGVudC1ldmVubHlcIj5cbiAgICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjEwcmVtXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMTByZW1cIj48L3Atc2tlbGV0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiaGVhZGVyXCIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBza2VsZXRvbkJhclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1BhZ2UgSGVhZGVyJ1wiPlxuICAgICAgICA8aDEgaWQ9XCJwYWdlLWhlYWRlclwiICpuZ0lmPVwiISFoZWFkZXJcIj57eyBoZWFkZXIgfX08L2gxPlxuICAgICAgICA8ZGl2IGlkPVwicGFnZS1zdWJoZWFkZXJcIiAqbmdJZj1cIiEhc3ViaGVhZGVyXCIgcm9sZT1cIm5vdGVcIj57eyBzdWJoZWFkZXIgfX08L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbXMtd3JhcCBtdC0yIG1kOm10LTBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZURlZmF1bHRBY3Rpb25zXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbkFjdGlvbnM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCI1cmVtXCIgaGVpZ2h0PVwiMnJlbVwiIHN0eWxlQ2xhc3M9XCJtci0yXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMnJlbVwiIGhlaWdodD1cIjJyZW1cIiBzdHlsZUNsYXNzPVwibWItMlwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIHNrZWxldG9uQWN0aW9uc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5saW5lQWN0aW9ucyAmJiBpbmxpbmVBY3Rpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cInRvb2xiYXIgZmxleCBmbGV4LXdyYXAgZ2FwLTEgc206Z2FwLTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lQWN0aW9uc1wiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImFjdGlvbi5kaXNhYmxlZCA/IChhY3Rpb24uZGlzYWJsZWRUb29sdGlwS2V5ID8gKGFjdGlvbi5kaXNhYmxlZFRvb2x0aXBLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmRpc2FibGVkVG9vbHRpcCkgOiAoYWN0aW9uLnRpdGxlS2V5ID8gKGFjdGlvbi50aXRsZUtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24udGl0bGUpXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICBpZD1cInt7IGFjdGlvbi5pZCB9fVwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gPz8gJydcIlxuICAgICAgICAgICAgICAgIFtpY29uUG9zXT1cImFjdGlvbi5pY29uUG9zID8/ICdsZWZ0J1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWxcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGlvbi5hY3Rpb25DYWxsYmFjaygpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkID8gYWN0aW9uLmRpc2FibGVkIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiYWN0aW9uLmljb24gPyAnb2N4LXBhZ2UtaGVhZGVyLWlubGluZS1hY3Rpb24taWNvbi1idXR0b24nIDogJ29jeC1wYWdlLWhlYWRlci1pbmxpbmUtYWN0aW9uLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiIChhY3Rpb24uYXJpYUxhYmVsS2V5ID8gKGFjdGlvbi5hcmlhTGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmFyaWFMYWJlbCkgfHwgKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKSB8fCAoYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWwpXCJcbiAgICAgICAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhckl0ZW1zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3ZlcmZsb3dBY3Rpb25zLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInBhZ2VIZWFkZXJNZW51QnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVsbGlwc2lzLXZcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vcmUtYWN0aW9ucy1tZW51LWJ1dHRvbiBhY3Rpb24tYnV0dG9uIG1sLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJvY3gtcGFnZS1oZWFkZXItb3ZlcmZsb3ctYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09DWF9QQUdFX0hFQURFUi5NT1JFX0FDVElPTlMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfUEFHRV9IRUFERVIuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxwLW1lbnUgI21lbnUgW3BvcHVwXT1cInRydWVcIiBbbW9kZWxdPVwib3ZlcmZsb3dBY3Rpb25zXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCI+IDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwib2JqZWN0LXBhbmVsXCIgW25nQ2xhc3NdPVwiZ2V0T2JqZWN0UGFuZWxMYXlvdXRDbGFzc2VzKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqZWN0RGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC1pbmZvXCIgW25nQ2xhc3NdPVwiZ2V0T2JqZWN0SW5mb0xheW91dENsYXNzZXMoKVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9iamVjdERldGFpbHNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImZsZXggZm9udC1tZWRpdW0gdGV4dC02MDAgb2JqZWN0LWluZm8tZ3JpZC1sYWJlbFwiXG4gICAgICAgICAgbmFtZT1cIm9iamVjdC1kZXRhaWwtbGFiZWxcIlxuICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLmxhYmVsVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgPnt7IGl0ZW0ubGFiZWwgfCBkeW5hbWljUGlwZTppdGVtLmxhYmVsUGlwZSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5pY29uIHx8IGl0ZW0udmFsdWVcIiBjbGFzcz1cIm9iamVjdC1pbmZvLWdyaWQtdmFsdWVcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IHRleHQtOTAwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB3LW1heFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZW5lcmF0ZUl0ZW1TdHlsZShpdGVtKVwiXG4gICAgICAgICAgICBuYW1lPVwib2JqZWN0LWRldGFpbC12YWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJpdGVtLnZhbHVlVG9vbHRpcCB8fCBpdGVtLnRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPSd7e2l0ZW0uaWNvbiArIFwiIFwiICsgKGl0ZW0uaWNvblN0eWxlQ2xhc3MgfHwgXCJcIil9fSdcbiAgICAgICAgICAgICAgICBuYW1lPVwib2JqZWN0LWRldGFpbC1pY29uXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB8IGR5bmFtaWNQaXBlOml0ZW0udmFsdWVQaXBlOml0ZW0udmFsdWVQaXBlQXJnc319XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmFjdGlvbkl0ZW1JY29uICYmIGl0ZW0uYWN0aW9uSXRlbUNhbGxiYWNrXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiaXRlbS5hY3Rpb25JdGVtSWNvblwiXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtMCB3LWZ1bGxcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiaXRlbS5hY3Rpb25JdGVtVG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIHRvb2x0aXBFdmVudD1cImhvdmVyXCJcbiAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCIoaXRlbS5hY3Rpb25JdGVtQXJpYUxhYmVsS2V5ID8gKGl0ZW0uYWN0aW9uSXRlbUFyaWFMYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBpdGVtLmFjdGlvbkl0ZW1BcmlhTGFiZWwpIHx8IGl0ZW0uYWN0aW9uSXRlbVRvb2x0aXAgfHwgJydcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJpdGVtLmFjdGlvbkl0ZW1DYWxsYmFjaygpXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -145,11 +145,11 @@ export class SearchHeaderComponent {
145
145
  return this.visibleFormControls.some((formControl) => formControl.name !== null && String(formControl.name) === control);
146
146
  }
147
147
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchHeaderComponent, deps: [{ token: i1.ConfigurationService }], target: i0.ɵɵFactoryTarget.Component }); }
148
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchHeaderComponent, selector: "ocx-search-header", inputs: { header: "header", headline: "headline", subheader: "subheader", viewMode: "viewMode", manualBreadcrumbs: "manualBreadcrumbs", actions: "actions", searchConfigPermission: "searchConfigPermission", searchButtonDisabled: "searchButtonDisabled", resetButtonDisabled: "resetButtonDisabled", pageName: "pageName" }, outputs: { searched: "searched", resetted: "resetted", selectedSearchConfigChanged: "selectedSearchConfigChanged", viewModeChanged: "viewModeChanged", componentStateChanged: "componentStateChanged" }, providers: [], queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }, { propertyName: "formGroup", first: true, predicate: FormGroupDirective, descendants: true }, { propertyName: "visibleFormControls", predicate: FormControlName, descendants: true }], viewQueries: [{ propertyName: "searchParameterFields", first: true, predicate: ["searchParameterFields"], descendants: true }], ngImport: i0, template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ng-container *ngIf=\"searchConfigChangeObserved && pageName\">\n <ocx-slot\n *ocxIfPermission=\"searchConfigPermission\"\n name=\"onecx-search-config\"\n [inputs]=\"{ pageName: pageName, currentFieldValues: fieldValues$ | async, viewMode: viewMode }\"\n [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </ng-container>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <div>\n <div #searchParameterFields>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\" [ngClass]=\"searchButtonsReversed ? 'flex-row-reverse' : 'flex-row'\">\n <p-button\n id=\"resetButton\"\n *ngIf=\"resetted.observed\"\n (onClick)=\"onResetClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [disabled]=\"resetButtonDisabled\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n >\n </p-button>\n\n <p-button\n id=\"searchButton\"\n (onClick)=\"onSearchClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-search\"\n pTooltip=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n >\n </p-button>\n </div>\n </div>\n</ocx-page-header>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i6.SlotComponent, selector: "ocx-slot[name]", inputs: ["name", "inputs", "outputs"] }, { kind: "component", type: i7.PageHeaderComponent, selector: "ocx-page-header", inputs: ["header", "loading", "figureBackground", "showFigure", "figureImage", "disableDefaultActions", "subheader", "actions", "objectDetails", "showBreadcrumbs", "manualBreadcrumbs", "enableGridView", "gridLayoutDesktopColumns"], outputs: ["save"] }, { kind: "directive", type: i8.IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: ["ocxIfPermission", "ocxIfNotPermission", "onMissingPermission", "ocxIfPermissionPermissions", "ocxIfNotPermissionPermissions", "ocxIfPermissionElseTemplate", "ocxIfNotPermissionElseTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchHeaderComponent, selector: "ocx-search-header", inputs: { header: "header", headline: "headline", subheader: "subheader", viewMode: "viewMode", manualBreadcrumbs: "manualBreadcrumbs", actions: "actions", searchConfigPermission: "searchConfigPermission", searchButtonDisabled: "searchButtonDisabled", resetButtonDisabled: "resetButtonDisabled", pageName: "pageName" }, outputs: { searched: "searched", resetted: "resetted", selectedSearchConfigChanged: "selectedSearchConfigChanged", viewModeChanged: "viewModeChanged", componentStateChanged: "componentStateChanged" }, providers: [], queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }, { propertyName: "formGroup", first: true, predicate: FormGroupDirective, descendants: true }, { propertyName: "visibleFormControls", predicate: FormControlName, descendants: true }], viewQueries: [{ propertyName: "searchParameterFields", first: true, predicate: ["searchParameterFields"], descendants: true }], ngImport: i0, template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ng-container *ngIf=\"searchConfigChangeObserved && pageName\">\n <ocx-slot\n *ocxIfPermission=\"searchConfigPermission\"\n name=\"onecx-search-config\"\n [inputs]=\"{ pageName: pageName, currentFieldValues: fieldValues$ | async, viewMode: viewMode }\"\n [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </ng-container>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n <ng-content></ng-content>\n </section>\n <section\n class=\"flex flex-wrap gap-2\"\n [ngClass]=\"searchButtonsReversed ? 'flex-row-reverse' : 'flex-row'\"\n [attr.aria-label]=\"'Search Controls'\"\n >\n <p-button\n id=\"resetButton\"\n icon=\"pi pi-eraser\"\n (onClick)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n </section>\n </div>\n</ocx-page-header>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i5.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i6.SlotComponent, selector: "ocx-slot[name]", inputs: ["name", "inputs", "outputs"] }, { kind: "component", type: i7.PageHeaderComponent, selector: "ocx-page-header", inputs: ["header", "loading", "figureBackground", "showFigure", "figureImage", "disableDefaultActions", "subheader", "actions", "objectDetails", "showBreadcrumbs", "manualBreadcrumbs", "enableGridView", "gridLayoutDesktopColumns"], outputs: ["save"] }, { kind: "directive", type: i8.IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: ["ocxIfPermission", "ocxIfNotPermission", "onMissingPermission", "ocxIfPermissionPermissions", "ocxIfNotPermissionPermissions", "ocxIfPermissionElseTemplate", "ocxIfNotPermissionElseTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
149
149
  }
150
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchHeaderComponent, decorators: [{
151
151
  type: Component,
152
- args: [{ selector: 'ocx-search-header', providers: [], template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ng-container *ngIf=\"searchConfigChangeObserved && pageName\">\n <ocx-slot\n *ocxIfPermission=\"searchConfigPermission\"\n name=\"onecx-search-config\"\n [inputs]=\"{ pageName: pageName, currentFieldValues: fieldValues$ | async, viewMode: viewMode }\"\n [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </ng-container>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <div>\n <div #searchParameterFields>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\" [ngClass]=\"searchButtonsReversed ? 'flex-row-reverse' : 'flex-row'\">\n <p-button\n id=\"resetButton\"\n *ngIf=\"resetted.observed\"\n (onClick)=\"onResetClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-eraser\"\n pTooltip=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [disabled]=\"resetButtonDisabled\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n >\n </p-button>\n\n <p-button\n id=\"searchButton\"\n (onClick)=\"onSearchClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-search\"\n pTooltip=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n >\n </p-button>\n </div>\n </div>\n</ocx-page-header>\n" }]
152
+ args: [{ selector: 'ocx-search-header', providers: [], template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ng-container *ngIf=\"searchConfigChangeObserved && pageName\">\n <ocx-slot\n *ocxIfPermission=\"searchConfigPermission\"\n name=\"onecx-search-config\"\n [inputs]=\"{ pageName: pageName, currentFieldValues: fieldValues$ | async, viewMode: viewMode }\"\n [outputs]=\"{ searchConfigSelected: searchConfigChangedSlotEmitter }\"\n >\n <ng-template #skeleton>\n <div class=\"flex\">\n <p-skeleton width=\"18rem\" height=\"3rem\"></p-skeleton>\n </div>\n </ng-template>\n </ocx-slot>\n </ng-container>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n\n <div class=\"flex row-gap-3 column-gap-6 flex-wrap align-items-center\">\n <section #searchParameterFields [attr.aria-label]=\"'Search Criteria'\">\n <ng-content></ng-content>\n </section>\n <section\n class=\"flex flex-wrap gap-2\"\n [ngClass]=\"searchButtonsReversed ? 'flex-row-reverse' : 'flex-row'\"\n [attr.aria-label]=\"'Search Controls'\"\n >\n <p-button\n id=\"resetButton\"\n icon=\"pi pi-eraser\"\n (onClick)=\"onResetClicked()\"\n [disabled]=\"resetButtonDisabled\"\n [label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n <p-button\n id=\"searchButton\"\n icon=\"pi pi-search\"\n (onClick)=\"onSearchClicked()\"\n [disabled]=\"searchButtonDisabled || formGroup?.invalid\"\n [label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate\"\n [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.ARIA_LABEL' | translate\"\n [pTooltip]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n tooltipPosition=\"top\"\n tooltipEvent=\"hover\"\n >\n </p-button>\n </section>\n </div>\n</ocx-page-header>\n" }]
153
153
  }], ctorParameters: () => [{ type: i1.ConfigurationService }], propDecorators: { header: [{
154
154
  type: Input
155
155
  }], headline: [{
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
196
196
  type: ViewChild,
197
197
  args: ['searchParameterFields']
198
198
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsZUFBZSxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUFjLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7Ozs7Ozs7Ozs7QUFjdkY7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBR2hDOztPQUVHO0lBQ0gsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLENBQUM7SUFHRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDdkIs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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vcGFnZS1oZWFkZXIvcGFnZS1oZWFkZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xOYW1lLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBtYXAsIG9mLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tICdAb25lY3gvYWNjZWxlcmF0b3InXG5pbXBvcnQgeyBDT05GSUdfS0VZLCBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hIZWFkZXJDb21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZVZpZXdNb2RlPzogJ2Jhc2ljJyB8ICdhZHZhbmNlZCdcbiAgc2VsZWN0ZWRTZWFyY2hDb25maWc/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQ29uZmlnRGF0YSB7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBmaWVsZFZhbHVlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICBkaXNwbGF5ZWRDb2x1bW5zSWRzOiBzdHJpbmdbXVxuICB2aWV3TW9kZTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCdcbn1cblxuLyoqXG4gKiBUbyB0cmlnZ2VyIHRoZSBzZWFyY2ggd2hlbiBFbnRlciBrZXkgaXMgcHJlc3NlZCBpbnNpZGUgYSBzZWFyY2ggcGFyYW1ldGVyIGZpZWxkLFxuICogYW4gRXZlbnRMaXN0ZW5lciBmb3Iga2V5dXAgZW50ZXIgZXZlbnQgaXMgYWRkZWQgZm9yIEhUTUwgZWxlbWVudHMgd2hpY2ggaGF2ZSBhbiBpbnB1dC5cbiAqIFBsZWFzZSBhZGQgdGhlIEV2ZW50TGlzdGVuZXIgeW91cnNlbGYgbWFudWFsbHksIGlmIHlvdSB3YW50IHRvIGhhdmUgdGhhdCBmdW5jdGlvbmFsaXR5IGZvciBzb21lIG90aGVyIGVsZW1lbnRzXG4gKiB3aGljaCBkbyBub3QgaGF2ZSBhbiBpbnB1dCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtc2VhcmNoLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGhlYWRlciA9ICcnXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgYnkgaGVhZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaGVhZGxpbmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJcbiAgfVxuICBzZXQgaGVhZGxpbmUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaGVhZGVyID0gdmFsdWVcbiAgfVxuICBASW5wdXQoKSBzdWJoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBfdmlld01vZGU6ICdiYXNpYycgfCAnYWR2YW5jZWQnID0gJ2Jhc2ljJ1xuICBASW5wdXQoKVxuICBnZXQgdmlld01vZGUoKTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCcge1xuICAgIHJldHVybiB0aGlzLl92aWV3TW9kZVxuICB9XG4gIHNldCB2aWV3TW9kZSh2aWV3TW9kZTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCcpIHtcbiAgICBpZiAodGhpcy52aWV3TW9kZSAhPT0gdmlld01vZGUpIHtcbiAgICAgIHRoaXMuX3ZpZXdNb2RlID0gdmlld01vZGVcbiAgICAgIHRoaXMudmlld01vZGVDaGFuZ2VkPy5lbWl0KHRoaXMudmlld01vZGUpXG4gICAgICB0aGlzLmNvbXBvbmVudFN0YXRlQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgYWN0aXZlVmlld01vZGU6IHRoaXMudmlld01vZGUsXG4gICAgICB9KVxuICAgICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGRLZXlVcEV2ZW50TGlzdGVuZXIoKSlcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWFudWFsQnJlYWRjcnVtYnMgPSBmYWxzZVxuICBfYWN0aW9uczogQWN0aW9uW10gPSBbXVxuICBASW5wdXQoKVxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1xuICB9XG4gIHNldCBhY3Rpb25zKHZhbHVlKSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IHZhbHVlXG4gICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgfVxuICBASW5wdXQoKSBzZWFyY2hDb25maWdQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzZWFyY2hCdXR0b25EaXNhYmxlZCA9IGZhbHNlXG4gIEBJbnB1dCgpIHJlc2V0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZVxuICBASW5wdXQoKSBwYWdlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gZ2V0TG9jYXRpb24oKS5hcHBsaWNhdGlvblBhdGhcblxuICBAT3V0cHV0KCkgc2VhcmNoZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSByZXNldHRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaENvbmZpZ0RhdGEgfCB1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSB2aWV3TW9kZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjwnYmFzaWMnIHwgJ2FkdmFuY2VkJz4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGNvbXBvbmVudFN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaEhlYWRlckNvbXBvbmVudFN0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBnZXQgX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcbiAgfVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIGdldCBfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XG4gIH1cblxuICBnZXQgc2VhcmNoQ29uZmlnQ2hhbmdlT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkLm9ic2VydmVkXG4gIH1cblxuICBAQ29udGVudENoaWxkKEZvcm1Hcm91cERpcmVjdGl2ZSkgZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZHJlbihGb3JtQ29udHJvbE5hbWUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgdmlzaWJsZUZvcm1Db250cm9scyE6IFF1ZXJ5TGlzdDxGb3JtQ29udHJvbE5hbWU+XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoUGFyYW1ldGVyRmllbGRzJykgc2VhcmNoUGFyYW1ldGVyRmllbGRzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgaGFzQWR2YW5jZWQgPSBmYWxzZVxuXG4gIHNpbXBsZUFkdmFuY2VkQWN0aW9uOiBBY3Rpb24gPSB7XG4gICAgaWQ6ICdzaW1wbGVBZHZhbmNlZEJ1dHRvbicsXG4gICAgYWN0aW9uQ2FsbGJhY2s6ICgpID0+IHRoaXMudG9nZ2xlVmlld01vZGUoKSxcbiAgICBzaG93OiAnYWx3YXlzJyxcbiAgfVxuICBoZWFkZXJBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG4gIHNlYXJjaEJ1dHRvbnNSZXZlcnNlZCA9IGZhbHNlXG4gIGZpZWxkVmFsdWVzJDogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4gfCB1bmRlZmluZWQgPSBvZih7fSlcbiAgc2VhcmNoQ29uZmlnQ2hhbmdlZFNsb3RFbWl0dGVyOiBFdmVudEVtaXR0ZXI8U2VhcmNoQ29uZmlnRGF0YSB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLnNlYXJjaENvbmZpZ0NoYW5nZWRTbG90RW1pdHRlci5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIHNlbGVjdGVkU2VhcmNoQ29uZmlnOiBjb25maWc/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIH0pXG4gICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZC5lbWl0KGNvbmZpZylcbiAgICB9KVxuICAgIHRoaXMuc2VhcmNoQnV0dG9uc1JldmVyc2VkID1cbiAgICAgIGNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFByb3BlcnR5KENPTkZJR19LRVkuT05FQ1hfUE9SVEFMX1NFQVJDSF9CVVRUT05TX1JFVkVSU0VEKSA9PT0gJ3RydWUnXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoe30pKSxcbiAgICAgICAgdGhpcy52aXNpYmxlRm9ybUNvbnRyb2xzLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIG1hcCgoW3ZhbHVlcywgX10pID0+XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWVzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2tleV06IHRoaXMuaXNWaXNpYmxlKGtleSkgPyB2YWx1ZSB8fCB1bmRlZmluZWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkS2V5VXBFdmVudExpc3RlbmVyKClcbiAgfVxuXG4gIHRvZ2dsZVZpZXdNb2RlKCkge1xuICAgIHRoaXMudmlld01vZGUgPSB0aGlzLnZpZXdNb2RlID09PSAnYmFzaWMnID8gJ2FkdmFuY2VkJyA6ICdiYXNpYydcbiAgfVxuXG4gIG9uUmVzZXRDbGlja2VkKCkge1xuICAgIHRoaXMucmVzZXR0ZWQuZW1pdCgpXG4gIH1cblxuICBvblNlYXJjaENsaWNrZWQoKSB7XG4gICAgdGhpcy5zZWFyY2hlZC5lbWl0KClcbiAgfVxuXG4gIHVwZGF0ZUhlYWRlckFjdGlvbnMoKSB7XG4gICAgY29uc3QgaGVhZGVyQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgIGlmICh0aGlzLmhhc0FkdmFuY2VkKSB7XG4gICAgICB0aGlzLnNpbXBsZUFkdmFuY2VkQWN0aW9uLmxhYmVsS2V5ID0gdGhpcy52aWV3TW9kZSA9PT0gJ2Jhc2ljJ1xuICAgICAgPyAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5BRFZBTkNFRC5URVhUJ1xuICAgICAgOiAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5TSU1QTEUuVEVYVCcsXG4gICAgICB0aGlzLnNpbXBsZUFkdmFuY2VkQWN0aW9uLnRpdGxlS2V5ID0gdGhpcy52aWV3TW9kZSA9PT0gJ2Jhc2ljJ1xuICAgICAgPyAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5BRFZBTkNFRC5ERVRBSUwnXG4gICAgICA6ICdPQ1hfU0VBUkNIX0hFQURFUi5UT0dHTEVfQlVUVE9OLlNJTVBMRS5ERVRBSUwnLFxuICAgICAgXG4gICAgICBoZWFkZXJBY3Rpb25zLnB1c2godGhpcy5zaW1wbGVBZHZhbmNlZEFjdGlvbilcbiAgICB9XG4gICAgdGhpcy5oZWFkZXJBY3Rpb25zID0gaGVhZGVyQWN0aW9ucy5jb25jYXQodGhpcy5hY3Rpb25zKVxuICB9XG5cbiAgYWRkS2V5VXBFdmVudExpc3RlbmVyKCkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudHMgPSB0aGlzLnNlYXJjaFBhcmFtZXRlckZpZWxkcz8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpXG4gICAgaW5wdXRFbGVtZW50cy5mb3JFYWNoKChpbnB1dEVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKCFpbnB1dEVsZW1lbnQubGlzdGVuZXJBZGRlZCkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQ6IGFueSkgPT4gdGhpcy5vblNlYXJjaEtleXVwKGV2ZW50KSlcbiAgICAgICAgaW5wdXRFbGVtZW50Lmxpc3RlbmVyQWRkZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uU2VhcmNoS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uU2VhcmNoQ2xpY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1Zpc2libGUoY29udHJvbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUZvcm1Db250cm9scy5zb21lKFxuICAgICAgKGZvcm1Db250cm9sKSA9PiBmb3JtQ29udHJvbC5uYW1lICE9PSBudWxsICYmIFN0cmluZyhmb3JtQ29udHJvbC5uYW1lKSA9PT0gY29udHJvbFxuICAgIClcbiAgfVxufVxuIiwiPG9jeC1wYWdlLWhlYWRlclxuICBbaGVhZGVyXT1cImhlYWRlciB8fCAoJ09DWF9TRUFSQ0hfSEVBREVSLkhFQURFUicgfCB0cmFuc2xhdGUpXCJcbiAgW3N1YmhlYWRlcl09XCJzdWJoZWFkZXJcIlxuICBbbWFudWFsQnJlYWRjcnVtYnNdPVwibWFudWFsQnJlYWRjcnVtYnNcIlxuICBbYWN0aW9uc109XCJoZWFkZXJBY3Rpb25zXCJcbj5cbiAgPG5nLXRlbXBsYXRlICNhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hDb25maWdDaGFuZ2VPYnNlcnZlZCAmJiBwYWdlTmFtZVwiPlxuICAgICAgPG9jeC1zbG90XG4gICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJzZWFyY2hDb25maWdQZXJtaXNzaW9uXCJcbiAgICAgICAgbmFtZT1cIm9uZWN4LXNlYXJjaC1jb25maWdcIlxuICAgICAgICBbaW5wdXRzXT1cInsgcGFnZU5hbWU6IHBhZ2VOYW1lLCBjdXJyZW50RmllbGRWYWx1ZXM6IGZpZWxkVmFsdWVzJCB8IGFzeW5jLCB2aWV3TW9kZTogdmlld01vZGUgfVwiXG4gICAgICAgIFtvdXRwdXRzXT1cInsgc2VhcmNoQ29uZmlnU2VsZWN0ZWQ6IHNlYXJjaENvbmZpZ0NoYW5nZWRTbG90RW1pdHRlciB9XCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCIxOHJlbVwiIGhlaWdodD1cIjNyZW1cIj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L29jeC1zbG90PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IHJvdy1nYXAtMyBjb2x1bW4tZ2FwLTYgZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2ICNzZWFyY2hQYXJhbWV0ZXJGaWVsZHM+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiIFtuZ0NsYXNzXT1cInNlYXJjaEJ1dHRvbnNSZXZlcnNlZCA/ICdmbGV4LXJvdy1yZXZlcnNlJyA6ICdmbGV4LXJvdydcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBpZD1cInJlc2V0QnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJyZXNldHRlZC5vYnNlcnZlZFwiXG4gICAgICAgIChvbkNsaWNrKT1cIm9uUmVzZXRDbGlja2VkKClcIlxuICAgICAgICBsYWJlbD1cInt7ICdPQ1hfU0VBUkNIX0hFQURFUi5SRVNFVF9CVVRUT04uVEVYVCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBpY29uPVwicGkgcGktZXJhc2VyXCJcbiAgICAgICAgcFRvb2x0aXA9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZXNldEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCInT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLkFSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgIDwvcC1idXR0b24+XG5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBpZD1cInNlYXJjaEJ1dHRvblwiXG4gICAgICAgIChvbkNsaWNrKT1cIm9uU2VhcmNoQ2xpY2tlZCgpXCJcbiAgICAgICAgbGFiZWw9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuU0VBUkNIX0JVVFRPTi5URVhUJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICBwVG9vbHRpcD1cInt7ICdPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCdXR0b25EaXNhYmxlZCB8fCBmb3JtR3JvdXA/LmludmFsaWRcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkFSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgIDwvcC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9vY3gtcGFnZS1oZWFkZXI+XG4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsZUFBZSxFQUFhLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0UsT0FBTyxFQUFjLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7Ozs7Ozs7Ozs7QUFjdkY7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBR2hDOztPQUVHO0lBQ0gsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLENBQUM7SUFHRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDdkIs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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vcGFnZS1oZWFkZXIvcGFnZS1oZWFkZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xOYW1lLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBtYXAsIG9mLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tICdAb25lY3gvYWNjZWxlcmF0b3InXG5pbXBvcnQgeyBDT05GSUdfS0VZLCBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hIZWFkZXJDb21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZVZpZXdNb2RlPzogJ2Jhc2ljJyB8ICdhZHZhbmNlZCdcbiAgc2VsZWN0ZWRTZWFyY2hDb25maWc/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQ29uZmlnRGF0YSB7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBmaWVsZFZhbHVlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICBkaXNwbGF5ZWRDb2x1bW5zSWRzOiBzdHJpbmdbXVxuICB2aWV3TW9kZTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCdcbn1cblxuLyoqXG4gKiBUbyB0cmlnZ2VyIHRoZSBzZWFyY2ggd2hlbiBFbnRlciBrZXkgaXMgcHJlc3NlZCBpbnNpZGUgYSBzZWFyY2ggcGFyYW1ldGVyIGZpZWxkLFxuICogYW4gRXZlbnRMaXN0ZW5lciBmb3Iga2V5dXAgZW50ZXIgZXZlbnQgaXMgYWRkZWQgZm9yIEhUTUwgZWxlbWVudHMgd2hpY2ggaGF2ZSBhbiBpbnB1dC5cbiAqIFBsZWFzZSBhZGQgdGhlIEV2ZW50TGlzdGVuZXIgeW91cnNlbGYgbWFudWFsbHksIGlmIHlvdSB3YW50IHRvIGhhdmUgdGhhdCBmdW5jdGlvbmFsaXR5IGZvciBzb21lIG90aGVyIGVsZW1lbnRzXG4gKiB3aGljaCBkbyBub3QgaGF2ZSBhbiBpbnB1dCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtc2VhcmNoLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGhlYWRlciA9ICcnXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgYnkgaGVhZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaGVhZGxpbmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJcbiAgfVxuICBzZXQgaGVhZGxpbmUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaGVhZGVyID0gdmFsdWVcbiAgfVxuICBASW5wdXQoKSBzdWJoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBfdmlld01vZGU6ICdiYXNpYycgfCAnYWR2YW5jZWQnID0gJ2Jhc2ljJ1xuICBASW5wdXQoKVxuICBnZXQgdmlld01vZGUoKTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCcge1xuICAgIHJldHVybiB0aGlzLl92aWV3TW9kZVxuICB9XG4gIHNldCB2aWV3TW9kZSh2aWV3TW9kZTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCcpIHtcbiAgICBpZiAodGhpcy52aWV3TW9kZSAhPT0gdmlld01vZGUpIHtcbiAgICAgIHRoaXMuX3ZpZXdNb2RlID0gdmlld01vZGVcbiAgICAgIHRoaXMudmlld01vZGVDaGFuZ2VkPy5lbWl0KHRoaXMudmlld01vZGUpXG4gICAgICB0aGlzLmNvbXBvbmVudFN0YXRlQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgYWN0aXZlVmlld01vZGU6IHRoaXMudmlld01vZGUsXG4gICAgICB9KVxuICAgICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hZGRLZXlVcEV2ZW50TGlzdGVuZXIoKSlcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWFudWFsQnJlYWRjcnVtYnMgPSBmYWxzZVxuICBfYWN0aW9uczogQWN0aW9uW10gPSBbXVxuICBASW5wdXQoKVxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1xuICB9XG4gIHNldCBhY3Rpb25zKHZhbHVlKSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IHZhbHVlXG4gICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgfVxuICBASW5wdXQoKSBzZWFyY2hDb25maWdQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzZWFyY2hCdXR0b25EaXNhYmxlZCA9IGZhbHNlXG4gIEBJbnB1dCgpIHJlc2V0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZVxuICBASW5wdXQoKSBwYWdlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gZ2V0TG9jYXRpb24oKS5hcHBsaWNhdGlvblBhdGhcblxuICBAT3V0cHV0KCkgc2VhcmNoZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSByZXNldHRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaENvbmZpZ0RhdGEgfCB1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSB2aWV3TW9kZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjwnYmFzaWMnIHwgJ2FkdmFuY2VkJz4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIGNvbXBvbmVudFN0YXRlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaEhlYWRlckNvbXBvbmVudFN0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBnZXQgX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcbiAgfVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIGdldCBfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XG4gIH1cblxuICBnZXQgc2VhcmNoQ29uZmlnQ2hhbmdlT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkLm9ic2VydmVkXG4gIH1cblxuICBAQ29udGVudENoaWxkKEZvcm1Hcm91cERpcmVjdGl2ZSkgZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZHJlbihGb3JtQ29udHJvbE5hbWUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgdmlzaWJsZUZvcm1Db250cm9scyE6IFF1ZXJ5TGlzdDxGb3JtQ29udHJvbE5hbWU+XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoUGFyYW1ldGVyRmllbGRzJykgc2VhcmNoUGFyYW1ldGVyRmllbGRzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgaGFzQWR2YW5jZWQgPSBmYWxzZVxuXG4gIHNpbXBsZUFkdmFuY2VkQWN0aW9uOiBBY3Rpb24gPSB7XG4gICAgaWQ6ICdzaW1wbGVBZHZhbmNlZEJ1dHRvbicsXG4gICAgYWN0aW9uQ2FsbGJhY2s6ICgpID0+IHRoaXMudG9nZ2xlVmlld01vZGUoKSxcbiAgICBzaG93OiAnYWx3YXlzJyxcbiAgfVxuICBoZWFkZXJBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG4gIHNlYXJjaEJ1dHRvbnNSZXZlcnNlZCA9IGZhbHNlXG4gIGZpZWxkVmFsdWVzJDogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4gfCB1bmRlZmluZWQgPSBvZih7fSlcbiAgc2VhcmNoQ29uZmlnQ2hhbmdlZFNsb3RFbWl0dGVyOiBFdmVudEVtaXR0ZXI8U2VhcmNoQ29uZmlnRGF0YSB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLnNlYXJjaENvbmZpZ0NoYW5nZWRTbG90RW1pdHRlci5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIHNlbGVjdGVkU2VhcmNoQ29uZmlnOiBjb25maWc/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIH0pXG4gICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZC5lbWl0KGNvbmZpZylcbiAgICB9KVxuICAgIHRoaXMuc2VhcmNoQnV0dG9uc1JldmVyc2VkID1cbiAgICAgIGNvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFByb3BlcnR5KENPTkZJR19LRVkuT05FQ1hfUE9SVEFMX1NFQVJDSF9CVVRUT05TX1JFVkVSU0VEKSA9PT0gJ3RydWUnXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLmZpZWxkVmFsdWVzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoe30pKSxcbiAgICAgICAgdGhpcy52aXNpYmxlRm9ybUNvbnRyb2xzLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIG1hcCgoW3ZhbHVlcywgX10pID0+XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXModmFsdWVzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2tleV06IHRoaXMuaXNWaXNpYmxlKGtleSkgPyB2YWx1ZSB8fCB1bmRlZmluZWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkS2V5VXBFdmVudExpc3RlbmVyKClcbiAgfVxuXG4gIHRvZ2dsZVZpZXdNb2RlKCkge1xuICAgIHRoaXMudmlld01vZGUgPSB0aGlzLnZpZXdNb2RlID09PSAnYmFzaWMnID8gJ2FkdmFuY2VkJyA6ICdiYXNpYydcbiAgfVxuXG4gIG9uUmVzZXRDbGlja2VkKCkge1xuICAgIHRoaXMucmVzZXR0ZWQuZW1pdCgpXG4gIH1cblxuICBvblNlYXJjaENsaWNrZWQoKSB7XG4gICAgdGhpcy5zZWFyY2hlZC5lbWl0KClcbiAgfVxuXG4gIHVwZGF0ZUhlYWRlckFjdGlvbnMoKSB7XG4gICAgY29uc3QgaGVhZGVyQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgIGlmICh0aGlzLmhhc0FkdmFuY2VkKSB7XG4gICAgICB0aGlzLnNpbXBsZUFkdmFuY2VkQWN0aW9uLmxhYmVsS2V5ID0gdGhpcy52aWV3TW9kZSA9PT0gJ2Jhc2ljJ1xuICAgICAgPyAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5BRFZBTkNFRC5URVhUJ1xuICAgICAgOiAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5TSU1QTEUuVEVYVCcsXG4gICAgICB0aGlzLnNpbXBsZUFkdmFuY2VkQWN0aW9uLnRpdGxlS2V5ID0gdGhpcy52aWV3TW9kZSA9PT0gJ2Jhc2ljJ1xuICAgICAgPyAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5BRFZBTkNFRC5ERVRBSUwnXG4gICAgICA6ICdPQ1hfU0VBUkNIX0hFQURFUi5UT0dHTEVfQlVUVE9OLlNJTVBMRS5ERVRBSUwnLFxuICAgICAgXG4gICAgICBoZWFkZXJBY3Rpb25zLnB1c2godGhpcy5zaW1wbGVBZHZhbmNlZEFjdGlvbilcbiAgICB9XG4gICAgdGhpcy5oZWFkZXJBY3Rpb25zID0gaGVhZGVyQWN0aW9ucy5jb25jYXQodGhpcy5hY3Rpb25zKVxuICB9XG5cbiAgYWRkS2V5VXBFdmVudExpc3RlbmVyKCkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudHMgPSB0aGlzLnNlYXJjaFBhcmFtZXRlckZpZWxkcz8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpXG4gICAgaW5wdXRFbGVtZW50cy5mb3JFYWNoKChpbnB1dEVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKCFpbnB1dEVsZW1lbnQubGlzdGVuZXJBZGRlZCkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQ6IGFueSkgPT4gdGhpcy5vblNlYXJjaEtleXVwKGV2ZW50KSlcbiAgICAgICAgaW5wdXRFbGVtZW50Lmxpc3RlbmVyQWRkZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uU2VhcmNoS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uU2VhcmNoQ2xpY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1Zpc2libGUoY29udHJvbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUZvcm1Db250cm9scy5zb21lKFxuICAgICAgKGZvcm1Db250cm9sKSA9PiBmb3JtQ29udHJvbC5uYW1lICE9PSBudWxsICYmIFN0cmluZyhmb3JtQ29udHJvbC5uYW1lKSA9PT0gY29udHJvbFxuICAgIClcbiAgfVxufVxuIiwiPG9jeC1wYWdlLWhlYWRlclxuICBbaGVhZGVyXT1cImhlYWRlciB8fCAoJ09DWF9TRUFSQ0hfSEVBREVSLkhFQURFUicgfCB0cmFuc2xhdGUpXCJcbiAgW3N1YmhlYWRlcl09XCJzdWJoZWFkZXJcIlxuICBbbWFudWFsQnJlYWRjcnVtYnNdPVwibWFudWFsQnJlYWRjcnVtYnNcIlxuICBbYWN0aW9uc109XCJoZWFkZXJBY3Rpb25zXCJcbj5cbiAgPG5nLXRlbXBsYXRlICNhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hDb25maWdDaGFuZ2VPYnNlcnZlZCAmJiBwYWdlTmFtZVwiPlxuICAgICAgPG9jeC1zbG90XG4gICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJzZWFyY2hDb25maWdQZXJtaXNzaW9uXCJcbiAgICAgICAgbmFtZT1cIm9uZWN4LXNlYXJjaC1jb25maWdcIlxuICAgICAgICBbaW5wdXRzXT1cInsgcGFnZU5hbWU6IHBhZ2VOYW1lLCBjdXJyZW50RmllbGRWYWx1ZXM6IGZpZWxkVmFsdWVzJCB8IGFzeW5jLCB2aWV3TW9kZTogdmlld01vZGUgfVwiXG4gICAgICAgIFtvdXRwdXRzXT1cInsgc2VhcmNoQ29uZmlnU2VsZWN0ZWQ6IHNlYXJjaENvbmZpZ0NoYW5nZWRTbG90RW1pdHRlciB9XCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCIxOHJlbVwiIGhlaWdodD1cIjNyZW1cIj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L29jeC1zbG90PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggcm93LWdhcC0zIGNvbHVtbi1nYXAtNiBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPHNlY3Rpb24gI3NlYXJjaFBhcmFtZXRlckZpZWxkcyBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWFyY2ggQ3JpdGVyaWEnXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uXG4gICAgICBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCJcbiAgICAgIFtuZ0NsYXNzXT1cInNlYXJjaEJ1dHRvbnNSZXZlcnNlZCA/ICdmbGV4LXJvdy1yZXZlcnNlJyA6ICdmbGV4LXJvdydcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VhcmNoIENvbnRyb2xzJ1wiXG4gICAgPlxuICAgICAgPHAtYnV0dG9uXG4gICAgICAgIGlkPVwicmVzZXRCdXR0b25cIlxuICAgICAgICBpY29uPVwicGkgcGktZXJhc2VyXCJcbiAgICAgICAgKG9uQ2xpY2spPVwib25SZXNldENsaWNrZWQoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZXNldEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgW2xhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5SRVNFVF9CVVRUT04uVEVYVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5SRVNFVF9CVVRUT04uQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbcFRvb2x0aXBdPVwiJ09DWF9TRUFSQ0hfSEVBREVSLlJFU0VUX0JVVFRPTi5ERVRBSUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgdG9vbHRpcEV2ZW50PVwiaG92ZXJcIlxuICAgICAgPlxuICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBpZD1cInNlYXJjaEJ1dHRvblwiXG4gICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAob25DbGljayk9XCJvblNlYXJjaENsaWNrZWQoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCdXR0b25EaXNhYmxlZCB8fCBmb3JtR3JvdXA/LmludmFsaWRcIlxuICAgICAgICBbbGFiZWxdPVwiJ09DWF9TRUFSQ0hfSEVBREVSLlNFQVJDSF9CVVRUT04uVEVYVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkFSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICB0b29sdGlwRXZlbnQ9XCJob3ZlclwiXG4gICAgICA+XG4gICAgICA8L3AtYnV0dG9uPlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG48L29jeC1wYWdlLWhlYWRlcj5cbiJdfQ==