@c8y/ngx-components 1018.503.56 → 1018.503.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/context-dashboard/context-dashboard.component.d.ts +5 -1
  2. package/context-dashboard/dashboard-detail.component.d.ts +1 -0
  3. package/core/common/common.module.d.ts +2 -1
  4. package/core/common/component-outlet.directive.d.ts +24 -0
  5. package/core/common/index.d.ts +1 -0
  6. package/esm2020/context-dashboard/cockpit-dashboard/cockpit-dashboard.component.mjs +3 -3
  7. package/esm2020/context-dashboard/context-dashboard.component.mjs +9 -2
  8. package/esm2020/context-dashboard/dashboard-availability.component.mjs +3 -3
  9. package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
  10. package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +3 -3
  11. package/esm2020/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.mjs +3 -3
  12. package/esm2020/core/action/action-outlet.component.mjs +6 -5
  13. package/esm2020/core/common/common.module.mjs +8 -5
  14. package/esm2020/core/common/component-outlet.directive.mjs +56 -0
  15. package/esm2020/core/common/index.mjs +2 -1
  16. package/esm2020/core/data-grid/column/cell-renderer.component.mjs +5 -4
  17. package/esm2020/core/data-grid/column/filtering-form-renderer.component.mjs +5 -4
  18. package/esm2020/core/docs/help-and-support-outlet/help-and-support-outlet.component.mjs +7 -6
  19. package/esm2020/core/docs/legal-notices-outlet/legal-notices-outlet.component.mjs +6 -5
  20. package/esm2020/core/drawer/drawer-outlet/drawer-outlet.component.mjs +5 -4
  21. package/esm2020/core/navigator/navigator-node.component.mjs +6 -5
  22. package/esm2020/core/stepper/stepper-outlet.component.mjs +8 -7
  23. package/esm2020/core/tabs/tabs-outlet.component.mjs +5 -4
  24. package/esm2020/ecosystem/packages/package-details/package-details.component.mjs +3 -3
  25. package/esm2020/ecosystem/shared/list-filters/list-filters.component.mjs +3 -3
  26. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +18 -11
  27. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  28. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +2 -2
  29. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  30. package/fesm2015/c8y-ngx-components-ecosystem.mjs +2 -2
  31. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  32. package/fesm2015/c8y-ngx-components.mjs +80 -23
  33. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  34. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +18 -11
  35. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  36. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +2 -2
  37. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  38. package/fesm2020/c8y-ngx-components-ecosystem.mjs +2 -2
  39. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  40. package/fesm2020/c8y-ngx-components.mjs +79 -23
  41. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  42. package/locales/de.po +6 -0
  43. package/locales/en.po +6 -0
  44. package/locales/es.po +6 -0
  45. package/locales/fr.po +6 -0
  46. package/locales/ja_JP.po +8 -0
  47. package/locales/ko.po +6 -0
  48. package/locales/locales.pot +6 -0
  49. package/locales/nl.po +6 -0
  50. package/locales/pl.po +6 -0
  51. package/locales/pt_BR.po +6 -0
  52. package/locales/ru.po +6 -0
  53. package/locales/zh_CN.po +6 -0
  54. package/locales/zh_TW.po +6 -0
  55. package/package.json +1 -1
@@ -12,8 +12,9 @@ import * as i1 from "@angular/router";
12
12
  import * as i2 from "ngx-bootstrap/collapse";
13
13
  import * as i3 from "../common/icon.directive";
14
14
  import * as i4 from "@angular/common";
15
- import * as i5 from "../modal/popover-confirm.component";
16
- import * as i6 from "../i18n/c8y-translate.pipe";
15
+ import * as i5 from "../common/component-outlet.directive";
16
+ import * as i6 from "../modal/popover-confirm.component";
17
+ import * as i7 from "../i18n/c8y-translate.pipe";
17
18
  /**
18
19
  * Navigator node renderer.
19
20
  */
@@ -160,10 +161,10 @@ export class NavigatorNodeComponent {
160
161
  }
161
162
  }
162
163
  NavigatorNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavigatorNodeComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
