UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

132 lines 17.8 kB
import { __decorate, __metadata } from "tslib"; import { CodeEditorModule } from '@alauda/code-editor'; import { CARD_MODULE, CHECKBOX_MODULE } from '@alauda/ui'; import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { BehaviorSubject, combineLatest, Observable, map, distinctUntilChanged, } from 'rxjs'; import { YamlUtilService, ObservableInput, } from '../../core/public-api'; import { TranslateModule } from '../../translate/translate.module'; import { viewActions, yamlReadOptions } from '../code-editor-configs'; import * as i0 from "@angular/core"; import * as i1 from "../../core/public-api"; import * as i2 from "@alauda/ui"; import * as i3 from "@angular/forms"; import * as i4 from "@alauda/code-editor"; import * as i5 from "../../translate/translate.pipe"; function ResourceYamlDisplayComponent_aui_card_0_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function ResourceYamlDisplayComponent_aui_card_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-card"); i0.ɵɵtemplate(1, ResourceYamlDisplayComponent_aui_card_0_ng_container_1_Template, 1, 0, "ng-container", 2); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵnextContext(); const content_r1 = i0.ɵɵreference(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", content_r1); } } function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_3_Template(rf, ctx) { if (rf & 1) { const _r2 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "aui-checkbox", 7); i0.ɵɵpipe(1, "async"); i0.ɵɵlistener("ngModelChange", function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_3_Template_aui_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.conciseChange($event)); }); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵproperty("ngModel", i0.ɵɵpipeBind1(1, 2, ctx_r2.concise$$)); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "preview_concise_yaml"), " "); } } function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_4_Template(rf, ctx) { if (rf & 1) { const _r4 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "aui-checkbox", 8); i0.ɵɵpipe(1, "async"); i0.ɵɵpipe(2, "async"); i0.ɵɵlistener("ngModelChange", function ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_4_Template_aui_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.reduce$$.next($event)); }); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵproperty("hidden", i0.ɵɵpipeBind1(1, 3, ctx_r2.concise$$))("ngModel", i0.ɵɵpipeBind1(2, 5, ctx_r2.reduce$$)); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, "hide_manage_fields_field"), " "); } } function ResourceYamlDisplayComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-code-editor", 3); i0.ɵɵpipe(1, "async"); i0.ɵɵelementContainerStart(2, 4); i0.ɵɵtemplate(3, ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_3_Template, 4, 6, "aui-checkbox", 5)(4, ResourceYamlDisplayComponent_ng_template_1_aui_checkbox_4_Template, 5, 9, "aui-checkbox", 6); i0.ɵɵelementContainerEnd(); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵproperty("ngModel", i0.ɵɵpipeBind1(1, 5, ctx_r2.yaml$))("options", ctx_r2.editorOptions)("actionsConfig", ctx_r2.viewActions); i0.ɵɵadvance(3); i0.ɵɵproperty("ngIf", ctx_r2.conciseEnable); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r2.manageFieldActionEnable); } } export class ResourceYamlDisplayComponent { constructor(yamlUtil) { this.yamlUtil = yamlUtil; this.concise$$ = new BehaviorSubject(false); this.reduce$$ = new BehaviorSubject(true); this.hasWrapper = true; this.conciseEnable = true; this.manageFieldActionEnable = true; this.yaml$ = combineLatest([ this.resource$, this.concise$$, this.reduce$$.pipe(distinctUntilChanged()), ]).pipe(map(([resource, concise, reduce]) => this.yamlUtil.generateFilteredYamlResource(resource, concise, reduce))); this.editorOptions = yamlReadOptions; this.viewActions = viewActions; } conciseChange(value) { this.concise$$.next(value); if (value) { this.reduce$$.next(true); } } static { this.ɵfac = function ResourceYamlDisplayComponent_Factory(t) { return new (t || ResourceYamlDisplayComponent)(i0.ɵɵdirectiveInject(i1.YamlUtilService)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceYamlDisplayComponent, selectors: [["acl-resource-yaml-display"]], inputs: { hasWrapper: "hasWrapper", conciseEnable: "conciseEnable", manageFieldActionEnable: "manageFieldActionEnable", resource: "resource" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 2, consts: [["content", ""], [4, "ngIf", "ngIfElse"], [4, "ngTemplateOutlet"], ["name", "yaml", 3, "ngModel", "options", "actionsConfig"], ["auiCodeEditorToolbarLeft", ""], ["class", "aui-code-editor-toolbar__control-button", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["class", "aui-code-editor-toolbar__control-button", 3, "hidden", "ngModel", "ngModelChange", 4, "ngIf"], [1, "aui-code-editor-toolbar__control-button", 3, "ngModelChange", "ngModel"], [1, "aui-code-editor-toolbar__control-button", 3, "ngModelChange", "hidden", "ngModel"]], template: function ResourceYamlDisplayComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, ResourceYamlDisplayComponent_aui_card_0_Template, 2, 1, "aui-card", 1)(1, ResourceYamlDisplayComponent_ng_template_1_Template, 5, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor); } if (rf & 2) { const content_r1 = i0.ɵɵreference(2); i0.ɵɵproperty("ngIf", ctx.hasWrapper)("ngIfElse", content_r1); } }, dependencies: [i2.CardComponent, NgIf, FormsModule, i3.NgControlStatus, i3.NgModel, i2.CheckboxComponent, CodeEditorModule, i4.CodeEditorComponent, TranslateModule, i5.TranslatePipe, AsyncPipe, NgTemplateOutlet], styles: ["[_nghost-%COMP%]:not(.dialog-content){display:block;height:calc(100vh - (var(--acl-page-header-height) + 44px) - 147px)}[_nghost-%COMP%]:not(.dialog-content) .aui-code-editor{min-height:100%}[_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%]{height:100%}[_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%] .aui-card__content[_ngcontent-%COMP%], [_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%] aui-code-editor[_ngcontent-%COMP%], [_nghost-%COMP%]:not(.dialog-content) > .aui-card[_ngcontent-%COMP%] .aui-code-editor[_ngcontent-%COMP%]{height:100%;min-height:100%}[_nghost-%COMP%]{display:block}[_nghost-%COMP%] aui-card, [_nghost-%COMP%] .aui-card, [_nghost-%COMP%] .aui-card__content{height:100%}[_nghost-%COMP%] .aui-checkbox{margin-right:0}[_nghost-%COMP%] aui-code-editor[_ngcontent-%COMP%]{height:100%}"], changeDetection: 0 }); } } __decorate([ ObservableInput(), __metadata("design:type", Observable) ], ResourceYamlDisplayComponent.prototype, "resource$", void 0); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceYamlDisplayComponent, [{ type: Component, args: [{ selector: 'acl-resource-yaml-display', preserveWhitespaces: false, standalone: true, imports: [ CARD_MODULE, NgIf, FormsModule, CHECKBOX_MODULE, CodeEditorModule, TranslateModule, AsyncPipe, NgTemplateOutlet, ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<aui-card *ngIf=\"hasWrapper; else content\">\n <ng-container *ngTemplateOutlet=\"content\" />\n</aui-card>\n<ng-template #content>\n <aui-code-editor\n name=\"yaml\"\n [ngModel]=\"yaml$ | async\"\n [options]=\"editorOptions\"\n [actionsConfig]=\"viewActions\"\n >\n <ng-container auiCodeEditorToolbarLeft>\n <aui-checkbox\n *ngIf=\"conciseEnable\"\n class=\"aui-code-editor-toolbar__control-button\"\n [ngModel]=\"concise$$ | async\"\n (ngModelChange)=\"conciseChange($event)\"\n >\n {{ 'preview_concise_yaml' | translate }}\n </aui-checkbox>\n <aui-checkbox\n *ngIf=\"manageFieldActionEnable\"\n [hidden]=\"concise$$ | async\"\n class=\"aui-code-editor-toolbar__control-button\"\n [ngModel]=\"reduce$$ | async\"\n (ngModelChange)=\"reduce$$.next($event)\"\n >\n {{ 'hide_manage_fields_field' | translate }}\n </aui-checkbox>\n </ng-container>\n </aui-code-editor>\n</ng-template>\n", styles: [":host(:not(.dialog-content)){display:block;height:calc(100vh - (var(--acl-page-header-height) + 44px) - 147px)}:host(:not(.dialog-content)) ::ng-deep .aui-code-editor{min-height:100%}:host(:not(.dialog-content))>.aui-card{height:100%}:host(:not(.dialog-content))>.aui-card .aui-card__content,:host(:not(.dialog-content))>.aui-card aui-code-editor,:host(:not(.dialog-content))>.aui-card .aui-code-editor{height:100%;min-height:100%}:host{display:block}:host ::ng-deep aui-card,:host ::ng-deep .aui-card,:host ::ng-deep .aui-card__content{height:100%}:host ::ng-deep .aui-checkbox{margin-right:0}:host aui-code-editor{height:100%}\n"] }] }], () => [{ type: i1.YamlUtilService }], { hasWrapper: [{ type: Input }], conciseEnable: [{ type: Input }], manageFieldActionEnable: [{ type: Input }], resource: [{ type: Input }], resource$: [] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceYamlDisplayComponent, { className: "ResourceYamlDisplayComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvZGUvcmVzb3VyY2UteWFtbC1kaXNwbGF5L2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3Jlc291cmNlLXlhbWwtZGlzcGxheS90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixVQUFVLEVBQ1YsR0FBRyxFQUNILG9CQUFvQixHQUNyQixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFFTCxlQUFlLEVBRWYsZUFBZSxHQUNoQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztJQ25CcEUsd0JBQTRDOzs7SUFEOUMsZ0NBQTJDO0lBQ3pDLDBHQUE0QztJQUM5QyxpQkFBVzs7OztJQURNLGNBQXlCO0lBQXpCLDZDQUF5Qjs7OztJQVVwQyx1Q0FLQzs7SUFEQyw0T0FBaUIsNEJBQXFCLEtBQUM7SUFFdkMsWUFDRjs7SUFBQSxpQkFBZTs7O0lBSmIsZ0VBQTZCO0lBRzdCLGVBQ0Y7SUFERSw2RUFDRjs7OztJQUNBLHVDQU1DOzs7SUFEQyw0T0FBaUIsNEJBQXFCLEtBQUM7SUFFdkMsWUFDRjs7SUFBQSxpQkFBZTs7O0lBSmIsQUFGQSwrREFBNEIsa0RBRUE7SUFHNUIsZUFDRjtJQURFLGlGQUNGOzs7SUF2QkosMENBS0M7O0lBQ0MsZ0NBQXVDO0lBU3JDLEFBUkEsNkdBS0MsZ0dBU0E7O0lBSUwsaUJBQWtCOzs7SUFyQmhCLEFBREEsQUFEQSw0REFBeUIsaUNBQ0EscUNBQ0k7SUFJeEIsZUFBbUI7SUFBbkIsMkNBQW1CO0lBUW5CLGNBQTZCO0lBQTdCLHFEQUE2Qjs7QURvQnRDLE1BQU0sT0FBTyw0QkFBNEI7SUFvQnZDLFlBQTZCLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBbkJ0RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBR3JDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFHbEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFHckIsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBVS9CLFVBQUssR0FBRyxhQUFhLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDM0MsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQ3RFLENBQ0YsQ0FBQztRQUVGLGtCQUFhLEdBQUcsZUFBZSxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBYitCLENBQUM7SUFlMUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOzZGQXhDVSw0QkFBNEI7b0VBQTVCLDRCQUE0QjtZQ3JDekMsQUFIQSx1RkFBMkMsaUhBR3JCOzs7WUFITyxBQUFsQixxQ0FBa0Isd0JBQVk7OENEOEJyQyxJQUFJO1lBQ0osV0FBVyx3REFFWCxnQkFBZ0IsMEJBQ2hCLGVBQWUsb0JBQ2YsU0FBUztZQUNULGdCQUFnQjs7QUFzQlQ7SUFEUixlQUFlLEVBQUU7OEJBQ0csVUFBVTsrREFBZTtpRkFsQm5DLDRCQUE0QjtjQWxCeEMsU0FBUzsyQkFDRSwyQkFBMkIsdUJBR2hCLEtBQUssY0FDZCxJQUFJLFdBQ1A7b0JBQ1AsV0FBVztvQkFDWCxJQUFJO29CQUNKLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YsU0FBUztvQkFDVCxnQkFBZ0I7aUJBQ2pCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO2dEQVEvQyxVQUFVO2tCQURULEtBQUs7WUFJTixhQUFhO2tCQURaLEtBQUs7WUFJTix1QkFBdUI7a0JBRHRCLEtBQUs7WUFJTixRQUFRO2tCQURQLEtBQUs7WUFJRyxTQUFTO2tGQWxCUCw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlRWRpdG9yTW9kdWxlIH0gZnJvbSAnQGFsYXVkYS9jb2RlLWVkaXRvcic7XG5pbXBvcnQgeyBDQVJEX01PRFVMRSwgQ0hFQ0tCT1hfTU9EVUxFIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBPYnNlcnZhYmxlLFxuICBtYXAsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBZYW1sVXRpbFNlcnZpY2UsXG4gIEFycmF5YWJsZSxcbiAgT2JzZXJ2YWJsZUlucHV0LFxufSBmcm9tICcuLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3RyYW5zbGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgdmlld0FjdGlvbnMsIHlhbWxSZWFkT3B0aW9ucyB9IGZyb20gJy4uL2NvZGUtZWRpdG9yLWNvbmZpZ3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcmVzb3VyY2UteWFtbC1kaXNwbGF5JyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlcy5zY3NzJ10sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ0FSRF9NT0RVTEUsXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDSEVDS0JPWF9NT0RVTEUsXG4gICAgQ29kZUVkaXRvck1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVlhbWxEaXNwbGF5Q29tcG9uZW50PFQgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2U+IHtcbiAgY29uY2lzZSQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcmVkdWNlJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuXG4gIEBJbnB1dCgpXG4gIGhhc1dyYXBwZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmNpc2VFbmFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIG1hbmFnZUZpZWxkQWN0aW9uRW5hYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICByZXNvdXJjZTogQXJyYXlhYmxlPFQ+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZWFkb25seSByZXNvdXJjZSQhOiBPYnNlcnZhYmxlPEFycmF5YWJsZTxUPj47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB5YW1sVXRpbDogWWFtbFV0aWxTZXJ2aWNlKSB7fVxuXG4gIHlhbWwkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5yZXNvdXJjZSQsXG4gICAgdGhpcy5jb25jaXNlJCQsXG4gICAgdGhpcy5yZWR1Y2UkJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3Jlc291cmNlLCBjb25jaXNlLCByZWR1Y2VdKSA9PlxuICAgICAgdGhpcy55YW1sVXRpbC5nZW5lcmF0ZUZpbHRlcmVkWWFtbFJlc291cmNlKHJlc291cmNlLCBjb25jaXNlLCByZWR1Y2UpLFxuICAgICksXG4gICk7XG5cbiAgZWRpdG9yT3B0aW9ucyA9IHlhbWxSZWFkT3B0aW9ucztcbiAgdmlld0FjdGlvbnMgPSB2aWV3QWN0aW9ucztcblxuICBjb25jaXNlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5jb25jaXNlJCQubmV4dCh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnJlZHVjZSQkLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8YXVpLWNhcmQgKm5nSWY9XCJoYXNXcmFwcGVyOyBlbHNlIGNvbnRlbnRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIiAvPlxuPC9hdWktY2FyZD5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPGF1aS1jb2RlLWVkaXRvclxuICAgIG5hbWU9XCJ5YW1sXCJcbiAgICBbbmdNb2RlbF09XCJ5YW1sJCB8IGFzeW5jXCJcbiAgICBbb3B0aW9uc109XCJlZGl0b3JPcHRpb25zXCJcbiAgICBbYWN0aW9uc0NvbmZpZ109XCJ2aWV3QWN0aW9uc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGF1aUNvZGVFZGl0b3JUb29sYmFyTGVmdD5cbiAgICAgIDxhdWktY2hlY2tib3hcbiAgICAgICAgKm5nSWY9XCJjb25jaXNlRW5hYmxlXCJcbiAgICAgICAgY2xhc3M9XCJhdWktY29kZS1lZGl0b3ItdG9vbGJhcl9fY29udHJvbC1idXR0b25cIlxuICAgICAgICBbbmdNb2RlbF09XCJjb25jaXNlJCQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvbmNpc2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdwcmV2aWV3X2NvbmNpc2VfeWFtbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYXVpLWNoZWNrYm94PlxuICAgICAgPGF1aS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIm1hbmFnZUZpZWxkQWN0aW9uRW5hYmxlXCJcbiAgICAgICAgW2hpZGRlbl09XCJjb25jaXNlJCQgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwiYXVpLWNvZGUtZWRpdG9yLXRvb2xiYXJfX2NvbnRyb2wtYnV0dG9uXCJcbiAgICAgICAgW25nTW9kZWxdPVwicmVkdWNlJCQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlZHVjZSQkLm5leHQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdoaWRlX21hbmFnZV9maWVsZHNfZmllbGQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2F1aS1jaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9hdWktY29kZS1lZGl0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19