@alauda-fe/common
Version:
Alauda frontend team common codes.
285 lines • 41.9 kB
JavaScript
/**
* @packageDocumentation
* @module help-menu
*/
import { DialogService, DialogSize } from '@alauda/ui';
import { ChangeDetectionStrategy, Component, Inject, Input, } from '@angular/core';
import { forkJoin, finalize } from 'rxjs';
import { K8sApiService } from '../../../../api/public-api';
import { K8sUtilService, TOKEN_BASE_HREF, } from '../../../../core/public-api';
import { PUBLIC_NAMESPACE, parseVersion, PACKAGE_RUNTIME_VALUE, } from '../../../../public-api';
import * as i0 from "@angular/core";
import * as i1 from "@alauda/ui";
import * as i2 from "../../../../api/public-api";
import * as i3 from "../../../../core/public-api";
import * as i4 from "@angular/common";
import * as i5 from "../../../../widget/loading-mask/loading-mask.component";
import * as i6 from "../../../../effect-directive/e2e-attribute-binding.directive";
import * as i7 from "../../../../help-document/directive";
import * as i8 from "../../../../translate/translate.pipe";
const _c0 = ["*"];
const _c1 = a0 => ({ version: a0 });
function HelpMenuComponent_ng_template_2_aui_menu_item_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "aui-menu-item", 10);
i0.ɵɵelement(1, "aui-icon", 11);
i0.ɵɵelementStart(2, "span", 12);
i0.ɵɵtext(3);
i0.ɵɵpipe(4, "translate");
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("aclHelpDoc", ctx_r1.helpDocPath);
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 2, "help_doc"));
} }
function HelpMenuComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
const _r1 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "aui-menu");
i0.ɵɵtemplate(1, HelpMenuComponent_ng_template_2_aui_menu_item_1_Template, 5, 4, "aui-menu-item", 7);
i0.ɵɵelementStart(2, "aui-menu-item", 8);
i0.ɵɵlistener("click", function HelpMenuComponent_ng_template_2_Template_aui_menu_item_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); const platformInfo_r3 = i0.ɵɵreference(5); return i0.ɵɵresetView(ctx_r1.viewPlatformInfo(platformInfo_r3)); });
i0.ɵɵelement(3, "aui-icon", 9);
i0.ɵɵelementStart(4, "span");
i0.ɵɵtext(5);
i0.ɵɵpipe(6, "translate");
i0.ɵɵelementEnd()();
i0.ɵɵprojection(7);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", ctx_r1.helpDocPath);
i0.ɵɵadvance();
i0.ɵɵproperty("divide", true);
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 3, "about_platform"));
} }
function HelpMenuComponent_ng_template_4_span_9_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "span", 28);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "runtime_edition"), " ");
} }
function HelpMenuComponent_ng_template_4_ng_container_19_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 32);
i0.ɵɵelement(1, "img", 33);
i0.ɵɵelementStart(2, "div", 34)(3, "div", 35);
i0.ɵɵtext(4);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(5, "div", 36);
i0.ɵɵtext(6);
i0.ɵɵelementEnd()()();
} if (rf & 2) {
const componentVersion_r5 = ctx.$implicit;
i0.ɵɵadvance();
i0.ɵɵproperty("src", "icons/" + componentVersion_r5.name + ".svg", i0.ɵɵsanitizeUrl);
i0.ɵɵadvance(2);
i0.ɵɵproperty("title", componentVersion_r5.name);
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", componentVersion_r5.name, " ");
i0.ɵɵadvance();
i0.ɵɵproperty("title", componentVersion_r5.version);
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", componentVersion_r5.version, " ");
} }
function HelpMenuComponent_ng_template_4_ng_container_19_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 30);
i0.ɵɵtemplate(1, HelpMenuComponent_ng_template_4_ng_container_19_div_1_div_1_Template, 7, 5, "div", 31);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext(3);
i0.ɵɵadvance();
i0.ɵɵproperty("ngForOf", ctx_r1.componentVersionList);
} }
function HelpMenuComponent_ng_template_4_ng_container_19_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementContainerStart(0);
i0.ɵɵtemplate(1, HelpMenuComponent_ng_template_4_ng_container_19_div_1_Template, 2, 1, "div", 29);
i0.ɵɵelementContainerEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext(2);
const noComponent_r6 = i0.ɵɵreference(7);
i0.ɵɵadvance();
i0.ɵɵproperty("ngIf", ctx_r1.componentVersionList == null ? null : ctx_r1.componentVersionList.length)("ngIfElse", noComponent_r6);
} }
function HelpMenuComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
const _r4 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "aui-dialog-content", 13)(1, "div", 14)(2, "div", 15);
i0.ɵɵelement(3, "img", 16)(4, "span", 17);
i0.ɵɵelementStart(5, "div", 18)(6, "span", 19);
i0.ɵɵtext(7);
i0.ɵɵpipe(8, "translate");
i0.ɵɵelementEnd();
i0.ɵɵtemplate(9, HelpMenuComponent_ng_template_4_span_9_Template, 3, 3, "span", 20);
i0.ɵɵelementStart(10, "span", 21);
i0.ɵɵtext(11);
i0.ɵɵelementEnd()()();
i0.ɵɵelementStart(12, "div", 22);
i0.ɵɵtext(13);
i0.ɵɵpipe(14, "translate");
i0.ɵɵelementEnd()();
i0.ɵɵelementStart(15, "div", 23)(16, "div", 24);
i0.ɵɵtext(17);
i0.ɵɵpipe(18, "translate");
i0.ɵɵelementEnd();
i0.ɵɵtemplate(19, HelpMenuComponent_ng_template_4_ng_container_19_Template, 2, 2, "ng-container", 25);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(20, "div", 26)(21, "button", 27);
i0.ɵɵlistener("click", function HelpMenuComponent_ng_template_4_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
i0.ɵɵtext(22);
i0.ɵɵpipe(23, "translate");
i0.ɵɵelementEnd()()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
const loadingTmp_r7 = i0.ɵɵreference(9);
const platformStageVersion_r8 = i0.ɵɵreference(11);
i0.ɵɵadvance(7);
i0.ɵɵtextInterpolate(ctx_r1.platformName ? i0.ɵɵpipeBind1(8, 10, ctx_r1.platformName) : "ACP");
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx_r1.isRuntime);
i0.ɵɵadvance();
i0.ɵɵproperty("auiTooltip", platformStageVersion_r8)("auiTooltipContext", i0.ɵɵpureFunction1(18, _c1, ctx_r1.platformVersion == null ? null : ctx_r1.platformVersion.all));
i0.ɵɵadvance();
i0.ɵɵtextInterpolate1(" ", ctx_r1.platformVersion == null ? null : ctx_r1.platformVersion.main, "");
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 12, ctx_r1.platformTip));
i0.ɵɵadvance(4);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 14, "platform_related_open_source_component_info"), " ");
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", !ctx_r1.loading)("ngIfElse", loadingTmp_r7);
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 16, "close"), " ");
} }
function HelpMenuComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 37);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵadvance();
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "no_open_source_components"));
} }
function HelpMenuComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 38);
i0.ɵɵelement(1, "acl-loading-mask", 39);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵproperty("loading", ctx_r1.loading);
} }
function HelpMenuComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 40);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const version_r9 = ctx.version;
i0.ɵɵadvance();
i0.ɵɵtextInterpolate(version_r9);
} }
const CONFIG = {
type: 'configmaps',
apiVersion: 'v1',
};
export class HelpMenuComponent {
constructor(baseHref, dialogService, k8sApi, k8sUtil) {
this.baseHref = baseHref;
this.dialogService = dialogService;
this.k8sApi = k8sApi;
this.k8sUtil = k8sUtil;
this.loading = false;
this.isRuntime = false;
}
openHealthCheckLink() {
window.open('/console-platform/health-check', '_blank', 'noopener=yes,noreferrer=yes');
}
viewPlatformInfo(templateRef) {
this.componentVersionList = [];
this.loading = true;
forkJoin([
this.k8sApi.getGlobalResourceList({
definition: CONFIG,
namespace: PUBLIC_NAMESPACE,
queryParams: {
labelSelector: this.k8sUtil.normalizeType('component-version'),
},
}),
this.k8sApi.getGlobalResource({
definition: CONFIG,
name: 'platform',
namespace: PUBLIC_NAMESPACE,
}),
this.k8sApi.getGlobalResource({
definition: CONFIG,
name: 'platform-info',
namespaced: true,
}),
])
.pipe(finalize(() => (this.loading = false)))
.subscribe(([cms, config, platformInfo]) => {
for (const cm of cms.items) {
try {
const components = JSON.parse(cm.data.component);
this.componentVersionList = [
...this.componentVersionList,
...components,
];
}
catch { }
}
this.componentVersionList.sort((a, b) => a.index - b.index);
this.platformVersion = this.formatPlatformVersion(config.data.version);
this.platformName = {
en: platformInfo.data.platformNameEN,
zh: platformInfo.data.platformNameZH,
};
this.isRuntime = config.data.packageEdition === PACKAGE_RUNTIME_VALUE;
this.platformTip = {
zh: platformInfo.data.portalSubTitleZH,
en: platformInfo.data.portalSubTitleEN,
};
});
this.dialogRef = this.dialogService.open(templateRef, {
size: DialogSize.Big,
fitViewport: true,
});
}
close() {
this.dialogRef?.close();
}
formatPlatformVersion(version) {
if (!version) {
return {
main: '',
all: '',
};
}
const { major, minor } = parseVersion(version);
const main = `v${major}.${minor}`;
return { main, all: version };
}
static { this.ɵfac = function HelpMenuComponent_Factory(t) { return new (t || HelpMenuComponent)(i0.ɵɵdirectiveInject(TOKEN_BASE_HREF), i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.K8sApiService), i0.ɵɵdirectiveInject(i3.K8sUtilService)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HelpMenuComponent, selectors: [["acl-help-menu"]], inputs: { helpDocPath: "helpDocPath" }, ngContentSelectors: _c0, decls: 12, vars: 1, consts: [["menu", ""], ["platformInfo", ""], ["noComponent", ""], ["loadingTmp", ""], ["platformStageVersion", ""], ["auiDropdownClass", "acl-page-header__tooltip--small", 1, "menu", 3, "auiDropdown"], ["icon", "question_circle", 1, "menu__icon"], ["class", "acl-help-menu-item", "aclHelpDocTarget", "blank", 3, "aclHelpDoc", 4, "ngIf"], [1, "acl-help-menu-item", 3, "click", "divide"], ["icon", "info_circle"], ["aclHelpDocTarget", "blank", 1, "acl-help-menu-item", 3, "aclHelpDoc"], ["icon", "help_doc"], [1, "tw-ml-[4px]"], [1, "platform-about-dialog"], [1, "platform__version"], [1, "platform__version-title"], ["src", "/console/api/v1/cm/ui-logos/logo"], [1, "line"], [1, "platform__version-title__name-version"], [1, "platform__version-title__name"], ["style", "margin-right: 8px", 4, "ngIf"], ["auiTooltipPosition", "end", "auiTooltipType", "empty", 3, "auiTooltip", "auiTooltipContext"], [1, "platform__version-desc"], [1, "platform__component-info"], [1, "label"], [4, "ngIf", "ngIfElse"], [1, "platform__action"], ["aui-button", "", 3, "click"], [2, "margin-right", "8px"], ["class", "component-container", 4, "ngIf", "ngIfElse"], [1, "component-container"], ["class", "component-item", 4, "ngFor", "ngForOf"], [1, "component-item"], [3, "src"], [1, "component-item-info"], [1, "component-item-info__name", 3, "title"], [1, "component-item-info__version", 3, "title"], [1, "no-component"], [1, "loading"], [3, "loading"], [1, "platform__version-title__toolTip"]], template: function HelpMenuComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵprojectionDef();
i0.ɵɵelementStart(0, "div", 5);
i0.ɵɵelement(1, "aui-icon", 6);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(2, HelpMenuComponent_ng_template_2_Template, 8, 5, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(4, HelpMenuComponent_ng_template_4_Template, 24, 20, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(6, HelpMenuComponent_ng_template_6_Template, 3, 3, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(8, HelpMenuComponent_ng_template_8_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(10, HelpMenuComponent_ng_template_10_Template, 2, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
} if (rf & 2) {
const menu_r10 = i0.ɵɵreference(3);
i0.ɵɵproperty("auiDropdown", menu_r10);
} }, dependencies: [i4.NgForOf, i4.NgIf, i1.IconComponent, i1.DropdownDirective, i1.MenuComponent, i1.MenuItemComponent, i1.DialogContentComponent, i1.ButtonComponent, i5.LoadingMaskComponent, i6.E2eAttributeBindingDirective, i1.TooltipDirective, i7.HelpDocDirective, i8.TranslatePipe], styles: [".menu[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:2px;color:var(--acl-page-header-text-color);cursor:pointer}.menu[_ngcontent-%COMP%]:hover, .menu.isActive[_ngcontent-%COMP%]{color:#fff;background-color:rgb(var(--aui-color-primary))}.menu__icon[_ngcontent-%COMP%]{display:flex;align-items:center;font-size:16px}.menu__pointer[_ngcontent-%COMP%]{font-size:12px;margin-left:-2px}.platform__version[_ngcontent-%COMP%]{color:#fff;font-size:18px;padding:32px 24px;background-image:url(^images/platform_version_bg.svg)}.platform__version-title[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:14px}.platform__version-title__name[_ngcontent-%COMP%]{margin-right:8px;line-height:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.platform__version-title__name-version[_ngcontent-%COMP%]{font-size:24px;display:flex;flex-wrap:wrap;flex:1;overflow:hidden;align-items:baseline;line-height:1}.platform__version-title__toolTip[_ngcontent-%COMP%]{height:16px;color:rgb(var(--aui-color-primary));margin-bottom:10px;font-size:12px;line-height:14px;padding:1px 8px;background-color:#ffffffd9;border-radius:99px 95px 95px 99px}.platform__version-title[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:240px;width:42px;height:42px}.platform__version-title[_ngcontent-%COMP%] .line[_ngcontent-%COMP%]{height:32px;width:1px;opacity:.66;background-color:rgb(var(--aui-color-n-10));margin:0 12px}.platform__component-info[_ngcontent-%COMP%]{color:rgb(var(--aui-color-n-4));padding:20px 20px 0}.platform__component-info[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:14px;margin-bottom:12px}.platform__component-info[_ngcontent-%COMP%] .component-container[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,calc((100% - 34px) / 3));grid-gap:16px;max-height:312px;overflow-y:auto}.platform__component-info[_ngcontent-%COMP%] .component-item[_ngcontent-%COMP%]{display:flex;align-items:center;padding:16px;border-radius:2px;background-color:rgb(var(--aui-color-n-9))}.platform__component-info[_ngcontent-%COMP%] .component-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:36px;height:36px}.platform__component-info[_ngcontent-%COMP%] .component-item-info[_ngcontent-%COMP%]{margin-left:12px;color:rgb(var(--aui-color-n-1));overflow:hidden}.platform__component-info[_ngcontent-%COMP%] .component-item-info__name[_ngcontent-%COMP%], .platform__component-info[_ngcontent-%COMP%] .component-item-info__version[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform__component-info[_ngcontent-%COMP%] .component-item-info__name[_ngcontent-%COMP%]{font-size:var(--aui-font-size-xl);font-weight:var(--aui-font-weight-bolder);line-height:var(--aui-line-height-xl);margin-bottom:2px}.platform__component-info[_ngcontent-%COMP%] .component-item-info__version[_ngcontent-%COMP%]{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.platform__action[_ngcontent-%COMP%]{padding:20px;display:flex;justify-content:flex-end}.no-component[_ngcontent-%COMP%]{height:60px;border:dashed 1px rgb(var(--aui-color-n-7));background-color:rgb(var(--aui-color-n-10));display:flex;align-items:center;justify-content:center}.loading[_ngcontent-%COMP%]{height:312px;display:flex;justify-content:center;align-items:center} .acl-page-header__tooltip--small .aui-menu-item:hover{color:rgb(var(--aui-color-primary))} .acl-help-menu-item:not(:hover) .aui-icon{color:rgb(var(--aui-color-n-2))}"], changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HelpMenuComponent, [{
type: Component,
args: [{ selector: 'acl-help-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"menu\"\n [auiDropdown]=\"menu\"\n auiDropdownClass=\"acl-page-header__tooltip--small\"\n>\n <aui-icon\n icon=\"question_circle\"\n class=\"menu__icon\"\n ></aui-icon>\n</div>\n\n<ng-template #menu>\n <aui-menu>\n <aui-menu-item\n *ngIf=\"helpDocPath\"\n class=\"acl-help-menu-item\"\n [aclHelpDoc]=\"helpDocPath\"\n aclHelpDocTarget=\"blank\"\n >\n <aui-icon icon=\"help_doc\"></aui-icon>\n <span class=\"tw-ml-[4px]\">{{ 'help_doc' | translate }}</span>\n </aui-menu-item>\n\n <aui-menu-item\n class=\"acl-help-menu-item\"\n [divide]=\"true\"\n (click)=\"viewPlatformInfo(platformInfo)\"\n >\n <aui-icon icon=\"info_circle\"></aui-icon>\n <span>{{ 'about_platform' | translate }}</span>\n </aui-menu-item>\n\n <ng-content></ng-content>\n </aui-menu>\n</ng-template>\n\n<ng-template #platformInfo>\n <aui-dialog-content class=\"platform-about-dialog\">\n <div class=\"platform__version\">\n <div class=\"platform__version-title\">\n <img src=\"/console/api/v1/cm/ui-logos/logo\" />\n <span class=\"line\"></span>\n <div class=\"platform__version-title__name-version\">\n <span class=\"platform__version-title__name\">{{\n platformName ? (platformName | translate) : 'ACP'\n }}</span>\n <span\n style=\"margin-right: 8px\"\n *ngIf=\"isRuntime\"\n >\n {{ 'runtime_edition' | translate }}\n </span>\n <span\n [auiTooltip]=\"platformStageVersion\"\n [auiTooltipContext]=\"{ version: platformVersion?.all }\"\n auiTooltipPosition=\"end\"\n auiTooltipType=\"empty\"\n >\n {{ platformVersion?.main }}</span\n >\n </div>\n </div>\n <div class=\"platform__version-desc\">{{ platformTip | translate }}</div>\n </div>\n <div class=\"platform__component-info\">\n <div class=\"label\">\n {{ 'platform_related_open_source_component_info' | translate }}\n </div>\n <ng-container *ngIf=\"!loading; else loadingTmp\">\n <div\n class=\"component-container\"\n *ngIf=\"componentVersionList?.length; else noComponent\"\n >\n <div\n class=\"component-item\"\n *ngFor=\"let componentVersion of componentVersionList\"\n >\n <img [src]=\"'icons/' + componentVersion.name + '.svg'\" />\n <div class=\"component-item-info\">\n <div\n class=\"component-item-info__name\"\n [title]=\"componentVersion.name\"\n >\n {{ componentVersion.name }}\n </div>\n <div\n class=\"component-item-info__version\"\n [title]=\"componentVersion.version\"\n >\n {{ componentVersion.version }}\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"platform__action\">\n <button\n aui-button\n (click)=\"close()\"\n >\n {{ 'close' | translate }}\n </button>\n </div>\n </aui-dialog-content>\n</ng-template>\n\n<ng-template #noComponent>\n <div class=\"no-component\">{{ 'no_open_source_components' | translate }}</div>\n</ng-template>\n\n<ng-template #loadingTmp>\n <div class=\"loading\">\n <acl-loading-mask [loading]=\"loading\"></acl-loading-mask>\n </div>\n</ng-template>\n\n<ng-template\n #platformStageVersion\n let-version=\"version\"\n>\n <div class=\"platform__version-title__toolTip\">{{ version }}</div>\n</ng-template>\n", styles: [".menu{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:2px;color:var(--acl-page-header-text-color);cursor:pointer}.menu:hover,.menu.isActive{color:#fff;background-color:rgb(var(--aui-color-primary))}.menu__icon{display:flex;align-items:center;font-size:16px}.menu__pointer{font-size:12px;margin-left:-2px}.platform__version{color:#fff;font-size:18px;padding:32px 24px;background-image:url(^images/platform_version_bg.svg)}.platform__version-title{display:flex;align-items:center;margin-bottom:14px}.platform__version-title__name{margin-right:8px;line-height:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.platform__version-title__name-version{font-size:24px;display:flex;flex-wrap:wrap;flex:1;overflow:hidden;align-items:baseline;line-height:1}.platform__version-title__toolTip{height:16px;color:rgb(var(--aui-color-primary));margin-bottom:10px;font-size:12px;line-height:14px;padding:1px 8px;background-color:#ffffffd9;border-radius:99px 95px 95px 99px}.platform__version-title img{max-width:240px;width:42px;height:42px}.platform__version-title .line{height:32px;width:1px;opacity:.66;background-color:rgb(var(--aui-color-n-10));margin:0 12px}.platform__component-info{color:rgb(var(--aui-color-n-4));padding:20px 20px 0}.platform__component-info .label{font-size:14px;margin-bottom:12px}.platform__component-info .component-container{display:grid;grid-template-columns:repeat(3,calc((100% - 34px) / 3));grid-gap:16px;max-height:312px;overflow-y:auto}.platform__component-info .component-item{display:flex;align-items:center;padding:16px;border-radius:2px;background-color:rgb(var(--aui-color-n-9))}.platform__component-info .component-item img{width:36px;height:36px}.platform__component-info .component-item-info{margin-left:12px;color:rgb(var(--aui-color-n-1));overflow:hidden}.platform__component-info .component-item-info__name,.platform__component-info .component-item-info__version{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform__component-info .component-item-info__name{font-size:var(--aui-font-size-xl);font-weight:var(--aui-font-weight-bolder);line-height:var(--aui-line-height-xl);margin-bottom:2px}.platform__component-info .component-item-info__version{font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}.platform__action{padding:20px;display:flex;justify-content:flex-end}.no-component{height:60px;border:dashed 1px rgb(var(--aui-color-n-7));background-color:rgb(var(--aui-color-n-10));display:flex;align-items:center;justify-content:center}.loading{height:312px;display:flex;justify-content:center;align-items:center}::ng-deep .acl-page-header__tooltip--small .aui-menu-item:hover{color:rgb(var(--aui-color-primary))}::ng-deep .acl-help-menu-item:not(:hover) .aui-icon{color:rgb(var(--aui-color-n-2))}\n"] }]
}], () => [{ type: undefined, decorators: [{
type: Inject,
args: [TOKEN_BASE_HREF]
}] }, { type: i1.DialogService }, { type: i2.K8sApiService }, { type: i3.K8sUtilService }], { helpDocPath: [{
type: Input
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HelpMenuComponent, { className: "HelpMenuComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvaGVscC1tZW51L2NvbXBvbmVudC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9oZWxwLW1lbnUvY29tcG9uZW50L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFhLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGNBQWMsRUFFZCxlQUFlLEdBQ2hCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixZQUFZLEVBQ1oscUJBQXFCLEdBQ3RCLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7SUNiNUIseUNBS0M7SUFDQywrQkFBcUM7SUFDckMsZ0NBQTBCO0lBQUEsWUFBNEI7O0lBQ3hELEFBRHdELGlCQUFPLEVBQy9DOzs7SUFMZCwrQ0FBMEI7SUFJQSxlQUE0QjtJQUE1QixzREFBNEI7Ozs7SUFSMUQsZ0NBQVU7SUFDUixvR0FLQztJQUtELHdDQUlDO0lBREMsdU9BQVMsd0NBQThCLEtBQUM7SUFFeEMsOEJBQXdDO0lBQ3hDLDRCQUFNO0lBQUEsWUFBa0M7O0lBQzFDLEFBRDBDLGlCQUFPLEVBQ2pDO0lBRWhCLGtCQUF5QjtJ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L0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7UUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztrRkEvRlUsaUJBQWlCLHVCQWFsQixlQUFlO29FQWJkLGlCQUFpQjs7WUN0RTlCLDhCQUlDO1lBQ0MsOEJBR1k7WUFDZCxpQkFBTTtZQTRHTixBQU5BLEFBSkEsQUF2RUEsQUF6QkEsbUhBQW1CLHdHQXlCUSxzR0F1RUQsc0dBSUQsd0dBU3hCOzs7WUF0SEMsc0NBQW9COzs7aUZEb0VULGlCQUFpQjtjQU43QixTQUFTOzJCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTs7c0JBZTVDLE1BQU07dUJBQUMsZUFBZTswR0FYekIsV0FBVztrQkFEVixLQUFLOztrRkFESyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBoZWxwLW1lbnVcbiAqL1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYsIERpYWxvZ1NlcnZpY2UsIERpYWxvZ1NpemUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBLOHNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgVE9LRU5fQkFTRV9IUkVGLFxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlS2V5LFxuICBQVUJMSUNfTkFNRVNQQUNFLFxuICBwYXJzZVZlcnNpb24sXG4gIFBBQ0tBR0VfUlVOVElNRV9WQUxVRSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vcHVibGljLWFwaSc7XG5cbmludGVyZmFjZSBDb21wb25lbnRWZXJzaW9uIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDb21wb25lbnRDb25maWdNYXAgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2Uge1xuICBkYXRhPzoge1xuICAgIGNvbXBvbmVudDogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgUGxhdGZvcm1Db25maWdNYXAgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2Uge1xuICBkYXRhPzoge1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBwYWNrYWdlRWRpdGlvbjogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgUGxhdGZvcm1JbmZvIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlIHtcbiAgZGF0YT86IHtcbiAgICBwbGF0Zm9ybU5hbWU6IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBQbGF0Zm9ybVZlcnNpb24ge1xuICBtYWluOiBzdHJpbmc7XG4gIGFsbDogc3RyaW5nO1xufVxuXG5jb25zdCBDT05GSUcgPSB7XG4gIHR5cGU6ICdjb25maWdtYXBzJyxcbiAgYXBpVmVyc2lvbjogJ3YxJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1oZWxwLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgSGVscE1lbnVDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBoZWxwRG9jUGF0aDogc3RyaW5nO1xuXG4gIGRpYWxvZ1JlZjogRGlhbG9nUmVmO1xuICBjb21wb25lbnRWZXJzaW9uTGlzdDogQ29tcG9uZW50VmVyc2lvbltdO1xuICBwbGF0Zm9ybVZlcnNpb246IFBsYXRmb3JtVmVyc2lvbjtcbiAgcGxhdGZvcm1UaXA6IFRyYW5zbGF0ZUtleTtcbiAgcGxhdGZvcm1OYW1lOiBUcmFuc2xhdGVLZXk7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgaXNSdW50aW1lID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUT0tFTl9CQVNFX0hSRUYpXG4gICAgcmVhZG9ubHkgYmFzZUhyZWY6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgKSB7fVxuXG4gIG9wZW5IZWFsdGhDaGVja0xpbmsoKSB7XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICAnL2NvbnNvbGUtcGxhdGZvcm0vaGVhbHRoLWNoZWNrJyxcbiAgICAgICdfYmxhbmsnLFxuICAgICAgJ25vb3BlbmVyPXllcyxub3JlZmVycmVyPXllcycsXG4gICAgKTtcbiAgfVxuXG4gIHZpZXdQbGF0Zm9ybUluZm8odGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLmNvbXBvbmVudFZlcnNpb25MaXN0ID0gW107XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBmb3JrSm9pbihbXG4gICAgICB0aGlzLms4c0FwaS5nZXRHbG9iYWxSZXNvdXJjZUxpc3Q8Q29tcG9uZW50Q29uZmlnTWFwPih7XG4gICAgICAgIGRlZmluaXRpb246IENPTkZJRyxcbiAgICAgICAgbmFtZXNwYWNlOiBQVUJMSUNfTkFNRVNQQUNFLFxuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIGxhYmVsU2VsZWN0b3I6IHRoaXMuazhzVXRpbC5ub3JtYWxpemVUeXBlKCdjb21wb25lbnQtdmVyc2lvbicpLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICB0aGlzLms4c0FwaS5nZXRHbG9iYWxSZXNvdXJjZTxQbGF0Zm9ybUNvbmZpZ01hcD4oe1xuICAgICAgICBkZWZpbml0aW9uOiBDT05GSUcsXG4gICAgICAgIG5hbWU6ICdwbGF0Zm9ybScsXG4gICAgICAgIG5hbWVzcGFjZTogUFVCTElDX05BTUVTUEFDRSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy5rOHNBcGkuZ2V0R2xvYmFsUmVzb3VyY2U8UGxhdGZvcm1JbmZvPih7XG4gICAgICAgIGRlZmluaXRpb246IENPTkZJRyxcbiAgICAgICAgbmFtZTogJ3BsYXRmb3JtLWluZm8nLFxuICAgICAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgICAgfSksXG4gICAgXSlcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZSgoW2NtcywgY29uZmlnLCBwbGF0Zm9ybUluZm9dKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY20gb2YgY21zLml0ZW1zKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHM6IENvbXBvbmVudFZlcnNpb25bXSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgIGNtLmRhdGEuY29tcG9uZW50LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50VmVyc2lvbkxpc3QgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuY29tcG9uZW50VmVyc2lvbkxpc3QsXG4gICAgICAgICAgICAgIC4uLmNvbXBvbmVudHMsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvbmVudFZlcnNpb25MaXN0LnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICAgICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSB0aGlzLmZvcm1hdFBsYXRmb3JtVmVyc2lvbihjb25maWcuZGF0YS52ZXJzaW9uKTtcbiAgICAgICAgdGhpcy5wbGF0Zm9ybU5hbWUgPSB7XG4gICAgICAgICAgZW46IHBsYXRmb3JtSW5mby5kYXRhLnBsYXRmb3JtTmFtZUVOLFxuICAgICAgICAgIHpoOiBwbGF0Zm9ybUluZm8uZGF0YS5wbGF0Zm9ybU5hbWVaSCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5pc1J1bnRpbWUgPSBjb25maWcuZGF0YS5wYWNrYWdlRWRpdGlvbiA9PT0gUEFDS0FHRV9SVU5USU1FX1ZBTFVFO1xuICAgICAgICB0aGlzLnBsYXRmb3JtVGlwID0ge1xuICAgICAgICAgIHpoOiBwbGF0Zm9ybUluZm8uZGF0YS5wb3J0YWxTdWJUaXRsZVpILFxuICAgICAgICAgIGVuOiBwbGF0Zm9ybUluZm8uZGF0YS5wb3J0YWxTdWJUaXRsZUVOLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih0ZW1wbGF0ZVJlZiwge1xuICAgICAgc2l6ZTogRGlhbG9nU2l6ZS5CaWcsXG4gICAgICBmaXRWaWV3cG9ydDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xuICB9XG5cbiAgZm9ybWF0UGxhdGZvcm1WZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIGlmICghdmVyc2lvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWFpbjogJycsXG4gICAgICAgIGFsbDogJycsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IG1ham9yLCBtaW5vciB9ID0gcGFyc2VWZXJzaW9uKHZlcnNpb24pO1xuICAgIGNvbnN0IG1haW4gPSBgdiR7bWFqb3J9LiR7bWlub3J9YDtcbiAgICByZXR1cm4geyBtYWluLCBhbGw6IHZlcnNpb24gfTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm1lbnVcIlxuICBbYXVpRHJvcGRvd25dPVwibWVudVwiXG4gIGF1aURyb3Bkb3duQ2xhc3M9XCJhY2wtcGFnZS1oZWFkZXJfX3Rvb2x0aXAtLXNtYWxsXCJcbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cInF1ZXN0aW9uX2NpcmNsZVwiXG4gICAgY2xhc3M9XCJtZW51X19pY29uXCJcbiAgPjwvYXVpLWljb24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZW51PlxuICA8YXVpLW1lbnU+XG4gICAgPGF1aS1tZW51LWl0ZW1cbiAgICAgICpuZ0lmPVwiaGVscERvY1BhdGhcIlxuICAgICAgY2xhc3M9XCJhY2wtaGVscC1tZW51LWl0ZW1cIlxuICAgICAgW2FjbEhlbHBEb2NdPVwiaGVscERvY1BhdGhcIlxuICAgICAgYWNsSGVscERvY1RhcmdldD1cImJsYW5rXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cImhlbHBfZG9jXCI+PC9hdWktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidHctbWwtWzRweF1cIj57eyAnaGVscF9kb2MnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvYXVpLW1lbnUtaXRlbT5cblxuICAgIDxhdWktbWVudS1pdGVtXG4gICAgICBjbGFzcz1cImFjbC1oZWxwLW1lbnUtaXRlbVwiXG4gICAgICBbZGl2aWRlXT1cInRydWVcIlxuICAgICAgKGNsaWNrKT1cInZpZXdQbGF0Zm9ybUluZm8ocGxhdGZvcm1JbmZvKVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJpbmZvX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgICA8c3Bhbj57eyAnYWJvdXRfcGxhdGZvcm0nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvYXVpLW1lbnUtaXRlbT5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9hdWktbWVudT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGxhdGZvcm1JbmZvPlxuICA8YXVpLWRpYWxvZy1jb250ZW50IGNsYXNzPVwicGxhdGZvcm0tYWJvdXQtZGlhbG9nXCI+XG4gICAgPGRpdiBjbGFzcz1cInBsYXRmb3JtX192ZXJzaW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGxhdGZvcm1fX3ZlcnNpb24tdGl0bGVcIj5cbiAgICAgICAgPGltZyBzcmM9XCIvY29uc29sZS9hcGkvdjEvY20vdWktbG9nb3MvbG9nb1wiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGluZVwiPjwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBsYXRmb3JtX192ZXJzaW9uLXRpdGxlX19uYW1lLXZlcnNpb25cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsYXRmb3JtX192ZXJzaW9uLXRpdGxlX19uYW1lXCI+e3tcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZSA/IChwbGF0Zm9ybU5hbWUgfCB0cmFuc2xhdGUpIDogJ0FDUCdcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweFwiXG4gICAgICAgICAgICAqbmdJZj1cImlzUnVudGltZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3J1bnRpbWVfZWRpdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFthdWlUb29sdGlwXT1cInBsYXRmb3JtU3RhZ2VWZXJzaW9uXCJcbiAgICAgICAgICAgIFthdWlUb29sdGlwQ29udGV4dF09XCJ7IHZlcnNpb246IHBsYXRmb3JtVmVyc2lvbj8uYWxsIH1cIlxuICAgICAgICAgICAgYXVpVG9vbHRpcFBvc2l0aW9uPVwiZW5kXCJcbiAgICAgICAgICAgIGF1aVRvb2x0aXBUeXBlPVwiZW1wdHlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHBsYXRmb3JtVmVyc2lvbj8ubWFpbiB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwbGF0Zm9ybV9fdmVyc2lvbi1kZXNjXCI+e3sgcGxhdGZvcm1UaXAgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGxhdGZvcm1fX2NvbXBvbmVudC1pbmZvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAge3sgJ3BsYXRmb3JtX3JlbGF0ZWRfb3Blbl9zb3VyY2VfY29tcG9uZW50X2luZm8nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkaW5nVG1wXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNvbXBvbmVudC1jb250YWluZXJcIlxuICAgICAgICAgICpuZ0lmPVwiY29tcG9uZW50VmVyc2lvbkxpc3Q/Lmxlbmd0aDsgZWxzZSBub0NvbXBvbmVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbXBvbmVudC1pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wb25lbnRWZXJzaW9uIG9mIGNvbXBvbmVudFZlcnNpb25MaXN0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiJ2ljb25zLycgKyBjb21wb25lbnRWZXJzaW9uLm5hbWUgKyAnLnN2ZydcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvbmVudC1pdGVtLWluZm9cIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcG9uZW50LWl0ZW0taW5mb19fbmFtZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImNvbXBvbmVudFZlcnNpb24ubmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb21wb25lbnRWZXJzaW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBvbmVudC1pdGVtLWluZm9fX3ZlcnNpb25cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb21wb25lbnRWZXJzaW9uLnZlcnNpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY29tcG9uZW50VmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBsYXRmb3JtX19hY3Rpb25cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXVpLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdjbG9zZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2F1aS1kaWFsb2ctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db21wb25lbnQ+XG4gIDxkaXYgY2xhc3M9XCJuby1jb21wb25lbnRcIj57eyAnbm9fb3Blbl9zb3VyY2VfY29tcG9uZW50cycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RtcD5cbiAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cbiAgICA8YWNsLWxvYWRpbmctbWFzayBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9hY2wtbG9hZGluZy1tYXNrPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjcGxhdGZvcm1TdGFnZVZlcnNpb25cbiAgbGV0LXZlcnNpb249XCJ2ZXJzaW9uXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBsYXRmb3JtX192ZXJzaW9uLXRpdGxlX190b29sVGlwXCI+e3sgdmVyc2lvbiB9fTwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==