@c8y/ngx-components 1018.0.237 → 1018.0.239

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 (30) 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-detail.component.mjs +3 -3
  9. package/esm2020/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.mjs +3 -3
  10. package/esm2020/core/action/action-outlet.component.mjs +6 -5
  11. package/esm2020/core/common/common.module.mjs +8 -5
  12. package/esm2020/core/common/component-outlet.directive.mjs +56 -0
  13. package/esm2020/core/common/index.mjs +2 -1
  14. package/esm2020/core/data-grid/column/cell-renderer.component.mjs +5 -4
  15. package/esm2020/core/data-grid/column/filtering-form-renderer.component.mjs +5 -4
  16. package/esm2020/core/docs/help-and-support-outlet/help-and-support-outlet.component.mjs +7 -6
  17. package/esm2020/core/docs/legal-notices-outlet/legal-notices-outlet.component.mjs +6 -5
  18. package/esm2020/core/drawer/drawer-outlet/drawer-outlet.component.mjs +5 -4
  19. package/esm2020/core/navigator/navigator-node.component.mjs +6 -5
  20. package/esm2020/core/stepper/stepper-outlet.component.mjs +8 -7
  21. package/esm2020/core/tabs/tabs-outlet.component.mjs +5 -4
  22. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +14 -7
  23. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  24. package/fesm2015/c8y-ngx-components.mjs +199 -142
  25. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  26. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +14 -7
  27. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  28. package/fesm2020/c8y-ngx-components.mjs +198 -142
  29. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  30. package/package.json +1 -1
@@ -137,10 +137,10 @@ export class DashboardDetailComponent {
137
137
  }
138
138
  }
139
139
  DashboardDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: i1.BsModalRef }, { token: ICON_LIST }, { token: i2.ContextDashboardService }, { token: i3.NavigatorService }, { token: i3.Permissions }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
