@eui/ecl 18.2.3 → 18.2.4-snapshot-1733710123090
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/assets/i18n-ecl/pt.json +83 -83
- package/docs/components/EclSiteHeaderLoginComponent.html +92 -1
- package/docs/components/EclTabsComponent.html +1 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +31 -6
- package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +3 -3
- package/fesm2022/eui-ecl.mjs +26 -4
- package/fesm2022/eui-ecl.mjs.map +1 -1
- package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts +5 -1
- package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, afterNextRender, booleanAttribute } from '@angular/core';
|
|
1
|
+
import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, afterNextRender, booleanAttribute } from '@angular/core';
|
|
2
2
|
import { Subject, debounceTime, takeUntil } from 'rxjs';
|
|
3
3
|
import { EclBaseEvent } from '../../../model/ecl-base.event';
|
|
4
4
|
import { ECLBaseDirective } from '../../ecl-base.directive';
|
|
5
|
+
import { ECLClickOutsideDirective } from '../../../utils';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../common/ecl-site-header-area-data.service";
|
|
7
8
|
import * as i2 from "../../../services";
|
|
8
|
-
import * as i3 from "../../ecl-
|
|
9
|
-
import * as i4 from "
|
|
9
|
+
import * as i3 from "../../ecl-base.directive";
|
|
10
|
+
import * as i4 from "../../../utils/directives/ecl-click-outside/ecl-click-outside.directive";
|
|
11
|
+
import * as i5 from "../../ecl-icon/ecl-icon.component";
|
|
12
|
+
import * as i6 from "@ngx-translate/core";
|
|
10
13
|
export class EclSiteHeaderLoginEvent extends EclBaseEvent {
|
|
11
14
|
}
|
|
12
15
|
export class EclSiteHeaderLoginBoxToggleEvent extends EclBaseEvent {
|
|
@@ -42,6 +45,9 @@ export class EclSiteHeaderLoginComponent extends ECLBaseDirective {
|
|
|
42
45
|
this.destroy$.next(true);
|
|
43
46
|
this.destroy$.unsubscribe();
|
|
44
47
|
}
|
|
48
|
+
onClickOutsideMegaMenu() {
|
|
49
|
+
this.onLoginBoxClose();
|
|
50
|
+
}
|
|
45
51
|
getLoginBoxCssClasses() {
|
|
46
52
|
return ['ecl-site-header__login-box', this.isLoginBoxActive ? 'ecl-site-header__login-box--active' : ''].join(' ');
|
|
47
53
|
}
|
|
@@ -56,6 +62,13 @@ export class EclSiteHeaderLoginComponent extends ECLBaseDirective {
|
|
|
56
62
|
this.loginBoxToggle.next(event);
|
|
57
63
|
evt.preventDefault();
|
|
58
64
|
}
|
|
65
|
+
onLoginBoxClose() {
|
|
66
|
+
if (this.isLoginBoxActive) {
|
|
67
|
+
this.isLoginBoxActive = false;
|
|
68
|
+
const event = new EclSiteHeaderLoginBoxToggleEvent(this.isLoginBoxActive);
|
|
69
|
+
this.loginBoxToggle.next(event);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
59
72
|
handleRtlChangeState() {
|
|
60
73
|
this.eclRtlService.currentRtlState$.pipe(debounceTime(50), takeUntil(this.destroy$)).subscribe(() => {
|
|
61
74
|
this.calculateLoginArrowPosition(this.parentHeaderRight);
|
|
@@ -83,11 +96,20 @@ export class EclSiteHeaderLoginComponent extends ECLBaseDirective {
|
|
|
83
96
|
}
|
|
84
97
|
}
|
|
85
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderLoginComponent, deps: [{ token: i1.EclSiteHeaderAreaDataService }, { token: i2.EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderLoginComponent, selector: "ecl-site-header-login", inputs: { isLoggedIn: ["isLoggedIn", "isLoggedIn", booleanAttribute] }, outputs: { login: "login", loginBoxToggle: "loginBoxToggle" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "loginLinkElement", first: true, predicate: ["loginLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isLoggedIn) {\n <a\n #loginLink\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n aria-controls=\"login-box-id\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginBoxToggle($event)\">\n <ecl-icon icon=\"logged-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGGED-IN' | translate }}\n
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderLoginComponent, selector: "ecl-site-header-login", inputs: { isLoggedIn: ["isLoggedIn", "isLoggedIn", booleanAttribute] }, outputs: { login: "login", loginBoxToggle: "loginBoxToggle" }, host: { listeners: { "eclClickOutside": "onClickOutsideMegaMenu()" }, properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "loginLinkElement", first: true, predicate: ["loginLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: i3.ECLBaseDirective }, { directive: i4.ECLClickOutsideDirective, outputs: ["eclClickOutside", "eclClickOutside"] }], ngImport: i0, template: "@if (isLoggedIn) {\n <a\n #loginLink\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n aria-controls=\"login-box-id\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginBoxToggle($event)\">\n <ecl-icon icon=\"logged-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGGED-IN' | translate }}\n </a>\n <div\n id=\"login-box-id\"\n [style]=\"{'--ecl-login-arrow-position': loginArrowPosition}\"\n class=\"{{ getLoginBoxCssClasses() }}\">\n <ng-content></ng-content>\n </div>\n} @else {\n <a\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginClick($event)\">\n <ecl-icon icon=\"log-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGIN' | translate }}\n </a>\n}\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i5.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
|
87
100
|
}
|
|
88
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderLoginComponent, decorators: [{
|
|
89
102
|
type: Component,
|
|
90
|
-
args: [{ selector: 'ecl-site-header-login',
|
|
103
|
+
args: [{ selector: 'ecl-site-header-login', hostDirectives: [
|
|
104
|
+
{
|
|
105
|
+
directive: ECLBaseDirective,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
directive: ECLClickOutsideDirective,
|
|
109
|
+
// eslint-disable-next-line @angular-eslint/no-outputs-metadata-property
|
|
110
|
+
outputs: ['eclClickOutside'],
|
|
111
|
+
},
|
|
112
|
+
], template: "@if (isLoggedIn) {\n <a\n #loginLink\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n aria-controls=\"login-box-id\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginBoxToggle($event)\">\n <ecl-icon icon=\"logged-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGGED-IN' | translate }}\n </a>\n <div\n id=\"login-box-id\"\n [style]=\"{'--ecl-login-arrow-position': loginArrowPosition}\"\n class=\"{{ getLoginBoxCssClasses() }}\">\n <ng-content></ng-content>\n </div>\n} @else {\n <a\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginClick($event)\">\n <ecl-icon icon=\"log-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGIN' | translate }}\n </a>\n}\n", styles: [":host{display:block}\n"] }]
|
|
91
113
|
}], ctorParameters: () => [{ type: i1.EclSiteHeaderAreaDataService }, { type: i2.EclRtlService }], propDecorators: { isLoggedIn: [{
|
|
92
114
|
type: Input,
|
|
93
115
|
args: [{ transform: booleanAttribute }]
|
|
@@ -101,5 +123,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
101
123
|
type: Output
|
|
102
124
|
}], loginBoxToggle: [{
|
|
103
125
|
type: Output
|
|
126
|
+
}], onClickOutsideMegaMenu: [{
|
|
127
|
+
type: HostListener,
|
|
128
|
+
args: ['eclClickOutside']
|
|
104
129
|
}] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvbG9naW4vZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvbG9naW4vZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUNqRCxNQUFNLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBSTVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxZQUFZO0NBQUc7QUFDNUQsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLFlBQVk7SUFDOUQsWUFBbUIsTUFBZTtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURPLFdBQU0sR0FBTixNQUFNLENBQVM7SUFFbEMsQ0FBQztDQUNKO0FBYUQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGdCQUFnQjtJQWU3RCxZQUNVLDRCQUEwRCxFQUMxRCxhQUE2QjtRQUVuQyxLQUFLLEVBQUUsQ0FBQztRQUhGLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBaEJDLGVBQVUsR0FBRyxLQUFLLENBQUM7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R0FBRyxRQUFRLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9FLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixHQUFHLFNBQVMsRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssR0FBRSxDQUFDLENBQUM7UUFDakYsSUFBSSxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsa0JBQWtCLEdBQUksUUFBUSxhQUFhLFFBQVEsU0FBUyxHQUFHLENBQUM7UUFDekUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFHLENBQUM7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFJLElBQUksQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQzsrR0FuRlEsMkJBQTJCO21HQUEzQiwyQkFBMkIsd0ZBQ2hCLGdCQUFnQix1T0FHSixVQUFVLHlFQzlCOUMsdW1DQTRCQTs7NEZERmEsMkJBQTJCO2tCQVh2QyxTQUFTOytCQUNJLHVCQUF1Qjs2SEFXTyxVQUFVO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNoQixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBRTBCLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVsQyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBhZnRlck5leHRSZW5kZXIsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFY2xCYXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lY2wtYmFzZS5ldmVudCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJBcmVhRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vZWNsLXNpdGUtaGVhZGVyLWFyZWEtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEVjbFJ0bFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBFY2xTaXRlSGVhZGVyTG9naW5FdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7fVxuZXhwb3J0IGNsYXNzIEVjbFNpdGVIZWFkZXJMb2dpbkJveFRvZ2dsZUV2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXNPcGVuOiBib29sZWFuKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1zaXRlLWhlYWRlci1sb2dpbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC1zaXRlLWhlYWRlci1sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0xvZ2dlZEluID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2VjbC1zaXRlLWhlYWRlcl9fbG9naW4tY29udGFpbmVyJztcblxuICAgIEBWaWV3Q2hpbGQoJ2xvZ2luTGluaycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBsb2dpbkxpbmtFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PjtcblxuICAgIEBPdXRwdXQoKSBsb2dpbiA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsU2l0ZUhlYWRlckxvZ2luRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGxvZ2luQm94VG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xTaXRlSGVhZGVyTG9naW5Cb3hUb2dnbGVFdmVudD4oKTtcblxuICAgIHB1YmxpYyBpc0xvZ2luQm94QWN0aXZlID0gZmFsc2U7XG4gICAgcHVibGljIGxvZ2luQXJyb3dQb3NpdGlvbjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IFRBQkxFVF9CUkVBS1BPSU5UID0gOTk2O1xuICAgIHByaXZhdGUgcGFyZW50SGVhZGVyUmlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBlY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlOiBFY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSBlY2xSdGxTZXJ2aWNlIDogRWNsUnRsU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUnRsQ2hhbmdlU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2l0ZUhlYWRlckFyZWFDaGFuZ2VFdmVudCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzTG9nZ2VkSW5DaGFuZ2UgPSBjaGFuZ2VzLmlzTG9nZ2VkSW47XG4gICAgICAgIGlmIChpc0xvZ2dlZEluQ2hhbmdlICYmIGlzTG9nZ2VkSW5DaGFuZ2UucHJldmlvdXNWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5pc0xvZ2luQm94QWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgZ2V0TG9naW5Cb3hDc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbJ2VjbC1zaXRlLWhlYWRlcl9fbG9naW4tYm94JywgdGhpcy5pc0xvZ2luQm94QWN0aXZlID8gJ2VjbC1zaXRlLWhlYWRlcl9fbG9naW4tYm94LS1hY3RpdmUnIDogJyddLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICBvbkxvZ2luQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJMb2dpbkV2ZW50KCk7XG4gICAgICAgIHRoaXMubG9naW4ubmV4dChldmVudCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uTG9naW5Cb3hUb2dnbGUoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNMb2dpbkJveEFjdGl2ZSA9ICF0aGlzLmlzTG9naW5Cb3hBY3RpdmU7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJMb2dpbkJveFRvZ2dsZUV2ZW50KHRoaXMuaXNMb2dpbkJveEFjdGl2ZSk7XG4gICAgICAgIHRoaXMubG9naW5Cb3hUb2dnbGUubmV4dChldmVudCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUnRsU2VydmljZS5jdXJyZW50UnRsU3RhdGUkLnBpcGUoZGVib3VuY2VUaW1lKDUwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVMb2dpbkFycm93UG9zaXRpb24odGhpcy5wYXJlbnRIZWFkZXJSaWdodCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlU2l0ZUhlYWRlckFyZWFDaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlLmRhdGFTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKFxuICAgICAgICAgIHBhcmVudEhlYWRlclJlY3QgPT4gIHtcbiAgICAgICAgICAgICAgdGhpcy5wYXJlbnRIZWFkZXJSaWdodCA9IHBhcmVudEhlYWRlclJlY3QucmlnaHQ7XG4gICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlTG9naW5BcnJvd1Bvc2l0aW9uKHRoaXMucGFyZW50SGVhZGVyUmlnaHQpO1xuICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlTG9naW5BcnJvd1Bvc2l0aW9uKHBhcmVudEhlYWRlclJpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcblxuICAgICAgICBjb25zdCB2dyA9IE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCAwLCB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKTtcbiAgICAgICAgY29uc3QgYXJyb3dTaXplID0gJzAuNXJlbSc7XG4gICAgICAgIGNvbnN0IGxvZ2luTGluayA9IHRoaXMubG9naW5MaW5rRWxlbWVudD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9IHBhcmVudEhlYWRlclJpZ2h0IC0gbG9naW5MaW5rPy5yaWdodCArIGxvZ2luTGluaz8ud2lkdGggLzI7XG4gICAgICAgIGlmIChwYXJlbnRIZWFkZXJSaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNMb2dpbkJveEFjdGl2ZSAmJiB2dyA8IHRoaXMuVEFCTEVUX0JSRUFLUE9JTlQpIHtcbiAgICAgICAgICAgIHRoaXMubG9naW5BcnJvd1Bvc2l0aW9uID0gIGBjYWxjKCR7YXJyb3dQb3NpdGlvbn1weCArICR7YXJyb3dTaXplfSlgO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMb2dpbkJveEFjdGl2ZSApIHtcbiAgICAgICAgICAgIHRoaXMubG9naW5BcnJvd1Bvc2l0aW9uID0gIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICA8YVxuICAgICAgICAjbG9naW5MaW5rXG4gICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgY2xhc3M9XCJlY2wtYnV0dG9uIGVjbC1idXR0b24tLXRlcnRpYXJ5IGVjbC1zaXRlLWhlYWRlcl9fbG9naW4tdG9nZ2xlXCJcbiAgICAgICAgYXJpYS1jb250cm9scz1cImxvZ2luLWJveC1pZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNMb2dpbkJveEFjdGl2ZVwiXG4gICAgICAgIChjbGljayk9XCJvbkxvZ2luQm94VG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJsb2dnZWQtaW5cIiBzaXplPVwic1wiIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19pY29uXCI+PC9lY2wtaWNvbj5cbiAgICAgICAge3sgJ2VjbC5zaXRlLWhlYWRlci5MT0dHRUQtSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cInhzXCIgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2xvZ2luLWFycm93XCI+PC9lY2wtaWNvbj5cbiAgICA8L2E+XG4gICAgPGRpdlxuICAgICAgICBpZD1cImxvZ2luLWJveC1pZFwiXG4gICAgICAgIFtzdHlsZV09XCJ7Jy0tZWNsLWxvZ2luLWFycm93LXBvc2l0aW9uJzogbG9naW5BcnJvd1Bvc2l0aW9ufVwiXG4gICAgICAgIGNsYXNzPVwie3sgZ2V0TG9naW5Cb3hDc3NDbGFzc2VzKCkgfX1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGFcbiAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICBjbGFzcz1cImVjbC1idXR0b24gZWNsLWJ1dHRvbi0tdGVydGlhcnkgZWNsLXNpdGUtaGVhZGVyX19sb2dpbi10b2dnbGVcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTG9naW5Cb3hBY3RpdmVcIlxuICAgICAgICAoY2xpY2spPVwib25Mb2dpbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJsb2ctaW5cIiBzaXplPVwic1wiIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19pY29uXCI+PC9lY2wtaWNvbj5cbiAgICAgICAge3sgJ2VjbC5zaXRlLWhlYWRlci5MT0dJTicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2E+XG59XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvbG9naW4vZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvbG9naW4vZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFDL0QsTUFBTSxFQUFpQixTQUFTLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBRTFELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxZQUFZO0NBQUc7QUFDNUQsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLFlBQVk7SUFDOUQsWUFBbUIsTUFBZTtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURPLFdBQU0sR0FBTixNQUFNLENBQVM7SUFFbEMsQ0FBQztDQUNKO0FBdUJELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxnQkFBZ0I7SUFlN0QsWUFDVSw0QkFBMEQsRUFDMUQsYUFBNkI7UUFFbkMsS0FBSyxFQUFFLENBQUM7UUFIRixpQ0FBNEIsR0FBNUIsNEJBQTRCLENB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QUF1QixrQkFTakI7d0JBQ1o7NEJBQ0ksU0FBUyxFQUFFLGdCQUFnQjt5QkFDOUI7d0JBQ0Q7NEJBQ0ksU0FBUyxFQUFFLHdCQUF3Qjs0QkFDbkMsd0VBQXdFOzRCQUN4RSxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDL0I7cUJBQ0o7NkhBR3VDLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFFMEIsZ0JBQWdCO3NCQUE3RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRWxDLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQWdDUCxzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgYWZ0ZXJOZXh0UmVuZGVyLCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWNsQmFzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZWNsLWJhc2UuZXZlbnQnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2VjbC1zaXRlLWhlYWRlci1hcmVhLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBFY2xSdGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRUNMQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRWNsU2l0ZUhlYWRlckxvZ2luRXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge31cbmV4cG9ydCBjbGFzcyBFY2xTaXRlSGVhZGVyTG9naW5Cb3hUb2dnbGVFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGlzT3BlbjogYm9vbGVhbikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtc2l0ZS1oZWFkZXItbG9naW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtc2l0ZS1oZWFkZXItbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IEVDTEJhc2VEaXJlY3RpdmUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogRUNMQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gICAgICAgICAgICBvdXRwdXRzOiBbJ2VjbENsaWNrT3V0c2lkZSddLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbFNpdGVIZWFkZXJMb2dpbkNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnZWNsLXNpdGUtaGVhZGVyX19sb2dpbi1jb250YWluZXInO1xuXG4gICAgQFZpZXdDaGlsZCgnbG9naW5MaW5rJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGxvZ2luTGlua0VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+O1xuXG4gICAgQE91dHB1dCgpIGxvZ2luID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xTaXRlSGVhZGVyTG9naW5FdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbG9naW5Cb3hUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFNpdGVIZWFkZXJMb2dpbkJveFRvZ2dsZUV2ZW50PigpO1xuXG4gICAgcHVibGljIGlzTG9naW5Cb3hBY3RpdmUgPSBmYWxzZTtcbiAgICBwdWJsaWMgbG9naW5BcnJvd1Bvc2l0aW9uOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgVEFCTEVUX0JSRUFLUE9JTlQgPSA5OTY7XG4gICAgcHJpdmF0ZSBwYXJlbnRIZWFkZXJSaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIGVjbFNpdGVIZWFkZXJBcmVhRGF0YVNlcnZpY2U6IEVjbFNpdGVIZWFkZXJBcmVhRGF0YVNlcnZpY2UsXG4gICAgICBwcml2YXRlIGVjbFJ0bFNlcnZpY2UgOiBFY2xSdGxTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTaXRlSGVhZGVyQXJlYUNoYW5nZUV2ZW50KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNMb2dnZWRJbkNoYW5nZSA9IGNoYW5nZXMuaXNMb2dnZWRJbjtcbiAgICAgICAgaWYgKGlzTG9nZ2VkSW5DaGFuZ2UgJiYgaXNMb2dnZWRJbkNoYW5nZS5wcmV2aW91c1ZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9naW5Cb3hBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdlY2xDbGlja091dHNpZGUnKVxuICAgIG9uQ2xpY2tPdXRzaWRlTWVnYU1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Mb2dpbkJveENsb3NlKCk7XG4gICAgfVxuXG4gICAgZ2V0TG9naW5Cb3hDc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbJ2VjbC1zaXRlLWhlYWRlcl9fbG9naW4tYm94JywgdGhpcy5pc0xvZ2luQm94QWN0aXZlID8gJ2VjbC1zaXRlLWhlYWRlcl9fbG9naW4tYm94LS1hY3RpdmUnIDogJyddLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICBvbkxvZ2luQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJMb2dpbkV2ZW50KCk7XG4gICAgICAgIHRoaXMubG9naW4ubmV4dChldmVudCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uTG9naW5Cb3hUb2dnbGUoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNMb2dpbkJveEFjdGl2ZSA9ICF0aGlzLmlzTG9naW5Cb3hBY3RpdmU7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJMb2dpbkJveFRvZ2dsZUV2ZW50KHRoaXMuaXNMb2dpbkJveEFjdGl2ZSk7XG4gICAgICAgIHRoaXMubG9naW5Cb3hUb2dnbGUubmV4dChldmVudCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Mb2dpbkJveENsb3NlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xvZ2luQm94QWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmlzTG9naW5Cb3hBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJMb2dpbkJveFRvZ2dsZUV2ZW50KHRoaXMuaXNMb2dpbkJveEFjdGl2ZSk7XG4gICAgICAgICAgICB0aGlzLmxvZ2luQm94VG9nZ2xlLm5leHQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSdGxTZXJ2aWNlLmN1cnJlbnRSdGxTdGF0ZSQucGlwZShkZWJvdW5jZVRpbWUoNTApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUxvZ2luQXJyb3dQb3NpdGlvbih0aGlzLnBhcmVudEhlYWRlclJpZ2h0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVTaXRlSGVhZGVyQXJlYUNoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbFNpdGVIZWFkZXJBcmVhRGF0YVNlcnZpY2UuZGF0YVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoXG4gICAgICAgICAgcGFyZW50SGVhZGVyUmVjdCA9PiAge1xuICAgICAgICAgICAgICB0aGlzLnBhcmVudEhlYWRlclJpZ2h0ID0gcGFyZW50SGVhZGVyUmVjdC5yaWdodDtcbiAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVMb2dpbkFycm93UG9zaXRpb24odGhpcy5wYXJlbnRIZWFkZXJSaWdodCk7XG4gICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVMb2dpbkFycm93UG9zaXRpb24ocGFyZW50SGVhZGVyUmlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXG4gICAgICAgIGNvbnN0IHZ3ID0gTWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IDAsIHdpbmRvdy5pbm5lcldpZHRoIHx8IDApO1xuICAgICAgICBjb25zdCBhcnJvd1NpemUgPSAnMC41cmVtJztcbiAgICAgICAgY29uc3QgbG9naW5MaW5rID0gdGhpcy5sb2dpbkxpbmtFbGVtZW50Py5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBhcnJvd1Bvc2l0aW9uID0gcGFyZW50SGVhZGVyUmlnaHQgLSBsb2dpbkxpbms/LnJpZ2h0ICsgbG9naW5MaW5rPy53aWR0aCAvMjtcbiAgICAgICAgaWYgKHBhcmVudEhlYWRlclJpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0xvZ2luQm94QWN0aXZlICYmIHZ3IDwgdGhpcy5UQUJMRVRfQlJFQUtQT0lOVCkge1xuICAgICAgICAgICAgdGhpcy5sb2dpbkFycm93UG9zaXRpb24gPSAgYGNhbGMoJHthcnJvd1Bvc2l0aW9ufXB4ICsgJHthcnJvd1NpemV9KWA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0xvZ2luQm94QWN0aXZlICkge1xuICAgICAgICAgICAgdGhpcy5sb2dpbkFycm93UG9zaXRpb24gPSAgbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoaXNMb2dnZWRJbikge1xuICAgIDxhXG4gICAgICAgICNsb2dpbkxpbmtcbiAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICBjbGFzcz1cImVjbC1idXR0b24gZWNsLWJ1dHRvbi0tdGVydGlhcnkgZWNsLXNpdGUtaGVhZGVyX19sb2dpbi10b2dnbGVcIlxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwibG9naW4tYm94LWlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0xvZ2luQm94QWN0aXZlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTG9naW5Cb3hUb2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICA8ZWNsLWljb24gaWNvbj1cImxvZ2dlZC1pblwiIHNpemU9XCJzXCIgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2ljb25cIj48L2VjbC1pY29uPlxuICAgICAgICB7eyAnZWNsLnNpdGUtaGVhZGVyLkxPR0dFRC1JTicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2E+XG4gICAgPGRpdlxuICAgICAgICBpZD1cImxvZ2luLWJveC1pZFwiXG4gICAgICAgIFtzdHlsZV09XCJ7Jy0tZWNsLWxvZ2luLWFycm93LXBvc2l0aW9uJzogbG9naW5BcnJvd1Bvc2l0aW9ufVwiXG4gICAgICAgIGNsYXNzPVwie3sgZ2V0TG9naW5Cb3hDc3NDbGFzc2VzKCkgfX1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGFcbiAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICBjbGFzcz1cImVjbC1idXR0b24gZWNsLWJ1dHRvbi0tdGVydGlhcnkgZWNsLXNpdGUtaGVhZGVyX19sb2dpbi10b2dnbGVcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzTG9naW5Cb3hBY3RpdmVcIlxuICAgICAgICAoY2xpY2spPVwib25Mb2dpbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJsb2ctaW5cIiBzaXplPVwic1wiIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19pY29uXCI+PC9lY2wtaWNvbj5cbiAgICAgICAge3sgJ2VjbC5zaXRlLWhlYWRlci5MT0dJTicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2E+XG59XG4iXX0=
|
|
@@ -484,11 +484,11 @@ export class EclTabsComponent extends ECLBaseDirective {
|
|
|
484
484
|
}).observe(this.tabsList.nativeElement);
|
|
485
485
|
}
|
|
486
486
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclTabsComponent, deps: [{ token: i0.IterableDiffers }, { token: i1.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.EclRtlService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
487
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclTabsComponent, selector: "nav[eclTabs], ecl-tabs", inputs: { bodyClass: "bodyClass" }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i5.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i6.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: i7.EclTabComponent, selector: "ecl-tab, [eclTab]", inputs: ["id", "isHidden", "isActive"], outputs: ["selectTab", "keydownTab"] }, { kind: "component", type: i8.EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "component", type: i9.EclTabMoreComponent, selector: "ecl-tab-more", inputs: ["isHidden"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclTabsComponent, selector: "nav[eclTabs], ecl-tabs", inputs: { bodyClass: "bodyClass" }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i5.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i6.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: i7.EclTabComponent, selector: "ecl-tab, [eclTab]", inputs: ["id", "isHidden", "isActive"], outputs: ["selectTab", "keydownTab"] }, { kind: "component", type: i8.EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "component", type: i9.EclTabMoreComponent, selector: "ecl-tab-more", inputs: ["isHidden"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
488
488
|
}
|
|
489
489
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclTabsComponent, decorators: [{
|
|
490
490
|
type: Component,
|
|
491
|
-
args: [{ selector: 'nav[eclTabs], ecl-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n" }]
|
|
491
|
+
args: [{ selector: 'nav[eclTabs], ecl-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n" }]
|
|
492
492
|
}], ctorParameters: () => [{ type: i0.IterableDiffers }, { type: i1.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.EclRtlService }, { type: undefined, decorators: [{
|
|
493
493
|
type: Inject,
|
|
494
494
|
args: [PLATFORM_ID]
|
|
@@ -518,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
518
518
|
type: HostListener,
|
|
519
519
|
args: ['document:click', ['$event.target']]
|
|
520
520
|
}] } });
|
|
521
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC10YWJzL2VjbC10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtdGFicy9lY2wtdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZUFBZSxFQUVmLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFNTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLG1DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQVFELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUE4QmxELFlBQ1ksT0FBd0IsRUFDeEIscUJBQXlDLEVBQ3pDLEVBQXFCLEVBQ3JCLEVBQWMsRUFDZCxhQUE0QixFQUNQ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Q0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQzsrR0FoaEJRLGdCQUFnQiwyS0FvQ2IsV0FBVzttR0FwQ2QsZ0JBQWdCLHFQQUlTLGVBQWUsK2ZDaERyRCx1aEhBa0ZBOzs0RkR0Q2EsZ0JBQWdCO2tCQU41QixTQUFTOytCQUVJLHdCQUF3QixpQkFFbkIsaUJBQWlCLENBQUMsSUFBSTs7MEJBc0NoQyxNQUFNOzJCQUFDLFdBQVc7eUNBbkNkLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFFNkMsSUFBSTtzQkFBdkQsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUUzQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0ksVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNELE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDRSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ08sWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQW1EekIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZUNoYW5nZXMsXG4gICAgSXRlcmFibGVEaWZmZXIsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xSdGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgS2V5Q29kZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWJ1dHRvbic7XG5pbXBvcnQgeyBFY2xUYWJDb21wb25lbnQsIEVjbFRhYlNlbGVjdEV2ZW50IH0gZnJvbSAnLi9lY2wtdGFiLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBlbnVtIFNoaWZ0RGlyZWN0aW9uIHtcbiAgICBORVhUID0gJ25leHQnLFxuICAgIFBSRVZJT1VTID0gJ3ByZXYnLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnbmF2W2VjbFRhYnNdLCBlY2wtdGFicycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xUYWJzQ29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBib2R5Q2xhc3MgPSAnZWNsLXUtbXQtcyc7XG4gICAgQE91dHB1dCgpIHRhYlNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsVGFiU2VsZWN0RXZlbnQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsVGFiQ29tcG9uZW50KSkgdGFiczogUXVlcnlMaXN0PEVjbFRhYkNvbXBvbmVudD47XG5cbiAgICBAVmlld0NoaWxkKCd0YWJzTGlzdCcpIHRhYnNMaXN0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ21vcmVCdXR0b24nKSBtb3JlQnV0dG9uOiBFY2xCdXR0b25Db21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnYnRuUHJldicpIGJ0blByZXY6IEVjbEJ1dHRvbkNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdidG5OZXh0JykgYnRuTmV4dDogRWNsQnV0dG9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTGlzdCcpIGRyb3Bkb3duTGlzdDogRWxlbWVudFJlZjtcbiAgICBkcm9wZG93blRhYnM6IEFycmF5PEVjbFRhYkNvbXBvbmVudD4gPSBbXTtcbiAgICBsaXN0VGFiczogQXJyYXk8RWNsVGFiQ29tcG9uZW50PiA9IFtdO1xuXG4gICAgaW5kZXggPSAwO1xuICAgIGlzRHJvcGRvd25FeHBhbmRlZCA9IGZhbHNlO1xuICAgIGlzTW9iaWxlQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIGlzTW9yZUJ1dHRvblNob3cgPSB0cnVlO1xuICAgIGlzU2Nyb2xsUHJldkJ0blNob3cgPSBmYWxzZTtcbiAgICBpc1Njcm9sbE5leHRCdG5TaG93ID0gZmFsc2U7XG4gICAgc3R5bGVUcmFuc2Zvcm0gPSAndHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCknO1xuXG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbFRhYkNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkaWZmOiBJdGVyYWJsZUNoYW5nZXM8RWNsVGFiQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGlzRmlyc3RDYWxsID0gdHJ1ZTtcbiAgICBwcml2YXRlIGlzUnRsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtb3JlQnRuV2lkdGg6IG51bWJlcjtcbiAgICBwcml2YXRlIFRJTUVPVVRfSU5URVJWQUwgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBlY2xSdGxTZXJ2aWNlOiBFY2xSdGxTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0VGFiaW5kZXgoKSk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVUYWJzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlRWxlbWVudFNpemVDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gICAgb25DbGljayh0YXJnZXQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vcmVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpICYmICF0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUJ1dHRvbkFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFRhYnMuZmluZCgoZWwpID0+IGVsLmlzQWN0aXZlKSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsUHJldigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uUFJFVklPVVMpO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsTmV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uTkVYVCk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQgPSAhdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgZ2V0VGFic1dpZHRoU3R5bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID8gYCR7dGhpcy5nZXRUYWJzV2lkdGgoKX1weGAgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgZ2V0VGFic1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMucmVkdWNlKCh0b3RhbCwgaXRlbSkgPT4gKHRvdGFsICs9IE1hdGguY2VpbChpdGVtLmdldFdpZHRoKCkpKSwgMCk7XG4gICAgfVxuXG4gICAgZ2V0SGlkZGVuVGFic0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzSGlkZGVuKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0VGFiTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYnNBc0FycmF5KClbaW5kZXhdLmdldFRhYkxhYmVsKCk7XG4gICAgfVxuXG4gICAgZ2V0VHJhbnNpdGlvbkR1cmF0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuICcwLjRzJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAnO1xuICAgIH1cblxuICAgIG9uVGFiQmx1cihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIGlmIChldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rmlyc3RUYWJGcm9tQXJyYXkoKS5vbkJsdXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGFzdFZpc2libGVUYWIoKS5vbkZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLmdldExhc3RWaXNpYmxlVGFiKCkub25CbHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhYlNlbGVjdCh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVBbGxUYWJzKHRoaXMudGFicy50b0FycmF5KCksIHRoaXMubGlzdFRhYnMpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgICAgIHRoaXMuc2VuZFRhYlNlbGVjdEV2ZW50KHRhYik7XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duQXJyb3dSaWdodChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uTkVYVCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuZ2V0VGFic0NvdW50KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5nZXRUYWJzQ291bnQoKSAtIDEgJiYgIXRoaXMuaXNNb2JpbGVCcmVha3BvaW50ICkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uRmlyc3RUYWIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk5leHRUYWIoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duQXJyb3dMZWZ0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLnNoaWZ0VGFicyhTaGlmdERpcmVjdGlvbi5QUkVWSU9VUyk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgIXRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25MYXN0VGFiKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25QcmV2VGFiKGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkhvbWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNPbkZpcnN0VGFiKCk7XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duRW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzT25MYXN0VGFiKCk7XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duKGV2ZW50OiBFdmVudCwgdGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFRhYnNBc0FycmF5KCkuaW5kZXhPZih0YWIpO1xuICAgICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfTEVGVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkFycm93TGVmdChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfUklHSFQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYktleWRvd25BcnJvd1JpZ2h0KGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkFycm93TGVmdChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkFycm93UmlnaHQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVORDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkVuZCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkhPTUU6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYktleWRvd25Ib21lKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYlNlbGVjdCh0YWIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiQmx1cihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hpZnRUYWJzKGRpcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFNoaWZJbmRleChkaXIsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxQcmV2QnRuU2hvdyA9IHRoaXMuaW5kZXggPj0gMTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gdGhpcy5pbmRleCA8PSB0aGlzLmdldFRhYnNDb3VudCgpIC0gMTtcblxuICAgICAgICBjb25zdCBsZWZ0TWFyZ2luID0gdGhpcy5pbmRleCA9PT0gMCA/IDAgOiB0aGlzLmJ0blByZXYuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIDEzO1xuXG4gICAgICAgIGxldCBuZXdPZmZzZXQgPSAwO1xuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgbmV3T2Zmc2V0ID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIHRoaXMudGFic0xpc3QubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVt0aGlzLmluZGV4XS5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdLmhvc3RFbGVtZW50Lm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAgICAgICAgICAgbGVmdE1hcmdpbixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLmNlaWwodGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdPy5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC0gbGVmdE1hcmdpbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhTY3JvbGwgPSBNYXRoLmNlaWwodGhpcy5nZXRUYWJzTGlzdFdpZHRoKCkgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuXG4gICAgICAgIGlmIChuZXdPZmZzZXQgPiBtYXhTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTY3JvbGxOZXh0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3T2Zmc2V0ID0gbWF4U2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtuZXdPZmZzZXR9cHgsIDBweCwgMHB4KWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKC0ke25ld09mZnNldH1weCwgMHB4LCAwcHgpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2hpZkluZGV4KGRpcjogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGRpciA9PT0gU2hpZnREaXJlY3Rpb24uTkVYVCkge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmdldFRhYnNDb3VudCgpIC0gMSAmJiAhdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDAgICYmICF0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRhYnNDb3VudCgpIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4IC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2Vjb25kTGlzdEZvckRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzID0gW107XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IE9iamVjdC5hc3NpZ24oe30sIHRhYikgYXMgRWNsVGFiQ29tcG9uZW50O1xuICAgICAgICAgICAgbmV3VGFiLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld1RhYi5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5saXN0VGFicy5wdXNoKG5ld1RhYiBhcyBFY2xUYWJDb21wb25lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYnNBc0FycmF5KCk6IEVjbFRhYkNvbXBvbmVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy50b0FycmF5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy50b0FycmF5KCkubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZVRhYnNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZVRhYnNDaGFuZ2VzT2JzZXJ2YWJsZSh0aGlzLnRhYnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy5vblRhYnNDaGFuZ2VzLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVGFic0NoYW5nZXNPYnNlcnZhYmxlKHRhYnM6IFF1ZXJ5TGlzdDxFY2xUYWJDb21wb25lbnQ+KTogT2JzZXJ2YWJsZTxRdWVyeUxpc3Q8RWNsVGFiQ29tcG9uZW50Pj4ge1xuICAgICAgICByZXR1cm4gb2YodGFicykucGlwZShtZXJnZVdpdGgodGFicy5jaGFuZ2VzKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGFic0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy50YWJzKTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlmZikge1xuICAgICAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdFRhYkV2ZW50cyh0YWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpZmYuZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0VGFiRXZlbnRzKGNoYW5nZS5pdGVtKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRpZmYuZm9yRWFjaFJlbW92ZWRJdGVtKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RUYWJFdmVudHMoY2hhbmdlLml0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVTZWNvbmRMaXN0Rm9yRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RUYWJFdmVudHModGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGFiLnNlbGVjdFRhYi5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25UYWJTZWxlY3QodGFiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRhYi5rZXlkb3duVGFiLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bihldmVudCwgdGFiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUYWJpbmRleCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLnRhYmluZGV4ID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS50YWJpbmRleCA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhc3RWaXNpYmxlVGFiKCk6IEVjbFRhYkNvbXBvbmVudCB7XG4gICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICB0aGlzLmdldFRhYnNBc0FycmF5KCkuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGlmICghZWwuaXNIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBlbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT25OZXh0VGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VGFic0FzQXJyYXkoKVtpbmRleCArIDFdLmlzSGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uRHJvcGRvd25UYWIoaW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4ICsgMV0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRmlyc3RUYWIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmdldEZpcnN0VGFiRnJvbUFycmF5KCkub25Gb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkxhc3RUYWIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nZXRMYXN0VGFiRnJvbUFycmF5KCkuaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGFzdFRhYkZyb21BcnJheSgpLm9uRm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25Ecm9wZG93blRhYih0aGlzLmdldFRhYnNDb3VudCgpIC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT25QcmV2VGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RUYWJzW2luZGV4IC0gMV0uaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkRyb3Bkb3duVGFiKGluZGV4IC0gMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVtpbmRleCAtIDFdLm9uRm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkRyb3Bkb3duVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpbmRleF0uZmlyc3RDaGlsZC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFzdFRhYkZyb21BcnJheSgpOiBFY2xUYWJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuZ2V0VGFic0FzQXJyYXkoKS5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpcnN0VGFiRnJvbUFycmF5KCk6IEVjbFRhYkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYnNBc0FycmF5KClbMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNjb25uZWN0VGFiRXZlbnRzKHRhYjogRWNsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0YWIgJiYgdGFiLnNlbGVjdFRhYikge1xuICAgICAgICAgICAgdGFiLnNlbGVjdFRhYi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWFjdGl2YXRlQWxsVGFicyh0YWJzOiBBcnJheTxFY2xUYWJDb21wb25lbnQ+LCBsaXN0VGFiczogQXJyYXk8RWNsVGFiQ29tcG9uZW50Pik6IHZvaWQge1xuICAgICAgICB0YWJzLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICBsaXN0VGFicy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgaXQuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZVRhYih0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0YWIuaXNBY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VuZFRhYlNlbGVjdEV2ZW50KHRhYjogRWNsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFiU2VsZWN0Lm5leHQobmV3IEVjbFRhYlNlbGVjdEV2ZW50KHRhYikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoWycobWF4LXdpZHRoOiA0ODBweCknXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVNb2JpbGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICAgIHRoaXMuaW5pdE1vcmVCdG5XaWR0aCgpO1xuICAgICAgICBsZXQgc3RvcFdpZHRoID0gdGhpcy5tb3JlQnRuV2lkdGggKyAyNTtcbiAgICAgICAgY29uc3QgaGlkZGVuSXRlbXMgPSBbXTtcbiAgICAgICAgY29uc3QgbGlzdFdpZHRoID0gdGhpcy5nZXRUYWJzTGlzdFdpZHRoKCk7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxOZXh0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2Nyb2xsUHJldkJ0blNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc01vcmVCdXR0b25TaG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAobGlzdFdpZHRoID49IHN0b3BXaWR0aCArIGl0ZW0uZ2V0V2lkdGgoKSAmJiAhaGlkZGVuSXRlbXMuaW5jbHVkZXMoaSAtIDEpKSB7XG4gICAgICAgICAgICAgICAgc3RvcFdpZHRoICs9IGl0ZW0uZ2V0V2lkdGgoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0VGFic1tpXS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhpZGRlbkl0ZW1zLnB1c2goaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBpZiAoIWhpZGRlbkl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pc01vcmVCdXR0b25TaG93ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW1Gb3JNYWluVGFicygpO1xuICAgICAgICAgICAgdGhpcy5oaWRlQWxsRHJvcGRvd25UYWJzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzTW9yZUJ1dHRvblNob3cgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXRIaWRkZW5JdGVtc0ZvckRyb3Bkb3duVGFicyhoaWRkZW5JdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRNb3JlQnRuV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RDYWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVCdG5XaWR0aCA9IHRoaXMubW9yZUJ1dHRvbi5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICAgICAgdGhpcy5pc0ZpcnN0Q2FsbCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlQWxsRHJvcGRvd25UYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzSGlkZGVuID0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBY3RpdmVJdGVtRm9yTWFpblRhYnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdFRhYnMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRhYnMudG9BcnJheSgpW2luZGV4XS5pc0FjdGl2ZSA9IHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYnNMaXN0V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFic0xpc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhpZGRlbkl0ZW1zRm9yRHJvcGRvd25UYWJzKGhpZGRlbkl0ZW1zOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaGlkZGVuSXRlbXMuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNb3JlQnV0dG9uU2hvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2Nyb2xsUHJldkJ0blNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRBbGxUYWJzVmlzaWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QWxsVGFic1Zpc2libGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKChpdGVtICwgaSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzUnRsT2xkID0gdGhpcy5pc1J0bDtcbiAgICAgICAgdGhpcy5lY2xSdGxTZXJ2aWNlLmN1cnJlbnRSdGxTdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocnRsU3RhdGUpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSdGwgPSBydGxTdGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgJiYgdGhpcy5oYXNSdGxDaGFuZ2VkKGlzUnRsT2xkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJ0bENoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1J0bENoYW5nZWQoaXNSdGxPbGQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsT2xkICE9PSB0aGlzLmlzUnRsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZU1vYmlsZSgpO1xuICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlRWxlbWVudFNpemVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoKTtcbiAgICAgICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTCk7XG4gICAgICAgIH0pLm9ic2VydmUodGhpcy50YWJzTGlzdC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWNsLXRhYnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXRhYnNfX2NvbnRhaW5lclwiXG4gICAgICAgICBbY2xhc3MuZWNsLXRhYnNfX2NvbnRhaW5lci0tcmlnaHRdPVwiaXNTY3JvbGxOZXh0QnRuU2hvd1wiXG4gICAgICAgICBbY2xhc3MuZWNsLXRhYnNfX2NvbnRhaW5lci0tbGVmdF09XCJpc1Njcm9sbFByZXZCdG5TaG93XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZWNsLXRhYnNfX2xpc3RcIlxuICAgICAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAgICAgI3RhYnNMaXN0XG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0VGFic1dpZHRoU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInN0eWxlVHJhbnNmb3JtXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uLWR1cmF0aW9uXT1cImdldFRyYW5zaXRpb25EdXJhdGlvbigpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtdGFiLCBbZWNsVGFiXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxlY2wtdGFiLW1vcmUgW2lzSGlkZGVuXT1cIiFpc01vcmVCdXR0b25TaG93XCI+XG4gICAgICAgICAgICAgICAgQGlmIChsaXN0VGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC10YWJzX19kcm9wZG93blwiIFtjbGFzcy5lY2wtdGFic19fZHJvcGRvd24tLXNob3ddPVwiaXNEcm9wZG93bkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtdGFic19fZHJvcGRvd24tbGlzdFwiICNkcm9wZG93bkxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0YWIgb2YgbGlzdFRhYnM7IHRyYWNrIHRhYi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYiBbaXNBY3RpdmVdPVwidGFiLmlzQWN0aXZlXCIgW2lzSGlkZGVuXT1cInRhYi5pc0hpZGRlblwiIChjbGljayk9XCJvblRhYlNlbGVjdCh0YWIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25UYWJLZXlkb3duKCRldmVudCwgdGFiKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYi1sYWJlbD57eyBnZXRUYWJMYWJlbChpKSB9fTwvZWNsLXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VjbC10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9lY2wtdGFiLW1vcmU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICNtb3JlQnV0dG9uIGVjbEJ1dHRvbiBjbGFzcz1cImVjbC10YWJzX190b2dnbGVcIiB0YWJpbmRleD1cIi0xXCIgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNEcm9wZG93bkV4cGFuZGVkXCIgW2NsYXNzLmVjbC10YWJzX190b2dnbGUtLWFjdGl2ZV09XCJpc01vcmVCdXR0b25BY3RpdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25Ub2dnbGUoKVwiIFtjbGFzcy5lY2wtdGFic19fdG9nZ2xlLS1oaWRkZW5dPVwiIWlzTW9yZUJ1dHRvblNob3dcIj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHt7ICdlY2wuY29tbW9uLk1PUkUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgKHt7IGdldEhpZGRlblRhYnNDb3VudCgpIH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMTgwXCIgc2l6ZT1cImZsdWlkXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXRhYnNfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNidG5QcmV2XG4gICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICBpc0ljb25Pbmx5XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWNsLXRhYnNfX3ByZXZcIlxuICAgICAgICAgICAgW2NsYXNzLmVjbC11LWQtbm9uZV09XCIhaXNTY3JvbGxQcmV2QnRuU2hvd1wiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLXUtZC1ibG9ja109XCJpc1Njcm9sbFByZXZCdG5TaG93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNjcm9sbFByZXYoKVwiPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMjcwXCIgc2l6ZT1cInNcIiBjbGFzcz1cIlwiPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+e3sgJ2VjbC5jb21tb24uUFJFVklPVVMgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAjYnRuTmV4dFxuICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwiZ2hvc3RcIlxuICAgICAgICAgICAgaXNJY29uT25seVxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImVjbC10YWJzX19uZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtdS1kLW5vbmVdPVwiIWlzU2Nyb2xsTmV4dEJ0blNob3dcIlxuICAgICAgICAgICAgW2NsYXNzLmVjbC11LWQtYmxvY2tdPVwiaXNTY3JvbGxOZXh0QnRuU2hvd1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TY3JvbGxOZXh0KClcIj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCIgc2l6ZT1cInNcIiBjbGFzcz1cIlwiPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+e3sgJ2VjbC5jb21tb24uTkVYVCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuQGZvciAodGFiIG9mIHRhYnMudG9BcnJheSgpOyB0cmFjayB0YWIudGFiTGFiZWwpIHtcbiAgICBAaWYgKHRhYi5pc0FjdGl2ZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwie3sgYm9keUNsYXNzIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG59XG5AZm9yICh0YWIgb2YgbGlzdFRhYnM7IHRyYWNrIHRhYi50YWJMYWJlbCkge1xuICAgIEBpZiAodGFiLmlzQWN0aXZlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBib2R5Q2xhc3MgfX1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbn1cbiJdfQ==
|
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC10YWJzL2VjbC10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtdGFicy9lY2wtdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsZUFBZSxFQUVmLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFNTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLG1DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQVFELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUE4QmxELFlBQ1ksT0FBd0IsRUFDeEIscUJBQXlDLEVBQ3pDLEVBQXFCLEVBQ3JCLEVBQWMsRUFDZCxhQUE0QixFQUNQ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Q0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQzsrR0FoaEJRLGdCQUFnQiwyS0FvQ2IsV0FBVzttR0FwQ2QsZ0JBQWdCLHFQQUlTLGVBQWUsK2ZDaERyRCx5aEhBa0ZBOzs0RkR0Q2EsZ0JBQWdCO2tCQU41QixTQUFTOytCQUVJLHdCQUF3QixpQkFFbkIsaUJBQWlCLENBQUMsSUFBSTs7MEJBc0NoQyxNQUFNOzJCQUFDLFdBQVc7eUNBbkNkLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFFNkMsSUFBSTtzQkFBdkQsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUUzQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0ksVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNELE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDRSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ08sWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQW1EekIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZUNoYW5nZXMsXG4gICAgSXRlcmFibGVEaWZmZXIsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xSdGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgS2V5Q29kZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWJ1dHRvbic7XG5pbXBvcnQgeyBFY2xUYWJDb21wb25lbnQsIEVjbFRhYlNlbGVjdEV2ZW50IH0gZnJvbSAnLi9lY2wtdGFiLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBlbnVtIFNoaWZ0RGlyZWN0aW9uIHtcbiAgICBORVhUID0gJ25leHQnLFxuICAgIFBSRVZJT1VTID0gJ3ByZXYnLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnbmF2W2VjbFRhYnNdLCBlY2wtdGFicycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xUYWJzQ29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBib2R5Q2xhc3MgPSAnZWNsLXUtbXQtcyc7XG4gICAgQE91dHB1dCgpIHRhYlNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsVGFiU2VsZWN0RXZlbnQ+KCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsVGFiQ29tcG9uZW50KSkgdGFiczogUXVlcnlMaXN0PEVjbFRhYkNvbXBvbmVudD47XG5cbiAgICBAVmlld0NoaWxkKCd0YWJzTGlzdCcpIHRhYnNMaXN0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ21vcmVCdXR0b24nKSBtb3JlQnV0dG9uOiBFY2xCdXR0b25Db21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnYnRuUHJldicpIGJ0blByZXY6IEVjbEJ1dHRvbkNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdidG5OZXh0JykgYnRuTmV4dDogRWNsQnV0dG9uQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTGlzdCcpIGRyb3Bkb3duTGlzdDogRWxlbWVudFJlZjtcbiAgICBkcm9wZG93blRhYnM6IEFycmF5PEVjbFRhYkNvbXBvbmVudD4gPSBbXTtcbiAgICBsaXN0VGFiczogQXJyYXk8RWNsVGFiQ29tcG9uZW50PiA9IFtdO1xuXG4gICAgaW5kZXggPSAwO1xuICAgIGlzRHJvcGRvd25FeHBhbmRlZCA9IGZhbHNlO1xuICAgIGlzTW9iaWxlQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIGlzTW9yZUJ1dHRvblNob3cgPSB0cnVlO1xuICAgIGlzU2Nyb2xsUHJldkJ0blNob3cgPSBmYWxzZTtcbiAgICBpc1Njcm9sbE5leHRCdG5TaG93ID0gZmFsc2U7XG4gICAgc3R5bGVUcmFuc2Zvcm0gPSAndHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCknO1xuXG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbFRhYkNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkaWZmOiBJdGVyYWJsZUNoYW5nZXM8RWNsVGFiQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGlzRmlyc3RDYWxsID0gdHJ1ZTtcbiAgICBwcml2YXRlIGlzUnRsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBtb3JlQnRuV2lkdGg6IG51bWJlcjtcbiAgICBwcml2YXRlIFRJTUVPVVRfSU5URVJWQUwgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBlY2xSdGxTZXJ2aWNlOiBFY2xSdGxTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0VGFiaW5kZXgoKSk7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVUYWJzQ2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlRWxlbWVudFNpemVDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gICAgb25DbGljayh0YXJnZXQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vcmVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpICYmICF0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzTW9yZUJ1dHRvbkFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdFRhYnMuZmluZCgoZWwpID0+IGVsLmlzQWN0aXZlKSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsUHJldigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uUFJFVklPVVMpO1xuICAgIH1cblxuICAgIG9uU2Nyb2xsTmV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uTkVYVCk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQgPSAhdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgZ2V0VGFic1dpZHRoU3R5bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID8gYCR7dGhpcy5nZXRUYWJzV2lkdGgoKX1weGAgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgZ2V0VGFic1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMucmVkdWNlKCh0b3RhbCwgaXRlbSkgPT4gKHRvdGFsICs9IE1hdGguY2VpbChpdGVtLmdldFdpZHRoKCkpKSwgMCk7XG4gICAgfVxuXG4gICAgZ2V0SGlkZGVuVGFic0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzSGlkZGVuKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0VGFiTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYnNBc0FycmF5KClbaW5kZXhdLmdldFRhYkxhYmVsKCk7XG4gICAgfVxuXG4gICAgZ2V0VHJhbnNpdGlvbkR1cmF0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuICcwLjRzJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAnO1xuICAgIH1cblxuICAgIG9uVGFiQmx1cihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIGlmIChldnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rmlyc3RUYWJGcm9tQXJyYXkoKS5vbkJsdXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGFzdFZpc2libGVUYWIoKS5vbkZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLmdldExhc3RWaXNpYmxlVGFiKCkub25CbHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhYlNlbGVjdCh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVBbGxUYWJzKHRoaXMudGFicy50b0FycmF5KCksIHRoaXMubGlzdFRhYnMpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlVGFiKHRhYik7XG4gICAgICAgIHRoaXMuc2VuZFRhYlNlbGVjdEV2ZW50KHRhYik7XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duQXJyb3dSaWdodChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uTkVYVCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuZ2V0VGFic0NvdW50KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5nZXRUYWJzQ291bnQoKSAtIDEgJiYgIXRoaXMuaXNNb2JpbGVCcmVha3BvaW50ICkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uRmlyc3RUYWIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbk5leHRUYWIoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duQXJyb3dMZWZ0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLnNoaWZ0VGFicyhTaGlmdERpcmVjdGlvbi5QUkVWSU9VUyk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgIXRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25MYXN0VGFiKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25QcmV2VGFiKGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkhvbWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNPbkZpcnN0VGFiKCk7XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duRW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzT25MYXN0VGFiKCk7XG4gICAgfVxuXG4gICAgb25UYWJLZXlkb3duKGV2ZW50OiBFdmVudCwgdGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldFRhYnNBc0FycmF5KCkuaW5kZXhPZih0YWIpO1xuICAgICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfTEVGVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkFycm93TGVmdChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfUklHSFQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYktleWRvd25BcnJvd1JpZ2h0KGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkFycm93TGVmdChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkFycm93UmlnaHQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVORDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkVuZCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkhPTUU6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYktleWRvd25Ib21lKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYlNlbGVjdCh0YWIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiQmx1cihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hpZnRUYWJzKGRpcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFNoaWZJbmRleChkaXIsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxQcmV2QnRuU2hvdyA9IHRoaXMuaW5kZXggPj0gMTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gdGhpcy5pbmRleCA8PSB0aGlzLmdldFRhYnNDb3VudCgpIC0gMTtcblxuICAgICAgICBjb25zdCBsZWZ0TWFyZ2luID0gdGhpcy5pbmRleCA9PT0gMCA/IDAgOiB0aGlzLmJ0blByZXYuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIDEzO1xuXG4gICAgICAgIGxldCBuZXdPZmZzZXQgPSAwO1xuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgbmV3T2Zmc2V0ID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIHRoaXMudGFic0xpc3QubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVt0aGlzLmluZGV4XS5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdLmhvc3RFbGVtZW50Lm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAgICAgICAgICAgbGVmdE1hcmdpbixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLmNlaWwodGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdPy5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC0gbGVmdE1hcmdpbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhTY3JvbGwgPSBNYXRoLmNlaWwodGhpcy5nZXRUYWJzTGlzdFdpZHRoKCkgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuXG4gICAgICAgIGlmIChuZXdPZmZzZXQgPiBtYXhTY3JvbGwpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTY3JvbGxOZXh0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3T2Zmc2V0ID0gbWF4U2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSdGwpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtuZXdPZmZzZXR9cHgsIDBweCwgMHB4KWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gYHRyYW5zbGF0ZTNkKC0ke25ld09mZnNldH1weCwgMHB4LCAwcHgpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2hpZkluZGV4KGRpcjogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGRpciA9PT0gU2hpZnREaXJlY3Rpb24uTkVYVCkge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmdldFRhYnNDb3VudCgpIC0gMSAmJiAhdGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDAgICYmICF0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRhYnNDb3VudCgpIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4IC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlU2Vjb25kTGlzdEZvckRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzID0gW107XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1RhYiA9IE9iamVjdC5hc3NpZ24oe30sIHRhYikgYXMgRWNsVGFiQ29tcG9uZW50O1xuICAgICAgICAgICAgbmV3VGFiLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld1RhYi5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5saXN0VGFicy5wdXNoKG5ld1RhYiBhcyBFY2xUYWJDb21wb25lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYnNBc0FycmF5KCk6IEVjbFRhYkNvbXBvbmVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy50b0FycmF5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy50b0FycmF5KCkubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duRXhwYW5kZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZVRhYnNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZVRhYnNDaGFuZ2VzT2JzZXJ2YWJsZSh0aGlzLnRhYnMpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy5vblRhYnNDaGFuZ2VzLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVGFic0NoYW5nZXNPYnNlcnZhYmxlKHRhYnM6IFF1ZXJ5TGlzdDxFY2xUYWJDb21wb25lbnQ+KTogT2JzZXJ2YWJsZTxRdWVyeUxpc3Q8RWNsVGFiQ29tcG9uZW50Pj4ge1xuICAgICAgICByZXR1cm4gb2YodGFicykucGlwZShtZXJnZVdpdGgodGFicy5jaGFuZ2VzKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGFic0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy50YWJzKTtcblxuICAgICAgICBpZiAoIXRoaXMuZGlmZikge1xuICAgICAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdFRhYkV2ZW50cyh0YWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpZmYuZm9yRWFjaEFkZGVkSXRlbSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0VGFiRXZlbnRzKGNoYW5nZS5pdGVtKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmRpZmYuZm9yRWFjaFJlbW92ZWRJdGVtKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RUYWJFdmVudHMoY2hhbmdlLml0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVTZWNvbmRMaXN0Rm9yRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RUYWJFdmVudHModGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGFiLnNlbGVjdFRhYi5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25UYWJTZWxlY3QodGFiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRhYi5rZXlkb3duVGFiLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bihldmVudCwgdGFiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUYWJpbmRleCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLnRhYmluZGV4ID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS50YWJpbmRleCA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhc3RWaXNpYmxlVGFiKCk6IEVjbFRhYkNvbXBvbmVudCB7XG4gICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICB0aGlzLmdldFRhYnNBc0FycmF5KCkuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgIGlmICghZWwuaXNIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBlbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT25OZXh0VGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VGFic0FzQXJyYXkoKVtpbmRleCArIDFdLmlzSGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uRHJvcGRvd25UYWIoaW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4ICsgMV0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRmlyc3RUYWIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmdldEZpcnN0VGFiRnJvbUFycmF5KCkub25Gb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkxhc3RUYWIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nZXRMYXN0VGFiRnJvbUFycmF5KCkuaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGFzdFRhYkZyb21BcnJheSgpLm9uRm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25Ecm9wZG93blRhYih0aGlzLmdldFRhYnNDb3VudCgpIC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT25QcmV2VGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RUYWJzW2luZGV4IC0gMV0uaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkRyb3Bkb3duVGFiKGluZGV4IC0gMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVtpbmRleCAtIDFdLm9uRm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbkRyb3Bkb3duVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpbmRleF0uZmlyc3RDaGlsZC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFzdFRhYkZyb21BcnJheSgpOiBFY2xUYWJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuZ2V0VGFic0FzQXJyYXkoKS5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpcnN0VGFiRnJvbUFycmF5KCk6IEVjbFRhYkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYnNBc0FycmF5KClbMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNjb25uZWN0VGFiRXZlbnRzKHRhYjogRWNsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0YWIgJiYgdGFiLnNlbGVjdFRhYikge1xuICAgICAgICAgICAgdGFiLnNlbGVjdFRhYi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWFjdGl2YXRlQWxsVGFicyh0YWJzOiBBcnJheTxFY2xUYWJDb21wb25lbnQ+LCBsaXN0VGFiczogQXJyYXk8RWNsVGFiQ29tcG9uZW50Pik6IHZvaWQge1xuICAgICAgICB0YWJzLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgICAgICBpdC5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICBsaXN0VGFicy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgaXQuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZVRhYih0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0YWIuaXNBY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VuZFRhYlNlbGVjdEV2ZW50KHRhYjogRWNsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFiU2VsZWN0Lm5leHQobmV3IEVjbFRhYlNlbGVjdEV2ZW50KHRhYikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoWycobWF4LXdpZHRoOiA0ODBweCknXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVNb2JpbGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICAgIHRoaXMuaW5pdE1vcmVCdG5XaWR0aCgpO1xuICAgICAgICBsZXQgc3RvcFdpZHRoID0gdGhpcy5tb3JlQnRuV2lkdGggKyAyNTtcbiAgICAgICAgY29uc3QgaGlkZGVuSXRlbXMgPSBbXTtcbiAgICAgICAgY29uc3QgbGlzdFdpZHRoID0gdGhpcy5nZXRUYWJzTGlzdFdpZHRoKCk7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxOZXh0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2Nyb2xsUHJldkJ0blNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc01vcmVCdXR0b25TaG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAobGlzdFdpZHRoID49IHN0b3BXaWR0aCArIGl0ZW0uZ2V0V2lkdGgoKSAmJiAhaGlkZGVuSXRlbXMuaW5jbHVkZXMoaSAtIDEpKSB7XG4gICAgICAgICAgICAgICAgc3RvcFdpZHRoICs9IGl0ZW0uZ2V0V2lkdGgoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0VGFic1tpXS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhpZGRlbkl0ZW1zLnB1c2goaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBpZiAoIWhpZGRlbkl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pc01vcmVCdXR0b25TaG93ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW1Gb3JNYWluVGFicygpO1xuICAgICAgICAgICAgdGhpcy5oaWRlQWxsRHJvcGRvd25UYWJzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzTW9yZUJ1dHRvblNob3cgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXRIaWRkZW5JdGVtc0ZvckRyb3Bkb3duVGFicyhoaWRkZW5JdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRNb3JlQnRuV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RDYWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVCdG5XaWR0aCA9IHRoaXMubW9yZUJ1dHRvbi5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICAgICAgdGhpcy5pc0ZpcnN0Q2FsbCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlQWxsRHJvcGRvd25UYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzSGlkZGVuID0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBY3RpdmVJdGVtRm9yTWFpblRhYnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGlzdFRhYnMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRhYnMudG9BcnJheSgpW2luZGV4XS5pc0FjdGl2ZSA9IHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYnNMaXN0V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFic0xpc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhpZGRlbkl0ZW1zRm9yRHJvcGRvd25UYWJzKGhpZGRlbkl0ZW1zOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaGlkZGVuSXRlbXMuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNb3JlQnV0dG9uU2hvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzU2Nyb2xsUHJldkJ0blNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRBbGxUYWJzVmlzaWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QWxsVGFic1Zpc2libGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFicy5mb3JFYWNoKChpdGVtICwgaSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzUnRsT2xkID0gdGhpcy5pc1J0bDtcbiAgICAgICAgdGhpcy5lY2xSdGxTZXJ2aWNlLmN1cnJlbnRSdGxTdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocnRsU3RhdGUpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSdGwgPSBydGxTdGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQgJiYgdGhpcy5oYXNSdGxDaGFuZ2VkKGlzUnRsT2xkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJ0bENoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1J0bENoYW5nZWQoaXNSdGxPbGQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsT2xkICE9PSB0aGlzLmlzUnRsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZU1vYmlsZSgpO1xuICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlRWxlbWVudFNpemVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoKTtcbiAgICAgICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTCk7XG4gICAgICAgIH0pLm9ic2VydmUodGhpcy50YWJzTGlzdC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWNsLXRhYnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXRhYnNfX2NvbnRhaW5lclwiXG4gICAgICAgICBbY2xhc3MuZWNsLXRhYnNfX2NvbnRhaW5lci0tcmlnaHRdPVwiaXNTY3JvbGxOZXh0QnRuU2hvd1wiXG4gICAgICAgICBbY2xhc3MuZWNsLXRhYnNfX2NvbnRhaW5lci0tbGVmdF09XCJpc1Njcm9sbFByZXZCdG5TaG93XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZWNsLXRhYnNfX2xpc3RcIlxuICAgICAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAgICAgI3RhYnNMaXN0XG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0VGFic1dpZHRoU3R5bGUoKVwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInN0eWxlVHJhbnNmb3JtXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2l0aW9uLWR1cmF0aW9uXT1cImdldFRyYW5zaXRpb25EdXJhdGlvbigpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtdGFiLCBbZWNsVGFiXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxlY2wtdGFiLW1vcmUgW2lzSGlkZGVuXT1cIiFpc01vcmVCdXR0b25TaG93XCI+XG4gICAgICAgICAgICAgICAgQGlmIChsaXN0VGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC10YWJzX19kcm9wZG93blwiIFtjbGFzcy5lY2wtdGFic19fZHJvcGRvd24tLXNob3ddPVwiaXNEcm9wZG93bkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtdGFic19fZHJvcGRvd24tbGlzdFwiICNkcm9wZG93bkxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0YWIgb2YgbGlzdFRhYnM7IHRyYWNrIHRhYi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYiBbaXNBY3RpdmVdPVwidGFiLmlzQWN0aXZlXCIgW2lzSGlkZGVuXT1cInRhYi5pc0hpZGRlblwiIChjbGljayk9XCJvblRhYlNlbGVjdCh0YWIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25UYWJLZXlkb3duKCRldmVudCwgdGFiKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYi1sYWJlbD57eyBnZXRUYWJMYWJlbChpKSB9fTwvZWNsLXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VjbC10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9lY2wtdGFiLW1vcmU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICNtb3JlQnV0dG9uIGVjbEJ1dHRvbiBjbGFzcz1cImVjbC10YWJzX190b2dnbGVcIiB0YWJpbmRleD1cIi0xXCIgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNEcm9wZG93bkV4cGFuZGVkXCIgW2NsYXNzLmVjbC10YWJzX190b2dnbGUtLWFjdGl2ZV09XCJpc01vcmVCdXR0b25BY3RpdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25Ub2dnbGUoKVwiIFtjbGFzcy5lY2wtdGFic19fdG9nZ2xlLS1oaWRkZW5dPVwiIWlzTW9yZUJ1dHRvblNob3dcIj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHt7ICdlY2wuY29tbW9uLk1PUkUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgKHt7IGdldEhpZGRlblRhYnNDb3VudCgpIH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMTgwXCIgc2l6ZT1cImZsdWlkXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXRhYnNfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNidG5QcmV2XG4gICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICBpc0ljb25Pbmx5XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWNsLXRhYnNfX3ByZXZcIlxuICAgICAgICAgICAgW2NsYXNzLmVjbC11LWQtbm9uZV09XCIhaXNTY3JvbGxQcmV2QnRuU2hvd1wiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLXUtZC1ibG9ja109XCJpc1Njcm9sbFByZXZCdG5TaG93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNjcm9sbFByZXYoKVwiPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMjcwXCIgc2l6ZT1cInNcIiBjbGFzcz1cIlwiPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+e3sgJ2VjbC5jb21tb24uUFJFVklPVVMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2J0bk5leHRcbiAgICAgICAgICAgIGVjbEJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgIGlzSWNvbk9ubHlcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtdGFic19fbmV4dFwiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLXUtZC1ub25lXT1cIiFpc1Njcm9sbE5leHRCdG5TaG93XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtdS1kLWJsb2NrXT1cImlzU2Nyb2xsTmV4dEJ0blNob3dcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsTmV4dCgpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHRyYW5zZm9ybT1cInJvdGF0ZS05MFwiIHNpemU9XCJzXCIgY2xhc3M9XCJcIj4gPC9lY2wtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPnt7ICdlY2wuY29tbW9uLk5FWFQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG5AZm9yICh0YWIgb2YgdGFicy50b0FycmF5KCk7IHRyYWNrIHRhYi50YWJMYWJlbCkge1xuICAgIEBpZiAodGFiLmlzQWN0aXZlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBib2R5Q2xhc3MgfX1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbn1cbkBmb3IgKHRhYiBvZiBsaXN0VGFiczsgdHJhY2sgdGFiLnRhYkxhYmVsKSB7XG4gICAgQGlmICh0YWIuaXNBY3RpdmUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInt7IGJvZHlDbGFzcyB9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufVxuIl19
|
package/fesm2022/eui-ecl.mjs
CHANGED
|
@@ -2133,6 +2133,9 @@ class EclSiteHeaderLoginComponent extends ECLBaseDirective {
|
|
|
2133
2133
|
this.destroy$.next(true);
|
|
2134
2134
|
this.destroy$.unsubscribe();
|
|
2135
2135
|
}
|
|
2136
|
+
onClickOutsideMegaMenu() {
|
|
2137
|
+
this.onLoginBoxClose();
|
|
2138
|
+
}
|
|
2136
2139
|
getLoginBoxCssClasses() {
|
|
2137
2140
|
return ['ecl-site-header__login-box', this.isLoginBoxActive ? 'ecl-site-header__login-box--active' : ''].join(' ');
|
|
2138
2141
|
}
|
|
@@ -2147,6 +2150,13 @@ class EclSiteHeaderLoginComponent extends ECLBaseDirective {
|
|
|
2147
2150
|
this.loginBoxToggle.next(event);
|
|
2148
2151
|
evt.preventDefault();
|
|
2149
2152
|
}
|
|
2153
|
+
onLoginBoxClose() {
|
|
2154
|
+
if (this.isLoginBoxActive) {
|
|
2155
|
+
this.isLoginBoxActive = false;
|
|
2156
|
+
const event = new EclSiteHeaderLoginBoxToggleEvent(this.isLoginBoxActive);
|
|
2157
|
+
this.loginBoxToggle.next(event);
|
|
2158
|
+
}
|
|
2159
|
+
}
|
|
2150
2160
|
handleRtlChangeState() {
|
|
2151
2161
|
this.eclRtlService.currentRtlState$.pipe(debounceTime(50), takeUntil(this.destroy$)).subscribe(() => {
|
|
2152
2162
|
this.calculateLoginArrowPosition(this.parentHeaderRight);
|
|
@@ -2174,11 +2184,20 @@ class EclSiteHeaderLoginComponent extends ECLBaseDirective {
|
|
|
2174
2184
|
}
|
|
2175
2185
|
}
|
|
2176
2186
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderLoginComponent, deps: [{ token: EclSiteHeaderAreaDataService }, { token: EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderLoginComponent, selector: "ecl-site-header-login", inputs: { isLoggedIn: ["isLoggedIn", "isLoggedIn", booleanAttribute] }, outputs: { login: "login", loginBoxToggle: "loginBoxToggle" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "loginLinkElement", first: true, predicate: ["loginLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (isLoggedIn) {\n <a\n #loginLink\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n aria-controls=\"login-box-id\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginBoxToggle($event)\">\n <ecl-icon icon=\"logged-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGGED-IN' | translate }}\n
|
|
2187
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderLoginComponent, selector: "ecl-site-header-login", inputs: { isLoggedIn: ["isLoggedIn", "isLoggedIn", booleanAttribute] }, outputs: { login: "login", loginBoxToggle: "loginBoxToggle" }, host: { listeners: { "eclClickOutside": "onClickOutsideMegaMenu()" }, properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "loginLinkElement", first: true, predicate: ["loginLink"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: ECLBaseDirective }, { directive: ECLClickOutsideDirective, outputs: ["eclClickOutside", "eclClickOutside"] }], ngImport: i0, template: "@if (isLoggedIn) {\n <a\n #loginLink\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n aria-controls=\"login-box-id\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginBoxToggle($event)\">\n <ecl-icon icon=\"logged-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGGED-IN' | translate }}\n </a>\n <div\n id=\"login-box-id\"\n [style]=\"{'--ecl-login-arrow-position': loginArrowPosition}\"\n class=\"{{ getLoginBoxCssClasses() }}\">\n <ng-content></ng-content>\n </div>\n} @else {\n <a\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginClick($event)\">\n <ecl-icon icon=\"log-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGIN' | translate }}\n </a>\n}\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
|
|
2178
2188
|
}
|
|
2179
2189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderLoginComponent, decorators: [{
|
|
2180
2190
|
type: Component,
|
|
2181
|
-
args: [{ selector: 'ecl-site-header-login',
|
|
2191
|
+
args: [{ selector: 'ecl-site-header-login', hostDirectives: [
|
|
2192
|
+
{
|
|
2193
|
+
directive: ECLBaseDirective,
|
|
2194
|
+
},
|
|
2195
|
+
{
|
|
2196
|
+
directive: ECLClickOutsideDirective,
|
|
2197
|
+
// eslint-disable-next-line @angular-eslint/no-outputs-metadata-property
|
|
2198
|
+
outputs: ['eclClickOutside'],
|
|
2199
|
+
},
|
|
2200
|
+
], template: "@if (isLoggedIn) {\n <a\n #loginLink\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n aria-controls=\"login-box-id\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginBoxToggle($event)\">\n <ecl-icon icon=\"logged-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGGED-IN' | translate }}\n </a>\n <div\n id=\"login-box-id\"\n [style]=\"{'--ecl-login-arrow-position': loginArrowPosition}\"\n class=\"{{ getLoginBoxCssClasses() }}\">\n <ng-content></ng-content>\n </div>\n} @else {\n <a\n href=\"#\"\n class=\"ecl-button ecl-button--tertiary ecl-site-header__login-toggle\"\n [attr.aria-expanded]=\"isLoginBoxActive\"\n (click)=\"onLoginClick($event)\">\n <ecl-icon icon=\"log-in\" size=\"s\" class=\"ecl-site-header__icon\"></ecl-icon>\n {{ 'ecl.site-header.LOGIN' | translate }}\n </a>\n}\n", styles: [":host{display:block}\n"] }]
|
|
2182
2201
|
}], ctorParameters: () => [{ type: EclSiteHeaderAreaDataService }, { type: EclRtlService }], propDecorators: { isLoggedIn: [{
|
|
2183
2202
|
type: Input,
|
|
2184
2203
|
args: [{ transform: booleanAttribute }]
|
|
@@ -2192,6 +2211,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2192
2211
|
type: Output
|
|
2193
2212
|
}], loginBoxToggle: [{
|
|
2194
2213
|
type: Output
|
|
2214
|
+
}], onClickOutsideMegaMenu: [{
|
|
2215
|
+
type: HostListener,
|
|
2216
|
+
args: ['eclClickOutside']
|
|
2195
2217
|
}] } });
|
|
2196
2218
|
|
|
2197
2219
|
class EclSiteHeaderSearchEvent extends EclBaseEvent {
|
|
@@ -16228,11 +16250,11 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
16228
16250
|
}).observe(this.tabsList.nativeElement);
|
|
16229
16251
|
}
|
|
16230
16252
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclTabsComponent, deps: [{ token: i0.IterableDiffers }, { token: i1$4.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: EclRtlService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16231
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclTabsComponent, selector: "nav[eclTabs], ecl-tabs", inputs: { bodyClass: "bodyClass" }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n", dependencies: [{ kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclTabComponent, selector: "ecl-tab, [eclTab]", inputs: ["id", "isHidden", "isActive"], outputs: ["selectTab", "keydownTab"] }, { kind: "component", type: EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "component", type: EclTabMoreComponent, selector: "ecl-tab-more", inputs: ["isHidden"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
16253
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclTabsComponent, selector: "nav[eclTabs], ecl-tabs", inputs: { bodyClass: "bodyClass" }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n", dependencies: [{ kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclTabComponent, selector: "ecl-tab, [eclTab]", inputs: ["id", "isHidden", "isActive"], outputs: ["selectTab", "keydownTab"] }, { kind: "component", type: EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "component", type: EclTabMoreComponent, selector: "ecl-tab-more", inputs: ["isHidden"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
16232
16254
|
}
|
|
16233
16255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclTabsComponent, decorators: [{
|
|
16234
16256
|
type: Component,
|
|
16235
|
-
args: [{ selector: 'nav[eclTabs], ecl-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n" }]
|
|
16257
|
+
args: [{ selector: 'nav[eclTabs], ecl-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\"\n [class.ecl-tabs__container--right]=\"isScrollNextBtnShow\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n #btnNext\n eclButton\n variant=\"ghost\"\n isIconOnly\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n" }]
|
|
16236
16258
|
}], ctorParameters: () => [{ type: i0.IterableDiffers }, { type: i1$4.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: EclRtlService }, { type: undefined, decorators: [{
|
|
16237
16259
|
type: Inject,
|
|
16238
16260
|
args: [PLATFORM_ID]
|