163
- NavigatorNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: { node: "node", isRoot: "isRoot" }, outputs: { nodeClick: "nodeClick" }, viewQueries: [{ propertyName: "iconSlot", first: true, predicate: ["icon"], descendants: true, read: ViewContainerRef }, { propertyName: "confirm", first: true, predicate: PopoverConfirmComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"node.component\">\n <ng-container *ngComponentOutlet=\"node.component; injector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n class=\"slot\"\n *ngIf=\"!node.component\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <div\n class=\"link\"\n tabindex=\"-1\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [ngClass]=\"{\n active: isActive$ | async,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n >\n <ng-container *ngTemplateOutlet=\"navicon\"></ng-container>\n <button\n class=\"btn-clean\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n [attr.aria-expanded]=\"node.hasChildren ? node.open : null\"\n type=\"button\"\n draggable=\"false\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </div>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<!-- icon -->\n<ng-template #navicon>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n style=\"{{ isRoot ? 'padding-left: 16px;' : null }}\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n <ng-container #icon></ng-container>\n</ng-template>\n\n<ng-template #inner>\n <!--title -->\n <span>{{ node.translateLabel ? (node.label | translate) : node.label }}</span>\n\n <!--expander -->\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n [attr.aria-label]=\"expandTitle\"\n role=\"button\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n data-cy=\"c8y-navigator-node--expander\"\n ></i>\n\n <!-- Popover confirm -->\n <c8y-popover-confirm\n triggers=\"focus\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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.PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: ["buttons", "message", "title", "isOpen", "containerClass", "placement", "outsideClick"] }, { kind: "component", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: ["node", "isRoot"], outputs: ["nodeClick"] }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
164
+ NavigatorNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: { node: "node", isRoot: "isRoot" }, outputs: { nodeClick: "nodeClick" }, viewQueries: [{ propertyName: "iconSlot", first: true, predicate: ["icon"], descendants: true, read: ViewContainerRef }, { propertyName: "confirm", first: true, predicate: PopoverConfirmComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"node.component\">\n <ng-container *c8yComponentOutlet=\"node.component; environmentInjector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n class=\"slot\"\n *ngIf=\"!node.component\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <div\n class=\"link\"\n tabindex=\"-1\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [ngClass]=\"{\n active: isActive$ | async,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n >\n <ng-container *ngTemplateOutlet=\"navicon\"></ng-container>\n <button\n class=\"btn-clean\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n [attr.aria-expanded]=\"node.hasChildren ? node.open : null\"\n type=\"button\"\n draggable=\"false\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </div>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<!-- icon -->\n<ng-template #navicon>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n style=\"{{ isRoot ? 'padding-left: 16px;' : null }}\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n <ng-container #icon></ng-container>\n</ng-template>\n\n<ng-template #inner>\n <!--title -->\n <span>{{ node.translateLabel ? (node.label | translate) : node.label }}</span>\n\n <!--expander -->\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n [attr.aria-label]=\"expandTitle\"\n role=\"button\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n data-cy=\"c8y-navigator-node--expander\"\n ></i>\n\n <!-- Popover confirm -->\n <c8y-popover-confirm\n triggers=\"focus\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { 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: "directive", type: i5.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "component", type: i6.PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: ["buttons", "message", "title", "isOpen", "containerClass", "placement", "outsideClick"] }, { kind: "component", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: ["node", "isRoot"], outputs: ["nodeClick"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
164
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: NavigatorNodeComponent, decorators: [{
165
166
  type: Component,
166
- args: [{ selector: 'c8y-navigator-node', template: "<ng-container *ngIf=\"node.component\">\n <ng-container *ngComponentOutlet=\"node.component; injector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n class=\"slot\"\n *ngIf=\"!node.component\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <div\n class=\"link\"\n tabindex=\"-1\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [ngClass]=\"{\n active: isActive$ | async,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n >\n <ng-container *ngTemplateOutlet=\"navicon\"></ng-container>\n <button\n class=\"btn-clean\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n [attr.aria-expanded]=\"node.hasChildren ? node.open : null\"\n type=\"button\"\n draggable=\"false\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </div>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<!-- icon -->\n<ng-template #navicon>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n style=\"{{ isRoot ? 'padding-left: 16px;' : null }}\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n <ng-container #icon></ng-container>\n</ng-template>\n\n<ng-template #inner>\n <!--title -->\n <span>{{ node.translateLabel ? (node.label | translate) : node.label }}</span>\n\n <!--expander -->\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n [attr.aria-label]=\"expandTitle\"\n role=\"button\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n data-cy=\"c8y-navigator-node--expander\"\n ></i>\n\n <!-- Popover confirm -->\n <c8y-popover-confirm\n triggers=\"focus\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n" }]
167
+ args: [{ selector: 'c8y-navigator-node', template: "<ng-container *ngIf=\"node.component\">\n <ng-container *c8yComponentOutlet=\"node.component; environmentInjector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n class=\"slot\"\n *ngIf=\"!node.component\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <div\n class=\"link\"\n tabindex=\"-1\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [ngClass]=\"{\n active: isActive$ | async,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n >\n <ng-container *ngTemplateOutlet=\"navicon\"></ng-container>\n <button\n class=\"btn-clean\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n [attr.aria-expanded]=\"node.hasChildren ? node.open : null\"\n type=\"button\"\n draggable=\"false\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </div>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<!-- icon -->\n<ng-template #navicon>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n style=\"{{ isRoot ? 'padding-left: 16px;' : null }}\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n <ng-container #icon></ng-container>\n</ng-template>\n\n<ng-template #inner>\n <!--title -->\n <span>{{ node.translateLabel ? (node.label | translate) : node.label }}</span>\n\n <!--expander -->\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n [attr.aria-label]=\"expandTitle\"\n role=\"button\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n data-cy=\"c8y-navigator-node--expander\"\n ></i>\n\n <!-- Popover confirm -->\n <c8y-popover-confirm\n triggers=\"focus\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n" }]
167
168
  }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { iconSlot: [{
168
169
  type: ViewChild,
169
170
  args: ['icon', { read: ViewContainerRef, static: false }]
@@ -177,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
177
178
  type: ViewChild,
178
179
  args: [PopoverConfirmComponent, { static: false }]
179
180
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFReEM7O0dBRUc7QUFLSCxNQUFNLE9BQU8sc0JBQXNCO0lBNERqQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTVDbEM7Ozs7Ozs7V0FPRztRQUNPLGNBQVMsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVMvRDs7V0FFRztRQUNILGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWhDOztXQUVHO1FBQ0gsY0FBUyxHQUFHLEtBQUssQ0FDZixJ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bnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBvcG92ZXJDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvcG9wb3Zlci1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0b3ItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2xpY2tPcHRpb25zLCBOYXZpZ2F0b3JOb2RlIH0gZnJvbSAnLi9uYXZpZ2F0b3Itbm9kZSc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBjb25zdCBlbnVtIENsaWNrRXZlbnRTb3VyY2Uge1xuICBJQ09OID0gJ2ljb24nLFxuICBFWFBBTkRFUiA9ICdleHBhbmRlcicsXG4gIExJTksgPSAnbGluaydcbn1cblxuLyoqXG4gKiBOYXZpZ2F0b3Igbm9kZSByZW5kZXJlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW5hdmlnYXRvci1ub2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRvci1ub2RlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0b3JOb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2ljb24nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogZmFsc2UgfSkgaWNvblNsb3Q6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRvciBub2RlLlxuICAgKi9cbiAgQElucHV0KCkgbm9kZTogTmF2aWdhdG9yTm9kZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBuYXZpZ2F0b3Igbm9kZSBpcyBhIHJvb3Qgbm9kZSAodG9wIG5vZGUgaW4gdGhlIGhpZXJhcmNoeSkuXG4gICAqL1xuICBASW5wdXQoKSBpc1Jvb3Q6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZXIgcmVzcG9uc2libGUgZm9yIGJyb2FkY2FzdGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBldmVudHM6IFwiaWNvblwiLCBcImV4cGFuZGVyXCIgb3IgXCJsaW5rXCIgYXMgc3RyaW5nIHZhbHVlLlxuICAgKlxuICAgKiBUaGUgdHlwZSBvZiBldmVudCBkZXBlbmRzIG9uIHdoZXJlIHlvdSBjbGljayBvbiB0aGUgbmF2aWdhdG9yIG5vZGU6XG4gICAqICogY2xpY2tpbmcgdGhlIGljb24gd2lsbCBicm9hZGNhc3QgdGhlIGV2ZW50IFwiaWNvblwiLFxuICAgKiAqIGNsaWNraW5nIHRoZSBleHBhbmRlciB3aWxsIGJyb2FkY2FzdCB0aGUgZXZlbnQgXCJleHBhbmRlclwiLFxuICAgKiAqIGNsaWNraW5nIHRoZSBsYWJlbCB3aWxsIGJyb2FkY2FzdCB0aGUgZXZlbnQgXCJsaW5rXCIuXG4gICAqL1xuICBAT3V0cHV0KCkgbm9kZUNsaWNrOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZChQb3BvdmVyQ29uZmlybUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbmZpcm06IFBvcG92ZXJDb25maXJtQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgdmlld0luaXRUaW1lb3V0O1xuXG4gIC8qKlxuICAgKiBBIHN1YmplY3QgdGhhdCBpcyB0cmlnZ2VyZWQgYXMgc29vbiBhcyB0aGUgbmF2aWdhdG9yIG5vZGUgaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBub2RlSW5pdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBBIG9ic2VydmFibGUgd2hpY2ggZW1pdHMsIGFzIHNvb24gYXMgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUgbm9kZSBjaGFuZ2VzLlxuICAgKi9cbiAgaXNBY3RpdmUkID0gbWVyZ2UoXG4gICAgdGhpcy5ub2RlSW5pdCQsXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpKVxuICApLnBpcGUoXG4gICAgbWFwKCgpID0+IHtcbiAgICAgIGlmIChpc1VuZGVmaW5lZCh0aGlzLm5vZGUucGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKHRoaXMubm9kZS5wYXRoLCB0aGlzLm5vZGUucm91dGVyTGlua0V4YWN0KTtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHRhcChpc0FjdGl2ZSA9PiB7XG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5leHBhbmRDb2xsYXBzZSh0cnVlKTtcbiAgICAgICAgdGhpcy5leHBhbmRSZWN1cnNpdmVQYXJlbnQodGhpcy5ub2RlLnBhcmVudHMpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5ub2RlLmNvbXBvbmVudCkge1xuICAgICAgdGhpcy52aWV3SW5pdFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVJY29uKCk7XG4gICAgICAgIHRoaXMubm9kZS5jb25maXJtID0gdGhpcy5jb25maXJtO1xuICAgICAgICB0aGlzLm5vZGVJbml0JC5uZXh0KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXhwYW5kZXIgdGl0bGUuXG4gICAqL1xuICBnZXQgZXhwYW5kVGl0bGUoKSB7XG4gICAgcmV0dXJuICF0aGlzLm5vZGUub3BlbiA/ICdFeHBhbmQnIDogJ0NvbGxhcHNlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGljayBldmVudCBoYW5kbGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnJvbSBTb3VyY2Ugb2YgdGhlIGNsaWNrIGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgRE9NIGV2ZW50LlxuICAgKi9cbiAgY2xpY2soZnJvbTogJ2ljb24nIHwgJ2V4cGFuZGVyJyB8ICdsaW5rJyA9ICdsaW5rJywgJGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIGxldCBvcGVuOiBib29sZWFuO1xuICAgIHN3aXRjaCAoZnJvbSkge1xuICAgICAgY2FzZSBDbGlja0V2ZW50U291cmNlLkVYUEFOREVSOlxuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIG9wZW4gPSAhdGhpcy5ub2RlLm9wZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDbGlja0V2ZW50U291cmNlLklDT046XG4gICAgICBjYXNlIENsaWNrRXZlbnRTb3VyY2UuTElOSzpcbiAgICAgICAgb3BlbiA9IHRoaXMucm91dGVyLmlzQWN0aXZlKHRoaXMubm9kZS5wYXRoLCB0aGlzLm5vZGUucm91dGVyTGlua0V4YWN0KVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogIXRoaXMubm9kZS5vcGVuO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVFeHBhbmRDb2xsYXBzZShvcGVuLCBmcm9tLCAkZXZlbnQpO1xuICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoZnJvbSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kcyBvciBjb2xsYXBzZXMgdGhlIG5hdmlnYXRvciBub2RlIGFuZCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3BlbiBPcGVuIG9yIGNsb3NlIHRoZSBub2RlLlxuICAgKiBAcGFyYW0ge0NsaWNrT3B0aW9uc30gZm9yTm9kZSBDbGljayBvcHRpb25zLlxuICAgKi9cbiAgZXhwYW5kQ29sbGFwc2Uob3BlbiwgZm9yTm9kZTogQ2xpY2tPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm5vZGUub3BlbiA9IG9wZW47XG4gICAgZm9yTm9kZS5vcGVuID0gb3BlbjtcbiAgICB0aGlzLm5vZGUuY2xpY2soZm9yTm9kZSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudmlld0luaXRUaW1lb3V0KTtcblxuICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgdGhlIHBhcmVudCBub2RlcyByZWN1cnNpdmVseS5cbiAgICogQHBhcmFtIG5vZGVzIFRoZSBub2RlcyB0aGF0IHNob3VsZCBiZSB0cmllZCB0byBnZXQgb3BlbmVkLlxuICAgKiBAcGFyYW0gY2xpY2tPcHRpb24gVGhlIGNsaWNrIG9wdGlvbnMgdG8gcGVyZm9ybSBvbiB0aGUgcGFyZW50IG5vZGVzLlxuICAgKi9cbiAgZXhwYW5kUmVjdXJzaXZlUGFyZW50KG5vZGVzOiBOYXZpZ2F0b3JOb2RlW10sIGNsaWNrT3B0aW9uOiBDbGlja09wdGlvbnMgPSB7IGV4cGFuZGVyOiB0cnVlIH0pIHtcbiAgICBub2Rlcy5mb3JFYWNoKHBhcmVudE5vZGUgPT4ge1xuICAgICAgaWYgKCFwYXJlbnROb2RlLm9wZW4pIHtcbiAgICAgICAgcGFyZW50Tm9kZS5vcGVuID0gdHJ1ZTtcbiAgICAgICAgcGFyZW50Tm9kZS5jbGljayhjbGlja09wdGlvbik7XG4gICAgICB9XG4gICAgICB0aGlzLmV4cGFuZFJlY3Vyc2l2ZVBhcmVudChwYXJlbnROb2RlLnBhcmVudHMsIGNsaWNrT3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXhwYW5kQ29sbGFwc2Uob3BlbiwgZnJvbSwgJGV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgb3BlbiA9PT0gdGhpcy5ub2RlLm9wZW4gfHxcbiAgICAgICh0aGlzLm5vZGUucGF0aCAmJiAhb3BlbiAmJiBmcm9tICE9PSBDbGlja0V2ZW50U291cmNlLkVYUEFOREVSKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV4cGFuZENvbGxhcHNlKG9wZW4sIHsgW2Zyb21dOiB0cnVlLCAkZXZlbnQgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUljb24oKSB7XG4gICAgaWYgKHRoaXMubm9kZS5pY29uVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlSWNvblRlbXBsYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlSWNvbkNvbXBvbmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSWNvbkNvbXBvbmVudCgpIHtcbiAgICBsZXQgY29tcG9uZW50VHlwZSA9IE5hdmlnYXRvckljb25Db21wb25lbnQ7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUuaWNvbkNvbXBvbmVudCkge1xuICAgICAgY29tcG9uZW50VHlwZSA9IHRoaXMubm9kZS5pY29uQ29tcG9uZW50O1xuICAgIH1cbiAgICB0aGlzLmljb25TbG90LmNsZWFyKCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5pY29uU2xvdC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50VHlwZSwge1xuICAgICAgaW5qZWN0b3I6IHRoaXMubm9kZS5pbmplY3RvclxuICAgIH0pO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ub2RlID0gdGhpcy5ub2RlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJY29uVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5pY29uU2xvdC5jbGVhcigpO1xuICAgIHRoaXMuaWNvblNsb3QuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubm9kZS5pY29uVGVtcGxhdGUsIHVuZGVmaW5lZCwge1xuICAgICAgaW5qZWN0b3I6IHRoaXMubm9kZS5pbmplY3RvclxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5jb21wb25lbnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJub2RlLmNvbXBvbmVudDsgaW5qZWN0b3I6IG5vZGUuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2XG4gIGNsYXNzPVwic2xvdFwiXG4gICpuZ0lmPVwiIW5vZGUuY29tcG9uZW50XCJcbiAgW2hpZGRlbl09XCJub2RlLmhpZGRlblwiXG4gIChkcmFnc3RhcnQpPVwibm9kZS5kcmFnU3RhcnQoJGV2ZW50KVwiXG4gIChkcmFnZW5kKT1cIm5vZGUuZHJhZ0VuZCgkZXZlbnQpXCJcbiAgKGRyb3ApPVwibm9kZS5kcm9wKCRldmVudClcIlxuICBbZHJhZ2dhYmxlXT1cIm5vZGUuZHJhZ2dhYmxlXCJcbiAgW25nQ2xhc3NdPVwieyBkcmFnZ2VkOiBub2RlLmRyYWdnZWQsIGRpc2FibGVkOiBub2RlLmxvYWRpbmcgfVwiXG4+XG4gIDxuZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaW5rXCJcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5jYW5OYXZpZ2F0ZSA/IG5vZGUucGF0aCA6IHVuZGVmaW5lZFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIGFjdGl2ZTogaXNBY3RpdmUkIHwgYXN5bmMsXG4gICAgICAgICdkcmFnZ2VkLWhvdmVyJzogbm9kZS5kcmFnZ2VkSG92ZXIgJiYgIW5vZGUuZHJhZ2dlZFxuICAgICAgfVwiXG4gICAgICAoZHJhZ292ZXIpPVwibm9kZS5jYW5Ecm9wICYmICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgIChkcmFnZW50ZXIpPVwibm9kZS5jYW5Ecm9wICYmIG5vZGUuZHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgKGRyYWdsZWF2ZSk9XCJub2RlLmNhbkRyb3AgJiYgbm9kZS5kcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5hdmljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICB0aXRsZT1cInt7IG5vZGUudHJhbnNsYXRlTGFiZWwgPyAobm9kZS5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBub2RlLmxhYmVsIH19XCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJub2RlLmhhc0NoaWxkcmVuID8gbm9kZS5vcGVuIDogbnVsbFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICAgIFthdHRyLmRhdGEtY3ldPVwibm9kZS5sYWJlbFwiXG4gICAgICAgIFthdHRyLmlkXT1cImlzUm9vdCA/IG5vZGUuaWQgOiB1bmRlZmluZWRcIlxuICAgICAgICAoY2xpY2spPVwiY2xpY2sobm9kZS5jYW5OYXZpZ2F0ZSA/ICdsaW5rJyA6ICdleHBhbmRlcicsICRldmVudClcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3Jvb3QtbGluayc6IGlzUm9vdCxcbiAgICAgICAgICBvcGVuOiBub2RlLm9wZW4gJiYgbm9kZS5oYXNDaGlsZHJlbixcbiAgICAgICAgICBwYXJlbnQ6IG5vZGUuaGFzQ2hpbGRyZW5cbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImNoaWxkcmVuIHBhbmVsLWV4cGFuZCBleHBhbmRcIlxuICAgICpuZ0lmPVwibm9kZS5jaGlsZHJlbi5sZW5ndGhcIlxuICAgIFtjb2xsYXBzZV09XCIhbm9kZS5vcGVuXCJcbiAgICBbaXNBbmltYXRlZF09XCJ0cnVlXCJcbiAgPlxuICAgIDxjOHktbmF2aWdhdG9yLW5vZGVcbiAgICAgICpuZ0Zvcj1cImxldCBjaGlsZE5vZGUgb2Ygbm9kZS5jaGlsZHJlblwiXG4gICAgICBbbm9kZV09XCJjaGlsZE5vZGVcIlxuICAgICAgKG5vZGVDbGljayk9XCJub2RlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICA+PC9jOHktbmF2aWdhdG9yLW5vZGU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gaWNvbiAtLT5cbjxuZy10ZW1wbGF0ZSAjbmF2aWNvbj5cbiAgPCEtLSBsb2FkZXIgLS0+XG4gIDxpXG4gICAgY2xhc3M9XCJpY29uLXNwaW4gbG9hZGluZ0luZGljYXRvclwiXG4gICAgW2M4eUljb25dPVwiJ2NpcmNsZS1vLW5vdGNoJ1wiXG4gICAgc3R5bGU9XCJ7eyBpc1Jvb3QgPyAncGFkZGluZy1sZWZ0OiAxNnB4OycgOiBudWxsIH19XCJcbiAgICAqbmdJZj1cIm5vZGUubG9hZGluZyAmJiAhaXNSb290XCJcbiAgPjwvaT5cbiAgPG5nLWNvbnRhaW5lciAjaWNvbj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5uZXI+XG4gIDwhLS10aXRsZSAgLS0+XG4gIDxzcGFuPnt7IG5vZGUudHJhbnNsYXRlTGFiZWwgPyAobm9kZS5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBub2RlLmxhYmVsIH19PC9zcGFuPlxuXG4gIDwhLS1leHBhbmRlciAgLS0+XG4gIDxpXG4gICAgY2xhc3M9XCJleHBhbmRlclwiXG4gICAgW2M4eUljb25dPVwiJ2NoZXZyb24tZG93bidcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZXhwYW5kVGl0bGVcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgICpuZ0lmPVwibm9kZS5oYXNDaGlsZHJlblwiXG4gICAgKGNsaWNrKT1cImNsaWNrKCdleHBhbmRlcicsICRldmVudClcIlxuICAgIGRhdGEtY3k9XCJjOHktbmF2aWdhdG9yLW5vZGUtLWV4cGFuZGVyXCJcbiAgPjwvaT5cblxuICA8IS0tICBQb3BvdmVyIGNvbmZpcm0gIC0tPlxuICA8Yzh5LXBvcG92ZXItY29uZmlybVxuICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgIGNvbnRhaW5lckNsYXNzPVwibmF2aWdhdG9yLXBvcG92ZXJcIlxuICA+PC9jOHktcG9wb3Zlci1jb25maXJtPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9uYXZpZ2F0b3IvbmF2aWdhdG9yLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7O0FBUXhDOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQTREakMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUE1Q2xDOzs7Ozs7O1dBT0c7UUFDTyxjQUFTLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFTL0Q7O1dBRUc7UUFDSCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVoQzs7V0FFRztRQUNILGNBQVMsR0FBRyxLQUFLLENBQ2Ys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b250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2aWdhdG9ySWNvbkNvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdG9yLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENsaWNrT3B0aW9ucywgTmF2aWdhdG9yTm9kZSB9IGZyb20gJy4vbmF2aWdhdG9yLW5vZGUnO1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgY29uc3QgZW51bSBDbGlja0V2ZW50U291cmNlIHtcbiAgSUNPTiA9ICdpY29uJyxcbiAgRVhQQU5ERVIgPSAnZXhwYW5kZXInLFxuICBMSU5LID0gJ2xpbmsnXG59XG5cbi8qKlxuICogTmF2aWdhdG9yIG5vZGUgcmVuZGVyZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1uYXZpZ2F0b3Itbm9kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0b3Itbm9kZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdG9yTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdpY29uJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IGZhbHNlIH0pIGljb25TbG90OiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIC8qKlxuICAgKiBOYXZpZ2F0b3Igbm9kZS5cbiAgICovXG4gIEBJbnB1dCgpIG5vZGU6IE5hdmlnYXRvck5vZGU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgbmF2aWdhdG9yIG5vZGUgaXMgYSByb290IG5vZGUgKHRvcCBub2RlIGluIHRoZSBoaWVyYXJjaHkpLlxuICAgKi9cbiAgQElucHV0KCkgaXNSb290OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBicm9hZGNhc3Rpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgZXZlbnRzOiBcImljb25cIiwgXCJleHBhbmRlclwiIG9yIFwibGlua1wiIGFzIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogVGhlIHR5cGUgb2YgZXZlbnQgZGVwZW5kcyBvbiB3aGVyZSB5b3UgY2xpY2sgb24gdGhlIG5hdmlnYXRvciBub2RlOlxuICAgKiAqIGNsaWNraW5nIHRoZSBpY29uIHdpbGwgYnJvYWRjYXN0IHRoZSBldmVudCBcImljb25cIixcbiAgICogKiBjbGlja2luZyB0aGUgZXhwYW5kZXIgd2lsbCBicm9hZGNhc3QgdGhlIGV2ZW50IFwiZXhwYW5kZXJcIixcbiAgICogKiBjbGlja2luZyB0aGUgbGFiZWwgd2lsbCBicm9hZGNhc3QgdGhlIGV2ZW50IFwibGlua1wiLlxuICAgKi9cbiAgQE91dHB1dCgpIG5vZGVDbGljazogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoUG9wb3ZlckNvbmZpcm1Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBjb25maXJtOiBQb3BvdmVyQ29uZmlybUNvbXBvbmVudDtcblxuICBwcml2YXRlIHZpZXdJbml0VGltZW91dDtcblxuICAvKipcbiAgICogQSBzdWJqZWN0IHRoYXQgaXMgdHJpZ2dlcmVkIGFzIHNvb24gYXMgdGhlIG5hdmlnYXRvciBub2RlIGlzIGluaXRpYWxpemVkLlxuICAgKi9cbiAgbm9kZUluaXQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogQSBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzLCBhcyBzb29uIGFzIHRoZSBhY3RpdmUgc3RhdGUgb2YgdGhlIG5vZGUgY2hhbmdlcy5cbiAgICovXG4gIGlzQWN0aXZlJCA9IG1lcmdlKFxuICAgIHRoaXMubm9kZUluaXQkLFxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSlcbiAgKS5waXBlKFxuICAgIG1hcCgoKSA9PiB7XG4gICAgICBpZiAoaXNVbmRlZmluZWQodGhpcy5ub2RlLnBhdGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZSh0aGlzLm5vZGUucGF0aCwgdGhpcy5ub2RlLnJvdXRlckxpbmtFeGFjdCk7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICB0YXAoaXNBY3RpdmUgPT4ge1xuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kQ29sbGFwc2UodHJ1ZSk7XG4gICAgICAgIHRoaXMuZXhwYW5kUmVjdXJzaXZlUGFyZW50KHRoaXMubm9kZS5wYXJlbnRzKTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubm9kZS5jb21wb25lbnQpIHtcbiAgICAgIHRoaXMudmlld0luaXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlSWNvbigpO1xuICAgICAgICB0aGlzLm5vZGUuY29uZmlybSA9IHRoaXMuY29uZmlybTtcbiAgICAgICAgdGhpcy5ub2RlSW5pdCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV4cGFuZGVyIHRpdGxlLlxuICAgKi9cbiAgZ2V0IGV4cGFuZFRpdGxlKCkge1xuICAgIHJldHVybiAhdGhpcy5ub2RlLm9wZW4gPyAnRXhwYW5kJyA6ICdDb2xsYXBzZSc7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sgZXZlbnQgaGFuZGxlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZyb20gU291cmNlIG9mIHRoZSBjbGljayBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IERPTSBldmVudC5cbiAgICovXG4gIGNsaWNrKGZyb206ICdpY29uJyB8ICdleHBhbmRlcicgfCAnbGluaycgPSAnbGluaycsICRldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICBsZXQgb3BlbjogYm9vbGVhbjtcbiAgICBzd2l0Y2ggKGZyb20pIHtcbiAgICAgIGNhc2UgQ2xpY2tFdmVudFNvdXJjZS5FWFBBTkRFUjpcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBvcGVuID0gIXRoaXMubm9kZS5vcGVuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2xpY2tFdmVudFNvdXJjZS5JQ09OOlxuICAgICAgY2FzZSBDbGlja0V2ZW50U291cmNlLkxJTks6XG4gICAgICAgIG9wZW4gPSB0aGlzLnJvdXRlci5pc0FjdGl2ZSh0aGlzLm5vZGUucGF0aCwgdGhpcy5ub2RlLnJvdXRlckxpbmtFeGFjdClcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6ICF0aGlzLm5vZGUub3BlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlRXhwYW5kQ29sbGFwc2Uob3BlbiwgZnJvbSwgJGV2ZW50KTtcbiAgICB0aGlzLm5vZGVDbGljay5lbWl0KGZyb20pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgb3IgY29sbGFwc2VzIHRoZSBuYXZpZ2F0b3Igbm9kZSBhbmQgaXRzIGNoaWxkcmVuIHJlY3Vyc2l2ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wZW4gT3BlbiBvciBjbG9zZSB0aGUgbm9kZS5cbiAgICogQHBhcmFtIHtDbGlja09wdGlvbnN9IGZvck5vZGUgQ2xpY2sgb3B0aW9ucy5cbiAgICovXG4gIGV4cGFuZENvbGxhcHNlKG9wZW4sIGZvck5vZGU6IENsaWNrT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5ub2RlLm9wZW4gPSBvcGVuO1xuICAgIGZvck5vZGUub3BlbiA9IG9wZW47XG4gICAgdGhpcy5ub2RlLmNsaWNrKGZvck5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnZpZXdJbml0VGltZW91dCk7XG5cbiAgICBpZiAodGhpcy5ub2RlKSB7XG4gICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBhbmRzIHRoZSBwYXJlbnQgbm9kZXMgcmVjdXJzaXZlbHkuXG4gICAqIEBwYXJhbSBub2RlcyBUaGUgbm9kZXMgdGhhdCBzaG91bGQgYmUgdHJpZWQgdG8gZ2V0IG9wZW5lZC5cbiAgICogQHBhcmFtIGNsaWNrT3B0aW9uIFRoZSBjbGljayBvcHRpb25zIHRvIHBlcmZvcm0gb24gdGhlIHBhcmVudCBub2Rlcy5cbiAgICovXG4gIGV4cGFuZFJlY3Vyc2l2ZVBhcmVudChub2RlczogTmF2aWdhdG9yTm9kZVtdLCBjbGlja09wdGlvbjogQ2xpY2tPcHRpb25zID0geyBleHBhbmRlcjogdHJ1ZSB9KSB7XG4gICAgbm9kZXMuZm9yRWFjaChwYXJlbnROb2RlID0+IHtcbiAgICAgIGlmICghcGFyZW50Tm9kZS5vcGVuKSB7XG4gICAgICAgIHBhcmVudE5vZGUub3BlbiA9IHRydWU7XG4gICAgICAgIHBhcmVudE5vZGUuY2xpY2soY2xpY2tPcHRpb24pO1xuICAgICAgfVxuICAgICAgdGhpcy5leHBhbmRSZWN1cnNpdmVQYXJlbnQocGFyZW50Tm9kZS5wYXJlbnRzLCBjbGlja09wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV4cGFuZENvbGxhcHNlKG9wZW4sIGZyb20sICRldmVudCkge1xuICAgIGlmIChcbiAgICAgIG9wZW4gPT09IHRoaXMubm9kZS5vcGVuIHx8XG4gICAgICAodGhpcy5ub2RlLnBhdGggJiYgIW9wZW4gJiYgZnJvbSAhPT0gQ2xpY2tFdmVudFNvdXJjZS5FWFBBTkRFUilcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5leHBhbmRDb2xsYXBzZShvcGVuLCB7IFtmcm9tXTogdHJ1ZSwgJGV2ZW50IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJY29uKCkge1xuICAgIGlmICh0aGlzLm5vZGUuaWNvblRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUljb25UZW1wbGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUljb25Db21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUljb25Db21wb25lbnQoKSB7XG4gICAgbGV0IGNvbXBvbmVudFR5cGUgPSBOYXZpZ2F0b3JJY29uQ29tcG9uZW50O1xuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmljb25Db21wb25lbnQpIHtcbiAgICAgIGNvbXBvbmVudFR5cGUgPSB0aGlzLm5vZGUuaWNvbkNvbXBvbmVudDtcbiAgICB9XG4gICAgdGhpcy5pY29uU2xvdC5jbGVhcigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuaWNvblNsb3QuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHtcbiAgICAgIGluamVjdG9yOiB0aGlzLm5vZGUuaW5qZWN0b3JcbiAgICB9KTtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uubm9kZSA9IHRoaXMubm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSWNvblRlbXBsYXRlKCkge1xuICAgIHRoaXMuaWNvblNsb3QuY2xlYXIoKTtcbiAgICB0aGlzLmljb25TbG90LmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5vZGUuaWNvblRlbXBsYXRlLCB1bmRlZmluZWQsIHtcbiAgICAgIGluamVjdG9yOiB0aGlzLm5vZGUuaW5qZWN0b3JcbiAgICB9KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUuY29tcG9uZW50XCI+XG4gIDxuZy1jb250YWluZXIgKmM4eUNvbXBvbmVudE91dGxldD1cIm5vZGUuY29tcG9uZW50OyBlbnZpcm9ubWVudEluamVjdG9yOiBub2RlLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdlxuICBjbGFzcz1cInNsb3RcIlxuICAqbmdJZj1cIiFub2RlLmNvbXBvbmVudFwiXG4gIFtoaWRkZW5dPVwibm9kZS5oaWRkZW5cIlxuICAoZHJhZ3N0YXJ0KT1cIm5vZGUuZHJhZ1N0YXJ0KCRldmVudClcIlxuICAoZHJhZ2VuZCk9XCJub2RlLmRyYWdFbmQoJGV2ZW50KVwiXG4gIChkcm9wKT1cIm5vZGUuZHJvcCgkZXZlbnQpXCJcbiAgW2RyYWdnYWJsZV09XCJub2RlLmRyYWdnYWJsZVwiXG4gIFtuZ0NsYXNzXT1cInsgZHJhZ2dlZDogbm9kZS5kcmFnZ2VkLCBkaXNhYmxlZDogbm9kZS5sb2FkaW5nIH1cIlxuPlxuICA8bmctY29udGFpbmVyPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlua1wiXG4gICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUuY2FuTmF2aWdhdGUgPyBub2RlLnBhdGggOiB1bmRlZmluZWRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBhY3RpdmU6IGlzQWN0aXZlJCB8IGFzeW5jLFxuICAgICAgICAnZHJhZ2dlZC1ob3Zlcic6IG5vZGUuZHJhZ2dlZEhvdmVyICYmICFub2RlLmRyYWdnZWRcbiAgICAgIH1cIlxuICAgICAgKGRyYWdvdmVyKT1cIm5vZGUuY2FuRHJvcCAmJiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAoZHJhZ2VudGVyKT1cIm5vZGUuY2FuRHJvcCAmJiBub2RlLmRyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAgIChkcmFnbGVhdmUpPVwibm9kZS5jYW5Ecm9wICYmIG5vZGUuZHJhZ0xlYXZlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuYXZpY29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgdGl0bGU9XCJ7eyBub2RlLnRyYW5zbGF0ZUxhYmVsID8gKG5vZGUubGFiZWwgfCB0cmFuc2xhdGUpIDogbm9kZS5sYWJlbCB9fVwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwibm9kZS5oYXNDaGlsZHJlbiA/IG5vZGUub3BlbiA6IG51bGxcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIm5vZGUubGFiZWxcIlxuICAgICAgICBbYXR0ci5pZF09XCJpc1Jvb3QgPyBub2RlLmlkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgKGNsaWNrKT1cImNsaWNrKG5vZGUuY2FuTmF2aWdhdGUgPyAnbGluaycgOiAnZXhwYW5kZXInLCAkZXZlbnQpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdyb290LWxpbmsnOiBpc1Jvb3QsXG4gICAgICAgICAgb3Blbjogbm9kZS5vcGVuICYmIG5vZGUuaGFzQ2hpbGRyZW4sXG4gICAgICAgICAgcGFyZW50OiBub2RlLmhhc0NoaWxkcmVuXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJjaGlsZHJlbiBwYW5lbC1leHBhbmQgZXhwYW5kXCJcbiAgICAqbmdJZj1cIm5vZGUuY2hpbGRyZW4ubGVuZ3RoXCJcbiAgICBbY29sbGFwc2VdPVwiIW5vZGUub3BlblwiXG4gICAgW2lzQW5pbWF0ZWRdPVwidHJ1ZVwiXG4gID5cbiAgICA8Yzh5LW5hdmlnYXRvci1ub2RlXG4gICAgICAqbmdGb3I9XCJsZXQgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW5cIlxuICAgICAgW25vZGVdPVwiY2hpbGROb2RlXCJcbiAgICAgIChub2RlQ2xpY2spPVwibm9kZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgPjwvYzh5LW5hdmlnYXRvci1ub2RlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIGljb24gLS0+XG48bmctdGVtcGxhdGUgI25hdmljb24+XG4gIDwhLS0gbG9hZGVyIC0tPlxuICA8aVxuICAgIGNsYXNzPVwiaWNvbi1zcGluIGxvYWRpbmdJbmRpY2F0b3JcIlxuICAgIFtjOHlJY29uXT1cIidjaXJjbGUtby1ub3RjaCdcIlxuICAgIHN0eWxlPVwie3sgaXNSb290ID8gJ3BhZGRpbmctbGVmdDogMTZweDsnIDogbnVsbCB9fVwiXG4gICAgKm5nSWY9XCJub2RlLmxvYWRpbmcgJiYgIWlzUm9vdFwiXG4gID48L2k+XG4gIDxuZy1jb250YWluZXIgI2ljb24+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lubmVyPlxuICA8IS0tdGl0bGUgIC0tPlxuICA8c3Bhbj57eyBub2RlLnRyYW5zbGF0ZUxhYmVsID8gKG5vZGUubGFiZWwgfCB0cmFuc2xhdGUpIDogbm9kZS5sYWJlbCB9fTwvc3Bhbj5cblxuICA8IS0tZXhwYW5kZXIgIC0tPlxuICA8aVxuICAgIGNsYXNzPVwiZXhwYW5kZXJcIlxuICAgIFtjOHlJY29uXT1cIidjaGV2cm9uLWRvd24nXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImV4cGFuZFRpdGxlXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAqbmdJZj1cIm5vZGUuaGFzQ2hpbGRyZW5cIlxuICAgIChjbGljayk9XCJjbGljaygnZXhwYW5kZXInLCAkZXZlbnQpXCJcbiAgICBkYXRhLWN5PVwiYzh5LW5hdmlnYXRvci1ub2RlLS1leHBhbmRlclwiXG4gID48L2k+XG5cbiAgPCEtLSAgUG9wb3ZlciBjb25maXJtICAtLT5cbiAgPGM4eS1wb3BvdmVyLWNvbmZpcm1cbiAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICBjb250YWluZXJDbGFzcz1cIm5hdmlnYXRvci1wb3BvdmVyXCJcbiAgPjwvYzh5LXBvcG92ZXItY29uZmlybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -2,23 +2,24 @@ import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../common/icon.directive";
4
4
  import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/cdk/stepper";
6
- import * as i4 from "./stepper.component";
7
- import * as i5 from "./stepper-icon.directive";
8
- import * as i6 from "./stepper-buttons.component";
5
+ import * as i3 from "../common/component-outlet.directive";
6
+ import * as i4 from "@angular/cdk/stepper";
7
+ import * as i5 from "./stepper.component";
8
+ import * as i6 from "./stepper-icon.directive";
9
+ import * as i7 from "./stepper-buttons.component";
9
10
  export class StepperOutletComponent {
10
11
  constructor() {
11
12
  this.showDefaultButtons = true;
12
13
  }
13
14
  }
14
15
  StepperOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: StepperOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- StepperOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: StepperOutletComponent, selector: "c8y-stepper-outlet", inputs: { steps: "steps", showDefaultButtons: "showDefaultButtons" }, ngImport: i0, template: "<c8y-stepper \n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\" \n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *ngComponentOutlet=\"step.component; injector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i4.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "directive", type: i5.C8yStepperIcon, selector: "ng-template[c8yStepperIcon]", inputs: ["c8yStepperIcon"] }, { kind: "component", type: i6.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }] });
16
+ StepperOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: StepperOutletComponent, selector: "c8y-stepper-outlet", inputs: { steps: "steps", showDefaultButtons: "showDefaultButtons" }, ngImport: i0, template: "<c8y-stepper\n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\"\n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *c8yComponentOutlet=\"step.component; environmentInjector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "component", type: i4.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i5.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "directive", type: i6.C8yStepperIcon, selector: "ng-template[c8yStepperIcon]", inputs: ["c8yStepperIcon"] }, { kind: "component", type: i7.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }] });
16
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: StepperOutletComponent, decorators: [{
17
18
  type: Component,
18
- args: [{ selector: 'c8y-stepper-outlet', template: "<c8y-stepper \n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\" \n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *ngComponentOutlet=\"step.component; injector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n" }]
19
+ args: [{ selector: 'c8y-stepper-outlet', template: "<c8y-stepper\n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\"\n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *c8yComponentOutlet=\"step.component; environmentInjector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n" }]
19
20
  }], propDecorators: { steps: [{
20
21
  type: Input
21
22
  }], showDefaultButtons: [{
22
23
  type: Input
23
24
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zdGVwcGVyL3N0ZXBwZXItb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvc3RlcHBlci9zdGVwcGVyLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQVFFLHVCQUFrQixHQUFHLElBQUksQ0FBQztLQUMzQjs7bUhBTFksc0JBQXNCO3VHQUF0QixzQkFBc0IsZ0lDUG5DLHcyQkF5QkE7MkZEbEJhLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBSzlCLEtBQUs7c0JBREosS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbmRleGVkU3RlcCB9IGZyb20gJy4vc3RlcHBlci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdGVwcGVyLW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwcGVyLW91dGxldC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlck91dGxldENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHN0ZXBzOiBJbmRleGVkU3RlcFtdO1xuICBASW5wdXQoKVxuICBzaG93RGVmYXVsdEJ1dHRvbnMgPSB0cnVlO1xufVxuIiwiPGM4eS1zdGVwcGVyIFxuICBbY3VzdG9tQ2xhc3Nlc109XCJbJ3AtdC0zMicsICdwLWItMzInLCAnbS1sLTQ4JywgJ20tci00OCddXCIgXG4gIGNsYXNzPVwiZC1mbGV4IGQtY29sIGZpdC1oXCJcbiAgW2Rpc2FibGVEZWZhdWx0SWNvbnNdPVwieyBlZGl0OiB0cnVlLCBkb25lOiBmYWxzZSB9XCJcbj5cbiAgPGNkay1zdGVwXG4gICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIlxuICAgIFtsYWJlbF09XCJzdGVwLmxhYmVsXCJcbiAgICBbc3RhdGVdPVwic3RlcC5zdGF0ZVwiXG4gICAgW2NvbXBsZXRlZF09XCJzdGVwLmNvbXBsZXRlZFwiXG4gICAgW29wdGlvbmFsXT1cIiFzdGVwLnJlcXVpcmVkXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic3RlcC5jb21wb25lbnQ7IGluamVjdG9yOiBzdGVwLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnMgKm5nSWY9XCJzaG93RGVmYXVsdEJ1dHRvbnNcIj48L2M4eS1zdGVwcGVyLWJ1dHRvbnM+XG4gICAgPG5nLXRlbXBsYXRlIGM4eVN0ZXBwZXJJY29uPVwiZXJyb3JcIj5cbiAgICAgIDxzcGFuIGM4eUljb249XCJlcnJvclwiPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBjOHlTdGVwcGVySWNvbj1cIndhcm5pbmdcIj5cbiAgICAgIDxzcGFuIGM4eUljb249XCJ3YXJuaW5nXCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGM4eVN0ZXBwZXJJY29uPVwiZG9uZVwiPlxuICAgICAgPHNwYW4gYzh5SWNvbj1cImNoZWNrXCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvY2RrLXN0ZXA+XG48L2M4eS1zdGVwcGVyPlxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zdGVwcGVyL3N0ZXBwZXItb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvc3RlcHBlci9zdGVwcGVyLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBT2pELE1BQU0sT0FBTyxzQkFBc0I7SUFKbkM7UUFRRSx1QkFBa0IsR0FBRyxJQUFJLENBQUM7S0FDM0I7O21IQUxZLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGdJQ1BuQyxrM0JBeUJBOzJGRGxCYSxzQkFBc0I7a0JBSmxDLFNBQVM7K0JBQ0Usb0JBQW9COzhCQUs5QixLQUFLO3NCQURKLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5kZXhlZFN0ZXAgfSBmcm9tICcuL3N0ZXBwZXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc3RlcHBlci1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHBlci1vdXRsZXQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBwZXJPdXRsZXRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBzdGVwczogSW5kZXhlZFN0ZXBbXTtcbiAgQElucHV0KClcbiAgc2hvd0RlZmF1bHRCdXR0b25zID0gdHJ1ZTtcbn1cbiIsIjxjOHktc3RlcHBlclxuICBbY3VzdG9tQ2xhc3Nlc109XCJbJ3AtdC0zMicsICdwLWItMzInLCAnbS1sLTQ4JywgJ20tci00OCddXCJcbiAgY2xhc3M9XCJkLWZsZXggZC1jb2wgZml0LWhcIlxuICBbZGlzYWJsZURlZmF1bHRJY29uc109XCJ7IGVkaXQ6IHRydWUsIGRvbmU6IGZhbHNlIH1cIlxuPlxuICA8Y2RrLXN0ZXBcbiAgICAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiXG4gICAgW2xhYmVsXT1cInN0ZXAubGFiZWxcIlxuICAgIFtzdGF0ZV09XCJzdGVwLnN0YXRlXCJcbiAgICBbY29tcGxldGVkXT1cInN0ZXAuY29tcGxldGVkXCJcbiAgICBbb3B0aW9uYWxdPVwiIXN0ZXAucmVxdWlyZWRcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqYzh5Q29tcG9uZW50T3V0bGV0PVwic3RlcC5jb21wb25lbnQ7IGVudmlyb25tZW50SW5qZWN0b3I6IHN0ZXAuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8Yzh5LXN0ZXBwZXItYnV0dG9ucyAqbmdJZj1cInNob3dEZWZhdWx0QnV0dG9uc1wiPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8bmctdGVtcGxhdGUgYzh5U3RlcHBlckljb249XCJlcnJvclwiPlxuICAgICAgPHNwYW4gYzh5SWNvbj1cImVycm9yXCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIGM4eVN0ZXBwZXJJY29uPVwid2FybmluZ1wiPlxuICAgICAgPHNwYW4gYzh5SWNvbj1cIndhcm5pbmdcIj48L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgYzh5U3RlcHBlckljb249XCJkb25lXCI+XG4gICAgICA8c3BhbiBjOHlJY29uPVwiY2hlY2tcIj48L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9jZGstc3RlcD5cbjwvYzh5LXN0ZXBwZXI+XG4iXX0=
@@ -8,7 +8,8 @@ import * as i1 from "@angular/router";
8
8
  import * as i2 from "../header/header.service";
9
9
  import * as i3 from "../common/icon.directive";
10
10
  import * as i4 from "@angular/common";
11
- import * as i5 from "../i18n/c8y-translate.pipe";
11
+ import * as i5 from "../common/component-outlet.directive";
12
+ import * as i6 from "../i18n/c8y-translate.pipe";
12
13
  export class TabsOutletComponent {
13
14
  get isNavigatorOpen() {
14
15
  return this.navigatorOpen;
@@ -100,10 +101,10 @@ export class TabsOutletComponent {
100
101
  }
101
102
  }
102
103
  TabsOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1.Router }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.HeaderService }], target: i0.ɵɵFactoryTarget.Component });
103
- TabsOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen" }, host: { properties: { "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "leftBtn", first: true, predicate: ["left"], descendants: true, read: ElementRef }, { propertyName: "rightBtn", first: true, predicate: ["right"], descendants: true, read: ElementRef }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer hidden-xs\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component\"\n >\n <a\n title=\"{{ tab?.label | translate }}\"\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\n </span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
104
+ TabsOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen" }, host: { properties: { "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "leftBtn", first: true, predicate: ["left"], descendants: true, read: ElementRef }, { propertyName: "rightBtn", first: true, predicate: ["right"], descendants: true, read: ElementRef }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer hidden-xs\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component\"\n >\n <a\n title=\"{{ tab?.label | translate }}\"\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\n </span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { 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: "directive", type: i5.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }] });
104
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabsOutletComponent, decorators: [{
105
106
  type: Component,
106
- args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer hidden-xs\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component\"\n >\n <a\n title=\"{{ tab?.label | translate }}\"\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\n </span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
107
+ args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer hidden-xs\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component\"\n >\n <a\n title=\"{{ tab?.label | translate }}\"\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\n </span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
107
108
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.HeaderService }]; }, propDecorators: { tabs: [{
108
109
  type: Input
109
110
  }], orientation: [{
@@ -135,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
135
136
  type: ViewChild,
136
137
  args: ['tabsContainer', { read: ElementRef, static: false }]
137
138
  }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL3RhYnMtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvdGFicy90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnQixlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQU16RCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLElBQXlDLGVBQWU7UUFDdEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFvQyxPQUFPO1FBQ3pDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUErQyxZQUFZO1FBQ3pE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QXNCO2dCQUdDLE9BQU87c0JBQTFDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQU9pQixZQUFZO3NCQUExRCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFHSSxVQUFVO3NCQUF0RCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFHNkIsU0FBUztzQkFBNUUsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ00sT0FBTztzQkFBdEUsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1csUUFBUTtzQkFBeEUsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRS9DLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgSG9zdEJpbmRpbmcsXG4gIFJlbmRlcmVyMixcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxuICBPbkRlc3Ryb3ksXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZyb21FdmVudFBhdHRlcm4sIGZyb21FdmVudCwgbWVyZ2UsIFN1YnNjcmlwdGlvbiwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi90YWIubW9kZWwnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uL2hlYWRlci9oZWFkZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10YWJzLW91dGxldCxjOHktdWktdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFic091dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdGFiczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgb3JpZW50YXRpb246ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAndmVydGljYWwnO1xuICBASW5wdXQoKSBuYXZpZ2F0b3JPcGVuID0gZmFsc2U7XG4gIHNob3dMZWZ0ID0gZmFsc2U7XG4gIHNob3dSaWdodCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5hdmlnYXRvci1vcGVuJykgZ2V0IGlzTmF2aWdhdG9yT3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0b3JPcGVuO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS10YWJzJykgZ2V0IGhhc1RhYnMoKSB7XG4gICAgbGV0IHZpc2libGVUYWJzID0gW107XG4gICAgaWYgKHRoaXMudGFicykge1xuICAgICAgdmlzaWJsZVRhYnMgPSB0aGlzLnRhYnMuZmlsdGVyKHRhYiA9PiB0YWIuaGlkZSAhPT0gdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2aXNpYmxlVGFicy5sZW5ndGggPiAxIHx8IHZpc2libGVUYWJzLmZpbmQodGFiID0+IHRhYi5zaG93QWx3YXlzKTtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhZ2UtdGFicy1ob3Jpem9udGFsJykgZ2V0IGlzSG9yaXpvbnRhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS10YWJzLXZlcnRpY2FsJykgZ2V0IGlzVmVydGljYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gIT09ICdob3Jpem9udGFsJztcbiAgfVxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbGVmdCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGxlZnRCdG46IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgcmlnaHRCdG46IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RhYnNDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0YWJzQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIHNjcm9sbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHRhYnNDaGFuZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiW10+KFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgaGVhZGVyOiBIZWFkZXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGFicykge1xuICAgICAgdGhpcy50YWJzQ2hhbmdlcyQubmV4dCh0aGlzLnRhYnMpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xuICAgICAgdGhpcy5zY3JvbGxTdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc0FjdGl2ZSh0YWI6IFRhYikge1xuICAgIGlmICh0YWIgJiYgdGFiLnBhdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZSh0YWIucGF0aCwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVUbyhwYXRoKSB7XG4gICAgdGhpcy5oZWFkZXIudG9nZ2xlKCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3BhdGhdKTtcbiAgfVxuXG4gIHNjcm9sbChkaXJlY3Rpb246ICdyaWdodCcgfCAnbGVmdCcgPSAncmlnaHQnKSB7XG4gICAgY29uc3QgeyB3aWR0aFNjcm9sbCwgd2lkdGgsIHNjcm9sbExlZnQgfSA9IHRoaXMuZ2V0RGltZW5zaW9ucygpO1xuICAgIGNvbnN0IG11bHRpcGxpZXIgPSBkaXJlY3Rpb24gPT09ICdsZWZ0JyA/IC0xIDogMTtcblxuICAgIGxldCB0YXJnZXRTY3JvbGwgPSBzY3JvbGxMZWZ0ICsgd2lkdGggKiBtdWx0aXBsaWVyO1xuICAgIGlmICh0YXJnZXRTY3JvbGwgPCAwKSB7XG4gICAgICB0YXJnZXRTY3JvbGwgPSAwO1xuICAgIH1cbiAgICBpZiAodGFyZ2V0U2Nyb2xsID4gd2lkdGhTY3JvbGwgLSB3aWR0aCkge1xuICAgICAgdGFyZ2V0U2Nyb2xsID0gd2lkdGhTY3JvbGwgLSB3aWR0aDtcbiAgICB9XG4gICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0U2Nyb2xsO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpYmUoKSB7XG4gICAgbGV0IHVubGlzdGVuO1xuICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uID0gbWVyZ2UoXG4gICAgICB0aGlzLnRhYnNDaGFuZ2VzJCxcbiAgICAgIGZyb21FdmVudCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyksXG4gICAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgICAoaGFuZGxlcjogYW55KSA9PiB7XG4gICAgICAgICAgdW5saXN0ZW4gPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsIGhhbmRsZXIpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB1bmxpc3RlbigpXG4gICAgICApXG4gICAgKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1MCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU2Nyb2xsKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGwoKSB7XG4gICAgY29uc3QgeyB3aWR0aFNjcm9sbCwgd2lkdGgsIHNjcm9sbExlZnQgfSA9IHRoaXMuZ2V0RGltZW5zaW9ucygpO1xuICAgIHRoaXMuc2hvd0xlZnQgPSAhIXNjcm9sbExlZnQ7XG4gICAgdGhpcy5zaG93UmlnaHQgPSB3aWR0aFNjcm9sbCA+IHdpZHRoICsgc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGltZW5zaW9ucygpIHtcbiAgICBjb25zdCBlbFRhYnMgPSB0aGlzLnRhYnNDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBlbCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgd2lkdGhTY3JvbGwgPSBlbFRhYnMuc2Nyb2xsV2lkdGg7XG4gICAgY29uc3Qgd2lkdGggPSBlbC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gZWwuc2Nyb2xsTGVmdDtcbiAgICByZXR1cm4geyB3aWR0aFNjcm9sbCwgd2lkdGgsIHNjcm9sbExlZnQgfTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInRhYkNvbnRhaW5lciBoaWRkZW4teHNcIlxuICAjY29udGFpbmVyXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInRhYnMtc2xpZGVyIHRhYnMtc2xpZGVyLWxlZnRcIlxuICAgIHRpdGxlPVwie3sgJ1Njcm9sbCB0byB0aGUgbGVmdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgICNsZWZ0XG4gICAgKm5nSWY9XCJzaG93TGVmdCB8fCBzaG93UmlnaHRcIlxuICAgIFtkaXNhYmxlZF09XCIhc2hvd0xlZnRcIlxuICAgIChjbGljayk9XCJzY3JvbGwoJ2xlZnQnKVwiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCInY2hldnJvbi1sZWZ0J1wiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInRhYnMtc2xpZGVyIHRhYnMtc2xpZGVyLXJpZ2h0XCJcbiAgICB0aXRsZT1cInt7ICdTY3JvbGwgdG8gdGhlIHJpZ2h0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgI3JpZ2h0XG4gICAgKm5nSWY9XCJzaG93UmlnaHQgfHwgc2hvd0xlZnRcIlxuICAgIFtkaXNhYmxlZF09XCIhc2hvd1JpZ2h0XCJcbiAgICAoY2xpY2spPVwic2Nyb2xsKCdyaWdodCcpXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm5hdiBuYXYtdGFicyBuYXYtdGFic2M4eVwiXG4gICAgcm9sZT1cImxpc3RcIlxuICAgICN0YWJzQ29udGFpbmVyXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiPlxuICAgICAgPGRpdlxuICAgICAgICByb2xlPVwibGlzdGl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogcmxhPy5pc0FjdGl2ZSB9XCJcbiAgICAgICAgKm5nSWY9XCIhdGFiLmNvbXBvbmVudFwiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgdGl0bGU9XCJ7eyB0YWI/LmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJ0YWIucGF0aFwiXG4gICAgICAgICAgcm91dGVyTGlua0FjdGl2ZVxuICAgICAgICAgICNybGE9XCJyb3V0ZXJMaW5rQWN0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBbYzh5SWNvbl09XCJ0YWI/Lmljb25cIlxuICAgICAgICAgICAgKm5nSWY9XCIhdGFiLnRlbXBsYXRlICYmIHRhYj8uaWNvblwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0YWIudGVtcGxhdGUgJiYgIXRhYi5jb21wb25lbnRcIj5cbiAgICAgICAgICAgIHt7IHRhYj8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi50ZW1wbGF0ZTsgaW5qZWN0b3I6IHRhYi5pbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cInRhYi5jb21wb25lbnQ7IGluamVjdG9yOiB0YWIuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInZpc2libGUteHMgbW9iaWxlLXRhYnNcIj5cbiAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBkLWZsZXggbS1iLTBcIj5cbiAgICA8bGkgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXIgZmxleC1ncm93XCI+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIChjaGFuZ2UpPVwibmF2aWdhdGVUbygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICNzZWxlY3RcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWIuY29tcG9uZW50XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0YWIucGF0aFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNBY3RpdmUodGFiKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGFiPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbGk+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuY29tcG9uZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwidGFiLmNvbXBvbmVudDsgaW5qZWN0b3I6IHRhYi5pbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS90YWJzL3RhYnMtb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvdGFicy90YWJzLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBS1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnQixlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFNekQsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixJQUF5QyxlQUFlO1FBQ3RELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBb0MsT0FBTztRQUN6QyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztTQUMxRDtRQUNELE9BQU8sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsSUFBK0MsWUFBWTtRQUN6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QUFzQjtnQkFHQyxPQUFPO3NCQUExQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFPaUIsWUFBWTtzQkFBMUQsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBR0ksVUFBVTtzQkFBdEQsV0FBVzt1QkFBQywwQkFBMEI7Z0JBRzZCLFNBQVM7c0JBQTVFLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNNLE9BQU87c0JBQXRFLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNXLFFBQVE7c0JBQXhFLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUUvQyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIEhvc3RCaW5kaW5nLFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgT25EZXN0cm95LFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmcm9tRXZlbnRQYXR0ZXJuLCBmcm9tRXZlbnQsIG1lcmdlLCBTdWJzY3JpcHRpb24sIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4vdGFiLm1vZGVsJztcbmltcG9ydCB7IEhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktdGFicy1vdXRsZXQsYzh5LXVpLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy1vdXRsZXQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRhYnNPdXRsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHRhYnM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG9yaWVudGF0aW9uOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ3ZlcnRpY2FsJztcbiAgQElucHV0KCkgbmF2aWdhdG9yT3BlbiA9IGZhbHNlO1xuICBzaG93TGVmdCA9IGZhbHNlO1xuICBzaG93UmlnaHQgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uYXZpZ2F0b3Itb3BlbicpIGdldCBpc05hdmlnYXRvck9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdG9yT3BlbjtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhZ2UtdGFicycpIGdldCBoYXNUYWJzKCkge1xuICAgIGxldCB2aXNpYmxlVGFicyA9IFtdO1xuICAgIGlmICh0aGlzLnRhYnMpIHtcbiAgICAgIHZpc2libGVUYWJzID0gdGhpcy50YWJzLmZpbHRlcih0YWIgPT4gdGFiLmhpZGUgIT09IHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZVRhYnMubGVuZ3RoID4gMSB8fCB2aXNpYmxlVGFicy5maW5kKHRhYiA9PiB0YWIuc2hvd0Fsd2F5cyk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYWdlLXRhYnMtaG9yaXpvbnRhbCcpIGdldCBpc0hvcml6b250YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJztcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhZ2UtdGFicy12ZXJ0aWNhbCcpIGdldCBpc1ZlcnRpY2FsKCkge1xuICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uICE9PSAnaG9yaXpvbnRhbCc7XG4gIH1cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2xlZnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBsZWZ0QnRuOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdyaWdodCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIHJpZ2h0QnRuOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0YWJzQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGFic0NvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB0YWJzQ2hhbmdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYltdPihbXSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGhlYWRlcjogSGVhZGVyU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnRhYnMpIHtcbiAgICAgIHRoaXMudGFic0NoYW5nZXMkLm5leHQodGhpcy50YWJzKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zY3JvbGxTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgaXNBY3RpdmUodGFiOiBUYWIpIHtcbiAgICBpZiAodGFiICYmIHRhYi5wYXRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZXIuaXNBY3RpdmUodGFiLnBhdGgsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG8ocGF0aCkge1xuICAgIHRoaXMuaGVhZGVyLnRvZ2dsZSgpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtwYXRoXSk7XG4gIH1cblxuICBzY3JvbGwoZGlyZWN0aW9uOiAncmlnaHQnIHwgJ2xlZnQnID0gJ3JpZ2h0Jykge1xuICAgIGNvbnN0IHsgd2lkdGhTY3JvbGwsIHdpZHRoLCBzY3JvbGxMZWZ0IH0gPSB0aGlzLmdldERpbWVuc2lvbnMoKTtcbiAgICBjb25zdCBtdWx0aXBsaWVyID0gZGlyZWN0aW9uID09PSAnbGVmdCcgPyAtMSA6IDE7XG5cbiAgICBsZXQgdGFyZ2V0U2Nyb2xsID0gc2Nyb2xsTGVmdCArIHdpZHRoICogbXVsdGlwbGllcjtcbiAgICBpZiAodGFyZ2V0U2Nyb2xsIDwgMCkge1xuICAgICAgdGFyZ2V0U2Nyb2xsID0gMDtcbiAgICB9XG4gICAgaWYgKHRhcmdldFNjcm9sbCA+IHdpZHRoU2Nyb2xsIC0gd2lkdGgpIHtcbiAgICAgIHRhcmdldFNjcm9sbCA9IHdpZHRoU2Nyb2xsIC0gd2lkdGg7XG4gICAgfVxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldFNjcm9sbDtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsU3Vic2NyaWJlKCkge1xuICAgIGxldCB1bmxpc3RlbjtcbiAgICB0aGlzLnNjcm9sbFN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgdGhpcy50YWJzQ2hhbmdlcyQsXG4gICAgICBmcm9tRXZlbnQodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpLFxuICAgICAgZnJvbUV2ZW50UGF0dGVybihcbiAgICAgICAgKGhhbmRsZXI6IGFueSkgPT4ge1xuICAgICAgICAgIHVubGlzdGVuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCBoYW5kbGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gdW5saXN0ZW4oKVxuICAgICAgKVxuICAgIClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVNjcm9sbCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2Nyb2xsKCkge1xuICAgIGNvbnN0IHsgd2lkdGhTY3JvbGwsIHdpZHRoLCBzY3JvbGxMZWZ0IH0gPSB0aGlzLmdldERpbWVuc2lvbnMoKTtcbiAgICB0aGlzLnNob3dMZWZ0ID0gISFzY3JvbGxMZWZ0O1xuICAgIHRoaXMuc2hvd1JpZ2h0ID0gd2lkdGhTY3JvbGwgPiB3aWR0aCArIHNjcm9sbExlZnQ7XG4gIH1cblxuICBwcml2YXRlIGdldERpbWVuc2lvbnMoKSB7XG4gICAgY29uc3QgZWxUYWJzID0gdGhpcy50YWJzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZWwgPSB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHdpZHRoU2Nyb2xsID0gZWxUYWJzLnNjcm9sbFdpZHRoO1xuICAgIGNvbnN0IHdpZHRoID0gZWwuY2xpZW50V2lkdGg7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGVsLnNjcm9sbExlZnQ7XG4gICAgcmV0dXJuIHsgd2lkdGhTY3JvbGwsIHdpZHRoLCBzY3JvbGxMZWZ0IH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJ0YWJDb250YWluZXIgaGlkZGVuLXhzXCJcbiAgI2NvbnRhaW5lclxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJ0YWJzLXNsaWRlciB0YWJzLXNsaWRlci1sZWZ0XCJcbiAgICB0aXRsZT1cInt7ICdTY3JvbGwgdG8gdGhlIGxlZnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAjbGVmdFxuICAgICpuZ0lmPVwic2hvd0xlZnQgfHwgc2hvd1JpZ2h0XCJcbiAgICBbZGlzYWJsZWRdPVwiIXNob3dMZWZ0XCJcbiAgICAoY2xpY2spPVwic2Nyb2xsKCdsZWZ0JylcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiJ2NoZXZyb24tbGVmdCdcIj48L2k+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJ0YWJzLXNsaWRlciB0YWJzLXNsaWRlci1yaWdodFwiXG4gICAgdGl0bGU9XCJ7eyAnU2Nyb2xsIHRvIHRoZSByaWdodCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgICNyaWdodFxuICAgICpuZ0lmPVwic2hvd1JpZ2h0IHx8IHNob3dMZWZ0XCJcbiAgICBbZGlzYWJsZWRdPVwiIXNob3dSaWdodFwiXG4gICAgKGNsaWNrKT1cInNjcm9sbCgncmlnaHQnKVwiXG4gID5cbiAgICA8aSBbYzh5SWNvbl09XCInY2hldnJvbi1yaWdodCdcIj48L2k+XG4gIDwvYnV0dG9uPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJuYXYgbmF2LXRhYnMgbmF2LXRhYnNjOHlcIlxuICAgIHJvbGU9XCJsaXN0XCJcbiAgICAjdGFic0NvbnRhaW5lclxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT1cImxpc3RpdGVtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHJsYT8uaXNBY3RpdmUgfVwiXG4gICAgICAgICpuZ0lmPVwiIXRhYi5jb21wb25lbnRcIlxuICAgICAgPlxuICAgICAgICA8YVxuICAgICAgICAgIHRpdGxlPVwie3sgdGFiPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwidGFiLnBhdGhcIlxuICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmVcbiAgICAgICAgICAjcmxhPVwicm91dGVyTGlua0FjdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgW2M4eUljb25dPVwidGFiPy5pY29uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRhYi50ZW1wbGF0ZSAmJiB0YWI/Lmljb25cIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFiLnRlbXBsYXRlICYmICF0YWIuY29tcG9uZW50XCI+XG4gICAgICAgICAgICB7eyB0YWI/LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGVtcGxhdGU7IGluamVjdG9yOiB0YWIuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqYzh5Q29tcG9uZW50T3V0bGV0PVwidGFiLmNvbXBvbmVudDsgZW52aXJvbm1lbnRJbmplY3RvcjogdGFiLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ2aXNpYmxlLXhzIG1vYmlsZS10YWJzXCI+XG4gIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgZC1mbGV4IG0tYi0wXCI+XG4gICAgPGxpIGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyIGZsZXgtZ3Jvd1wiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICAoY2hhbmdlKT1cIm5hdmlnYXRlVG8oJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAjc2VsZWN0XG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCI+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgKm5nSWY9XCIhdGFiLmNvbXBvbmVudFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidGFiLnBhdGhcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzQWN0aXZlKHRhYilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRhYj8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2xpPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiLmNvbXBvbmVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpjOHlDb21wb25lbnRPdXRsZXQ9XCJ0YWIuY29tcG9uZW50OyBlbnZpcm9ubWVudEluamVjdG9yOiB0YWIuaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
@@ -107,9 +107,9 @@ export class PackageDetailsComponent {
107
107
  }
108
108
  }
109
109
  PackageDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PackageDetailsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.FetchClient }, { token: i3.WizardModalService }, { token: i4.EcosystemService }, { token: i3.ContextRouteService }, { token: i3.PluginsService }, { token: i4.PackageAvailabilityService }, { token: i3.AppStateService }, { token: i3.PluginsService }], target: i0.ɵɵFactoryTarget.Component });
110
- PackageDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PackageDetailsComponent, selector: "c8y-package-details", ngImport: i0, template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml : { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i8.PluginListComponent, selector: "c8y-plugin-list", inputs: ["plugins$", "emptyListText", "selectable", "installable", "package"], outputs: ["selectedItems"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i3.MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: i4.TranslatePackageLabelPipe, name: "translatePackageLabel" }] });
110
+ PackageDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PackageDetailsComponent, selector: "c8y-package-details", ngImport: i0, template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "directive", type: i7.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i8.PluginListComponent, selector: "c8y-plugin-list", inputs: ["plugins$", "emptyListText", "selectable", "installable", "package"], outputs: ["selectedItems"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i3.MarkdownToHtmlPipe, name: "markdownToHtml" }, { kind: "pipe", type: i4.TranslatePackageLabelPipe, name: "translatePackageLabel" }] });
111
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PackageDetailsComponent, decorators: [{
112
112
  type: Component,
113
- args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml : { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n" }]
113
+ args: [{ selector: 'c8y-package-details', template: "<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n placement=\"right\"\n itemClass=\"navbar-form\"\n *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n <div class=\"form-horizontal\">\n <div class=\"form-group\">\n <label\n for=\"availability\"\n translate\n >\n Availability`of package based on app state`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"availability\"\n [(ngModel)]=\"packageAvailability\"\n [disabled]=\"isChangingAvailability\"\n (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n >\n <option\n *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n [ngValue]=\"availability.value\"\n >\n {{ availability.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n <div class=\"card-block p-t-24 p-b-24 large-padding\">\n <button\n class=\"card__ribbon btn-clean\"\n [attr.aria-label]=\"\n (package.label | translatePackageLabel) +\n ': ' +\n (packageTypeLabels[packageType].tooltip | translate)\n \"\n tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n placement=\"bottom\"\n type=\"button\"\n *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n [delay]=\"500\"\n >\n <span\n [ngClass]=\"{\n 'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n 'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL\n }\"\n >\n {{ package.label | translatePackageLabel }}\n </span>\n </button>\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i\n class=\"c8y-icon-duocolor icon-48\"\n c8yIcon=\"big-parcel\"\n ></i>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n \"\n [tooltip]=\"appState?.tooltip | translate\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"appState?.class\"\n >\n {{ appState?.label | translate }}\n </span>\n </button>\n <button\n class=\"btn-clean\"\n [attr.aria-label]=\"\n (packageContentState?.label | translate) +\n ': ' +\n (packageContentState?.tooltip | translate)\n \"\n [tooltip]=\"packageContentState?.tooltip | translate\"\n placement=\"bottom\"\n type=\"button\"\n [delay]=\"500\"\n >\n <span\n class=\"label\"\n [ngClass]=\"packageContentState?.class\"\n >\n {{ packageContentState?.label | translate }}\n </span>\n </button>\n </div>\n\n <div class=\"flex-grow col-10\">\n <div class=\"content-flex-80\">\n <div class=\"col-5\">\n <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n <p *ngIf=\"description\">{{ description }}</p>\n <p\n class=\"text-muted\"\n *ngIf=\"!description\"\n >\n <em>{{ 'No description available.' | translate }}</em>\n </p>\n </div>\n <div\n class=\"col-3 text-right-md p-r-md-40\"\n *ngIf=\"isPackageBlueprint\"\n >\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"deploy()\"\n data-cy=\"c8y-package-details--deploy-application-button\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"output\"\n ></i>\n {{ 'Deploy application' | translate }}\n </button>\n </div>\n <div class=\"flex-grow\">\n <c8y-properties-list\n [data]=\"package.manifest\"\n [properties]=\"packageProperties\"\n ></c8y-properties-list>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n </div>\n <div class=\"card-block p-l-16 p-r-16\">\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the package.'\n | translate\n \"\n *ngIf=\"!markdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"markdown-content\"\n [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n ></div>\n </div>\n <div class=\"separator-bottom visible-sm visible-xs\"></div>\n </div>\n\n <div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top\">\n <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n </div>\n <div class=\"border-left flex-grow\">\n <!-- empty state -->\n <div\n class=\"p-16\"\n *ngIf=\"(exportedPlugins$ | async).length === 0\"\n >\n <c8y-ui-empty-state\n [icon]=\"'plugin'\"\n [title]=\"'No plugins to display.' | translate\"\n [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <c8y-plugin-list\n [plugins$]=\"exportedPlugins$\"\n [selectable]=\"false\"\n [installable]=\"true\"\n [package]=\"package\"\n ></c8y-plugin-list>\n </div>\n </div>\n</div>\n" }]
114
114
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FetchClient }, { type: i3.WizardModalService }, { type: i4.EcosystemService }, { type: i3.ContextRouteService }, { type: i3.PluginsService }, { type: i4.PackageAvailabilityService }, { type: i3.AppStateService }, { type: i3.PluginsService }]; } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFFTCxXQUFXLEVBSVosTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUVMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLGNBQWMsRUFFZCxrQkFBa0IsRUFDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzNCLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLHVCQUF1QjtJQXNCbEMsWUFDVSxjQUE4QixFQUM5QixNQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QiwwQkFBc0QsRUFDdEQsRUFBbUIsRUFDbkIsYUFBNkI7UUFSN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixH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R0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFzQixDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs7b0hBbEhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJEQ2pDcEMscXhOQStNQTsyRkQ5S2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBcHBsaWNhdGlvbixcbiAgSUZldGNoT3B0aW9ucyxcbiAgSUZldGNoUmVzcG9uc2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgUGFja2FnZVR5cGUsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBQcm9wZXJ0aWVzTGlzdEl0ZW0sXG4gIFdpemFyZE1vZGFsU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblN0YXRlLFxuICBFY29zeXN0ZW1TZXJ2aWNlLFxuICBFY29zeXN0ZW1XaXphcmRzLFxuICBwYWNrYWdlUHJvcGVydGllcyxcbiAgUEFDS0FHRV9UWVBFX0xBQkVMUyxcbiAgUGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhY2thZ2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbWFya2Rvd246IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb24gPSB7fTtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcHBTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgaXNQYWNrYWdlQmx1ZXByaW50OiBib29sZWFuO1xuICBleHBvcnRlZFBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICBpc093bmVkQnlDdXJyZW50VGVuYW50ID0gZmFsc2U7XG4gIGlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9IGZhbHNlO1xuICBwYWNrYWdlQ29udGVudFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlO1xuICBwYWNrYWdlVHlwZTogUGFja2FnZVR5cGU7XG4gIHBhY2thZ2VBdmFpbGFiaWxpdHk6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5O1xuXG4gIHJlYWRvbmx5IHBhY2thZ2VUeXBlTGFiZWxzID0gUEFDS0FHRV9UWVBFX0xBQkVMUztcbiAgcmVhZG9ubHkgUEFDS0FHRV9UWVBFID0gUGFja2FnZVR5cGU7XG4gIHJlYWRvbmx5IHBhY2thZ2VQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IHBhY2thZ2VQcm9wZXJ0aWVzO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlcnM6IGFueSA9IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L21hcmtkb3duJywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfTtcbiAgcHJpdmF0ZSBOT1RfRk9VTkRfRVJST1JfQ09ERSA9IDQwNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSB3aXphcmRNb2RhbFNlcnZpY2U6IFdpemFyZE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2U6IFBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9ICEhdGhpcy51aS5jdXJyZW50VGVuYW50LnZhbHVlPy5hbGxvd0NyZWF0ZVRlbmFudHM7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgZGVwbG95KCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgd2l6YXJkQ29uZmlnOiB7fSxcbiAgICAgIGlkOiBFY29zeXN0ZW1XaXphcmRzLkJMVUVQUklOVF9ERVBMT1lNRU5ULFxuICAgICAgcGFja2FnZTogdGhpcy5wYWNrYWdlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IHsgaW5pdGlhbFN0YXRlIH07XG4gICAgdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwY2tnOiBJQXBwbGljYXRpb24sIG5ld0F2YWlsYWJpbGl0eTogQXBwbGljYXRpb25BdmFpbGFiaWxpdHkpIHtcbiAgICB0aGlzLmlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSB0cnVlO1xuICAgIHBja2cgPSBhd2FpdCB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLmFza0lmQXZhaWxhYmlsaXR5U2hvdWxkQmVTZXRUbyhcbiAgICAgIHBja2csXG4gICAgICBuZXdBdmFpbGFiaWxpdHlcbiAgICApO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eUhhc0NoYW5nZWQgPSBwY2tnLmF2YWlsYWJpbGl0eSA9PT0gbmV3QXZhaWxhYmlsaXR5O1xuICAgIGlmIChhdmFpbGFiaWxpdHlIYXNDaGFuZ2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHBja2cpO1xuICAgICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnNldENvbnRleHQodGhpcy5hY3RpdmF0ZWRSb3V0ZSwgcGNrZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFja2FnZUF2YWlsYWJpbGl0eSA9IHRoaXMucGFja2FnZS5hdmFpbGFiaWxpdHk7XG4gICAgfVxuICAgIHRoaXMuaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwY2tnPzogSUFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5wYWNrYWdlID0gcGNrZ1xuICAgICAgPyBwY2tnXG4gICAgICA6IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5wYWNrYWdlQXZhaWxhYmlsaXR5ID0gdGhpcy5wYWNrYWdlLmF2YWlsYWJpbGl0eTtcbiAgICB0aGlzLnBhY2thZ2VDb250ZW50U3RhdGUgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0UGFja2FnZUNvbnRlbnRTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMucGFja2FnZVR5cGUgPSB0aGlzLnBsdWdpblNlcnZpY2UuZ2V0UGFja2FnZVR5cGUodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBhY2thZ2U/Lm5hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMucGFja2FnZT8ubWFuaWZlc3Q/LmRlc2NyaXB0aW9uO1xuICAgIHRoaXMubWFya2Rvd24gPSBhd2FpdCB0aGlzLmdldFJlYWRtZUZpbGVDb250ZW50KCk7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKCk7XG4gICAgdGhpcy5hcHBTdGF0ZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNQYWNrYWdlQmx1ZXByaW50ID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzUGFja2FnZUJsdWVwcmludCh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNPd25lZEJ5Q3VycmVudFRlbmFudCA9XG4gICAgICB0aGlzLnBhY2thZ2U/Lm93bmVyPy50ZW5hbnQ/LmlkID09PSB0aGlzLnVpLmN1cnJlbnRUZW5hbnQudmFsdWU/Lm5hbWU7XG4gICAgdGhpcy5leHRyYWN0UGFja2FnZU1GRXhwb3J0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UGFja2FnZU1GRXhwb3J0cygpIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRkV4cG9ydHModGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLmV4cG9ydGVkUGx1Z2lucyQubmV4dChleHBvcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVhZG1lRmlsZUNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkbWVGaWxlID0gYXdhaXQgdGhpcy5nZXRSZWFkbWVGaWxlKCk7XG5cbiAgICBpZiAocmVhZG1lRmlsZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlYWRtZUZpbGUudGV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlYWRtZUZpbGUoKTogUHJvbWlzZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcbiAgICBsZXQgcmVzdWx0OiBJRmV0Y2hSZXNwb25zZTtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgIH07XG4gICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1SRUFETUUubWRgLCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN0YXR1cyA9PT0gdGhpcy5OT1RfRk9VTkRfRVJST1JfQ09ERSkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1yZWFkbWUubWRgLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgL2FwcHMvJHt0aGlzLnBhY2thZ2UuY29udGV4dFBhdGh9L2A7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWF0b20nXCJcbiAgICBbbGFiZWxdPVwiJ0Vjb3N5c3RlbScgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidiaWctcGFyY2VsJ1wiXG4gICAgW2xhYmVsXT1cIidFeHRlbnNpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwibmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ0V4dGVuc2lvbiBwYWNrYWdlJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuICAqbmdJZj1cImlzT3duZWRCeUN1cnJlbnRUZW5hbnQgJiYgaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIEF2YWlsYWJpbGl0eVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWNrYWdlQXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwYWNrYWdlLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdmFpbGFiaWxpdHkgb2YgcGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2UuYXZhaWxhYmlsaXRpZXNcIlxuICAgICAgICAgICAgW25nVmFsdWVdPVwiYXZhaWxhYmlsaXR5LnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBhdmFpbGFiaWxpdHkubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBkLWdyaWQgZ3JpZF9fY29sLS04LTQtLW1kIGdyaWRfX3Jvdy0tZml0LWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cImJnLWxldmVsLTEgZ3JpZF9fY29sLS1mdWxsc3BhbiBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTI0IHAtYi0yNCBsYXJnZS1wYWRkaW5nXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY2FyZF9fcmliYm9uIGJ0bi1jbGVhblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgKHBhY2thZ2UubGFiZWwgfCB0cmFuc2xhdGVQYWNrYWdlTGFiZWwpICtcbiAgICAgICAgICAnOiAnICtcbiAgICAgICAgICAocGFja2FnZVR5cGVMYWJlbHNbcGFja2FnZVR5cGVdLnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAgIHRvb2x0aXA9XCJ7eyBwYWNrYWdlVHlwZUxhYmVsc1twYWNrYWdlVHlwZV0udG9vbHRpcCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cInBhY2thZ2VUeXBlICE9PSBQQUNLQUdFX1RZUEUuQ1VTVE9NXCJcbiAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JnLWluZm8nOiBwYWNrYWdlVHlwZSA9PT0gUEFDS0FHRV9UWVBFLkNPTU1VTklUWSxcbiAgICAgICAgICAgICdiZy1wcmltYXJ5JzogcGFja2FnZVR5cGUgPT09IFBBQ0tBR0VfVFlQRS5PRkZJQ0lBTFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFja2FnZS5sYWJlbCB8IHRyYW5zbGF0ZVBhY2thZ2VMYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNzBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaWNvbi00OFwiXG4gICAgICAgICAgICBjOHlJY29uPVwiYmlnLXBhcmNlbFwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAoYXBwU3RhdGU/LmxhYmVsIHwgdHJhbnNsYXRlKSArICc6ICcgKyAoYXBwU3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiYXBwU3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFwcFN0YXRlPy5jbGFzc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgIChwYWNrYWdlQ29udGVudFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSkgK1xuICAgICAgICAgICAgICAnOiAnICtcbiAgICAgICAgICAgICAgKHBhY2thZ2VDb250ZW50U3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwicGFja2FnZUNvbnRlbnRTdGF0ZT8udG9vbHRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGFja2FnZUNvbnRlbnRTdGF0ZT8uY2xhc3NcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBwYWNrYWdlQ29udGVudFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IGNvbC0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtODBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LWJvbGQgbS1iLThcIj57eyBuYW1lIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPHAgKm5nSWY9XCJkZXNjcmlwdGlvblwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGVtPnt7ICdObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuJyB8IHRyYW5zbGF0ZSB9fTwvZW0+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbC0zIHRleHQtcmlnaHQtbWQgcC1yLW1kLTQwXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1BhY2thZ2VCbHVlcHJpbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVwbG95KClcIlxuICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktcGFja2FnZS1kZXRhaWxzLS1kZXBsb3ktYXBwbGljYXRpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJvdXRwdXRcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAge3sgJ0RlcGxveSBhcHBsaWNhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgPGM4eS1wcm9wZXJ0aWVzLWxpc3RcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJwYWNrYWdlLm1hbmlmZXN0XCJcbiAgICAgICAgICAgICAgICBbcHJvcGVydGllc109XCJwYWNrYWdlUHJvcGVydGllc1wiXG4gICAgICAgICAgICAgID48L2M4eS1wcm9wZXJ0aWVzLWxpc3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yIHN0aWNreS10b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+e3sgJ0V4dGVuc2lvbiBwYWNrYWdlIG92ZXJ2aWV3JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtbC0xNiBwLXItMTZcIj5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ3VzZXItbWFudWFsJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gUkVBRE1FLm1kIGZvdW5kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJcbiAgICAgICAgICAnVG8gdmlldyB0aGUgY29udGVudHMgb2YgJnF1b3Q7UkVBRE1FJnF1b3Q7LCBhZGQgdGhlIGZpbGUgJnF1b3Q7UkVBRE1FLm1kJnF1b3Q7IHRvIHRoZSBwYWNrYWdlLidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgICpuZ0lmPVwiIW1hcmtkb3duXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwibWFya2Rvd24gfCBtYXJrZG93blRvSHRtbCA6IHsgYmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItYm90dG9tIHZpc2libGUtc20gdmlzaWJsZS14c1wiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnUGFja2FnZSBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItbGVmdCBmbGV4LWdyb3dcIj5cbiAgICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicC0xNlwiXG4gICAgICAgICpuZ0lmPVwiKGV4cG9ydGVkUGx1Z2lucyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwbHVnaW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHBsdWdpbnMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoaXMgcGFja2FnZSBkb2VzblxcJ3QgY29udGFpbiBwbHVnaW5zLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktcGx1Z2luLWxpc3RcbiAgICAgICAgW3BsdWdpbnMkXT1cImV4cG9ydGVkUGx1Z2lucyRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtpbnN0YWxsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3BhY2thZ2VdPVwicGFja2FnZVwiXG4gICAgICA+PC9jOHktcGx1Z2luLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9wYWNrYWdlcy9wYWNrYWdlLWRldGFpbHMvcGFja2FnZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFFTCxXQUFXLEVBSVosTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUVMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLGNBQWMsRUFFZCxrQkFBa0IsRUFDbkIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzNCLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLHVCQUF1QjtJQXNCbEMsWUFDVSxjQUE4QixFQUM5QixNQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QiwwQkFBc0QsRUFDdEQsRUFBbUIsRUFDbkIsYUFBNkI7UUFSN0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBNUJ2QyxZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUszQixxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakYsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQixnQ0FBMkIsR0FBRyxLQUFLLENBQUM7UUFLM0Isc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFDeEMsaUJBQVksR0FBRyxXQUFXLENBQUM7UUFDM0Isc0JBQWlCLEdBQXlCLGlCQUFpQixDQUFDO1FBQ3BELFlBQU8sR0FBUSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xGLHlCQUFvQixHQUFHLEdBQUcsQ0FBQztJQVloQyxDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQztRQUNyRixNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sWUFBWSxHQUFRO1lBQ3hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxvQkFBb0I7WUFDekMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFDRixNQUFNLFlBQVksR0FBaUIsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCLENBQUMsSUFBa0IsRUFBRSxlQUF3QztRQUMxRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyw4QkFBOEIsQ0FDekUsSUFBSSxFQUNKLGVBQWUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxlQUFlLENBQUM7UUFDckUsSUFBSSxzQkFBc0IsRUFBRTtZQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQW1CO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSTtZQUNqQixDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7UUFDOUUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLHNCQUFzQjtZQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7UUFDeEUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQjtRQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU5QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQzdCLE9BQU8sTUFBTSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDaEM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYTtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFzQixDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUFrQjtZQUM3QixNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs7b0hBbEhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJEQ2pDcEMsbXpOQStNQTsyRkQ5S2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkF2YWlsYWJpbGl0eSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBcHBsaWNhdGlvbixcbiAgSUZldGNoT3B0aW9ucyxcbiAgSUZldGNoUmVzcG9uc2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgUGFja2FnZVR5cGUsXG4gIFBsdWdpbnNTZXJ2aWNlLFxuICBQcm9wZXJ0aWVzTGlzdEl0ZW0sXG4gIFdpemFyZE1vZGFsU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblN0YXRlLFxuICBFY29zeXN0ZW1TZXJ2aWNlLFxuICBFY29zeXN0ZW1XaXphcmRzLFxuICBwYWNrYWdlUHJvcGVydGllcyxcbiAgUEFDS0FHRV9UWVBFX0xBQkVMUyxcbiAgUGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXBhY2thZ2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhY2thZ2VEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbWFya2Rvd246IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xuICBwYWNrYWdlOiBJQXBwbGljYXRpb24gPSB7fTtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcHBTdGF0ZTogQXBwbGljYXRpb25TdGF0ZTtcbiAgaXNQYWNrYWdlQmx1ZXByaW50OiBib29sZWFuO1xuICBleHBvcnRlZFBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICBpc093bmVkQnlDdXJyZW50VGVuYW50ID0gZmFsc2U7XG4gIGlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9IGZhbHNlO1xuICBwYWNrYWdlQ29udGVudFN0YXRlOiBBcHBsaWNhdGlvblN0YXRlO1xuICBwYWNrYWdlVHlwZTogUGFja2FnZVR5cGU7XG4gIHBhY2thZ2VBdmFpbGFiaWxpdHk6IEFwcGxpY2F0aW9uQXZhaWxhYmlsaXR5O1xuXG4gIHJlYWRvbmx5IHBhY2thZ2VUeXBlTGFiZWxzID0gUEFDS0FHRV9UWVBFX0xBQkVMUztcbiAgcmVhZG9ubHkgUEFDS0FHRV9UWVBFID0gUGFja2FnZVR5cGU7XG4gIHJlYWRvbmx5IHBhY2thZ2VQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTGlzdEl0ZW1bXSA9IHBhY2thZ2VQcm9wZXJ0aWVzO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlcnM6IGFueSA9IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L21hcmtkb3duJywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfTtcbiAgcHJpdmF0ZSBOT1RfRk9VTkRfRVJST1JfQ09ERSA9IDQwNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSB3aXphcmRNb2RhbFNlcnZpY2U6IFdpemFyZE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGVjb3N5c3RlbVNlcnZpY2U6IEVjb3N5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFja2FnZUF2YWlsYWJpbGl0eVNlcnZpY2U6IFBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpblNlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzQWxsb3dlZFRvQ3JlYXRlU3VidGVuYW50cyA9ICEhdGhpcy51aS5jdXJyZW50VGVuYW50LnZhbHVlPy5hbGxvd0NyZWF0ZVRlbmFudHM7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgZGVwbG95KCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogYW55ID0ge1xuICAgICAgd2l6YXJkQ29uZmlnOiB7fSxcbiAgICAgIGlkOiBFY29zeXN0ZW1XaXphcmRzLkJMVUVQUklOVF9ERVBMT1lNRU5ULFxuICAgICAgcGFja2FnZTogdGhpcy5wYWNrYWdlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9ucyA9IHsgaW5pdGlhbFN0YXRlIH07XG4gICAgdGhpcy53aXphcmRNb2RhbFNlcnZpY2Uuc2hvdyhtb2RhbE9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGFja2FnZUF2YWlsYWJpbGl0eShwY2tnOiBJQXBwbGljYXRpb24sIG5ld0F2YWlsYWJpbGl0eTogQXBwbGljYXRpb25BdmFpbGFiaWxpdHkpIHtcbiAgICB0aGlzLmlzQ2hhbmdpbmdBdmFpbGFiaWxpdHkgPSB0cnVlO1xuICAgIHBja2cgPSBhd2FpdCB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLmFza0lmQXZhaWxhYmlsaXR5U2hvdWxkQmVTZXRUbyhcbiAgICAgIHBja2csXG4gICAgICBuZXdBdmFpbGFiaWxpdHlcbiAgICApO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eUhhc0NoYW5nZWQgPSBwY2tnLmF2YWlsYWJpbGl0eSA9PT0gbmV3QXZhaWxhYmlsaXR5O1xuICAgIGlmIChhdmFpbGFiaWxpdHlIYXNDaGFuZ2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWREYXRhKHBja2cpO1xuICAgICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnNldENvbnRleHQodGhpcy5hY3RpdmF0ZWRSb3V0ZSwgcGNrZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFja2FnZUF2YWlsYWJpbGl0eSA9IHRoaXMucGFja2FnZS5hdmFpbGFiaWxpdHk7XG4gICAgfVxuICAgIHRoaXMuaXNDaGFuZ2luZ0F2YWlsYWJpbGl0eSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YShwY2tnPzogSUFwcGxpY2F0aW9uKSB7XG4gICAgdGhpcy5wYWNrYWdlID0gcGNrZ1xuICAgICAgPyBwY2tnXG4gICAgICA6IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKT8uY29udGV4dERhdGE7XG4gICAgdGhpcy5wYWNrYWdlQXZhaWxhYmlsaXR5ID0gdGhpcy5wYWNrYWdlLmF2YWlsYWJpbGl0eTtcbiAgICB0aGlzLnBhY2thZ2VDb250ZW50U3RhdGUgPSB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0UGFja2FnZUNvbnRlbnRTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMucGFja2FnZVR5cGUgPSB0aGlzLnBsdWdpblNlcnZpY2UuZ2V0UGFja2FnZVR5cGUodGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBhY2thZ2U/Lm5hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMucGFja2FnZT8ubWFuaWZlc3Q/LmRlc2NyaXB0aW9uO1xuICAgIHRoaXMubWFya2Rvd24gPSBhd2FpdCB0aGlzLmdldFJlYWRtZUZpbGVDb250ZW50KCk7XG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKCk7XG4gICAgdGhpcy5hcHBTdGF0ZSA9IHRoaXMuZWNvc3lzdGVtU2VydmljZS5nZXRBcHBTdGF0ZSh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNQYWNrYWdlQmx1ZXByaW50ID0gdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmlzUGFja2FnZUJsdWVwcmludCh0aGlzLnBhY2thZ2UpO1xuICAgIHRoaXMuaXNPd25lZEJ5Q3VycmVudFRlbmFudCA9XG4gICAgICB0aGlzLnBhY2thZ2U/Lm93bmVyPy50ZW5hbnQ/LmlkID09PSB0aGlzLnVpLmN1cnJlbnRUZW5hbnQudmFsdWU/Lm5hbWU7XG4gICAgdGhpcy5leHRyYWN0UGFja2FnZU1GRXhwb3J0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0UGFja2FnZU1GRXhwb3J0cygpIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRkV4cG9ydHModGhpcy5wYWNrYWdlKTtcbiAgICB0aGlzLmV4cG9ydGVkUGx1Z2lucyQubmV4dChleHBvcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVhZG1lRmlsZUNvbnRlbnQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkbWVGaWxlID0gYXdhaXQgdGhpcy5nZXRSZWFkbWVGaWxlKCk7XG5cbiAgICBpZiAocmVhZG1lRmlsZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlYWRtZUZpbGUudGV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlYWRtZUZpbGUoKTogUHJvbWlzZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcbiAgICBsZXQgcmVzdWx0OiBJRmV0Y2hSZXNwb25zZTtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgIH07XG4gICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1SRUFETUUubWRgLCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN0YXR1cyA9PT0gdGhpcy5OT1RfRk9VTkRfRVJST1JfQ09ERSkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2goYCR7YmFzZVVybH1yZWFkbWUubWRgLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgL2FwcHMvJHt0aGlzLnBhY2thZ2UuY29udGV4dFBhdGh9L2A7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWF0b20nXCJcbiAgICBbbGFiZWxdPVwiJ0Vjb3N5c3RlbScgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidiaWctcGFyY2VsJ1wiXG4gICAgW2xhYmVsXT1cIidFeHRlbnNpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwibmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ0V4dGVuc2lvbiBwYWNrYWdlJyB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm1cIlxuICAqbmdJZj1cImlzT3duZWRCeUN1cnJlbnRUZW5hbnQgJiYgaXNBbGxvd2VkVG9DcmVhdGVTdWJ0ZW5hbnRzXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIEF2YWlsYWJpbGl0eWBvZiBwYWNrYWdlIGJhc2VkIG9uIGFwcCBzdGF0ZWBcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJhdmFpbGFiaWxpdHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwicGFja2FnZUF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQ2hhbmdpbmdBdmFpbGFiaWxpdHlcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVBhY2thZ2VBdmFpbGFiaWxpdHkocGFja2FnZSwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmlsaXR5IG9mIHBhY2thZ2VBdmFpbGFiaWxpdHlTZXJ2aWNlLmF2YWlsYWJpbGl0aWVzXCJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImF2YWlsYWJpbGl0eS52YWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYXZhaWxhYmlsaXR5LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgZC1ncmlkIGdyaWRfX2NvbC0tOC00LS1tZCBncmlkX19yb3ctLWZpdC1hdXRvXCI+XG4gIDxkaXYgY2xhc3M9XCJiZy1sZXZlbC0xIGdyaWRfX2NvbC0tZnVsbHNwYW4gc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0yNCBwLWItMjQgbGFyZ2UtcGFkZGluZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImNhcmRfX3JpYmJvbiBidG4tY2xlYW5cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIChwYWNrYWdlLmxhYmVsIHwgdHJhbnNsYXRlUGFja2FnZUxhYmVsKSArXG4gICAgICAgICAgJzogJyArXG4gICAgICAgICAgKHBhY2thZ2VUeXBlTGFiZWxzW3BhY2thZ2VUeXBlXS50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICB0b29sdGlwPVwie3sgcGFja2FnZVR5cGVMYWJlbHNbcGFja2FnZVR5cGVdLnRvb2x0aXAgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJwYWNrYWdlVHlwZSAhPT0gUEFDS0FHRV9UWVBFLkNVU1RPTVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdiZy1pbmZvJzogcGFja2FnZVR5cGUgPT09IFBBQ0tBR0VfVFlQRS5DT01NVU5JVFksXG4gICAgICAgICAgICAnYmctcHJpbWFyeSc6IHBhY2thZ2VUeXBlID09PSBQQUNLQUdFX1RZUEUuT0ZGSUNJQUxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhY2thZ2UubGFiZWwgfCB0cmFuc2xhdGVQYWNrYWdlTGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTcwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDhcIlxuICAgICAgICAgICAgYzh5SWNvbj1cImJpZy1wYXJjZWxcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgKGFwcFN0YXRlPy5sYWJlbCB8IHRyYW5zbGF0ZSkgKyAnOiAnICsgKGFwcFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cImFwcFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcHBTdGF0ZT8uY2xhc3NcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhcHBTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAocGFja2FnZUNvbnRlbnRTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUpICtcbiAgICAgICAgICAgICAgJzogJyArXG4gICAgICAgICAgICAgIChwYWNrYWdlQ29udGVudFN0YXRlPy50b29sdGlwIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cInBhY2thZ2VDb250ZW50U3RhdGU/LnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBhY2thZ2VDb250ZW50U3RhdGU/LmNsYXNzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgcGFja2FnZUNvbnRlbnRTdGF0ZT8ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBjb2wtMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTgwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgdGV4dC1ib2xkIG0tYi04XCI+e3sgbmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxlbT57eyAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlLicgfCB0cmFuc2xhdGUgfX08L2VtPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMyB0ZXh0LXJpZ2h0LW1kIHAtci1tZC00MFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNQYWNrYWdlQmx1ZXByaW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlcGxveSgpXCJcbiAgICAgICAgICAgICAgICBkYXRhLWN5PVwiYzh5LXBhY2thZ2UtZGV0YWlscy0tZGVwbG95LWFwcGxpY2F0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICAgICAgICBjOHlJY29uPVwib3V0cHV0XCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgIHt7ICdEZXBsb3kgYXBwbGljYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgIDxjOHktcHJvcGVydGllcy1saXN0XG4gICAgICAgICAgICAgICAgW2RhdGFdPVwicGFja2FnZS5tYW5pZmVzdFwiXG4gICAgICAgICAgICAgICAgW3Byb3BlcnRpZXNdPVwicGFja2FnZVByb3BlcnRpZXNcIlxuICAgICAgICAgICAgICA+PC9jOHktcHJvcGVydGllcy1saXN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdFeHRlbnNpb24gcGFja2FnZSBvdmVydmlldycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWwtMTYgcC1yLTE2XCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIid1c2VyLW1hbnVhbCdcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIFJFQURNRS5tZCBmb3VuZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1RvIHZpZXcgdGhlIGNvbnRlbnRzIG9mICZxdW90O1JFQURNRSZxdW90OywgYWRkIHRoZSBmaWxlICZxdW90O1JFQURNRS5tZCZxdW90OyB0byB0aGUgcGFja2FnZS4nXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICAqbmdJZj1cIiFtYXJrZG93blwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1hcmtkb3duLWNvbnRlbnRcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIm1hcmtkb3duIHwgbWFya2Rvd25Ub0h0bWw6IHsgYmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItYm90dG9tIHZpc2libGUtc20gdmlzaWJsZS14c1wiPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGQtZmxleCBkLWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnUGFja2FnZSBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItbGVmdCBmbGV4LWdyb3dcIj5cbiAgICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicC0xNlwiXG4gICAgICAgICpuZ0lmPVwiKGV4cG9ydGVkUGx1Z2lucyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwbHVnaW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHBsdWdpbnMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoaXMgcGFja2FnZSBkb2VzblxcJ3QgY29udGFpbiBwbHVnaW5zLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktcGx1Z2luLWxpc3RcbiAgICAgICAgW3BsdWdpbnMkXT1cImV4cG9ydGVkUGx1Z2lucyRcIlxuICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtpbnN0YWxsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3BhY2thZ2VdPVwicGFja2FnZVwiXG4gICAgICA+PC9jOHktcGx1Z2luLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=