@eui/components 17.0.0-next.26 → 17.0.0-next.27
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/docs/components/EuiAppComponent.html +1 -75
- package/docs/components/EuiAppSidebarHeaderUserProfileComponent.html +281 -133
- package/docs/components/EuiAppTopMessageComponent.html +1 -1
- package/docs/components/EuiNotificationsComponent.html +1 -1
- package/docs/components/EuiUserProfileCardComponent.html +2 -40
- package/docs/components/EuiUserProfileComponent.html +119 -30
- package/docs/dependencies.html +2 -2
- package/docs/js/menu-wc.js +3 -3
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/modules/EuiAppSidebarModule.html +3 -0
- package/esm2022/eui-tree-list/eui-tree-list-item.component.mjs +5 -3
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.mjs +64 -27
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.module.mjs +10 -4
- package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +5 -4
- package/esm2022/layout/eui-app/eui-app.component.mjs +6 -36
- package/esm2022/layout/eui-header/header-user-profile/header-user-profile.component.mjs +1 -1
- package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +3 -3
- package/esm2022/layout/eui-user-profile/user-profile-card/user-profile-card.component.mjs +6 -7
- package/esm2022/layout/eui-user-profile/user-profile.component.mjs +47 -19
- package/eui-tree-list/eui-tree-list-item.component.d.ts +1 -1
- package/eui-tree-list/eui-tree-list-item.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-tree-list.mjs +4 -2
- package/fesm2022/eui-components-eui-tree-list.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +562 -523
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.d.ts +14 -10
- package/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.d.ts.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar.module.d.ts +2 -1
- package/layout/eui-app/eui-app-sidebar/sidebar.module.d.ts.map +1 -1
- package/layout/eui-app/eui-app.component.d.ts +3 -8
- package/layout/eui-app/eui-app.component.d.ts.map +1 -1
- package/layout/eui-user-profile/user-profile-card/user-profile-card.component.d.ts +2 -3
- package/layout/eui-user-profile/user-profile-card/user-profile-card.component.d.ts.map +1 -1
- package/layout/eui-user-profile/user-profile.component.d.ts +13 -7
- package/layout/eui-user-profile/user-profile.component.d.ts.map +1 -1
- package/package.json +1 -1
@@ -1,8 +1,7 @@
|
|
1
|
-
import { Component, Directive, ViewEncapsulation, HostBinding, Input, ContentChild, forwardRef,
|
1
|
+
import { Component, Directive, ViewEncapsulation, HostBinding, Input, ContentChild, forwardRef, } from '@angular/core';
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
3
3
|
import { Subject, fromEvent } from 'rxjs';
|
4
4
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
5
|
-
import { EUI_CONFIG_TOKEN } from '@eui/core';
|
6
5
|
import { EuiAppSidebarComponent } from './eui-app-sidebar';
|
7
6
|
import { EuiAppToolbarComponent } from './eui-app-toolbar';
|
8
7
|
import * as i0 from "@angular/core";
|
@@ -43,16 +42,14 @@ export class EuiAppComponent {
|
|
43
42
|
set isSidebarHidden(value) {
|
44
43
|
this._isSidebarHidden = coerceBooleanProperty(value);
|
45
44
|
}
|
46
|
-
constructor(asService, euiGrowlService, deviceDetectorService, cdRef
|
45
|
+
constructor(asService, euiGrowlService, deviceDetectorService, cdRef) {
|
47
46
|
this.asService = asService;
|
48
47
|
this.euiGrowlService = euiGrowlService;
|
49
48
|
this.deviceDetectorService = deviceDetectorService;
|
50
49
|
this.cdRef = cdRef;
|
51
|
-
this.euiConfigToken = euiConfigToken;
|
52
50
|
this.cssClasses = 'eui-app';
|
53
51
|
this.appSubTitle = '';
|
54
52
|
this.themeClass = '';
|
55
|
-
this.userInfos = '';
|
56
53
|
this.hasNoPageWrapper = false;
|
57
54
|
this._isSidebarOpen = false;
|
58
55
|
this._isSidebarExpandOnHover = true;
|
@@ -121,51 +118,24 @@ export class EuiAppComponent {
|
|
121
118
|
isSidebarExpandOnHover: changes.isSidebarExpandOnHover.currentValue,
|
122
119
|
});
|
123
120
|
}
|
124
|
-
if (changes.userInfos) {
|
125
|
-
this.asService.setState({
|
126
|
-
...this.asService.state,
|
127
|
-
userInfos: changes.userInfos.currentValue,
|
128
|
-
});
|
129
|
-
}
|
130
|
-
if (changes.userSubInfos) {
|
131
|
-
this.asService.setState({
|
132
|
-
...this.asService.state,
|
133
|
-
userSubInfos: changes.userSubInfos.currentValue,
|
134
|
-
});
|
135
|
-
}
|
136
|
-
if (changes.impersonatedUserInfos) {
|
137
|
-
this.asService.setState({
|
138
|
-
...this.asService.state,
|
139
|
-
impersonatedUserInfos: changes.impersonatedUserInfos.currentValue,
|
140
|
-
});
|
141
|
-
}
|
142
121
|
}
|
143
122
|
ngOnDestroy() {
|
144
123
|
this.destroy$.next(true);
|
145
124
|
this.destroy$.unsubscribe();
|
146
125
|
}
|
147
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiAppComponent, deps: [{ token: i1.EuiAppShellService }, { token: i1.EuiGrowlService }, { token: i2.DeviceDetectorService }, { token: i0.ChangeDetectorRef }
|
148
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiAppComponent, selector: "eui-app", inputs: { appSubTitle: "appSubTitle", themeClass: "themeClass",
|
126
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiAppComponent, deps: [{ token: i1.EuiAppShellService }, { token: i1.EuiGrowlService }, { token: i2.DeviceDetectorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
127
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiAppComponent, selector: "eui-app", inputs: { appSubTitle: "appSubTitle", themeClass: "themeClass", isSidebarOpen: "isSidebarOpen", isSidebarExpandOnHover: "isSidebarExpandOnHover", isShrinkHeaderActive: "isShrinkHeaderActive", isSidebarHidden: "isSidebarHidden" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "appSidebar", first: true, predicate: i0.forwardRef(() => EuiAppSidebarComponent), descendants: true }, { propertyName: "customPageWrapper", first: true, predicate: i0.forwardRef(() => EuiAppPageWrapperDirective), descendants: true }, { propertyName: "appToolbar", first: true, predicate: i0.forwardRef(() => EuiAppToolbarComponent), descendants: true }], usesOnChanges: true, ngImport: i0, template: "<eui-dimmer [isDimmerActive]=\"(asService.state$ | async).isDimmerActive\"></eui-dimmer>\n\n<ng-content select=\"eui-app-sidebar\"></ng-content>\n<ng-container *ngIf=\"!appSidebar && (asService.state$ | async).hasHeader && (asService.breakpoints$ | async).isMobile\">\n <eui-app-sidebar>\n <eui-app-sidebar-body>\n <eui-app-sidebar-menu [items]=\"(asService.state$ | async).menuLinks\" [hasIcons]=\"true\"></eui-app-sidebar-menu>\n </eui-app-sidebar-body>\n </eui-app-sidebar>\n</ng-container>\n\n<div class=\"eui-app-main\">\n <ng-content select=\"eui-app-top-message\"></ng-content>\n\n <ng-content select=\"eui-app-header\"></ng-content>\n\n <ng-container\n *ngIf=\"!appToolbar && (asService.state$ | async).hasHeader && (asService.breakpoints$ | async).isMobile; else elseBlockToolbar\">\n <eui-app-toolbar>\n <eui-toolbar></eui-toolbar>\n </eui-app-toolbar>\n </ng-container>\n\n <ng-template #elseBlockToolbar>\n <ng-content select=\"eui-app-toolbar\"></ng-content>\n </ng-template>\n\n <ng-content select=\"eui-app-breadcrumb\"></ng-content>\n\n <div class=\"eui-app-main-content\" role=\"main\">\n <ng-content select=\"eui-app-page-wrapper\"></ng-content>\n <!-- TODO: consider removing code below in the future by transferring responsibility of providing <router-outlet> to the developer -->\n <ng-container *ngIf=\"hasNoPageWrapper\">\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ng-content select=\"eui-app-footer\"></ng-content>\n</div>\n\n<eui-growl\n [value]=\"euiGrowlService.growlMessages\"\n [sticky]=\"euiGrowlService.isGrowlSticky\"\n [closeAllSticky]=\"euiGrowlService.isCloseAllSticky\"\n [life]=\"euiGrowlService.growlLife\"\n [position]=\"euiGrowlService.growlPosition\"\n (clicked)=\"euiGrowlService.growlCallback()\"></eui-growl>\n\n<eui-block-document [isBlocked]=\"(asService.state$ | async).isBlockDocumentActive\"></eui-block-document>\n", styles: [".eui-app{display:flex;overflow:hidden}@media screen and (max-width: 767px){.eui-app.sidebar--open:before{background:rgba(0,0,0,.3);bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app.sidebar--open:before{background:rgba(0,0,0,.3);bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}@media screen and (min-width: 996px){.sidebar--hidden.eui-app.sidebar--open:before{background:rgba(0,0,0,.3);bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}.eui-app-main{min-height:100vh;background:var(--eui-base-color-grey-2);width:calc(100% - var(--eui-app-sidebar-width));margin-left:var(--eui-app-sidebar-width);display:flex;flex-direction:column}@media screen and (max-width: 767px){.eui-app-main{margin-left:0;width:100%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-main{margin-left:0;width:100%}}@media screen and (min-width: 996px){.sidebar--close .eui-app-main{margin-left:var(--eui-app-sidebar-width-close);width:calc(100% - var(--eui-app-sidebar-width-close))}.sidebar--hidden.sidebar--close .eui-app-main,.sidebar--hidden.sidebar--open .eui-app-main{margin-left:0;width:100%}}.eui-app-main-content{flex-grow:1;margin-top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height) - var(--eui-app-breadcrumb-height));position:relative}eui-app-page-wrapper{display:flex;width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i5.EuiAppToolbarComponent, selector: "eui-app-toolbar", inputs: ["hasLanguageSelector"] }, { kind: "component", type: i6.EuiToolbarComponent, selector: "eui-toolbar" }, { kind: "component", type: i7.EuiAppSidebarComponent, selector: "eui-app-sidebar" }, { kind: "component", type: i8.EuiAppSidebarBodyComponent, selector: "eui-app-sidebar-body" }, { kind: "component", type: i9.EuiAppSidebarMenuComponent, selector: "eui-app-sidebar-menu", inputs: ["items", "hasFilter", "hasIcons", "hasTooltip", "expandAllItems"], outputs: ["sidebarItemClick"] }, { kind: "component", type: i10.EuiBlockDocumentComponent, selector: "eui-block-document", inputs: ["isBlocked"] }, { kind: "component", type: i11.EuiGrowlComponent, selector: "eui-growl", inputs: ["sticky", "life", "value", "style", "styleClass", "position", "e2eAttr", "closeAllSticky"], outputs: ["growlClick"] }, { kind: "component", type: i12.EuiDimmerComponent, selector: "eui-dimmer", inputs: ["isDimmerActive", "e2eAttr"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
149
128
|
}
|
150
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiAppComponent, decorators: [{
|
151
130
|
type: Component,
|
152
131
|
args: [{ selector: 'eui-app', encapsulation: ViewEncapsulation.None, template: "<eui-dimmer [isDimmerActive]=\"(asService.state$ | async).isDimmerActive\"></eui-dimmer>\n\n<ng-content select=\"eui-app-sidebar\"></ng-content>\n<ng-container *ngIf=\"!appSidebar && (asService.state$ | async).hasHeader && (asService.breakpoints$ | async).isMobile\">\n <eui-app-sidebar>\n <eui-app-sidebar-body>\n <eui-app-sidebar-menu [items]=\"(asService.state$ | async).menuLinks\" [hasIcons]=\"true\"></eui-app-sidebar-menu>\n </eui-app-sidebar-body>\n </eui-app-sidebar>\n</ng-container>\n\n<div class=\"eui-app-main\">\n <ng-content select=\"eui-app-top-message\"></ng-content>\n\n <ng-content select=\"eui-app-header\"></ng-content>\n\n <ng-container\n *ngIf=\"!appToolbar && (asService.state$ | async).hasHeader && (asService.breakpoints$ | async).isMobile; else elseBlockToolbar\">\n <eui-app-toolbar>\n <eui-toolbar></eui-toolbar>\n </eui-app-toolbar>\n </ng-container>\n\n <ng-template #elseBlockToolbar>\n <ng-content select=\"eui-app-toolbar\"></ng-content>\n </ng-template>\n\n <ng-content select=\"eui-app-breadcrumb\"></ng-content>\n\n <div class=\"eui-app-main-content\" role=\"main\">\n <ng-content select=\"eui-app-page-wrapper\"></ng-content>\n <!-- TODO: consider removing code below in the future by transferring responsibility of providing <router-outlet> to the developer -->\n <ng-container *ngIf=\"hasNoPageWrapper\">\n <router-outlet></router-outlet>\n </ng-container>\n </div>\n\n <ng-content select=\"eui-app-footer\"></ng-content>\n</div>\n\n<eui-growl\n [value]=\"euiGrowlService.growlMessages\"\n [sticky]=\"euiGrowlService.isGrowlSticky\"\n [closeAllSticky]=\"euiGrowlService.isCloseAllSticky\"\n [life]=\"euiGrowlService.growlLife\"\n [position]=\"euiGrowlService.growlPosition\"\n (clicked)=\"euiGrowlService.growlCallback()\"></eui-growl>\n\n<eui-block-document [isBlocked]=\"(asService.state$ | async).isBlockDocumentActive\"></eui-block-document>\n", styles: [".eui-app{display:flex;overflow:hidden}@media screen and (max-width: 767px){.eui-app.sidebar--open:before{background:rgba(0,0,0,.3);bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app.sidebar--open:before{background:rgba(0,0,0,.3);bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}@media screen and (min-width: 996px){.sidebar--hidden.eui-app.sidebar--open:before{background:rgba(0,0,0,.3);bottom:0;content:\"\";position:fixed;right:0;top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height));transition:all .1s ease;width:100vw;z-index:980}}.eui-app-main{min-height:100vh;background:var(--eui-base-color-grey-2);width:calc(100% - var(--eui-app-sidebar-width));margin-left:var(--eui-app-sidebar-width);display:flex;flex-direction:column}@media screen and (max-width: 767px){.eui-app-main{margin-left:0;width:100%}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-app-main{margin-left:0;width:100%}}@media screen and (min-width: 996px){.sidebar--close .eui-app-main{margin-left:var(--eui-app-sidebar-width-close);width:calc(100% - var(--eui-app-sidebar-width-close))}.sidebar--hidden.sidebar--close .eui-app-main,.sidebar--hidden.sidebar--open .eui-app-main{margin-left:0;width:100%}}.eui-app-main-content{flex-grow:1;margin-top:calc(var(--eui-app-header-height) + var(--eui-app-toolbar-height) + var(--eui-app-top-message-height) - var(--eui-app-breadcrumb-height));position:relative}eui-app-page-wrapper{display:flex;width:100%}\n"] }]
|
153
|
-
}], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i1.EuiGrowlService }, { type: i2.DeviceDetectorService }, { type: i0.ChangeDetectorRef },
|
154
|
-
type: Inject,
|
155
|
-
args: [EUI_CONFIG_TOKEN]
|
156
|
-
}] }], propDecorators: { cssClasses: [{
|
132
|
+
}], ctorParameters: () => [{ type: i1.EuiAppShellService }, { type: i1.EuiGrowlService }, { type: i2.DeviceDetectorService }, { type: i0.ChangeDetectorRef }], propDecorators: { cssClasses: [{
|
157
133
|
type: HostBinding,
|
158
134
|
args: ['class']
|
159
135
|
}], appSubTitle: [{
|
160
136
|
type: Input
|
161
137
|
}], themeClass: [{
|
162
138
|
type: Input
|
163
|
-
}], userInfos: [{
|
164
|
-
type: Input
|
165
|
-
}], userSubInfos: [{
|
166
|
-
type: Input
|
167
|
-
}], impersonatedUserInfos: [{
|
168
|
-
type: Input
|
169
139
|
}], isSidebarOpen: [{
|
170
140
|
type: Input
|
171
141
|
}], isSidebarExpandOnHover: [{
|
@@ -193,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
193
163
|
type: Directive,
|
194
164
|
args: [{ selector: 'eui-app-page-wrapper' }]
|
195
165
|
}] });
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWFwcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9sYXlvdXQvZXVpLWFwcC9ldWktYXBwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xheW91dC9ldWktYXBwL2V1aS1hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFHWCxLQUFLLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEdBS1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBSTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFhLGdCQUFnQixFQUFzQixNQUFNLFdBQVcsQ0FBQztBQUU1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLGVBQWU7SUFXeEIsSUFDSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxJQUNJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFBSSxzQkFBc0IsQ0FBQyxLQUFtQjtRQUMxQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcscUJBQXFCLENB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QUFVO3NCQUEvQixXQUFXO3VCQUFDLE9BQU87Z0JBRVgsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBS0YsYUFBYTtzQkFEaEIsS0FBSztnQkFRRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBUUYsb0JBQW9CO3NCQUR2QixLQUFLO2dCQVFGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBU04sVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztnQkFJdEQsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztnQkFJMUQsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs7QUE4RzFELG9CQUFvQjtBQUVwQixNQUFNLE9BQU8sMEJBQTBCO2lJQUExQiwwQkFBMEI7cUhBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBIb3N0QmluZGluZyxcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlckNvbnRlbnRJbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XG5cbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEV1aUNvbmZpZywgRVVJX0NPTkZJR19UT0tFTiwgRXVpQXBwU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEV1aUdyb3dsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlBcHBTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9ldWktYXBwLXNpZGViYXInO1xuaW1wb3J0IHsgRXVpQXBwVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vZXVpLWFwcC10b29sYmFyJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktYXBwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWFwcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vX3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aUFwcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjc3NDbGFzc2VzID0gJ2V1aS1hcHAnO1xuXG4gICAgQElucHV0KCkgYXBwU3ViVGl0bGUgPSAnJztcbiAgICBASW5wdXQoKSB0aGVtZUNsYXNzID0gJyc7XG4gICAgQElucHV0KCkgdXNlckluZm9zID0gJyc7XG4gICAgQElucHV0KCkgdXNlclN1YkluZm9zOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW1wZXJzb25hdGVkVXNlckluZm9zOiBzdHJpbmc7XG5cbiAgICBoYXNOb1BhZ2VXcmFwcGVyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1NpZGViYXJPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaWRlYmFyT3BlbjtcbiAgICB9XG4gICAgc2V0IGlzU2lkZWJhck9wZW4odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1NpZGViYXJPcGVuID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaWRlYmFyRXhwYW5kT25Ib3ZlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2lkZWJhckV4cGFuZE9uSG92ZXI7XG4gICAgfVxuICAgIHNldCBpc1NpZGViYXJFeHBhbmRPbkhvdmVyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaWRlYmFyRXhwYW5kT25Ib3ZlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hyaW5rSGVhZGVyQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaHJpbmtIZWFkZXJBY3RpdmU7XG4gICAgfVxuICAgIHNldCBpc1Nocmlua0hlYWRlckFjdGl2ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hyaW5rSGVhZGVyQWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaWRlYmFySGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaWRlYmFySGlkZGVuO1xuICAgIH1cbiAgICBzZXQgaXNTaWRlYmFySGlkZGVuKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaWRlYmFySGlkZGVuID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpQXBwU2lkZWJhckNvbXBvbmVudCkpXG4gICAgYXBwU2lkZWJhcjogRXVpQXBwU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlBcHBQYWdlV3JhcHBlckRpcmVjdGl2ZSkpXG4gICAgY3VzdG9tUGFnZVdyYXBwZXI6IEV1aUFwcFBhZ2VXcmFwcGVyRGlyZWN0aXZlO1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aUFwcFRvb2xiYXJDb21wb25lbnQpKVxuICAgIGFwcFRvb2xiYXI6IEV1aUFwcFRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIF9pc1NpZGViYXJPcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNTaWRlYmFyRXhwYW5kT25Ib3ZlciA9IHRydWU7XG4gICAgcHJpdmF0ZSBfaXNTaHJpbmtIZWFkZXJBY3RpdmUgPSB0cnVlO1xuICAgIHByaXZhdGUgX2lzU2lkZWJhckhpZGRlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBhc1NlcnZpY2U6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHVibGljIGV1aUdyb3dsU2VydmljZTogRXVpR3Jvd2xTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRldmljZURldGVjdG9yU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChFVUlfQ09ORklHX1RPS0VOKSBwcml2YXRlIGV1aUNvbmZpZ1Rva2VuOiBFdWlDb25maWcsXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc05vUGFnZVdyYXBwZXIgPSAhdGhpcy5jdXN0b21QYWdlV3JhcHBlcjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc1NlcnZpY2UuZmV0Y2hDc3NWYXJzKCk7XG4gICAgICAgIHRoaXMuYXNTZXJ2aWNlLmluaXRDc3NWYXJzKCk7XG5cbiAgICAgICAgY29uc3QgZGV2aWNlSW5mbyA9IHRoaXMuZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmdldERldmljZUluZm8oKTtcblxuICAgICAgICB0aGlzLmFzU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgIHdpbmRvd0hlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgICAgICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgaGFzSGVhZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc1NpZGViYXI6IGZhbHNlLFxuICAgICAgICAgICAgZGV2aWNlSW5mbzoge1xuICAgICAgICAgICAgICAgIGluZm86IGRldmljZUluZm8sXG4gICAgICAgICAgICAgICAgaXNDaHJvbWU6IGRldmljZUluZm8uYnJvd3NlciA9PT0gJ0Nocm9tZScsXG4gICAgICAgICAgICAgICAgaXNJRTogZGV2aWNlSW5mby5icm93c2VyID09PSAnSUUnLFxuICAgICAgICAgICAgICAgIGlzSUUxMTogZGV2aWNlSW5mby5icm93c2VyID09PSAnSUUnICYmIGRldmljZUluZm8uYnJvd3Nlcl92ZXJzaW9uID09PSAnMTEuMCcsXG4gICAgICAgICAgICAgICAgaXNGRjogZGV2aWNlSW5mby5icm93c2VyID09PSAnRmlyZWZveCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwQmFzZUZvbnRTaXplOiB0aGlzLmFzU2VydmljZS5nZXRCYXNlRm9udFNpemUoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hc1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdGF0ZSgnd3JhcHBlckNsYXNzZXMnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jc3NDbGFzc2VzID0gWydldWktYXBwJywgc3RhdGVdLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLnJlYXR0YWNoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlPy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3dIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldEFwcFZpZXdwb3J0Q3NzVmFycygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5pc1NpZGViYXJIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgICAgICBpc1NpZGViYXJIaWRkZW46IGNoYW5nZXMuaXNTaWRlYmFySGlkZGVuLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzU2lkZWJhck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgICAgICBpc1NpZGViYXJPcGVuOiBjaGFuZ2VzLmlzU2lkZWJhck9wZW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNTaWRlYmFyRXhwYW5kT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgICAgIGlzU2lkZWJhckV4cGFuZE9uSG92ZXI6IGNoYW5nZXMuaXNTaWRlYmFyRXhwYW5kT25Ib3Zlci5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy51c2VySW5mb3MpIHtcbiAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgICAgICB1c2VySW5mb3M6IGNoYW5nZXMudXNlckluZm9zLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLnVzZXJTdWJJbmZvcykge1xuICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgICAgIHVzZXJTdWJJbmZvczogY2hhbmdlcy51c2VyU3ViSW5mb3MuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaW1wZXJzb25hdGVkVXNlckluZm9zKSB7XG4gICAgICAgICAgICB0aGlzLmFzU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5hc1NlcnZpY2Uuc3RhdGUsXG4gICAgICAgICAgICAgICAgaW1wZXJzb25hdGVkVXNlckluZm9zOiBjaGFuZ2VzLmltcGVyc29uYXRlZFVzZXJJbmZvcy5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktYXBwLXBhZ2Utd3JhcHBlcicgfSlcbmV4cG9ydCBjbGFzcyBFdWlBcHBQYWdlV3JhcHBlckRpcmVjdGl2ZSB7IH1cblxuIiwiPGV1aS1kaW1tZXIgW2lzRGltbWVyQWN0aXZlXT1cIihhc1NlcnZpY2Uuc3RhdGUkIHwgYXN5bmMpLmlzRGltbWVyQWN0aXZlXCI+PC9ldWktZGltbWVyPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJldWktYXBwLXNpZGViYXJcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWFwcFNpZGViYXIgJiYgKGFzU2VydmljZS5zdGF0ZSQgfCBhc3luYykuaGFzSGVhZGVyICYmIChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlXCI+XG4gICAgPGV1aS1hcHAtc2lkZWJhcj5cbiAgICAgICAgPGV1aS1hcHAtc2lkZWJhci1ib2R5PlxuICAgICAgICAgICAgPGV1aS1hcHAtc2lkZWJhci1tZW51IFtpdGVtc109XCIoYXNTZXJ2aWNlLnN0YXRlJCB8IGFzeW5jKS5tZW51TGlua3NcIiBbaGFzSWNvbnNdPVwidHJ1ZVwiPjwvZXVpLWFwcC1zaWRlYmFyLW1lbnU+XG4gICAgICAgIDwvZXVpLWFwcC1zaWRlYmFyLWJvZHk+XG4gICAgPC9ldWktYXBwLXNpZGViYXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImV1aS1hcHAtbWFpblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtdG9wLW1lc3NhZ2VcIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktYXBwLWhlYWRlclwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCIhYXBwVG9vbGJhciAmJiAoYXNTZXJ2aWNlLnN0YXRlJCB8IGFzeW5jKS5oYXNIZWFkZXIgJiYgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGU7IGVsc2UgZWxzZUJsb2NrVG9vbGJhclwiPlxuICAgICAgICA8ZXVpLWFwcC10b29sYmFyPlxuICAgICAgICAgICAgPGV1aS10b29sYmFyPjwvZXVpLXRvb2xiYXI+XG4gICAgICAgIDwvZXVpLWFwcC10b29sYmFyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2tUb29sYmFyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktYXBwLXRvb2xiYXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtYnJlYWRjcnVtYlwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXYgY2xhc3M9XCJldWktYXBwLW1haW4tY29udGVudFwiIHJvbGU9XCJtYWluXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtcGFnZS13cmFwcGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8IS0tIFRPRE86IGNvbnNpZGVyIHJlbW92aW5nIGNvZGUgYmVsb3cgaW4gdGhlIGZ1dHVyZSBieSB0cmFuc2ZlcnJpbmcgcmVzcG9uc2liaWxpdHkgb2YgcHJvdmlkaW5nIDxyb3V0ZXItb3V0bGV0PiB0byB0aGUgZGV2ZWxvcGVyIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTm9QYWdlV3JhcHBlclwiPlxuICAgICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxldWktZ3Jvd2xcbiAgICBbdmFsdWVdPVwiZXVpR3Jvd2xTZXJ2aWNlLmdyb3dsTWVzc2FnZXNcIlxuICAgIFtzdGlja3ldPVwiZXVpR3Jvd2xTZXJ2aWNlLmlzR3Jvd2xTdGlja3lcIlxuICAgIFtjbG9zZUFsbFN0aWNreV09XCJldWlHcm93bFNlcnZpY2UuaXNDbG9zZUFsbFN0aWNreVwiXG4gICAgW2xpZmVdPVwiZXVpR3Jvd2xTZXJ2aWNlLmdyb3dsTGlmZVwiXG4gICAgW3Bvc2l0aW9uXT1cImV1aUdyb3dsU2VydmljZS5ncm93bFBvc2l0aW9uXCJcbiAgICAoY2xpY2tlZCk9XCJldWlHcm93bFNlcnZpY2UuZ3Jvd2xDYWxsYmFjaygpXCI+PC9ldWktZ3Jvd2w+XG5cbjxldWktYmxvY2stZG9jdW1lbnQgW2lzQmxvY2tlZF09XCIoYXNTZXJ2aWNlLnN0YXRlJCB8IGFzeW5jKS5pc0Jsb2NrRG9jdW1lbnRBY3RpdmVcIj48L2V1aS1ibG9jay1kb2N1bWVudD5cbiJdfQ==
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWFwcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9sYXlvdXQvZXVpLWFwcC9ldWktYXBwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xheW91dC9ldWktYXBwL2V1aS1hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFHWCxLQUFLLEVBQ0wsWUFBWSxFQUNaLFVBQVUsR0FNYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFRM0QsTUFBTSxPQUFPLGVBQWU7SUFReEIsSUFDSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxJQUNJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFBSSxzQkFBc0IsQ0FBQyxLQUFtQjtRQUMxQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELElBQ0ksb0JBQW9CO1FBQ3BCLE9B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LFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO2lJQW5JUSxlQUFlO3FIQUFmLGVBQWUsdVlBcUNPLHNCQUFzQix5R0FHdEIsMEJBQTBCLGtHQUcxQixzQkFBc0Isc0VDNUV6RCw4L0RBaURBOzsyRkRoQmEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDSSxTQUFTLGlCQUdKLGlCQUFpQixDQUFDLElBQUk7eUxBR2YsVUFBVTtzQkFBL0IsV0FBVzt1QkFBQyxPQUFPO2dCQUVYLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRixhQUFhO3NCQURoQixLQUFLO2dCQVFGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFRRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBUUYsZUFBZTtzQkFEbEIsS0FBSztnQkFTTixVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2dCQUl0RCxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2dCQUkxRCxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOztBQTJGMUQsb0JBQW9CO0FBRXBCLE1BQU0sT0FBTywwQkFBMEI7aUlBQTFCLDBCQUEwQjtxSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcblxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXVpQ29uZmlnLCBFVUlfQ09ORklHX1RPS0VOLCBFdWlBcHBTaGVsbFNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBFdWlHcm93bFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpQXBwU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vZXVpLWFwcC1zaWRlYmFyJztcbmltcG9ydCB7IEV1aUFwcFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2V1aS1hcHAtdG9vbGJhcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWFwcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1hcHAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL19zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlBcHBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY3NzQ2xhc3NlcyA9ICdldWktYXBwJztcblxuICAgIEBJbnB1dCgpIGFwcFN1YlRpdGxlID0gJyc7XG4gICAgQElucHV0KCkgdGhlbWVDbGFzcyA9ICcnO1xuXG4gICAgaGFzTm9QYWdlV3JhcHBlciA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaWRlYmFyT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2lkZWJhck9wZW47XG4gICAgfVxuICAgIHNldCBpc1NpZGViYXJPcGVuKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaWRlYmFyT3BlbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2lkZWJhckV4cGFuZE9uSG92ZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NpZGViYXJFeHBhbmRPbkhvdmVyO1xuICAgIH1cbiAgICBzZXQgaXNTaWRlYmFyRXhwYW5kT25Ib3Zlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2lkZWJhckV4cGFuZE9uSG92ZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Nocmlua0hlYWRlckFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hyaW5rSGVhZGVyQWN0aXZlO1xuICAgIH1cbiAgICBzZXQgaXNTaHJpbmtIZWFkZXJBY3RpdmUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1Nocmlua0hlYWRlckFjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2lkZWJhckhpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2lkZWJhckhpZGRlbjtcbiAgICB9XG4gICAgc2V0IGlzU2lkZWJhckhpZGRlbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2lkZWJhckhpZGRlbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aUFwcFNpZGViYXJDb21wb25lbnQpKVxuICAgIGFwcFNpZGViYXI6IEV1aUFwcFNpZGViYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpQXBwUGFnZVdyYXBwZXJEaXJlY3RpdmUpKVxuICAgIGN1c3RvbVBhZ2VXcmFwcGVyOiBFdWlBcHBQYWdlV3JhcHBlckRpcmVjdGl2ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlBcHBUb29sYmFyQ29tcG9uZW50KSlcbiAgICBhcHBUb29sYmFyOiBFdWlBcHBUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBfaXNTaWRlYmFyT3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzU2lkZWJhckV4cGFuZE9uSG92ZXIgPSB0cnVlO1xuICAgIHByaXZhdGUgX2lzU2hyaW5rSGVhZGVyQWN0aXZlID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9pc1NpZGViYXJIaWRkZW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgYXNTZXJ2aWNlOiBFdWlBcHBTaGVsbFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBldWlHcm93bFNlcnZpY2U6IEV1aUdyb3dsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkZXZpY2VEZXRlY3RvclNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc05vUGFnZVdyYXBwZXIgPSAhdGhpcy5jdXN0b21QYWdlV3JhcHBlcjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc1NlcnZpY2UuZmV0Y2hDc3NWYXJzKCk7XG4gICAgICAgIHRoaXMuYXNTZXJ2aWNlLmluaXRDc3NWYXJzKCk7XG5cbiAgICAgICAgY29uc3QgZGV2aWNlSW5mbyA9IHRoaXMuZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmdldERldmljZUluZm8oKTtcblxuICAgICAgICB0aGlzLmFzU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgIHdpbmRvd0hlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgICAgICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgaGFzSGVhZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc1NpZGViYXI6IGZhbHNlLFxuICAgICAgICAgICAgZGV2aWNlSW5mbzoge1xuICAgICAgICAgICAgICAgIGluZm86IGRldmljZUluZm8sXG4gICAgICAgICAgICAgICAgaXNDaHJvbWU6IGRldmljZUluZm8uYnJvd3NlciA9PT0gJ0Nocm9tZScsXG4gICAgICAgICAgICAgICAgaXNJRTogZGV2aWNlSW5mby5icm93c2VyID09PSAnSUUnLFxuICAgICAgICAgICAgICAgIGlzSUUxMTogZGV2aWNlSW5mby5icm93c2VyID09PSAnSUUnICYmIGRldmljZUluZm8uYnJvd3Nlcl92ZXJzaW9uID09PSAnMTEuMCcsXG4gICAgICAgICAgICAgICAgaXNGRjogZGV2aWNlSW5mby5icm93c2VyID09PSAnRmlyZWZveCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwQmFzZUZvbnRTaXplOiB0aGlzLmFzU2VydmljZS5nZXRCYXNlRm9udFNpemUoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hc1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdGF0ZSgnd3JhcHBlckNsYXNzZXMnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jc3NDbGFzc2VzID0gWydldWktYXBwJywgc3RhdGVdLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLnJlYXR0YWNoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlPy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3dIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldEFwcFZpZXdwb3J0Q3NzVmFycygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5pc1NpZGViYXJIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgICAgICBpc1NpZGViYXJIaWRkZW46IGNoYW5nZXMuaXNTaWRlYmFySGlkZGVuLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzU2lkZWJhck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgICAgICBpc1NpZGViYXJPcGVuOiBjaGFuZ2VzLmlzU2lkZWJhck9wZW4uY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNTaWRlYmFyRXhwYW5kT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgICAgIGlzU2lkZWJhckV4cGFuZE9uSG92ZXI6IGNoYW5nZXMuaXNTaWRlYmFyRXhwYW5kT25Ib3Zlci5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktYXBwLXBhZ2Utd3JhcHBlcicgfSlcbmV4cG9ydCBjbGFzcyBFdWlBcHBQYWdlV3JhcHBlckRpcmVjdGl2ZSB7IH1cblxuIiwiPGV1aS1kaW1tZXIgW2lzRGltbWVyQWN0aXZlXT1cIihhc1NlcnZpY2Uuc3RhdGUkIHwgYXN5bmMpLmlzRGltbWVyQWN0aXZlXCI+PC9ldWktZGltbWVyPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJldWktYXBwLXNpZGViYXJcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIWFwcFNpZGViYXIgJiYgKGFzU2VydmljZS5zdGF0ZSQgfCBhc3luYykuaGFzSGVhZGVyICYmIChhc1NlcnZpY2UuYnJlYWtwb2ludHMkIHwgYXN5bmMpLmlzTW9iaWxlXCI+XG4gICAgPGV1aS1hcHAtc2lkZWJhcj5cbiAgICAgICAgPGV1aS1hcHAtc2lkZWJhci1ib2R5PlxuICAgICAgICAgICAgPGV1aS1hcHAtc2lkZWJhci1tZW51IFtpdGVtc109XCIoYXNTZXJ2aWNlLnN0YXRlJCB8IGFzeW5jKS5tZW51TGlua3NcIiBbaGFzSWNvbnNdPVwidHJ1ZVwiPjwvZXVpLWFwcC1zaWRlYmFyLW1lbnU+XG4gICAgICAgIDwvZXVpLWFwcC1zaWRlYmFyLWJvZHk+XG4gICAgPC9ldWktYXBwLXNpZGViYXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImV1aS1hcHAtbWFpblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtdG9wLW1lc3NhZ2VcIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktYXBwLWhlYWRlclwiPjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCIhYXBwVG9vbGJhciAmJiAoYXNTZXJ2aWNlLnN0YXRlJCB8IGFzeW5jKS5oYXNIZWFkZXIgJiYgKGFzU2VydmljZS5icmVha3BvaW50cyQgfCBhc3luYykuaXNNb2JpbGU7IGVsc2UgZWxzZUJsb2NrVG9vbGJhclwiPlxuICAgICAgICA8ZXVpLWFwcC10b29sYmFyPlxuICAgICAgICAgICAgPGV1aS10b29sYmFyPjwvZXVpLXRvb2xiYXI+XG4gICAgICAgIDwvZXVpLWFwcC10b29sYmFyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2tUb29sYmFyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktYXBwLXRvb2xiYXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtYnJlYWRjcnVtYlwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXYgY2xhc3M9XCJldWktYXBwLW1haW4tY29udGVudFwiIHJvbGU9XCJtYWluXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtcGFnZS13cmFwcGVyXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8IS0tIFRPRE86IGNvbnNpZGVyIHJlbW92aW5nIGNvZGUgYmVsb3cgaW4gdGhlIGZ1dHVyZSBieSB0cmFuc2ZlcnJpbmcgcmVzcG9uc2liaWxpdHkgb2YgcHJvdmlkaW5nIDxyb3V0ZXItb3V0bGV0PiB0byB0aGUgZGV2ZWxvcGVyIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTm9QYWdlV3JhcHBlclwiPlxuICAgICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hcHAtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxldWktZ3Jvd2xcbiAgICBbdmFsdWVdPVwiZXVpR3Jvd2xTZXJ2aWNlLmdyb3dsTWVzc2FnZXNcIlxuICAgIFtzdGlja3ldPVwiZXVpR3Jvd2xTZXJ2aWNlLmlzR3Jvd2xTdGlja3lcIlxuICAgIFtjbG9zZUFsbFN0aWNreV09XCJldWlHcm93bFNlcnZpY2UuaXNDbG9zZUFsbFN0aWNreVwiXG4gICAgW2xpZmVdPVwiZXVpR3Jvd2xTZXJ2aWNlLmdyb3dsTGlmZVwiXG4gICAgW3Bvc2l0aW9uXT1cImV1aUdyb3dsU2VydmljZS5ncm93bFBvc2l0aW9uXCJcbiAgICAoY2xpY2tlZCk9XCJldWlHcm93bFNlcnZpY2UuZ3Jvd2xDYWxsYmFjaygpXCI+PC9ldWktZ3Jvd2w+XG5cbjxldWktYmxvY2stZG9jdW1lbnQgW2lzQmxvY2tlZF09XCIoYXNTZXJ2aWNlLnN0YXRlJCB8IGFzeW5jKS5pc0Jsb2NrRG9jdW1lbnRBY3RpdmVcIj48L2V1aS1ibG9jay1kb2N1bWVudD5cbiJdfQ==
|
@@ -18,7 +18,7 @@ export class EuiHeaderUserProfileComponent {
|
|
18
18
|
this.userProfile.closeDropdown();
|
19
19
|
}
|
20
20
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiHeaderUserProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
21
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiHeaderUserProfileComponent, selector: "eui-header-user-profile", inputs: { welcomeLabel: "welcomeLabel", impersonateLabel: "impersonateLabel", avatarUrl: "avatarUrl", isShowUserInfos: "isShowUserInfos", hasWelcomeLabel: "hasWelcomeLabel", isShowAvatarInitials: "isShowAvatarInitials", hasTabNavigation: "hasTabNavigation" }, host: { properties: { "class": "this.class" } }, queries: [{ propertyName: "userProfileMenu", predicate: i0.forwardRef(() => EuiUserProfileMenuComponent) }], viewQueries: [{ propertyName: "userProfile", first: true, predicate: ["userProfile"], descendants: true }], ngImport: i0, template: "<eui-user-profile\n [hasWelcomeLabel]=\"hasWelcomeLabel\"\n [welcomeLabel]=\"welcomeLabel\"\n [impersonateLabel]=\"impersonateLabel\"\n [avatarUrl]=\"avatarUrl\"\n [hasMenu]=\"userProfileMenu.length !== 0\"\n [isShowUserInfos]=\"isShowUserInfos\"\n [isShowAvatarInitials]=\"isShowAvatarInitials\"\n [hasTabNavigation]=\"hasTabNavigation\"\n #userProfile>\n <ng-content select=\"eui-user-profile-menu\"></ng-content>\n</eui-user-profile>\n", dependencies: [{ kind: "component", type: i1.EuiUserProfileComponent, selector: "eui-user-profile", inputs: ["welcomeLabel", "impersonateLabel", "avatarUrl", "hasMenu", "isShowUserInfos", "hasWelcomeLabel", "isShowAvatarInitials", "hasTabNavigation"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
21
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiHeaderUserProfileComponent, selector: "eui-header-user-profile", inputs: { welcomeLabel: "welcomeLabel", impersonateLabel: "impersonateLabel", avatarUrl: "avatarUrl", isShowUserInfos: "isShowUserInfos", hasWelcomeLabel: "hasWelcomeLabel", isShowAvatarInitials: "isShowAvatarInitials", hasTabNavigation: "hasTabNavigation" }, host: { properties: { "class": "this.class" } }, queries: [{ propertyName: "userProfileMenu", predicate: i0.forwardRef(() => EuiUserProfileMenuComponent) }], viewQueries: [{ propertyName: "userProfile", first: true, predicate: ["userProfile"], descendants: true }], ngImport: i0, template: "<eui-user-profile\n [hasWelcomeLabel]=\"hasWelcomeLabel\"\n [welcomeLabel]=\"welcomeLabel\"\n [impersonateLabel]=\"impersonateLabel\"\n [avatarUrl]=\"avatarUrl\"\n [hasMenu]=\"userProfileMenu.length !== 0\"\n [isShowUserInfos]=\"isShowUserInfos\"\n [isShowAvatarInitials]=\"isShowAvatarInitials\"\n [hasTabNavigation]=\"hasTabNavigation\"\n #userProfile>\n <ng-content select=\"eui-user-profile-menu\"></ng-content>\n</eui-user-profile>\n", dependencies: [{ kind: "component", type: i1.EuiUserProfileComponent, selector: "eui-user-profile", inputs: ["welcomeLabel", "impersonateLabel", "avatarUrl", "subInfos", "hasMenu", "isShowUserInfos", "hasWelcomeLabel", "isShowAvatarInitials", "hasTabNavigation", "isReverse", "hasToggle"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
22
22
|
}
|
23
23
|
__decorate([
|
24
24
|
coerceBoolean
|
@@ -182,11 +182,11 @@ export class EuiNotificationsComponent {
|
|
182
182
|
return unreadNotifications.length;
|
183
183
|
}
|
184
184
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiNotificationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
185
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiNotificationsComponent, selector: "eui-notifications", inputs: { count: "count", items: "items", unreadLabel: "unreadLabel", totalLabel: "totalLabel", markAsReadLabel: "markAsReadLabel", markAsUnReadLabel: "markAsUnReadLabel", markAllAsReadLabel: "markAllAsReadLabel", settingsLabel: "settingsLabel", refreshLabel: "refreshLabel", viewAllNotificationsLabel: "viewAllNotificationsLabel", headerTitleLabel: "headerTitleLabel", noNotificationFoundLabel: "noNotificationFoundLabel", nbUnreadCount: "nbUnreadCount", dateFormat: "dateFormat", noNotificationFoundLink: "noNotificationFoundLink", isShowMarkAsRead: "isShowMarkAsRead", isShowViewAllAction: "isShowViewAllAction", isHidePanelOnViewAllAction: "isHidePanelOnViewAllAction", customUnreadCount: "customUnreadCount", isShowMarkAllAsReadButton: "isShowMarkAllAsReadButton", isShowSettingsButton: "isShowSettingsButton", isShowRefreshButton: "isShowRefreshButton" }, outputs: { refreshClick: "refreshClick", notificationsClick: "notificationsClick", viewAllClick: "viewAllClick", settingsClick: "settingsClick", markAllAsReadClick: "markAllAsReadClick", noNotificationFoundClick: "noNotificationFoundClick", itemClick: "itemClick", itemMarkAsReadClick: "itemMarkAsReadClick" }, host: { listeners: { "body:click": "onHide()" }, properties: { "class": "this.string" } }, usesOnChanges: true, ngImport: i0, template: "<eui-icon-svg-button\n class=\"eui-notifications__trigger\"\n iconSvgName=\"eui-notifications\"\n iconSvgSize=\"l\"\n iconSvgFillColor=\"white\"\n (click)=\"onClicked($event)\"\n (keydown.enter)=\"onClicked($event)\"\n (keydown.esc)=\"onHide()\"\n hasFocusBorder>\n <eui-badge *ngIf=\"count\" euiSize euiDanger>{{ count }}</eui-badge>\n</eui-icon-svg-button>\n\n<eui-overlay [isActive]=\"isOverlayActive\" class=\"eui-overlay-offset--width-30\">\n <eui-overlay-header>\n <div class=\"eui-notifications__header-title\">\n <div class=\"eui-notifications__header-title-label\">\n {{ headerTitleLabel ? headerTitleLabel : ('eui.MYNOTIFICATIONS' | translate) }}\n <span\n *ngIf=\"items\"\n class=\"eui-u-cursor-help eui-u-ml-s\"\n attr.aria-label=\"{{ unreadLabel ? unreadLabel : ('eui.NOTIFICATIONSUNREAD' | translate) }}\"\n title=\"{{ unreadLabel ? unreadLabel : ('eui.NOTIFICATIONSUNREAD' | translate) }}\">\n </span>\n <eui-badge euiSizeL *ngIf=\"count\">{{ count }}</eui-badge>\n <eui-badge euiSizeL *ngIf=\"!count\">{{ items.length }}</eui-badge>\n </div>\n </div>\n\n <div *ngIf=\"items\" class=\"eui-notifications__header-actions\">\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowMarkAllAsReadButton\"\n [attr.aria-label]=\"markAllAsReadLabel ? markAllAsReadLabel : ('eui.NOTIFICATIONMARKALLASREAD' | translate)\"\n title=\"{{ markAllAsReadLabel ? markAllAsReadLabel : ('eui.NOTIFICATIONMARKALLASREAD' | translate) }}\"\n (click)=\"onMarkAllAsRead($event)\">\n <eui-icon-svg icon=\"eui-checkmark-done\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowSettingsButton\"\n [attr.aria-label]=\"settingsLabel ? settingsLabel : ('eui.SETTINGS' | translate)\"\n title=\"{{ settingsLabel ? settingsLabel : ('eui.SETTINGS' | translate) }}\"\n (click)=\"onSettings($event)\">\n <eui-icon-svg icon=\"eui-settings\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowRefreshButton\"\n [attr.aria-label]=\"refreshLabel ? refreshLabel : ('eui.REFRESH' | translate)\"\n title=\"{{ refreshLabel ? refreshLabel : ('eui.REFRESH' | translate) }}\"\n (click)=\"onRefresh($event)\">\n <eui-icon-svg icon=\"eui-refresh\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n </div>\n </eui-overlay-header>\n\n <eui-overlay-body>\n <ul class=\"eui-notifications-items\" *ngIf=\"items\">\n <eui-notification-item\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [item]=\"item\"\n [dateFormat]=\"dateFormat\"\n [markAsReadLabel]=\"markAsReadLabel\"\n [isShowMarkAsRead]=\"isShowMarkAsRead\"\n (itemClick)=\"onItemClick($event)\"\n (itemMarkAsRead)=\"onItemMarkAsRead($event)\">\n </eui-notification-item>\n </ul>\n </eui-overlay-body>\n\n <eui-overlay-footer>\n <ng-template [ngIf]=\"items?.length > 0\">\n <strong\n ><a (click)=\"onViewAllClick($event)\">{{\n viewAllNotificationsLabel ? viewAllNotificationsLabel : ('eui.VIEWALLNOTIFICATIONS' | translate)\n }}</a></strong\n >\n </ng-template>\n <ng-template [ngIf]=\"items?.length === 0\">\n <div class=\"ux-notification__item-content\" *ngIf=\"!noNotificationFoundLink\">\n {{ noNotificationFoundLabel ? noNotificationFoundLabel : ('eui.NONOTIFICATIONFOUND' | translate) }}\n </div>\n <div class=\"ux-notification__item-content\" *ngIf=\"noNotificationFoundLink\">\n <strong\n ><a (click)=\"onNoNotificationFoundClick()\">{{\n noNotificationFoundLabel ? noNotificationFoundLabel : ('eui.NONOTIFICATIONFOUND' | translate)\n }}</a></strong\n >\n </div>\n </ng-template>\n </eui-overlay-footer>\n</eui-overlay>\n", styles: [".eui-overlay-header{background-color:var(--eui-base-color-grey-10);border-bottom:1px solid var(--eui-base-color-grey-20)}.eui-notifications-items{margin:0;padding:0}.eui-notifications__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);color:var(--eui-base-color-font);cursor:default;display:flex;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-notifications__header-title{display:flex}.eui-notifications__header-title-label{font:normal normal 400 1.125rem/1.5rem var(--eui-base-font-family);font-weight:700}.eui-notifications__header-title-subLabel{margin-top:var(--eui-base-spacing-xs);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-notifications__header-actions{align-items:center;display:flex;margin-left:auto}.eui-notification-item{display:flex;flex-direction:column;overflow-y:auto;margin:0}.eui-notification-item-content{background-color:var(--eui-base-color-primary-5);border-bottom:1px solid var(--eui-base-color-grey-15);display:flex;flex-direction:column;min-height:var(--eui-base-spacing-4xl);padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);cursor:pointer}.eui-notification-item-content:hover{background-color:var(--eui-base-color-grey-5)!important}.eui-notification-item-content-top{align-items:center;display:flex;justify-content:space-between}.eui-notification-item-content-top__date{display:flex;align-items:center}.eui-notification-item-content-top__date-icon{position:relative}.eui-notification-item-content-top__date-icon--rotated{transform:rotate(20deg)}.eui-notification-item-content-top__date-icon-dot{position:absolute;top:0;right:0}.eui-notification-item-content-middle{margin:var(--eui-base-spacing-2xs) 0}.eui-notification-item-content-middle__sub-label{margin-top:var(--eui-base-spacing-2xs)}.eui-notification-item-content-bottom{display:flex;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiOverlayHeaderComponent, selector: "eui-overlay-header" }, { kind: "component", type: i2.EuiOverlayBodyComponent, selector: "eui-overlay-body" }, { kind: "component", type: i2.EuiOverlayFooterComponent, selector: "eui-overlay-footer" }, { kind: "component", type: i2.EuiOverlayComponent, selector: "eui-overlay", inputs: ["isActive", "position", "width", "fixedWidth"], outputs: ["activeState"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i4.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["aria-label"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i5.EuiIconSvgButtonComponent, selector: "eui-icon-svg-button", inputs: ["iconSvgName", "iconSvgFillColor", "iconSvgSize", "ariaLabel", "hasFocusBorder", "hasNoPadding"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiNotificationItemComponent, selector: "eui-notification-item", inputs: ["markAsReadLabel", "item", "dateFormat", "isShowMarkAsRead"], outputs: ["itemClick", "itemMarkAsRead"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
185
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiNotificationsComponent, selector: "eui-notifications", inputs: { count: "count", items: "items", unreadLabel: "unreadLabel", totalLabel: "totalLabel", markAsReadLabel: "markAsReadLabel", markAsUnReadLabel: "markAsUnReadLabel", markAllAsReadLabel: "markAllAsReadLabel", settingsLabel: "settingsLabel", refreshLabel: "refreshLabel", viewAllNotificationsLabel: "viewAllNotificationsLabel", headerTitleLabel: "headerTitleLabel", noNotificationFoundLabel: "noNotificationFoundLabel", nbUnreadCount: "nbUnreadCount", dateFormat: "dateFormat", noNotificationFoundLink: "noNotificationFoundLink", isShowMarkAsRead: "isShowMarkAsRead", isShowViewAllAction: "isShowViewAllAction", isHidePanelOnViewAllAction: "isHidePanelOnViewAllAction", customUnreadCount: "customUnreadCount", isShowMarkAllAsReadButton: "isShowMarkAllAsReadButton", isShowSettingsButton: "isShowSettingsButton", isShowRefreshButton: "isShowRefreshButton" }, outputs: { refreshClick: "refreshClick", notificationsClick: "notificationsClick", viewAllClick: "viewAllClick", settingsClick: "settingsClick", markAllAsReadClick: "markAllAsReadClick", noNotificationFoundClick: "noNotificationFoundClick", itemClick: "itemClick", itemMarkAsReadClick: "itemMarkAsReadClick" }, host: { listeners: { "body:click": "onHide()" }, properties: { "class": "this.string" } }, usesOnChanges: true, ngImport: i0, template: "<eui-icon-svg-button\n class=\"eui-notifications__trigger\"\n iconSvgName=\"eui-notifications\"\n iconSvgSize=\"m\"\n iconSvgFillColor=\"white\"\n (click)=\"onClicked($event)\"\n (keydown.enter)=\"onClicked($event)\"\n (keydown.esc)=\"onHide()\"\n hasFocusBorder>\n <eui-badge *ngIf=\"count\" euiSizeS euiDanger>{{ count }}</eui-badge>\n</eui-icon-svg-button>\n\n<eui-overlay [isActive]=\"isOverlayActive\" class=\"eui-overlay-offset--width-30\">\n <eui-overlay-header>\n <div class=\"eui-notifications__header-title\">\n <div class=\"eui-notifications__header-title-label\">\n {{ headerTitleLabel ? headerTitleLabel : ('eui.MYNOTIFICATIONS' | translate) }}\n <span\n *ngIf=\"items\"\n class=\"eui-u-cursor-help eui-u-ml-s\"\n attr.aria-label=\"{{ unreadLabel ? unreadLabel : ('eui.NOTIFICATIONSUNREAD' | translate) }}\"\n title=\"{{ unreadLabel ? unreadLabel : ('eui.NOTIFICATIONSUNREAD' | translate) }}\">\n </span>\n <eui-badge euiSizeL *ngIf=\"count\">{{ count }}</eui-badge>\n <eui-badge euiSizeL *ngIf=\"!count\">{{ items.length }}</eui-badge>\n </div>\n </div>\n\n <div *ngIf=\"items\" class=\"eui-notifications__header-actions\">\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowMarkAllAsReadButton\"\n [attr.aria-label]=\"markAllAsReadLabel ? markAllAsReadLabel : ('eui.NOTIFICATIONMARKALLASREAD' | translate)\"\n title=\"{{ markAllAsReadLabel ? markAllAsReadLabel : ('eui.NOTIFICATIONMARKALLASREAD' | translate) }}\"\n (click)=\"onMarkAllAsRead($event)\">\n <eui-icon-svg icon=\"eui-checkmark-done\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowSettingsButton\"\n [attr.aria-label]=\"settingsLabel ? settingsLabel : ('eui.SETTINGS' | translate)\"\n title=\"{{ settingsLabel ? settingsLabel : ('eui.SETTINGS' | translate) }}\"\n (click)=\"onSettings($event)\">\n <eui-icon-svg icon=\"eui-settings\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowRefreshButton\"\n [attr.aria-label]=\"refreshLabel ? refreshLabel : ('eui.REFRESH' | translate)\"\n title=\"{{ refreshLabel ? refreshLabel : ('eui.REFRESH' | translate) }}\"\n (click)=\"onRefresh($event)\">\n <eui-icon-svg icon=\"eui-refresh\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n </div>\n </eui-overlay-header>\n\n <eui-overlay-body>\n <ul class=\"eui-notifications-items\" *ngIf=\"items\">\n <eui-notification-item\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [item]=\"item\"\n [dateFormat]=\"dateFormat\"\n [markAsReadLabel]=\"markAsReadLabel\"\n [isShowMarkAsRead]=\"isShowMarkAsRead\"\n (itemClick)=\"onItemClick($event)\"\n (itemMarkAsRead)=\"onItemMarkAsRead($event)\">\n </eui-notification-item>\n </ul>\n </eui-overlay-body>\n\n <eui-overlay-footer>\n <ng-template [ngIf]=\"items?.length > 0\">\n <strong\n ><a (click)=\"onViewAllClick($event)\">{{\n viewAllNotificationsLabel ? viewAllNotificationsLabel : ('eui.VIEWALLNOTIFICATIONS' | translate)\n }}</a></strong\n >\n </ng-template>\n <ng-template [ngIf]=\"items?.length === 0\">\n <div class=\"ux-notification__item-content\" *ngIf=\"!noNotificationFoundLink\">\n {{ noNotificationFoundLabel ? noNotificationFoundLabel : ('eui.NONOTIFICATIONFOUND' | translate) }}\n </div>\n <div class=\"ux-notification__item-content\" *ngIf=\"noNotificationFoundLink\">\n <strong\n ><a (click)=\"onNoNotificationFoundClick()\">{{\n noNotificationFoundLabel ? noNotificationFoundLabel : ('eui.NONOTIFICATIONFOUND' | translate)\n }}</a></strong\n >\n </div>\n </ng-template>\n </eui-overlay-footer>\n</eui-overlay>\n", styles: [".eui-overlay-header{background-color:var(--eui-base-color-grey-10);border-bottom:1px solid var(--eui-base-color-grey-20)}.eui-notifications-items{margin:0;padding:0}.eui-notifications__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);color:var(--eui-base-color-font);cursor:default;display:flex;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-notifications__header-title{display:flex}.eui-notifications__header-title-label{font:normal normal 400 1.125rem/1.5rem var(--eui-base-font-family);font-weight:700}.eui-notifications__header-title-subLabel{margin-top:var(--eui-base-spacing-xs);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-notifications__header-actions{align-items:center;display:flex;margin-left:auto}.eui-notification-item{display:flex;flex-direction:column;overflow-y:auto;margin:0}.eui-notification-item-content{background-color:var(--eui-base-color-primary-5);border-bottom:1px solid var(--eui-base-color-grey-15);display:flex;flex-direction:column;min-height:var(--eui-base-spacing-4xl);padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);cursor:pointer}.eui-notification-item-content:hover{background-color:var(--eui-base-color-grey-5)!important}.eui-notification-item-content-top{align-items:center;display:flex;justify-content:space-between}.eui-notification-item-content-top__date{display:flex;align-items:center}.eui-notification-item-content-top__date-icon{position:relative}.eui-notification-item-content-top__date-icon--rotated{transform:rotate(20deg)}.eui-notification-item-content-top__date-icon-dot{position:absolute;top:0;right:0}.eui-notification-item-content-middle{margin:var(--eui-base-spacing-2xs) 0}.eui-notification-item-content-middle__sub-label{margin-top:var(--eui-base-spacing-2xs)}.eui-notification-item-content-bottom{display:flex;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiOverlayHeaderComponent, selector: "eui-overlay-header" }, { kind: "component", type: i2.EuiOverlayBodyComponent, selector: "eui-overlay-body" }, { kind: "component", type: i2.EuiOverlayFooterComponent, selector: "eui-overlay-footer" }, { kind: "component", type: i2.EuiOverlayComponent, selector: "eui-overlay", inputs: ["isActive", "position", "width", "fixedWidth"], outputs: ["activeState"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i4.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["aria-label"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i5.EuiIconSvgButtonComponent, selector: "eui-icon-svg-button", inputs: ["iconSvgName", "iconSvgFillColor", "iconSvgSize", "ariaLabel", "hasFocusBorder", "hasNoPadding"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiNotificationItemComponent, selector: "eui-notification-item", inputs: ["markAsReadLabel", "item", "dateFormat", "isShowMarkAsRead"], outputs: ["itemClick", "itemMarkAsRead"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
186
186
|
}
|
187
187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiNotificationsComponent, decorators: [{
|
188
188
|
type: Component,
|
189
|
-
args: [{ selector: 'eui-notifications', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<eui-icon-svg-button\n class=\"eui-notifications__trigger\"\n iconSvgName=\"eui-notifications\"\n iconSvgSize=\"
|
189
|
+
args: [{ selector: 'eui-notifications', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<eui-icon-svg-button\n class=\"eui-notifications__trigger\"\n iconSvgName=\"eui-notifications\"\n iconSvgSize=\"m\"\n iconSvgFillColor=\"white\"\n (click)=\"onClicked($event)\"\n (keydown.enter)=\"onClicked($event)\"\n (keydown.esc)=\"onHide()\"\n hasFocusBorder>\n <eui-badge *ngIf=\"count\" euiSizeS euiDanger>{{ count }}</eui-badge>\n</eui-icon-svg-button>\n\n<eui-overlay [isActive]=\"isOverlayActive\" class=\"eui-overlay-offset--width-30\">\n <eui-overlay-header>\n <div class=\"eui-notifications__header-title\">\n <div class=\"eui-notifications__header-title-label\">\n {{ headerTitleLabel ? headerTitleLabel : ('eui.MYNOTIFICATIONS' | translate) }}\n <span\n *ngIf=\"items\"\n class=\"eui-u-cursor-help eui-u-ml-s\"\n attr.aria-label=\"{{ unreadLabel ? unreadLabel : ('eui.NOTIFICATIONSUNREAD' | translate) }}\"\n title=\"{{ unreadLabel ? unreadLabel : ('eui.NOTIFICATIONSUNREAD' | translate) }}\">\n </span>\n <eui-badge euiSizeL *ngIf=\"count\">{{ count }}</eui-badge>\n <eui-badge euiSizeL *ngIf=\"!count\">{{ items.length }}</eui-badge>\n </div>\n </div>\n\n <div *ngIf=\"items\" class=\"eui-notifications__header-actions\">\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowMarkAllAsReadButton\"\n [attr.aria-label]=\"markAllAsReadLabel ? markAllAsReadLabel : ('eui.NOTIFICATIONMARKALLASREAD' | translate)\"\n title=\"{{ markAllAsReadLabel ? markAllAsReadLabel : ('eui.NOTIFICATIONMARKALLASREAD' | translate) }}\"\n (click)=\"onMarkAllAsRead($event)\">\n <eui-icon-svg icon=\"eui-checkmark-done\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowSettingsButton\"\n [attr.aria-label]=\"settingsLabel ? settingsLabel : ('eui.SETTINGS' | translate)\"\n title=\"{{ settingsLabel ? settingsLabel : ('eui.SETTINGS' | translate) }}\"\n (click)=\"onSettings($event)\">\n <eui-icon-svg icon=\"eui-settings\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n <button\n euiButton\n euiPrimary\n euiRounded\n euiIconButton\n euiBasicButton\n euiSizeS\n type=\"button\"\n *ngIf=\"isShowRefreshButton\"\n [attr.aria-label]=\"refreshLabel ? refreshLabel : ('eui.REFRESH' | translate)\"\n title=\"{{ refreshLabel ? refreshLabel : ('eui.REFRESH' | translate) }}\"\n (click)=\"onRefresh($event)\">\n <eui-icon-svg icon=\"eui-refresh\" fillColor=\"primary-100\"></eui-icon-svg>\n </button>\n </div>\n </eui-overlay-header>\n\n <eui-overlay-body>\n <ul class=\"eui-notifications-items\" *ngIf=\"items\">\n <eui-notification-item\n *ngFor=\"let item of items; trackBy: trackByFn\"\n [item]=\"item\"\n [dateFormat]=\"dateFormat\"\n [markAsReadLabel]=\"markAsReadLabel\"\n [isShowMarkAsRead]=\"isShowMarkAsRead\"\n (itemClick)=\"onItemClick($event)\"\n (itemMarkAsRead)=\"onItemMarkAsRead($event)\">\n </eui-notification-item>\n </ul>\n </eui-overlay-body>\n\n <eui-overlay-footer>\n <ng-template [ngIf]=\"items?.length > 0\">\n <strong\n ><a (click)=\"onViewAllClick($event)\">{{\n viewAllNotificationsLabel ? viewAllNotificationsLabel : ('eui.VIEWALLNOTIFICATIONS' | translate)\n }}</a></strong\n >\n </ng-template>\n <ng-template [ngIf]=\"items?.length === 0\">\n <div class=\"ux-notification__item-content\" *ngIf=\"!noNotificationFoundLink\">\n {{ noNotificationFoundLabel ? noNotificationFoundLabel : ('eui.NONOTIFICATIONFOUND' | translate) }}\n </div>\n <div class=\"ux-notification__item-content\" *ngIf=\"noNotificationFoundLink\">\n <strong\n ><a (click)=\"onNoNotificationFoundClick()\">{{\n noNotificationFoundLabel ? noNotificationFoundLabel : ('eui.NONOTIFICATIONFOUND' | translate)\n }}</a></strong\n >\n </div>\n </ng-template>\n </eui-overlay-footer>\n</eui-overlay>\n", styles: [".eui-overlay-header{background-color:var(--eui-base-color-grey-10);border-bottom:1px solid var(--eui-base-color-grey-20)}.eui-notifications-items{margin:0;padding:0}.eui-notifications__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);color:var(--eui-base-color-font);cursor:default;display:flex;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-m)}.eui-notifications__header-title{display:flex}.eui-notifications__header-title-label{font:normal normal 400 1.125rem/1.5rem var(--eui-base-font-family);font-weight:700}.eui-notifications__header-title-subLabel{margin-top:var(--eui-base-spacing-xs);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family)}.eui-notifications__header-actions{align-items:center;display:flex;margin-left:auto}.eui-notification-item{display:flex;flex-direction:column;overflow-y:auto;margin:0}.eui-notification-item-content{background-color:var(--eui-base-color-primary-5);border-bottom:1px solid var(--eui-base-color-grey-15);display:flex;flex-direction:column;min-height:var(--eui-base-spacing-4xl);padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m);cursor:pointer}.eui-notification-item-content:hover{background-color:var(--eui-base-color-grey-5)!important}.eui-notification-item-content-top{align-items:center;display:flex;justify-content:space-between}.eui-notification-item-content-top__date{display:flex;align-items:center}.eui-notification-item-content-top__date-icon{position:relative}.eui-notification-item-content-top__date-icon--rotated{transform:rotate(20deg)}.eui-notification-item-content-top__date-icon-dot{position:absolute;top:0;right:0}.eui-notification-item-content-middle{margin:var(--eui-base-spacing-2xs) 0}.eui-notification-item-content-middle__sub-label{margin-top:var(--eui-base-spacing-2xs)}.eui-notification-item-content-bottom{display:flex;justify-content:flex-end}\n"] }]
|
190
190
|
}], propDecorators: { refreshClick: [{
|
191
191
|
type: Output
|
192
192
|
}], notificationsClick: [{
|
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
254
254
|
type: HostListener,
|
255
255
|
args: ['body:click']
|
256
256
|
}] } });
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1ub3RpZmljYXRpb25zL2V1aS1ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xheW91dC9ldWktbm90aWZpY2F0aW9ucy9ldWktbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBUzVFLE1BQU0sT0FBTyx5QkFBeUI7SUFQdEM7UUFRSSxtSEFBbUg7UUFDbkgsOERBQThEO1FBQ3BELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCx1QkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxRSxtSEFBbUg7UUFDbkgsOERBQThEO1FBQ3BELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCxrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JFLG1IQUFtSDtRQUNuSCw4REFBOEQ7UUFDcEQsdUJBQWtCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUUsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCw2QkFBd0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRixtSEFBbUg7UUFDbkgsOERBQThEO1FB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Q0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRix1QkFBdUI7c0JBRDFCLEtBQUs7Z0JBU0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFTRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBU0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQVNGLHlCQUF5QjtzQkFENUIsS0FBSztnQkFTRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBU0YsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVVOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnN1bWVFdmVudCB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLW5vdGlmaWNhdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aU5vdGlmaWNhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIHJlZnJlc2hDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uc0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBPdXRwdXQoKSB2aWV3QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIHNldHRpbmdzQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIG1hcmtBbGxBc1JlYWRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAT3V0cHV0KCkgbm9Ob3RpZmljYXRpb25Gb3VuZENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBPdXRwdXQoKSBpdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIGl0ZW1NYXJrQXNSZWFkQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBpc092ZXJsYXlBY3RpdmUgPSBmYWxzZTtcbiAgICBjdXJyZW50RGF5Tm90aWZpY2F0aW9ucyA9IFtdO1xuICAgIG9sZGVzdE5vdGlmaWNhdGlvbnMgPSBbXTtcbiAgICB1bnJlYWROb3RpZmljYXRpb25zID0gW107XG4gICAgdG9kYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHN0cmluZyA9ICdldWktbm90aWZpY2F0aW9ucyc7XG5cbiAgICBASW5wdXQoKSBjb3VudDogbnVtYmVyID0gbnVsbDtcbiAgICBASW5wdXQoKSBpdGVtcyA9IFtdO1xuICAgIEBJbnB1dCgpIHVucmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIHRvdGFsTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgbWFya0FzUmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1hcmtBc1VuUmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1hcmtBbGxBc1JlYWRMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBzZXR0aW5nc0xhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIHJlZnJlc2hMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSB2aWV3QWxsTm90aWZpY2F0aW9uc0xhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhlYWRlclRpdGxlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgbm9Ob3RpZmljYXRpb25Gb3VuZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIG5iVW5yZWFkQ291bnQ6IG51bWJlciA9IG51bGw7XG4gICAgQElucHV0KCkgZGF0ZUZvcm1hdCA9ICdkZC9NTS9ZWVlZJztcbiAgICBASW5wdXQoKVxuICAgIGdldCBub05vdGlmaWNhdGlvbkZvdW5kTGluaygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vTm90aWZpY2F0aW9uRm91bmRMaW5rO1xuICAgIH1cbiAgICBzZXQgbm9Ob3RpZmljYXRpb25Gb3VuZExpbmsodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9ub05vdGlmaWNhdGlvbkZvdW5kTGluayA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX25vTm90aWZpY2F0aW9uRm91bmRMaW5rID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93TWFya0FzUmVhZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd01hcmtBc1JlYWQ7XG4gICAgfVxuICAgIHNldCBpc1Nob3dNYXJrQXNSZWFkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93TWFya0FzUmVhZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd01hcmtBc1JlYWQgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1ZpZXdBbGxBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dWaWV3QWxsQWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNTaG93Vmlld0FsbEFjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1ZpZXdBbGxBY3Rpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Nob3dWaWV3QWxsQWN0aW9uID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGVQYW5lbE9uVmlld0FsbEFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGlkZVBhbmVsT25WaWV3QWxsQWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNIaWRlUGFuZWxPblZpZXdBbGxBY3Rpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGVQYW5lbE9uVmlld0FsbEFjdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSGlkZVBhbmVsT25WaWV3QWxsQWN0aW9uID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBjdXN0b21VbnJlYWRDb3VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbVVucmVhZENvdW50O1xuICAgIH1cbiAgICBzZXQgY3VzdG9tVW5yZWFkQ291bnQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9jdXN0b21VbnJlYWRDb3VudCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2N1c3RvbVVucmVhZENvdW50ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93TWFya0FsbEFzUmVhZEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd01hcmtBbGxBc1JlYWRCdXR0b247XG4gICAgfVxuICAgIHNldCBpc1Nob3dNYXJrQWxsQXNSZWFkQnV0dG9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93TWFya0FsbEFzUmVhZEJ1dHRvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd01hcmtBbGxBc1JlYWRCdXR0b24gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1NldHRpbmdzQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93U2V0dGluZ3NCdXR0b247XG4gICAgfVxuICAgIHNldCBpc1Nob3dTZXR0aW5nc0J1dHRvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1NldHRpbmdzQnV0dG9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTaG93U2V0dGluZ3NCdXR0b24gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1JlZnJlc2hCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dSZWZyZXNoQnV0dG9uO1xuICAgIH1cbiAgICBzZXQgaXNTaG93UmVmcmVzaEJ1dHRvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1JlZnJlc2hCdXR0b24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Nob3dSZWZyZXNoQnV0dG9uID0gdHJ1ZTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JvZHk6Y2xpY2snKVxuICAgIG9uSGlkZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc092ZXJsYXlBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkNsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDbGljay5lbWl0KCk7XG4gICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgIHRoaXMuaXNPdmVybGF5QWN0aXZlID0gIXRoaXMuaXNPdmVybGF5QWN0aXZlO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuY3VzdG9tVW5yZWFkQ291bnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVVucmVhZENvdW50ID0gY2hhbmdlcy5jdXN0b21VbnJlYWRDb3VudC5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoIWN1c3RvbVVucmVhZENvdW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYlVucmVhZENvdW50ID0gdGhpcy5fZ2V0VW5yZWFkQ291bnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY3VzdG9tVW5yZWFkQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubmJVbnJlYWRDb3VudCA9IHRoaXMuX2dldFVucmVhZENvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJlZnJlc2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaENsaWNrLmVtaXQoKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkl0ZW1DbGljayhsaW5rOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdChsaW5rKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblZpZXdBbGxDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3QWxsQ2xpY2suZW1pdCgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNIaWRlUGFuZWxPblZpZXdBbGxBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vTm90aWZpY2F0aW9uRm91bmRDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub05vdGlmaWNhdGlvbkZvdW5kQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIG9uSXRlbU1hcmtBc1JlYWQobGluazogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbU1hcmtBc1JlYWRDbGljay5lbWl0KGxpbmspO1xuICAgIH1cblxuICAgIG9uTWFya0FsbEFzUmVhZChlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0FsbEFzUmVhZENsaWNrLmVtaXQoZSk7XG4gICAgICAgIGNvbnN1bWVFdmVudChlKTtcbiAgICB9XG5cbiAgICBvblNldHRpbmdzKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0NsaWNrLmVtaXQoZSk7XG4gICAgICAgIGNvbnN1bWVFdmVudChlKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFVucmVhZENvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHVucmVhZE5vdGlmaWNhdGlvbnMgPSB0aGlzLml0ZW1zLmZpbHRlcigobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmsubWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGluay5tZXRhZGF0YS5yZWFkID09PSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1bnJlYWROb3RpZmljYXRpb25zLmxlbmd0aDtcbiAgICB9XG59XG4iLCI8ZXVpLWljb24tc3ZnLWJ1dHRvblxuICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbnNfX3RyaWdnZXJcIlxuICAgIGljb25TdmdOYW1lPVwiZXVpLW5vdGlmaWNhdGlvbnNcIlxuICAgIGljb25TdmdTaXplPVwibFwiXG4gICAgaWNvblN2Z0ZpbGxDb2xvcj1cIndoaXRlXCJcbiAgICAoY2xpY2spPVwib25DbGlja2VkKCRldmVudClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bi5lc2MpPVwib25IaWRlKClcIlxuICAgIGhhc0ZvY3VzQm9yZGVyPlxuICAgIDxldWktYmFkZ2UgKm5nSWY9XCJjb3VudFwiIGV1aVNpemUgZXVpRGFuZ2VyPnt7IGNvdW50IH19PC9ldWktYmFkZ2U+XG48L2V1aS1pY29uLXN2Zy1idXR0b24+XG5cbjxldWktb3ZlcmxheSBbaXNBY3RpdmVdPVwiaXNPdmVybGF5QWN0aXZlXCIgY2xhc3M9XCJldWktb3ZlcmxheS1vZmZzZXQtLXdpZHRoLTMwXCI+XG4gICAgPGV1aS1vdmVybGF5LWhlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1ub3RpZmljYXRpb25zX19oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktbm90aWZpY2F0aW9uc19faGVhZGVyLXRpdGxlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAge3sgaGVhZGVyVGl0bGVMYWJlbCA/IGhlYWRlclRpdGxlTGFiZWwgOiAoJ2V1aS5NWU5PVElGSUNBVElPTlMnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS11LWN1cnNvci1oZWxwIGV1aS11LW1sLXNcIlxuICAgICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyB1bnJlYWRMYWJlbCA/IHVucmVhZExhYmVsIDogKCdldWkuTk9USUZJQ0FUSU9OU1VOUkVBRCcgfCB0cmFuc2xhdGUpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyB1bnJlYWRMYWJlbCA/IHVucmVhZExhYmVsIDogKCdldWkuTk9USUZJQ0FUSU9OU1VOUkVBRCcgfCB0cmFuc2xhdGUpIH19XCI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxldWktYmFkZ2UgZXVpU2l6ZUwgKm5nSWY9XCJjb3VudFwiPnt7IGNvdW50IH19PC9ldWktYmFkZ2U+XG4gICAgICAgICAgICAgICAgPGV1aS1iYWRnZSBldWlTaXplTCAqbmdJZj1cIiFjb3VudFwiPnt7IGl0ZW1zLmxlbmd0aCB9fTwvZXVpLWJhZGdlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtc1wiIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbnNfX2hlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpUHJpbWFyeVxuICAgICAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTaG93TWFya0FsbEFzUmVhZEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtYXJrQWxsQXNSZWFkTGFiZWwgPyBtYXJrQWxsQXNSZWFkTGFiZWwgOiAoJ2V1aS5OT1RJRklDQVRJT05NQVJLQUxMQVNSRUFEJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgbWFya0FsbEFzUmVhZExhYmVsID8gbWFya0FsbEFzUmVhZExhYmVsIDogKCdldWkuTk9USUZJQ0FUSU9OTUFSS0FMTEFTUkVBRCcgfCB0cmFuc2xhdGUpIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NYXJrQWxsQXNSZWFkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2hlY2ttYXJrLWRvbmVcIiBmaWxsQ29sb3I9XCJwcmltYXJ5LTEwMFwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpUHJpbWFyeVxuICAgICAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTaG93U2V0dGluZ3NCdXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2V0dGluZ3NMYWJlbCA/IHNldHRpbmdzTGFiZWwgOiAoJ2V1aS5TRVRUSU5HUycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IHNldHRpbmdzTGFiZWwgPyBzZXR0aW5nc0xhYmVsIDogKCdldWkuU0VUVElOR1MnIHwgdHJhbnNsYXRlKSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2V0dGluZ3MoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1zZXR0aW5nc1wiIGZpbGxDb2xvcj1cInByaW1hcnktMTAwXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICBldWlQcmltYXJ5XG4gICAgICAgICAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1Nob3dSZWZyZXNoQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJlZnJlc2hMYWJlbCA/IHJlZnJlc2hMYWJlbCA6ICgnZXVpLlJFRlJFU0gnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyByZWZyZXNoTGFiZWwgPyByZWZyZXNoTGFiZWwgOiAoJ2V1aS5SRUZSRVNIJyB8IHRyYW5zbGF0ZSkgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlZnJlc2goJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1yZWZyZXNoXCIgZmlsbENvbG9yPVwicHJpbWFyeS0xMDBcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2V1aS1vdmVybGF5LWhlYWRlcj5cblxuICAgIDxldWktb3ZlcmxheS1ib2R5PlxuICAgICAgICA8dWwgY2xhc3M9XCJldWktbm90aWZpY2F0aW9ucy1pdGVtc1wiICpuZ0lmPVwiaXRlbXNcIj5cbiAgICAgICAgICAgIDxldWktbm90aWZpY2F0aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbWFya0FzUmVhZExhYmVsXT1cIm1hcmtBc1JlYWRMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2lzU2hvd01hcmtBc1JlYWRdPVwiaXNTaG93TWFya0FzUmVhZFwiXG4gICAgICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaXRlbU1hcmtBc1JlYWQpPVwib25JdGVtTWFya0FzUmVhZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2V1aS1ub3RpZmljYXRpb24taXRlbT5cbiAgICAgICAgPC91bD5cbiAgICA8L2V1aS1vdmVybGF5LWJvZHk+XG5cbiAgICA8ZXVpLW92ZXJsYXktZm9vdGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbXM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgICAgICA+PGEgKGNsaWNrKT1cIm9uVmlld0FsbENsaWNrKCRldmVudClcIj57e1xuICAgICAgICAgICAgICAgICAgICB2aWV3QWxsTm90aWZpY2F0aW9uc0xhYmVsID8gdmlld0FsbE5vdGlmaWNhdGlvbnNMYWJlbCA6ICgnZXVpLlZJRVdBTExOT1RJRklDQVRJT05TJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICB9fTwvYT48L3N0cm9uZ1xuICAgICAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbXM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInV4LW5vdGlmaWNhdGlvbl9faXRlbS1jb250ZW50XCIgKm5nSWY9XCIhbm9Ob3RpZmljYXRpb25Gb3VuZExpbmtcIj5cbiAgICAgICAgICAgICAgICB7eyBub05vdGlmaWNhdGlvbkZvdW5kTGFiZWwgPyBub05vdGlmaWNhdGlvbkZvdW5kTGFiZWwgOiAoJ2V1aS5OT05PVElGSUNBVElPTkZPVU5EJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInV4LW5vdGlmaWNhdGlvbl9faXRlbS1jb250ZW50XCIgKm5nSWY9XCJub05vdGlmaWNhdGlvbkZvdW5kTGlua1wiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgPjxhIChjbGljayk9XCJvbk5vTm90aWZpY2F0aW9uRm91bmRDbGljaygpXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vTm90aWZpY2F0aW9uRm91bmRMYWJlbCA/IG5vTm90aWZpY2F0aW9uRm91bmRMYWJlbCA6ICgnZXVpLk5PTk9USUZJQ0FUSU9ORk9VTkQnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICB9fTwvYT48L3N0cm9uZ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZXVpLW92ZXJsYXktZm9vdGVyPlxuPC9ldWktb3ZlcmxheT5cbiJdfQ==
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1ub3RpZmljYXRpb25zL2V1aS1ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xheW91dC9ldWktbm90aWZpY2F0aW9ucy9ldWktbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBUzVFLE1BQU0sT0FBTyx5QkFBeUI7SUFQdEM7UUFRSSxtSEFBbUg7UUFDbkgsOERBQThEO1FBQ3BELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCx1QkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxRSxtSEFBbUg7UUFDbkgsOERBQThEO1FBQ3BELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDcEUsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCxrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JFLG1IQUFtSDtRQUNuSCw4REFBOEQ7UUFDcEQsdUJBQWtCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUUsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUNwRCw2QkFBd0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRixtSEFBbUg7UUFDbkgsOERBQThEO1FB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Q0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRix1QkFBdUI7c0JBRDFCLEtBQUs7Z0JBU0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFTRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBU0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQVNGLHlCQUF5QjtzQkFENUIsS0FBSztnQkFTRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBU0YsbUJBQW1CO3NCQUR0QixLQUFLO2dCQVVOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnN1bWVFdmVudCB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLW5vdGlmaWNhdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aU5vdGlmaWNhdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIHJlZnJlc2hDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uc0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBPdXRwdXQoKSB2aWV3QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIHNldHRpbmdzQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIG1hcmtBbGxBc1JlYWRDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAT3V0cHV0KCkgbm9Ob3RpZmljYXRpb25Gb3VuZENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBPdXRwdXQoKSBpdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQE91dHB1dCgpIGl0ZW1NYXJrQXNSZWFkQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBpc092ZXJsYXlBY3RpdmUgPSBmYWxzZTtcbiAgICBjdXJyZW50RGF5Tm90aWZpY2F0aW9ucyA9IFtdO1xuICAgIG9sZGVzdE5vdGlmaWNhdGlvbnMgPSBbXTtcbiAgICB1bnJlYWROb3RpZmljYXRpb25zID0gW107XG4gICAgdG9kYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHN0cmluZyA9ICdldWktbm90aWZpY2F0aW9ucyc7XG5cbiAgICBASW5wdXQoKSBjb3VudDogbnVtYmVyID0gbnVsbDtcbiAgICBASW5wdXQoKSBpdGVtcyA9IFtdO1xuICAgIEBJbnB1dCgpIHVucmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIHRvdGFsTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgbWFya0FzUmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1hcmtBc1VuUmVhZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1hcmtBbGxBc1JlYWRMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBzZXR0aW5nc0xhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIHJlZnJlc2hMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSB2aWV3QWxsTm90aWZpY2F0aW9uc0xhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhlYWRlclRpdGxlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgbm9Ob3RpZmljYXRpb25Gb3VuZExhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIG5iVW5yZWFkQ291bnQ6IG51bWJlciA9IG51bGw7XG4gICAgQElucHV0KCkgZGF0ZUZvcm1hdCA9ICdkZC9NTS9ZWVlZJztcbiAgICBASW5wdXQoKVxuICAgIGdldCBub05vdGlmaWNhdGlvbkZvdW5kTGluaygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vTm90aWZpY2F0aW9uRm91bmRMaW5rO1xuICAgIH1cbiAgICBzZXQgbm9Ob3RpZmljYXRpb25Gb3VuZExpbmsodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9ub05vdGlmaWNhdGlvbkZvdW5kTGluayA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX25vTm90aWZpY2F0aW9uRm91bmRMaW5rID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93TWFya0FzUmVhZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd01hcmtBc1JlYWQ7XG4gICAgfVxuICAgIHNldCBpc1Nob3dNYXJrQXNSZWFkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93TWFya0FzUmVhZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd01hcmtBc1JlYWQgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1ZpZXdBbGxBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dWaWV3QWxsQWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNTaG93Vmlld0FsbEFjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1ZpZXdBbGxBY3Rpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Nob3dWaWV3QWxsQWN0aW9uID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGVQYW5lbE9uVmlld0FsbEFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGlkZVBhbmVsT25WaWV3QWxsQWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNIaWRlUGFuZWxPblZpZXdBbGxBY3Rpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGVQYW5lbE9uVmlld0FsbEFjdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSGlkZVBhbmVsT25WaWV3QWxsQWN0aW9uID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBjdXN0b21VbnJlYWRDb3VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbVVucmVhZENvdW50O1xuICAgIH1cbiAgICBzZXQgY3VzdG9tVW5yZWFkQ291bnQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9jdXN0b21VbnJlYWRDb3VudCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2N1c3RvbVVucmVhZENvdW50ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93TWFya0FsbEFzUmVhZEJ1dHRvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd01hcmtBbGxBc1JlYWRCdXR0b247XG4gICAgfVxuICAgIHNldCBpc1Nob3dNYXJrQWxsQXNSZWFkQnV0dG9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93TWFya0FsbEFzUmVhZEJ1dHRvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd01hcmtBbGxBc1JlYWRCdXR0b24gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1NldHRpbmdzQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93U2V0dGluZ3NCdXR0b247XG4gICAgfVxuICAgIHNldCBpc1Nob3dTZXR0aW5nc0J1dHRvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1NldHRpbmdzQnV0dG9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTaG93U2V0dGluZ3NCdXR0b24gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1JlZnJlc2hCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dSZWZyZXNoQnV0dG9uO1xuICAgIH1cbiAgICBzZXQgaXNTaG93UmVmcmVzaEJ1dHRvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1JlZnJlc2hCdXR0b24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Nob3dSZWZyZXNoQnV0dG9uID0gdHJ1ZTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JvZHk6Y2xpY2snKVxuICAgIG9uSGlkZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc092ZXJsYXlBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkNsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDbGljay5lbWl0KCk7XG4gICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgIHRoaXMuaXNPdmVybGF5QWN0aXZlID0gIXRoaXMuaXNPdmVybGF5QWN0aXZlO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuY3VzdG9tVW5yZWFkQ291bnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVVucmVhZENvdW50ID0gY2hhbmdlcy5jdXN0b21VbnJlYWRDb3VudC5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoIWN1c3RvbVVucmVhZENvdW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYlVucmVhZENvdW50ID0gdGhpcy5fZ2V0VW5yZWFkQ291bnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY3VzdG9tVW5yZWFkQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubmJVbnJlYWRDb3VudCA9IHRoaXMuX2dldFVucmVhZENvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJlZnJlc2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVmcmVzaENsaWNrLmVtaXQoKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBvbkl0ZW1DbGljayhsaW5rOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdChsaW5rKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblZpZXdBbGxDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3QWxsQ2xpY2suZW1pdCgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNIaWRlUGFuZWxPblZpZXdBbGxBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5vTm90aWZpY2F0aW9uRm91bmRDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub05vdGlmaWNhdGlvbkZvdW5kQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIG9uSXRlbU1hcmtBc1JlYWQobGluazogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbU1hcmtBc1JlYWRDbGljay5lbWl0KGxpbmspO1xuICAgIH1cblxuICAgIG9uTWFya0FsbEFzUmVhZChlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0FsbEFzUmVhZENsaWNrLmVtaXQoZSk7XG4gICAgICAgIGNvbnN1bWVFdmVudChlKTtcbiAgICB9XG5cbiAgICBvblNldHRpbmdzKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0NsaWNrLmVtaXQoZSk7XG4gICAgICAgIGNvbnN1bWVFdmVudChlKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFVucmVhZENvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHVucmVhZE5vdGlmaWNhdGlvbnMgPSB0aGlzLml0ZW1zLmZpbHRlcigobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmsubWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGluay5tZXRhZGF0YS5yZWFkID09PSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1bnJlYWROb3RpZmljYXRpb25zLmxlbmd0aDtcbiAgICB9XG59XG4iLCI8ZXVpLWljb24tc3ZnLWJ1dHRvblxuICAgIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbnNfX3RyaWdnZXJcIlxuICAgIGljb25TdmdOYW1lPVwiZXVpLW5vdGlmaWNhdGlvbnNcIlxuICAgIGljb25TdmdTaXplPVwibVwiXG4gICAgaWNvblN2Z0ZpbGxDb2xvcj1cIndoaXRlXCJcbiAgICAoY2xpY2spPVwib25DbGlja2VkKCRldmVudClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bi5lc2MpPVwib25IaWRlKClcIlxuICAgIGhhc0ZvY3VzQm9yZGVyPlxuICAgIDxldWktYmFkZ2UgKm5nSWY9XCJjb3VudFwiIGV1aVNpemVTIGV1aURhbmdlcj57eyBjb3VudCB9fTwvZXVpLWJhZGdlPlxuPC9ldWktaWNvbi1zdmctYnV0dG9uPlxuXG48ZXVpLW92ZXJsYXkgW2lzQWN0aXZlXT1cImlzT3ZlcmxheUFjdGl2ZVwiIGNsYXNzPVwiZXVpLW92ZXJsYXktb2Zmc2V0LS13aWR0aC0zMFwiPlxuICAgIDxldWktb3ZlcmxheS1oZWFkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktbm90aWZpY2F0aW9uc19faGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbnNfX2hlYWRlci10aXRsZS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIHt7IGhlYWRlclRpdGxlTGFiZWwgPyBoZWFkZXJUaXRsZUxhYmVsIDogKCdldWkuTVlOT1RJRklDQVRJT05TJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdS1jdXJzb3ItaGVscCBldWktdS1tbC1zXCJcbiAgICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgdW5yZWFkTGFiZWwgPyB1bnJlYWRMYWJlbCA6ICgnZXVpLk5PVElGSUNBVElPTlNVTlJFQUQnIHwgdHJhbnNsYXRlKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgdW5yZWFkTGFiZWwgPyB1bnJlYWRMYWJlbCA6ICgnZXVpLk5PVElGSUNBVElPTlNVTlJFQUQnIHwgdHJhbnNsYXRlKSB9fVwiPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZXVpLWJhZGdlIGV1aVNpemVMICpuZ0lmPVwiY291bnRcIj57eyBjb3VudCB9fTwvZXVpLWJhZGdlPlxuICAgICAgICAgICAgICAgIDxldWktYmFkZ2UgZXVpU2l6ZUwgKm5nSWY9XCIhY291bnRcIj57eyBpdGVtcy5sZW5ndGggfX08L2V1aS1iYWRnZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbXNcIiBjbGFzcz1cImV1aS1ub3RpZmljYXRpb25zX19oZWFkZXItYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU2hvd01hcmtBbGxBc1JlYWRCdXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWFya0FsbEFzUmVhZExhYmVsID8gbWFya0FsbEFzUmVhZExhYmVsIDogKCdldWkuTk9USUZJQ0FUSU9OTUFSS0FMTEFTUkVBRCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IG1hcmtBbGxBc1JlYWRMYWJlbCA/IG1hcmtBbGxBc1JlYWRMYWJlbCA6ICgnZXVpLk5PVElGSUNBVElPTk1BUktBTExBU1JFQUQnIHwgdHJhbnNsYXRlKSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWFya0FsbEFzUmVhZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNoZWNrbWFyay1kb25lXCIgZmlsbENvbG9yPVwicHJpbWFyeS0xMDBcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aVByaW1hcnlcbiAgICAgICAgICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU2hvd1NldHRpbmdzQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNldHRpbmdzTGFiZWwgPyBzZXR0aW5nc0xhYmVsIDogKCdldWkuU0VUVElOR1MnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBzZXR0aW5nc0xhYmVsID8gc2V0dGluZ3NMYWJlbCA6ICgnZXVpLlNFVFRJTkdTJyB8IHRyYW5zbGF0ZSkgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNldHRpbmdzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktc2V0dGluZ3NcIiBmaWxsQ29sb3I9XCJwcmltYXJ5LTEwMFwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpUHJpbWFyeVxuICAgICAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTaG93UmVmcmVzaEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZWZyZXNoTGFiZWwgPyByZWZyZXNoTGFiZWwgOiAoJ2V1aS5SRUZSRVNIJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgcmVmcmVzaExhYmVsID8gcmVmcmVzaExhYmVsIDogKCdldWkuUkVGUkVTSCcgfCB0cmFuc2xhdGUpIH19XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktcmVmcmVzaFwiIGZpbGxDb2xvcj1cInByaW1hcnktMTAwXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9ldWktb3ZlcmxheS1oZWFkZXI+XG5cbiAgICA8ZXVpLW92ZXJsYXktYm9keT5cbiAgICAgICAgPHVsIGNsYXNzPVwiZXVpLW5vdGlmaWNhdGlvbnMtaXRlbXNcIiAqbmdJZj1cIml0ZW1zXCI+XG4gICAgICAgICAgICA8ZXVpLW5vdGlmaWNhdGlvbi1pdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXG4gICAgICAgICAgICAgICAgW21hcmtBc1JlYWRMYWJlbF09XCJtYXJrQXNSZWFkTGFiZWxcIlxuICAgICAgICAgICAgICAgIFtpc1Nob3dNYXJrQXNSZWFkXT1cImlzU2hvd01hcmtBc1JlYWRcIlxuICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGl0ZW1NYXJrQXNSZWFkKT1cIm9uSXRlbU1hcmtBc1JlYWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9ldWktbm90aWZpY2F0aW9uLWl0ZW0+XG4gICAgICAgIDwvdWw+XG4gICAgPC9ldWktb3ZlcmxheS1ib2R5PlxuXG4gICAgPGV1aS1vdmVybGF5LWZvb3Rlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIml0ZW1zPy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgICAgPjxhIChjbGljayk9XCJvblZpZXdBbGxDbGljaygkZXZlbnQpXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgdmlld0FsbE5vdGlmaWNhdGlvbnNMYWJlbCA/IHZpZXdBbGxOb3RpZmljYXRpb25zTGFiZWwgOiAoJ2V1aS5WSUVXQUxMTk9USUZJQ0FUSU9OUycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgfX08L2E+PC9zdHJvbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIml0ZW1zPy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC1ub3RpZmljYXRpb25fX2l0ZW0tY29udGVudFwiICpuZ0lmPVwiIW5vTm90aWZpY2F0aW9uRm91bmRMaW5rXCI+XG4gICAgICAgICAgICAgICAge3sgbm9Ob3RpZmljYXRpb25Gb3VuZExhYmVsID8gbm9Ob3RpZmljYXRpb25Gb3VuZExhYmVsIDogKCdldWkuTk9OT1RJRklDQVRJT05GT1VORCcgfCB0cmFuc2xhdGUpIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC1ub3RpZmljYXRpb25fX2l0ZW0tY29udGVudFwiICpuZ0lmPVwibm9Ob3RpZmljYXRpb25Gb3VuZExpbmtcIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgICAgICAgID48YSAoY2xpY2spPVwib25Ob05vdGlmaWNhdGlvbkZvdW5kQ2xpY2soKVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBub05vdGlmaWNhdGlvbkZvdW5kTGFiZWwgPyBub05vdGlmaWNhdGlvbkZvdW5kTGFiZWwgOiAoJ2V1aS5OT05PVElGSUNBVElPTkZPVU5EJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfX08L2E+PC9zdHJvbmdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2V1aS1vdmVybGF5LWZvb3Rlcj5cbjwvZXVpLW92ZXJsYXk+XG4iXX0=
|
@@ -13,9 +13,8 @@ export class EuiUserProfileCardComponent {
|
|
13
13
|
get cssClasses() {
|
14
14
|
return 'eui-user-profile-card';
|
15
15
|
}
|
16
|
-
constructor(userService
|
16
|
+
constructor(userService) {
|
17
17
|
this.userService = userService;
|
18
|
-
this.asService = asService;
|
19
18
|
this.isOnline = true;
|
20
19
|
this.impersonateLabel = 'impersonating';
|
21
20
|
this.showDetailsLabel = 'Show profile details';
|
@@ -47,16 +46,16 @@ export class EuiUserProfileCardComponent {
|
|
47
46
|
onClose() {
|
48
47
|
this.closeProfileMenu.emit();
|
49
48
|
}
|
50
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiUserProfileCardComponent, deps: [{ token: i1.UserService }
|
51
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiUserProfileCardComponent, selector: "eui-user-profile-card", inputs: { impersonateLabel: "impersonateLabel", showDetailsLabel: "showDetailsLabel", avatarUrl: "avatarUrl", isShowAvatarInitials: "isShowAvatarInitials" }, outputs: { showProfileInfo: "showProfileInfo", closeProfileMenu: "closeProfileMenu" }, host: { properties: { "class": "this.cssClasses" } }, ngImport: i0, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL euiInfo>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-font-xl eui-u-mb-s\">{{ userState.fullName }}</div>\n <div *ngIf=\"userState.function\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.function }}\n </div>\n <div *ngIf=\"userState.organisation && userState.organisation.code\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.organisation.code }}\n </div>\n </div>\n <div class=\"eui-user-profile-card__main-wrapper-right-content\">\n <a class=\"eui-u-text-link\" tabindex=\"0\" (click)=\"onClose()\">close</a>\n <button euiButton euiIconButton euiInfo euiSizeS class=\"eui-u-ml-auto eui-u-mt-m\" (click)=\"onShowInfoClick()\" title=\"{{ showDetailsLabel }}\">\n <eui-icon-svg icon=\"eui-info\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-container *ngIf=\"
|
49
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiUserProfileCardComponent, deps: [{ token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
50
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: EuiUserProfileCardComponent, selector: "eui-user-profile-card", inputs: { impersonateLabel: "impersonateLabel", showDetailsLabel: "showDetailsLabel", avatarUrl: "avatarUrl", isShowAvatarInitials: "isShowAvatarInitials" }, outputs: { showProfileInfo: "showProfileInfo", closeProfileMenu: "closeProfileMenu" }, host: { properties: { "class": "this.cssClasses" } }, ngImport: i0, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL euiInfo>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-font-xl eui-u-mb-s\">{{ userState.fullName }}</div>\n <div *ngIf=\"userState.function\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.function }}\n </div>\n <div *ngIf=\"userState.organisation && userState.organisation.code\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.organisation.code }}\n </div>\n </div>\n <div class=\"eui-user-profile-card__main-wrapper-right-content\">\n <a class=\"eui-u-text-link\" tabindex=\"0\" (click)=\"onClose()\">close</a>\n <button euiButton euiIconButton euiInfo euiSizeS class=\"eui-u-ml-auto eui-u-mt-m\" (click)=\"onShowInfoClick()\" title=\"{{ showDetailsLabel }}\">\n <eui-icon-svg icon=\"eui-info\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-container *ngIf=\"userState?.impersonatingUser\">\n <div class=\"eui-user-profile-card__impersonateInfos\">\n <div>{{ userState?.impersonatingUser?.firstName }} {{ userState?.impersonatingUser?.lastName }}</div>\n <div class=\"eui-u-mt-2xs\">{{ impersonateLabel }}</div>\n <div class=\"eui-u-mt-2xs\">\n <strong>{{ userState?.fullName }}</strong>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i4.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiAvatarComponent, selector: "div[euiAvatar], span[euiAvatar], eui-avatar", inputs: ["e2eAttr", "aria-label", "hasShadow", "isShapeSquare", "isFlat", "hasNoBackground"] }, { kind: "component", type: i5.EuiAvatarTextComponent, selector: "eui-avatar-text" }, { kind: "component", type: i5.EuiAvatarImageComponent, selector: "eui-avatar-image", inputs: ["imageUrl"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
52
51
|
}
|
53
52
|
__decorate([
|
54
53
|
coerceBoolean
|
55
54
|
], EuiUserProfileCardComponent.prototype, "isShowAvatarInitials", void 0);
|
56
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: EuiUserProfileCardComponent, decorators: [{
|
57
56
|
type: Component,
|
58
|
-
args: [{ selector: 'eui-user-profile-card', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL euiInfo>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-font-xl eui-u-mb-s\">{{ userState.fullName }}</div>\n <div *ngIf=\"userState.function\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.function }}\n </div>\n <div *ngIf=\"userState.organisation && userState.organisation.code\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.organisation.code }}\n </div>\n </div>\n <div class=\"eui-user-profile-card__main-wrapper-right-content\">\n <a class=\"eui-u-text-link\" tabindex=\"0\" (click)=\"onClose()\">close</a>\n <button euiButton euiIconButton euiInfo euiSizeS class=\"eui-u-ml-auto eui-u-mt-m\" (click)=\"onShowInfoClick()\" title=\"{{ showDetailsLabel }}\">\n <eui-icon-svg icon=\"eui-info\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-container *ngIf=\"
|
59
|
-
}], ctorParameters: () => [{ type: i1.UserService }
|
57
|
+
args: [{ selector: 'eui-user-profile-card', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL euiInfo>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-font-xl eui-u-mb-s\">{{ userState.fullName }}</div>\n <div *ngIf=\"userState.function\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.function }}\n </div>\n <div *ngIf=\"userState.organisation && userState.organisation.code\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState.organisation.code }}\n </div>\n </div>\n <div class=\"eui-user-profile-card__main-wrapper-right-content\">\n <a class=\"eui-u-text-link\" tabindex=\"0\" (click)=\"onClose()\">close</a>\n <button euiButton euiIconButton euiInfo euiSizeS class=\"eui-u-ml-auto eui-u-mt-m\" (click)=\"onShowInfoClick()\" title=\"{{ showDetailsLabel }}\">\n <eui-icon-svg icon=\"eui-info\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-container *ngIf=\"userState?.impersonatingUser\">\n <div class=\"eui-user-profile-card__impersonateInfos\">\n <div>{{ userState?.impersonatingUser?.firstName }} {{ userState?.impersonatingUser?.lastName }}</div>\n <div class=\"eui-u-mt-2xs\">{{ impersonateLabel }}</div>\n <div class=\"eui-u-mt-2xs\">\n <strong>{{ userState?.fullName }}</strong>\n </div>\n </div>\n</ng-container>\n" }]
|
58
|
+
}], ctorParameters: () => [{ type: i1.UserService }], propDecorators: { cssClasses: [{
|
60
59
|
type: HostBinding,
|
61
60
|
args: ['class']
|
62
61
|
}], impersonateLabel: [{
|
@@ -72,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
72
71
|
}], closeProfileMenu: [{
|
73
72
|
type: Output
|
74
73
|
}] } });
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS11c2VyLXByb2ZpbGUvdXNlci1wcm9maWxlLWNhcmQvdXNlci1wcm9maWxlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS11c2VyLXByb2ZpbGUvdXNlci1wcm9maWxlLWNhcmQvdXNlci1wcm9maWxlLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRW5KLE9BQU8sRUFBMEIsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBUS9CLE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sdUJBQXVCLENBQUM7SUFDbkMsQ0FBQztJQWtCRCxZQUNZLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBZnBDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFUCxxQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsc0JBQXNCLENBQUM7UUFJbkQseUJBQW9CLEdBQWlCLEtBQUssQ0FBQztRQUVqQyxvQkFBZSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pELHFCQUFnQixHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTVELHdCQUFtQixHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSXhELENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFdBQVc7YUFDWCxRQUFRLEVBQUU7YUFDVixJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksS0FBSyxFQUFFO2dCQUNQLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN4RSxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDMUI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztpSUFyRFEsMkJBQTJCO3FIQUEzQiwyQkFBMkIsd1dDWnhDLGk0REFzQ0E7O0FEWEk7SUFEQyxhQUFhO3lFQUM2QjsyRkFmbEMsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNJLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsT0FBTyxpQkFDakMsaUJBQWlCLENBQUMsSUFBSTtnRkFJMUIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxPQUFPO2dCQVNYLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHTixvQkFBb0I7c0JBRm5CLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBPbkluaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBVc2VyU2VydmljZSwgVXNlclN0YXRlLCBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktdXNlci1wcm9maWxlLWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2VyLXByb2ZpbGUtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aVVzZXJQcm9maWxlQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdldWktdXNlci1wcm9maWxlLWNhcmQnO1xuICAgIH1cblxuICAgIGF2YXRhckluaXRpYWxzOiBzdHJpbmc7XG4gICAgdXNlclN0YXRlOiBVc2VyU3RhdGU7XG4gICAgaXNPbmxpbmUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaW1wZXJzb25hdGVMYWJlbCA9ICdpbXBlcnNvbmF0aW5nJztcbiAgICBASW5wdXQoKSBzaG93RGV0YWlsc0xhYmVsID0gJ1Nob3cgcHJvZmlsZSBkZXRhaWxzJztcbiAgICBASW5wdXQoKSBhdmF0YXJVcmw6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgaXNTaG93QXZhdGFySW5pdGlhbHM6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIHNob3dQcm9maWxlSW5mbzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZVByb2ZpbGVNZW51OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlU3ViamVjdCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVTdWJqZWN0JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE5hbWVJbml0aWFsID0gc3RhdGUuZmlyc3ROYW1lPy5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdE5hbWVJbml0aWFsID0gc3RhdGUubGFzdE5hbWU/LnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF2YXRhckluaXRpYWxzID0gYCR7Zmlyc3ROYW1lSW5pdGlhbH0ke2xhc3ROYW1lSW5pdGlhbH1gO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlU3ViamVjdCQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlU3ViamVjdCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvblNob3dJbmZvQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd1Byb2ZpbGVJbmZvLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlUHJvZmlsZU1lbnUuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJldWktdXNlci1wcm9maWxlLWNhcmRfX21haW4td3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJldWktdXNlci1wcm9maWxlLWNhcmRfX2F2YXRhci13cmFwcGVyXCI+XG4gICAgICAgIDxldWktYXZhdGFyIGV1aVNpemVMIGV1aUluZm8+XG4gICAgICAgICAgICA8ZXVpLWF2YXRhci10ZXh0ICpuZ0lmPVwiaXNTaG93QXZhdGFySW5pdGlhbHM7IGVsc2Ugbm9BdmF0YXJJbml0aWFsc1wiPlxuICAgICAgICAgICAgICAgIHt7IGF2YXRhckluaXRpYWxzIH19XG4gICAgICAgICAgICA8L2V1aS1hdmF0YXItdGV4dD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9BdmF0YXJJbml0aWFscz5cbiAgICAgICAgICAgICAgICA8ZXVpLWF2YXRhci1pbWFnZSAqbmdJZj1cIiFhdmF0YXJVcmxcIj48L2V1aS1hdmF0YXItaW1hZ2U+XG4gICAgICAgICAgICAgICAgPGV1aS1hdmF0YXItaW1hZ2UgKm5nSWY9XCJhdmF0YXJVcmxcIiBbaW1hZ2VVcmxdPVwiYXZhdGFyVXJsXCI+PC9ldWktYXZhdGFyLWltYWdlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9ldWktYXZhdGFyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJldWktdXNlci1wcm9maWxlLWNhcmRfX3VzZXJJbmZvc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXUtZm9udC14bCBldWktdS1tYi1zXCI+e3sgdXNlclN0YXRlLmZ1bGxOYW1lIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyU3RhdGUuZnVuY3Rpb25cIiBjbGFzcz1cImV1aS11c2VyLXByb2ZpbGUtY2FyZF9fdXNlckluZm9zLWl0ZW1cIj5cbiAgICAgICAgICAgIHt7IHVzZXJTdGF0ZS5mdW5jdGlvbiB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJTdGF0ZS5vcmdhbmlzYXRpb24gJiYgdXNlclN0YXRlLm9yZ2FuaXNhdGlvbi5jb2RlXCIgY2xhc3M9XCJldWktdXNlci1wcm9maWxlLWNhcmRfX3VzZXJJbmZvcy1pdGVtXCI+XG4gICAgICAgICAgICB7eyB1c2VyU3RhdGUub3JnYW5pc2F0aW9uLmNvZGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImV1aS11c2VyLXByb2ZpbGUtY2FyZF9fbWFpbi13cmFwcGVyLXJpZ2h0LWNvbnRlbnRcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJldWktdS10ZXh0LWxpbmtcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+Y2xvc2U8L2E+XG4gICAgICAgIDxidXR0b24gZXVpQnV0dG9uIGV1aUljb25CdXR0b24gZXVpSW5mbyBldWlTaXplUyBjbGFzcz1cImV1aS11LW1sLWF1dG8gZXVpLXUtbXQtbVwiIChjbGljayk9XCJvblNob3dJbmZvQ2xpY2soKVwiIHRpdGxlPVwie3sgc2hvd0RldGFpbHNMYWJlbCB9fVwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWluZm9cIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJTdGF0ZT8uaW1wZXJzb25hdGluZ1VzZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLXVzZXItcHJvZmlsZS1jYXJkX19pbXBlcnNvbmF0ZUluZm9zXCI+XG4gICAgICAgIDxkaXY+e3sgdXNlclN0YXRlPy5pbXBlcnNvbmF0aW5nVXNlcj8uZmlyc3ROYW1lIH19IHt7IHVzZXJTdGF0ZT8uaW1wZXJzb25hdGluZ1VzZXI/Lmxhc3ROYW1lIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktdS1tdC0yeHNcIj57eyBpbXBlcnNvbmF0ZUxhYmVsIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktdS1tdC0yeHNcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdXNlclN0YXRlPy5mdWxsTmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|