@tilde-nlp/ngx-translate 4.0.28 → 4.0.30
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.
- package/esm2022/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.mjs +3 -3
- package/esm2022/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.mjs +6 -1
- package/esm2022/lib/tld-translate.module.mjs +8 -7
- package/fesm2022/tilde-nlp-ngx-translate.mjs +87 -80
- package/fesm2022/tilde-nlp-ngx-translate.mjs.map +1 -1
- package/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.d.ts +1 -0
- package/package.json +1 -1
- package/src/assets/webcomponent/tld-translate.js +1 -1
- package/src/assets/webtranslate/page-translate-widget.js +10 -0
- package/tilde-nlp-ngx-translate-4.0.28.tgz +0 -0
|
@@ -170,11 +170,11 @@ export class TldLangListComponent {
|
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldLangListComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
173
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TldLangListComponent, selector: "tld-lang-list", inputs: { disabled: "disabled", pxPerLanguage: "pxPerLanguage", languages: "languages", testId: "testId", selected: "selected", maxDisplayedLanguages: "maxDisplayedLanguages", showDomainsWithLanguageName: "showDomainsWithLanguageName" }, outputs: { onLanguageChange: "onLanguageChange", onDomainChange: "onDomainChange" }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "menu", first: true, predicate: MatMenu, descendants: true }, { propertyName: "openCloseButton", first: true, predicate: OpenCloseButtonComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" class=\"tld-lang-list-wrapper\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" role=\"list\" class=\"tld-lang-list\"\r\n [ngClass]=\"{'single-element-list': visibleLanguageList.length === 1}\">\r\n <ng-container *ngIf=\"visibleLanguageList.length>1 else singleLanguageList\">\r\n <div role=\"listitem\" *ngFor=\"let language of visibleLanguageList
|
|
173
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TldLangListComponent, selector: "tld-lang-list", inputs: { disabled: "disabled", pxPerLanguage: "pxPerLanguage", languages: "languages", testId: "testId", selected: "selected", maxDisplayedLanguages: "maxDisplayedLanguages", showDomainsWithLanguageName: "showDomainsWithLanguageName" }, outputs: { onLanguageChange: "onLanguageChange", onDomainChange: "onDomainChange" }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }, { propertyName: "menu", first: true, predicate: MatMenu, descendants: true }, { propertyName: "openCloseButton", first: true, predicate: OpenCloseButtonComponent, descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" class=\"tld-lang-list-wrapper\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" role=\"list\" class=\"tld-lang-list\"\r\n [ngClass]=\"{'single-element-list': visibleLanguageList.length === 1}\">\r\n <ng-container *ngIf=\"visibleLanguageList.length>1 else singleLanguageList\">\r\n <div role=\"listitem\" *ngFor=\"let language of visibleLanguageList\" class=\"tld-language-list-element\"\r\n [ngClass]=\"{'active accent-color' : isActive(language)}\">\r\n <ng-template [ngTemplateOutlet]=\"languageButton\" [ngTemplateOutletContext]=\"{ language: language }\">\r\n </ng-template>\r\n </div>\r\n <ng-template *ngIf=\"menuLanguageList.length>0\" [ngTemplateOutlet]=\"menuDropDown\" [ngTemplateOutletContext]=\"{ isIcon: true}\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-content></ng-content>\r\n <mat-menu #languageMenu=\"matMenu\" fxLayout=\"column\" class=\"language-menu\">\r\n <ng-container *ngFor=\"let language of menuLanguageList\">\r\n <ng-template [ngTemplateOutlet]=\"languageButton\" [ngTemplateOutletContext]=\"{ language: language }\"></ng-template>\r\n </ng-container>\r\n </mat-menu>\r\n</div>\r\n\r\n<!-- Template for one visible language with menu languages. -->\r\n<ng-template #singleLanguageList>\r\n <ng-container *ngIf=\" menuLanguageList.length > 0 else UnclickableLanguage\">\r\n <ng-template [ngTemplateOutlet]=\"menuDropDown\" [ngTemplateOutletContext]=\"{ isIcon: false}\"></ng-template>\r\n </ng-container>\r\n</ng-template>\r\n<!-- ------------------------ -->\r\n\r\n<!-- Template if only one language is in list and no menu languages. This language needs no cursor or click events.-->\r\n<ng-template #UnclickableLanguage>\r\n <button color=\"primary\" [attr.aria-label]=\"firstVisible.code | languageTranslate\" *ngIf=\"firstVisible\" class=\"language-title no-highlight no-action\">\r\n <ng-template [ngTemplateOutlet]=\"languageNameWithDomain\" [ngTemplateOutletContext]=\"{ language: firstVisible}\"></ng-template>\r\n </button>\r\n</ng-template>\r\n<!-- ------------------------ -->\r\n\r\n<!-- templates for language names and other small repeated parts of this component-->\r\n<ng-template #menuDropDown let-isIcon=\"isIcon\">\r\n <lib-open-close-button [isIcon]=\"isIcon\" [ngClass]=\"{'language-title no-highlight' : !isIcon}\" [disabled]=\"disabled\"\r\n #state=\"matMenuTrigger\" (menuOpened)=\"onMenuOpen()\" [matMenuTriggerFor]=\"languageMenu\" [isOpened]=\"state.menuOpen\"\r\n [ariaLabelCode]=\"menuTriggerAriaCode\">\r\n <ng-template *ngIf=\"!isIcon\" [ngTemplateOutlet]=\"languageNameWithDomain\"\r\n [ngTemplateOutletContext]=\"{ language: firstVisible }\">\r\n </ng-template>\r\n </lib-open-close-button>\r\n</ng-template>\r\n\r\n<ng-template #languageButton let-language=\"language\">\r\n <button fxLayoutAlign=\"start center\" [ngClass]=\"{'active accent-color' : isActive(language)}\" mat-menu-item\r\n *ngIf=\"language\" class=\"language-title\" (click)=\"selectLanguage(language)\" [disabled]=\"disabled\"\r\n [attr.aria-label]=\"language.code | languageTranslate\">\r\n <span>{{ language.code | languageTranslate }}</span> \r\n <span class=\"domain\" *ngIf=\"language.showDomain\"> ({{language.domain | translateDomain}})</span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #languageNameWithDomain let-language=\"language\">\r\n <span>{{ language.code | languageTranslate }}</span>\r\n <span fxHide.lt-sm *ngIf=\"language.showDomain\">\r\n <span> (</span>\r\n <span class=\"domain\">{{language.domain | translateDomain}}</span>\r\n <span>)</span>\r\n </span>\r\n</ng-template>\r\n<!-- ------------------------ -->", styles: [".tld-lang-list-wrapper{max-width:100%}.tld-lang-list-wrapper .tld-language-list-element{padding:0 12px}.tld-lang-list:not(.single-element-list) .active .language-title:after{position:absolute;bottom:-8px;left:50%;transform:translate(-50%);content:\"\";display:block;width:16px;height:2px}.tld-language-list-element.active .span-block{display:block}.tld-language-list-element.active .domain{display:inline-block;max-width:90px;overflow-x:hidden;text-overflow:ellipsis}.language-title{cursor:pointer;font-size:16px;font-weight:500;position:relative;background-color:transparent;border:none;font-family:Inter,sans-serif}.language-title.no-highlight.no-action{cursor:default}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.OpenCloseButtonComponent, selector: "lib-open-close-button", inputs: ["disableFocusOnAction", "disabled", "isIcon", "ariaLabelCode", "isOpened"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i5.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i3.LanguageTranslatePipe, name: "languageTranslate" }, { kind: "pipe", type: i7.TranslateDomainPipe, name: "translateDomain" }] });
|
|
174
174
|
}
|
|
175
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldLangListComponent, decorators: [{
|
|
176
176
|
type: Component,
|
|
177
|
-
args: [{ selector: 'tld-lang-list', template: "<div fxLayout=\"row\" class=\"tld-lang-list-wrapper\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" role=\"list\" class=\"tld-lang-list\"\r\n [ngClass]=\"{'single-element-list': visibleLanguageList.length === 1}\">\r\n <ng-container *ngIf=\"visibleLanguageList.length>1 else singleLanguageList\">\r\n <div role=\"listitem\" *ngFor=\"let language of visibleLanguageList
|
|
177
|
+
args: [{ selector: 'tld-lang-list', template: "<div fxLayout=\"row\" class=\"tld-lang-list-wrapper\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" role=\"list\" class=\"tld-lang-list\"\r\n [ngClass]=\"{'single-element-list': visibleLanguageList.length === 1}\">\r\n <ng-container *ngIf=\"visibleLanguageList.length>1 else singleLanguageList\">\r\n <div role=\"listitem\" *ngFor=\"let language of visibleLanguageList\" class=\"tld-language-list-element\"\r\n [ngClass]=\"{'active accent-color' : isActive(language)}\">\r\n <ng-template [ngTemplateOutlet]=\"languageButton\" [ngTemplateOutletContext]=\"{ language: language }\">\r\n </ng-template>\r\n </div>\r\n <ng-template *ngIf=\"menuLanguageList.length>0\" [ngTemplateOutlet]=\"menuDropDown\" [ngTemplateOutletContext]=\"{ isIcon: true}\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-content></ng-content>\r\n <mat-menu #languageMenu=\"matMenu\" fxLayout=\"column\" class=\"language-menu\">\r\n <ng-container *ngFor=\"let language of menuLanguageList\">\r\n <ng-template [ngTemplateOutlet]=\"languageButton\" [ngTemplateOutletContext]=\"{ language: language }\"></ng-template>\r\n </ng-container>\r\n </mat-menu>\r\n</div>\r\n\r\n<!-- Template for one visible language with menu languages. -->\r\n<ng-template #singleLanguageList>\r\n <ng-container *ngIf=\" menuLanguageList.length > 0 else UnclickableLanguage\">\r\n <ng-template [ngTemplateOutlet]=\"menuDropDown\" [ngTemplateOutletContext]=\"{ isIcon: false}\"></ng-template>\r\n </ng-container>\r\n</ng-template>\r\n<!-- ------------------------ -->\r\n\r\n<!-- Template if only one language is in list and no menu languages. This language needs no cursor or click events.-->\r\n<ng-template #UnclickableLanguage>\r\n <button color=\"primary\" [attr.aria-label]=\"firstVisible.code | languageTranslate\" *ngIf=\"firstVisible\" class=\"language-title no-highlight no-action\">\r\n <ng-template [ngTemplateOutlet]=\"languageNameWithDomain\" [ngTemplateOutletContext]=\"{ language: firstVisible}\"></ng-template>\r\n </button>\r\n</ng-template>\r\n<!-- ------------------------ -->\r\n\r\n<!-- templates for language names and other small repeated parts of this component-->\r\n<ng-template #menuDropDown let-isIcon=\"isIcon\">\r\n <lib-open-close-button [isIcon]=\"isIcon\" [ngClass]=\"{'language-title no-highlight' : !isIcon}\" [disabled]=\"disabled\"\r\n #state=\"matMenuTrigger\" (menuOpened)=\"onMenuOpen()\" [matMenuTriggerFor]=\"languageMenu\" [isOpened]=\"state.menuOpen\"\r\n [ariaLabelCode]=\"menuTriggerAriaCode\">\r\n <ng-template *ngIf=\"!isIcon\" [ngTemplateOutlet]=\"languageNameWithDomain\"\r\n [ngTemplateOutletContext]=\"{ language: firstVisible }\">\r\n </ng-template>\r\n </lib-open-close-button>\r\n</ng-template>\r\n\r\n<ng-template #languageButton let-language=\"language\">\r\n <button fxLayoutAlign=\"start center\" [ngClass]=\"{'active accent-color' : isActive(language)}\" mat-menu-item\r\n *ngIf=\"language\" class=\"language-title\" (click)=\"selectLanguage(language)\" [disabled]=\"disabled\"\r\n [attr.aria-label]=\"language.code | languageTranslate\">\r\n <span>{{ language.code | languageTranslate }}</span> \r\n <span class=\"domain\" *ngIf=\"language.showDomain\"> ({{language.domain | translateDomain}})</span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #languageNameWithDomain let-language=\"language\">\r\n <span>{{ language.code | languageTranslate }}</span>\r\n <span fxHide.lt-sm *ngIf=\"language.showDomain\">\r\n <span> (</span>\r\n <span class=\"domain\">{{language.domain | translateDomain}}</span>\r\n <span>)</span>\r\n </span>\r\n</ng-template>\r\n<!-- ------------------------ -->", styles: [".tld-lang-list-wrapper{max-width:100%}.tld-lang-list-wrapper .tld-language-list-element{padding:0 12px}.tld-lang-list:not(.single-element-list) .active .language-title:after{position:absolute;bottom:-8px;left:50%;transform:translate(-50%);content:\"\";display:block;width:16px;height:2px}.tld-language-list-element.active .span-block{display:block}.tld-language-list-element.active .domain{display:inline-block;max-width:90px;overflow-x:hidden;text-overflow:ellipsis}.language-title{cursor:pointer;font-size:16px;font-weight:500;position:relative;background-color:transparent;border:none;font-family:Inter,sans-serif}.language-title.no-highlight.no-action{cursor:default}\n"] }]
|
|
178
178
|
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { wrapper: [{
|
|
179
179
|
type: ViewChild,
|
|
180
180
|
args: ["wrapper"]
|
|
@@ -203,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
203
203
|
}], onDomainChange: [{
|
|
204
204
|
type: Output
|
|
205
205
|
}] } });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLWxhbmctbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtY29tbW9uL2NvbXBvbmVudHMvdGxkLWxhbmctbGlzdC90bGQtbGFuZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1jb21tb24vY29tcG9uZW50cy90bGQtbGFuZy1saXN0L3RsZC1sYW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxvQkFBb0I7SUFnRUY7SUEvRDdCLHVDQUF1QztJQUNqQixPQUFPLENBQWE7SUFDdEIsSUFBSSxDQUFVO0lBQ0csZUFBZSxDQUEyQjtJQUUvRSxRQUFRO0lBQ0MsUUFBUSxDQUFVO0lBQ2xCLGFBQWEsR0FBVyxHQUFHLENBQUM7SUFFckMsSUFBYSxTQUFTLENBQUMsWUFBNkI7UUFDbEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixD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RSxlQUFlO3VHQU1ILE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDQSxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ21CLGVBQWU7c0JBQW5ELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUcxQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSztnQkFTRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR08sUUFBUTtzQkFBcEIsS0FBSztnQkFPTyxxQkFBcUI7c0JBQWpDLEtBQUs7Z0JBZUcsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSUxhbmdMaXN0SXRlbSwgSUxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uLCBJU2VsZWN0ZWRMYW5ndWFnZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE9wZW5DbG9zZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RsZC1sYW5nLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bGQtbGFuZy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90bGQtbGFuZy1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZExhbmdMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvL2F2YWlsYWJsZSBvbmx5IGFmdGVyIHZpZXcgaW5pdGlhbGl6ZWRcclxuICBAVmlld0NoaWxkKFwid3JhcHBlclwiKSB3cmFwcGVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoTWF0TWVudSkgbWVudTogTWF0TWVudTtcclxuICBAVmlld0NoaWxkKE9wZW5DbG9zZUJ1dHRvbkNvbXBvbmVudCkgb3BlbkNsb3NlQnV0dG9uOiBPcGVuQ2xvc2VCdXR0b25Db21wb25lbnQ7XHJcblxyXG4gIC8vSW5wdXRzXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHhQZXJMYW5ndWFnZTogbnVtYmVyID0gMTAwO1xyXG5cclxuICBASW5wdXQoKSBzZXQgbGFuZ3VhZ2VzKGxhbmd1YWdlTGlzdDogSUxhbmdMaXN0SXRlbVtdKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBsYW5ndWFnZUxpc3QgfHwgW107XHJcbiAgICAgIHRoaXMucmVjcmVhdGVMYW5ndWFnZUxpc3RzKCk7XHJcbiAgICB9LCAwKVxyXG5cclxuICB9O1xyXG5cclxuICAvKiogSWQgZm9yIHBhbmVsIGNsYXNzLiBGb3IgdGVzdGluZyBwdXJwb3Nlcy4gKi9cclxuICBASW5wdXQoKSB0ZXN0SWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IElTZWxlY3RlZExhbmd1YWdlO1xyXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZCh2YWw6IElTZWxlY3RlZExhbmd1YWdlKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbDtcclxuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRJc1Zpc2libGUoKTtcclxuICB9O1xyXG4gIGdldCBzZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGVkOyB9XHJcblxyXG4gIHByaXZhdGUgX21heERpc3BsYXllZExhbmd1YWdlczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNldCBtYXhEaXNwbGF5ZWRMYW5ndWFnZXModmFsOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl9tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgPT09IHZhbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fbWF4RGlzcGxheWVkTGFuZ3VhZ2VzID0gdmFsO1xyXG4gICAgdGhpcy5yZWNyZWF0ZUxhbmd1YWdlTGlzdHMoKTtcclxuICB9XHJcbiAgZ2V0IG1heERpc3BsYXllZExhbmd1YWdlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhEaXNwbGF5ZWRMYW5ndWFnZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3RWaXNpYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUxhbmd1YWdlTGlzdD8uWzBdO1xyXG4gIH1cclxuICBASW5wdXQoKSBzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWU6IGJvb2xlYW47XHJcbiAgLy9PdXRwdXRzXHJcbiAgQE91dHB1dCgpIG9uTGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uRG9tYWluQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvL3B1YmxpYyB2YXJpYWJsZXNcclxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcclxuICBtZW51TGFuZ3VhZ2VMaXN0OiBJTGFuZ3VhZ2VXaXRoVHJhbnNsYXRpb25bXSA9IFtdO1xyXG4gIHZpc2libGVMYW5ndWFnZUxpc3Q6IElMYW5ndWFnZVdpdGhUcmFuc2xhdGlvbltdID0gW107XHJcblxyXG4gIHJlYWRvbmx5IG1lbnVUcmlnZ2VyQXJpYUNvZGUgPSBcIkFSSUFfTEFCRUxTLk9USEVSX0xBTkdVQUdFU19UUklHR0VSXCI7XHJcbiAgcmVhZG9ubHkgbGFuZ3VhZ2VMb2NhbGl6YXRpb25LZXkgPSBcIkxBTkdVQUdFU1wiXHJcbiAgcmVhZG9ubHkgbGFuZ3VhZ2VDb2RlUHJvcGVydHlOYW1lID0gXCJjb2RlXCI7XHJcbiAgLy9Qcml2YXRlIHZhcmlhYmxlcyBhbmQgdGhlaXIgYWNjZXNzb3JzXHJcbiAgLy9uZWNlc3NhcnkgYmVjYXVzZSBkb21haW4gbmFtZSB3aWxsIHNob3cgbmV4dCB0byBsYW5ndWFnZSBpZiBtdWx0aXBsZSBkb21haW5zIGF2YWlsYWJsZVxyXG4gIHByaXZhdGUgZHVwbGljYXRlQ29kZXM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBsYW5ndWFnZUxpc3Q6IElMYW5nTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubWVudS5vdmVybGF5UGFuZWxDbGFzcyA9IFwibGFuZ3VhZ2UtbWVudS1vdmVybGF5XCI7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2UucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICApLnN1YnNjcmliZSgobGFuZykgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IGxhbmcubGFuZztcclxuICAgICAgdGhpcy50b29nbGVEb21haW5WaXNpYmlsaXR5KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQobnVsbClcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG9uTWVudU9wZW4oKSB7XHJcbiAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVudS5wYW5lbElkKTtcclxuICAgIC8vIGRpc2FibGVzIHRpbGRlIHdlYiB0cmFuc2xhdG9yIGZvciBsYW5nIG1lbnVcclxuICAgIHBhbmVsLnNldEF0dHJpYnV0ZShcInRyYW5zbGF0ZVwiLCBcIm5vXCIpO1xyXG4gICAgaWYgKHRoaXMudGVzdElkKSB7XHJcbiAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZShcImRhdGEtdGVzdC1pZFwiLCB0aGlzLnRlc3RJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZShsYW5ndWFnZTogYW55IHwgSUxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0VxdWFsV2l0aFNlbGVjdGVkKGxhbmd1YWdlKTtcclxuICB9XHJcbiAgc2VsZWN0TGFuZ3VhZ2UobGFuZ3VhZ2U6IElMYW5ndWFnZVdpdGhUcmFuc2xhdGlvbikge1xyXG4gICAgaWYgKHRoaXMuaXNFcXVhbFdpdGhTZWxlY3RlZChsYW5ndWFnZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZSkge1xyXG4gICAgICB0aGlzLm9uRG9tYWluQ2hhbmdlLmVtaXQobGFuZ3VhZ2Uuc3lzdGVtSWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub25MYW5ndWFnZUNoYW5nZS5lbWl0KGxhbmd1YWdlLmNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyB2aXNpYmxlIGxhbmd1YWdlIGxpc3QgYW5kIG1lbnUgbGFuZ3VhZ2UgbGlzdCB0aGF0IGlzIHVzZWQgaW4gdGVtcGxhdGUuXHJcbiAgICogVXNlcyBjb21wb25lbnQgdmFyaWFibGUgXCJsYW5ndWFnZUxpc3RcIiB3aGljaCBnZXRzIHBhc3NlZCBhcyBpbnB1dCBwYXJhbS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlY3JlYXRlTGFuZ3VhZ2VMaXN0cygpIHtcclxuICAgIGNvbnN0IHZpc2libGVMYW5ndWFnZXM6IElMYW5ndWFnZVdpdGhUcmFuc2xhdGlvbltdID0gW107XHJcbiAgICBjb25zdCBtZW51TGFuZ3VhZ2VzOiBJTGFuZ3VhZ2VXaXRoVHJhbnNsYXRpb25bXSA9IFtdO1xyXG4gICAgY29uc3QgbGFuZ3VhZ2VDb2Rlczogc3RyaW5nW10gPSBbXTtcclxuICAgIHRoaXMuZHVwbGljYXRlQ29kZXMgPSBbXTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sYW5ndWFnZUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlTGlzdFtpXTtcclxuICAgICAgaWYgKGxhbmd1YWdlQ29kZXMuaW5kZXhPZihsYW5ndWFnZS5sYW5nKSA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVDb2Rlcy5wdXNoKGxhbmd1YWdlLmxhbmcpO1xyXG4gICAgICAgIGlmICghdGhpcy5zaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWUpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsYW5ndWFnZUNvZGVzLnB1c2gobGFuZ3VhZ2UubGFuZyk7XHJcblxyXG4gICAgICBjb25zdCBsYW5ndWFnZVdpdGhUcmFuc2xhdGlvbjogSUxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uID1cclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IGxhbmd1YWdlLmxhbmcsXHJcbiAgICAgICAgLy93aWxsIGJlIHNldCBsYXRlciwgdG9nZXRoZXIgd2l0aCBkb21haW4gdHJhbnNsYXRpb25cclxuICAgICAgICBzaG93RG9tYWluOiBmYWxzZSxcclxuICAgICAgICBkb21haW46IGxhbmd1YWdlLmRvbWFpbixcclxuICAgICAgICBzeXN0ZW1JZDogbGFuZ3VhZ2Uuc3lzdGVtSWQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodmlzaWJsZUxhbmd1YWdlcy5sZW5ndGggPCB0aGlzLm1heERpc3BsYXllZExhbmd1YWdlcykge1xyXG4gICAgICAgIHZpc2libGVMYW5ndWFnZXMucHVzaChsYW5ndWFnZVdpdGhUcmFuc2xhdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXM9PT0xIHx8IHZpc2libGVMYW5ndWFnZXMubGVuZ3RoID49IHRoaXMubWF4RGlzcGxheWVkTGFuZ3VhZ2VzKSB7XHJcbiAgICAgICAgbWVudUxhbmd1YWdlcy5wdXNoKGxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy52aXNpYmxlTGFuZ3VhZ2VMaXN0ID0gdmlzaWJsZUxhbmd1YWdlcztcclxuICAgIHRoaXMubWVudUxhbmd1YWdlTGlzdCA9IG1lbnVMYW5ndWFnZXM7XHJcbiAgICB0aGlzLnRvb2dsZURvbWFpblZpc2liaWxpdHkoKTtcclxuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRJc1Zpc2libGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5zdXJlU2VsZWN0ZWRJc1Zpc2libGUoKSB7XHJcbiAgICAvLyBMb29wIHZpc2libGUgbGFuZ3VhZ2VzIGFuZCBpZiBzZWxlY3RlZCBpcyB2aXNpYmxlLCB0aGVuIG5vIHJlb3JkZXJpbmcgbmVjZXNzYXJ5LlxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVMYW5ndWFnZUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgbGFuZyA9IHRoaXMudmlzaWJsZUxhbmd1YWdlTGlzdFtpXTtcclxuICAgICAgaWYgKHRoaXMuaXNFcXVhbFdpdGhTZWxlY3RlZChsYW5nKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHNlbGVjdGVkIGxhbmcgbm90IHZpc2libGUsIG1ha2UgaXQgdmlzaWJsZSBmcm9tIG1lbnUgbGFuZ3VhZ2VzXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVudUxhbmd1YWdlTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBsYW5nID0gdGhpcy5tZW51TGFuZ3VhZ2VMaXN0W2ldO1xyXG4gICAgICBpZiAodGhpcy5pc0VxdWFsV2l0aFNlbGVjdGVkKGxhbmcpKSB7XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZFZpc2libGUgPSB0aGlzLnZpc2libGVMYW5ndWFnZUxpc3Quc3BsaWNlKDAsIDEsIGxhbmcpWzBdO1xyXG5cclxuICAgICAgICAvLyBpZiBtYXggdmlzaWJsZSBsZW5ndGggPT09IDEsIHRoZW4gaXQgaXMgb2sgdGhhdCB2aXNpYmxlIGxhbmcgaXMgYWxzbyBpbiBtZW51IGxhbmdzLiBcclxuICAgICAgICBpZiAodGhpcy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgIT09IDEpIHtcclxuICAgICAgICAgIHRoaXMubWVudUxhbmd1YWdlTGlzdC5zcGxpY2UoaSwgMSwgZGVsZXRlZFZpc2libGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFcXVhbFdpdGhTZWxlY3RlZChsYW5nOiBJTGFuZ3VhZ2VXaXRoVHJhbnNsYXRpb24pIHtcclxuICAgIHJldHVybiBsYW5nICYmICgoIXRoaXMuc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lICYmIGxhbmcuY29kZSA9PT0gdGhpcy5zZWxlY3RlZC5jb2RlKVxyXG4gICAgICB8fCAodGhpcy5zaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWUgJiYgbGFuZy5zeXN0ZW1JZCA9PT0gdGhpcy5zZWxlY3RlZC5zeXN0ZW1JZCkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvb2dsZURvbWFpblZpc2liaWxpdHkoKSB7XHJcbiAgICBbLi4udGhpcy52aXNpYmxlTGFuZ3VhZ2VMaXN0LCAuLi50aGlzLm1lbnVMYW5ndWFnZUxpc3RdLmZvckVhY2goXHJcbiAgICAgIChsYW5ndWFnZSkgPT4ge1xyXG4gICAgICAgIGxhbmd1YWdlLnNob3dEb21haW4gPSB0aGlzLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZSAmJiB0aGlzLmR1cGxpY2F0ZUNvZGVzLmluY2x1ZGVzKGxhbmd1YWdlLmNvZGUpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cInRsZC1sYW5nLWxpc3Qtd3JhcHBlclwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiByb2xlPVwibGlzdFwiIGNsYXNzPVwidGxkLWxhbmctbGlzdFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J3NpbmdsZS1lbGVtZW50LWxpc3QnOiB2aXNpYmxlTGFuZ3VhZ2VMaXN0Lmxlbmd0aCA9PT0gMX1cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aXNpYmxlTGFuZ3VhZ2VMaXN0Lmxlbmd0aD4xIGVsc2Ugc2luZ2xlTGFuZ3VhZ2VMaXN0XCI+XHJcbiAgICAgIDxkaXYgcm9sZT1cImxpc3RpdGVtXCIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIHZpc2libGVMYW5ndWFnZUxpc3QgfCBzb3J0VHJhbnNsYXRpb25zOiBsYW5ndWFnZUxvY2FsaXphdGlvbktleTpsYW5ndWFnZUNvZGVQcm9wZXJ0eU5hbWU6Y3VycmVudExhbmd1YWdlIHwgYXN5bmNcIiBjbGFzcz1cInRsZC1sYW5ndWFnZS1saXN0LWVsZW1lbnRcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlIGFjY2VudC1jb2xvcicgOiBpc0FjdGl2ZShsYW5ndWFnZSl9XCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhbmd1YWdlQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGFuZ3VhZ2U6IGxhbmd1YWdlIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwibWVudUxhbmd1YWdlTGlzdC5sZW5ndGg+MFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVEcm9wRG93blwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGlzSWNvbjogdHJ1ZX1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDxtYXQtbWVudSAjbGFuZ3VhZ2VNZW51PVwibWF0TWVudVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJsYW5ndWFnZS1tZW51XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBtZW51TGFuZ3VhZ2VMaXN0IHwgc29ydFRyYW5zbGF0aW9uczogbGFuZ3VhZ2VMb2NhbGl6YXRpb25LZXk6bGFuZ3VhZ2VDb2RlUHJvcGVydHlOYW1lOmN1cnJlbnRMYW5ndWFnZSB8IGFzeW5jXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYW5ndWFnZUJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxhbmd1YWdlOiBsYW5ndWFnZSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbWF0LW1lbnU+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBmb3Igb25lIHZpc2libGUgbGFuZ3VhZ2Ugd2l0aCBtZW51IGxhbmd1YWdlcy4gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTGFuZ3VhZ2VMaXN0PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIgbWVudUxhbmd1YWdlTGlzdC5sZW5ndGggPiAwIGVsc2UgVW5jbGlja2FibGVMYW5ndWFnZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVEcm9wRG93blwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGlzSWNvbjogZmFsc2V9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48IS0tIFRlbXBsYXRlIGlmIG9ubHkgb25lIGxhbmd1YWdlIGlzIGluIGxpc3QgYW5kIG5vIG1lbnUgbGFuZ3VhZ2VzLiBUaGlzIGxhbmd1YWdlIG5lZWRzIG5vIGN1cnNvciBvciBjbGljayBldmVudHMuLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVW5jbGlja2FibGVMYW5ndWFnZT5cclxuICA8YnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlyc3RWaXNpYmxlLmNvZGUgfCBsYW5ndWFnZVRyYW5zbGF0ZVwiICpuZ0lmPVwiZmlyc3RWaXNpYmxlXCIgY2xhc3M9XCJsYW5ndWFnZS10aXRsZSBuby1oaWdobGlnaHQgbm8tYWN0aW9uXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFuZ3VhZ2VOYW1lV2l0aERvbWFpblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxhbmd1YWdlOiBmaXJzdFZpc2libGV9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48IS0tIHRlbXBsYXRlcyBmb3IgbGFuZ3VhZ2UgbmFtZXMgYW5kIG90aGVyIHNtYWxsIHJlcGVhdGVkIHBhcnRzIG9mIHRoaXMgY29tcG9uZW50LS0+XHJcbjxuZy10ZW1wbGF0ZSAjbWVudURyb3BEb3duIGxldC1pc0ljb249XCJpc0ljb25cIj5cclxuICA8bGliLW9wZW4tY2xvc2UtYnV0dG9uIFtpc0ljb25dPVwiaXNJY29uXCIgW25nQ2xhc3NdPVwieydsYW5ndWFnZS10aXRsZSBuby1oaWdobGlnaHQnIDogIWlzSWNvbn1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgI3N0YXRlPVwibWF0TWVudVRyaWdnZXJcIiAobWVudU9wZW5lZCk9XCJvbk1lbnVPcGVuKClcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGFuZ3VhZ2VNZW51XCIgW2lzT3BlbmVkXT1cInN0YXRlLm1lbnVPcGVuXCJcclxuICAgIFthcmlhTGFiZWxDb2RlXT1cIm1lbnVUcmlnZ2VyQXJpYUNvZGVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFpc0ljb25cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJsYW5ndWFnZU5hbWVXaXRoRG9tYWluXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGFuZ3VhZ2U6IGZpcnN0VmlzaWJsZSB9XCI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbGliLW9wZW4tY2xvc2UtYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsYW5ndWFnZUJ1dHRvbiBsZXQtbGFuZ3VhZ2U9XCJsYW5ndWFnZVwiPlxyXG4gIDxidXR0b24gZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlIGFjY2VudC1jb2xvcicgOiBpc0FjdGl2ZShsYW5ndWFnZSl9XCIgbWF0LW1lbnUtaXRlbVxyXG4gICAgKm5nSWY9XCJsYW5ndWFnZVwiIGNsYXNzPVwibGFuZ3VhZ2UtdGl0bGVcIiAoY2xpY2spPVwic2VsZWN0TGFuZ3VhZ2UobGFuZ3VhZ2UpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFuZ3VhZ2UuY29kZSB8IGxhbmd1YWdlVHJhbnNsYXRlXCI+XHJcbiAgICA8c3Bhbj57eyBsYW5ndWFnZS5jb2RlIHwgbGFuZ3VhZ2VUcmFuc2xhdGUgfX08L3NwYW4+Jm5ic3A7XHJcbiAgICA8c3BhbiBjbGFzcz1cImRvbWFpblwiICpuZ0lmPVwibGFuZ3VhZ2Uuc2hvd0RvbWFpblwiPiAoe3tsYW5ndWFnZS5kb21haW4gfCB0cmFuc2xhdGVEb21haW59fSk8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xhbmd1YWdlTmFtZVdpdGhEb21haW4gbGV0LWxhbmd1YWdlPVwibGFuZ3VhZ2VcIj5cclxuICA8c3Bhbj57eyBsYW5ndWFnZS5jb2RlIHwgbGFuZ3VhZ2VUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgPHNwYW4gZnhIaWRlLmx0LXNtICpuZ0lmPVwibGFuZ3VhZ2Uuc2hvd0RvbWFpblwiPlxyXG4gICAgPHNwYW4+Jm5ic3A7KDwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZG9tYWluXCI+e3tsYW5ndWFnZS5kb21haW4gfCB0cmFuc2xhdGVEb21haW59fTwvc3Bhbj5cclxuICAgIDxzcGFuPik8L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLWxhbmctbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtY29tbW9uL2NvbXBvbmVudHMvdGxkLWxhbmctbGlzdC90bGQtbGFuZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1jb21tb24vY29tcG9uZW50cy90bGQtbGFuZy1saXN0L3RsZC1sYW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxvQkFBb0I7SUFnRUY7SUEvRDdCLHVDQUF1QztJQUNqQixPQUFPLENBQWE7SUFDdEIsSUFBSSxDQUFVO0lBQ0csZUFBZSxDQUEyQjtJQUUvRSxRQUFRO0lBQ0MsUUFBUSxDQUFVO0lBQ2xCLGFBQWEsR0FBVyxHQUFHLENBQUM7SUFFckMsSUFBYSxTQUFTLENBQUMsWUFBNkI7UUFDbEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixD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RSxlQUFlO3VHQU1ILE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDQSxJQUFJO3NCQUF2QixTQUFTO3VCQUFDLE9BQU87Z0JBQ21CLGVBQWU7c0JBQW5ELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUcxQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSztnQkFTRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR08sUUFBUTtzQkFBcEIsS0FBSztnQkFPTyxxQkFBcUI7c0JBQWpDLEtBQUs7Z0JBZUcsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSUxhbmdMaXN0SXRlbSwgSUxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uLCBJU2VsZWN0ZWRMYW5ndWFnZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE9wZW5DbG9zZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LWNvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RsZC1sYW5nLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bGQtbGFuZy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90bGQtbGFuZy1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZExhbmdMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAvL2F2YWlsYWJsZSBvbmx5IGFmdGVyIHZpZXcgaW5pdGlhbGl6ZWRcclxuICBAVmlld0NoaWxkKFwid3JhcHBlclwiKSB3cmFwcGVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoTWF0TWVudSkgbWVudTogTWF0TWVudTtcclxuICBAVmlld0NoaWxkKE9wZW5DbG9zZUJ1dHRvbkNvbXBvbmVudCkgb3BlbkNsb3NlQnV0dG9uOiBPcGVuQ2xvc2VCdXR0b25Db21wb25lbnQ7XHJcblxyXG4gIC8vSW5wdXRzXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHhQZXJMYW5ndWFnZTogbnVtYmVyID0gMTAwO1xyXG5cclxuICBASW5wdXQoKSBzZXQgbGFuZ3VhZ2VzKGxhbmd1YWdlTGlzdDogSUxhbmdMaXN0SXRlbVtdKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBsYW5ndWFnZUxpc3QgfHwgW107XHJcbiAgICAgIHRoaXMucmVjcmVhdGVMYW5ndWFnZUxpc3RzKCk7XHJcbiAgICB9LCAwKVxyXG5cclxuICB9O1xyXG5cclxuICAvKiogSWQgZm9yIHBhbmVsIGNsYXNzLiBGb3IgdGVzdGluZyBwdXJwb3Nlcy4gKi9cclxuICBASW5wdXQoKSB0ZXN0SWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IElTZWxlY3RlZExhbmd1YWdlO1xyXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZCh2YWw6IElTZWxlY3RlZExhbmd1YWdlKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbDtcclxuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRJc1Zpc2libGUoKTtcclxuICB9O1xyXG4gIGdldCBzZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGVkOyB9XHJcblxyXG4gIHByaXZhdGUgX21heERpc3BsYXllZExhbmd1YWdlczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNldCBtYXhEaXNwbGF5ZWRMYW5ndWFnZXModmFsOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl9tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgPT09IHZhbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fbWF4RGlzcGxheWVkTGFuZ3VhZ2VzID0gdmFsO1xyXG4gICAgdGhpcy5yZWNyZWF0ZUxhbmd1YWdlTGlzdHMoKTtcclxuICB9XHJcbiAgZ2V0IG1heERpc3BsYXllZExhbmd1YWdlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhEaXNwbGF5ZWRMYW5ndWFnZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3RWaXNpYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUxhbmd1YWdlTGlzdD8uWzBdO1xyXG4gIH1cclxuICBASW5wdXQoKSBzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWU6IGJvb2xlYW47XHJcbiAgLy9PdXRwdXRzXHJcbiAgQE91dHB1dCgpIG9uTGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uRG9tYWluQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvL3B1YmxpYyB2YXJpYWJsZXNcclxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcclxuICBtZW51TGFuZ3VhZ2VMaXN0OiBJTGFuZ3VhZ2VXaXRoVHJhbnNsYXRpb25bXSA9IFtdO1xyXG4gIHZpc2libGVMYW5ndWFnZUxpc3Q6IElMYW5ndWFnZVdpdGhUcmFuc2xhdGlvbltdID0gW107XHJcblxyXG4gIHJlYWRvbmx5IG1lbnVUcmlnZ2VyQXJpYUNvZGUgPSBcIkFSSUFfTEFCRUxTLk9USEVSX0xBTkdVQUdFU19UUklHR0VSXCI7XHJcbiAgcmVhZG9ubHkgbGFuZ3VhZ2VMb2NhbGl6YXRpb25LZXkgPSBcIkxBTkdVQUdFU1wiXHJcbiAgcmVhZG9ubHkgbGFuZ3VhZ2VDb2RlUHJvcGVydHlOYW1lID0gXCJjb2RlXCI7XHJcbiAgLy9Qcml2YXRlIHZhcmlhYmxlcyBhbmQgdGhlaXIgYWNjZXNzb3JzXHJcbiAgLy9uZWNlc3NhcnkgYmVjYXVzZSBkb21haW4gbmFtZSB3aWxsIHNob3cgbmV4dCB0byBsYW5ndWFnZSBpZiBtdWx0aXBsZSBkb21haW5zIGF2YWlsYWJsZVxyXG4gIHByaXZhdGUgZHVwbGljYXRlQ29kZXM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBsYW5ndWFnZUxpc3Q6IElMYW5nTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubWVudS5vdmVybGF5UGFuZWxDbGFzcyA9IFwibGFuZ3VhZ2UtbWVudS1vdmVybGF5XCI7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2UucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICApLnN1YnNjcmliZSgobGFuZykgPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IGxhbmcubGFuZztcclxuICAgICAgdGhpcy50b29nbGVEb21haW5WaXNpYmlsaXR5KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQobnVsbClcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG9uTWVudU9wZW4oKSB7XHJcbiAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVudS5wYW5lbElkKTtcclxuICAgIC8vIGRpc2FibGVzIHRpbGRlIHdlYiB0cmFuc2xhdG9yIGZvciBsYW5nIG1lbnVcclxuICAgIHBhbmVsLnNldEF0dHJpYnV0ZShcInRyYW5zbGF0ZVwiLCBcIm5vXCIpO1xyXG4gICAgaWYgKHRoaXMudGVzdElkKSB7XHJcbiAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZShcImRhdGEtdGVzdC1pZFwiLCB0aGlzLnRlc3RJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZShsYW5ndWFnZTogYW55IHwgSUxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0VxdWFsV2l0aFNlbGVjdGVkKGxhbmd1YWdlKTtcclxuICB9XHJcbiAgc2VsZWN0TGFuZ3VhZ2UobGFuZ3VhZ2U6IElMYW5ndWFnZVdpdGhUcmFuc2xhdGlvbikge1xyXG4gICAgaWYgKHRoaXMuaXNFcXVhbFdpdGhTZWxlY3RlZChsYW5ndWFnZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZSkge1xyXG4gICAgICB0aGlzLm9uRG9tYWluQ2hhbmdlLmVtaXQobGFuZ3VhZ2Uuc3lzdGVtSWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub25MYW5ndWFnZUNoYW5nZS5lbWl0KGxhbmd1YWdlLmNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyB2aXNpYmxlIGxhbmd1YWdlIGxpc3QgYW5kIG1lbnUgbGFuZ3VhZ2UgbGlzdCB0aGF0IGlzIHVzZWQgaW4gdGVtcGxhdGUuXHJcbiAgICogVXNlcyBjb21wb25lbnQgdmFyaWFibGUgXCJsYW5ndWFnZUxpc3RcIiB3aGljaCBnZXRzIHBhc3NlZCBhcyBpbnB1dCBwYXJhbS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlY3JlYXRlTGFuZ3VhZ2VMaXN0cygpIHtcclxuICAgIGNvbnN0IHZpc2libGVMYW5ndWFnZXM6IElMYW5ndWFnZVdpdGhUcmFuc2xhdGlvbltdID0gW107XHJcbiAgICBjb25zdCBtZW51TGFuZ3VhZ2VzOiBJTGFuZ3VhZ2VXaXRoVHJhbnNsYXRpb25bXSA9IFtdO1xyXG4gICAgY29uc3QgbGFuZ3VhZ2VDb2Rlczogc3RyaW5nW10gPSBbXTtcclxuICAgIHRoaXMuZHVwbGljYXRlQ29kZXMgPSBbXTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sYW5ndWFnZUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlTGlzdFtpXTtcclxuICAgICAgaWYgKGxhbmd1YWdlQ29kZXMuaW5kZXhPZihsYW5ndWFnZS5sYW5nKSA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVDb2Rlcy5wdXNoKGxhbmd1YWdlLmxhbmcpO1xyXG4gICAgICAgIGlmICghdGhpcy5zaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWUpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsYW5ndWFnZUNvZGVzLnB1c2gobGFuZ3VhZ2UubGFuZyk7XHJcblxyXG4gICAgICBjb25zdCBsYW5ndWFnZVdpdGhUcmFuc2xhdGlvbjogSUxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uID1cclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IGxhbmd1YWdlLmxhbmcsXHJcbiAgICAgICAgLy93aWxsIGJlIHNldCBsYXRlciwgdG9nZXRoZXIgd2l0aCBkb21haW4gdHJhbnNsYXRpb25cclxuICAgICAgICBzaG93RG9tYWluOiBmYWxzZSxcclxuICAgICAgICBkb21haW46IGxhbmd1YWdlLmRvbWFpbixcclxuICAgICAgICBzeXN0ZW1JZDogbGFuZ3VhZ2Uuc3lzdGVtSWQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodmlzaWJsZUxhbmd1YWdlcy5sZW5ndGggPCB0aGlzLm1heERpc3BsYXllZExhbmd1YWdlcykge1xyXG4gICAgICAgIHZpc2libGVMYW5ndWFnZXMucHVzaChsYW5ndWFnZVdpdGhUcmFuc2xhdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXM9PT0xIHx8IHZpc2libGVMYW5ndWFnZXMubGVuZ3RoID49IHRoaXMubWF4RGlzcGxheWVkTGFuZ3VhZ2VzKSB7XHJcbiAgICAgICAgbWVudUxhbmd1YWdlcy5wdXNoKGxhbmd1YWdlV2l0aFRyYW5zbGF0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy52aXNpYmxlTGFuZ3VhZ2VMaXN0ID0gdmlzaWJsZUxhbmd1YWdlcztcclxuICAgIHRoaXMubWVudUxhbmd1YWdlTGlzdCA9IG1lbnVMYW5ndWFnZXM7XHJcbiAgICB0aGlzLnRvb2dsZURvbWFpblZpc2liaWxpdHkoKTtcclxuICAgIHRoaXMuZW5zdXJlU2VsZWN0ZWRJc1Zpc2libGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5zdXJlU2VsZWN0ZWRJc1Zpc2libGUoKSB7XHJcbiAgICAvLyBMb29wIHZpc2libGUgbGFuZ3VhZ2VzIGFuZCBpZiBzZWxlY3RlZCBpcyB2aXNpYmxlLCB0aGVuIG5vIHJlb3JkZXJpbmcgbmVjZXNzYXJ5LlxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVMYW5ndWFnZUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgbGFuZyA9IHRoaXMudmlzaWJsZUxhbmd1YWdlTGlzdFtpXTtcclxuICAgICAgaWYgKHRoaXMuaXNFcXVhbFdpdGhTZWxlY3RlZChsYW5nKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHNlbGVjdGVkIGxhbmcgbm90IHZpc2libGUsIG1ha2UgaXQgdmlzaWJsZSBmcm9tIG1lbnUgbGFuZ3VhZ2VzXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVudUxhbmd1YWdlTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBsYW5nID0gdGhpcy5tZW51TGFuZ3VhZ2VMaXN0W2ldO1xyXG4gICAgICBpZiAodGhpcy5pc0VxdWFsV2l0aFNlbGVjdGVkKGxhbmcpKSB7XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZFZpc2libGUgPSB0aGlzLnZpc2libGVMYW5ndWFnZUxpc3Quc3BsaWNlKDAsIDEsIGxhbmcpWzBdO1xyXG5cclxuICAgICAgICAvLyBpZiBtYXggdmlzaWJsZSBsZW5ndGggPT09IDEsIHRoZW4gaXQgaXMgb2sgdGhhdCB2aXNpYmxlIGxhbmcgaXMgYWxzbyBpbiBtZW51IGxhbmdzLiBcclxuICAgICAgICBpZiAodGhpcy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgIT09IDEpIHtcclxuICAgICAgICAgIHRoaXMubWVudUxhbmd1YWdlTGlzdC5zcGxpY2UoaSwgMSwgZGVsZXRlZFZpc2libGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFcXVhbFdpdGhTZWxlY3RlZChsYW5nOiBJTGFuZ3VhZ2VXaXRoVHJhbnNsYXRpb24pIHtcclxuICAgIHJldHVybiBsYW5nICYmICgoIXRoaXMuc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lICYmIGxhbmcuY29kZSA9PT0gdGhpcy5zZWxlY3RlZC5jb2RlKVxyXG4gICAgICB8fCAodGhpcy5zaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWUgJiYgbGFuZy5zeXN0ZW1JZCA9PT0gdGhpcy5zZWxlY3RlZC5zeXN0ZW1JZCkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvb2dsZURvbWFpblZpc2liaWxpdHkoKSB7XHJcbiAgICBbLi4udGhpcy52aXNpYmxlTGFuZ3VhZ2VMaXN0LCAuLi50aGlzLm1lbnVMYW5ndWFnZUxpc3RdLmZvckVhY2goXHJcbiAgICAgIChsYW5ndWFnZSkgPT4ge1xyXG4gICAgICAgIGxhbmd1YWdlLnNob3dEb21haW4gPSB0aGlzLnNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZSAmJiB0aGlzLmR1cGxpY2F0ZUNvZGVzLmluY2x1ZGVzKGxhbmd1YWdlLmNvZGUpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cInRsZC1sYW5nLWxpc3Qtd3JhcHBlclwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiByb2xlPVwibGlzdFwiIGNsYXNzPVwidGxkLWxhbmctbGlzdFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J3NpbmdsZS1lbGVtZW50LWxpc3QnOiB2aXNpYmxlTGFuZ3VhZ2VMaXN0Lmxlbmd0aCA9PT0gMX1cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aXNpYmxlTGFuZ3VhZ2VMaXN0Lmxlbmd0aD4xIGVsc2Ugc2luZ2xlTGFuZ3VhZ2VMaXN0XCI+XHJcbiAgICAgIDxkaXYgcm9sZT1cImxpc3RpdGVtXCIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIHZpc2libGVMYW5ndWFnZUxpc3RcIiBjbGFzcz1cInRsZC1sYW5ndWFnZS1saXN0LWVsZW1lbnRcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlIGFjY2VudC1jb2xvcicgOiBpc0FjdGl2ZShsYW5ndWFnZSl9XCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhbmd1YWdlQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGFuZ3VhZ2U6IGxhbmd1YWdlIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwibWVudUxhbmd1YWdlTGlzdC5sZW5ndGg+MFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVEcm9wRG93blwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGlzSWNvbjogdHJ1ZX1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDxtYXQtbWVudSAjbGFuZ3VhZ2VNZW51PVwibWF0TWVudVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJsYW5ndWFnZS1tZW51XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBtZW51TGFuZ3VhZ2VMaXN0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYW5ndWFnZUJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxhbmd1YWdlOiBsYW5ndWFnZSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbWF0LW1lbnU+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBmb3Igb25lIHZpc2libGUgbGFuZ3VhZ2Ugd2l0aCBtZW51IGxhbmd1YWdlcy4gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTGFuZ3VhZ2VMaXN0PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIgbWVudUxhbmd1YWdlTGlzdC5sZW5ndGggPiAwIGVsc2UgVW5jbGlja2FibGVMYW5ndWFnZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVEcm9wRG93blwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGlzSWNvbjogZmFsc2V9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48IS0tIFRlbXBsYXRlIGlmIG9ubHkgb25lIGxhbmd1YWdlIGlzIGluIGxpc3QgYW5kIG5vIG1lbnUgbGFuZ3VhZ2VzLiBUaGlzIGxhbmd1YWdlIG5lZWRzIG5vIGN1cnNvciBvciBjbGljayBldmVudHMuLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVW5jbGlja2FibGVMYW5ndWFnZT5cclxuICA8YnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlyc3RWaXNpYmxlLmNvZGUgfCBsYW5ndWFnZVRyYW5zbGF0ZVwiICpuZ0lmPVwiZmlyc3RWaXNpYmxlXCIgY2xhc3M9XCJsYW5ndWFnZS10aXRsZSBuby1oaWdobGlnaHQgbm8tYWN0aW9uXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFuZ3VhZ2VOYW1lV2l0aERvbWFpblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGxhbmd1YWdlOiBmaXJzdFZpc2libGV9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcblxyXG48IS0tIHRlbXBsYXRlcyBmb3IgbGFuZ3VhZ2UgbmFtZXMgYW5kIG90aGVyIHNtYWxsIHJlcGVhdGVkIHBhcnRzIG9mIHRoaXMgY29tcG9uZW50LS0+XHJcbjxuZy10ZW1wbGF0ZSAjbWVudURyb3BEb3duIGxldC1pc0ljb249XCJpc0ljb25cIj5cclxuICA8bGliLW9wZW4tY2xvc2UtYnV0dG9uIFtpc0ljb25dPVwiaXNJY29uXCIgW25nQ2xhc3NdPVwieydsYW5ndWFnZS10aXRsZSBuby1oaWdobGlnaHQnIDogIWlzSWNvbn1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgI3N0YXRlPVwibWF0TWVudVRyaWdnZXJcIiAobWVudU9wZW5lZCk9XCJvbk1lbnVPcGVuKClcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGFuZ3VhZ2VNZW51XCIgW2lzT3BlbmVkXT1cInN0YXRlLm1lbnVPcGVuXCJcclxuICAgIFthcmlhTGFiZWxDb2RlXT1cIm1lbnVUcmlnZ2VyQXJpYUNvZGVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFpc0ljb25cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJsYW5ndWFnZU5hbWVXaXRoRG9tYWluXCJcclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGFuZ3VhZ2U6IGZpcnN0VmlzaWJsZSB9XCI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbGliLW9wZW4tY2xvc2UtYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsYW5ndWFnZUJ1dHRvbiBsZXQtbGFuZ3VhZ2U9XCJsYW5ndWFnZVwiPlxyXG4gIDxidXR0b24gZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlIGFjY2VudC1jb2xvcicgOiBpc0FjdGl2ZShsYW5ndWFnZSl9XCIgbWF0LW1lbnUtaXRlbVxyXG4gICAgKm5nSWY9XCJsYW5ndWFnZVwiIGNsYXNzPVwibGFuZ3VhZ2UtdGl0bGVcIiAoY2xpY2spPVwic2VsZWN0TGFuZ3VhZ2UobGFuZ3VhZ2UpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFuZ3VhZ2UuY29kZSB8IGxhbmd1YWdlVHJhbnNsYXRlXCI+XHJcbiAgICA8c3Bhbj57eyBsYW5ndWFnZS5jb2RlIHwgbGFuZ3VhZ2VUcmFuc2xhdGUgfX08L3NwYW4+Jm5ic3A7XHJcbiAgICA8c3BhbiBjbGFzcz1cImRvbWFpblwiICpuZ0lmPVwibGFuZ3VhZ2Uuc2hvd0RvbWFpblwiPiAoe3tsYW5ndWFnZS5kb21haW4gfCB0cmFuc2xhdGVEb21haW59fSk8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xhbmd1YWdlTmFtZVdpdGhEb21haW4gbGV0LWxhbmd1YWdlPVwibGFuZ3VhZ2VcIj5cclxuICA8c3Bhbj57eyBsYW5ndWFnZS5jb2RlIHwgbGFuZ3VhZ2VUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgPHNwYW4gZnhIaWRlLmx0LXNtICpuZ0lmPVwibGFuZ3VhZ2Uuc2hvd0RvbWFpblwiPlxyXG4gICAgPHNwYW4+Jm5ic3A7KDwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZG9tYWluXCI+e3tsYW5ndWFnZS5kb21haW4gfCB0cmFuc2xhdGVEb21haW59fTwvc3Bhbj5cclxuICAgIDxzcGFuPik8L3NwYW4+XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT4iXX0=
|
|
@@ -72,6 +72,7 @@ export class TldTranslateWebsiteComponent {
|
|
|
72
72
|
translatePagePath; // path to WebTranslationProxy
|
|
73
73
|
clientId;
|
|
74
74
|
appId;
|
|
75
|
+
xApiKey;
|
|
75
76
|
translateServiceUrl;
|
|
76
77
|
switcherOptions;
|
|
77
78
|
onError = new EventEmitter();
|
|
@@ -375,6 +376,7 @@ export class TldTranslateWebsiteComponent {
|
|
|
375
376
|
this.translatePagePath = webtranslateConfig.translatePagePath;
|
|
376
377
|
this.appId = coreConfig.appId;
|
|
377
378
|
this.clientId = coreConfig.clientId;
|
|
379
|
+
this.xApiKey = this.configService.apiV2Config.xApiKey;
|
|
378
380
|
if (this.apiVersion == TranslationApiVersion.V1) {
|
|
379
381
|
this.translateServiceUrl = this.configService.coreConfig.translationServiceUrl;
|
|
380
382
|
}
|
|
@@ -413,6 +415,9 @@ export class TldTranslateWebsiteComponent {
|
|
|
413
415
|
// point this to your own css file
|
|
414
416
|
cssLocation: './assets/webtranslate/widget.css',
|
|
415
417
|
|
|
418
|
+
// x-api-key for authorization
|
|
419
|
+
xApiKey: "${this.xApiKey}",
|
|
420
|
+
|
|
416
421
|
// client id for authorization
|
|
417
422
|
clientId: "${this.clientId}",
|
|
418
423
|
|
|
@@ -535,4 +540,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
535
540
|
}], onError: [{
|
|
536
541
|
type: Output
|
|
537
542
|
}] } });
|
|
538
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS13ZWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXdlYi90bGQtdHJhbnNsYXRlLXdlYi90bGQtdHJhbnNsYXRlLXdlYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtd2ViL3RsZC10cmFuc2xhdGUtd2ViL3RsZC10cmFuc2xhdGUtd2ViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBJLE9BQU8sRUFBaUQsdUJBQXVCLEVBQTJDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEosT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUF3QixjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJekUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENB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LHVCQUF1QixjQUdyQjt3QkFDVixPQUFPLENBQUMsb0JBQW9CLEVBQUU7NEJBRTVCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUVGLFVBQVUsQ0FBQyxRQUFRLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDdEMsQ0FBQztxQkFDSDs7MEJBZ0JFLE1BQU07MkJBQUMsNkJBQTZCOzRDQWJsQixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBZVYsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFWSxhQUFhO3NCQUE5QixTQUFTO3VCQUFDLEtBQUs7Z0JBdUJOLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBOb3RpZmljYXRpb25NZXNzYWdlLCBOb3RpZmljYXRpb25NZXNzYWdlVHlwZSwgU3RhdHVzRGlzcGxheUNvbmZpZywgVGVybWlub2xvZ3lTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vaW5qZWN0aW9uLXRva2Vucyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUJ1dHRvblNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL2NvbXBvbmVudHMvdHJhbnNsYXRlLWJ1dHRvbi90bGQtdHJhbnNsYXRlLWJ1dHRvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZU1lc3NhZ2UsIFRsZE1lc3NhZ2VUeXBlLCBUcmFuc2xhdGlvbkFwaVZlcnNpb24gfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL3RsZC10b29sdGlwL21vZGVscy9zd2l0Y2hlci1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlV2ViU2VydmljZSB9IGZyb20gJy4uL3RsZC10cmFuc2xhdGUtd2ViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhdmFpbGFibGVMYW5ndWFnZXMgfSBmcm9tICcuLy4uLy4uLy4uL2kxOG4vYXZhaWxhYmxlLWxhbmd1YWdlcyc7XHJcblxyXG5cclxuZGVjbGFyZSB2YXIgd2luZG93OiBhbnk7XHJcbndpbmRvdy4kID0gd2luZG93LmpRdWVyeSA9ICQ7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RsZC10cmFuc2xhdGUtd2Vic2l0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RsZC10cmFuc2xhdGUtd2ViLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90bGQtdHJhbnNsYXRlLXdlYi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZUFuaW1hdGlvbicsIFtcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDUwMClcclxuICAgICAgXSksXHJcblxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLFxyXG4gICAgICAgIGFuaW1hdGUoNTAwLCBzdHlsZSh7IGhlaWdodDogMCB9KSkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZVdlYnNpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnaWZyYW1lJykgaWZyYW1lOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVCdXR0b25TZXJ2aWNlOiBUbGRUcmFuc2xhdGVCdXR0b25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydHM6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGxkU3lzdGVtOiBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybWlub2xvZ3lTZXJ2aWNlOiBUZXJtaW5vbG9neVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFRyYW5zbGF0ZVdlYlNlcnZpY2U6IFRsZFRyYW5zbGF0ZVdlYlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBASW5qZWN0KFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGFwaVZlcnNpb246IFRyYW5zbGF0aW9uQXBpVmVyc2lvblxyXG4gICkgeyB9XHJcbiAgQElucHV0KCkgcHJvZHVjdCA9ICcnO1xyXG4gIEBJbnB1dCgpIGNvbXBhbnkgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgndXJsJykgdXJsSW5wdXRGaWVsZDogRWxlbWVudFJlZjtcclxuXHJcbiAgc2V0dGluZ1N5c3RlbUxpc3RGb3JGaXJzdFRpbWU6IGJvb2xlYW47XHJcbiAgdXJsVG9UcmFuc2xhdGUgPSAnJzsgLy8gdHJhbnNsYXRlV2ViX1VybFxyXG4gIHNob3dDYW5jZWwgPSBmYWxzZTtcclxuICBzaG93UmVzdG9yZSA9IGZhbHNlO1xyXG4gIHNob3dUcmFuc2xhdGVCdG4gPSB0cnVlO1xyXG4gIHRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgZGlzYWJsZUJ1dHRvbiA9IGZhbHNlOyAvLyBhY3Rpb25CdXR0b25EaXNhYmxlZFxyXG5cclxuICAvLyBwYXJhbXMgZnJvbSBjb25maWcgc2VydmljZS5cclxuICBsb2dvTG9jYXRpb246IHN0cmluZztcclxuICBkZWJ1ZzogYm9vbGVhbjtcclxuICB3ZWJMYW5nQXV0b2RldGVjdDogYm9vbGVhbjsgLy8gVE9ETyBjaGVjayBpZiByZWFsbHkgbmVlZGVkIC8vIGFmdGVyIHBhZ2UgaXMgbG9hZGVkIGF1dG8gZGV0ZWN0IGxhbmd1YWdlIGFuZCBjaGFuZ2UgYWN0aXZlIHN5c3RlbVxyXG4gIGFsbG93U3VnZ2VzdGlvbnM6IGJvb2xlYW47XHJcbiAgaGlkZVBvcHVwOiBib29sZWFuO1xyXG4gIHRyYW5zbGF0ZVBhZ2VQYXRoOiBzdHJpbmc7IC8vICBwYXRoIHRvIFdlYlRyYW5zbGF0aW9uUHJveHlcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG4gIGFwcElkOiBzdHJpbmc7XHJcbiAgdHJhbnNsYXRlU2VydmljZVVybDogc3RyaW5nO1xyXG5cclxuICBzd2l0Y2hlck9wdGlvbnM6IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucztcclxuXHJcbiAgQE91dHB1dCgpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGFjdGl2ZVN5c3RlbU9iajogQWN0aXZlRGF0YTtcclxuICBtZXNzYWdlczogTm90aWZpY2F0aW9uTWVzc2FnZVtdID0gW107XHJcblxyXG4gIC8vUHJvZ3Jlc3MgYmFyXHJcbiAgbW9kZTogUHJvZ3Jlc3NCYXJNb2RlID0gJ2RldGVybWluYXRlJztcclxuICBwcm9ncmVzc1ZhbHVlID0gMDtcclxuICBzaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBzaG93RW1wdHlWaWV3ID0gdHJ1ZTtcclxuXHJcbiAgZW1wdHlWaWV3Q29uZmlnOiBTdGF0dXNEaXNwbGF5Q29uZmlnID0ge1xyXG4gICAgdGl0bGU6ICdXRUJUUkFOU0xBVEUuTk9fUkVDT1JEUy5USVRMRScsXHJcbiAgICBkZXNjcmlwdGlvbjogJ1dFQlRSQU5TTEFURS5OT19SRUNPUkRTLkRFU0NSSVBUSU9OJyxcclxuICAgIGRlc2NyaXB0aW9uUGFyYW1zOiB7IGhlbHBVcmw6ICcnIH0sXHJcbiAgICBpY29uOiAnbWFuYWdlX3NlYXJjaCcsXHJcbiAgICBlbmFibGVkOiB0cnVlXHJcbiAgfVxyXG5cclxuICBub1N5c3RlbXNFcnJvcjogSVRsZFRyYW5zbGF0ZU1lc3NhZ2UgPSB7IHRleHQ6ICdUTERfVFJBTlNMQVRFLkVSUk9SX05PX1NZU1RFTVNfTE9BREVEJywgdHlwZTogVGxkTWVzc2FnZVR5cGUuRVJST1IgfTtcclxuXHJcbiAgZ2V0IGFjdGlvbkJ1dHRvbkRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlQnV0dG9uOyB9XHJcblxyXG5cclxuICBnZXQgaGlkZUxhbmdNZW51TGFiZWxzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZT8uY29yZUNvbmZpZy5oaWRlTGFuZ01lbnVMYWJlbHM7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4RGlzcGxheWVkTGFuZ3VhZ2VzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcubWF4RGlzcGxheWVkTGFuZ3VhZ2VzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQ29sbGVjdGlvbnNBY3RpdmF0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlPy50ZXJtQ29uZmlnPy5pc0NvbGxlY3Rpb25zQWN0aXZhdGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5zaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgc2FuZGJveCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS53ZWJ0cmFuc2xhdGVDb25maWcuc2FuZGJveDsgfVxyXG5cclxuICByZWFkb25seSB1c2VQYXJlbnRXaWR0aCA9IHRydWU7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNoYW5nZUF1dGgoaXNBdXRoOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5pc0F1dGggPSBpc0F1dGg7XHJcbiAgICB0aGlzLmluaXRpYWxpemVXaWRnZXQoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVXaWRnZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRsZFN5c3RlbS5pbml0KHRoaXMudGxkU3lzdGVtLmdldExhc3RVc2VkU3lzdGVtKCkgPz8gdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcuZGVmYXVsdFN5c3RlbUlkKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmRlYnVnKSB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGF2YWlsYWJsZUxhbmd1YWdlcykge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnNldFRyYW5zbGF0aW9uKGtleSwgYXZhaWxhYmxlTGFuZ3VhZ2VzW2tleV0sIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmlzQXV0aCA9IHRydWU7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShcImVuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdEZyb21Db25maWcoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVdpZGdldCgpO1xyXG5cclxuICAgIHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZURhdGEoKS5waXBlKFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbDogQWN0aXZlRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlU3lzdGVtT2JqID0gdmFsO1xyXG4gICAgICAgIGlmICghdmFsKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3dpdGNoZXJPcHRpb25zID0ge1xyXG4gICAgICAgICAgZG9tYWluczogdmFsLmRvbWFpbnMsXHJcbiAgICAgICAgICBzb3VyY2U6IHsgY29kZTogdmFsLnNvdXJjZUxhbmcubGFuZywgc3lzdGVtSWQ6IHZhbC5zeXN0ZW1JZCB9LFxyXG4gICAgICAgICAgc291cmNlTGFuZ3VhZ2VMaXN0OiB2YWwuc291cmNlTGFuZ0xpc3QsXHJcbiAgICAgICAgICBzeXN0ZW1JZDogdmFsLnN5c3RlbUlkLFxyXG4gICAgICAgICAgc3dhcEFjdGl2ZTogdmFsLnN3YXBMYW5nQWN0aXZlLFxyXG4gICAgICAgICAgdGFyZ2V0OiB7IGNvZGU6IHZhbC50YXJnZXRMYW5nLmxhbmcsIHN5c3RlbUlkOiB2YWwuc3lzdGVtSWQgfSxcclxuICAgICAgICAgIHRhcmdldExhbmd1YWdlTGlzdDogdmFsLnRhcmdldExhbmdMaXN0LFxyXG4gICAgICAgICAgdmVuZG9yczogdmFsLnZlbmRvcnNcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVCdXR0b25TZXJ2aWNlLmdldEFjdGlvbkNsaWNrKCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZUJ1dHRvbkNsaWNrKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWxlcnRzLmdldE1lc3NhZ2VzKCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBOb3RpZmljYXRpb25NZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gTm90aWZpY2F0aW9uTWVzc2FnZVR5cGUuRVJST1IpIHtcclxuICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KG1lc3NhZ2UuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwdXNoaW5nIG9ubHkgXCJvbmUgb2ZcIiBtZXNzYWdlIGluIGFycmF5LCBzbyBzY3JlZW4gaXMgbm90IHNwYW1tZWQgd2l0aCBtZXNzYWdlc1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZSA9IHRoaXMubWVzc2FnZXMuZmluZChtc2cgPT4gbXNnLmJvZHkgPT09IG1lc3NhZ2UuYm9keSAmJiBtc2cudHlwZSA9PT0gbWVzc2FnZS50eXBlICYmIG1zZy50aXRsZSA9PT0gbWVzc2FnZS50aXRsZSk7XHJcbiAgICAgICAgaWYgKCFleGlzdGluZ01lc3NhZ2UpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlLmdldCgnQVBQX05BTUUnKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmFwcE5hbWUgPSB0ZXh0O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB3aW5kb3cub25tZXNzYWdlID0gdGhpcy5yZWNlaXZlTWVzc2FnZS5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnRsZFRyYW5zbGF0ZVdlYlNlcnZpY2Uud3RTY3JpcHRzQWRkZWQpIHtcclxuICAgICAgdGhpcy5hZGRTY3JpcHQoJy4vYXNzZXRzL3dlYnRyYW5zbGF0ZS90cmFuc2xhdGUtd2Vic2l0ZS5qcycpO1xyXG4gICAgICB0aGlzLmFkZENvbmZpZ3VyYXRpb25TY3JpcCgpO1xyXG4gICAgICB0aGlzLmFkZFNjcmlwdCgnLi9hc3NldHMvd2VidHJhbnNsYXRlL3BhZ2UtdHJhbnNsYXRlLXdpZGdldC5qcycpO1xyXG4gICAgICB0aGlzLnRsZFRyYW5zbGF0ZVdlYlNlcnZpY2Uud3RTY3JpcHRzQWRkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9ubWVzc2FnZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dChudWxsKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjZWl2ZU1lc3NhZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgLy8gVE9ETyBhZGQgY29ycmVjdCBvcmlnaW5cclxuICAgIC8vIGlmIChldmVudC5vcmlnaW4gIT09IFwiXCIpXHJcbiAgICAvLyByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuZGVidWcpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5pbmZvKCdNZXNzYWdlIHJlY2VpdmVkIGZyb20gaWZyYW1lOicgKyBKU09OLnN0cmluZ2lmeShldmVudC5kYXRhKSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEubWVzc2FnZSkge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEubWVzc2FnZSkge1xyXG4gICAgICAgIGNhc2UgJ3JlYWR5JzpcclxuICAgICAgICAgIHRoaXMudGxkU3lzdGVtLnN5c0xpc3QucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBzeXN0ZW1MaXN0VG9JZnJhbWUgPSBbXTtcclxuICAgICAgICAgICAgICBkYXRhLmZvckVhY2goKHN5cywgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIHN5c3RlbUxpc3RUb0lmcmFtZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgaWQ6IHN5cy5pZCxcclxuICAgICAgICAgICAgICAgICAgc291cmNlTGFuZ3VhZ2U6IHN5cy5zb3VyY2VMYW5ndWFnZSxcclxuICAgICAgICAgICAgICAgICAgdGFyZ2V0TGFuZ3VhZ2U6IHN5cy50YXJnZXRMYW5ndWFnZSxcclxuICAgICAgICAgICAgICAgICAgbmFtZTogc3lzLnRpdGxlID8/IHN5cy5pZCxcclxuICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxyXG4gICAgICAgICAgICAgICAgICBkb21haW46IHN5cy5kb21haW5cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAvLyBwdXNoIHN5c3RlbSBsaXN0IHRvIGlmcmFtZVxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0dGluZ1N5c3RlbUxpc3RGb3JGaXJzdFRpbWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyBtZXNzYWdlOiAnc2V0U3lzdGVtTGlzdCcsIHN5c3RlbUxpc3Q6IHN5c3RlbUxpc3RUb0lmcmFtZSB9KTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy51cmwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnbG9hZFVybCcsXHJcbiAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy51cmwsXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZUFmdGVyTG9hZDogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cmxUb1RyYW5zbGF0ZSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudXJsO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMudXJsSW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndXJsTG9hZGVkJzpcclxuICAgICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyB3ZWJwYWdlIGZpbmlzaGVkIGxvYWRpbmcsIHNldCB0aGUgZnVsbCB1cmwgaW4gYWRkcmVzcyBib3hcclxuICAgICAgICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSBldmVudC5kYXRhLnVybDtcclxuICAgICAgICAgIHRoaXMuc2hvd1RyYW5zbGF0ZUJ0biA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzdGFydGVkTG9hZGluZyc6XHJcbiAgICAgICAgICB0aGlzLm1vZGUgPSAnaW5kZXRlcm1pbmF0ZSc7XHJcbiAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbXB0eVZpZXcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NhbmNlbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdG9yZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRlQnRuID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50LCAnc2FuZGJveCcsIHRoaXMuc2FuZGJveCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzdG9wcGVkTG9hZGluZyc6XHJcbiAgICAgICAgICBpZiAoIXRoaXMudHJhbnNsYXRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93Q2FuY2VsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1Jlc3RvcmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRlQnRuID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzeXN0ZW1DaGFuZ2VkJzpcclxuICAgICAgICAgIC8vIHNldCBkZWZhdWx0IHN5c3RlbSwgcmlnaHQgYWZ0ZXIgd2ViIHRyYW5zbGF0aW9uIHdpZGdldCBpbiBpZnJhbWUgaXMgbG9hZGVkXHJcbiAgICAgICAgICBpZiAodGhpcy5zZXR0aW5nU3lzdGVtTGlzdEZvckZpcnN0VGltZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdTeXN0ZW1MaXN0Rm9yRmlyc3RUaW1lID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyBtZXNzYWdlOiAnY2hhbmdlU3lzdGVtJywgc3lzdGVtSWQ6IHRoaXMuc3dpdGNoZXJPcHRpb25zLnN5c3RlbUlkIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gaWYgaW5pdGlhdGVkIGJ5IGxhbmd1YWdlIG9mIHRoZSBsb2FkZWQgd2VicGFnZSBiZWluZyBkaWZmZXJlbnRcclxuICAgICAgICAgICAgLy8gdGhhbiBzb3VyY2UgbGFuZ3VhZ2Ugb2YgY3VycmVudGx5IHNlbGVjdGVkICBzeXN0ZW1cclxuICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGNoYW5nZSB0aGUgc3lzdGVtIGluIFVJIGFuZCB3YXJuIHRoZSB1c2VyIGFib3V0IHRoZSBmYWN0XHJcbiAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmF1dG8gJiYgZXZlbnQuZGF0YS5jaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMud2ViTGFuZ0F1dG9kZXRlY3QpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3lzdGVtQ2hhbmdlKGV2ZW50LmRhdGEuc3lzdGVtSWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zd2l0Y2hlck9wdGlvbnMuc3lzdGVtSWQgPSBldmVudC5kYXRhLnN5c3RlbUlkO1xyXG5cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZSh7IG1lc3NhZ2U6ICdjaGFuZ2VTeXN0ZW0nLCBzeXN0ZW1JZDogdGhpcy5zd2l0Y2hlck9wdGlvbnMuc3lzdGVtSWQgfSk7XHJcblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uU3RhcnRlZCc6XHJcbiAgICAgICAgICB0aGlzLm1vZGUgPSAnZGV0ZXJtaW5hdGUnO1xyXG4gICAgICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gMDtcclxuICAgICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIC8vIGRpc2FibGUgc3lzdGVtIGNoYW5nZSwgc2hvdyBjYW5jZWwgYnV0dG9uXHJcbiAgICAgICAgICB0aGlzLnNob3dUcmFuc2xhdGVCdG4gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NhbmNlbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVCdXR0b24gPSB0cnVlOyAgLy8gdG8gZGlzYWJsZVN5c3RlbUNoYW5nZVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uU3RvcHBlZCc6XHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndHJhbnNsYXRlZCc6XHJcbiAgICAgICAgICAvLyBzaG93IHJlc3RvcmUgYnV0dG9uXHJcbiAgICAgICAgICB0aGlzLnNob3dSZXN0b3JlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NhbmNlbCA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndW50cmFuc2xhdGVkJzpcclxuICAgICAgICAgIC8vIGVuYWJsZSBzeXN0ZW0gY2hhbmdlLCBzaG93IHRyYW5zbGF0ZSBidXR0b25cclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdG9yZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q2FuY2VsID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dUcmFuc2xhdGVCdG4gPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncHJvZ3Jlc3MnOlxyXG4gICAgICAgICAgdGhpcy5wcm9ncmVzc1ZhbHVlID0gZXZlbnQuZGF0YS5wcm9ncmVzcztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Vycm9yJzpcclxuICAgICAgICAgIC8vIGVuYWJsZSBzeXN0ZW0gY2hhbmdlLCBzaG93IHRyYW5zbGF0ZSBidXR0b25cclxuICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdG9yZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q2FuY2VsID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dUcmFuc2xhdGVCdG4gPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGNvbnNvbGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihldmVudC5kYXRhLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd3YXJuaW5nJzpcclxuICAgICAgICAgIGlmIChjb25zb2xlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihldmVudC5kYXRhLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VuZE1lc3NhZ2UobWVzc2FnZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kZWJ1Zykge1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxyXG4gICAgICBjb25zb2xlLmluZm8oJ01lc3NhZ2Ugc2VudCB0byBpZnJhbWU6JyArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cucG9zdE1lc3NhZ2UobWVzc2FnZSwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XHJcbiAgfVxyXG5cclxuICByZW1vdmVNZXNzYWdlKGl4OiBudW1iZXIpIHtcclxuICAgIHRoaXMubWVzc2FnZXMuc3BsaWNlKGl4LCAxKTtcclxuICB9XHJcblxyXG4gIHN3YXBMYW5ndWFnZXMoKSB7XHJcbiAgICB0aGlzLnRsZFN5c3RlbS5zd2FwU3lzdGVtTGFuZ3VhZ2VzKCk7XHJcblxyXG4gICAgY29uc3Qgc3lzID0gdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlU3lzdGVtT2JqKCk7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ2NoYW5nZVN5c3RlbScsIHN5c3RlbUlkOiBzeXMuaWQgfSk7XHJcbiAgfVxyXG5cclxuICBzeXN0ZW1DaGFuZ2Uoc3lzdGVtSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlU3lzdGVtKHN5c3RlbUlkKTtcclxuXHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ2NoYW5nZVN5c3RlbScsIHN5c3RlbUlkIH0pO1xyXG4gIH1cclxuXHJcbiAgc291cmNlTGFuZ3VhZ2VDaGFuZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlTGFuZ3VhZ2UobGFuZ3VhZ2UsIHRoaXMuc3dpdGNoZXJPcHRpb25zLnRhcmdldC5jb2RlKTtcclxuXHJcbiAgICBjb25zdCBzeXMgPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyBtZXNzYWdlOiAnY2hhbmdlU3lzdGVtJywgc3lzdGVtSWQ6IHN5cy5pZCB9KTtcclxuICB9XHJcblxyXG4gIHRhcmdldExhbmd1YWdlQ2hhbmdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGxkU3lzdGVtLmNoYW5nZUxhbmd1YWdlKHRoaXMuc3dpdGNoZXJPcHRpb25zLnNvdXJjZS5jb2RlLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgY29uc3Qgc3lzID0gdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlU3lzdGVtT2JqKCk7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ2NoYW5nZVN5c3RlbScsIHN5c3RlbUlkOiBzeXMuaWQgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVCdXR0b25DbGljaygpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQ29sbGVjdGlvbklkID0gdGhpcy50ZXJtaW5vbG9neVNlcnZpY2Uuc2VsZWN0ZWRJZEZvclRyYW5zbGF0aW9uKHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpLmlkKTtcclxuXHJcbiAgICBpZiAodGhpcy51cmxUb1RyYW5zbGF0ZSAhPSAnJykge1xyXG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKHtcclxuICAgICAgICBtZXNzYWdlOiAnbG9hZFVybCcsXHJcbiAgICAgICAgdXJsOiB0aGlzLnVybFRvVHJhbnNsYXRlLFxyXG4gICAgICAgIHRyYW5zbGF0ZUFmdGVyTG9hZDogdHJ1ZSxcclxuICAgICAgICB0ZXJtQ29ycHVzSWQ6IHNlbGVjdGVkQ29sbGVjdGlvbklkXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEJ1dHRvbkNsaWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy51cmxUb1RyYW5zbGF0ZSAhPSAnJykge1xyXG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKHtcclxuICAgICAgICBtZXNzYWdlOiAnbG9hZFVybCcsXHJcbiAgICAgICAgdXJsOiB0aGlzLnVybFRvVHJhbnNsYXRlLFxyXG4gICAgICAgIHRyYW5zbGF0ZUFmdGVyTG9hZDogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclVybFRvVHJhbnNsYXRlKCkge1xyXG4gICAgdGhpcy51cmxUb1RyYW5zbGF0ZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSh7IG1lc3NhZ2U6ICd1bnRyYW5zbGF0ZScgfSk7XHJcbiAgfVxyXG5cclxuICByZXN0b3JlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSh7IG1lc3NhZ2U6ICd1bnRyYW5zbGF0ZScgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRGcm9tQ29uZmlnKCkge1xyXG4gICAgY29uc3QgY29yZUNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnO1xyXG4gICAgY29uc3Qgd2VidHJhbnNsYXRlQ29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLndlYnRyYW5zbGF0ZUNvbmZpZztcclxuICAgIHRoaXMubG9nb0xvY2F0aW9uID0gd2VidHJhbnNsYXRlQ29uZmlnLmxvZ29Mb2NhdGlvbjtcclxuICAgIHRoaXMuZGVidWcgPSB3ZWJ0cmFuc2xhdGVDb25maWcuZGVidWc7XHJcbiAgICB0aGlzLndlYkxhbmdBdXRvZGV0ZWN0ID0gd2VidHJhbnNsYXRlQ29uZmlnLndlYkxhbmdBdXRvZGV0ZWN0OyAvLyBhZnRlciBwYWdlIGlzIGxvYWRlZCBhdXRvIGRldGVjdCBsYW5ndWFnZSBhbmQgY2hhbmdlIGFjdGl2ZSBzeXN0ZW1cclxuICAgIHRoaXMuYWxsb3dTdWdnZXN0aW9ucyA9IHdlYnRyYW5zbGF0ZUNvbmZpZy5hbGxvd1N1Z2dlc3Rpb25zO1xyXG4gICAgdGhpcy5oaWRlUG9wdXAgPSB3ZWJ0cmFuc2xhdGVDb25maWcuaGlkZVBvcHVwO1xyXG4gICAgdGhpcy50cmFuc2xhdGVQYWdlUGF0aCA9IHdlYnRyYW5zbGF0ZUNvbmZpZy50cmFuc2xhdGVQYWdlUGF0aDtcclxuICAgIHRoaXMuYXBwSWQgPSBjb3JlQ29uZmlnLmFwcElkO1xyXG4gICAgdGhpcy5jbGllbnRJZCA9IGNvcmVDb25maWcuY2xpZW50SWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuYXBpVmVyc2lvbiA9PSBUcmFuc2xhdGlvbkFwaVZlcnNpb24uVjEpIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlVXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcudHJhbnNsYXRpb25TZXJ2aWNlVXJsO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFwaVZlcnNpb24gPT0gVHJhbnNsYXRpb25BcGlWZXJzaW9uLlYyKSB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVVybCA9IHRoaXMuY29uZmlnU2VydmljZS5hcGlWMkNvbmZpZy50cmFuc2xhdGlvblVybDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9Ib21lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnJyk7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ3VudHJhbnNsYXRlJyB9KTtcclxuICB9XHJcblxyXG4gIGFkZFNjcmlwdCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29uZmlndXJhdGlvblNjcmlwKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XHJcbiAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICBzY3JpcHQuaW5uZXJIVE1MID0gYFxyXG5cclxuICAgIGlmICh0eXBlb2YgKFRpbGRlKSA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgVGlsZGUgPSB7fTtcclxuXHJcbiAgICAgICAgVGlsZGUuUGFnZVRyYW5zbGF0ZVdpZGdldFNlcnZlckNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlVXJsOiAnJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2VVcmx9JyxcclxuICAgICAgICB9O1xyXG5cclxuICAgIFRpbGRlLlBhZ2VUcmFuc2xhdGVXaWRnZXRDbGllbnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICBUcmFuc2xhdGVQYWdlUHJlZml4OiBsb2NhdGlvbi5ob3N0ICsgJy8ke3RoaXMudHJhbnNsYXRlUGFnZVBhdGh9LycsXHJcblxyXG4gICAgICAgIC8vIFVybCBvZiB0aGUgcGxhY2Ugd2hlcmUgQ1NTIGZvciB0cmFuc2xhdGlvbiB3aWRnZXQgaXMga2VwdFxyXG4gICAgICAgIC8vIGlmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSB0aGUgc3RhbmRhcmQgbGV0c210IHN0eWxlLFxyXG4gICAgICAgIC8vIHBvaW50IHRoaXMgdG8geW91ciBvd24gY3NzIGZpbGVcclxuICAgICAgICBjc3NMb2NhdGlvbjogJy4vYXNzZXRzL3dlYnRyYW5zbGF0ZS93aWRnZXQuY3NzJyxcclxuXHJcbiAgICAgICAgLy8gY2xpZW50IGlkIGZvciBhdXRob3JpemF0aW9uXHJcbiAgICAgICAgY2xpZW50SWQ6IFwiJHt0aGlzLmNsaWVudElkfVwiLFxyXG5cclxuICAgICAgICAvL2FwaSB2ZXJzaW9uXHJcbiAgICAgICAgYXBpVmVyc2lvbjogXCIke3RoaXMuYXBpVmVyc2lvbn1cIiwgIC8vIDAgLSBWMTsgMSAtIFYyXHJcblxyXG4gICAgICAgIC8vIGVuYWJsZSBvciBkaXNhYmxlIG9yaWdpbmFsIHRleHQgcG9wdXBcclxuICAgICAgICBoaWRlUG9wdXA6ICR7dGhpcy5oaWRlUG9wdXB9LFxyXG5cclxuICAgICAgICAvLyBpZCBvZiB0aGUgPGRpdj4gd2hlcmUgdG8gZHJhdyB3aWRnZXRcclxuICAgICAgICB3aWRnZXRDb250YWluZXJJZDogXCJQYWdlVHJhbnNsYXRlV2lkZ2V0XCIsXHJcblxyXG4gICAgICAgIC8vIGF2YWlsYWJsZSB0cmFuc2xhdGlvbiBzeXN0ZW1zICh0YXJnZXQgbGFuZ3VhZ2VzKVxyXG4gICAgICAgIHRyYW5zbGF0aW9uU3lzdGVtczogW10sXHJcblxyXG4gICAgICAgIC8vIHNvdXJjZSBsYW5ndWFnZSBvZiB0aGUgcGFnZSB0aGF0IG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWRcclxuICAgICAgICBsYW5ndWFnZTogXCJlblwiLFxyXG5cclxuICAgICAgICAvLyB0cmFuc2xhdGUgd2lkZ2V0IFVJIHRvIGxhbmd1YWdlIHRoYXQgaXMgY2hvc2VuIGluIHRhcmdldCBsYW5ndWFnZSBkcm9wZG93blxyXG4gICAgICAgIHRyYW5zbGF0ZVVJdG9DaG9zZW5MYW5ndWFnZTogZmFsc2UsXHJcblxyXG4gICAgICAgIC8vIHRyYW5zbGF0ZSB3aWRnZXQgYWRtaW5pc3RyYXRpdmUgcGFydCB0byBsYW5ndWFnZSB0aGF0IGlzIGNob3NlbiBpbiB0YXJnZXQgbGFuZ3VhZ2UgZHJvcGRvd25cclxuICAgICAgICB0cmFuc2xhdGVBZG1pblVJdG9DaG9zZW5MYW5ndWFnZTogZmFsc2UsXHJcblxyXG4gICAgICAgIHVpTGFuZ3VhZ2U6IFwiJHt0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ31cIixcclxuXHJcbiAgICAgICAgLy8gaWYgcGFnZSB3YXMgdHJhbnNsYXRlZCBhbmQgeW91IGNsaWNrIG9uIGEgbGlua1xyXG4gICAgICAgIC8vIHRoYXQgZ29lcyB0byBhbm90aGVyIHBhZ2UgaW4gdGhlIHNhbWUgc2l0ZSxcclxuICAgICAgICAvLyB0aGVuIHRyYW5zbGF0ZSB0aGUgbmV3bHkgb3BlbmVkIHBhZ2UgYWxzb1xyXG4gICAgICAgIHRyYW5zbGF0ZUFmdGVyTmF2aWdhdGlvbjogdHJ1ZSxcclxuXHJcbiAgICAgICAgLy8gdHJ1ZSAtIGxhbmd1YWdlIGxpc3QgaXMgc2hvd24gYXMgbGlua3NcclxuICAgICAgICAvLyBmYWxzZSAtIGxhbmd1YWdlIGxpc3QgaXMgc2hvd24gYXMgZHJvcGRvd24gbGlzdCBhbmQgXCJ0cmFuc2xhdGVcIiBidXR0b25cclxuICAgICAgICBsYW5ndWFnZUxpc3RBc0xpbmtzOiBmYWxzZSxcclxuXHJcbiAgICAgICAgc2hvd0hlYWRlcjogZmFsc2UsXHJcblxyXG4gICAgICAgIHNob3dUcmFuc2xhdGlvblN1Z2dlc3Rpb25BZG1pblBhZ2U6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBhZnRlciB0cmFuc2xhdGlvbiBzaG93IGEgd2FybmluZyB0aGF0IHBhZ2UgaXMgbWFjaGluZSB0cmFuc2xhdGVkIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2VcclxuICAgICAgICBzaG93TWFjaGluZVRyYW5zbGF0aW9uV2FybmluZ0FmdGVyVHJhbnNsYXRpb246IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBzaG93IGFsbCBhdmFpbGFibGUgdHJhbnNsYXRpb24gc3lzdGVtcyBpbnN0ZWFkIG9mIGp1c3QgdGhlIG9uZXMgY29uZmlndXJlZCBpbiB0aGlzIGZpbGVcclxuICAgICAgICBzaG93QWxsVHJhbnNsYXRpb25TeXN0ZW1zOiBmYWxzZSxcclxuXHJcbiAgICAgICAgLy8gYWRkIHNvbWUgcGl4ZWxzIHRvIGRyb3Bkb3duIHBhZGRpbmcgdG8gbWFrZSBpdCBsb29rIG1vcmUgc2ltaWxhciBvbiBkaWZmZXJlbnQgYnJvd3NlcnNcclxuICAgICAgICBicm93c2VyU3BlY2lmaWNEcm9wZG93blBhZGRpbmc6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBuYW1lIG9mIGljb24gc2V0OiBcImRlZmF1bHRcIiwgXCJ3aGl0ZVwiLCBcImdyZXlcIiwgXCJyZWRcIlxyXG4gICAgICAgIGljb25TZXQ6IFwid2hpdGVcIixcclxuXHJcbiAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzOiAxLCAyLCAzLiBUZXh0IGZvciBsaW5rIFwiUmVzdG9yZSBvcmlnaW5hbDogTGF0dmlhblwiIG1heSBiZSBtYWRlIHNob3J0ZXIgb3IgbG9uZ2VyXHJcbiAgICAgICAgLy8gdXNlZnVsIHRvIGFkYXB0IHRvIHNtYWxsIG9yIGxhcmdlIHNjcmVlbnNcclxuICAgICAgICByZXN0b3JlT3JpZ2luYWxMaW5rTGVuZ3RoOiAyLFxyXG5cclxuICAgICAgICAvLyBlbmFibGUgb3IgZGlzYWJsZSBcIlN1Z2dlc3QgdHJhbnNsYXRpb25cIiBsaW5rIGluIHBvcHVwIHRoYXQgc2hvd3Mgb3JpZ2luYWwgdGV4dCBvZiB0cmFuc2xhdGVkIHNlbnRlbmNlXHJcbiAgICAgICAgc3VnZ2VzdFRyYW5zbGF0aW9uOiAke3RoaXMuYWxsb3dTdWdnZXN0aW9uc30sXHJcblxyXG4gICAgICAgIC8vIHNob3cgbWVzc2FnZSBib3ggd2hlbiBlcnJvciBoYXBwZW5zP1xyXG4gICAgICAgIHNob3dNZXNzYWdlQm94T25FcnJvcjogZmFsc2UsXHJcblxyXG4gICAgICAgIC8vIGFwcGxpY2F0aW9uIGlkZW50aWZpZXJcclxuICAgICAgICBhcHBJZDogXCIke3RoaXMuYXBwSWR9XCIsXHJcblxyXG4gICAgICAgIC8vIHNlcnZlciB3aWxsIG9ubHkgcmV0dXJuIHN5c3RlbXMgdGhhdCBhcmUgbWVhbnQgZm9yIGdpdmVuIGFwcElkXHJcbiAgICAgICAgZmlsdGVyU3lzdGVtc0J5QXBwSWQ6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBzaG93IGhlbHAgbGlua1xyXG4gICAgICAgIGVuYWJsZUhlbHA6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBzaG93IGZlZWRiYWNrIGxpbmtcclxuICAgICAgICBlbmFibGVGZWVkYmFjazogZmFsc2UsXHJcblxyXG4gICAgICAgIC8vIGFsbG93ZWQgc3lzdGVtIHN0YXR1c2VzLCBieSBkZWZhdWx0IG9ubHkgXCJydW5uaW5nXCJcclxuICAgICAgICBhbGxvd2VkU3lzdGVtU3RhdHVzZXM6IFwicnVubmluZ1wiLFxyXG5cclxuICAgICAgICAvLyBwYXNzZWQgdG8gdHJhbnNsYXRpb24gc2VydmljZSBmb3IgbG9nZ2luZy5cclxuICAgICAgICAvLyBcIndlYi1lbWJlZGRlZFwiIGZvciB3aWRnZXQgdGhhdCBpcyBlbWJlZGRlZCBpbiBodG1sIHBhZ2UsXHJcbiAgICAgICAgLy8gXCJ3ZWJcIiBmb3Igd2lkZ2V0IHRoYXQgY2FuIGxvYWQgYW5kIHRyYW5zbGF0ZSBhbnkgd2Vic2l0ZVxyXG4gICAgICAgIHdpZGdldDogXCJ3ZWJcIlxyXG4gICAgfTtcclxuICAgIGA7XHJcbiAgICBib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJ3aWRnZXRcIiBjbGFzcz1cInRsZC10cmFuc2xhdGUtd2ViXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS1jb250YWluZXItaGVhZGVyXCI+XHJcbiAgICA8YSBocmVmPVwiL1wiIGlkPVwiaG9tZS1saW5rXCIgW2F0dHIudGl0bGVdPVwiJ1dFQlRSQU5TTEFURS5CQUNLJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwibG9nb0xvY2F0aW9uXCIgYWx0PVwibG9nb1wiPlxyXG4gICAgICA8bGliLWNvbXBhbnktcHJvZHVjdCAqbmdJZj1cImNvbXBhbnkgJiYgcHJvZHVjdFwiIFtjb21wYW55XT1cImNvbXBhbnlcIiBbcHJvZHVjdF09XCJwcm9kdWN0XCI+PC9saWItY29tcGFueS1wcm9kdWN0PlxyXG4gICAgPC9hPlxyXG4gICAgPGRpdiBbbmdDbGFzcy5sdC1zbV09XCIndGxkLXRyYW5zbGF0ZS1tb2JpbGUnXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cImFkZHJlc3Mtd3JhcHBlclwiPlxyXG4gICAgICAgIDxhIChjbGljayk9XCJnb1RvSG9tZSgpXCIgW2F0dHIudGl0bGVdPVwiJ1dFQlRSQU5TTEFURS5CQUNLJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwJVwiIGNsYXNzPVwiYWRkcmVzcy1pbnB1dFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1dFQlRSQU5TTEFURS5TRUFSQ0gnIHwgdHJhbnNsYXRlXCIgdHlwZT1cInVybFwiICN1cmwgY2xhc3M9XCJ1cmxcIiBhdXRvZm9jdXM9XCJhdXRvZm9jdXNcIiBbKG5nTW9kZWwpXT1cInVybFRvVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9hZEJ1dHRvbkNsaWNrZWQoKVwiIC8+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInVybFRvVHJhbnNsYXRlXCIgW2lubGluZV09XCJ0cnVlXCIgKGNsaWNrKT1cImNsZWFyVXJsVG9UcmFuc2xhdGUoKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRsZC10cmFuc2xhdGUtc3dpdGNoZXItd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleD5cclxuICAgICAgICAgIDx0bGQtdHJhbnNsYXRlLXN3aXRjaGVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3dpdGNoZXJPcHRpb25zXCJcclxuICAgICAgICAgICAgW2lzQ29sbGVjdGlvbnNBY3RpdmF0ZWRdPVwiaXNDb2xsZWN0aW9uc0FjdGl2YXRlZFwiXHJcbiAgICAgICAgICAgIFt1c2VQYXJlbnRXaWR0aF09XCJ1c2VQYXJlbnRXaWR0aFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25CdXR0b25EaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJzd2l0Y2hlck9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbc2hvd1RyYW5zbGF0ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtoaWRlT25TbWFsbFNjcmVlbnNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbaGlkZUxhbmdNZW51TGFiZWxzXT1cImhpZGVMYW5nTWVudUxhYmVsc1wiXHJcbiAgICAgICAgICAgIFttYXhEaXNwbGF5ZWRMYW5ndWFnZXNdPVwibWF4RGlzcGxheWVkTGFuZ3VhZ2VzXCJcclxuICAgICAgICAgICAgW3Nob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZV09XCJzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWVcIlxyXG4gICAgICAgICAgICAob25Eb21haW5DaGFuZ2UpPVwic3lzdGVtQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25BY3Rpb25DbGljayk9XCJ0cmFuc2xhdGVCdXR0b25DbGljaygpXCJcclxuICAgICAgICAgICAgKG9uTGFuZ3VhZ2VTd2FwKT1cInN3YXBMYW5ndWFnZXMoKVwiXHJcbiAgICAgICAgICAgIChvblNvdXJjZUxhbmd1YWdlQ2hhbmdlKT1cInNvdXJjZUxhbmd1YWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25UYXJnZXRMYW5ndWFnZUNoYW5nZSk9XCJ0YXJnZXRMYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L3RsZC10cmFuc2xhdGUtc3dpdGNoZXI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJhY3Rpb24tYnRuLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHRsZC10cmFuc2xhdGUtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93VHJhbnNsYXRlQnRuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN3aXRjaGVyLXRyYW5zbGF0ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25CdXR0b25EaXNhYmxlZCB8fCAhdXJsVG9UcmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPC90bGQtdHJhbnNsYXRlLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWxcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPnt7J1dFQlRSQU5TTEFURS5DQU5DRUwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dSZXN0b3JlXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cInJlc3RvcmUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZXN0b3JlLWJ1dHRvblwiPnt7J1dFQlRSQU5TTEFURS5SRVNUT1JFJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBpZD1cIndlYnNpdGUtZnJhbWUtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cInNob3dQcm9ncmVzc1wiIGNvbG9yPVwiYWNjZW50XCIgW21vZGVdPVwibW9kZVwiIFt2YWx1ZV09XCJwcm9ncmVzc1ZhbHVlXCI+XHJcbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICA8bGliLXRsZC1ub3RpZmljYXRpb24tbWVzc2FnZSBbQG9wZW5DbG9zZUFuaW1hdGlvbl0gKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXM7IGxldCBpeCA9IGluZGV4XCIgW21lc3NhZ2VdPVwibWVzc2FnZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrZWQpPVwicmVtb3ZlTWVzc2FnZShpeClcIj48L2xpYi10bGQtbm90aWZpY2F0aW9uLW1lc3NhZ2U+XHJcbiAgICBcclxuICAgIDxpZnJhbWUgI2lmcmFtZSBbY2xhc3MuaC1mdWxsXT1cIiFzaG93RW1wdHlWaWV3XCIgaWQ9XCJsZXRzbXQtdHJhbnNsYXRlLXBhZ2UtaWZyYW1lXCIgbmFtZT1cImxldHNtdFRyYW5zbGF0ZVBhZ2VJZnJhbWVcIiBzcmM9XCJhYm91dDpibGFua1wiPjwvaWZyYW1lPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bGliLXN0YXR1cy1kaXNwbGF5ICpuZ0lmPVwic2hvd0VtcHR5Vmlld1wiIFtjb25maWddPVwiZW1wdHlWaWV3Q29uZmlnXCI+PC9saWItc3RhdHVzLWRpc3BsYXk+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
543
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS13ZWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXdlYi90bGQtdHJhbnNsYXRlLXdlYi90bGQtdHJhbnNsYXRlLXdlYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtd2ViL3RsZC10cmFuc2xhdGUtd2ViL3RsZC10cmFuc2xhdGUtd2ViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBJLE9BQU8sRUFBaUQsdUJBQXVCLEVBQTJDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEosT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUF3QixjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJekUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENB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RyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsQ0FBQztTQUNIOzs0RkFFVSw0QkFBNEI7a0JBakJ4QyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQjt3QkFDVixPQUFPLENBQUMsb0JBQW9CLEVBQUU7NEJBRTVCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUVGLFVBQVUsQ0FBQyxRQUFRLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDdEMsQ0FBQztxQkFDSDs7MEJBZ0JFLE1BQU07MkJBQUMsNkJBQTZCOzRDQWJsQixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBZVYsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFWSxhQUFhO3NCQUE5QixTQUFTO3VCQUFDLEtBQUs7Z0JBd0JOLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBOb3RpZmljYXRpb25NZXNzYWdlLCBOb3RpZmljYXRpb25NZXNzYWdlVHlwZSwgU3RhdHVzRGlzcGxheUNvbmZpZywgVGVybWlub2xvZ3lTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vaW5qZWN0aW9uLXRva2Vucyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUJ1dHRvblNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL2NvbXBvbmVudHMvdHJhbnNsYXRlLWJ1dHRvbi90bGQtdHJhbnNsYXRlLWJ1dHRvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZU1lc3NhZ2UsIFRsZE1lc3NhZ2VUeXBlLCBUcmFuc2xhdGlvbkFwaVZlcnNpb24gfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElTd2l0Y2hlclRyYW5zbGF0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL3RsZC10b29sdGlwL21vZGVscy9zd2l0Y2hlci1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlV2ViU2VydmljZSB9IGZyb20gJy4uL3RsZC10cmFuc2xhdGUtd2ViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhdmFpbGFibGVMYW5ndWFnZXMgfSBmcm9tICcuLy4uLy4uLy4uL2kxOG4vYXZhaWxhYmxlLWxhbmd1YWdlcyc7XHJcblxyXG5cclxuZGVjbGFyZSB2YXIgd2luZG93OiBhbnk7XHJcbndpbmRvdy4kID0gd2luZG93LmpRdWVyeSA9ICQ7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RsZC10cmFuc2xhdGUtd2Vic2l0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RsZC10cmFuc2xhdGUtd2ViLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90bGQtdHJhbnNsYXRlLXdlYi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZUFuaW1hdGlvbicsIFtcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogMCB9KSxcclxuICAgICAgICBhbmltYXRlKDUwMClcclxuICAgICAgXSksXHJcblxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLFxyXG4gICAgICAgIGFuaW1hdGUoNTAwLCBzdHlsZSh7IGhlaWdodDogMCB9KSkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZVdlYnNpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnaWZyYW1lJykgaWZyYW1lOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVCdXR0b25TZXJ2aWNlOiBUbGRUcmFuc2xhdGVCdXR0b25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydHM6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGxkU3lzdGVtOiBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybWlub2xvZ3lTZXJ2aWNlOiBUZXJtaW5vbG9neVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFRyYW5zbGF0ZVdlYlNlcnZpY2U6IFRsZFRyYW5zbGF0ZVdlYlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBASW5qZWN0KFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGFwaVZlcnNpb246IFRyYW5zbGF0aW9uQXBpVmVyc2lvblxyXG4gICkgeyB9XHJcbiAgQElucHV0KCkgcHJvZHVjdCA9ICcnO1xyXG4gIEBJbnB1dCgpIGNvbXBhbnkgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgndXJsJykgdXJsSW5wdXRGaWVsZDogRWxlbWVudFJlZjtcclxuXHJcbiAgc2V0dGluZ1N5c3RlbUxpc3RGb3JGaXJzdFRpbWU6IGJvb2xlYW47XHJcbiAgdXJsVG9UcmFuc2xhdGUgPSAnJzsgLy8gdHJhbnNsYXRlV2ViX1VybFxyXG4gIHNob3dDYW5jZWwgPSBmYWxzZTtcclxuICBzaG93UmVzdG9yZSA9IGZhbHNlO1xyXG4gIHNob3dUcmFuc2xhdGVCdG4gPSB0cnVlO1xyXG4gIHRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgZGlzYWJsZUJ1dHRvbiA9IGZhbHNlOyAvLyBhY3Rpb25CdXR0b25EaXNhYmxlZFxyXG5cclxuICAvLyBwYXJhbXMgZnJvbSBjb25maWcgc2VydmljZS5cclxuICBsb2dvTG9jYXRpb246IHN0cmluZztcclxuICBkZWJ1ZzogYm9vbGVhbjtcclxuICB3ZWJMYW5nQXV0b2RldGVjdDogYm9vbGVhbjsgLy8gVE9ETyBjaGVjayBpZiByZWFsbHkgbmVlZGVkIC8vIGFmdGVyIHBhZ2UgaXMgbG9hZGVkIGF1dG8gZGV0ZWN0IGxhbmd1YWdlIGFuZCBjaGFuZ2UgYWN0aXZlIHN5c3RlbVxyXG4gIGFsbG93U3VnZ2VzdGlvbnM6IGJvb2xlYW47XHJcbiAgaGlkZVBvcHVwOiBib29sZWFuO1xyXG4gIHRyYW5zbGF0ZVBhZ2VQYXRoOiBzdHJpbmc7IC8vICBwYXRoIHRvIFdlYlRyYW5zbGF0aW9uUHJveHlcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG4gIGFwcElkOiBzdHJpbmc7XHJcbiAgeEFwaUtleTogc3RyaW5nO1xyXG4gIHRyYW5zbGF0ZVNlcnZpY2VVcmw6IHN0cmluZztcclxuXHJcbiAgc3dpdGNoZXJPcHRpb25zOiBJU3dpdGNoZXJUcmFuc2xhdGlvbk9wdGlvbnM7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBhY3RpdmVTeXN0ZW1PYmo6IEFjdGl2ZURhdGE7XHJcbiAgbWVzc2FnZXM6IE5vdGlmaWNhdGlvbk1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICAvL1Byb2dyZXNzIGJhclxyXG4gIG1vZGU6IFByb2dyZXNzQmFyTW9kZSA9ICdkZXRlcm1pbmF0ZSc7XHJcbiAgcHJvZ3Jlc3NWYWx1ZSA9IDA7XHJcbiAgc2hvd1Byb2dyZXNzID0gZmFsc2U7XHJcbiAgc2hvd0VtcHR5VmlldyA9IHRydWU7XHJcblxyXG4gIGVtcHR5Vmlld0NvbmZpZzogU3RhdHVzRGlzcGxheUNvbmZpZyA9IHtcclxuICAgIHRpdGxlOiAnV0VCVFJBTlNMQVRFLk5PX1JFQ09SRFMuVElUTEUnLFxyXG4gICAgZGVzY3JpcHRpb246ICdXRUJUUkFOU0xBVEUuTk9fUkVDT1JEUy5ERVNDUklQVElPTicsXHJcbiAgICBkZXNjcmlwdGlvblBhcmFtczogeyBoZWxwVXJsOiAnJyB9LFxyXG4gICAgaWNvbjogJ21hbmFnZV9zZWFyY2gnLFxyXG4gICAgZW5hYmxlZDogdHJ1ZVxyXG4gIH1cclxuXHJcbiAgbm9TeXN0ZW1zRXJyb3I6IElUbGRUcmFuc2xhdGVNZXNzYWdlID0geyB0ZXh0OiAnVExEX1RSQU5TTEFURS5FUlJPUl9OT19TWVNURU1TX0xPQURFRCcsIHR5cGU6IFRsZE1lc3NhZ2VUeXBlLkVSUk9SIH07XHJcblxyXG4gIGdldCBhY3Rpb25CdXR0b25EaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZUJ1dHRvbjsgfVxyXG5cclxuXHJcbiAgZ2V0IGhpZGVMYW5nTWVudUxhYmVscygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvcmVDb25maWcuaGlkZUxhbmdNZW51TGFiZWxzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERpc3BsYXllZExhbmd1YWdlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLm1heERpc3BsYXllZExhbmd1YWdlcztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxlY3Rpb25zQWN0aXZhdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZT8udGVybUNvbmZpZz8uaXNDb2xsZWN0aW9uc0FjdGl2YXRlZDtcclxuICB9XHJcblxyXG4gIGdldCBzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcuc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNhbmRib3goKSB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2Uud2VidHJhbnNsYXRlQ29uZmlnLnNhbmRib3g7IH1cclxuXHJcbiAgcmVhZG9ubHkgdXNlUGFyZW50V2lkdGggPSB0cnVlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjaGFuZ2VBdXRoKGlzQXV0aDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcuaXNBdXRoID0gaXNBdXRoO1xyXG4gICAgdGhpcy5pbml0aWFsaXplV2lkZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV2lkZ2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uaW5pdCh0aGlzLnRsZFN5c3RlbS5nZXRMYXN0VXNlZFN5c3RlbSgpID8/IHRoaXMuY29uZmlnU2VydmljZS5jb3JlQ29uZmlnLmRlZmF1bHRTeXN0ZW1JZCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5kZWJ1Zykge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBhdmFpbGFibGVMYW5ndWFnZXMpIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5zZXRUcmFuc2xhdGlvbihrZXksIGF2YWlsYWJsZUxhbmd1YWdlc1trZXldLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5pc0F1dGggPSB0cnVlO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZS51c2UoXCJlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRGcm9tQ29uZmlnKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVXaWRnZXQoKTtcclxuXHJcbiAgICB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVEYXRhKCkucGlwZShcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWw6IEFjdGl2ZURhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2ZVN5c3RlbU9iaiA9IHZhbDtcclxuICAgICAgICBpZiAoIXZhbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN3aXRjaGVyT3B0aW9ucyA9IHtcclxuICAgICAgICAgIGRvbWFpbnM6IHZhbC5kb21haW5zLFxyXG4gICAgICAgICAgc291cmNlOiB7IGNvZGU6IHZhbC5zb3VyY2VMYW5nLmxhbmcsIHN5c3RlbUlkOiB2YWwuc3lzdGVtSWQgfSxcclxuICAgICAgICAgIHNvdXJjZUxhbmd1YWdlTGlzdDogdmFsLnNvdXJjZUxhbmdMaXN0LFxyXG4gICAgICAgICAgc3lzdGVtSWQ6IHZhbC5zeXN0ZW1JZCxcclxuICAgICAgICAgIHN3YXBBY3RpdmU6IHZhbC5zd2FwTGFuZ0FjdGl2ZSxcclxuICAgICAgICAgIHRhcmdldDogeyBjb2RlOiB2YWwudGFyZ2V0TGFuZy5sYW5nLCBzeXN0ZW1JZDogdmFsLnN5c3RlbUlkIH0sXHJcbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZUxpc3Q6IHZhbC50YXJnZXRMYW5nTGlzdCxcclxuICAgICAgICAgIHZlbmRvcnM6IHZhbC52ZW5kb3JzXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlQnV0dG9uU2VydmljZS5nZXRBY3Rpb25DbGljaygpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVCdXR0b25DbGljaygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFsZXJ0cy5nZXRNZXNzYWdlcygpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogTm90aWZpY2F0aW9uTWVzc2FnZSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLkVSUk9SKSB7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChtZXNzYWdlLmVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHVzaGluZyBvbmx5IFwib25lIG9mXCIgbWVzc2FnZSBpbiBhcnJheSwgc28gc2NyZWVuIGlzIG5vdCBzcGFtbWVkIHdpdGggbWVzc2FnZXNcclxuICAgICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzLmZpbmQobXNnID0+IG1zZy5ib2R5ID09PSBtZXNzYWdlLmJvZHkgJiYgbXNnLnR5cGUgPT09IG1lc3NhZ2UudHlwZSAmJiBtc2cudGl0bGUgPT09IG1lc3NhZ2UudGl0bGUpO1xyXG4gICAgICAgIGlmICghZXhpc3RpbmdNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0FQUF9OQU1FJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZy5hcHBOYW1lID0gdGV4dDtcclxuICAgICAgfSk7XHJcblxyXG4gICAgd2luZG93Lm9ubWVzc2FnZSA9IHRoaXMucmVjZWl2ZU1lc3NhZ2UuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50bGRUcmFuc2xhdGVXZWJTZXJ2aWNlLnd0U2NyaXB0c0FkZGVkKSB7XHJcbiAgICAgIHRoaXMuYWRkU2NyaXB0KCcuL2Fzc2V0cy93ZWJ0cmFuc2xhdGUvdHJhbnNsYXRlLXdlYnNpdGUuanMnKTtcclxuICAgICAgdGhpcy5hZGRDb25maWd1cmF0aW9uU2NyaXAoKTtcclxuICAgICAgdGhpcy5hZGRTY3JpcHQoJy4vYXNzZXRzL3dlYnRyYW5zbGF0ZS9wYWdlLXRyYW5zbGF0ZS13aWRnZXQuanMnKTtcclxuICAgICAgdGhpcy50bGRUcmFuc2xhdGVXZWJTZXJ2aWNlLnd0U2NyaXB0c0FkZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlY2VpdmVNZXNzYWdlKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIFRPRE8gYWRkIGNvcnJlY3Qgb3JpZ2luXHJcbiAgICAvLyBpZiAoZXZlbnQub3JpZ2luICE9PSBcIlwiKVxyXG4gICAgLy8gcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmRlYnVnKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUuaW5mbygnTWVzc2FnZSByZWNlaXZlZCBmcm9tIGlmcmFtZTonICsgSlNPTi5zdHJpbmdpZnkoZXZlbnQuZGF0YSkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLm1lc3NhZ2UpIHtcclxuICAgICAgc3dpdGNoIChldmVudC5kYXRhLm1lc3NhZ2UpIHtcclxuICAgICAgICBjYXNlICdyZWFkeSc6XHJcbiAgICAgICAgICB0aGlzLnRsZFN5c3RlbS5zeXNMaXN0LnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgICBsZXQgc3lzdGVtTGlzdFRvSWZyYW1lID0gW107XHJcbiAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKChzeXMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzeXN0ZW1MaXN0VG9JZnJhbWUucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGlkOiBzeXMuaWQsXHJcbiAgICAgICAgICAgICAgICAgIHNvdXJjZUxhbmd1YWdlOiBzeXMuc291cmNlTGFuZ3VhZ2UsXHJcbiAgICAgICAgICAgICAgICAgIHRhcmdldExhbmd1YWdlOiBzeXMudGFyZ2V0TGFuZ3VhZ2UsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHN5cy50aXRsZSA/PyBzeXMuaWQsXHJcbiAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgZG9tYWluOiBzeXMuZG9tYWluXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gcHVzaCBzeXN0ZW0gbGlzdCB0byBpZnJhbWVcclxuICAgICAgICAgICAgICB0aGlzLnNldHRpbmdTeXN0ZW1MaXN0Rm9yRmlyc3RUaW1lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ3NldFN5c3RlbUxpc3QnLCBzeXN0ZW1MaXN0OiBzeXN0ZW1MaXN0VG9JZnJhbWUgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudXJsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ2xvYWRVcmwnLFxyXG4gICAgICAgICAgICAgICAgICB1cmw6IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudXJsLFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGVBZnRlckxvYWQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLnVybDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLnVybElucHV0RmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3VybExvYWRlZCc6XHJcbiAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gd2VicGFnZSBmaW5pc2hlZCBsb2FkaW5nLCBzZXQgdGhlIGZ1bGwgdXJsIGluIGFkZHJlc3MgYm94XHJcbiAgICAgICAgICB0aGlzLnVybFRvVHJhbnNsYXRlID0gZXZlbnQuZGF0YS51cmw7XHJcbiAgICAgICAgICB0aGlzLnNob3dUcmFuc2xhdGVCdG4gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3RhcnRlZExvYWRpbmcnOlxyXG4gICAgICAgICAgdGhpcy5tb2RlID0gJ2luZGV0ZXJtaW5hdGUnO1xyXG4gICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93RW1wdHlWaWV3ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dDYW5jZWwgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3RvcmUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1RyYW5zbGF0ZUJ0biA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudCwgJ3NhbmRib3gnLCB0aGlzLnNhbmRib3gpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3RvcHBlZExvYWRpbmcnOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLnRyYW5zbGF0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0NhbmNlbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dSZXN0b3JlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1RyYW5zbGF0ZUJ0biA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3lzdGVtQ2hhbmdlZCc6XHJcbiAgICAgICAgICAvLyBzZXQgZGVmYXVsdCBzeXN0ZW0sIHJpZ2h0IGFmdGVyIHdlYiB0cmFuc2xhdGlvbiB3aWRnZXQgaW4gaWZyYW1lIGlzIGxvYWRlZFxyXG4gICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ1N5c3RlbUxpc3RGb3JGaXJzdFRpbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nU3lzdGVtTGlzdEZvckZpcnN0VGltZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ2NoYW5nZVN5c3RlbScsIHN5c3RlbUlkOiB0aGlzLnN3aXRjaGVyT3B0aW9ucy5zeXN0ZW1JZCB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGlmIGluaXRpYXRlZCBieSBsYW5ndWFnZSBvZiB0aGUgbG9hZGVkIHdlYnBhZ2UgYmVpbmcgZGlmZmVyZW50XHJcbiAgICAgICAgICAgIC8vIHRoYW4gc291cmNlIGxhbmd1YWdlIG9mIGN1cnJlbnRseSBzZWxlY3RlZCAgc3lzdGVtXHJcbiAgICAgICAgICAgIC8vIHdlIHNob3VsZCBjaGFuZ2UgdGhlIHN5c3RlbSBpbiBVSSBhbmQgd2FybiB0aGUgdXNlciBhYm91dCB0aGUgZmFjdFxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5hdXRvICYmIGV2ZW50LmRhdGEuY2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLndlYkxhbmdBdXRvZGV0ZWN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN5c3RlbUNoYW5nZShldmVudC5kYXRhLnN5c3RlbUlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3dpdGNoZXJPcHRpb25zLnN5c3RlbUlkID0gZXZlbnQuZGF0YS5zeXN0ZW1JZDtcclxuXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyBtZXNzYWdlOiAnY2hhbmdlU3lzdGVtJywgc3lzdGVtSWQ6IHRoaXMuc3dpdGNoZXJPcHRpb25zLnN5c3RlbUlkIH0pO1xyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0cmFuc2xhdGlvblN0YXJ0ZWQnOlxyXG4gICAgICAgICAgdGhpcy5tb2RlID0gJ2RldGVybWluYXRlJztcclxuICAgICAgICAgIHRoaXMucHJvZ3Jlc3NWYWx1ZSA9IDA7XHJcbiAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAvLyBkaXNhYmxlIHN5c3RlbSBjaGFuZ2UsIHNob3cgY2FuY2VsIGJ1dHRvblxyXG4gICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRlQnRuID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dDYW5jZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uID0gdHJ1ZTsgIC8vIHRvIGRpc2FibGVTeXN0ZW1DaGFuZ2VcclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0cmFuc2xhdGlvblN0b3BwZWQnOlxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0ZWQnOlxyXG4gICAgICAgICAgLy8gc2hvdyByZXN0b3JlIGJ1dHRvblxyXG4gICAgICAgICAgdGhpcy5zaG93UmVzdG9yZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDYW5jZWwgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3VudHJhbnNsYXRlZCc6XHJcbiAgICAgICAgICAvLyBlbmFibGUgc3lzdGVtIGNoYW5nZSwgc2hvdyB0cmFuc2xhdGUgYnV0dG9uXHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3RvcmUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NhbmNlbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRlQnRuID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3Byb2dyZXNzJzpcclxuICAgICAgICAgIHRoaXMucHJvZ3Jlc3NWYWx1ZSA9IGV2ZW50LmRhdGEucHJvZ3Jlc3M7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlcnJvcic6XHJcbiAgICAgICAgICAvLyBlbmFibGUgc3lzdGVtIGNoYW5nZSwgc2hvdyB0cmFuc2xhdGUgYnV0dG9uXHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVCdXR0b24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jlc3RvcmUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0NhbmNlbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93VHJhbnNsYXRlQnRuID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChjb25zb2xlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXZlbnQuZGF0YS5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnd2FybmluZyc6XHJcbiAgICAgICAgICBpZiAoY29uc29sZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oZXZlbnQuZGF0YS5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVidWcpIHtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS5pbmZvKCdNZXNzYWdlIHNlbnQgdG8gaWZyYW1lOicgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTWVzc2FnZShpeDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VzLnNwbGljZShpeCwgMSk7XHJcbiAgfVxyXG5cclxuICBzd2FwTGFuZ3VhZ2VzKCkge1xyXG4gICAgdGhpcy50bGRTeXN0ZW0uc3dhcFN5c3RlbUxhbmd1YWdlcygpO1xyXG5cclxuICAgIGNvbnN0IHN5cyA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSh7IG1lc3NhZ2U6ICdjaGFuZ2VTeXN0ZW0nLCBzeXN0ZW1JZDogc3lzLmlkIH0pO1xyXG4gIH1cclxuXHJcbiAgc3lzdGVtQ2hhbmdlKHN5c3RlbUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGxkU3lzdGVtLmNoYW5nZVN5c3RlbShzeXN0ZW1JZCk7XHJcblxyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSh7IG1lc3NhZ2U6ICdjaGFuZ2VTeXN0ZW0nLCBzeXN0ZW1JZCB9KTtcclxuICB9XHJcblxyXG4gIHNvdXJjZUxhbmd1YWdlQ2hhbmdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGxkU3lzdGVtLmNoYW5nZUxhbmd1YWdlKGxhbmd1YWdlLCB0aGlzLnN3aXRjaGVyT3B0aW9ucy50YXJnZXQuY29kZSk7XHJcblxyXG4gICAgY29uc3Qgc3lzID0gdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlU3lzdGVtT2JqKCk7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ2NoYW5nZVN5c3RlbScsIHN5c3RlbUlkOiBzeXMuaWQgfSk7XHJcbiAgfVxyXG5cclxuICB0YXJnZXRMYW5ndWFnZUNoYW5nZShsYW5ndWFnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VMYW5ndWFnZSh0aGlzLnN3aXRjaGVyT3B0aW9ucy5zb3VyY2UuY29kZSwgbGFuZ3VhZ2UpO1xyXG5cclxuICAgIGNvbnN0IHN5cyA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdGhpcy5zZW5kTWVzc2FnZSh7IG1lc3NhZ2U6ICdjaGFuZ2VTeXN0ZW0nLCBzeXN0ZW1JZDogc3lzLmlkIH0pO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbGxlY3Rpb25JZCA9IHRoaXMudGVybWlub2xvZ3lTZXJ2aWNlLnNlbGVjdGVkSWRGb3JUcmFuc2xhdGlvbih0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKS5pZCk7XHJcblxyXG4gICAgaWYgKHRoaXMudXJsVG9UcmFuc2xhdGUgIT0gJycpIHtcclxuICAgICAgdGhpcy5zZW5kTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogJ2xvYWRVcmwnLFxyXG4gICAgICAgIHVybDogdGhpcy51cmxUb1RyYW5zbGF0ZSxcclxuICAgICAgICB0cmFuc2xhdGVBZnRlckxvYWQ6IHRydWUsXHJcbiAgICAgICAgdGVybUNvcnB1c0lkOiBzZWxlY3RlZENvbGxlY3Rpb25JZFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRCdXR0b25DbGlja2VkKCkge1xyXG4gICAgaWYgKHRoaXMudXJsVG9UcmFuc2xhdGUgIT0gJycpIHtcclxuICAgICAgdGhpcy5zZW5kTWVzc2FnZSh7XHJcbiAgICAgICAgbWVzc2FnZTogJ2xvYWRVcmwnLFxyXG4gICAgICAgIHVybDogdGhpcy51cmxUb1RyYW5zbGF0ZSxcclxuICAgICAgICB0cmFuc2xhdGVBZnRlckxvYWQ6IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJVcmxUb1RyYW5zbGF0ZSgpIHtcclxuICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSAnJztcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyBtZXNzYWdlOiAndW50cmFuc2xhdGUnIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzdG9yZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyBtZXNzYWdlOiAndW50cmFuc2xhdGUnIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RnJvbUNvbmZpZygpIHtcclxuICAgIGNvbnN0IGNvcmVDb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29yZUNvbmZpZztcclxuICAgIGNvbnN0IHdlYnRyYW5zbGF0ZUNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS53ZWJ0cmFuc2xhdGVDb25maWc7XHJcbiAgICB0aGlzLmxvZ29Mb2NhdGlvbiA9IHdlYnRyYW5zbGF0ZUNvbmZpZy5sb2dvTG9jYXRpb247XHJcbiAgICB0aGlzLmRlYnVnID0gd2VidHJhbnNsYXRlQ29uZmlnLmRlYnVnO1xyXG4gICAgdGhpcy53ZWJMYW5nQXV0b2RldGVjdCA9IHdlYnRyYW5zbGF0ZUNvbmZpZy53ZWJMYW5nQXV0b2RldGVjdDsgLy8gYWZ0ZXIgcGFnZSBpcyBsb2FkZWQgYXV0byBkZXRlY3QgbGFuZ3VhZ2UgYW5kIGNoYW5nZSBhY3RpdmUgc3lzdGVtXHJcbiAgICB0aGlzLmFsbG93U3VnZ2VzdGlvbnMgPSB3ZWJ0cmFuc2xhdGVDb25maWcuYWxsb3dTdWdnZXN0aW9ucztcclxuICAgIHRoaXMuaGlkZVBvcHVwID0gd2VidHJhbnNsYXRlQ29uZmlnLmhpZGVQb3B1cDtcclxuICAgIHRoaXMudHJhbnNsYXRlUGFnZVBhdGggPSB3ZWJ0cmFuc2xhdGVDb25maWcudHJhbnNsYXRlUGFnZVBhdGg7XHJcbiAgICB0aGlzLmFwcElkID0gY29yZUNvbmZpZy5hcHBJZDtcclxuICAgIHRoaXMuY2xpZW50SWQgPSBjb3JlQ29uZmlnLmNsaWVudElkO1xyXG4gICAgdGhpcy54QXBpS2V5ID0gdGhpcy5jb25maWdTZXJ2aWNlLmFwaVYyQ29uZmlnLnhBcGlLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuYXBpVmVyc2lvbiA9PSBUcmFuc2xhdGlvbkFwaVZlcnNpb24uVjEpIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlVXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvcmVDb25maWcudHJhbnNsYXRpb25TZXJ2aWNlVXJsO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFwaVZlcnNpb24gPT0gVHJhbnNsYXRpb25BcGlWZXJzaW9uLlYyKSB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVVybCA9IHRoaXMuY29uZmlnU2VydmljZS5hcGlWMkNvbmZpZy50cmFuc2xhdGlvblVybDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvVG9Ib21lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnJyk7XHJcbiAgICB0aGlzLnNlbmRNZXNzYWdlKHsgbWVzc2FnZTogJ3VudHJhbnNsYXRlJyB9KTtcclxuICB9XHJcblxyXG4gIGFkZFNjcmlwdCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29uZmlndXJhdGlvblNjcmlwKCk6IHZvaWQge1xyXG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XHJcbiAgICBzY3JpcHQuaW5uZXJIVE1MID0gJyc7XHJcbiAgICBzY3JpcHQuaW5uZXJIVE1MID0gYFxyXG5cclxuICAgIGlmICh0eXBlb2YgKFRpbGRlKSA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgVGlsZGUgPSB7fTtcclxuXHJcbiAgICAgICAgVGlsZGUuUGFnZVRyYW5zbGF0ZVdpZGdldFNlcnZlckNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlVXJsOiAnJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2VVcmx9JyxcclxuICAgICAgICB9O1xyXG5cclxuICAgIFRpbGRlLlBhZ2VUcmFuc2xhdGVXaWRnZXRDbGllbnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICBUcmFuc2xhdGVQYWdlUHJlZml4OiBsb2NhdGlvbi5ob3N0ICsgJy8ke3RoaXMudHJhbnNsYXRlUGFnZVBhdGh9LycsXHJcblxyXG4gICAgICAgIC8vIFVybCBvZiB0aGUgcGxhY2Ugd2hlcmUgQ1NTIGZvciB0cmFuc2xhdGlvbiB3aWRnZXQgaXMga2VwdFxyXG4gICAgICAgIC8vIGlmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSB0aGUgc3RhbmRhcmQgbGV0c210IHN0eWxlLFxyXG4gICAgICAgIC8vIHBvaW50IHRoaXMgdG8geW91ciBvd24gY3NzIGZpbGVcclxuICAgICAgICBjc3NMb2NhdGlvbjogJy4vYXNzZXRzL3dlYnRyYW5zbGF0ZS93aWRnZXQuY3NzJyxcclxuXHJcbiAgICAgICAgLy8geC1hcGkta2V5IGZvciBhdXRob3JpemF0aW9uXHJcbiAgICAgICAgeEFwaUtleTogXCIke3RoaXMueEFwaUtleX1cIixcclxuXHJcbiAgICAgICAgLy8gY2xpZW50IGlkIGZvciBhdXRob3JpemF0aW9uXHJcbiAgICAgICAgY2xpZW50SWQ6IFwiJHt0aGlzLmNsaWVudElkfVwiLFxyXG5cclxuICAgICAgICAvL2FwaSB2ZXJzaW9uXHJcbiAgICAgICAgYXBpVmVyc2lvbjogXCIke3RoaXMuYXBpVmVyc2lvbn1cIiwgIC8vIDAgLSBWMTsgMSAtIFYyXHJcblxyXG4gICAgICAgIC8vIGVuYWJsZSBvciBkaXNhYmxlIG9yaWdpbmFsIHRleHQgcG9wdXBcclxuICAgICAgICBoaWRlUG9wdXA6ICR7dGhpcy5oaWRlUG9wdXB9LFxyXG5cclxuICAgICAgICAvLyBpZCBvZiB0aGUgPGRpdj4gd2hlcmUgdG8gZHJhdyB3aWRnZXRcclxuICAgICAgICB3aWRnZXRDb250YWluZXJJZDogXCJQYWdlVHJhbnNsYXRlV2lkZ2V0XCIsXHJcblxyXG4gICAgICAgIC8vIGF2YWlsYWJsZSB0cmFuc2xhdGlvbiBzeXN0ZW1zICh0YXJnZXQgbGFuZ3VhZ2VzKVxyXG4gICAgICAgIHRyYW5zbGF0aW9uU3lzdGVtczogW10sXHJcblxyXG4gICAgICAgIC8vIHNvdXJjZSBsYW5ndWFnZSBvZiB0aGUgcGFnZSB0aGF0IG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWRcclxuICAgICAgICBsYW5ndWFnZTogXCJlblwiLFxyXG5cclxuICAgICAgICAvLyB0cmFuc2xhdGUgd2lkZ2V0IFVJIHRvIGxhbmd1YWdlIHRoYXQgaXMgY2hvc2VuIGluIHRhcmdldCBsYW5ndWFnZSBkcm9wZG93blxyXG4gICAgICAgIHRyYW5zbGF0ZVVJdG9DaG9zZW5MYW5ndWFnZTogZmFsc2UsXHJcblxyXG4gICAgICAgIC8vIHRyYW5zbGF0ZSB3aWRnZXQgYWRtaW5pc3RyYXRpdmUgcGFydCB0byBsYW5ndWFnZSB0aGF0IGlzIGNob3NlbiBpbiB0YXJnZXQgbGFuZ3VhZ2UgZHJvcGRvd25cclxuICAgICAgICB0cmFuc2xhdGVBZG1pblVJdG9DaG9zZW5MYW5ndWFnZTogZmFsc2UsXHJcblxyXG4gICAgICAgIHVpTGFuZ3VhZ2U6IFwiJHt0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ31cIixcclxuXHJcbiAgICAgICAgLy8gaWYgcGFnZSB3YXMgdHJhbnNsYXRlZCBhbmQgeW91IGNsaWNrIG9uIGEgbGlua1xyXG4gICAgICAgIC8vIHRoYXQgZ29lcyB0byBhbm90aGVyIHBhZ2UgaW4gdGhlIHNhbWUgc2l0ZSxcclxuICAgICAgICAvLyB0aGVuIHRyYW5zbGF0ZSB0aGUgbmV3bHkgb3BlbmVkIHBhZ2UgYWxzb1xyXG4gICAgICAgIHRyYW5zbGF0ZUFmdGVyTmF2aWdhdGlvbjogdHJ1ZSxcclxuXHJcbiAgICAgICAgLy8gdHJ1ZSAtIGxhbmd1YWdlIGxpc3QgaXMgc2hvd24gYXMgbGlua3NcclxuICAgICAgICAvLyBmYWxzZSAtIGxhbmd1YWdlIGxpc3QgaXMgc2hvd24gYXMgZHJvcGRvd24gbGlzdCBhbmQgXCJ0cmFuc2xhdGVcIiBidXR0b25cclxuICAgICAgICBsYW5ndWFnZUxpc3RBc0xpbmtzOiBmYWxzZSxcclxuXHJcbiAgICAgICAgc2hvd0hlYWRlcjogZmFsc2UsXHJcblxyXG4gICAgICAgIHNob3dUcmFuc2xhdGlvblN1Z2dlc3Rpb25BZG1pblBhZ2U6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBhZnRlciB0cmFuc2xhdGlvbiBzaG93IGEgd2FybmluZyB0aGF0IHBhZ2UgaXMgbWFjaGluZSB0cmFuc2xhdGVkIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2VcclxuICAgICAgICBzaG93TWFjaGluZVRyYW5zbGF0aW9uV2FybmluZ0FmdGVyVHJhbnNsYXRpb246IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBzaG93IGFsbCBhdmFpbGFibGUgdHJhbnNsYXRpb24gc3lzdGVtcyBpbnN0ZWFkIG9mIGp1c3QgdGhlIG9uZXMgY29uZmlndXJlZCBpbiB0aGlzIGZpbGVcclxuICAgICAgICBzaG93QWxsVHJhbnNsYXRpb25TeXN0ZW1zOiBmYWxzZSxcclxuXHJcbiAgICAgICAgLy8gYWRkIHNvbWUgcGl4ZWxzIHRvIGRyb3Bkb3duIHBhZGRpbmcgdG8gbWFrZSBpdCBsb29rIG1vcmUgc2ltaWxhciBvbiBkaWZmZXJlbnQgYnJvd3NlcnNcclxuICAgICAgICBicm93c2VyU3BlY2lmaWNEcm9wZG93blBhZGRpbmc6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBuYW1lIG9mIGljb24gc2V0OiBcImRlZmF1bHRcIiwgXCJ3aGl0ZVwiLCBcImdyZXlcIiwgXCJyZWRcIlxyXG4gICAgICAgIGljb25TZXQ6IFwid2hpdGVcIixcclxuXHJcbiAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzOiAxLCAyLCAzLiBUZXh0IGZvciBsaW5rIFwiUmVzdG9yZSBvcmlnaW5hbDogTGF0dmlhblwiIG1heSBiZSBtYWRlIHNob3J0ZXIgb3IgbG9uZ2VyXHJcbiAgICAgICAgLy8gdXNlZnVsIHRvIGFkYXB0IHRvIHNtYWxsIG9yIGxhcmdlIHNjcmVlbnNcclxuICAgICAgICByZXN0b3JlT3JpZ2luYWxMaW5rTGVuZ3RoOiAyLFxyXG5cclxuICAgICAgICAvLyBlbmFibGUgb3IgZGlzYWJsZSBcIlN1Z2dlc3QgdHJhbnNsYXRpb25cIiBsaW5rIGluIHBvcHVwIHRoYXQgc2hvd3Mgb3JpZ2luYWwgdGV4dCBvZiB0cmFuc2xhdGVkIHNlbnRlbmNlXHJcbiAgICAgICAgc3VnZ2VzdFRyYW5zbGF0aW9uOiAke3RoaXMuYWxsb3dTdWdnZXN0aW9uc30sXHJcblxyXG4gICAgICAgIC8vIHNob3cgbWVzc2FnZSBib3ggd2hlbiBlcnJvciBoYXBwZW5zP1xyXG4gICAgICAgIHNob3dNZXNzYWdlQm94T25FcnJvcjogZmFsc2UsXHJcblxyXG4gICAgICAgIC8vIGFwcGxpY2F0aW9uIGlkZW50aWZpZXJcclxuICAgICAgICBhcHBJZDogXCIke3RoaXMuYXBwSWR9XCIsXHJcblxyXG4gICAgICAgIC8vIHNlcnZlciB3aWxsIG9ubHkgcmV0dXJuIHN5c3RlbXMgdGhhdCBhcmUgbWVhbnQgZm9yIGdpdmVuIGFwcElkXHJcbiAgICAgICAgZmlsdGVyU3lzdGVtc0J5QXBwSWQ6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBzaG93IGhlbHAgbGlua1xyXG4gICAgICAgIGVuYWJsZUhlbHA6IGZhbHNlLFxyXG5cclxuICAgICAgICAvLyBzaG93IGZlZWRiYWNrIGxpbmtcclxuICAgICAgICBlbmFibGVGZWVkYmFjazogZmFsc2UsXHJcblxyXG4gICAgICAgIC8vIGFsbG93ZWQgc3lzdGVtIHN0YXR1c2VzLCBieSBkZWZhdWx0IG9ubHkgXCJydW5uaW5nXCJcclxuICAgICAgICBhbGxvd2VkU3lzdGVtU3RhdHVzZXM6IFwicnVubmluZ1wiLFxyXG5cclxuICAgICAgICAvLyBwYXNzZWQgdG8gdHJhbnNsYXRpb24gc2VydmljZSBmb3IgbG9nZ2luZy5cclxuICAgICAgICAvLyBcIndlYi1lbWJlZGRlZFwiIGZvciB3aWRnZXQgdGhhdCBpcyBlbWJlZGRlZCBpbiBodG1sIHBhZ2UsXHJcbiAgICAgICAgLy8gXCJ3ZWJcIiBmb3Igd2lkZ2V0IHRoYXQgY2FuIGxvYWQgYW5kIHRyYW5zbGF0ZSBhbnkgd2Vic2l0ZVxyXG4gICAgICAgIHdpZGdldDogXCJ3ZWJcIlxyXG4gICAgfTtcclxuICAgIGA7XHJcbiAgICBib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJ3aWRnZXRcIiBjbGFzcz1cInRsZC10cmFuc2xhdGUtd2ViXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRyYW5zbGF0ZS1jb250YWluZXItaGVhZGVyXCI+XHJcbiAgICA8YSBocmVmPVwiL1wiIGlkPVwiaG9tZS1saW5rXCIgW2F0dHIudGl0bGVdPVwiJ1dFQlRSQU5TTEFURS5CQUNLJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aW1nIFtzcmNdPVwibG9nb0xvY2F0aW9uXCIgYWx0PVwibG9nb1wiPlxyXG4gICAgICA8bGliLWNvbXBhbnktcHJvZHVjdCAqbmdJZj1cImNvbXBhbnkgJiYgcHJvZHVjdFwiIFtjb21wYW55XT1cImNvbXBhbnlcIiBbcHJvZHVjdF09XCJwcm9kdWN0XCI+PC9saWItY29tcGFueS1wcm9kdWN0PlxyXG4gICAgPC9hPlxyXG4gICAgPGRpdiBbbmdDbGFzcy5sdC1zbV09XCIndGxkLXRyYW5zbGF0ZS1tb2JpbGUnXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cImFkZHJlc3Mtd3JhcHBlclwiPlxyXG4gICAgICAgIDxhIChjbGljayk9XCJnb1RvSG9tZSgpXCIgW2F0dHIudGl0bGVdPVwiJ1dFQlRSQU5TTEFURS5CQUNLJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwJVwiIGNsYXNzPVwiYWRkcmVzcy1pbnB1dFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1dFQlRSQU5TTEFURS5TRUFSQ0gnIHwgdHJhbnNsYXRlXCIgdHlwZT1cInVybFwiICN1cmwgY2xhc3M9XCJ1cmxcIiBhdXRvZm9jdXM9XCJhdXRvZm9jdXNcIiBbKG5nTW9kZWwpXT1cInVybFRvVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9hZEJ1dHRvbkNsaWNrZWQoKVwiIC8+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInVybFRvVHJhbnNsYXRlXCIgW2lubGluZV09XCJ0cnVlXCIgKGNsaWNrKT1cImNsZWFyVXJsVG9UcmFuc2xhdGUoKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRsZC10cmFuc2xhdGUtc3dpdGNoZXItd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGZ4RmxleD5cclxuICAgICAgICAgIDx0bGQtdHJhbnNsYXRlLXN3aXRjaGVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwic3dpdGNoZXJPcHRpb25zXCJcclxuICAgICAgICAgICAgW2lzQ29sbGVjdGlvbnNBY3RpdmF0ZWRdPVwiaXNDb2xsZWN0aW9uc0FjdGl2YXRlZFwiXHJcbiAgICAgICAgICAgIFt1c2VQYXJlbnRXaWR0aF09XCJ1c2VQYXJlbnRXaWR0aFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25CdXR0b25EaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJzd2l0Y2hlck9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbc2hvd1RyYW5zbGF0ZUJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtoaWRlT25TbWFsbFNjcmVlbnNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbaGlkZUxhbmdNZW51TGFiZWxzXT1cImhpZGVMYW5nTWVudUxhYmVsc1wiXHJcbiAgICAgICAgICAgIFttYXhEaXNwbGF5ZWRMYW5ndWFnZXNdPVwibWF4RGlzcGxheWVkTGFuZ3VhZ2VzXCJcclxuICAgICAgICAgICAgW3Nob3dEb21haW5zV2l0aExhbmd1YWdlTmFtZV09XCJzaG93RG9tYWluc1dpdGhMYW5ndWFnZU5hbWVcIlxyXG4gICAgICAgICAgICAob25Eb21haW5DaGFuZ2UpPVwic3lzdGVtQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25BY3Rpb25DbGljayk9XCJ0cmFuc2xhdGVCdXR0b25DbGljaygpXCJcclxuICAgICAgICAgICAgKG9uTGFuZ3VhZ2VTd2FwKT1cInN3YXBMYW5ndWFnZXMoKVwiXHJcbiAgICAgICAgICAgIChvblNvdXJjZUxhbmd1YWdlQ2hhbmdlKT1cInNvdXJjZUxhbmd1YWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25UYXJnZXRMYW5ndWFnZUNoYW5nZSk9XCJ0YXJnZXRMYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L3RsZC10cmFuc2xhdGUtc3dpdGNoZXI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJhY3Rpb24tYnRuLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHRsZC10cmFuc2xhdGUtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93VHJhbnNsYXRlQnRuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN3aXRjaGVyLXRyYW5zbGF0ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25CdXR0b25EaXNhYmxlZCB8fCAhdXJsVG9UcmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgPC90bGQtdHJhbnNsYXRlLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWxcIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPnt7J1dFQlRSQU5TTEFURS5DQU5DRUwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dSZXN0b3JlXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cInJlc3RvcmUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZXN0b3JlLWJ1dHRvblwiPnt7J1dFQlRSQU5TTEFURS5SRVNUT1JFJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBpZD1cIndlYnNpdGUtZnJhbWUtY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cInNob3dQcm9ncmVzc1wiIGNvbG9yPVwiYWNjZW50XCIgW21vZGVdPVwibW9kZVwiIFt2YWx1ZV09XCJwcm9ncmVzc1ZhbHVlXCI+XHJcbiAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICA8bGliLXRsZC1ub3RpZmljYXRpb24tbWVzc2FnZSBbQG9wZW5DbG9zZUFuaW1hdGlvbl0gKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXM7IGxldCBpeCA9IGluZGV4XCIgW21lc3NhZ2VdPVwibWVzc2FnZVwiXHJcbiAgICAgIChjbG9zZUNsaWNrZWQpPVwicmVtb3ZlTWVzc2FnZShpeClcIj48L2xpYi10bGQtbm90aWZpY2F0aW9uLW1lc3NhZ2U+XHJcbiAgICBcclxuICAgIDxpZnJhbWUgI2lmcmFtZSBbY2xhc3MuaC1mdWxsXT1cIiFzaG93RW1wdHlWaWV3XCIgaWQ9XCJsZXRzbXQtdHJhbnNsYXRlLXBhZ2UtaWZyYW1lXCIgbmFtZT1cImxldHNtdFRyYW5zbGF0ZVBhZ2VJZnJhbWVcIiBzcmM9XCJhYm91dDpibGFua1wiPjwvaWZyYW1lPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bGliLXN0YXR1cy1kaXNwbGF5ICpuZ0lmPVwic2hvd0VtcHR5Vmlld1wiIFtjb25maWddPVwiZW1wdHlWaWV3Q29uZmlnXCI+PC9saWItc3RhdHVzLWRpc3BsYXk+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -2,9 +2,11 @@ import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
|
4
4
|
import { NgModule } from '@angular/core';
|
|
5
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
5
6
|
import { FormsModule } from '@angular/forms';
|
|
6
7
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
7
8
|
import { ALERT_CONFIGURATION_TOKEN, AlertService, CloseButtonModule, NotificationMessageModule, TerminologyService } from '@tilde-nlp/ngx-common';
|
|
9
|
+
import { alertServiceConfigurationFactory } from './factories/alert-service-configuration.factory';
|
|
8
10
|
import { fileApiServiceFactory } from './factories/file-api-service.factory';
|
|
9
11
|
import { textApiServiceFactory } from './factories/text-api-service.factory';
|
|
10
12
|
import { FILE_API_SERVICE_TOKEN, TEXT_API_SERVICE_TOKEN, TLD_TRANSLATE_CONFIG_TOKEN, TRANSLATION_API_VERSION_TOKEN } from './injection-tokens';
|
|
@@ -16,10 +18,7 @@ import { TldTextModule } from './modules/tld-text';
|
|
|
16
18
|
import { TldTooltipModule } from './modules/tld-tooltip';
|
|
17
19
|
import { TldTranslateBodyComponent } from './tld-translate-body/tld-translate-body.component';
|
|
18
20
|
import { TldTranslateComponent } from './tld-translate.component';
|
|
19
|
-
import { alertServiceConfigurationFactory } from './factories/alert-service-configuration.factory';
|
|
20
|
-
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
21
21
|
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "@ngx-translate/core";
|
|
23
22
|
export class TldTranslateModule {
|
|
24
23
|
static forRoot(translationApiVersion = TranslationApiVersion.V1, configuration) {
|
|
25
24
|
const providers = [
|
|
@@ -74,7 +73,9 @@ export class TldTranslateModule {
|
|
|
74
73
|
}
|
|
75
74
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
76
75
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateModule, declarations: [TldTranslateBodyComponent,
|
|
77
|
-
TldTranslateComponent], imports: [CommonModule,
|
|
76
|
+
TldTranslateComponent], imports: [CommonModule,
|
|
77
|
+
TranslateModule,
|
|
78
|
+
FormsModule,
|
|
78
79
|
HttpClientModule,
|
|
79
80
|
ClipboardModule,
|
|
80
81
|
TldCommonModule,
|
|
@@ -85,7 +86,7 @@ export class TldTranslateModule {
|
|
|
85
86
|
CloseButtonModule,
|
|
86
87
|
FlexLayoutModule], exports: [TldTranslateComponent] });
|
|
87
88
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateModule, providers: [TranslateService], imports: [CommonModule,
|
|
88
|
-
TranslateModule
|
|
89
|
+
TranslateModule,
|
|
89
90
|
FormsModule,
|
|
90
91
|
HttpClientModule,
|
|
91
92
|
ClipboardModule,
|
|
@@ -105,7 +106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
105
106
|
TldTranslateComponent,
|
|
106
107
|
],
|
|
107
108
|
imports: [CommonModule,
|
|
108
|
-
TranslateModule
|
|
109
|
+
TranslateModule,
|
|
109
110
|
FormsModule,
|
|
110
111
|
HttpClientModule,
|
|
111
112
|
ClipboardModule,
|
|
@@ -123,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
123
124
|
providers: [TranslateService]
|
|
124
125
|
}]
|
|
125
126
|
}] });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvdGxkLXRyYW5zbGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUF1QixRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEosT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFB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QztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlwYm9hcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvY2xpcGJvYXJkJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQUxFUlRfQ09ORklHVVJBVElPTl9UT0tFTiwgQWxlcnRTZXJ2aWNlLCBDbG9zZUJ1dHRvbk1vZHVsZSwgTm90aWZpY2F0aW9uTWVzc2FnZU1vZHVsZSwgVGVybWlub2xvZ3lTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgYWxlcnRTZXJ2aWNlQ29uZmlndXJhdGlvbkZhY3RvcnkgfSBmcm9tICcuL2ZhY3Rvcmllcy9hbGVydC1zZXJ2aWNlLWNvbmZpZ3VyYXRpb24uZmFjdG9yeSc7XHJcbmltcG9ydCB7IGZpbGVBcGlTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yaWVzL2ZpbGUtYXBpLXNlcnZpY2UuZmFjdG9yeSc7XHJcbmltcG9ydCB7IHRleHRBcGlTZXJ2aWNlRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yaWVzL3RleHQtYXBpLXNlcnZpY2UuZmFjdG9yeSc7XHJcbmltcG9ydCB7IEZJTEVfQVBJX1NFUlZJQ0VfVE9LRU4sIFRFWFRfQVBJX1NFUlZJQ0VfVE9LRU4sIFRMRF9UUkFOU0xBVEVfQ09ORklHX1RPS0VOLCBUUkFOU0xBVElPTl9BUElfVkVSU0lPTl9UT0tFTiB9IGZyb20gJy4vaW5qZWN0aW9uLXRva2Vucyc7XHJcbmltcG9ydCB7IFRsZENvbW1vbk1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUNvbmZpZyB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uQXBpVmVyc2lvbiB9IGZyb20gJy4vbW9kdWxlcy90bGQtY29tbW9uL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRsZERvY3VtZW50TW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC1kb2N1bWVudCc7XHJcbmltcG9ydCB7IFRsZFRleHRNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvdGxkLXRleHQnO1xyXG5pbXBvcnQgeyBUbGRUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3RsZC10b29sdGlwJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQm9keUNvbXBvbmVudCB9IGZyb20gJy4vdGxkLXRyYW5zbGF0ZS1ib2R5L3RsZC10cmFuc2xhdGUtYm9keS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVDb21wb25lbnQgfSBmcm9tICcuL3RsZC10cmFuc2xhdGUuY29tcG9uZW50JztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgVGxkVHJhbnNsYXRlQm9keUNvbXBvbmVudCxcclxuICAgIFRsZFRyYW5zbGF0ZUNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICBDbGlwYm9hcmRNb2R1bGUsXHJcbiAgICBUbGRDb21tb25Nb2R1bGUsXHJcbiAgICBUbGRUZXh0TW9kdWxlLFxyXG4gICAgVGxkRG9jdW1lbnRNb2R1bGUsXHJcbiAgICBUbGRUb29sdGlwTW9kdWxlLFxyXG4gICAgTm90aWZpY2F0aW9uTWVzc2FnZU1vZHVsZSxcclxuICAgIENsb3NlQnV0dG9uTW9kdWxlLFxyXG4gICAgRmxleExheW91dE1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgVGxkVHJhbnNsYXRlQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCh0cmFuc2xhdGlvbkFwaVZlcnNpb246IFRyYW5zbGF0aW9uQXBpVmVyc2lvbiA9IFRyYW5zbGF0aW9uQXBpVmVyc2lvbi5WMSwgY29uZmlndXJhdGlvbj86IElUbGRUcmFuc2xhdGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRsZFRyYW5zbGF0ZU1vZHVsZT4ge1xyXG4gICAgY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogVEVYVF9BUElfU0VSVklDRV9UT0tFTixcclxuICAgICAgICB1c2VGYWN0b3J5OiB0ZXh0QXBpU2VydmljZUZhY3RvcnksXHJcbiAgICAgICAgZGVwczogW1xyXG4gICAgICAgICAgVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4sXHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgICAgSHR0cENsaWVudCxcclxuICAgICAgICAgIFRlcm1pbm9sb2d5U2VydmljZSxcclxuICAgICAgICAgIEFsZXJ0U2VydmljZSxcclxuICAgICAgICAgIFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlXHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogRklMRV9BUElfU0VSVklDRV9UT0tFTixcclxuICAgICAgICB1c2VGYWN0b3J5OiBmaWxlQXBpU2VydmljZUZhY3RvcnksXHJcbiAgICAgICAgZGVwczogW1xyXG4gICAgICAgICAgVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4sXHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgICAgSHR0cENsaWVudCxcclxuICAgICAgICAgIFRlcm1pbm9sb2d5U2VydmljZSxcclxuICAgICAgICAgIEFsZXJ0U2VydmljZSxcclxuICAgICAgICAgIFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlXHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcHJvdmlkZTogQUxFUlRfQ09ORklHVVJBVElPTl9UT0tFTixcclxuICAgICAgICB1c2VGYWN0b3J5OiBhbGVydFNlcnZpY2VDb25maWd1cmF0aW9uRmFjdG9yeSxcclxuICAgICAgICBkZXBzOiBbXHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlXHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGlmICh0cmFuc2xhdGlvbkFwaVZlcnNpb24gIT09IG51bGwpIHtcclxuICAgICAgcHJvdmlkZXJzLnB1c2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4sXHJcbiAgICAgICAgICB1c2VWYWx1ZTogdHJhbnNsYXRpb25BcGlWZXJzaW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgcHJvdmlkZXJzLnB1c2goe1xyXG4gICAgICAgIHByb3ZpZGU6IFRMRF9UUkFOU0xBVEVfQ09ORklHX1RPS0VOLFxyXG4gICAgICAgIHVzZVZhbHVlOiBjb25maWd1cmF0aW9uXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBUbGRUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyc1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
|