140
- DashboardDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", viewQueries: [{ propertyName: "dashboardDetailForm", first: true, predicate: ["dashboardDetailForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <form #dashboardDetailForm=\"ngForm\" class=\"d-contents\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-form-group class=\"m-r-16\">\n <label class=\"d-block\">{{ 'Icon' | translate }}</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n type=\"button\"\n class=\"btn-default btn btn-gray\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <i c8yIcon=\"{{ dashboard.icon }}\"></i>\n <span class=\"caret\"></span>\n </button>\n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4 m-l-0\"\n style=\"max-height: 250px\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a\n class=\"interact\"\n title=\"{{ icon }}\"\n [ngClass]=\"{ active: dashboard.icon === icon }\"\n >\n <i class=\"icon\" [c8yIcon]=\"icon\"></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" id=\"menuLabel\">{{ 'Menu label' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"menuLabel\"\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboardName\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n maxlength=\"512\"\n required\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n aria-labelledby=\"description\"\n class=\"form-control\"\n rows=\"2\"\n name=\"description\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"!isReport\">\n <c8y-form-group>\n <label for=\"positionNav\">\n <span class=\"m-r-4\" id=\"positionNav\">\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"positionNav\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label title=\"{{ 'Show in navigator' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"isNavigatorNode\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }}&nbsp;\n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n ></button>\n </label>\n <input\n type=\"number\"\n for=\"position\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label title=\"{{ applyToDevicesOfTypeTitle }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"deviceType\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div class=\"alert alert-info m-b-24\" *ngIf=\"isDeviceType\">\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label title=\"{{ 'Translate if possible' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ 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: "directive", type: i3.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i6.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i8.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i8.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i8.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "component", type: i11.DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: ["globalRolesIds"], outputs: ["globalRolesIdsChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
140
+ DashboardDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", viewQueries: [{ propertyName: "dashboardDetailForm", first: true, predicate: ["dashboardDetailForm"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <form #dashboardDetailForm=\"ngForm\" class=\"d-contents\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-form-group class=\"m-r-16\">\n <label class=\"d-block\">{{ 'Icon' | translate }}</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n type=\"button\"\n class=\"btn-default btn btn-gray\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <i c8yIcon=\"{{ dashboard.icon }}\"></i>\n <span class=\"caret\"></span>\n </button>\n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4 m-l-0\"\n style=\"max-height: 250px\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a\n class=\"interact\"\n title=\"{{ icon }}\"\n [ngClass]=\"{ active: dashboard.icon === icon }\"\n >\n <i class=\"icon\" [c8yIcon]=\"icon\"></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" id=\"menuLabel\">{{ 'Menu label' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"menuLabel\"\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboardName\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n maxlength=\"512\"\n required\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n aria-labelledby=\"description\"\n class=\"form-control\"\n rows=\"2\"\n name=\"description\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"!isReport\">\n <c8y-form-group>\n <label for=\"positionNav\">\n <span class=\"m-r-4\" id=\"positionNav\">\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"positionNav\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label title=\"{{ 'Show in navigator' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"isNavigatorNode\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }}&nbsp;\n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n ></button>\n </label>\n <input\n type=\"number\"\n for=\"position\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label title=\"{{ applyToDevicesOfTypeTitle }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"deviceType\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div class=\"alert alert-info m-b-24\" *ngIf=\"isDeviceType\">\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false && !hideAvailability\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label title=\"{{ 'Translate if possible' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ 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: "directive", type: i3.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i6.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i6.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i8.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i8.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i8.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "component", type: i11.DashboardAvailabilityComponent, selector: "c8y-dashboard-availability", inputs: ["globalRolesIds"], outputs: ["globalRolesIdsChange"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
141
141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardDetailComponent, decorators: [{
142
142
  type: Component,
143
- args: [{ selector: 'c8y-dashboard-detail', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <form #dashboardDetailForm=\"ngForm\" class=\"d-contents\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-form-group class=\"m-r-16\">\n <label class=\"d-block\">{{ 'Icon' | translate }}</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n type=\"button\"\n class=\"btn-default btn btn-gray\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <i c8yIcon=\"{{ dashboard.icon }}\"></i>\n <span class=\"caret\"></span>\n </button>\n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4 m-l-0\"\n style=\"max-height: 250px\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a\n class=\"interact\"\n title=\"{{ icon }}\"\n [ngClass]=\"{ active: dashboard.icon === icon }\"\n >\n <i class=\"icon\" [c8yIcon]=\"icon\"></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" id=\"menuLabel\">{{ 'Menu label' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"menuLabel\"\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboardName\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n maxlength=\"512\"\n required\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n aria-labelledby=\"description\"\n class=\"form-control\"\n rows=\"2\"\n name=\"description\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"!isReport\">\n <c8y-form-group>\n <label for=\"positionNav\">\n <span class=\"m-r-4\" id=\"positionNav\">\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"positionNav\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label title=\"{{ 'Show in navigator' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"isNavigatorNode\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }}&nbsp;\n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n ></button>\n </label>\n <input\n type=\"number\"\n for=\"position\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label title=\"{{ applyToDevicesOfTypeTitle }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"deviceType\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div class=\"alert alert-info m-b-24\" *ngIf=\"isDeviceType\">\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label title=\"{{ 'Translate if possible' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
143
+ args: [{ selector: 'c8y-dashboard-detail', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\">{{ title | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <form #dashboardDetailForm=\"ngForm\" class=\"d-contents\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"!isNamedDashboard || isReport\">\n <div class=\"legend form-block\">\n <span>{{ 'General' | translate }}</span>\n </div>\n <div class=\"d-flex\">\n <c8y-form-group class=\"m-r-16\">\n <label class=\"d-block\">{{ 'Icon' | translate }}</label>\n <div dropdown class=\"dropdown\">\n <button\n title=\"{{ 'Icon' | translate }}\"\n type=\"button\"\n class=\"btn-default btn btn-gray\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <i c8yIcon=\"{{ dashboard.icon }}\"></i>\n <span class=\"caret\"></span>\n </button>\n <ul\n *dropdownMenu\n class=\"dropdown-menu modal-inner-scroll dropdown-menu-grid-4 m-l-0\"\n style=\"max-height: 250px\"\n >\n <ng-container *ngFor=\"let icon of filteredIcons\">\n <li (click)=\"selectIcon(icon)\">\n <a\n class=\"interact\"\n title=\"{{ icon }}\"\n [ngClass]=\"{ active: dashboard.icon === icon }\"\n >\n <i class=\"icon\" [c8yIcon]=\"icon\"></i>\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"flex-grow\">\n <label>\n <span class=\"m-r-4\" id=\"menuLabel\">{{ 'Menu label' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Menu label to display in submenu when dashboard is attached' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"menuLabel\"\n type=\"text\"\n class=\"form-control\"\n name=\"name\"\n [(ngModel)]=\"dashboardName\"\n placeholder=\"{{ namePlaceholder | translate }}\"\n maxlength=\"512\"\n required\n />\n </c8y-form-group>\n </div>\n <c8y-form-group *ngIf=\"isReport\">\n <label id=\"description\">{{ 'Description ' | translate }}</label>\n <textarea\n aria-labelledby=\"description\"\n class=\"form-control\"\n rows=\"2\"\n name=\"description\"\n [(ngModel)]=\"dashboard.description\"\n ></textarea>\n </c8y-form-group>\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"!isReport\">\n <c8y-form-group>\n <label for=\"positionNav\">\n <span class=\"m-r-4\" id=\"positionNav\">\n {{ 'Position in navigation' | translate }}\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Position in navigation menu (10000 first, -10000 last)' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"positionNav\"\n type=\"number\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"10000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <label translate>Navigator menu item</label>\n <c8y-form-group>\n <label title=\"{{ 'Show in navigator' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"isNavigatorNode\"\n [(ngModel)]=\"!!dashboard.c8y_IsNavigatorNode\"\n />\n <span></span>\n <span>{{ 'Show in navigator' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\" *ngIf=\"isReport\">\n <c8y-form-group>\n <label for=\"position\">\n <span class=\"m-r-4\">{{ 'Position in navigator' | translate }}</span>\n <ng-template #positionInNavPop>\n <span>\n {{\n 'Position in navigator (10001 first, -10000 last).' | translate\n }}&nbsp;\n {{ 'Existing nodes:' | translate }}\n </span>\n <ul class=\"list-unstyled m-t-16\">\n <li *ngFor=\"let node of navigatorNodes$ | async\">\n <i [c8yIcon]=\"node.icon\"></i>\n <span class=\"word-break m-l-4 m-r-16\">\n {{\n node.label.length > 15\n ? (node.label | slice: 0:15) + '...'\n : node.label\n }}\n </span>\n <span class=\"pull-right\">{{ node.priority }}</span>\n </li>\n </ul>\n </ng-template>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"positionInNavPop\"\n triggers=\"focus\"\n placement=\"right\"\n container=\"body\"\n ></button>\n </label>\n <input\n type=\"number\"\n for=\"position\"\n class=\"form-control\"\n name=\"priority\"\n [(ngModel)]=\"dashboard.priority\"\n min=\"-10000\"\n max=\"20000\"\n placeholder=\"{{ 'e.g.' | translate }} 500\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div *ngIf=\"!currentDashboard && deviceType\">\n <div class=\"form-group\">\n <label title=\"{{ applyToDevicesOfTypeTitle }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"deviceType\"\n [(ngModel)]=\"dashboard.deviceType\"\n [disabled]=\"!applyToDevicesOfTypePermitted\"\n />\n <span></span>\n <span\n class=\"m-r-4\"\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n translate\n >\n Apply dashboard to all devices of type\n <i>{{ type }}</i>\n </span>\n </label>\n </div>\n\n <div class=\"alert alert-info m-b-24\" *ngIf=\"isDeviceType\">\n <i c8y-icon=\"info\"></i>\n <span\n translate\n [translateParams]=\"{ type: dashboard.deviceTypeValue }\"\n ngNonBindable\n >\n This dashboard is shared between all devices of the type\n <i>{{ type }}</i>\n .\n </span>\n </div>\n </div>\n </div>\n <c8y-dashboard-availability\n *ngIf=\"!!isReport === false && !hideAvailability\"\n [(globalRolesIds)]=\"globalRolesIds\"\n (globalRolesIdsChange)=\"dashboardDetailForm?.form?.markAsDirty()\"\n ></c8y-dashboard-availability>\n <c8y-appearance-settings\n [(themeClass)]=\"styling.themeClass\"\n [(headerClass)]=\"styling.headerClass\"\n ></c8y-appearance-settings>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label for=\"margin\">{{ 'Widget margin' | translate }}</label>\n <div class=\"input-group\">\n <input\n id=\"margin\"\n name=\"margin\"\n type=\"number\"\n class=\"form-control\"\n [(ngModel)]=\"dashboard.widgetMargin\"\n min=\"0\"\n max=\"50\"\n placeholder=\"{{ DEFAULT_DASHBOARD_MARGIN }}\"\n />\n <span class=\"input-group-addon\">px</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group class=\"p-b-24 m-b-0\">\n <label translate>Widget titles</label>\n <label title=\"{{ 'Translate if possible' | translate }}\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n name=\"translateWidgetTitle\"\n [(ngModel)]=\"dashboard.translateWidgetTitle\"\n />\n <span></span>\n <span>{{ 'Translate if possible' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-6\">\n <c8y-widget-preview\n [tab]=\"!isNamedDashboard ? dashboard : undefined\"\n [previewClasses]=\"getDashboardPreviewStyle()\"\n ></c8y-widget-preview>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"dashboardDetailForm.form.invalid || dashboardDetailForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
144
144
  }], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: undefined, decorators: [{
145
145
  type: Inject,
146
146
  args: [ICON_LIST]
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
148
148
  type: ViewChild,
149
149
  args: ['dashboardDetailForm', { static: true }]
150
150
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixxQkFBcUIsRUFFdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1qSCxNQUFNLE9BQU8sd0JBQXdCO0lBeUNuQyxZQUNVLEtBQWlCLEVBQ04sUUFBa0IsRUFDN0IsdUJBQWdELEVBQ2hELGdCQUFrQyxFQUNsQyxrQkFBK0IsRUFDL0IsZ0JBQWtDO1FBTGxDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFFakIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHVCQUFrQixH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SSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1NBQ2hDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQy9ELHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUNoRSxxQkFBcUIsRUFDckIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEEzSlUsd0JBQXdCLDRDQTJDekIsU0FBUzt5R0EzQ1Isd0JBQXdCLHNNQzFCckMsbWtZQW9TQTsyRkQxUWEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjs7MEJBOEM3QixNQUFNOzJCQUFDLFNBQVM7MEtBMUNpQyxtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgSUNPTl9MSVNULFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JTZXJ2aWNlLFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbnRleHREYXNoYm9hcmQsXG4gIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gIERhc2hib2FyZEdsb2JhbFJvbGVzXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZIH0gZnJvbSAnLi9yZXBvcnQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQtbmF2aWdhdGlvbi5mYWN0b3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhc2hib2FyZC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnZGFzaGJvYXJkRGV0YWlsRm9ybScsIHsgc3RhdGljOiB0cnVlIH0pIGRhc2hib2FyZERldGFpbEZvcm06IE5nRm9ybTtcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBjdXJyZW50RGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBkYXNoYm9hcmROYW1lOiBzdHJpbmc7XG4gIGlzUmVwb3J0OiBib29sZWFuO1xuICBkZXZpY2VUeXBlOiBzdHJpbmc7XG4gIGlzTmFtZWREYXNoYm9hcmQ6IGJvb2xlYW47XG4gIGlzRGV2aWNlVHlwZTogYm9vbGVhbjtcbiAgaWNvbnM6IHN0cmluZ1tdO1xuICBmaWx0ZXJlZEljb25zOiBzdHJpbmdbXTtcbiAgc3R5bGluZyA9IHtcbiAgICB0aGVtZUNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWxpZ2h0JyxcbiAgICBoZWFkZXJDbGFzczogJ3BhbmVsLXRpdGxlLXJlZ3VsYXInXG4gIH07XG4gIHBvc3NpYmxlU3R5bGluZyA9IHsgREFTSEJPQVJEX1RIRU1FX0NMQVNTRVMsIFdJREdFVF9IRUFERVJfQ0xBU1NFUyB9O1xuICB0aXRsZTogc3RyaW5nO1xuICBuYW1lUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbmF2aWdhdG9yTm9kZXMkOiBPYnNlcnZhYmxlPE5hdmlnYXRvck5vZGVbXT47XG4gIHJlc3VsdDogUHJvbWlzZTxDb250ZXh0RGFzaGJvYXJkPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLl9zYXZlID0gcmVzb2x2ZTtcbiAgICB0aGlzLl9jYW5jZWwgPSByZWplY3Q7XG4gIH0pO1xuICBnbG9iYWxSb2xlc0lkczogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG5cbiAgYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWQ6IGJvb2xlYW47XG5cbiAgZ2V0IGFwcGx5VG9EZXZpY2VzT2ZUeXBlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5hcHBseVRvRGV2aWNlc09mVHlwZVBlcm1pdHRlZFxuICAgICAgPyBnZXR0ZXh0KCdBcHBseSBkYXNoYm9hcmQgdG8gYWxsIGRldmljZXMgb2YgdHlwZSB7eyB0eXBlIH19JylcbiAgICAgIDogZ2V0dGV4dCgnQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGUge3sgdHlwZSB9fSAocGVybWlzc2lvbiByZXF1aXJlZCknKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGV4dCwgeyB0eXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfSk7XG4gIH1cblxuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9NQVJHSU4gPSAxMjtcbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfSUNPTiA9ICd0aCc7XG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX1BSSU9SSVRZID0gMTAwMDA7XG5cbiAgcHJpdmF0ZSBfc2F2ZTtcbiAgcHJpdmF0ZSBfY2FuY2VsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWw6IEJzTW9kYWxSZWYsXG4gICAgQEluamVjdChJQ09OX0xJU1QpIGljb25MaXN0OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uc1NlcnZpY2U6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25zID0gaWNvbkxpc3Q7XG4gICAgdGhpcy5maWx0ZXJlZEljb25zID0gaWNvbkxpc3Q7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdERhc2hib2FyZENmZzogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdSZXBvcnQnKSA6IGdldHRleHQoJ0Rhc2hib2FyZCcpKSxcbiAgICAgIHByaW9yaXR5OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgID8gUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZXG4gICAgICAgIDogdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSxcbiAgICAgIGljb246IHRoaXMuREVGQVVMVF9EQVNIQk9BUkRfSUNPTixcbiAgICAgIGRldmljZVR5cGVWYWx1ZTogdGhpcy5kZXZpY2VUeXBlXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5jdXJyZW50RGFzaGJvYXJkID0gY2xvbmUodGhpcy5kYXNoYm9hcmQpO1xuICAgICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5jdXJyZW50RGFzaGJvYXJkLm5hbWU7XG4gICAgICB0aGlzLnNldERhc2hib2FyZFN0eWxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkID0gZGVmYXVsdERhc2hib2FyZENmZztcbiAgICAgIHRoaXMuZGFzaGJvYXJkTmFtZSA9IHRoaXMuZGFzaGJvYXJkLm5hbWU7XG4gICAgICB0aGlzLmRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgICB0aGlzLnNldFRpdGxlKCk7XG4gICAgdGhpcy5zZXR1cEFwcGx5VG9EZXZpY2VzT2ZUeXBlQ2hlY2tib3goKTtcbiAgICB0aGlzLm5hdmlnYXRvck5vZGVzJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQ7XG4gICAgdGhpcy5uYW1lUGxhY2Vob2xkZXIgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnZS5nLiBNeSByZXBvcnQnKSA6IGdldHRleHQoJ2UuZy4gTXkgZGFzaGJvYXJkJyk7XG4gICAgdGhpcy5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzO1xuICB9XG5cbiAgc2V0VGl0bGUoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnREYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnQWRkIHJlcG9ydCcpIDogZ2V0dGV4dCgnQWRkIGRhc2hib2FyZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5pc1JlcG9ydCA/IGdldHRleHQoJ0VkaXQgcmVwb3J0JykgOiBnZXR0ZXh0KCdFZGl0IGRhc2hib2FyZCcpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwQXBwbHlUb0RldmljZXNPZlR5cGVDaGVja2JveCgpIHtcbiAgICBjb25zdCByb2xlc1RvQ2hlY2sgPSBbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgIF07XG4gICAgdGhpcy5hcHBseVRvRGV2aWNlc09mVHlwZVBlcm1pdHRlZCA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmhhc0FueVJvbGUocm9sZXNUb0NoZWNrKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHMgPSB0aGlzLmdsb2JhbFJvbGVzSWRzO1xuICAgIHRoaXMuZGFzaGJvYXJkLm5hbWUgPSB0aGlzLmRhc2hib2FyZE5hbWU7XG4gICAgdGhpcy5kYXNoYm9hcmQuY2xhc3NlcyA9IHsgW3RoaXMuc3R5bGluZy50aGVtZUNsYXNzXTogdHJ1ZSB9O1xuICAgIHRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXMgPSB7IFt0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3NdOiB0cnVlIH07XG4gICAgdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZSA9IHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcbiAgICAgID8ge31cbiAgICAgIDogdGhpcy5jdXJyZW50RGFzaGJvYXJkXG4gICAgICA/IG51bGxcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX3NhdmUodGhpcy5kYXNoYm9hcmQpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXSA9IHRydWU7XG4gICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcudGhlbWVDbGFzc10gPSB0cnVlO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuaWNvbiA9IGljb247XG4gICAgdGhpcy5kYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0ZXJtKSB7XG4gICAgICBjb25zdCBzZWFyY2ggPSBuZXcgUmVnRXhwKHRlcm0sICdpJyk7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmljb25zLmZpbHRlcih2YWwgPT4gc2VhcmNoLnRlc3QodmFsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuaWNvbnM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXNoYm9hcmRTdHlsZSgpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3NlcyxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuXG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIHRoaXMuc3R5bGluZy50aGVtZUNsYXNzXG4gICAgICApO1xuICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGgzIGlkPVwibW9kYWwtdGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIiBpZD1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC1sLTI0IHAtci0yNFwiPlxuICAgICAgPGZvcm0gI2Rhc2hib2FyZERldGFpbEZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cImQtY29udGVudHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc05hbWVkRGFzaGJvYXJkIHx8IGlzUmVwb3J0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdHZW5lcmFsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLXItMTZcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImQtYmxvY2tcIj57eyAnSWNvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdiBkcm9wZG93biBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdJY29uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tZGVmYXVsdCBidG4gYnRuLWdyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInt7IGRhc2hib2FyZC5pY29uIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICAgICAgICAqZHJvcGRvd25NZW51XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IG1vZGFsLWlubmVyLXNjcm9sbCBkcm9wZG93bi1tZW51LWdyaWQtNCBtLWwtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyNTBweFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIGZpbHRlcmVkSWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0SWNvbihpY29uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW50ZXJhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgaWNvbiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGRhc2hib2FyZC5pY29uID09PSBpY29uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uXCIgW2M4eUljb25dPVwiaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1yLTRcIiBpZD1cIm1lbnVMYWJlbFwiPnt7ICdNZW51IGxhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnTWVudSBsYWJlbCB0byBkaXNwbGF5IGluIHN1Ym1lbnUgd2hlbiBkYXNoYm9hcmQgaXMgYXR0YWNoZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbmFtZVBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTEyXCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCAqbmdJZj1cImlzUmVwb3J0XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGlkPVwiZGVzY3JpcHRpb25cIj57eyAnRGVzY3JpcHRpb24gJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiMlwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCIgKm5nSWY9XCIhaXNSZXBvcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiIGlkPVwicG9zaXRpb25OYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpb24gaW4gbmF2aWdhdGlvbiBtZW51ICgxMDAwMCBmaXJzdCwgLTEwMDAwIGxhc3QpJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCIgKm5nSWY9XCJpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5OYXZpZ2F0b3IgbWVudSBpdGVtPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHRpdGxlPVwie3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlzTmF2aWdhdG9yTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiICpuZ0lmPVwiaXNSZXBvcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiPnt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcG9zaXRpb25Jbk5hdlBvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3IgKDEwMDAxIGZpcnN0LCAtMTAwMDAgbGFzdCkuJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fSZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRXhpc3Rpbmcgbm9kZXM6JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBub2RlIG9mIG5hdmlnYXRvck5vZGVzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwibm9kZS5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid29yZC1icmVhayBtLWwtNCBtLXItMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubGFiZWwubGVuZ3RoID4gMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLmxhYmVsIHwgc2xpY2U6IDA6MTUpICsgJy4uLidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5vZGUubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodFwiPnt7IG5vZGUucHJpb3JpdHkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3NpdGlvbkluTmF2UG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJwb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQucHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIi0xMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF4PVwiMjAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDUwMFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnREYXNoYm9hcmQgJiYgZGV2aWNlVHlwZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyBhcHBseVRvRGV2aWNlc09mVHlwZVRpdGxlIH19XCIgY2xhc3M9XCJjOHktY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQuZGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhcHBseVRvRGV2aWNlc09mVHlwZVBlcm1pdHRlZFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgdHlwZTogZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICBBcHBseSBkYXNoYm9hcmQgdG8gYWxsIGRldmljZXMgb2YgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtLWItMjRcIiAqbmdJZj1cImlzRGV2aWNlVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgYzh5LWljb249XCJpbmZvXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyB0eXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFRoaXMgZGFzaGJvYXJkIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgICAgICAgICAqbmdJZj1cIiEhaXNSZXBvcnQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgICAgICAgICAoZ2xvYmFsUm9sZXNJZHNDaGFuZ2UpPVwiZGFzaGJvYXJkRGV0YWlsRm9ybT8uZm9ybT8ubWFya0FzRGlydHkoKVwiXG4gICAgICAgICAgICA+PC9jOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eT5cbiAgICAgICAgICAgIDxjOHktYXBwZWFyYW5jZS1zZXR0aW5nc1xuICAgICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcudGhlbWVDbGFzc1wiXG4gICAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtYi0yNCBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hcmdpblwiPnt7ICdXaWRnZXQgbWFyZ2luJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC53aWRnZXRNYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiB9fVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5weDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+V2lkZ2V0IHRpdGxlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnVHJhbnNsYXRlIGlmIHBvc3NpYmxlJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC50cmFuc2xhdGVXaWRnZXRUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ1RyYW5zbGF0ZSBpZiBwb3NzaWJsZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxjOHktd2lkZ2V0LXByZXZpZXdcbiAgICAgICAgICAgICAgW3RhYl09XCIhaXNOYW1lZERhc2hib2FyZCA/IGRhc2hib2FyZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIFtwcmV2aWV3Q2xhc3Nlc109XCJnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKVwiXG4gICAgICAgICAgICA+PC9jOHktd2lkZ2V0LXByZXZpZXc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLmludmFsaWQgfHwgZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLnByaXN0aW5lXCJcbiAgICA+XG4gICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixxQkFBcUIsRUFFdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU1qSCxNQUFNLE9BQU8sd0JBQXdCO0lBMENuQyxZQUNVLEtBQWlCLEVBQ04sUUFBa0IsRUFDN0IsdUJBQWdELEVBQ2hELGdCQUFrQyxFQUNsQyxrQkFBK0IsRUFDL0IsZ0JBQWtDO1FBTGxDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFFakIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHVCQUFrQixH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SSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1NBQ2hDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQy9ELHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ3hCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUNoRSxxQkFBcUIsRUFDckIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEE1SlUsd0JBQXdCLDRDQTRDekIsU0FBUzt5R0E1Q1Isd0JBQXdCLHNNQzFCckMsd2xZQW9TQTsyRkQxUWEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjs7MEJBK0M3QixNQUFNOzJCQUFDLFNBQVM7MEtBM0NpQyxtQkFBbUI7c0JBQXRFLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgZ2V0dGV4dCxcbiAgSUNPTl9MSVNULFxuICBOYXZpZ2F0b3JOb2RlLFxuICBOYXZpZ2F0b3JTZXJ2aWNlLFxuICBQZXJtaXNzaW9uc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbnRleHREYXNoYm9hcmQsXG4gIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gIERhc2hib2FyZEdsb2JhbFJvbGVzXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZIH0gZnJvbSAnLi9yZXBvcnQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQtbmF2aWdhdGlvbi5mYWN0b3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhc2hib2FyZC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnZGFzaGJvYXJkRGV0YWlsRm9ybScsIHsgc3RhdGljOiB0cnVlIH0pIGRhc2hib2FyZERldGFpbEZvcm06IE5nRm9ybTtcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBjdXJyZW50RGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBkYXNoYm9hcmROYW1lOiBzdHJpbmc7XG4gIGlzUmVwb3J0OiBib29sZWFuO1xuICBkZXZpY2VUeXBlOiBzdHJpbmc7XG4gIGlzTmFtZWREYXNoYm9hcmQ6IGJvb2xlYW47XG4gIGlzRGV2aWNlVHlwZTogYm9vbGVhbjtcbiAgaWNvbnM6IHN0cmluZ1tdO1xuICBmaWx0ZXJlZEljb25zOiBzdHJpbmdbXTtcbiAgc3R5bGluZyA9IHtcbiAgICB0aGVtZUNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWxpZ2h0JyxcbiAgICBoZWFkZXJDbGFzczogJ3BhbmVsLXRpdGxlLXJlZ3VsYXInXG4gIH07XG4gIHBvc3NpYmxlU3R5bGluZyA9IHsgREFTSEJPQVJEX1RIRU1FX0NMQVNTRVMsIFdJREdFVF9IRUFERVJfQ0xBU1NFUyB9O1xuICB0aXRsZTogc3RyaW5nO1xuICBuYW1lUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgbmF2aWdhdG9yTm9kZXMkOiBPYnNlcnZhYmxlPE5hdmlnYXRvck5vZGVbXT47XG4gIHJlc3VsdDogUHJvbWlzZTxDb250ZXh0RGFzaGJvYXJkPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLl9zYXZlID0gcmVzb2x2ZTtcbiAgICB0aGlzLl9jYW5jZWwgPSByZWplY3Q7XG4gIH0pO1xuICBnbG9iYWxSb2xlc0lkczogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG4gIGhpZGVBdmFpbGFiaWxpdHk6IGJvb2xlYW47XG5cbiAgYXBwbHlUb0RldmljZXNPZlR5cGVQZXJtaXR0ZWQ6IGJvb2xlYW47XG5cbiAgZ2V0IGFwcGx5VG9EZXZpY2VzT2ZUeXBlVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5hcHBseVRvRGV2aWNlc09mVHlwZVBlcm1pdHRlZFxuICAgICAgPyBnZXR0ZXh0KCdBcHBseSBkYXNoYm9hcmQgdG8gYWxsIGRldmljZXMgb2YgdHlwZSB7eyB0eXBlIH19JylcbiAgICAgIDogZ2V0dGV4dCgnQXBwbHkgZGFzaGJvYXJkIHRvIGFsbCBkZXZpY2VzIG9mIHR5cGUge3sgdHlwZSB9fSAocGVybWlzc2lvbiByZXF1aXJlZCknKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGV4dCwgeyB0eXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfSk7XG4gIH1cblxuICByZWFkb25seSBERUZBVUxUX0RBU0hCT0FSRF9NQVJHSU4gPSAxMjtcbiAgcmVhZG9ubHkgREVGQVVMVF9EQVNIQk9BUkRfSUNPTiA9ICd0aCc7XG4gIHJlYWRvbmx5IERFRkFVTFRfREFTSEJPQVJEX1BSSU9SSVRZID0gMTAwMDA7XG5cbiAgcHJpdmF0ZSBfc2F2ZTtcbiAgcHJpdmF0ZSBfY2FuY2VsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWw6IEJzTW9kYWxSZWYsXG4gICAgQEluamVjdChJQ09OX0xJU1QpIGljb25MaXN0OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uc1NlcnZpY2U6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25zID0gaWNvbkxpc3Q7XG4gICAgdGhpcy5maWx0ZXJlZEljb25zID0gaWNvbkxpc3Q7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdERhc2hib2FyZENmZzogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuaXNSZXBvcnQgPyBnZXR0ZXh0KCdSZXBvcnQnKSA6IGdldHRleHQoJ0Rhc2hib2FyZCcpKSxcbiAgICAgIHByaW9yaXR5OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgID8gUkVQT1JUX0RFRkFVTFRfTkFWSUdBVElPTl9OT0RFX1BSSU9SSVRZXG4gICAgICAgIDogdGhpcy5ERUZBVUxUX0RBU0hCT0FSRF9QUklPUklUWSxcbiAgICAgIGljb246IHRoaXMuREVGQVVMVF9EQVNIQk9BUkRfSUNPTixcbiAgICAgIGRldmljZVR5cGVWYWx1ZTogdGhpcy5kZXZpY2VUeXBlXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5jdXJyZW50RGFzaGJvYXJkID0gY2xvbmUodGhpcy5kYXNoYm9hcmQpO1xuICAgICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5jdXJyZW50RGFzaGJvYXJkLm5hbWU7XG4gICAgICB0aGlzLnNldERhc2hib2FyZFN0eWxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkID0gZGVmYXVsdERhc2hib2FyZENmZztcbiAgICAgIHRoaXMuZGFzaGJvYXJkTmFtZSA9IHRoaXMuZGFzaGJvYXJkLm5hbWU7XG4gICAgICB0aGlzLmRhc2hib2FyZERldGFpbEZvcm0uZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cbiAgICB0aGlzLnNldFRpdGxlKCk7XG4gICAgdGhpcy5zZXR1cEFwcGx5VG9EZXZpY2VzT2ZUeXBlQ2hlY2tib3goKTtcbiAgICB0aGlzLm5hdmlnYXRvck5vZGVzJCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5pdGVtcyQ7XG4gICAgdGhpcy5uYW1lUGxhY2Vob2xkZXIgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnZS5nLiBNeSByZXBvcnQnKSA6IGdldHRleHQoJ2UuZy4gTXkgZGFzaGJvYXJkJyk7XG4gICAgdGhpcy5nbG9iYWxSb2xlc0lkcyA9IHRoaXMuZGFzaGJvYXJkLmdsb2JhbFJvbGVzSWRzO1xuICB9XG5cbiAgc2V0VGl0bGUoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnREYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmlzUmVwb3J0ID8gZ2V0dGV4dCgnQWRkIHJlcG9ydCcpIDogZ2V0dGV4dCgnQWRkIGRhc2hib2FyZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5pc1JlcG9ydCA/IGdldHRleHQoJ0VkaXQgcmVwb3J0JykgOiBnZXR0ZXh0KCdFZGl0IGRhc2hib2FyZCcpO1xuICAgIH1cbiAgfVxuXG4gIHNldHVwQXBwbHlUb0RldmljZXNPZlR5cGVDaGVja2JveCgpIHtcbiAgICBjb25zdCByb2xlc1RvQ2hlY2sgPSBbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgIF07XG4gICAgdGhpcy5hcHBseVRvRGV2aWNlc09mVHlwZVBlcm1pdHRlZCA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmhhc0FueVJvbGUocm9sZXNUb0NoZWNrKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuZ2xvYmFsUm9sZXNJZHMgPSB0aGlzLmdsb2JhbFJvbGVzSWRzO1xuICAgIHRoaXMuZGFzaGJvYXJkLm5hbWUgPSB0aGlzLmRhc2hib2FyZE5hbWU7XG4gICAgdGhpcy5kYXNoYm9hcmQuY2xhc3NlcyA9IHsgW3RoaXMuc3R5bGluZy50aGVtZUNsYXNzXTogdHJ1ZSB9O1xuICAgIHRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXMgPSB7IFt0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3NdOiB0cnVlIH07XG4gICAgdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZSA9IHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcbiAgICAgID8ge31cbiAgICAgIDogdGhpcy5jdXJyZW50RGFzaGJvYXJkXG4gICAgICA/IG51bGxcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuX3NhdmUodGhpcy5kYXNoYm9hcmQpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5fY2FuY2VsKCk7XG4gICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXSA9IHRydWU7XG4gICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcudGhlbWVDbGFzc10gPSB0cnVlO1xuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgc2VsZWN0SWNvbihpY29uKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuaWNvbiA9IGljb247XG4gICAgdGhpcy5kYXNoYm9hcmREZXRhaWxGb3JtLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0ZXJtKSB7XG4gICAgICBjb25zdCBzZWFyY2ggPSBuZXcgUmVnRXhwKHRlcm0sICdpJyk7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmljb25zLmZpbHRlcih2YWwgPT4gc2VhcmNoLnRlc3QodmFsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJY29ucyA9IHRoaXMuaWNvbnM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXNoYm9hcmRTdHlsZSgpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5kYXNoYm9hcmQuY2xhc3NlcyxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuXG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgdGhpcy5zdHlsaW5nLnRoZW1lQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIERBU0hCT0FSRF9USEVNRV9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIHRoaXMuc3R5bGluZy50aGVtZUNsYXNzXG4gICAgICApO1xuICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgdGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlld3BvcnQtbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgPGgzIGlkPVwibW9kYWwtdGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIiBpZD1cIm1vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicC1sLTI0IHAtci0yNFwiPlxuICAgICAgPGZvcm0gI2Rhc2hib2FyZERldGFpbEZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cImQtY29udGVudHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc05hbWVkRGFzaGJvYXJkIHx8IGlzUmVwb3J0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdHZW5lcmFsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLXItMTZcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImQtYmxvY2tcIj57eyAnSWNvbicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdiBkcm9wZG93biBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdJY29uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tZGVmYXVsdCBidG4gYnRuLWdyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInt7IGRhc2hib2FyZC5pY29uIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICAgICAgICAqZHJvcGRvd25NZW51XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IG1vZGFsLWlubmVyLXNjcm9sbCBkcm9wZG93bi1tZW51LWdyaWQtNCBtLWwtMFwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyNTBweFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIGZpbHRlcmVkSWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VsZWN0SWNvbihpY29uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW50ZXJhY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgaWNvbiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGRhc2hib2FyZC5pY29uID09PSBpY29uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uXCIgW2M4eUljb25dPVwiaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwiZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1yLTRcIiBpZD1cIm1lbnVMYWJlbFwiPnt7ICdNZW51IGxhYmVsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnTWVudSBsYWJlbCB0byBkaXNwbGF5IGluIHN1Ym1lbnUgd2hlbiBkYXNoYm9hcmQgaXMgYXR0YWNoZWQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgbmFtZVBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTEyXCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCAqbmdJZj1cImlzUmVwb3J0XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGlkPVwiZGVzY3JpcHRpb25cIj57eyAnRGVzY3JpcHRpb24gJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiMlwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCIgKm5nSWY9XCIhaXNSZXBvcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uTmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiIGlkPVwicG9zaXRpb25OYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpb24gaW4gbmF2aWdhdGlvbiBtZW51ICgxMDAwMCBmaXJzdCwgLTEwMDAwIGxhc3QpJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwicG9zaXRpb25OYXZcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkLnByaW9yaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICBtaW49XCItMTAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjEwMDAwXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSA1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCIgKm5nSWY9XCJpc1JlcG9ydFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHRyYW5zbGF0ZT5OYXZpZ2F0b3IgbWVudSBpdGVtPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHRpdGxlPVwie3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlzTmF2aWdhdG9yTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIiEhZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiICpuZ0lmPVwiaXNSZXBvcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiPnt7ICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcG9zaXRpb25Jbk5hdlBvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQb3NpdGlvbiBpbiBuYXZpZ2F0b3IgKDEwMDAxIGZpcnN0LCAtMTAwMDAgbGFzdCkuJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fSZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRXhpc3Rpbmcgbm9kZXM6JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBtLXQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBub2RlIG9mIG5hdmlnYXRvck5vZGVzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwibm9kZS5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid29yZC1icmVhayBtLWwtNCBtLXItMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUubGFiZWwubGVuZ3RoID4gMTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IChub2RlLmxhYmVsIHwgc2xpY2U6IDA6MTUpICsgJy4uLidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5vZGUubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodFwiPnt7IG5vZGUucHJpb3JpdHkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3NpdGlvbkluTmF2UG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJwb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcmlvcml0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQucHJpb3JpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIi0xMDAwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgbWF4PVwiMjAwMDBcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IDUwMFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnREYXNoYm9hcmQgJiYgZGV2aWNlVHlwZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyBhcHBseVRvRGV2aWNlc09mVHlwZVRpdGxlIH19XCIgY2xhc3M9XCJjOHktY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmQuZGV2aWNlVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhcHBseVRvRGV2aWNlc09mVHlwZVBlcm1pdHRlZFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgdHlwZTogZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICBBcHBseSBkYXNoYm9hcmQgdG8gYWxsIGRldmljZXMgb2YgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtLWItMjRcIiAqbmdJZj1cImlzRGV2aWNlVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgYzh5LWljb249XCJpbmZvXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyB0eXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFRoaXMgZGFzaGJvYXJkIGlzIHNoYXJlZCBiZXR3ZWVuIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIDxpPnt7IHR5cGUgfX08L2k+XG4gICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eVxuICAgICAgICAgICAgICAqbmdJZj1cIiEhaXNSZXBvcnQgPT09IGZhbHNlICYmICFoaWRlQXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICAgICAgWyhnbG9iYWxSb2xlc0lkcyldPVwiZ2xvYmFsUm9sZXNJZHNcIlxuICAgICAgICAgICAgICAoZ2xvYmFsUm9sZXNJZHNDaGFuZ2UpPVwiZGFzaGJvYXJkRGV0YWlsRm9ybT8uZm9ybT8ubWFya0FzRGlydHkoKVwiXG4gICAgICAgICAgICA+PC9jOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eT5cbiAgICAgICAgICAgIDxjOHktYXBwZWFyYW5jZS1zZXR0aW5nc1xuICAgICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcudGhlbWVDbGFzc1wiXG4gICAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtYi0yNCBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm1hcmdpblwiPnt7ICdXaWRnZXQgbWFyZ2luJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC53aWRnZXRNYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIG1heD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IERFRkFVTFRfREFTSEJPQVJEX01BUkdJTiB9fVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5weDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+V2lkZ2V0IHRpdGxlczwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnVHJhbnNsYXRlIGlmIHBvc3NpYmxlJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRyYW5zbGF0ZVdpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZC50cmFuc2xhdGVXaWRnZXRUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ1RyYW5zbGF0ZSBpZiBwb3NzaWJsZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxjOHktd2lkZ2V0LXByZXZpZXdcbiAgICAgICAgICAgICAgW3RhYl09XCIhaXNOYW1lZERhc2hib2FyZCA/IGRhc2hib2FyZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIFtwcmV2aWV3Q2xhc3Nlc109XCJnZXREYXNoYm9hcmRQcmV2aWV3U3R5bGUoKVwiXG4gICAgICAgICAgICA+PC9jOHktd2lkZ2V0LXByZXZpZXc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLmludmFsaWQgfHwgZGFzaGJvYXJkRGV0YWlsRm9ybS5mb3JtLnByaXN0aW5lXCJcbiAgICA+XG4gICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -38,9 +38,9 @@ export class DeviceManagementHomeDashboardComponent {
38
38
  }
39
39
  }
40
40
  DeviceManagementHomeDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceManagementHomeDashboardComponent, deps: [{ token: i1.WidgetService }], target: i0.ɵɵFactoryTarget.Component });
41
- DeviceManagementHomeDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceManagementHomeDashboardComponent, selector: "c8y-device-management-home-dashboard", ngImport: i0, template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n", dependencies: [{ kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "disabled", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
41
+ DeviceManagementHomeDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceManagementHomeDashboardComponent, selector: "c8y-device-management-home-dashboard", ngImport: i0, template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n", dependencies: [{ kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "disabled", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "hideAvailability"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceManagementHomeDashboardComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ selector: 'c8y-device-management-home-dashboard', template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n></c8y-context-dashboard>\n" }]
44
+ args: [{ selector: 'c8y-device-management-home-dashboard', template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n" }]
45
45
  }], ctorParameters: function () { return [{ type: i1.WidgetService }]; } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sc0NBQXNDO0lBc0JqRCxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCaEQsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGtCQUFhLEdBQUcsVUFBVSxDQUFDO1FBQzNCLG1CQUFjLEdBQUc7WUFDZjtnQkFDRSxJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztnQkFDN0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDL0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtTQUNVLENBQUM7SUFFcUMsQ0FBQztJQUVwRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxDQUFDLGFBQWE7aUJBQ3JCLFNBQVMsQ0FBQyxNQUFNLENBQUM7aUJBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUlBOUJVLHNDQUFzQzt1SEFBdEMsc0NBQXNDLDRFQ1JuRCwwTUFTQTsyRkREYSxzQ0FBc0M7a0JBSmxELFNBQVM7K0JBQ0Usc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIFdpZGdldCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4uL3dpZGdldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1tYW5hZ2VtZW50LWhvbWUtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS1tYW5hZ2VtZW50LWhvbWUtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VNYW5hZ2VtZW50SG9tZURhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHdpZGdldHMgPSBbXTtcbiAgZGFzaGJvYXJkTmFtZSA9ICdob21lLWRtMSc7XG4gIGRlZmF1bHRXaWRnZXRzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdkZXZpY2VtYW5hZ2VtZW50LndlbGNvbWUud2lkZ2V0JyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdRdWljayBsaW5rcycpLFxuICAgICAgX3g6IDAsXG4gICAgICBfeTogMCxcbiAgICAgIF9oZWlnaHQ6IDQsXG4gICAgICBfd2lkdGg6IDZcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdSZWNlbnQgQWxhcm1zJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdSZWNlbnQgYWxhcm1zJyksXG4gICAgICBfeDogNixcbiAgICAgIF95OiAwLFxuICAgICAgX2hlaWdodDogNCxcbiAgICAgIF93aWR0aDogNlxuICAgIH1cbiAgXSBhcyBXaWRnZXRbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZWZhdWx0V2lkZ2V0cy5tYXAoYXN5bmMgd2lkZ2V0ID0+IHtcbiAgICAgIGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZVxuICAgICAgICAubWFwTGVnYWN5KHdpZGdldClcbiAgICAgICAgLnRoZW4odHJhbnNmb3JtZWRXaWRnZXQgPT4gdGhpcy53aWRnZXRzLnB1c2godHJhbnNmb3JtZWRXaWRnZXQpKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ0hvbWUnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1jb250ZXh0LWRhc2hib2FyZFxuICBbbmFtZV09XCJkYXNoYm9hcmROYW1lXCJcbiAgW2RlZmF1bHRXaWRnZXRzXT1cImRlZmF1bHRXaWRnZXRzXCJcbiAgW2NhbkRlbGV0ZV09XCJmYWxzZVwiXG4+PC9jOHktY29udGV4dC1kYXNoYm9hcmQ+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQvZGV2aWNlLW1hbmFnZW1lbnQtaG9tZS1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sc0NBQXNDO0lBc0JqRCxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCaEQsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGtCQUFhLEdBQUcsVUFBVSxDQUFDO1FBQzNCLG1CQUFjLEdBQUc7WUFDZjtnQkFDRSxJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztnQkFDN0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtZQUNEO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDL0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLENBQUM7YUFDVjtTQUNVLENBQUM7SUFFcUMsQ0FBQztJQUVwRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxDQUFDLGFBQWE7aUJBQ3JCLFNBQVMsQ0FBQyxNQUFNLENBQUM7aUJBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUlBOUJVLHNDQUFzQzt1SEFBdEMsc0NBQXNDLDRFQ1JuRCx5T0FVQTsyRkRGYSxzQ0FBc0M7a0JBSmxELFNBQVM7K0JBQ0Usc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIFdpZGdldCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4uL3dpZGdldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1tYW5hZ2VtZW50LWhvbWUtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS1tYW5hZ2VtZW50LWhvbWUtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VNYW5hZ2VtZW50SG9tZURhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHdpZGdldHMgPSBbXTtcbiAgZGFzaGJvYXJkTmFtZSA9ICdob21lLWRtMSc7XG4gIGRlZmF1bHRXaWRnZXRzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdkZXZpY2VtYW5hZ2VtZW50LndlbGNvbWUud2lkZ2V0JyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdRdWljayBsaW5rcycpLFxuICAgICAgX3g6IDAsXG4gICAgICBfeTogMCxcbiAgICAgIF9oZWlnaHQ6IDQsXG4gICAgICBfd2lkdGg6IDZcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdSZWNlbnQgQWxhcm1zJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdSZWNlbnQgYWxhcm1zJyksXG4gICAgICBfeDogNixcbiAgICAgIF95OiAwLFxuICAgICAgX2hlaWdodDogNCxcbiAgICAgIF93aWR0aDogNlxuICAgIH1cbiAgXSBhcyBXaWRnZXRbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZWZhdWx0V2lkZ2V0cy5tYXAoYXN5bmMgd2lkZ2V0ID0+IHtcbiAgICAgIGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZVxuICAgICAgICAubWFwTGVnYWN5KHdpZGdldClcbiAgICAgICAgLnRoZW4odHJhbnNmb3JtZWRXaWRnZXQgPT4gdGhpcy53aWRnZXRzLnB1c2godHJhbnNmb3JtZWRXaWRnZXQpKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ0hvbWUnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1jb250ZXh0LWRhc2hib2FyZFxuICBbbmFtZV09XCJkYXNoYm9hcmROYW1lXCJcbiAgW2RlZmF1bHRXaWRnZXRzXT1cImRlZmF1bHRXaWRnZXRzXCJcbiAgW2NhbkRlbGV0ZV09XCJmYWxzZVwiXG4gIFtoaWRlQXZhaWxhYmlsaXR5XT1cInRydWVcIlxuPjwvYzh5LWNvbnRleHQtZGFzaGJvYXJkPlxuIl19
@@ -6,8 +6,9 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "../common/icon.directive";
7
7
  import * as i2 from "../common/outlet.directive";
8
8
  import * as i3 from "@angular/common";
9
- import * as i4 from "ngx-bootstrap/dropdown";
10
- import * as i5 from "../i18n/c8y-translate.pipe";
9
+ import * as i4 from "../common/component-outlet.directive";
10
+ import * as i5 from "ngx-bootstrap/dropdown";
11
+ import * as i6 from "../i18n/c8y-translate.pipe";
11
12
  /**
12
13
  * This component is used as the outlet to show the action list.
13
14
  * In a c8ycli app it is by default placed on the header component near app-switcher.
@@ -50,11 +51,11 @@ export class ActionOutletComponent {
50
51
  }
51
52
  }
52
53
  ActionOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ActionOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
53
- ActionOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: { items: "items" }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *ngComponentOutlet=\"item.component; injector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
54
+ ActionOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: { items: "items" }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *c8yComponentOutlet=\"item.component; environmentInjector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
54
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ActionOutletComponent, decorators: [{
55
56
  type: Component,
56
- args: [{ selector: 'c8y-action-outlet', host: { class: 'd-contents' }, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *ngComponentOutlet=\"item.component; injector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n" }]
57
+ args: [{ selector: 'c8y-action-outlet', host: { class: 'd-contents' }, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *c8yComponentOutlet=\"item.component; environmentInjector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n" }]
57
58
  }], propDecorators: { items: [{
58
59
  type: Input
59
60
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FjdGlvbi9hY3Rpb24tb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYWN0aW9uL2FjdGlvbi1vdXRsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUdyQzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBTUU7O1dBRUc7UUFDSCwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFhdEIsV0FBTSxHQUE4QixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRTs7V0FFRztRQUNILHdCQUFtQixHQUF5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDMUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ1YsTUFBTSxDQUNKLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FDRixDQUNGLENBQUM7UUFFRjs7V0FFRztRQUNILGdCQUFXLEdBQXlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDVixNQUFNLENBQ0osS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FDRixDQUNGLENBQUM7S0FjSDtJQWpEQzs7T0FFRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBNEJEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQU07UUFDWCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsSUFBSTtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDOztrSEF0RFUscUJBQXFCO3NHQUFyQixxQkFBcUIsNkhDZmxDLDg1Q0FxQ0E7MkZEdEJhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUIsUUFFdkIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFOzhCQVl6QixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2FjdGlvbi5tb2RlbCc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCBhcyB0aGUgb3V0bGV0IHRvIHNob3cgdGhlIGFjdGlvbiBsaXN0LlxuICogSW4gYSBjOHljbGkgYXBwIGl0IGlzIGJ5IGRlZmF1bHQgcGxhY2VkIG9uIHRoZSBoZWFkZXIgY29tcG9uZW50IG5lYXIgYXBwLXN3aXRjaGVyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWN0aW9uLW91dGxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tb3V0bGV0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2QtY29udGVudHMnIH1cbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uT3V0bGV0Q29tcG9uZW50IHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXMgaWYgaW4gYSBtb2JpbGUgdmlldyB0aGUgdG9vbGJhciBpcyBleHBhbmRlZCBvciBub3QuXG4gICAqL1xuICBpc1BhZ2VUb29sYmFyRXhwYW5kZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgYWN0aW9uIGRyb3Bkb3duLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGl0ZW1zKHZhbHVlKSB7XG4gICAgdGhpcy5pdGVtcyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zJC52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbXMkOiBCZWhhdmlvclN1YmplY3Q8QWN0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGl0ZW1zIHRoYXQgYXJlIGRpc3BsYXllZCBpbiB0aGUgXCJhZGRcIi1kcm9wZG93biBvcmRlcmVkIGJ5IHByaW9yaXR5LlxuICAgKi9cbiAgdGVtcGxhdGVzQW5kTGFiZWxzJDogT2JzZXJ2YWJsZTxBY3Rpb25bXT4gPSB0aGlzLml0ZW1zJC5waXBlKFxuICAgIG1hcChpdGVtcyA9PlxuICAgICAgc29ydEJ5KFxuICAgICAgICBpdGVtcy5maWx0ZXIoYWN0aW9uID0+ICFhY3Rpb24uY29tcG9uZW50KSxcbiAgICAgICAgdGhpcy5ieVByaW9yaXR5XG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVtcyB0aGF0IGFyZSBkaXNwbGF5ZWQgYXQgdGhlIHRvcCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgY29tcG9uZW50cyQ6IE9ic2VydmFibGU8QWN0aW9uW10+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoaXRlbXMgPT5cbiAgICAgIHNvcnRCeShcbiAgICAgICAgaXRlbXMuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24uY29tcG9uZW50KSxcbiAgICAgICAgdGhpcy5ieVByaW9yaXR5XG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIC8qKlxuICAgKiBJbnZva2VzIGFjdGlvbiBhZnRlciBhbiBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIGludm9rZShhY3Rpb24pIHtcbiAgICBpZiAoYWN0aW9uLmFjdGlvbikge1xuICAgICAgYWN0aW9uLmFjdGlvbi5jYWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBieVByaW9yaXR5KGl0ZW0pIHtcbiAgICByZXR1cm4gLWl0ZW0ucHJpb3JpdHk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoY29tcG9uZW50cyQgfCBhc3luYyk/Lmxlbmd0aCA+IDBcIj5cbiAgPGRpdiBjbGFzcz1cIm1haW4taGVhZGVyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb21wb25lbnRzJCB8IGFzeW5jXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJpdGVtLmNvbXBvbmVudDsgaW5qZWN0b3I6IGl0ZW0uaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJtYWluLWhlYWRlci1pdGVtXCIgKm5nSWY9XCIodGVtcGxhdGVzQW5kTGFiZWxzJCB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiIGRyb3Bkb3duPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJtYWluLWhlYWRlci1idXR0b24gZHJvcGRvd24tdG9nZ2xlIGM4eS1kcm9wZG93blwiXG4gICAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQWN0aW9ucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aSBbYzh5SWNvbl09XCIncGx1cy1jaXJjbGUnXCIgY2xhc3M9XCJpY29uLTJ4XCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgY29nLWRyb3Bkb3duXCIgKmRyb3Bkb3duTWVudT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0ZW1wbGF0ZXNBbmRMYWJlbHMkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpjOHlPdXRsZXQ9XCJpdGVtLnRlbXBsYXRlOyBpbmplY3RvcjogaXRlbS5pbmplY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxsaSAqbmdJZj1cIml0ZW0ubGFiZWxcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbnZva2UoaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIFtjOHlJY29uXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW91dGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FjdGlvbi9hY3Rpb24tb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYWN0aW9uL2FjdGlvbi1vdXRsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFHckM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1FOztXQUVHO1FBQ0gsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBYXRCLFdBQU0sR0FBOEIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEU7O1dBRUc7UUFDSCx3QkFBbUIsR0FBeUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNWLE1BQU0sQ0FDSixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQ3pDLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQ0YsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCxnQkFBVyxHQUF5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ1YsTUFBTSxDQUNKLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQ3hDLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQ0YsQ0FDRixDQUFDO0tBY0g7SUFqREM7O09BRUc7SUFDSCxJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQTRCRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFNO1FBQ1gsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQUk7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQzs7a0hBdERVLHFCQUFxQjtzR0FBckIscUJBQXFCLDZIQ2ZsQywwNkNBcUNBOzJGRHRCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CLFFBRXZCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTs4QkFZekIsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24ubW9kZWwnO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgYXMgdGhlIG91dGxldCB0byBzaG93IHRoZSBhY3Rpb24gbGlzdC5cbiAqIEluIGEgYzh5Y2xpIGFwcCBpdCBpcyBieSBkZWZhdWx0IHBsYWNlZCBvbiB0aGUgaGVhZGVyIGNvbXBvbmVudCBuZWFyIGFwcC1zd2l0Y2hlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFjdGlvbi1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLW91dGxldC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdkLWNvbnRlbnRzJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbk91dGxldENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIGluIGEgbW9iaWxlIHZpZXcgdGhlIHRvb2xiYXIgaXMgZXhwYW5kZWQgb3Igbm90LlxuICAgKi9cbiAgaXNQYWdlVG9vbGJhckV4cGFuZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIGFjdGlvbiBkcm9wZG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpdGVtcyh2YWx1ZSkge1xuICAgIHRoaXMuaXRlbXMkLm5leHQodmFsdWUpO1xuICB9XG4gIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcyQudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGl0ZW1zJDogQmVoYXZpb3JTdWJqZWN0PEFjdGlvbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVtcyB0aGF0IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIFwiYWRkXCItZHJvcGRvd24gb3JkZXJlZCBieSBwcmlvcml0eS5cbiAgICovXG4gIHRlbXBsYXRlc0FuZExhYmVscyQ6IE9ic2VydmFibGU8QWN0aW9uW10+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoaXRlbXMgPT5cbiAgICAgIHNvcnRCeShcbiAgICAgICAgaXRlbXMuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLmNvbXBvbmVudCksXG4gICAgICAgIHRoaXMuYnlQcmlvcml0eVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlbXMgdGhhdCBhcmUgZGlzcGxheWVkIGF0IHRoZSB0b3AgbmF2aWdhdGlvbi5cbiAgICovXG4gIGNvbXBvbmVudHMkOiBPYnNlcnZhYmxlPEFjdGlvbltdPiA9IHRoaXMuaXRlbXMkLnBpcGUoXG4gICAgbWFwKGl0ZW1zID0+XG4gICAgICBzb3J0QnkoXG4gICAgICAgIGl0ZW1zLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLmNvbXBvbmVudCksXG4gICAgICAgIHRoaXMuYnlQcmlvcml0eVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICAvKipcbiAgICogSW52b2tlcyBhY3Rpb24gYWZ0ZXIgYW4gYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBpbnZva2UoYWN0aW9uKSB7XG4gICAgaWYgKGFjdGlvbi5hY3Rpb24pIHtcbiAgICAgIGFjdGlvbi5hY3Rpb24uY2FsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnlQcmlvcml0eShpdGVtKSB7XG4gICAgcmV0dXJuIC1pdGVtLnByaW9yaXR5O1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKGNvbXBvbmVudHMkIHwgYXN5bmMpPy5sZW5ndGggPiAwXCI+XG4gIDxkaXYgY2xhc3M9XCJtYWluLWhlYWRlci1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29tcG9uZW50cyQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKmM4eUNvbXBvbmVudE91dGxldD1cIml0ZW0uY29tcG9uZW50OyBlbnZpcm9ubWVudEluamVjdG9yOiBpdGVtLmluamVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwibWFpbi1oZWFkZXItaXRlbVwiICpuZ0lmPVwiKHRlbXBsYXRlc0FuZExhYmVscyQgfCBhc3luYyk/Lmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiBkcm9wZG93bj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwibWFpbi1oZWFkZXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZSBjOHktZHJvcGRvd25cIlxuICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0FjdGlvbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGkgW2M4eUljb25dPVwiJ3BsdXMtY2lyY2xlJ1wiIGNsYXNzPVwiaWNvbi0yeFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGNvZy1kcm9wZG93blwiICpkcm9wZG93bk1lbnU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGVtcGxhdGVzQW5kTGFiZWxzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqYzh5T3V0bGV0PVwiaXRlbS50ZW1wbGF0ZTsgaW5qZWN0b3I6IGl0ZW0uaW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bGkgKm5nSWY9XCJpdGVtLmxhYmVsXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW52b2tlKGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBbYzh5SWNvbl09XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -40,6 +40,7 @@ import { MarkdownToHtmlPipe } from './markdown-to-html.pipe';
40
40
  import { MoNamePipe } from './mo-name.pipe';
41
41
  import { GenericFileIconPipe } from './generic-file-icon.pipe';
42
42
  import { StringifyObjectPipe } from './stringify-object.pipe';
43
+ import { C8yComponentOutlet } from './component-outlet.directive';
43
44
  import * as i0 from "@angular/core";
44
45
  export function initializeServices(translateService, state, userPreferences) {
45
46
  const initialize = () => {
@@ -149,7 +150,7 @@ CommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
149
150
  MarkdownToHtmlPipe,
150
151
  MoNamePipe,
151
152
  GenericFileIconPipe,
152
- StringifyObjectPipe], imports: [NgCommonModule, I18nModule, TooltipModule, ScrollingModule], exports: [EmptyStateComponent,
153
+ StringifyObjectPipe], imports: [NgCommonModule, I18nModule, TooltipModule, ScrollingModule, C8yComponentOutlet], exports: [EmptyStateComponent,
153
154
  IconDirective,
154
155
  OutletDirective,
155
156
  I18nModule,
@@ -180,13 +181,14 @@ CommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
180
181
  MarkdownToHtmlPipe,
181
182
  MoNamePipe,
182
183
  GenericFileIconPipe,
183
- StringifyObjectPipe] });
184
+ StringifyObjectPipe,
185
+ C8yComponentOutlet] });
184
186
  CommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CommonModule, imports: [NgCommonModule, I18nModule, TooltipModule, ScrollingModule, I18nModule,
185
187
  NgCommonModule] });
186
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CommonModule, decorators: [{
187
189
  type: NgModule,
188
190
  args: [{
189
- imports: [NgCommonModule, I18nModule, TooltipModule, ScrollingModule],
191
+ imports: [NgCommonModule, I18nModule, TooltipModule, ScrollingModule, C8yComponentOutlet],
190
192
  exports: [
191
193
  EmptyStateComponent,
192
194
  IconDirective,
@@ -219,7 +221,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
219
221
  MarkdownToHtmlPipe,
220
222
  MoNamePipe,
221
223
  GenericFileIconPipe,
222
- StringifyObjectPipe
224
+ StringifyObjectPipe,
225
+ C8yComponentOutlet
223
226
  ],
224
227
  declarations: [
225
228
  EmptyStateComponent,
@@ -256,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
256
259
  entryComponents: [LoadMoreComponent, LoadingComponent, VirtualScrollerWrapperComponent]
257
260
  }]
258
261
  }], ctorParameters: function () { return []; } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2NvbW1vbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBRWQsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMv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a0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3FCQUNwQjtvQkFDRCxlQUFlLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSwrQkFBK0IsQ0FBQztpQkFDeEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSBhcyBOZ0NvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBUFBfSU5JVElBTElaRVIsXG4gIEluamVjdGlvblRva2VuLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBzZXRUaGVtZSB9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEkxOG5Nb2R1bGUgfSBmcm9tICcuLi9pMThuL2kxOG4ubW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9pMThuL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEJ5dGVzUGlwZSB9IGZyb20gJy4vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4vZGF0ZS5waXBlJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wZG93bi1kaXJlY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4vZm9yT2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IEdldEdyb3VwSWNvblBpcGUgfSBmcm9tICcuL2dldC1ncm91cC1pY29uLnBpcGUnO1xuaW1wb3J0IHsgSHVtYW5pemVBcHBOYW1lUGlwZSB9IGZyb20gJy4vaHVtYW5pemUtYXBwLW5hbWUucGlwZSc7XG5pbXBvcnQgeyBIdW1hbml6ZVBpcGUgfSBmcm9tICcuL2h1bWFuaXplLnBpcGUnO1xuaW1wb3J0IHsgSWNvbkRpcmVjdGl2ZSwgSUNPTlMgfSBmcm9tICcuL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElmQWxsb3dlZERpcmVjdGl2ZSB9IGZyb20gJy4vaWYtYWxsb3dlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9hZE1vcmVDb21wb25lbnQgfSBmcm9tICcuL2xvYWQtbW9yZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFwRnVuY3Rpb25QaXBlIH0gZnJvbSAnLi9tYXAtZnVuY3Rpb24ucGlwZSc7XG5pbXBvcnQgeyBOdW1iZXJQaXBlIH0gZnJvbSAnLi9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBPcGVyYXRpb25SZXN1bHRDb21wb25lbnQgfSBmcm9tICcuL29wZXJhdGlvbi1yZXN1bHQuY29tcG9uZW50JztcbmltcG9ydCB7IGhvb2tPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnLi9vdXRsZXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNob3J0ZW5Vc2VyTmFtZVBpcGUgfSBmcm9tICcuL3Nob3J0ZW4tdXNlci1uYW1lLnBpcGUnO1xuaW1wb3J0IHsgVXNlck5hbWVJbml0aWFsc1BpcGUgfSBmcm9tICcuL3VzZXItbmFtZS1pbml0aWFscy5waXBlJztcbmltcG9ydCB7IFNob3VsZFNob3dNb1BpcGUgfSBmcm9tICcuL3Nob3VsZC1zaG93LW1vLnBpcGUnO1xuaW1wb3J0IHsgU2hvd0lmRmlsdGVyUGlwZSB9IGZyb20gJy4vc2hvdy1pZi1maWx0ZXIucGlwZSc7XG5pbXBvcnQgeyBUYWJzZXRBcmlhRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJzZXQtYXJpYS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGV4dGFyZWFBdXRvcmVzaXplRGlyZWN0aXZlIH0gZnJvbSAnLi90ZXh0YXJlYS1hdXRvcmVzaXplLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vdXNlci1wcmVmZXJlbmNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlydHVhbFNjcm9sbFdpbmRvd0RpcmVjdGl2ZSB9IGZyb20gJy4vdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwtd2luZG93LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC92aXJ0dWFsLXNjcm9sbGVyLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNraXBMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi9za2lwLWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hcmtkb3duVG9IdG1sUGlwZSB9IGZyb20gJy4vbWFya2Rvd24tdG8taHRtbC5waXBlJztcbmltcG9ydCB7IE1vTmFtZVBpcGUgfSBmcm9tICcuL21vLW5hbWUucGlwZSc7XG5pbXBvcnQgeyBHZW5lcmljRmlsZUljb25QaXBlIH0gZnJvbSAnLi9nZW5lcmljLWZpbGUtaWNvbi5waXBlJztcbmltcG9ydCB7IFN0cmluZ2lmeU9iamVjdFBpcGUgfSBmcm9tICcuL3N0cmluZ2lmeS1vYmplY3QucGlwZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplU2VydmljZXMoXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gIHN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gIHVzZXJQcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VzU2VydmljZVxuKSB7XG4gIGNvbnN0IGluaXRpYWxpemUgPSAoKSA9PiB7XG4gICAgY29uc3QgcXVlcnlTdHJpbmdMYW5ndWFnZSA9IHRyYW5zbGF0ZVNlcnZpY2UucXVlcnlTdHJpbmdMYW5nKCk7XG4gICAgY29uc3QgZmlyc3RMYW5ndWFnZSA9IHRyYW5zbGF0ZVNlcnZpY2UuZmlyc3RTdXBwb3J0ZWRMYW5ndWFnZSgpO1xuXG4gICAgLypcbiAgICAgIFRoZSA/bGFuZyBwYXJhbWV0ZXIgd2lsbCBwcmV2ZW50IHRoZSB1c2VyIHByZWZlcmVuY2UgbGFuZ3VhZ2UgZnJvbSBiZWluZyBhY3RpdmF0ZWRcbiAgICAqL1xuICAgIGlmIChxdWVyeVN0cmluZ0xhbmd1YWdlICYmIHRyYW5zbGF0ZVNlcnZpY2UuZ2V0U3VwcG9ydGVkKHF1ZXJ5U3RyaW5nTGFuZ3VhZ2UpKSB7XG4gICAgICB0cmFuc2xhdGVTZXJ2aWNlLnN3aXRjaFRvTGFuZ3VhZ2UocXVlcnlTdHJpbmdMYW5ndWFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmN1cnJlbnRVc2VyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCh1c2VyID0+IHVzZXIgJiYgdXNlci51c2VyTmFtZSksXG4gICAgICAgICAgZmlsdGVyKHUgPT4gISF1KSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB1c2VyUHJlZmVyZW5jZXMuZ2V0KCdsYW5ndWFnZScpKSxcbiAgICAgICAgICBzdGFydFdpdGgoZmlyc3RMYW5ndWFnZSksXG4gICAgICAgICAgZmlsdGVyKGxhbmcgPT4gISFsYW5nKSxcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShsYW5nID0+IHtcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLnN3aXRjaFRvTGFuZ3VhZ2UobGFuZyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGluaXRpYWxpemU7XG59XG5cbmV4cG9ydCBjb25zdCBJQ09OX0xJU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ2ljb25MaXN0Jyk7XG5cbi8qKlxuICogQ29tbW9ubHkgdXNlZCBkaXJlY3RpdmVzLCBkYXRhIGFjY2VzcyBhbmQgdHJhbnNsYXRpb24uIFRoaXMgbW9kdWxlIGlzIHRoZSBzaGFyZWRcbiAqIG1vZHVsZSBhY3Jvc3MgYWxsIGNvcmUgY29tcG9uZW50cy4gSXQgc2hvdWxkIGJlIGltcG9ydGVkIGJ5IGRlZmF1bHQuXG4gKlxuICogQGV4cG9ydHMgSWNvbkRpcmVjdGl2ZSBBIGRpcmVjdGl2ZSB0byBzZXQgYSBjOHkgaWNvbiB3aXRoIFtjOHlJY29uXT1cIidyb2NrZXQnXCIuXG4gKiBAZXhwb3J0cyBPdXRsZXREaXJlY3RpdmUgQSBkaXJlY3RpdmUgd2hpY2ggYWxsb3dzIHRvIHNldCBET00gb3IgQW5ndWxhciB0ZW1wbGF0ZXMgKHVzZWQgZm9yIHVwZ3JhZGUpLlxuICogQGV4cG9ydHMgSTE4bk1vZHVsZSBUcmFuc2xhdGlvbiBtb2R1bGUuXG4gKiBAZXhwb3J0cyBOZ0NvbW1vbk1vZHVsZSBBbmd1bGFyIGNvbW1vbiBtb2R1bGUuXG4gKiBAZXhwb3J0cyBEYXRhTW9kdWxlIFRoZSBkYXRhIGxheWVyIHRvIGFsbG93IERJIHdpdGggQGM4eS9jbGllbnQuXG4gKiBAZXhwb3J0cyBIdW1hbml6ZUFwcE5hbWVQaXBlIEh1bWFuaXplIGFuIGFwcGxpY2F0aW9uIG5hbWUgKGUuZy4gaW4gdGhlIGFwcCBzd2l0Y2hlcikuXG4gKiBAZXhwb3J0cyBIdW1hbml6ZVBpcGUgSHVtYW5pemUgYSB3b3JkLiBFLmcuIGBkZXZpY2UgbWFuYWdlbWVudGAgZ2V0cyBgRGV2aWNlIG1hbmFnZW1lbnRgLlxuICogQGV4cG9ydHMgU2hvdWxkU2hvd01vUGlwZSBDaGVja3MgaWYgcGFzc2VkIG1hbmFnZWQgb2JqZWN0IGlzIGRldmljZSBvciBncm91cCB0eXBlLlxuICogQGV4cG9ydHMgR2V0R3JvdXBJY29uUGlwZSBHZXRzIHByb3BlciBncm91cCBpY29uLlxuICogQGV4cG9ydHMgU2hvcnRlblVzZXJOYW1lUGlwZSBBbGxvd3MgYSBzaG9ydCBuYW1lLiBFLmcuIGBGb28gQmFyYCBnZXRzIGBGLiBCYXJgLlxuICogQGV4cG9ydHMgVXNlck5hbWVJbml0aWFsc1BpcGUgQWxsb3dzIHRoZSBpbml0aWFscyBmcm9tIHRoZSBuYW1lLiBFLmcuIGBGb28gQmFyYCBnZXRzIGBGQmAuXG4gKiBAZXhwb3J0cyBGb3JPZkRpcmVjdGl2ZSBBIGZvck9mIGRpcmVjdGl2ZSBsaWtlIG5nRm9yIGJ1dCB3aXRoIGxvYWQtbW9yZSBmdW5jdGlvbi5cbiAqIEBleHBvcnRzIExvYWRNb3JlQ29tcG9uZW50IEEgY29tcG9uZW50IHRvIGxvYWQgbW9yZSBkYXRhIGZyb20gYSBjZXJ0YWluIGRhdGEtc291cmNlLlxuICogQGV4cG9ydHMgUHJvZ3Jlc3NCYXJDb21wb25lbnQgRGlzcGxheXMgZWl0aGVyIGRlZmluZWQgb3IgdW5kZWZpbmVkIHByb2dyZXNzLlxuICogQGV4cG9ydHMgRHJvcGRvd25EaXJlY3Rpb25EaXJlY3RpdmUgRGV0ZXJtaW5lcyBpZiBhIGRyb3Bkb3duIG9wZW5zIHRvIHRoZSBib3R0b20gb3IgdG8gdGhlIHRvcC5cbiAqIEBleHBvcnRzIFRleHRhcmVhQXV0b3Jlc2l6ZURpcmVjdGl2ZSByZXNpemVzIGEgdGV4dGFyZWEgaGVpZ2h0IGFzIHRoZSB1c2VyIGlucHV0cy5cbiAqIEBleHBvcnRzIE9wZXJhdGlvblJlc3VsdENvbXBvbmVudCBkaXNwbGF5cyBhbiBhbmltYXRlZCBzdmcgZm9yIHN1Y2Nlc3MgYW5kIGVycm9yIG9wZXJhdGlvbnMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtOZ0NvbW1vbk1vZHVsZSwgSTE4bk1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlXSxcbiAgZXhwb3J0czogW1xuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBPdXRsZXREaXJlY3RpdmUsXG4gICAgSTE4bk1vZHVsZSxcbiAgICBOZ0NvbW1vbk1vZHVsZSxcbiAgICBIdW1hbml6ZUFwcE5hbWVQaXBlLFxuICAgIEh1bWFuaXplUGlwZSxcbiAgICBTaG91bGRTaG93TW9QaXBlLFxuICAgIEdldEdyb3VwSWNvblBpcGUsXG4gICAgSWZBbGxvd2VkRGlyZWN0aXZlLFxuICAgIFNob3J0ZW5Vc2VyTmFtZVBpcGUsXG4gICAgVXNlck5hbWVJbml0aWFsc1BpcGUsXG4gICAgRm9yT2ZEaXJlY3RpdmUsXG4gICAgTG9hZE1vcmVDb21wb25lbnQsXG4gICAgTWFwRnVuY3Rpb25QaXBlLFxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50LFxuICAgIERhdGVQaXBlLFxuICAgIE51bWJlclBpcGUsXG4gICAgTG9hZGluZ0NvbXBvbmVudCxcbiAgICBEcm9wZG93bkRpcmVjdGlvbkRpcmVjdGl2ZSxcbiAgICBUZXh0YXJlYUF1dG9yZXNpemVEaXJlY3RpdmUsXG4gICAgVGFic2V0QXJpYURpcmVjdGl2ZSxcbiAgICBPcGVyYXRpb25SZXN1bHRDb21wb25lbnQsXG4gICAgVmlydHVhbFNjcm9sbGVyV3JhcHBlckNvbXBvbmVudCxcbiAgICBWaXJ0dWFsU2Nyb2xsV2luZG93RGlyZWN0aXZlLFxuICAgIEJ5dGVzUGlwZSxcbiAgICBTaG93SWZGaWx0ZXJQaXBlLFxuICAgIFNraXBMaW5rRGlyZWN0aXZlLFxuICAgIE1hcmtkb3duVG9IdG1sUGlwZSxcbiAgICBNb05hbWVQaXBlLFxuICAgIEdlbmVyaWNGaWxlSWNvblBpcGUsXG4gICAgU3RyaW5naWZ5T2JqZWN0UGlwZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgT3V0bGV0RGlyZWN0aXZlLFxuICAgIEh1bWFuaXplUGlwZSxcbiAgICBTaG91bGRTaG93TW9QaXBlLFxuICAgIEdldEdyb3VwSWNvblBpcGUsXG4gICAgSHVtYW5pemVBcHBOYW1lUGlwZSxcbiAgICBJZkFsbG93ZWREaXJlY3RpdmUsXG4gICAgU2hvcnRlblVzZXJOYW1lUGlwZSxcbiAgICBVc2VyTmFtZUluaXRpYWxzUGlwZSxcbiAgICBGb3JPZkRpcmVjdGl2ZSxcbiAgICBMb2FkTW9yZUNvbXBvbmVudCxcbiAgICBNYXBGdW5jdGlvblBpcGUsXG4gICAgUHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gICAgRGF0ZVBpcGUsXG4gICAgTnVtYmVyUGlwZSxcbiAgICBMb2FkaW5nQ29tcG9uZW50LFxuICAgIERyb3Bkb3duRGlyZWN0aW9uRGlyZWN0aXZlLFxuICAgIFRleHRhcmVhQXV0b3Jlc2l6ZURpcmVjdGl2ZSxcbiAgICBUYWJzZXRBcmlhRGlyZWN0aXZlLFxuICAgIE9wZXJhdGlvblJlc3VsdENvbXBvbmVudCxcbiAgICBWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50LFxuICAgIFZpcnR1YWxTY3JvbGxXaW5kb3dEaXJlY3RpdmUsXG4gICAgQnl0ZXNQaXBlLFxuICAgIFNob3dJZkZpbHRlclBpcGUsXG4gICAgU2tpcExpbmtEaXJlY3RpdmUsXG4gICAgTWFya2Rvd25Ub0h0bWxQaXBlLFxuICAgIE1vTmFtZVBpcGUsXG4gICAgR2VuZXJpY0ZpbGVJY29uUGlwZSxcbiAgICBTdHJpbmdpZnlPYmplY3RQaXBlXG4gIF0sXG4gIGVudHJ5Q29tcG9uZW50czogW0xvYWRNb3JlQ29tcG9uZW50LCBMb2FkaW5nQ29tcG9uZW50LCBWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBDb21tb25Nb2R1bGUge1xuICBzdGF0aWMgcHJvdmlkZXJzKCk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5EYXRhTW9kdWxlLnByb3ZpZGVycygpLFxuICAgICAgLy8gVE9ETzogbWF5YmUgd2UgY2FuIHRoaW5rIG9mIGEgd2F5IHRvIHJlbW92ZSB0aGlzIEM4WV9BUFAgZ2xvYmFsXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGhvb2tPcHRpb25zKCh3aW5kb3cgYXMgYW55KS5DOFlfQVBQIHx8IHt9KSxcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICB1c2VGYWN0b3J5OiBpbml0aWFsaXplU2VydmljZXMsXG4gICAgICAgIGRlcHM6IFtUcmFuc2xhdGVTZXJ2aWNlLCBBcHBTdGF0ZVNlcnZpY2UsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2VdLFxuICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgcHJvdmlkZTogSUNPTl9MSVNULCB1c2VWYWx1ZTogSUNPTlMsIG11bHRpOiBmYWxzZSB9LFxuICAgICAgLi4uSTE4bk1vZHVsZS5wcm92aWRlcnMoKSxcbiAgICAgIEh1bWFuaXplUGlwZSxcbiAgICAgIFNob3VsZFNob3dNb1BpcGUsXG4gICAgICBHZXRHcm91cEljb25QaXBlLFxuICAgICAgSHVtYW5pemVBcHBOYW1lUGlwZSxcbiAgICAgIFNob3J0ZW5Vc2VyTmFtZVBpcGUsXG4gICAgICBNYXBGdW5jdGlvblBpcGUsXG4gICAgICBEYXRlUGlwZSxcbiAgICAgIEJ5dGVzUGlwZVxuICAgIF07XG4gIH1cblxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENvbW1vbk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQ29tbW9uTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBDb21tb25Nb2R1bGUucHJvdmlkZXJzKClcbiAgICB9O1xuICB9XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHNldFRoZW1lKCdiczMnKTtcbiAgfVxufVxuIl19
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2NvbW1vbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBRWQsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMv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LG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLDRCQUE0Qjt3QkFDNUIsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3FCQUNwQjtvQkFDRCxlQUFlLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSwrQkFBK0IsQ0FBQztpQkFDeEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSBhcyBOZ0NvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBUFBfSU5JVElBTElaRVIsXG4gIEluamVjdGlvblRva2VuLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBzZXRUaGVtZSB9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEkxOG5Nb2R1bGUgfSBmcm9tICcuLi9pMThuL2kxOG4ubW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9pMThuL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEJ5dGVzUGlwZSB9IGZyb20gJy4vYnl0ZXMucGlwZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJy4vZGF0ZS5waXBlJztcbmltcG9ydCB7IERyb3Bkb3duRGlyZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wZG93bi1kaXJlY3Rpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4vZm9yT2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IEdldEdyb3VwSWNvblBpcGUgfSBmcm9tICcuL2dldC1ncm91cC1pY29uLnBpcGUnO1xuaW1wb3J0IHsgSHVtYW5pemVBcHBOYW1lUGlwZSB9IGZyb20gJy4vaHVtYW5pemUtYXBwLW5hbWUucGlwZSc7XG5pbXBvcnQgeyBIdW1hbml6ZVBpcGUgfSBmcm9tICcuL2h1bWFuaXplLnBpcGUnO1xuaW1wb3J0IHsgSWNvbkRpcmVjdGl2ZSwgSUNPTlMgfSBmcm9tICcuL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElmQWxsb3dlZERpcmVjdGl2ZSB9IGZyb20gJy4vaWYtYWxsb3dlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9hZE1vcmVDb21wb25lbnQgfSBmcm9tICcuL2xvYWQtbW9yZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFwRnVuY3Rpb25QaXBlIH0gZnJvbSAnLi9tYXAtZnVuY3Rpb24ucGlwZSc7XG5pbXBvcnQgeyBOdW1iZXJQaXBlIH0gZnJvbSAnLi9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBPcGVyYXRpb25SZXN1bHRDb21wb25lbnQgfSBmcm9tICcuL29wZXJhdGlvbi1yZXN1bHQuY29tcG9uZW50JztcbmltcG9ydCB7IGhvb2tPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnLi9vdXRsZXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNob3J0ZW5Vc2VyTmFtZVBpcGUgfSBmcm9tICcuL3Nob3J0ZW4tdXNlci1uYW1lLnBpcGUnO1xuaW1wb3J0IHsgVXNlck5hbWVJbml0aWFsc1BpcGUgfSBmcm9tICcuL3VzZXItbmFtZS1pbml0aWFscy5waXBlJztcbmltcG9ydCB7IFNob3VsZFNob3dNb1BpcGUgfSBmcm9tICcuL3Nob3VsZC1zaG93LW1vLnBpcGUnO1xuaW1wb3J0IHsgU2hvd0lmRmlsdGVyUGlwZSB9IGZyb20gJy4vc2hvdy1pZi1maWx0ZXIucGlwZSc7XG5pbXBvcnQgeyBUYWJzZXRBcmlhRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJzZXQtYXJpYS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGV4dGFyZWFBdXRvcmVzaXplRGlyZWN0aXZlIH0gZnJvbSAnLi90ZXh0YXJlYS1hdXRvcmVzaXplLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vdXNlci1wcmVmZXJlbmNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlydHVhbFNjcm9sbFdpbmRvd0RpcmVjdGl2ZSB9IGZyb20gJy4vdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwtd2luZG93LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsZXJXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC92aXJ0dWFsLXNjcm9sbGVyLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNraXBMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLi9za2lwLWxpbmsuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hcmtkb3duVG9IdG1sUGlwZSB9IGZyb20gJy4vbWFya2Rvd24tdG8taHRtbC5waXBlJztcbmltcG9ydCB7IE1vTmFtZVBpcGUgfSBmcm9tICcuL21vLW5hbWUucGlwZSc7XG5pbXBvcnQgeyBHZW5lcmljRmlsZUljb25QaXBlIH0gZnJvbSAnLi9nZW5lcmljLWZpbGUtaWNvbi5waXBlJztcbmltcG9ydCB7IFN0cmluZ2lmeU9iamVjdFBpcGUgfSBmcm9tICcuL3N0cmluZ2lmeS1vYmplY3QucGlwZSc7XG5pbXBvcnQgeyBDOHlDb21wb25lbnRPdXRsZXQgfSBmcm9tICcuL2NvbXBvbmVudC1vdXRsZXQuZGlyZWN0aXZlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVTZXJ2aWNlcyhcbiAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgc3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG4pIHtcbiAgY29uc3QgaW5pdGlhbGl6ZSA9ICgpID0+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZ0xhbmd1YWdlID0gdHJhbnNsYXRlU2VydmljZS5xdWVyeVN0cmluZ0xhbmcoKTtcbiAgICBjb25zdCBmaXJzdExhbmd1YWdlID0gdHJhbnNsYXRlU2VydmljZS5maXJzdFN1cHBvcnRlZExhbmd1YWdlKCk7XG5cbiAgICAvKlxuICAgICAgVGhlID9sYW5nIHBhcmFtZXRlciB3aWxsIHByZXZlbnQgdGhlIHVzZXIgcHJlZmVyZW5jZSBsYW5ndWFnZSBmcm9tIGJlaW5nIGFjdGl2YXRlZFxuICAgICovXG4gICAgaWYgKHF1ZXJ5U3RyaW5nTGFuZ3VhZ2UgJiYgdHJhbnNsYXRlU2VydmljZS5nZXRTdXBwb3J0ZWQocXVlcnlTdHJpbmdMYW5ndWFnZSkpIHtcbiAgICAgIHRyYW5zbGF0ZVNlcnZpY2Uuc3dpdGNoVG9MYW5ndWFnZShxdWVyeVN0cmluZ0xhbmd1YWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY3VycmVudFVzZXJcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKHVzZXIgPT4gdXNlciAmJiB1c2VyLnVzZXJOYW1lKSxcbiAgICAgICAgICBmaWx0ZXIodSA9PiAhIXUpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHVzZXJQcmVmZXJlbmNlcy5nZXQoJ2xhbmd1YWdlJykpLFxuICAgICAgICAgIHN0YXJ0V2l0aChmaXJzdExhbmd1YWdlKSxcbiAgICAgICAgICBmaWx0ZXIobGFuZyA9PiAhIWxhbmcpLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGxhbmcgPT4ge1xuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2Uuc3dpdGNoVG9MYW5ndWFnZShsYW5nKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gaW5pdGlhbGl6ZTtcbn1cblxuZXhwb3J0IGNvbnN0IElDT05fTElTVCA9IG5ldyBJbmplY3Rpb25Ub2tlbignaWNvbkxpc3QnKTtcblxuLyoqXG4gKiBDb21tb25seSB1c2VkIGRpcmVjdGl2ZXMsIGRhdGEgYWNjZXNzIGFuZCB0cmFuc2xhdGlvbi4gVGhpcyBtb2R1bGUgaXMgdGhlIHNoYXJlZFxuICogbW9kdWxlIGFjcm9zcyBhbGwgY29yZSBjb21wb25lbnRzLiBJdCBzaG91bGQgYmUgaW1wb3J0ZWQgYnkgZGVmYXVsdC5cbiAqXG4gKiBAZXhwb3J0cyBJY29uRGlyZWN0aXZlIEEgZGlyZWN0aXZlIHRvIHNldCBhIGM4eSBpY29uIHdpdGggW2M4eUljb25dPVwiJ3JvY2tldCdcIi5cbiAqIEBleHBvcnRzIE91dGxldERpcmVjdGl2ZSBBIGRpcmVjdGl2ZSB3aGljaCBhbGxvd3MgdG8gc2V0IERPTSBvciBBbmd1bGFyIHRlbXBsYXRlcyAodXNlZCBmb3IgdXBncmFkZSkuXG4gKiBAZXhwb3J0cyBJMThuTW9kdWxlIFRyYW5zbGF0aW9uIG1vZHVsZS5cbiAqIEBleHBvcnRzIE5nQ29tbW9uTW9kdWxlIEFuZ3VsYXIgY29tbW9uIG1vZHVsZS5cbiAqIEBleHBvcnRzIERhdGFNb2R1bGUgVGhlIGRhdGEgbGF5ZXIgdG8gYWxsb3cgREkgd2l0aCBAYzh5L2NsaWVudC5cbiAqIEBleHBvcnRzIEh1bWFuaXplQXBwTmFtZVBpcGUgSHVtYW5pemUgYW4gYXBwbGljYXRpb24gbmFtZSAoZS5nLiBpbiB0aGUgYXBwIHN3aXRjaGVyKS5cbiAqIEBleHBvcnRzIEh1bWFuaXplUGlwZSBIdW1hbml6ZSBhIHdvcmQuIEUuZy4gYGRldmljZSBtYW5hZ2VtZW50YCBnZXRzIGBEZXZpY2UgbWFuYWdlbWVudGAuXG4gKiBAZXhwb3J0cyBTaG91bGRTaG93TW9QaXBlIENoZWNrcyBpZiBwYXNzZWQgbWFuYWdlZCBvYmplY3QgaXMgZGV2aWNlIG9yIGdyb3VwIHR5cGUuXG4gKiBAZXhwb3J0cyBHZXRHcm91cEljb25QaXBlIEdldHMgcHJvcGVyIGdyb3VwIGljb24uXG4gKiBAZXhwb3J0cyBTaG9ydGVuVXNlck5hbWVQaXBlIEFsbG93cyBhIHNob3J0IG5hbWUuIEUuZy4gYEZvbyBCYXJgIGdldHMgYEYuIEJhcmAuXG4gKiBAZXhwb3J0cyBVc2VyTmFtZUluaXRpYWxzUGlwZSBBbGxvd3MgdGhlIGluaXRpYWxzIGZyb20gdGhlIG5hbWUuIEUuZy4gYEZvbyBCYXJgIGdldHMgYEZCYC5cbiAqIEBleHBvcnRzIEZvck9mRGlyZWN0aXZlIEEgZm9yT2YgZGlyZWN0aXZlIGxpa2UgbmdGb3IgYnV0IHdpdGggbG9hZC1tb3JlIGZ1bmN0aW9uLlxuICogQGV4cG9ydHMgTG9hZE1vcmVDb21wb25lbnQgQSBjb21wb25lbnQgdG8gbG9hZCBtb3JlIGRhdGEgZnJvbSBhIGNlcnRhaW4gZGF0YS1zb3VyY2UuXG4gKiBAZXhwb3J0cyBQcm9ncmVzc0JhckNvbXBvbmVudCBEaXNwbGF5cyBlaXRoZXIgZGVmaW5lZCBvciB1bmRlZmluZWQgcHJvZ3Jlc3MuXG4gKiBAZXhwb3J0cyBEcm9wZG93bkRpcmVjdGlvbkRpcmVjdGl2ZSBEZXRlcm1pbmVzIGlmIGEgZHJvcGRvd24gb3BlbnMgdG8gdGhlIGJvdHRvbSBvciB0byB0aGUgdG9wLlxuICogQGV4cG9ydHMgVGV4dGFyZWFBdXRvcmVzaXplRGlyZWN0aXZlIHJlc2l6ZXMgYSB0ZXh0YXJlYSBoZWlnaHQgYXMgdGhlIHVzZXIgaW5wdXRzLlxuICogQGV4cG9ydHMgT3BlcmF0aW9uUmVzdWx0Q29tcG9uZW50IGRpc3BsYXlzIGFuIGFuaW1hdGVkIHN2ZyBmb3Igc3VjY2VzcyBhbmQgZXJyb3Igb3BlcmF0aW9ucy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW05nQ29tbW9uTW9kdWxlLCBJMThuTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGUsIEM4eUNvbXBvbmVudE91dGxldF0sXG4gIGV4cG9ydHM6IFtcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgT3V0bGV0RGlyZWN0aXZlLFxuICAgIEkxOG5Nb2R1bGUsXG4gICAgTmdDb21tb25Nb2R1bGUsXG4gICAgSHVtYW5pemVBcHBOYW1lUGlwZSxcbiAgICBIdW1hbml6ZVBpcGUsXG4gICAgU2hvdWxkU2hvd01vUGlwZSxcbiAgICBHZXRHcm91cEljb25QaXBlLFxuICAgIElmQWxsb3dlZERpcmVjdGl2ZSxcbiAgICBTaG9ydGVuVXNlck5hbWVQaXBlLFxuICAgIFVzZXJOYW1lSW5pdGlhbHNQaXBlLFxuICAgIEZvck9mRGlyZWN0aXZlLFxuICAgIExvYWRNb3JlQ29tcG9uZW50LFxuICAgIE1hcEZ1bmN0aW9uUGlwZSxcbiAgICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBOdW1iZXJQaXBlLFxuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgRHJvcGRvd25EaXJlY3Rpb25EaXJlY3RpdmUsXG4gICAgVGV4dGFyZWFBdXRvcmVzaXplRGlyZWN0aXZlLFxuICAgIFRhYnNldEFyaWFEaXJlY3RpdmUsXG4gICAgT3BlcmF0aW9uUmVzdWx0Q29tcG9uZW50LFxuICAgIFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnQsXG4gICAgVmlydHVhbFNjcm9sbFdpbmRvd0RpcmVjdGl2ZSxcbiAgICBCeXRlc1BpcGUsXG4gICAgU2hvd0lmRmlsdGVyUGlwZSxcbiAgICBTa2lwTGlua0RpcmVjdGl2ZSxcbiAgICBNYXJrZG93blRvSHRtbFBpcGUsXG4gICAgTW9OYW1lUGlwZSxcbiAgICBHZW5lcmljRmlsZUljb25QaXBlLFxuICAgIFN0cmluZ2lmeU9iamVjdFBpcGUsXG4gICAgQzh5Q29tcG9uZW50T3V0bGV0XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBPdXRsZXREaXJlY3RpdmUsXG4gICAgSHVtYW5pemVQaXBlLFxuICAgIFNob3VsZFNob3dNb1BpcGUsXG4gICAgR2V0R3JvdXBJY29uUGlwZSxcbiAgICBIdW1hbml6ZUFwcE5hbWVQaXBlLFxuICAgIElmQWxsb3dlZERpcmVjdGl2ZSxcbiAgICBTaG9ydGVuVXNlck5hbWVQaXBlLFxuICAgIFVzZXJOYW1lSW5pdGlhbHNQaXBlLFxuICAgIEZvck9mRGlyZWN0aXZlLFxuICAgIExvYWRNb3JlQ29tcG9uZW50LFxuICAgIE1hcEZ1bmN0aW9uUGlwZSxcbiAgICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICBEYXRlUGlwZSxcbiAgICBOdW1iZXJQaXBlLFxuICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgRHJvcGRvd25EaXJlY3Rpb25EaXJlY3RpdmUsXG4gICAgVGV4dGFyZWFBdXRvcmVzaXplRGlyZWN0aXZlLFxuICAgIFRhYnNldEFyaWFEaXJlY3RpdmUsXG4gICAgT3BlcmF0aW9uUmVzdWx0Q29tcG9uZW50LFxuICAgIFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnQsXG4gICAgVmlydHVhbFNjcm9sbFdpbmRvd0RpcmVjdGl2ZSxcbiAgICBCeXRlc1BpcGUsXG4gICAgU2hvd0lmRmlsdGVyUGlwZSxcbiAgICBTa2lwTGlua0RpcmVjdGl2ZSxcbiAgICBNYXJrZG93blRvSHRtbFBpcGUsXG4gICAgTW9OYW1lUGlwZSxcbiAgICBHZW5lcmljRmlsZUljb25QaXBlLFxuICAgIFN0cmluZ2lmeU9iamVjdFBpcGVcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbTG9hZE1vcmVDb21wb25lbnQsIExvYWRpbmdDb21wb25lbnQsIFZpcnR1YWxTY3JvbGxlcldyYXBwZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vbk1vZHVsZSB7XG4gIHN0YXRpYyBwcm92aWRlcnMoKTogUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLkRhdGFNb2R1bGUucHJvdmlkZXJzKCksXG4gICAgICAvLyBUT0RPOiBtYXliZSB3ZSBjYW4gdGhpbmsgb2YgYSB3YXkgdG8gcmVtb3ZlIHRoaXMgQzhZX0FQUCBnbG9iYWxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgaG9va09wdGlvbnMoKHdpbmRvdyBhcyBhbnkpLkM4WV9BUFAgfHwge30pLFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVTZXJ2aWNlcyxcbiAgICAgICAgZGVwczogW1RyYW5zbGF0ZVNlcnZpY2UsIEFwcFN0YXRlU2VydmljZSwgVXNlclByZWZlcmVuY2VzU2VydmljZV0sXG4gICAgICAgIG11bHRpOiB0cnVlXG4gICAgICB9LFxuICAgICAgeyBwcm92aWRlOiBJQ09OX0xJU1QsIHVzZVZhbHVlOiBJQ09OUywgbXVsdGk6IGZhbHNlIH0sXG4gICAgICAuLi5JMThuTW9kdWxlLnByb3ZpZGVycygpLFxuICAgICAgSHVtYW5pemVQaXBlLFxuICAgICAgU2hvdWxkU2hvd01vUGlwZSxcbiAgICAgIEdldEdyb3VwSWNvblBpcGUsXG4gICAgICBIdW1hbml6ZUFwcE5hbWVQaXBlLFxuICAgICAgU2hvcnRlblVzZXJOYW1lUGlwZSxcbiAgICAgIE1hcEZ1bmN0aW9uUGlwZSxcbiAgICAgIERhdGVQaXBlLFxuICAgICAgQnl0ZXNQaXBlXG4gICAgXTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Q29tbW9uTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBDb21tb25Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IENvbW1vbk1vZHVsZS5wcm92aWRlcnMoKVxuICAgIH07XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc2V0VGhlbWUoJ2JzMycpO1xuICB9XG59XG4iXX0=