valtech-components 2.0.501 → 2.0.503
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +101 -10
- package/esm2022/lib/components/molecules/language-selector/types.mjs +1 -1
- package/esm2022/lib/services/ads/ads.service.mjs +11 -40
- package/esm2022/lib/services/ads/types.mjs +1 -1
- package/esm2022/lib/services/auth/auth-state.service.mjs +5 -1
- package/esm2022/lib/services/auth/auth.service.mjs +4 -1
- package/esm2022/lib/services/auth/token.service.mjs +10 -1
- package/esm2022/lib/services/auth/types.mjs +2 -1
- package/fesm2022/valtech-components.mjs +125 -48
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +11 -4
- package/lib/components/molecules/language-selector/types.d.ts +20 -0
- package/lib/components/organisms/article/article.component.d.ts +1 -1
- package/lib/services/ads/ads.service.d.ts +3 -9
- package/lib/services/ads/types.d.ts +0 -2
- package/lib/services/auth/auth-state.service.d.ts +3 -0
- package/lib/services/auth/token.service.d.ts +6 -0
- package/lib/services/auth/types.d.ts +5 -0
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { IonButton, IonIcon, IonPopover, IonList, IonItem, IonLabel } from '@ionic/angular/standalone';
|
|
3
4
|
import { addIcons } from 'ionicons';
|
|
4
|
-
import { language } from 'ionicons/icons';
|
|
5
|
+
import { language, globeOutline, checkmark } from 'ionicons/icons';
|
|
5
6
|
import { I18nService } from '../../../services/i18n';
|
|
6
7
|
import { PopoverSelectorComponent } from '../popover-selector/popover-selector.component';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
@@ -12,11 +13,16 @@ import * as i0 from "@angular/core";
|
|
|
12
13
|
* By default, language changes are reactive (no page reload).
|
|
13
14
|
* Set forceReload: true in props to reload on change.
|
|
14
15
|
*
|
|
15
|
-
* @example
|
|
16
|
+
* @example Default mode (dropdown with label):
|
|
16
17
|
* <val-language-selector
|
|
17
18
|
* [props]="{ showLabel: true, showFlags: true }">
|
|
18
19
|
* </val-language-selector>
|
|
19
20
|
*
|
|
21
|
+
* @example Icon mode (compact for headers/toolbars):
|
|
22
|
+
* <val-language-selector
|
|
23
|
+
* [props]="{ mode: 'icon', color: 'primary' }">
|
|
24
|
+
* </val-language-selector>
|
|
25
|
+
*
|
|
20
26
|
* @input props: LanguageSelectorMetadata - Configuration for the language selector
|
|
21
27
|
* @output languageChange: EventEmitter<string> - Emitted when language changes
|
|
22
28
|
*/
|
|
@@ -31,6 +37,12 @@ export class LanguageSelectorComponent {
|
|
|
31
37
|
* Emits the selected language code.
|
|
32
38
|
*/
|
|
33
39
|
this.languageChange = new EventEmitter();
|
|
40
|
+
/** Unique ID for the icon mode popover trigger */
|
|
41
|
+
this.popoverId = `lang-selector-${Math.random().toString(36).substring(2, 9)}`;
|
|
42
|
+
/** Available languages (exposed for icon mode template) */
|
|
43
|
+
this.availableLanguages = [];
|
|
44
|
+
/** Current language (exposed for icon mode template) */
|
|
45
|
+
this.currentLanguage = '';
|
|
34
46
|
this.i18n = inject(I18nService);
|
|
35
47
|
/** Default language display names */
|
|
36
48
|
this.defaultLanguageNames = {
|
|
@@ -48,9 +60,11 @@ export class LanguageSelectorComponent {
|
|
|
48
60
|
fr: '🇫🇷',
|
|
49
61
|
de: '🇩🇪',
|
|
50
62
|
};
|
|
51
|
-
addIcons({ language });
|
|
63
|
+
addIcons({ language, globeOutline, checkmark });
|
|
52
64
|
}
|
|
53
65
|
ngOnInit() {
|
|
66
|
+
this.currentLanguage = this.i18n.lang();
|
|
67
|
+
this.availableLanguages = this.props.availableLanguages || this.i18n.supportedLanguages();
|
|
54
68
|
this.initializePopoverProps();
|
|
55
69
|
}
|
|
56
70
|
initializePopoverProps() {
|
|
@@ -81,6 +95,7 @@ export class LanguageSelectorComponent {
|
|
|
81
95
|
okText: 'Aceptar',
|
|
82
96
|
};
|
|
83
97
|
}
|
|
98
|
+
/** Get display name for a language code (public for template access) */
|
|
84
99
|
getLanguageDisplayName(languageCode) {
|
|
85
100
|
// Use custom names if provided
|
|
86
101
|
if (this.props.customLanguageNames?.[languageCode]) {
|
|
@@ -100,29 +115,105 @@ export class LanguageSelectorComponent {
|
|
|
100
115
|
onLanguageChange(selectedLanguage) {
|
|
101
116
|
if (typeof selectedLanguage === 'string') {
|
|
102
117
|
const newLang = selectedLanguage;
|
|
118
|
+
// Update current language for icon mode
|
|
119
|
+
this.currentLanguage = newLang;
|
|
103
120
|
// Emit the change event
|
|
104
121
|
this.languageChange.emit(selectedLanguage);
|
|
105
122
|
// Set the new language (reactive by default, reload if forceReload is true)
|
|
106
123
|
this.i18n.setLanguage(newLang, this.props.forceReload);
|
|
107
|
-
// Update popover selected value for reactive UI
|
|
124
|
+
// Update popover selected value for reactive UI (default mode)
|
|
108
125
|
if (this.popoverProps) {
|
|
109
126
|
this.popoverProps = { ...this.popoverProps, selectedValue: newLang };
|
|
110
127
|
}
|
|
111
128
|
}
|
|
112
129
|
}
|
|
113
130
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
114
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
115
|
-
|
|
116
|
-
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LanguageSelectorComponent, isStandalone: true, selector: "val-language-selector", inputs: { props: "props" }, outputs: { languageChange: "languageChange" }, ngImport: i0, template: `
|
|
132
|
+
<!-- Default mode: use popover-selector -->
|
|
133
|
+
@if (props.mode !== 'icon') {
|
|
134
|
+
<val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
<!-- Icon mode: compact globe button with popover -->
|
|
138
|
+
@if (props.mode === 'icon') {
|
|
139
|
+
<ion-button
|
|
140
|
+
[id]="popoverId"
|
|
141
|
+
[color]="props.color || 'medium'"
|
|
142
|
+
[fill]="props.fill || 'clear'"
|
|
143
|
+
[size]="props.size || 'default'"
|
|
144
|
+
[disabled]="props.disabled"
|
|
145
|
+
class="icon-mode-button"
|
|
146
|
+
>
|
|
147
|
+
<ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'"></ion-icon>
|
|
148
|
+
</ion-button>
|
|
149
|
+
|
|
150
|
+
<ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
|
|
151
|
+
<ng-template>
|
|
152
|
+
<ion-list>
|
|
153
|
+
@for (lang of availableLanguages; track lang) {
|
|
154
|
+
<ion-item
|
|
155
|
+
[button]="true"
|
|
156
|
+
[detail]="false"
|
|
157
|
+
(click)="onLanguageChange(lang)"
|
|
158
|
+
[class.selected]="lang === currentLanguage"
|
|
159
|
+
>
|
|
160
|
+
<ion-label>{{ getLanguageDisplayName(lang) }}</ion-label>
|
|
161
|
+
@if (lang === currentLanguage) {
|
|
162
|
+
<ion-icon slot="end" name="checkmark" color="primary"></ion-icon>
|
|
163
|
+
}
|
|
164
|
+
</ion-item>
|
|
165
|
+
}
|
|
166
|
+
</ion-list>
|
|
167
|
+
</ng-template>
|
|
168
|
+
</ion-popover>
|
|
169
|
+
}
|
|
170
|
+
`, isInline: true, styles: [":host{display:inline-block;width:auto}val-popover-selector .popover-selector-container{display:inline-block;width:auto}val-popover-selector .selector-trigger .trigger-text{display:inline-flex;align-items:center;gap:8px;font-weight:700}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.2em;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:transform .2s ease}val-popover-selector .selector-trigger.has-flag .trigger-text{letter-spacing:.025em}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1)}val-popover-selector .option-content{gap:10px;padding:8px 0}val-popover-selector .option-content .flag-emoji{font-size:1.1em;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}val-popover-selector .option-content span{font-weight:600;letter-spacing:.01em}.language-flag{font-size:1.2em;margin-right:6px;vertical-align:middle;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.1));transition:all .2s ease}@media (max-width: 768px){val-popover-selector .selector-trigger .trigger-text{font-size:13px;gap:6px}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.1em}}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1) rotate(3deg);transition:transform .25s cubic-bezier(.4,0,.2,1)}val-popover-selector .selector-trigger:active .trigger-text .flag-emoji{transform:scale(1.05)}val-popover-selector .language-changing .flag-emoji{animation:languageSwitch .4s ease-in-out}@keyframes languageSwitch{0%{transform:scale(1)}50%{transform:scale(1.15) rotate(8deg)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PopoverSelectorComponent, selector: "val-popover-selector", inputs: ["props"], outputs: ["selectionChange"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }] }); }
|
|
117
171
|
}
|
|
118
172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, decorators: [{
|
|
119
173
|
type: Component,
|
|
120
|
-
args: [{ selector: 'val-language-selector', standalone: true, imports: [CommonModule, PopoverSelectorComponent], template: `
|
|
121
|
-
|
|
174
|
+
args: [{ selector: 'val-language-selector', standalone: true, imports: [CommonModule, PopoverSelectorComponent, IonButton, IonIcon, IonPopover, IonList, IonItem, IonLabel], template: `
|
|
175
|
+
<!-- Default mode: use popover-selector -->
|
|
176
|
+
@if (props.mode !== 'icon') {
|
|
177
|
+
<val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
<!-- Icon mode: compact globe button with popover -->
|
|
181
|
+
@if (props.mode === 'icon') {
|
|
182
|
+
<ion-button
|
|
183
|
+
[id]="popoverId"
|
|
184
|
+
[color]="props.color || 'medium'"
|
|
185
|
+
[fill]="props.fill || 'clear'"
|
|
186
|
+
[size]="props.size || 'default'"
|
|
187
|
+
[disabled]="props.disabled"
|
|
188
|
+
class="icon-mode-button"
|
|
189
|
+
>
|
|
190
|
+
<ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'"></ion-icon>
|
|
191
|
+
</ion-button>
|
|
192
|
+
|
|
193
|
+
<ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
|
|
194
|
+
<ng-template>
|
|
195
|
+
<ion-list>
|
|
196
|
+
@for (lang of availableLanguages; track lang) {
|
|
197
|
+
<ion-item
|
|
198
|
+
[button]="true"
|
|
199
|
+
[detail]="false"
|
|
200
|
+
(click)="onLanguageChange(lang)"
|
|
201
|
+
[class.selected]="lang === currentLanguage"
|
|
202
|
+
>
|
|
203
|
+
<ion-label>{{ getLanguageDisplayName(lang) }}</ion-label>
|
|
204
|
+
@if (lang === currentLanguage) {
|
|
205
|
+
<ion-icon slot="end" name="checkmark" color="primary"></ion-icon>
|
|
206
|
+
}
|
|
207
|
+
</ion-item>
|
|
208
|
+
}
|
|
209
|
+
</ion-list>
|
|
210
|
+
</ng-template>
|
|
211
|
+
</ion-popover>
|
|
212
|
+
}
|
|
122
213
|
`, styles: [":host{display:inline-block;width:auto}val-popover-selector .popover-selector-container{display:inline-block;width:auto}val-popover-selector .selector-trigger .trigger-text{display:inline-flex;align-items:center;gap:8px;font-weight:700}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.2em;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:transform .2s ease}val-popover-selector .selector-trigger.has-flag .trigger-text{letter-spacing:.025em}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1)}val-popover-selector .option-content{gap:10px;padding:8px 0}val-popover-selector .option-content .flag-emoji{font-size:1.1em;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}val-popover-selector .option-content span{font-weight:600;letter-spacing:.01em}.language-flag{font-size:1.2em;margin-right:6px;vertical-align:middle;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.1));transition:all .2s ease}@media (max-width: 768px){val-popover-selector .selector-trigger .trigger-text{font-size:13px;gap:6px}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.1em}}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1) rotate(3deg);transition:transform .25s cubic-bezier(.4,0,.2,1)}val-popover-selector .selector-trigger:active .trigger-text .flag-emoji{transform:scale(1.05)}val-popover-selector .language-changing .flag-emoji{animation:languageSwitch .4s ease-in-out}@keyframes languageSwitch{0%{transform:scale(1)}50%{transform:scale(1.15) rotate(8deg)}to{transform:scale(1)}}\n"] }]
|
|
123
214
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
124
215
|
type: Input
|
|
125
216
|
}], languageChange: [{
|
|
126
217
|
type: Output
|
|
127
218
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7QUFhMUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBcUNwQztRQXBDQTs7V0FFRztRQUVILFVBQUssR0FBNkIsRUFBRSxDQUFDO1FBRXJDOzs7V0FHRztRQUVILG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUtwQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLHFDQUFxQztRQUNwQix5QkFBb0IsR0FBMkI7WUFDOUQsRUFBRSxFQUFFLFNBQVM7WUFDYixFQUFFLEVBQUUsU0FBUztZQUNiLEVBQUUsRUFBRSxXQUFXO1lBQ2YsRUFBRSxFQUFFLFVBQVU7WUFDZCxFQUFFLEVBQUUsU0FBUztTQUNkLENBQUM7UUFFRix1Q0FBdUM7UUFDdEIseUJBQW9CLEdBQTJCO1lBQzlELEVBQUUsRUFBRSxNQUFNO1lBQ1YsRUFBRSxFQUFFLE1BQU07WUFD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QVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLGdCQUFtQztRQUNsRCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQTRCLENBQUM7WUFFN0Msd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFM0MsNEVBQTRFO1lBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXZELGdEQUFnRDtZQUNoRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQTdHVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw0SkFwQjFCOztHQUVULCtyREFIUyxZQUFZLCtCQUFFLHdCQUF3Qjs7NEZBcUJyQyx5QkFBeUI7a0JBeEJyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsWUFDdkM7O0dBRVQ7d0RBdUJELEtBQUs7c0JBREosS0FBSztnQkFRTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGxhbmd1YWdlIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIEkxOG5MYW5nIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb24sIFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWxhbmd1YWdlLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLXBvcG92ZXItc2VsZWN0b3IgW3Byb3BzXT1cInBvcG92ZXJQcm9wc1wiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25MYW5ndWFnZUNoYW5nZSgkZXZlbnQpXCI+IDwvdmFsLXBvcG92ZXItc2VsZWN0b3I+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAqXG4gKiBBIGxhbmd1YWdlIHNlbGVjdG9yIGNvbXBvbmVudCB0aGF0IHVzZXMgSTE4blNlcnZpY2UuXG4gKiBCeSBkZWZhdWx0LCBsYW5ndWFnZSBjaGFuZ2VzIGFyZSByZWFjdGl2ZSAobm8gcGFnZSByZWxvYWQpLlxuICogU2V0IGZvcmNlUmVsb2FkOiB0cnVlIGluIHByb3BzIHRvIHJlbG9hZCBvbiBjaGFuZ2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAqICAgW3Byb3BzXT1cInsgc2hvd0xhYmVsOiB0cnVlLCBzaG93RmxhZ3M6IHRydWUgfVwiPlxuICogPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gKlxuICogQGlucHV0IHByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgbGFuZ3VhZ2Ugc2VsZWN0b3JcbiAqIEBvdXRwdXQgbGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+IC0gRW1pdHRlZCB3aGVuIGxhbmd1YWdlIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogTGFuZ3VhZ2Ugc2VsZWN0b3IgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGxhbmd1YWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIFBvcG92ZXIgc2VsZWN0b3IgY29uZmlndXJhdGlvbiAqL1xuICBwb3BvdmVyUHJvcHM6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhO1xuXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqIERlZmF1bHQgbGFuZ3VhZ2UgZGlzcGxheSBuYW1lcyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZU5hbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVzOiAnRXNwYcOxb2wnLFxuICAgIGVuOiAnRW5nbGlzaCcsXG4gICAgcHQ6ICdQb3J0dWd1w6pzJyxcbiAgICBmcjogJ0ZyYW7Dp2FpcycsXG4gICAgZGU6ICdEZXV0c2NoJyxcbiAgfTtcblxuICAvKiogRGVmYXVsdCBmbGFnIGljb25zIGZvciBsYW5ndWFnZXMgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VGbGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBlczogJ/Cfh6rwn4e4JyxcbiAgICBlbjogJ/Cfh7rwn4e4JyxcbiAgICBwdDogJ/Cfh6fwn4e3JyxcbiAgICBmcjogJ/Cfh6vwn4e3JyxcbiAgICBkZTogJ/Cfh6nwn4eqJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGxhbmd1YWdlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplUG9wb3ZlclByb3BzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQb3BvdmVyUHJvcHMoKSB7XG4gICAgY29uc3QgY3VycmVudExhbmd1YWdlID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBhdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLnByb3BzLmF2YWlsYWJsZUxhbmd1YWdlcyB8fCB0aGlzLmkxOG4uc3VwcG9ydGVkTGFuZ3VhZ2VzKCk7XG5cbiAgICAvLyBDb252ZXJ0IGxhbmd1YWdlIGNvZGVzIHRvIHBvcG92ZXIgb3B0aW9uc1xuICAgIGNvbnN0IG9wdGlvbnM6IFBvcG92ZXJPcHRpb25bXSA9IGF2YWlsYWJsZUxhbmd1YWdlcy5tYXAobGFuZyA9PiAoe1xuICAgICAgdmFsdWU6IGxhbmcsXG4gICAgICBsYWJlbDogdGhpcy5nZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmcpLFxuICAgIH0pKTtcblxuICAgIC8vIENyZWF0ZSBwb3BvdmVyIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzZWxlY3RlZFZhbHVlOiBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICBsYWJlbDogdGhpcy5wcm9wcy5zaG93TGFiZWwgIT09IGZhbHNlID8gKHRoaXMucHJvcHMubGFiZWwgfHwgJ0lkaW9tYScpIDogdW5kZWZpbmVkLFxuICAgICAgaWNvbjogJ2xhbmd1YWdlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWNjaW9uYXIgaWRpb21hLi4uJyxcbiAgICAgIGNvbG9yOiB0aGlzLnByb3BzLmNvbG9yIHx8ICdtZWRpdW0nLFxuICAgICAgc2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8ICdkZWZhdWx0JyxcbiAgICAgIGZpbGw6IHRoaXMucHJvcHMuZmlsbCB8fCAnb3V0bGluZScsXG4gICAgICBzaGFwZTogdGhpcy5wcm9wcy5zaGFwZSxcbiAgICAgIGV4cGFuZDogdGhpcy5wcm9wcy5leHBhbmQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZSxcbiAgICAgIGludGVyZmFjZTogJ3BvcG92ZXInLFxuICAgICAgc2hvd0NoZWNrbWFyazogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWxhcicsXG4gICAgICBva1RleHQ6ICdBY2VwdGFyJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBVc2UgY3VzdG9tIG5hbWVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMucHJvcHMuY3VzdG9tTGFuZ3VhZ2VOYW1lcz8uW2xhbmd1YWdlQ29kZV0pIHtcbiAgICAgIGNvbnN0IGN1c3RvbU5hbWUgPSB0aGlzLnByb3BzLmN1c3RvbUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXTtcbiAgICAgIGNvbnN0IGZsYWcgPSB0aGlzLnByb3BzLnNob3dGbGFncyA/IHRoaXMuZGVmYXVsdExhbmd1YWdlRmxhZ3NbbGFuZ3VhZ2VDb2RlXSA6ICcnO1xuICAgICAgcmV0dXJuIGZsYWcgPyBgJHtmbGFnfSAke2N1c3RvbU5hbWV9YCA6IGN1c3RvbU5hbWU7XG4gICAgfVxuXG4gICAgLy8gVXNlIGRlZmF1bHQgbmFtZXNcbiAgICBjb25zdCBkZWZhdWx0TmFtZSA9IHRoaXMuZGVmYXVsdExhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSB8fCBsYW5ndWFnZUNvZGUudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBmbGFnID0gdGhpcy5wcm9wcy5zaG93RmxhZ3MgPyB0aGlzLmRlZmF1bHRMYW5ndWFnZUZsYWdzW2xhbmd1YWdlQ29kZV0gOiAnJztcbiAgICByZXR1cm4gZmxhZyA/IGAke2ZsYWd9ICR7ZGVmYXVsdE5hbWV9YCA6IGRlZmF1bHROYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBsYW5ndWFnZSBzZWxlY3Rpb24gY2hhbmdlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRMYW5ndWFnZSAtIFRoZSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlKHMpXG4gICAqL1xuICBvbkxhbmd1YWdlQ2hhbmdlKHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZExhbmd1YWdlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbmV3TGFuZyA9IHNlbGVjdGVkTGFuZ3VhZ2UgYXMgSTE4bkxhbmc7XG5cbiAgICAgIC8vIEVtaXQgdGhlIGNoYW5nZSBldmVudFxuICAgICAgdGhpcy5sYW5ndWFnZUNoYW5nZS5lbWl0KHNlbGVjdGVkTGFuZ3VhZ2UpO1xuXG4gICAgICAvLyBTZXQgdGhlIG5ldyBsYW5ndWFnZSAocmVhY3RpdmUgYnkgZGVmYXVsdCwgcmVsb2FkIGlmIGZvcmNlUmVsb2FkIGlzIHRydWUpXG4gICAgICB0aGlzLmkxOG4uc2V0TGFuZ3VhZ2UobmV3TGFuZywgdGhpcy5wcm9wcy5mb3JjZVJlbG9hZCk7XG5cbiAgICAgIC8vIFVwZGF0ZSBwb3BvdmVyIHNlbGVjdGVkIHZhbHVlIGZvciByZWFjdGl2ZSBVSVxuICAgICAgaWYgKHRoaXMucG9wb3ZlclByb3BzKSB7XG4gICAgICAgIHRoaXMucG9wb3ZlclByb3BzID0geyAuLi50aGlzLnBvcG92ZXJQcm9wcywgc2VsZWN0ZWRWYWx1ZTogbmV3TGFuZyB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQWtEMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBOENwQztRQTdDQTs7V0FFRztRQUVILFVBQUssR0FBNkIsRUFBRSxDQUFDO1FBRXJDOzs7V0FHRztRQUVILG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUs1QyxrREFBa0Q7UUFDbEQsY0FBUyxHQUFHLGlCQUFpQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUxRSwyREFBMkQ7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RCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQTVIVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw0SkE5RDFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q1QsK3JEQXhDUyxZQUFZLCtCQUFFLHdCQUF3QixrSEFBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsVUFBVSx3REFBRSxPQUFPLHlGQUFFLE9BQU8sME5BQUUsUUFBUTs7NEZBK0RqRyx5QkFBeUI7a0JBbEVyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFDbkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVDt3REE0QkQsS0FBSztzQkFESixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uUG9wb3ZlciwgSW9uTGlzdCwgSW9uSXRlbSwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbGFuZ3VhZ2UsIGdsb2JlT3V0bGluZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIEkxOG5MYW5nIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb24sIFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWxhbmd1YWdlLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50LCBJb25CdXR0b24sIElvbkljb24sIElvblBvcG92ZXIsIElvbkxpc3QsIElvbkl0ZW0sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8IS0tIERlZmF1bHQgbW9kZTogdXNlIHBvcG92ZXItc2VsZWN0b3IgLS0+XG4gICAgQGlmIChwcm9wcy5tb2RlICE9PSAnaWNvbicpIHtcbiAgICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicG9wb3ZlclByb3BzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlKCRldmVudClcIj4gPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgICB9XG5cbiAgICA8IS0tIEljb24gbW9kZTogY29tcGFjdCBnbG9iZSBidXR0b24gd2l0aCBwb3BvdmVyIC0tPlxuICAgIEBpZiAocHJvcHMubW9kZSA9PT0gJ2ljb24nKSB7XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBbaWRdPVwicG9wb3ZlcklkXCJcbiAgICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdtZWRpdW0nXCJcbiAgICAgICAgW2ZpbGxdPVwicHJvcHMuZmlsbCB8fCAnY2xlYXInXCJcbiAgICAgICAgW3NpemVdPVwicHJvcHMuc2l6ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cImljb24tbW9kZS1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtuYW1lXT1cInByb3BzLmljb24gfHwgJ2dsb2JlLW91dGxpbmUnXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPGlvbi1wb3BvdmVyIFt0cmlnZ2VyXT1cInBvcG92ZXJJZFwiIFtkaXNtaXNzT25TZWxlY3RdPVwidHJ1ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgPGlvbi1saXN0PlxuICAgICAgICAgICAgQGZvciAobGFuZyBvZiBhdmFpbGFibGVMYW5ndWFnZXM7IHRyYWNrIGxhbmcpIHtcbiAgICAgICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25MYW5ndWFnZUNoYW5nZShsYW5nKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImxhbmcgPT09IGN1cnJlbnRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IGdldExhbmd1YWdlRGlzcGxheU5hbWUobGFuZykgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKGxhbmcgPT09IGN1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiY2hlY2ttYXJrXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvaW9uLXBvcG92ZXI+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gKlxuICogQSBsYW5ndWFnZSBzZWxlY3RvciBjb21wb25lbnQgdGhhdCB1c2VzIEkxOG5TZXJ2aWNlLlxuICogQnkgZGVmYXVsdCwgbGFuZ3VhZ2UgY2hhbmdlcyBhcmUgcmVhY3RpdmUgKG5vIHBhZ2UgcmVsb2FkKS5cbiAqIFNldCBmb3JjZVJlbG9hZDogdHJ1ZSBpbiBwcm9wcyB0byByZWxvYWQgb24gY2hhbmdlLlxuICpcbiAqIEBleGFtcGxlIERlZmF1bHQgbW9kZSAoZHJvcGRvd24gd2l0aCBsYWJlbCk6XG4gKiA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gKiAgIFtwcm9wc109XCJ7IHNob3dMYWJlbDogdHJ1ZSwgc2hvd0ZsYWdzOiB0cnVlIH1cIj5cbiAqIDwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICpcbiAqIEBleGFtcGxlIEljb24gbW9kZSAoY29tcGFjdCBmb3IgaGVhZGVycy90b29sYmFycyk6XG4gKiA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gKiAgIFtwcm9wc109XCJ7IG1vZGU6ICdpY29uJywgY29sb3I6ICdwcmltYXJ5JyB9XCI+XG4gKiA8L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBsYW5ndWFnZSBzZWxlY3RvclxuICogQG91dHB1dCBsYW5ndWFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gLSBFbWl0dGVkIHdoZW4gbGFuZ3VhZ2UgY2hhbmdlc1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBzZWxlY3RvciBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgPSB7fTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIGNvZGUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgbGFuZ3VhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogUG9wb3ZlciBzZWxlY3RvciBjb25maWd1cmF0aW9uIChmb3IgZGVmYXVsdCBtb2RlKSAqL1xuICBwb3BvdmVyUHJvcHM6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhO1xuXG4gIC8qKiBVbmlxdWUgSUQgZm9yIHRoZSBpY29uIG1vZGUgcG9wb3ZlciB0cmlnZ2VyICovXG4gIHBvcG92ZXJJZCA9IGBsYW5nLXNlbGVjdG9yLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfWA7XG5cbiAgLyoqIEF2YWlsYWJsZSBsYW5ndWFnZXMgKGV4cG9zZWQgZm9yIGljb24gbW9kZSB0ZW1wbGF0ZSkgKi9cbiAgYXZhaWxhYmxlTGFuZ3VhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDdXJyZW50IGxhbmd1YWdlIChleHBvc2VkIGZvciBpY29uIG1vZGUgdGVtcGxhdGUpICovXG4gIGN1cnJlbnRMYW5ndWFnZTogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKiogRGVmYXVsdCBsYW5ndWFnZSBkaXNwbGF5IG5hbWVzICovXG4gIHJlYWRvbmx5IGRlZmF1bHRMYW5ndWFnZU5hbWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGVzOiAnRXNwYcOxb2wnLFxuICAgIGVuOiAnRW5nbGlzaCcsXG4gICAgcHQ6ICdQb3J0dWd1w6pzJyxcbiAgICBmcjogJ0ZyYW7Dp2FpcycsXG4gICAgZGU6ICdEZXV0c2NoJyxcbiAgfTtcblxuICAvKiogRGVmYXVsdCBmbGFnIGljb25zIGZvciBsYW5ndWFnZXMgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlRmxhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZXM6ICfwn4eq8J+HuCcsXG4gICAgZW46ICfwn4e68J+HuCcsXG4gICAgcHQ6ICfwn4en8J+HtycsXG4gICAgZnI6ICfwn4er8J+HtycsXG4gICAgZGU6ICfwn4ep8J+HqicsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoeyBsYW5ndWFnZSwgZ2xvYmVPdXRsaW5lLCBjaGVja21hcmsgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLnByb3BzLmF2YWlsYWJsZUxhbmd1YWdlcyB8fCB0aGlzLmkxOG4uc3VwcG9ydGVkTGFuZ3VhZ2VzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUG9wb3ZlclByb3BzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQb3BvdmVyUHJvcHMoKSB7XG4gICAgY29uc3QgY3VycmVudExhbmd1YWdlID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBhdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLnByb3BzLmF2YWlsYWJsZUxhbmd1YWdlcyB8fCB0aGlzLmkxOG4uc3VwcG9ydGVkTGFuZ3VhZ2VzKCk7XG5cbiAgICAvLyBDb252ZXJ0IGxhbmd1YWdlIGNvZGVzIHRvIHBvcG92ZXIgb3B0aW9uc1xuICAgIGNvbnN0IG9wdGlvbnM6IFBvcG92ZXJPcHRpb25bXSA9IGF2YWlsYWJsZUxhbmd1YWdlcy5tYXAobGFuZyA9PiAoe1xuICAgICAgdmFsdWU6IGxhbmcsXG4gICAgICBsYWJlbDogdGhpcy5nZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmcpLFxuICAgIH0pKTtcblxuICAgIC8vIENyZWF0ZSBwb3BvdmVyIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzZWxlY3RlZFZhbHVlOiBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICBsYWJlbDogdGhpcy5wcm9wcy5zaG93TGFiZWwgIT09IGZhbHNlID8gKHRoaXMucHJvcHMubGFiZWwgfHwgJ0lkaW9tYScpIDogdW5kZWZpbmVkLFxuICAgICAgaWNvbjogJ2xhbmd1YWdlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWNjaW9uYXIgaWRpb21hLi4uJyxcbiAgICAgIGNvbG9yOiB0aGlzLnByb3BzLmNvbG9yIHx8ICdtZWRpdW0nLFxuICAgICAgc2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8ICdkZWZhdWx0JyxcbiAgICAgIGZpbGw6IHRoaXMucHJvcHMuZmlsbCB8fCAnb3V0bGluZScsXG4gICAgICBzaGFwZTogdGhpcy5wcm9wcy5zaGFwZSxcbiAgICAgIGV4cGFuZDogdGhpcy5wcm9wcy5leHBhbmQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZSxcbiAgICAgIGludGVyZmFjZTogJ3BvcG92ZXInLFxuICAgICAgc2hvd0NoZWNrbWFyazogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWxhcicsXG4gICAgICBva1RleHQ6ICdBY2VwdGFyJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBkaXNwbGF5IG5hbWUgZm9yIGEgbGFuZ3VhZ2UgY29kZSAocHVibGljIGZvciB0ZW1wbGF0ZSBhY2Nlc3MpICovXG4gIGdldExhbmd1YWdlRGlzcGxheU5hbWUobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFVzZSBjdXN0b20gbmFtZXMgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5wcm9wcy5jdXN0b21MYW5ndWFnZU5hbWVzPy5bbGFuZ3VhZ2VDb2RlXSkge1xuICAgICAgY29uc3QgY3VzdG9tTmFtZSA9IHRoaXMucHJvcHMuY3VzdG9tTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdO1xuICAgICAgY29uc3QgZmxhZyA9IHRoaXMucHJvcHMuc2hvd0ZsYWdzID8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VGbGFnc1tsYW5ndWFnZUNvZGVdIDogJyc7XG4gICAgICByZXR1cm4gZmxhZyA/IGAke2ZsYWd9ICR7Y3VzdG9tTmFtZX1gIDogY3VzdG9tTmFtZTtcbiAgICB9XG5cbiAgICAvLyBVc2UgZGVmYXVsdCBuYW1lc1xuICAgIGNvbnN0IGRlZmF1bHROYW1lID0gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdIHx8IGxhbmd1YWdlQ29kZS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IGZsYWcgPSB0aGlzLnByb3BzLnNob3dGbGFncyA/IHRoaXMuZGVmYXVsdExhbmd1YWdlRmxhZ3NbbGFuZ3VhZ2VDb2RlXSA6ICcnO1xuICAgIHJldHVybiBmbGFnID8gYCR7ZmxhZ30gJHtkZWZhdWx0TmFtZX1gIDogZGVmYXVsdE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGxhbmd1YWdlIHNlbGVjdGlvbiBjaGFuZ2UuXG4gICAqIEBwYXJhbSBzZWxlY3RlZExhbmd1YWdlIC0gVGhlIHNlbGVjdGVkIGxhbmd1YWdlIGNvZGUocylcbiAgICovXG4gIG9uTGFuZ3VhZ2VDaGFuZ2Uoc2VsZWN0ZWRMYW5ndWFnZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBpZiAodHlwZW9mIHNlbGVjdGVkTGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBuZXdMYW5nID0gc2VsZWN0ZWRMYW5ndWFnZSBhcyBJMThuTGFuZztcblxuICAgICAgLy8gVXBkYXRlIGN1cnJlbnQgbGFuZ3VhZ2UgZm9yIGljb24gbW9kZVxuICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBuZXdMYW5nO1xuXG4gICAgICAvLyBFbWl0IHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2UuZW1pdChzZWxlY3RlZExhbmd1YWdlKTtcblxuICAgICAgLy8gU2V0IHRoZSBuZXcgbGFuZ3VhZ2UgKHJlYWN0aXZlIGJ5IGRlZmF1bHQsIHJlbG9hZCBpZiBmb3JjZVJlbG9hZCBpcyB0cnVlKVxuICAgICAgdGhpcy5pMThuLnNldExhbmd1YWdlKG5ld0xhbmcsIHRoaXMucHJvcHMuZm9yY2VSZWxvYWQpO1xuXG4gICAgICAvLyBVcGRhdGUgcG9wb3ZlciBzZWxlY3RlZCB2YWx1ZSBmb3IgcmVhY3RpdmUgVUkgKGRlZmF1bHQgbW9kZSlcbiAgICAgIGlmICh0aGlzLnBvcG92ZXJQcm9wcykge1xuICAgICAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHsgLi4udGhpcy5wb3BvdmVyUHJvcHMsIHNlbGVjdGVkVmFsdWU6IG5ld0xhbmcgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcblxuLyoqXG4gKiBEaXNwbGF5IG1vZGUgZm9yIHRoZSBsYW5ndWFnZSBzZWxlY3Rvci5cbiAqIC0gJ2RlZmF1bHQnOiBTaG93cyBidXR0b24gd2l0aCBsYWJlbCBhbmQvb3IgY3VycmVudCBsYW5ndWFnZVxuICogLSAnaWNvbic6IENvbXBhY3QgbW9kZSBzaG93aW5nIG9ubHkgYSBnbG9iZSBpY29uIChpZGVhbCBmb3IgaGVhZGVycylcbiAqL1xuZXhwb3J0IHR5cGUgTGFuZ3VhZ2VTZWxlY3Rvck1vZGUgPSAnZGVmYXVsdCcgfCAnaWNvbic7XG5cbi8qKlxuICogUHJvcHMgZm9yIHZhbC1sYW5ndWFnZS1zZWxlY3RvciBjb21wb25lbnQuXG4gKiBBIHNwZWNpYWxpemVkIGNvbXBvbmVudCBmb3IgbGFuZ3VhZ2Ugc2VsZWN0aW9uLlxuICpcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGlzcGxheSBtb2RlOiAnZGVmYXVsdCcgb3IgJ2ljb24nIChjb21wYWN0IGZvciBoZWFkZXJzKS5cbiAqIEBwcm9wZXJ0eSBpY29uIC0gQ3VzdG9tIGljb24gbmFtZSBmb3IgaWNvbiBtb2RlIChkZWZhdWx0OiAnZ2xvYmUtb3V0bGluZScpLlxuICogQHByb3BlcnR5IGN1cnJlbnRMYW5ndWFnZSAtIEN1cnJlbnRseSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlLlxuICogQHByb3BlcnR5IGF2YWlsYWJsZUxhbmd1YWdlcyAtIEFycmF5IG9mIGF2YWlsYWJsZSBsYW5ndWFnZSBjb2Rlcy5cbiAqIEBwcm9wZXJ0eSBzaG93TGFiZWwgLSBXaGV0aGVyIHRvIHNob3cgdGhlIGxhYmVsLlxuICogQHByb3BlcnR5IGxhYmVsIC0gQ3VzdG9tIGxhYmVsIHRleHQgKHN0YXRpYykuXG4gKiBAcHJvcGVydHkgbGFiZWxDb25maWcgLSBSZWFjdGl2ZSBjb250ZW50IGNvbmZpZ3VyYXRpb24gZm9yIGxhYmVsLlxuICogQHByb3BlcnR5IHNob3dGbGFncyAtIFdoZXRoZXIgdG8gc2hvdyBmbGFnIGljb25zIGZvciBsYW5ndWFnZXMuXG4gKiBAcHJvcGVydHkgY29sb3IgLSBCdXR0b24gY29sb3IgKElvbmljIGNvbG9yIHN0cmluZykuXG4gKiBAcHJvcGVydHkgc2l6ZSAtIEJ1dHRvbiBzaXplICgnc21hbGwnIHwgJ2RlZmF1bHQnIHwgJ2xhcmdlJykuXG4gKiBAcHJvcGVydHkgZmlsbCAtIEJ1dHRvbiBmaWxsIHN0eWxlICgnY2xlYXInIHwgJ291dGxpbmUnIHwgJ3NvbGlkJyB8ICdkZWZhdWx0JykuXG4gKiBAcHJvcGVydHkgc2hhcGUgLSBCdXR0b24gc2hhcGUgKCdyb3VuZCcgfCB1bmRlZmluZWQpLlxuICogQHByb3BlcnR5IGV4cGFuZCAtIEJ1dHRvbiBleHBhbnNpb24gKCdmdWxsJyB8ICdibG9jaycgfCB1bmRlZmluZWQpLlxuICogQHByb3BlcnR5IGRpc2FibGVkIC0gV2hldGhlciB0aGUgc2VsZWN0b3IgaXMgZGlzYWJsZWQuXG4gKiBAcHJvcGVydHkgY3VzdG9tTGFuZ3VhZ2VOYW1lcyAtIEN1c3RvbSBkaXNwbGF5IG5hbWVzIGZvciBsYW5ndWFnZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIERpc3BsYXkgbW9kZSBmb3IgdGhlIHNlbGVjdG9yLlxuICAgKiAtICdkZWZhdWx0JzogRnVsbCBidXR0b24gd2l0aCBsYWJlbC9kcm9wZG93blxuICAgKiAtICdpY29uJzogQ29tcGFjdCBnbG9iZSBpY29uIG9ubHkgKGlkZWFsIGZvciBoZWFkZXJzL3Rvb2xiYXJzKVxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIG1vZGU/OiBMYW5ndWFnZVNlbGVjdG9yTW9kZTtcbiAgLyoqXG4gICAqIEljb24gbmFtZSBmb3IgaWNvbiBtb2RlLlxuICAgKiBAZGVmYXVsdCAnZ2xvYmUtb3V0bGluZSdcbiAgICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZSAqL1xuICBjdXJyZW50TGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIC8qKiBBcnJheSBvZiBhdmFpbGFibGUgbGFuZ3VhZ2UgY29kZXMgKi9cbiAgYXZhaWxhYmxlTGFuZ3VhZ2VzPzogc3RyaW5nW107XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGxhYmVsICovXG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG4gIC8qKiBTdGF0aWMgbGFiZWwgdGV4dCAodGFrZXMgcHJlY2VkZW5jZSBvdmVyIGxhYmVsQ29uZmlnKSAqL1xuICBsYWJlbD86IHN0cmluZztcbiAgLyoqIFJlYWN0aXZlIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgbGFiZWwgKi9cbiAgbGFiZWxDb25maWc/OiB7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGZhbGxiYWNrPzogc3RyaW5nO1xuICAgIGludGVycG9sYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB9O1xuICAvKiogV2hldGhlciB0byBzaG93IGZsYWcgaWNvbnMgZm9yIGxhbmd1YWdlcyAqL1xuICBzaG93RmxhZ3M/OiBib29sZWFuO1xuICAvKiogQnV0dG9uIGNvbG9yICovXG4gIGNvbG9yPzogQ29sb3I7XG4gIC8qKiBCdXR0b24gc2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JyB8ICdsYXJnZSc7XG4gIC8qKiBCdXR0b24gZmlsbCBzdHlsZSAqL1xuICBmaWxsPzogJ2NsZWFyJyB8ICdvdXRsaW5lJyB8ICdzb2xpZCcgfCAnZGVmYXVsdCc7XG4gIC8qKiBCdXR0b24gc2hhcGUgKi9cbiAgc2hhcGU/OiAncm91bmQnO1xuICAvKiogQnV0dG9uIGV4cGFuc2lvbiAqL1xuICBleHBhbmQ/OiAnZnVsbCcgfCAnYmxvY2snO1xuICAvKiogV2hldGhlciB0aGUgc2VsZWN0b3IgaXMgZGlzYWJsZWQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIGRpc3BsYXkgbmFtZXMgZm9yIGxhbmd1YWdlcyAqL1xuICBjdXN0b21MYW5ndWFnZU5hbWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEZvcmNlIHBhZ2UgcmVsb2FkIG9uIGxhbmd1YWdlIGNoYW5nZS5cbiAgICogQnkgZGVmYXVsdCAoZmFsc2UpLCBsYW5ndWFnZSBjaGFuZ2VzIGFyZSByZWFjdGl2ZSB3aXRob3V0IHJlbG9hZC5cbiAgICogU2V0IHRvIHRydWUgZm9yIGxlZ2FjeSBiZWhhdmlvciBvciBpZiByZWFjdGl2ZSB1cGRhdGVzIGRvbid0IHdvcmsuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmb3JjZVJlbG9hZD86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* Servicio principal para Google Ad Manager (GPT).
|
|
5
5
|
* Integra con el sistema de consent existente y respeta usuarios premium.
|
|
6
6
|
*/
|
|
7
|
-
import { Inject, Injectable, PLATFORM_ID, signal, computed } from '@angular/core';
|
|
7
|
+
import { Inject, Injectable, PLATFORM_ID, signal, computed, inject } from '@angular/core';
|
|
8
8
|
import { isPlatformBrowser } from '@angular/common';
|
|
9
9
|
import { NavigationEnd } from '@angular/router';
|
|
10
10
|
import { filter } from 'rxjs/operators';
|
|
11
11
|
import { VALTECH_ADS_CONFIG } from './config';
|
|
12
|
+
import { AuthStateService } from '../auth/auth-state.service';
|
|
12
13
|
import { AD_SIZE_MAP, } from './types';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
import * as i1 from "@angular/router";
|
|
@@ -45,9 +46,9 @@ export class AdsService {
|
|
|
45
46
|
// ===========================================================================
|
|
46
47
|
// ESTADO (Signals)
|
|
47
48
|
// ===========================================================================
|
|
49
|
+
this.authStateService = inject(AuthStateService);
|
|
48
50
|
this._isInitialized = signal(false);
|
|
49
51
|
this._isEnabled = signal(false);
|
|
50
|
-
this._isPremiumUser = signal(false);
|
|
51
52
|
this._isDebugMode = signal(false);
|
|
52
53
|
this._slots = signal(new Map());
|
|
53
54
|
this._slotStates = signal(new Map());
|
|
@@ -58,11 +59,11 @@ export class AdsService {
|
|
|
58
59
|
this.isEnabled = computed(() => {
|
|
59
60
|
return (this._isInitialized() &&
|
|
60
61
|
this._isEnabled() &&
|
|
61
|
-
!this.
|
|
62
|
+
!this.authStateService.isPremium() &&
|
|
62
63
|
this.consentService.canShowAds());
|
|
63
64
|
});
|
|
64
|
-
/** Indica si el usuario es premium (no ve ads) */
|
|
65
|
-
this.isPremiumUser = this.
|
|
65
|
+
/** Indica si el usuario es premium (no ve ads) - lee de AuthStateService */
|
|
66
|
+
this.isPremiumUser = this.authStateService.isPremium;
|
|
66
67
|
/** Indica si esta en modo debug */
|
|
67
68
|
this.isDebugMode = this._isDebugMode.asReadonly();
|
|
68
69
|
/** Estado de consent para ads */
|
|
@@ -89,17 +90,8 @@ export class AdsService {
|
|
|
89
90
|
if (!isPlatformBrowser(this.platformId)) {
|
|
90
91
|
return;
|
|
91
92
|
}
|
|
92
|
-
//
|
|
93
|
-
if (this.
|
|
94
|
-
try {
|
|
95
|
-
this._isPremiumUser.set(this.config.isPremiumUser());
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
this._isPremiumUser.set(false);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// Si es premium, no inicializar ads
|
|
102
|
-
if (this._isPremiumUser()) {
|
|
93
|
+
// Si es premium, no inicializar ads (lee de AuthStateService)
|
|
94
|
+
if (this.authStateService.isPremium()) {
|
|
103
95
|
if (this._isDebugMode()) {
|
|
104
96
|
console.log('[ValtechAds] Usuario premium detectado - ads deshabilitados');
|
|
105
97
|
}
|
|
@@ -285,32 +277,11 @@ export class AdsService {
|
|
|
285
277
|
return this._slotStates().get(slotId) ?? 'idle';
|
|
286
278
|
}
|
|
287
279
|
// ===========================================================================
|
|
288
|
-
//
|
|
280
|
+
// SLOT CLEANUP
|
|
289
281
|
// ===========================================================================
|
|
290
|
-
/**
|
|
291
|
-
* Actualiza el estado premium del usuario.
|
|
292
|
-
* Llamar cuando cambie el estado de suscripcion.
|
|
293
|
-
*
|
|
294
|
-
* @param isPremium - Nuevo estado premium
|
|
295
|
-
*/
|
|
296
|
-
updatePremiumStatus(isPremium) {
|
|
297
|
-
const wasEnabled = this.isEnabled();
|
|
298
|
-
this._isPremiumUser.set(isPremium);
|
|
299
|
-
if (isPremium && wasEnabled) {
|
|
300
|
-
// Destruir todos los slots activos
|
|
301
|
-
this.destroyAllSlots();
|
|
302
|
-
if (this._isDebugMode()) {
|
|
303
|
-
console.log('[ValtechAds] Usuario ahora es premium - ads deshabilitados');
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
else if (!isPremium && !wasEnabled && this._isInitialized()) {
|
|
307
|
-
if (this._isDebugMode()) {
|
|
308
|
-
console.log('[ValtechAds] Usuario ya no es premium - ads habilitados');
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
282
|
/**
|
|
313
283
|
* Destruye todos los slots activos.
|
|
284
|
+
* Llamar cuando el usuario se vuelve premium o cambia de página.
|
|
314
285
|
*/
|
|
315
286
|
destroyAllSlots() {
|
|
316
287
|
const googletag = window.googletag;
|
|
@@ -446,4 +417,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
446
417
|
type: Inject,
|
|
447
418
|
args: [PLATFORM_ID]
|
|
448
419
|
}] }, { type: i1.Router }, { type: i2.AdsLoaderService }, { type: i3.AdsConsentService }] });
|
|
449
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Fkcy9hZHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBVSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlDLE9BQU8sRUFRTCxXQUFXLEdBRVosTUFBTSxTQUFTLENBQUM7Ozs7O0FBRWpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUE4Q3JCLFlBQ1UsUUFBa0IsRUFDVSxNQUF3QixFQUMvQixVQUFrQixFQUN2QyxNQUFjLEVBQ2QsYUFBK0IsRUFDL0IsY0FBaUM7UUFMakMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNVLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFuRDNDLDhFQUE4RTtRQUM5RSxtQkFBbUI7UUFDbkIsOEVBQThFO1FBRTdELG1CQUFjLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDcEMsbUJBQWMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFD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QUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLFlBQVk7SUFDWiw4RUFBOEU7SUFFOUUsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDOytHQW5kVSxVQUFVLDBDQWdEWCxrQkFBa0IsYUFDbEIsV0FBVzttSEFqRFYsVUFBVSxjQURHLE1BQU07OzRGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBaUQ3QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWRzIFNlcnZpY2VcbiAqXG4gKiBTZXJ2aWNpbyBwcmluY2lwYWwgcGFyYSBHb29nbGUgQWQgTWFuYWdlciAoR1BUKS5cbiAqIEludGVncmEgY29uIGVsIHNpc3RlbWEgZGUgY29uc2VudCBleGlzdGVudGUgeSByZXNwZXRhIHVzdWFyaW9zIHByZW1pdW0uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgUExBVEZPUk1fSUQsIHNpZ25hbCwgY29tcHV0ZWQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0FEU19DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBZHNMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZHMtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRzQ29uc2VudFNlcnZpY2UgfSBmcm9tICcuL2Fkcy1jb25zZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVmFsdGVjaEFkc0NvbmZpZyxcbiAgQWRTbG90Q29uZmlnLFxuICBBZFNsb3RTdGF0ZSxcbiAgQWRFdmVudCxcbiAgR1BUU2xvdCxcbiAgR1BUTmFtZXNwYWNlLFxuICBTaXplTWFwcGluZyxcbiAgQURfU0laRV9NQVAsXG4gIEFkU2xvdFNpemUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHByaW5jaXBhbCBkZSBHb29nbGUgQWQgTWFuYWdlci5cbiAqXG4gKiBNYW5lamEgbGEgY3JlYWNpb24sIGRlc3RydWNjaW9uIHkgcmVmcmVzaCBkZSBhZCBzbG90cy5cbiAqIEludGVncmEgYXV0b21hdGljYW1lbnRlIGNvbiBjb25zZW50IG1vZGUgeSBkZXRlY3RhIHVzdWFyaW9zIHByZW1pdW0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBwcml2YXRlIGFkcyA9IGluamVjdChBZHNTZXJ2aWNlKTtcbiAqXG4gKiAgIC8vIFZlcmlmaWNhciBzaSBtb3N0cmFyIGFkc1xuICogICBzaG93QWRzID0gdGhpcy5hZHMuaXNFbmFibGVkO1xuICpcbiAqICAgLy8gVmVyaWZpY2FyIHNpIHVzdWFyaW8gZXMgcHJlbWl1bVxuICogICBpc1ByZW1pdW0gPSB0aGlzLmFkcy5pc1ByZW1pdW1Vc2VyO1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQWRzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBFU1RBRE8gKFNpZ25hbHMpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzSW5pdGlhbGl6ZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0VuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ByZW1pdW1Vc2VyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNEZWJ1Z01vZGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zbG90cyA9IHNpZ25hbDxNYXA8c3RyaW5nLCBHUFRTbG90Pj4obmV3IE1hcCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2xvdFN0YXRlcyA9IHNpZ25hbDxNYXA8c3RyaW5nLCBBZFNsb3RTdGF0ZT4+KG5ldyBNYXAoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50cyA9IHNpZ25hbDxBZEV2ZW50W10+KFtdKTtcblxuICAvKiogSW5kaWNhIHNpIGVsIHNlcnZpY2lvIGVzdGEgaW5pY2lhbGl6YWRvICovXG4gIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWQgPSB0aGlzLl9pc0luaXRpYWxpemVkLmFzUmVhZG9ubHkoKTtcblxuICAvKiogSW5kaWNhIHNpIGxvcyBhZHMgZXN0YW4gaGFiaWxpdGFkb3MgKGNvbnNlbnQgKyBubyBwcmVtaXVtKSAqL1xuICByZWFkb25seSBpc0VuYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQoKSAmJlxuICAgICAgdGhpcy5faXNFbmFibGVkKCkgJiZcbiAgICAgICF0aGlzLl9pc1ByZW1pdW1Vc2VyKCkgJiZcbiAgICAgIHRoaXMuY29uc2VudFNlcnZpY2UuY2FuU2hvd0FkcygpXG4gICAgKTtcbiAgfSk7XG5cbiAgLyoqIEluZGljYSBzaSBlbCB1c3VhcmlvIGVzIHByZW1pdW0gKG5vIHZlIGFkcykgKi9cbiAgcmVhZG9ubHkgaXNQcmVtaXVtVXNlciA9IHRoaXMuX2lzUHJlbWl1bVVzZXIuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgZXN0YSBlbiBtb2RvIGRlYnVnICovXG4gIHJlYWRvbmx5IGlzRGVidWdNb2RlID0gdGhpcy5faXNEZWJ1Z01vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBFc3RhZG8gZGUgY29uc2VudCBwYXJhIGFkcyAqL1xuICByZWFkb25seSBjb25zZW50U3RhdGUgPSB0aGlzLmNvbnNlbnRTZXJ2aWNlLmFkc0NvbnNlbnRTdGF0ZTtcblxuICAvKiogRXZlbnRvcyBkZSBhZHMgKGhpc3RvcmlhbCkgKi9cbiAgcmVhZG9ubHkgZXZlbnRzID0gdGhpcy5fZXZlbnRzLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSU5URVJOT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBhY3RpdmVTbG90czogTWFwPHN0cmluZywgR1BUU2xvdD4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWZyZXNoVGltZXJJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChWQUxURUNIX0FEU19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQWRzQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBsb2FkZXJTZXJ2aWNlOiBBZHNMb2FkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uc2VudFNlcnZpY2U6IEFkc0NvbnNlbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuX2lzRGVidWdNb2RlLnNldChjb25maWcuZGVidWdNb2RlID8/IGZhbHNlKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0lPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBlbCBzZXJ2aWNpbyBkZSBhZHMuXG4gICAqIExsYW1hZG8gYXV0b21hdGljYW1lbnRlIHBvciBBUFBfSU5JVElBTElaRVIuXG4gICAqIE5PIGNhcmdhIGVsIHNjcmlwdCBHUFQgaGFzdGEgcXVlIHNlIG5lY2VzaXRlIGVsIHByaW1lciBhZC5cbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY2FyIHNpIHVzdWFyaW8gZXMgcHJlbWl1bVxuICAgIGlmICh0aGlzLmNvbmZpZy5pc1ByZW1pdW1Vc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLl9pc1ByZW1pdW1Vc2VyLnNldCh0aGlzLmNvbmZpZy5pc1ByZW1pdW1Vc2VyKCkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMuX2lzUHJlbWl1bVVzZXIuc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaSBlcyBwcmVtaXVtLCBubyBpbmljaWFsaXphciBhZHNcbiAgICBpZiAodGhpcy5faXNQcmVtaXVtVXNlcigpKSB7XG4gICAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgICBjb25zb2xlLmxvZygnW1ZhbHRlY2hBZHNdIFVzdWFyaW8gcHJlbWl1bSBkZXRlY3RhZG8gLSBhZHMgZGVzaGFiaWxpdGFkb3MnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNhciBjb25zZW50IGJhc2ljb1xuICAgIGlmICghdGhpcy5jb25zZW50U2VydmljZS5jYW5TaG93QWRzKCkgJiYgIXRoaXMuY29uZmlnLnNob3dOb25QZXJzb25hbGl6ZWRBZHMpIHtcbiAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbVmFsdGVjaEFkc10gU2luIGNvbnNlbnQgcGFyYSBhZHMnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN1c2NyaWJpcnNlIGEgY2FtYmlvcyBkZSBydXRhIHBhcmEgdmVyaWZpY2FyIGV4Y2x1c2lvbmVzXG4gICAgdGhpcy5zZXR1cFJvdXRlTGlzdGVuZXIoKTtcblxuICAgIC8vIENvbmZpZ3VyYXIgYXV0by1yZWZyZXNoIHNpIGVzdGEgaGFiaWxpdGFkb1xuICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaEludGVydmFsICYmIHRoaXMuY29uZmlnLmF1dG9SZWZyZXNoSW50ZXJ2YWwgPiAwKSB7XG4gICAgICB0aGlzLnNldHVwQXV0b1JlZnJlc2goKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0VuYWJsZWQuc2V0KHRydWUpO1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVmFsdGVjaEFkc10gSW5pY2lhbGl6YWRvIGVuIG1vZG8gZGVidWcnLCB7XG4gICAgICAgIG5ldHdvcmtJZDogdGhpcy5jb25maWcubmV0d29ya0lkLFxuICAgICAgICBsYXp5TG9hZDogdGhpcy5jb25maWcubGF6eUxvYWQsXG4gICAgICAgIGV4Y2x1ZGVSb3V0ZXM6IHRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FyZ2EgZWwgc2NyaXB0IEdQVCBkZSBmb3JtYSBsYXp5LlxuICAgKiBMbGFtYWRvIGF1dG9tYXRpY2FtZW50ZSBjdWFuZG8gc2UgcmVuZGVyaXphIGVsIHByaW1lciBhZCBzbG90LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlR1BUTG9hZGVkKCk6IFByb21pc2U8R1BUTmFtZXNwYWNlIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZGVyU2VydmljZS5sb2FkR1BUKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gR0VTVElPTiBERSBTTE9UU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRGVmaW5lIHkgbXVlc3RyYSB1biBhZCBzbG90LlxuICAgKiBMbGFtYWRvIGludGVybmFtZW50ZSBwb3IgZWwgY29tcG9uZW50ZSBBZFNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmFjaW9uIGRlbCBzbG90XG4gICAqIEByZXR1cm5zIElEIGRlbCBzbG90IG8gbnVsbCBzaSBubyBzZSBwdWVkZSBtb3N0cmFyXG4gICAqL1xuICBhc3luYyBkZWZpbmVTbG90KGNvbmZpZzogQWRTbG90Q29uZmlnKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNsb3RTdGF0ZShjb25maWcuc2xvdElkLCAnaGlkZGVuJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljYXIgc2kgbGEgcnV0YSBhY3R1YWwgZXN0YSBleGNsdWlkYVxuICAgIGlmICh0aGlzLmlzUm91dGVFeGNsdWRlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNsb3RTdGF0ZShjb25maWcuc2xvdElkLCAnaGlkZGVuJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNsb3RTdGF0ZShjb25maWcuc2xvdElkLCAnbG9hZGluZycpO1xuXG4gICAgY29uc3QgZ29vZ2xldGFnID0gYXdhaXQgdGhpcy5lbnN1cmVHUFRMb2FkZWQoKTtcbiAgICBpZiAoIWdvb2dsZXRhZykge1xuICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ2Vycm9yJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYWRVbml0UGF0aCA9IGAke3RoaXMuY29uZmlnLm5ldHdvcmtJZH0ke2NvbmZpZy5hZFVuaXRQYXRofWA7XG4gICAgICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnJlc29sdmVTaXplcyhjb25maWcuc2l6ZSk7XG5cbiAgICAgICAgICBjb25zdCBzbG90ID0gZ29vZ2xldGFnLmRlZmluZVNsb3QoYWRVbml0UGF0aCwgc2l6ZXMsIGNvbmZpZy5zbG90SWQpO1xuICAgICAgICAgIGlmICghc2xvdCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRFdmVudCh7IHR5cGU6ICdlcnJvcicsIHNsb3RJZDogY29uZmlnLnNsb3RJZCwgZXJyb3I6IG5ldyBFcnJvcignTm8gc2UgcHVkbyBjcmVhciBlbCBzbG90JykgfSk7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFncmVnYXIgYWwgc2VydmljaW8gcHViYWRzXG4gICAgICAgICAgc2xvdC5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSk7XG5cbiAgICAgICAgICAvLyBDb25maWd1cmFyIHNpemUgbWFwcGluZyByZXNwb25zaXZvXG4gICAgICAgICAgaWYgKGNvbmZpZy5zaXplTWFwcGluZyAmJiBjb25maWcuc2l6ZU1hcHBpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWFwcGluZyA9IHRoaXMuYnVpbGRTaXplTWFwcGluZyhnb29nbGV0YWcsIGNvbmZpZy5zaXplTWFwcGluZyk7XG4gICAgICAgICAgICBzbG90LmRlZmluZVNpemVNYXBwaW5nKG1hcHBpbmcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbmZpZ3VyYXIgdGFyZ2V0aW5nXG4gICAgICAgICAgdGhpcy5hcHBseVRhcmdldGluZyhzbG90LCBjb25maWcudGFyZ2V0aW5nKTtcblxuICAgICAgICAgIC8vIENvbGFwc2FyIHNpIGVzdGEgdmFjaW9cbiAgICAgICAgICBpZiAoY29uZmlnLmNvbGxhcHNlRW1wdHkgPz8gdGhpcy5jb25maWcuZGVmYXVsdFNsb3RDb25maWc/LmNvbGxhcHNlRW1wdHkpIHtcbiAgICAgICAgICAgIHNsb3Quc2V0Q29sbGFwc2VFbXB0eURpdih0cnVlLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHdWFyZGFyIHJlZmVyZW5jaWFcbiAgICAgICAgICB0aGlzLmFjdGl2ZVNsb3RzLnNldChjb25maWcuc2xvdElkLCBzbG90KTtcbiAgICAgICAgICB0aGlzLl9zbG90cy51cGRhdGUoKHNsb3RzKSA9PiBuZXcgTWFwKHNsb3RzKS5zZXQoY29uZmlnLnNsb3RJZCwgc2xvdCkpO1xuXG4gICAgICAgICAgLy8gTW9zdHJhciBlbCBhZFxuICAgICAgICAgIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpO1xuICAgICAgICAgIGdvb2dsZXRhZy5kaXNwbGF5KGNvbmZpZy5zbG90SWQpO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ3JlbmRlcmVkJyk7XG4gICAgICAgICAgdGhpcy5lbWl0RXZlbnQoeyB0eXBlOiAnbG9hZGVkJywgc2xvdElkOiBjb25maWcuc2xvdElkLCBpc0VtcHR5OiBmYWxzZSB9KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3QgZGVmaW5pZG86ICR7Y29uZmlnLnNsb3RJZH1gLCB7XG4gICAgICAgICAgICAgIGFkVW5pdFBhdGgsXG4gICAgICAgICAgICAgIHNpemVzOiBjb25maWcuc2l6ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUoY29uZmlnLnNsb3RJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1ZhbHRlY2hBZHNdIEVycm9yIGRlZmluaWVuZG8gc2xvdDonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5lbWl0RXZlbnQoeyB0eXBlOiAnZXJyb3InLCBzbG90SWQ6IGNvbmZpZy5zbG90SWQsIGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cnV5ZSB1biBzbG90IHkgbGliZXJhIHJlY3Vyc29zLlxuICAgKlxuICAgKiBAcGFyYW0gc2xvdElkIC0gSUQgZGVsIHNsb3QgYSBkZXN0cnVpclxuICAgKi9cbiAgZGVzdHJveVNsb3Qoc2xvdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzbG90ID0gdGhpcy5hY3RpdmVTbG90cy5nZXQoc2xvdElkKTtcbiAgICBpZiAoIXNsb3QpIHJldHVybjtcblxuICAgIGNvbnN0IGdvb2dsZXRhZyA9IHdpbmRvdy5nb29nbGV0YWc7XG4gICAgaWYgKGdvb2dsZXRhZykge1xuICAgICAgZ29vZ2xldGFnLmNtZC5wdXNoKCgpID0+IHtcbiAgICAgICAgZ29vZ2xldGFnLmRlc3Ryb3lTbG90cyhbc2xvdF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVTbG90cy5kZWxldGUoc2xvdElkKTtcbiAgICB0aGlzLl9zbG90cy51cGRhdGUoKHNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBuZXdTbG90cyA9IG5ldyBNYXAoc2xvdHMpO1xuICAgICAgbmV3U2xvdHMuZGVsZXRlKHNsb3RJZCk7XG4gICAgICByZXR1cm4gbmV3U2xvdHM7XG4gICAgfSk7XG4gICAgdGhpcy5fc2xvdFN0YXRlcy51cGRhdGUoKHN0YXRlcykgPT4ge1xuICAgICAgY29uc3QgbmV3U3RhdGVzID0gbmV3IE1hcChzdGF0ZXMpO1xuICAgICAgbmV3U3RhdGVzLmRlbGV0ZShzbG90SWQpO1xuICAgICAgcmV0dXJuIG5ld1N0YXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3QgZGVzdHJ1aWRvOiAke3Nsb3RJZH1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzY2EgdW4gc2xvdCBlc3BlY2lmaWNvIG8gdG9kb3MgbG9zIHNsb3RzIGFjdGl2b3MuXG4gICAqXG4gICAqIEBwYXJhbSBzbG90SWRzIC0gSURzIGRlIHNsb3RzIGEgcmVmcmVzY2FyICh1bmRlZmluZWQgPSB0b2RvcylcbiAgICovXG4gIHJlZnJlc2hTbG90cyhzbG90SWRzPzogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkKCkpIHJldHVybjtcblxuICAgIGNvbnN0IGdvb2dsZXRhZyA9IHdpbmRvdy5nb29nbGV0YWc7XG4gICAgaWYgKCFnb29nbGV0YWcpIHJldHVybjtcblxuICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XG4gICAgICBpZiAoc2xvdElkcyAmJiBzbG90SWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2xvdHMgPSBzbG90SWRzLm1hcCgoaWQpID0+IHRoaXMuYWN0aXZlU2xvdHMuZ2V0KGlkKSkuZmlsdGVyKChzKTogcyBpcyBHUFRTbG90ID0+ICEhcyk7XG4gICAgICAgIGlmIChzbG90cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnJlZnJlc2goc2xvdHMpO1xuICAgICAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3RzIHJlZnJlc2NhZG9zOiAke3Nsb3RJZHMuam9pbignLCAnKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5yZWZyZXNoKCk7XG4gICAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tWYWx0ZWNoQWRzXSBUb2RvcyBsb3Mgc2xvdHMgcmVmcmVzY2Fkb3MnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZXN0YWRvIGRlIHVuIHNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBzbG90SWQgLSBJRCBkZWwgc2xvdFxuICAgKiBAcmV0dXJucyBFc3RhZG8gYWN0dWFsIGRlbCBzbG90XG4gICAqL1xuICBnZXRTbG90U3RhdGUoc2xvdElkOiBzdHJpbmcpOiBBZFNsb3RTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nsb3RTdGF0ZXMoKS5nZXQoc2xvdElkKSA/PyAnaWRsZSc7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJFTUlVTSBVU0VSXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIHByZW1pdW0gZGVsIHVzdWFyaW8uXG4gICAqIExsYW1hciBjdWFuZG8gY2FtYmllIGVsIGVzdGFkbyBkZSBzdXNjcmlwY2lvbi5cbiAgICpcbiAgICogQHBhcmFtIGlzUHJlbWl1bSAtIE51ZXZvIGVzdGFkbyBwcmVtaXVtXG4gICAqL1xuICB1cGRhdGVQcmVtaXVtU3RhdHVzKGlzUHJlbWl1bTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHdhc0VuYWJsZWQgPSB0aGlzLmlzRW5hYmxlZCgpO1xuICAgIHRoaXMuX2lzUHJlbWl1bVVzZXIuc2V0KGlzUHJlbWl1bSk7XG5cbiAgICBpZiAoaXNQcmVtaXVtICYmIHdhc0VuYWJsZWQpIHtcbiAgICAgIC8vIERlc3RydWlyIHRvZG9zIGxvcyBzbG90cyBhY3Rpdm9zXG4gICAgICB0aGlzLmRlc3Ryb3lBbGxTbG90cygpO1xuICAgICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tWYWx0ZWNoQWRzXSBVc3VhcmlvIGFob3JhIGVzIHByZW1pdW0gLSBhZHMgZGVzaGFiaWxpdGFkb3MnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1ByZW1pdW0gJiYgIXdhc0VuYWJsZWQgJiYgdGhpcy5faXNJbml0aWFsaXplZCgpKSB7XG4gICAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgICBjb25zb2xlLmxvZygnW1ZhbHRlY2hBZHNdIFVzdWFyaW8geWEgbm8gZXMgcHJlbWl1bSAtIGFkcyBoYWJpbGl0YWRvcycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cnV5ZSB0b2RvcyBsb3Mgc2xvdHMgYWN0aXZvcy5cbiAgICovXG4gIGRlc3Ryb3lBbGxTbG90cygpOiB2b2lkIHtcbiAgICBjb25zdCBnb29nbGV0YWcgPSB3aW5kb3cuZ29vZ2xldGFnO1xuICAgIGlmIChnb29nbGV0YWcpIHtcbiAgICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XG4gICAgICAgIGdvb2dsZXRhZy5kZXN0cm95U2xvdHMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZVNsb3RzLmNsZWFyKCk7XG4gICAgdGhpcy5fc2xvdHMuc2V0KG5ldyBNYXAoKSk7XG4gICAgdGhpcy5fc2xvdFN0YXRlcy5zZXQobmV3IE1hcCgpKTtcblxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1ZhbHRlY2hBZHNdIFRvZG9zIGxvcyBzbG90cyBkZXN0cnVpZG9zJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlc29sdmVTaXplcyhzaXplOiBBZFNsb3RDb25maWdbJ3NpemUnXSk6IHVua25vd24ge1xuICAgIGlmICh0eXBlb2Ygc2l6ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFNpbmdsZSBwcmVzZXQgc2l6ZVxuICAgICAgY29uc3QgbWFwcGVkID0gQURfU0laRV9NQVBbc2l6ZSBhcyBBZFNsb3RTaXplXTtcbiAgICAgIHJldHVybiBtYXBwZWQgPT09ICdmbHVpZCcgPyAnZmx1aWQnIDogW21hcHBlZF07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2l6ZSkpIHtcbiAgICAgIGlmICh0eXBlb2Ygc2l6ZVswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gQXJyYXkgb2YgcHJlc2V0IHNpemVzXG4gICAgICAgIHJldHVybiAoc2l6ZSBhcyBBZFNsb3RTaXplW10pLm1hcCgocykgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IEFEX1NJWkVfTUFQW3NdO1xuICAgICAgICAgIHJldHVybiBtYXBwZWQgPT09ICdmbHVpZCcgPyAnZmx1aWQnIDogbWFwcGVkO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIERpcmVjdCBzaXplIGFycmF5XG4gICAgICByZXR1cm4gc2l6ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2ZsdWlkJztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTaXplTWFwcGluZyhnb29nbGV0YWc6IEdQVE5hbWVzcGFjZSwgbWFwcGluZzogU2l6ZU1hcHBpbmdbXSk6IHVua25vd24ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBnb29nbGV0YWcuc2l6ZU1hcHBpbmcoKTtcblxuICAgIC8vIE9yZGVuYXIgcG9yIHZpZXdwb3J0IGRlc2NlbmRlbnRlXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLm1hcHBpbmddLnNvcnQoKGEsIGIpID0+IGIudmlld3BvcnRXaWR0aCAtIGEudmlld3BvcnRXaWR0aCk7XG5cbiAgICBmb3IgKGNvbnN0IG0gb2Ygc29ydGVkKSB7XG4gICAgICBidWlsZGVyLmFkZFNpemUoW20udmlld3BvcnRXaWR0aCwgMF0sIG0uc2l6ZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VGFyZ2V0aW5nKHNsb3Q6IEdQVFNsb3QsIHRhcmdldGluZz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPik6IHZvaWQge1xuICAgIC8vIEFwbGljYXIgdGFyZ2V0aW5nIGdsb2JhbFxuICAgIGlmICh0aGlzLmNvbmZpZy5nbG9iYWxUYXJnZXRpbmcpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLmdsb2JhbFRhcmdldGluZykpIHtcbiAgICAgICAgc2xvdC5zZXRUYXJnZXRpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXBsaWNhciB0YXJnZXRpbmcgZGVsIHNsb3RcbiAgICBpZiAodGFyZ2V0aW5nKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0YXJnZXRpbmcpKSB7XG4gICAgICAgIHNsb3Quc2V0VGFyZ2V0aW5nKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFncmVnYXIgdGFyZ2V0aW5nIGRlIGRlYnVnIHNpIGVzdGEgaGFiaWxpdGFkb1xuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBzbG90LnNldFRhcmdldGluZygndGVzdCcsICd0cnVlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTbG90U3RhdGUoc2xvdElkOiBzdHJpbmcsIHN0YXRlOiBBZFNsb3RTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX3Nsb3RTdGF0ZXMudXBkYXRlKChzdGF0ZXMpID0+IG5ldyBNYXAoc3RhdGVzKS5zZXQoc2xvdElkLCBzdGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RXZlbnQoZXZlbnQ6IE9taXQ8QWRFdmVudCwgJ3RpbWVzdGFtcCc+KTogdm9pZCB7XG4gICAgY29uc3QgZnVsbEV2ZW50OiBBZEV2ZW50ID0geyAuLi5ldmVudCwgdGltZXN0YW1wOiBuZXcgRGF0ZSgpIH07XG4gICAgdGhpcy5fZXZlbnRzLnVwZGF0ZSgoZXZlbnRzKSA9PiBbLi4uZXZlbnRzLnNsaWNlKC05OSksIGZ1bGxFdmVudF0pO1xuXG4gICAgLy8gQ2FsbGJhY2tzIGRlIGNvbmZpZ3VyYWNpb25cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2xvYWRlZCcgfHwgZXZlbnQudHlwZSA9PT0gJ2VtcHR5Jykge1xuICAgICAgdGhpcy5jb25maWcub25BZExvYWRlZD8uKGV2ZW50LnNsb3RJZCwgZXZlbnQuaXNFbXB0eSA/PyBmYWxzZSk7XG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnZXJyb3InICYmIGV2ZW50LmVycm9yKSB7XG4gICAgICB0aGlzLmNvbmZpZy5vbkFkRXJyb3I/LihldmVudC5zbG90SWQsIGV2ZW50LmVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwUm91dGVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMgfHwgdGhpcy5jb25maWcuZXhjbHVkZVJvdXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25FbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IHNob3VsZEhpZGUgPSB0aGlzLmlzUm91dGVFeGNsdWRlZChldmVudC51cmxBZnRlclJlZGlyZWN0cyk7XG5cbiAgICAgICAgaWYgKHNob3VsZEhpZGUpIHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3lBbGxTbG90cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBBdXRvUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnRlcnZhbE1zID0gKHRoaXMuY29uZmlnLmF1dG9SZWZyZXNoSW50ZXJ2YWwgPz8gMCkgKiAxMDAwO1xuICAgIGlmIChpbnRlcnZhbE1zIDw9IDApIHJldHVybjtcblxuICAgIHRoaXMucmVmcmVzaFRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0VuYWJsZWQoKSAmJiB0aGlzLmFjdGl2ZVNsb3RzLnNpemUgPiAwKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaFNsb3RzKCk7XG4gICAgICB9XG4gICAgfSwgaW50ZXJ2YWxNcyk7XG4gIH1cblxuICBwcml2YXRlIGlzUm91dGVFeGNsdWRlZCh1cmw/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMgfHwgdGhpcy5jb25maWcuZXhjbHVkZVJvdXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VXJsID0gdXJsID8/IHRoaXMucm91dGVyLnVybDtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZXhjbHVkZVJvdXRlcy5zb21lKChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocGF0dGVybik7XG4gICAgICByZXR1cm4gcmVnZXgudGVzdChjdXJyZW50VXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMSUZFQ1lDTEVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAodGhpcy5yZWZyZXNoVGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnJlZnJlc2hUaW1lcklkKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3Ryb3lBbGxTbG90cygpO1xuICAgIHRoaXMuY29uc2VudFNlcnZpY2UuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
|
420
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Fkcy9hZHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBUUwsV0FBVyxHQUVaLE1BQU0sU0FBUyxDQUFDOzs7OztBQUVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE1BQU0sT0FBTyxVQUFVO0lBOENyQixZQUNVLFFBQWtCLEVBQ1UsTUFBd0IsRUFDL0IsVUFBa0IsRUFDdkMsTUFBYyxFQUNkLGFBQStCLEVBQy9CLGNBQWlDO1FBTGpDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDVSxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbkQzQyw4RUFBOEU7UUFDOUUsbUJBQW1CO1FBQ25CLDhFQUE4RTtRQUU3RCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLE1B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QyxHQUFZO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxZQUFZO0lBQ1osOEVBQThFO0lBRTlFLFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFdkMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQzsrR0FwYlUsVUFBVSwwQ0FnRFgsa0JBQWtCLGFBQ2xCLFdBQVc7bUhBakRWLFVBQVUsY0FERyxNQUFNOzs0RkFDbkIsVUFBVTtrQkFEdEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWlEN0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFkcyBTZXJ2aWNlXG4gKlxuICogU2VydmljaW8gcHJpbmNpcGFsIHBhcmEgR29vZ2xlIEFkIE1hbmFnZXIgKEdQVCkuXG4gKiBJbnRlZ3JhIGNvbiBlbCBzaXN0ZW1hIGRlIGNvbnNlbnQgZXhpc3RlbnRlIHkgcmVzcGV0YSB1c3VhcmlvcyBwcmVtaXVtLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFBMQVRGT1JNX0lELCBzaWduYWwsIGNvbXB1dGVkLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0FEU19DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBZHNMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hZHMtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRzQ29uc2VudFNlcnZpY2UgfSBmcm9tICcuL2Fkcy1jb25zZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFZhbHRlY2hBZHNDb25maWcsXG4gIEFkU2xvdENvbmZpZyxcbiAgQWRTbG90U3RhdGUsXG4gIEFkRXZlbnQsXG4gIEdQVFNsb3QsXG4gIEdQVE5hbWVzcGFjZSxcbiAgU2l6ZU1hcHBpbmcsXG4gIEFEX1NJWkVfTUFQLFxuICBBZFNsb3RTaXplLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwcmluY2lwYWwgZGUgR29vZ2xlIEFkIE1hbmFnZXIuXG4gKlxuICogTWFuZWphIGxhIGNyZWFjaW9uLCBkZXN0cnVjY2lvbiB5IHJlZnJlc2ggZGUgYWQgc2xvdHMuXG4gKiBJbnRlZ3JhIGF1dG9tYXRpY2FtZW50ZSBjb24gY29uc2VudCBtb2RlIHkgZGV0ZWN0YSB1c3VhcmlvcyBwcmVtaXVtLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhZHMgPSBpbmplY3QoQWRzU2VydmljZSk7XG4gKlxuICogICAvLyBWZXJpZmljYXIgc2kgbW9zdHJhciBhZHNcbiAqICAgc2hvd0FkcyA9IHRoaXMuYWRzLmlzRW5hYmxlZDtcbiAqXG4gKiAgIC8vIFZlcmlmaWNhciBzaSB1c3VhcmlvIGVzIHByZW1pdW1cbiAqICAgaXNQcmVtaXVtID0gdGhpcy5hZHMuaXNQcmVtaXVtVXNlcjtcbiAqIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFkc1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVNUQURPIChTaWduYWxzKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZVNlcnZpY2UgPSBpbmplY3QoQXV0aFN0YXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzSW5pdGlhbGl6ZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0VuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RlYnVnTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nsb3RzID0gc2lnbmFsPE1hcDxzdHJpbmcsIEdQVFNsb3Q+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zbG90U3RhdGVzID0gc2lnbmFsPE1hcDxzdHJpbmcsIEFkU2xvdFN0YXRlPj4obmV3IE1hcCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRzID0gc2lnbmFsPEFkRXZlbnRbXT4oW10pO1xuXG4gIC8qKiBJbmRpY2Egc2kgZWwgc2VydmljaW8gZXN0YSBpbmljaWFsaXphZG8gKi9cbiAgcmVhZG9ubHkgaXNJbml0aWFsaXplZCA9IHRoaXMuX2lzSW5pdGlhbGl6ZWQuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBJbmRpY2Egc2kgbG9zIGFkcyBlc3RhbiBoYWJpbGl0YWRvcyAoY29uc2VudCArIG5vIHByZW1pdW0pICovXG4gIHJlYWRvbmx5IGlzRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5faXNJbml0aWFsaXplZCgpICYmXG4gICAgICB0aGlzLl9pc0VuYWJsZWQoKSAmJlxuICAgICAgIXRoaXMuYXV0aFN0YXRlU2VydmljZS5pc1ByZW1pdW0oKSAmJlxuICAgICAgdGhpcy5jb25zZW50U2VydmljZS5jYW5TaG93QWRzKClcbiAgICApO1xuICB9KTtcblxuICAvKiogSW5kaWNhIHNpIGVsIHVzdWFyaW8gZXMgcHJlbWl1bSAobm8gdmUgYWRzKSAtIGxlZSBkZSBBdXRoU3RhdGVTZXJ2aWNlICovXG4gIHJlYWRvbmx5IGlzUHJlbWl1bVVzZXIgPSB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuaXNQcmVtaXVtO1xuXG4gIC8qKiBJbmRpY2Egc2kgZXN0YSBlbiBtb2RvIGRlYnVnICovXG4gIHJlYWRvbmx5IGlzRGVidWdNb2RlID0gdGhpcy5faXNEZWJ1Z01vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBFc3RhZG8gZGUgY29uc2VudCBwYXJhIGFkcyAqL1xuICByZWFkb25seSBjb25zZW50U3RhdGUgPSB0aGlzLmNvbnNlbnRTZXJ2aWNlLmFkc0NvbnNlbnRTdGF0ZTtcblxuICAvKiogRXZlbnRvcyBkZSBhZHMgKGhpc3RvcmlhbCkgKi9cbiAgcmVhZG9ubHkgZXZlbnRzID0gdGhpcy5fZXZlbnRzLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSU5URVJOT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBhY3RpdmVTbG90czogTWFwPHN0cmluZywgR1BUU2xvdD4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWZyZXNoVGltZXJJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChWQUxURUNIX0FEU19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQWRzQ29uZmlnLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBsb2FkZXJTZXJ2aWNlOiBBZHNMb2FkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uc2VudFNlcnZpY2U6IEFkc0NvbnNlbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuX2lzRGVidWdNb2RlLnNldChjb25maWcuZGVidWdNb2RlID8/IGZhbHNlKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBJTklDSUFMSVpBQ0lPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogSW5pY2lhbGl6YSBlbCBzZXJ2aWNpbyBkZSBhZHMuXG4gICAqIExsYW1hZG8gYXV0b21hdGljYW1lbnRlIHBvciBBUFBfSU5JVElBTElaRVIuXG4gICAqIE5PIGNhcmdhIGVsIHNjcmlwdCBHUFQgaGFzdGEgcXVlIHNlIG5lY2VzaXRlIGVsIHByaW1lciBhZC5cbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2kgZXMgcHJlbWl1bSwgbm8gaW5pY2lhbGl6YXIgYWRzIChsZWUgZGUgQXV0aFN0YXRlU2VydmljZSlcbiAgICBpZiAodGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmlzUHJlbWl1bSgpKSB7XG4gICAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgICBjb25zb2xlLmxvZygnW1ZhbHRlY2hBZHNdIFVzdWFyaW8gcHJlbWl1bSBkZXRlY3RhZG8gLSBhZHMgZGVzaGFiaWxpdGFkb3MnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNhciBjb25zZW50IGJhc2ljb1xuICAgIGlmICghdGhpcy5jb25zZW50U2VydmljZS5jYW5TaG93QWRzKCkgJiYgIXRoaXMuY29uZmlnLnNob3dOb25QZXJzb25hbGl6ZWRBZHMpIHtcbiAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbVmFsdGVjaEFkc10gU2luIGNvbnNlbnQgcGFyYSBhZHMnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFN1c2NyaWJpcnNlIGEgY2FtYmlvcyBkZSBydXRhIHBhcmEgdmVyaWZpY2FyIGV4Y2x1c2lvbmVzXG4gICAgdGhpcy5zZXR1cFJvdXRlTGlzdGVuZXIoKTtcblxuICAgIC8vIENvbmZpZ3VyYXIgYXV0by1yZWZyZXNoIHNpIGVzdGEgaGFiaWxpdGFkb1xuICAgIGlmICh0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaEludGVydmFsICYmIHRoaXMuY29uZmlnLmF1dG9SZWZyZXNoSW50ZXJ2YWwgPiAwKSB7XG4gICAgICB0aGlzLnNldHVwQXV0b1JlZnJlc2goKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0VuYWJsZWQuc2V0KHRydWUpO1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuX2lzRGVidWdNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVmFsdGVjaEFkc10gSW5pY2lhbGl6YWRvIGVuIG1vZG8gZGVidWcnLCB7XG4gICAgICAgIG5ldHdvcmtJZDogdGhpcy5jb25maWcubmV0d29ya0lkLFxuICAgICAgICBsYXp5TG9hZDogdGhpcy5jb25maWcubGF6eUxvYWQsXG4gICAgICAgIGV4Y2x1ZGVSb3V0ZXM6IHRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FyZ2EgZWwgc2NyaXB0IEdQVCBkZSBmb3JtYSBsYXp5LlxuICAgKiBMbGFtYWRvIGF1dG9tYXRpY2FtZW50ZSBjdWFuZG8gc2UgcmVuZGVyaXphIGVsIHByaW1lciBhZCBzbG90LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlR1BUTG9hZGVkKCk6IFByb21pc2U8R1BUTmFtZXNwYWNlIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5pc0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZGVyU2VydmljZS5sb2FkR1BUKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gR0VTVElPTiBERSBTTE9UU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRGVmaW5lIHkgbXVlc3RyYSB1biBhZCBzbG90LlxuICAgKiBMbGFtYWRvIGludGVybmFtZW50ZSBwb3IgZWwgY29tcG9uZW50ZSBBZFNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmFjaW9uIGRlbCBzbG90XG4gICAqIEByZXR1cm5zIElEIGRlbCBzbG90IG8gbnVsbCBzaSBubyBzZSBwdWVkZSBtb3N0cmFyXG4gICAqL1xuICBhc3luYyBkZWZpbmVTbG90KGNvbmZpZzogQWRTbG90Q29uZmlnKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNsb3RTdGF0ZShjb25maWcuc2xvdElkLCAnaGlkZGVuJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljYXIgc2kgbGEgcnV0YSBhY3R1YWwgZXN0YSBleGNsdWlkYVxuICAgIGlmICh0aGlzLmlzUm91dGVFeGNsdWRlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNsb3RTdGF0ZShjb25maWcuc2xvdElkLCAnaGlkZGVuJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNsb3RTdGF0ZShjb25maWcuc2xvdElkLCAnbG9hZGluZycpO1xuXG4gICAgY29uc3QgZ29vZ2xldGFnID0gYXdhaXQgdGhpcy5lbnN1cmVHUFRMb2FkZWQoKTtcbiAgICBpZiAoIWdvb2dsZXRhZykge1xuICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ2Vycm9yJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYWRVbml0UGF0aCA9IGAke3RoaXMuY29uZmlnLm5ldHdvcmtJZH0ke2NvbmZpZy5hZFVuaXRQYXRofWA7XG4gICAgICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnJlc29sdmVTaXplcyhjb25maWcuc2l6ZSk7XG5cbiAgICAgICAgICBjb25zdCBzbG90ID0gZ29vZ2xldGFnLmRlZmluZVNsb3QoYWRVbml0UGF0aCwgc2l6ZXMsIGNvbmZpZy5zbG90SWQpO1xuICAgICAgICAgIGlmICghc2xvdCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRFdmVudCh7IHR5cGU6ICdlcnJvcicsIHNsb3RJZDogY29uZmlnLnNsb3RJZCwgZXJyb3I6IG5ldyBFcnJvcignTm8gc2UgcHVkbyBjcmVhciBlbCBzbG90JykgfSk7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFncmVnYXIgYWwgc2VydmljaW8gcHViYWRzXG4gICAgICAgICAgc2xvdC5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSk7XG5cbiAgICAgICAgICAvLyBDb25maWd1cmFyIHNpemUgbWFwcGluZyByZXNwb25zaXZvXG4gICAgICAgICAgaWYgKGNvbmZpZy5zaXplTWFwcGluZyAmJiBjb25maWcuc2l6ZU1hcHBpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWFwcGluZyA9IHRoaXMuYnVpbGRTaXplTWFwcGluZyhnb29nbGV0YWcsIGNvbmZpZy5zaXplTWFwcGluZyk7XG4gICAgICAgICAgICBzbG90LmRlZmluZVNpemVNYXBwaW5nKG1hcHBpbmcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbmZpZ3VyYXIgdGFyZ2V0aW5nXG4gICAgICAgICAgdGhpcy5hcHBseVRhcmdldGluZyhzbG90LCBjb25maWcudGFyZ2V0aW5nKTtcblxuICAgICAgICAgIC8vIENvbGFwc2FyIHNpIGVzdGEgdmFjaW9cbiAgICAgICAgICBpZiAoY29uZmlnLmNvbGxhcHNlRW1wdHkgPz8gdGhpcy5jb25maWcuZGVmYXVsdFNsb3RDb25maWc/LmNvbGxhcHNlRW1wdHkpIHtcbiAgICAgICAgICAgIHNsb3Quc2V0Q29sbGFwc2VFbXB0eURpdih0cnVlLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHdWFyZGFyIHJlZmVyZW5jaWFcbiAgICAgICAgICB0aGlzLmFjdGl2ZVNsb3RzLnNldChjb25maWcuc2xvdElkLCBzbG90KTtcbiAgICAgICAgICB0aGlzLl9zbG90cy51cGRhdGUoKHNsb3RzKSA9PiBuZXcgTWFwKHNsb3RzKS5zZXQoY29uZmlnLnNsb3RJZCwgc2xvdCkpO1xuXG4gICAgICAgICAgLy8gTW9zdHJhciBlbCBhZFxuICAgICAgICAgIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpO1xuICAgICAgICAgIGdvb2dsZXRhZy5kaXNwbGF5KGNvbmZpZy5zbG90SWQpO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ3JlbmRlcmVkJyk7XG4gICAgICAgICAgdGhpcy5lbWl0RXZlbnQoeyB0eXBlOiAnbG9hZGVkJywgc2xvdElkOiBjb25maWcuc2xvdElkLCBpc0VtcHR5OiBmYWxzZSB9KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3QgZGVmaW5pZG86ICR7Y29uZmlnLnNsb3RJZH1gLCB7XG4gICAgICAgICAgICAgIGFkVW5pdFBhdGgsXG4gICAgICAgICAgICAgIHNpemVzOiBjb25maWcuc2l6ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUoY29uZmlnLnNsb3RJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1ZhbHRlY2hBZHNdIEVycm9yIGRlZmluaWVuZG8gc2xvdDonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy51cGRhdGVTbG90U3RhdGUoY29uZmlnLnNsb3RJZCwgJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5lbWl0RXZlbnQoeyB0eXBlOiAnZXJyb3InLCBzbG90SWQ6IGNvbmZpZy5zbG90SWQsIGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cnV5ZSB1biBzbG90IHkgbGliZXJhIHJlY3Vyc29zLlxuICAgKlxuICAgKiBAcGFyYW0gc2xvdElkIC0gSUQgZGVsIHNsb3QgYSBkZXN0cnVpclxuICAgKi9cbiAgZGVzdHJveVNsb3Qoc2xvdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzbG90ID0gdGhpcy5hY3RpdmVTbG90cy5nZXQoc2xvdElkKTtcbiAgICBpZiAoIXNsb3QpIHJldHVybjtcblxuICAgIGNvbnN0IGdvb2dsZXRhZyA9IHdpbmRvdy5nb29nbGV0YWc7XG4gICAgaWYgKGdvb2dsZXRhZykge1xuICAgICAgZ29vZ2xldGFnLmNtZC5wdXNoKCgpID0+IHtcbiAgICAgICAgZ29vZ2xldGFnLmRlc3Ryb3lTbG90cyhbc2xvdF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmVTbG90cy5kZWxldGUoc2xvdElkKTtcbiAgICB0aGlzLl9zbG90cy51cGRhdGUoKHNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBuZXdTbG90cyA9IG5ldyBNYXAoc2xvdHMpO1xuICAgICAgbmV3U2xvdHMuZGVsZXRlKHNsb3RJZCk7XG4gICAgICByZXR1cm4gbmV3U2xvdHM7XG4gICAgfSk7XG4gICAgdGhpcy5fc2xvdFN0YXRlcy51cGRhdGUoKHN0YXRlcykgPT4ge1xuICAgICAgY29uc3QgbmV3U3RhdGVzID0gbmV3IE1hcChzdGF0ZXMpO1xuICAgICAgbmV3U3RhdGVzLmRlbGV0ZShzbG90SWQpO1xuICAgICAgcmV0dXJuIG5ld1N0YXRlcztcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3QgZGVzdHJ1aWRvOiAke3Nsb3RJZH1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzY2EgdW4gc2xvdCBlc3BlY2lmaWNvIG8gdG9kb3MgbG9zIHNsb3RzIGFjdGl2b3MuXG4gICAqXG4gICAqIEBwYXJhbSBzbG90SWRzIC0gSURzIGRlIHNsb3RzIGEgcmVmcmVzY2FyICh1bmRlZmluZWQgPSB0b2RvcylcbiAgICovXG4gIHJlZnJlc2hTbG90cyhzbG90SWRzPzogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkKCkpIHJldHVybjtcblxuICAgIGNvbnN0IGdvb2dsZXRhZyA9IHdpbmRvdy5nb29nbGV0YWc7XG4gICAgaWYgKCFnb29nbGV0YWcpIHJldHVybjtcblxuICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XG4gICAgICBpZiAoc2xvdElkcyAmJiBzbG90SWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2xvdHMgPSBzbG90SWRzLm1hcCgoaWQpID0+IHRoaXMuYWN0aXZlU2xvdHMuZ2V0KGlkKSkuZmlsdGVyKChzKTogcyBpcyBHUFRTbG90ID0+ICEhcyk7XG4gICAgICAgIGlmIChzbG90cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnJlZnJlc2goc2xvdHMpO1xuICAgICAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW1ZhbHRlY2hBZHNdIFNsb3RzIHJlZnJlc2NhZG9zOiAke3Nsb3RJZHMuam9pbignLCAnKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5yZWZyZXNoKCk7XG4gICAgICAgIGlmICh0aGlzLl9pc0RlYnVnTW9kZSgpKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tWYWx0ZWNoQWRzXSBUb2RvcyBsb3Mgc2xvdHMgcmVmcmVzY2Fkb3MnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgZXN0YWRvIGRlIHVuIHNsb3QuXG4gICAqXG4gICAqIEBwYXJhbSBzbG90SWQgLSBJRCBkZWwgc2xvdFxuICAgKiBAcmV0dXJucyBFc3RhZG8gYWN0dWFsIGRlbCBzbG90XG4gICAqL1xuICBnZXRTbG90U3RhdGUoc2xvdElkOiBzdHJpbmcpOiBBZFNsb3RTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nsb3RTdGF0ZXMoKS5nZXQoc2xvdElkKSA/PyAnaWRsZSc7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU0xPVCBDTEVBTlVQXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBEZXN0cnV5ZSB0b2RvcyBsb3Mgc2xvdHMgYWN0aXZvcy5cbiAgICogTGxhbWFyIGN1YW5kbyBlbCB1c3VhcmlvIHNlIHZ1ZWx2ZSBwcmVtaXVtIG8gY2FtYmlhIGRlIHDDoWdpbmEuXG4gICAqL1xuICBkZXN0cm95QWxsU2xvdHMoKTogdm9pZCB7XG4gICAgY29uc3QgZ29vZ2xldGFnID0gd2luZG93Lmdvb2dsZXRhZztcbiAgICBpZiAoZ29vZ2xldGFnKSB7XG4gICAgICBnb29nbGV0YWcuY21kLnB1c2goKCkgPT4ge1xuICAgICAgICBnb29nbGV0YWcuZGVzdHJveVNsb3RzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVTbG90cy5jbGVhcigpO1xuICAgIHRoaXMuX3Nsb3RzLnNldChuZXcgTWFwKCkpO1xuICAgIHRoaXMuX3Nsb3RTdGF0ZXMuc2V0KG5ldyBNYXAoKSk7XG5cbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgY29uc29sZS5sb2coJ1tWYWx0ZWNoQWRzXSBUb2RvcyBsb3Mgc2xvdHMgZGVzdHJ1aWRvcycpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSByZXNvbHZlU2l6ZXMoc2l6ZTogQWRTbG90Q29uZmlnWydzaXplJ10pOiB1bmtub3duIHtcbiAgICBpZiAodHlwZW9mIHNpemUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTaW5nbGUgcHJlc2V0IHNpemVcbiAgICAgIGNvbnN0IG1hcHBlZCA9IEFEX1NJWkVfTUFQW3NpemUgYXMgQWRTbG90U2l6ZV07XG4gICAgICByZXR1cm4gbWFwcGVkID09PSAnZmx1aWQnID8gJ2ZsdWlkJyA6IFttYXBwZWRdO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNpemUpKSB7XG4gICAgICBpZiAodHlwZW9mIHNpemVbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEFycmF5IG9mIHByZXNldCBzaXplc1xuICAgICAgICByZXR1cm4gKHNpemUgYXMgQWRTbG90U2l6ZVtdKS5tYXAoKHMpID0+IHtcbiAgICAgICAgICBjb25zdCBtYXBwZWQgPSBBRF9TSVpFX01BUFtzXTtcbiAgICAgICAgICByZXR1cm4gbWFwcGVkID09PSAnZmx1aWQnID8gJ2ZsdWlkJyA6IG1hcHBlZDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBEaXJlY3Qgc2l6ZSBhcnJheVxuICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuICdmbHVpZCc7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2l6ZU1hcHBpbmcoZ29vZ2xldGFnOiBHUFROYW1lc3BhY2UsIG1hcHBpbmc6IFNpemVNYXBwaW5nW10pOiB1bmtub3duIHtcbiAgICBjb25zdCBidWlsZGVyID0gZ29vZ2xldGFnLnNpemVNYXBwaW5nKCk7XG5cbiAgICAvLyBPcmRlbmFyIHBvciB2aWV3cG9ydCBkZXNjZW5kZW50ZVxuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5tYXBwaW5nXS5zb3J0KChhLCBiKSA9PiBiLnZpZXdwb3J0V2lkdGggLSBhLnZpZXdwb3J0V2lkdGgpO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIHNvcnRlZCkge1xuICAgICAgYnVpbGRlci5hZGRTaXplKFttLnZpZXdwb3J0V2lkdGgsIDBdLCBtLnNpemVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVpbGRlci5idWlsZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVRhcmdldGluZyhzbG90OiBHUFRTbG90LCB0YXJnZXRpbmc/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4pOiB2b2lkIHtcbiAgICAvLyBBcGxpY2FyIHRhcmdldGluZyBnbG9iYWxcbiAgICBpZiAodGhpcy5jb25maWcuZ2xvYmFsVGFyZ2V0aW5nKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZy5nbG9iYWxUYXJnZXRpbmcpKSB7XG4gICAgICAgIHNsb3Quc2V0VGFyZ2V0aW5nKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFwbGljYXIgdGFyZ2V0aW5nIGRlbCBzbG90XG4gICAgaWYgKHRhcmdldGluZykge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFyZ2V0aW5nKSkge1xuICAgICAgICBzbG90LnNldFRhcmdldGluZyhrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZ3JlZ2FyIHRhcmdldGluZyBkZSBkZWJ1ZyBzaSBlc3RhIGhhYmlsaXRhZG9cbiAgICBpZiAodGhpcy5faXNEZWJ1Z01vZGUoKSkge1xuICAgICAgc2xvdC5zZXRUYXJnZXRpbmcoJ3Rlc3QnLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2xvdFN0YXRlKHNsb3RJZDogc3RyaW5nLCBzdGF0ZTogQWRTbG90U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9zbG90U3RhdGVzLnVwZGF0ZSgoc3RhdGVzKSA9PiBuZXcgTWFwKHN0YXRlcykuc2V0KHNsb3RJZCwgc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEV2ZW50KGV2ZW50OiBPbWl0PEFkRXZlbnQsICd0aW1lc3RhbXAnPik6IHZvaWQge1xuICAgIGNvbnN0IGZ1bGxFdmVudDogQWRFdmVudCA9IHsgLi4uZXZlbnQsIHRpbWVzdGFtcDogbmV3IERhdGUoKSB9O1xuICAgIHRoaXMuX2V2ZW50cy51cGRhdGUoKGV2ZW50cykgPT4gWy4uLmV2ZW50cy5zbGljZSgtOTkpLCBmdWxsRXZlbnRdKTtcblxuICAgIC8vIENhbGxiYWNrcyBkZSBjb25maWd1cmFjaW9uXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdsb2FkZWQnIHx8IGV2ZW50LnR5cGUgPT09ICdlbXB0eScpIHtcbiAgICAgIHRoaXMuY29uZmlnLm9uQWRMb2FkZWQ/LihldmVudC5zbG90SWQsIGV2ZW50LmlzRW1wdHkgPz8gZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ2Vycm9yJyAmJiBldmVudC5lcnJvcikge1xuICAgICAgdGhpcy5jb25maWcub25BZEVycm9yPy4oZXZlbnQuc2xvdElkLCBldmVudC5lcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJvdXRlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5leGNsdWRlUm91dGVzIHx8IHRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uRW5kID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRIaWRlID0gdGhpcy5pc1JvdXRlRXhjbHVkZWQoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuXG4gICAgICAgIGlmIChzaG91bGRIaWRlKSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95QWxsU2xvdHMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQXV0b1JlZnJlc2goKTogdm9pZCB7XG4gICAgY29uc3QgaW50ZXJ2YWxNcyA9ICh0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaEludGVydmFsID8/IDApICogMTAwMDtcbiAgICBpZiAoaW50ZXJ2YWxNcyA8PSAwKSByZXR1cm47XG5cbiAgICB0aGlzLnJlZnJlc2hUaW1lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKCkgJiYgdGhpcy5hY3RpdmVTbG90cy5zaXplID4gMCkge1xuICAgICAgICB0aGlzLnJlZnJlc2hTbG90cygpO1xuICAgICAgfVxuICAgIH0sIGludGVydmFsTXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JvdXRlRXhjbHVkZWQodXJsPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5leGNsdWRlUm91dGVzIHx8IHRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFVybCA9IHVybCA/PyB0aGlzLnJvdXRlci51cmw7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmV4Y2x1ZGVSb3V0ZXMuc29tZSgocGF0dGVybikgPT4ge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoY3VycmVudFVybCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTElGRUNZQ0xFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaFRpbWVySWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5yZWZyZXNoVGltZXJJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0cm95QWxsU2xvdHMoKTtcbiAgICB0aGlzLmNvbnNlbnRTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
@@ -20,4 +20,4 @@ export const AD_SIZE_MAP = {
|
|
|
20
20
|
native: 'fluid',
|
|
21
21
|
custom: 'fluid',
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Fkcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQXdGSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBbUQ7SUFDekUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JCLGtCQUFrQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUM5QixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDN0IsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUN2QixVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3RCLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDMUIsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2hDLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZHMgVHlwZXNcbiAqXG4gKiBUaXBvcyBlIGludGVyZmFjZXMgcGFyYSBlbCBzZXJ2aWNpbyBkZSBHb29nbGUgQWQgTWFuYWdlci5cbiAqIFVzYSBHb29nbGUgUHVibGlzaGVyIFRhZ3MgKEdQVCkgcGFyYSByZW5kZXJpemFyIGFkcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFDSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29uZmlndXJhY2lvbiBkZWwgc2VydmljaW8gZGUgQWRzLlxuICogUGFzYWRhIGEgcHJvdmlkZVZhbHRlY2hBZHMoKSBlbiBlbCBib290c3RyYXAgZGUgbGEgYXBsaWNhY2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWx0ZWNoQWRzQ29uZmlnIHtcbiAgLyoqIE5ldHdvcmsgSUQgZGUgR29vZ2xlIEFkIE1hbmFnZXIgKGVqOiAnLzEyMzQ1Njc4JykgKi9cbiAgbmV0d29ya0lkOiBzdHJpbmc7XG5cbiAgLyoqIEhhYmlsaXRhciBtb2RvIGRlYnVnIChtdWVzdHJhIGluZm8gZGUgYWRzIGVuIGNvbnNvbGEpICovXG4gIGRlYnVnTW9kZT86IGJvb2xlYW47XG5cbiAgLyoqIEFjdGl2YXIgbGF6eSBsb2FkaW5nIGRlIGFkcyAodmlld3BvcnQgaW50ZXJzZWN0aW9uKSAqL1xuICBsYXp5TG9hZD86IGJvb2xlYW47XG5cbiAgLyoqIENvbmZpZ3VyYWNpb24gZGUgbGF6eSBsb2FkaW5nICovXG4gIGxhenlMb2FkQ29uZmlnPzogTGF6eUxvYWRDb25maWc7XG5cbiAgLyoqIEZ1bmNpb24gcGFyYSBkZXRlcm1pbmFyIHNpIGVsIHVzdWFyaW8gZXMgcHJlbWl1bSAoc2luIGFkcykgKi9cbiAgaXNQcmVtaXVtVXNlcj86ICgpID0+IGJvb2xlYW47XG5cbiAgLyoqIENvbmZpZ3VyYWNpb24gcG9yIGRlZmVjdG8gcGFyYSBhZCBzbG90cyAqL1xuICBkZWZhdWx0U2xvdENvbmZpZz86IFBhcnRpYWw8QWRTbG90Q29uZmlnPjtcblxuICAvKiogVGFyZ2V0aW5nIGdsb2JhbCAoYXBsaWNhIGEgdG9kb3MgbG9zIHNsb3RzKSAqL1xuICBnbG9iYWxUYXJnZXRpbmc/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT47XG5cbiAgLyoqIEhhYmlsaXRhciBwZXJzb25hbGl6YWNpb24gZGUgYWRzIChyZXF1aWVyZSBjb25zZW50KSAqL1xuICBlbmFibGVQZXJzb25hbGl6YXRpb24/OiBib29sZWFuO1xuXG4gIC8qKiBNb3N0cmFyIGFkcyBkZSBmYWxsYmFjayBzaSBubyBoYXkgY29uc2VudCAqL1xuICBzaG93Tm9uUGVyc29uYWxpemVkQWRzPzogYm9vbGVhbjtcblxuICAvKiogQ2FsbGJhY2sgY3VhbmRvIHNlIGNhcmdhIHVuIGFkICovXG4gIG9uQWRMb2FkZWQ/OiAoc2xvdElkOiBzdHJpbmcsIGlzRW1wdHk6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBmYWxsYSB1biBhZCAqL1xuICBvbkFkRXJyb3I/OiAoc2xvdElkOiBzdHJpbmcsIGVycm9yOiBFcnJvcikgPT4gdm9pZDtcblxuICAvKiogUmVmcmVzaCBhdXRvbWF0aWNvIGRlIGFkcyAoZW4gc2VndW5kb3MsIDAgPSBkZXNoYWJpbGl0YWRvKSAqL1xuICBhdXRvUmVmcmVzaEludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKiBSdXRhcyBkb25kZSBOTyBtb3N0cmFyIGFkcyAocmVnZXggcGF0dGVybnMpICovXG4gIGV4Y2x1ZGVSb3V0ZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmFjaW9uIGRlIGxhenkgbG9hZGluZyBwYXJhIEdQVC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXp5TG9hZENvbmZpZyB7XG4gIC8qKiBNYXJnZW4gZGVsIHZpZXdwb3J0IHBhcmEgY2FyZ2FyIChlajogJzIwMHB4JykgKi9cbiAgcm9vdE1hcmdpbj86IHN0cmluZztcblxuICAvKiogVGhyZXNob2xkIGRlIGludGVyc2VjY2lvbiAoMC0xKSAqL1xuICB0aHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqIEZldGNoIG1hcmdpbiBwYXJhIEdQVCAocGl4ZWxzIGFudGVzIGRlbCB2aWV3cG9ydCkgKi9cbiAgZmV0Y2hNYXJnaW5QZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKiBSZW5kZXIgbWFyZ2luIHBhcmEgR1BUICovXG4gIHJlbmRlck1hcmdpblBlcmNlbnQ/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFEIFNMT1RTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVGFtYW5vcyBkZSBhZCBwcmVkZWZpbmlkb3MgKElBQiBzdGFuZGFyZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEFkU2xvdFNpemUgPVxuICB8ICdsZWFkZXJib2FyZCcgLy8gNzI4eDkwIC0gRGVza3RvcCBoZWFkZXJcbiAgfCAnYmlsbGJvYXJkJyAvLyA5NzB4MjUwIC0gTGFyZ2UgZGVza3RvcFxuICB8ICdtZWRpdW0tcmVjdGFuZ2xlJyAvLyAzMDB4MjUwIC0gVW5pdmVyc2FsXG4gIHwgJ2xhcmdlLXJlY3RhbmdsZScgLy8gMzM2eDI4MCAtIExhcmdlIHJlY3RhbmdsZVxuICB8ICdoYWxmLXBhZ2UnIC8vIDMwMHg2MDAgLSBTaWRlYmFyXG4gIHwgJ3NreXNjcmFwZXInIC8vIDE2MHg2MDAgLSBTaWRlYmFyXG4gIHwgJ21vYmlsZS1iYW5uZXInIC8vIDMyMHg1MCAtIE1vYmlsZVxuICB8ICdtb2JpbGUtbGVhZGVyYm9hcmQnIC8vIDMyMHgxMDAgLSBNb2JpbGUgbGFyZ2VcbiAgfCAnZmx1aWQnIC8vIFJlc3BvbnNpdmVcbiAgfCAnbmF0aXZlJyAvLyBOYXRpdmUgYWQgZm9ybWF0XG4gIHwgJ2N1c3RvbSc7IC8vIFRhbWFubyBjdXN0b21cblxuLyoqXG4gKiBNYXBlbyBkZSB0YW1hbm9zIHByZWRlZmluaWRvcyBhIGRpbWVuc2lvbmVzLlxuICovXG5leHBvcnQgY29uc3QgQURfU0laRV9NQVA6IFJlY29yZDxBZFNsb3RTaXplLCBbbnVtYmVyLCBudW1iZXJdIHwgJ2ZsdWlkJz4gPSB7XG4gIGxlYWRlcmJvYXJkOiBbNzI4LCA5MF0sXG4gIGJpbGxib2FyZDogWzk3MCwgMjUwXSxcbiAgJ21lZGl1bS1yZWN0YW5nbGUnOiBbMzAwLCAyNTBdLFxuICAnbGFyZ2UtcmVjdGFuZ2xlJzogWzMzNiwgMjgwXSxcbiAgJ2hhbGYtcGFnZSc6IFszMDAsIDYwMF0sXG4gIHNreXNjcmFwZXI6IFsxNjAsIDYwMF0sXG4gICdtb2JpbGUtYmFubmVyJzogWzMyMCwgNTBdLFxuICAnbW9iaWxlLWxlYWRlcmJvYXJkJzogWzMyMCwgMTAwXSxcbiAgZmx1aWQ6ICdmbHVpZCcsXG4gIG5hdGl2ZTogJ2ZsdWlkJyxcbiAgY3VzdG9tOiAnZmx1aWQnLFxufTtcblxuLyoqXG4gKiBDb25maWd1cmFjaW9uIGRlIHVuIGFkIHNsb3QgaW5kaXZpZHVhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZFNsb3RDb25maWcge1xuICAvKiogSUQgdW5pY28gZGVsIHNsb3QgKHVzYWRvIHBhcmEgZWwgZGl2IGNvbnRhaW5lcikgKi9cbiAgc2xvdElkOiBzdHJpbmc7XG5cbiAgLyoqIEFkIHVuaXQgcGF0aCAoZWo6ICcvaG9tZXBhZ2UvdG9wJykgLSBzZSBjb25jYXRlbmEgY29uIG5ldHdvcmtJZCAqL1xuICBhZFVuaXRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqIFRhbWFubyBkZWwgYWQgbyB0YW1hbm9zIHJlc3BvbnNpdm9zICovXG4gIHNpemU6IEFkU2xvdFNpemUgfCBBZFNsb3RTaXplW10gfCBbbnVtYmVyLCBudW1iZXJdIHwgW251bWJlciwgbnVtYmVyXVtdO1xuXG4gIC8qKiBNYXBwaW5nIHJlc3BvbnNpdm86IFt2aWV3cG9ydC13aWR0aCwgc2l6ZXNdICovXG4gIHNpemVNYXBwaW5nPzogU2l6ZU1hcHBpbmdbXTtcblxuICAvKiogVGFyZ2V0aW5nIGVzcGVjaWZpY28gcGFyYSBlc3RlIHNsb3QgKi9cbiAgdGFyZ2V0aW5nPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuXG4gIC8qKiBDb2xhcHNhciBzbG90IHNpIGVzdGEgdmFjaW8gKi9cbiAgY29sbGFwc2VFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqIEVzIHVuIG5hdGl2ZSBhZCAqL1xuICBpc05hdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqIENTUyBjbGFzcyBhZGljaW9uYWwgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqIEFsdHVyYSBtaW5pbWEgbWllbnRyYXMgY2FyZ2EgKi9cbiAgbWluSGVpZ2h0Pzogc3RyaW5nO1xuXG4gIC8qKiBNb3N0cmFyIHNrZWxldG9uIG1pZW50cmFzIGNhcmdhICovXG4gIHNob3dTa2VsZXRvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTWFwcGluZyBkZSB0YW1hbm9zIHJlc3BvbnNpdm9zLlxuICogRGVmaW5lIHF1ZSB0YW1hbm9zIGRlIGFkIG1vc3RyYXIgc2VndW4gZWwgdmlld3BvcnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZU1hcHBpbmcge1xuICAvKiogQW5jaG8gbWluaW1vIGRlbCB2aWV3cG9ydCAqL1xuICB2aWV3cG9ydFdpZHRoOiBudW1iZXI7XG4gIC8qKiBUYW1hbm9zIGRlIGFkIHBhcmEgZXN0ZSB2aWV3cG9ydCAqL1xuICBzaXplczogKFtudW1iZXIsIG51bWJlcl0gfCAnZmx1aWQnKVtdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFU1RBRE9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGUgdW4gYWQgc2xvdC5cbiAqL1xuZXhwb3J0IHR5cGUgQWRTbG90U3RhdGUgPVxuICB8ICdpZGxlJyAvLyBObyBjYXJnYWRvXG4gIHwgJ2xvYWRpbmcnIC8vIFNjcmlwdC9hZCBjYXJnYW5kb1xuICB8ICdyZW5kZXJlZCcgLy8gQWQgdmlzaWJsZVxuICB8ICdlbXB0eScgLy8gU2luIGFkIGRpc3BvbmlibGVcbiAgfCAnaGlkZGVuJyAvLyBVc3VhcmlvIHByZW1pdW0gbyBzaW4gY29uc2VudFxuICB8ICdlcnJvcic7IC8vIEVycm9yIGRlIGNhcmdhXG5cbi8qKlxuICogRXZlbnRvIGVtaXRpZG8gcG9yIGVsIHNlcnZpY2lvIGRlIGFkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZEV2ZW50IHtcbiAgdHlwZTogJ2xvYWRlZCcgfCAnZW1wdHknIHwgJ2Vycm9yJyB8ICd2aWV3YWJsZScgfCAnY2xpY2tlZCc7XG4gIHNsb3RJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIGlzRW1wdHk/OiBib29sZWFuO1xuICBlcnJvcj86IEVycm9yO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05TRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvIGRlIGNvbnNlbnQgcGFyYSBhZHMgKG1hcGVhZG8gZGVzZGUgQW5hbHl0aWNzU2VydmljZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRzQ29uc2VudFN0YXRlIHtcbiAgLyoqIFBlcm1pdGUgYWxtYWNlbmFtaWVudG8gZGUgYWRzICovXG4gIGFkU3RvcmFnZTogYm9vbGVhbjtcblxuICAvKiogUGVybWl0ZSBwZXJzb25hbGl6YWNpb24gZGUgYWRzICovXG4gIGFkUGVyc29uYWxpemF0aW9uOiBib29sZWFuO1xuXG4gIC8qKiBQZXJtaXRlIGRhdG9zIGRlIHVzdWFyaW8gcGFyYSBhZHMgKi9cbiAgYWRVc2VyRGF0YTogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR1BUIChHb29nbGUgUHVibGlzaGVyIFRhZykgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEdQVCBTbG90IHJlZmVyZW5jZSAqL1xuZXhwb3J0IGludGVyZmFjZSBHUFRTbG90IHtcbiAgZ2V0U2xvdEVsZW1lbnRJZCgpOiBzdHJpbmc7XG4gIGdldEFkVW5pdFBhdGgoKTogc3RyaW5nO1xuICBhZGRTZXJ2aWNlKHNlcnZpY2U6IHVua25vd24pOiBHUFRTbG90O1xuICBkZWZpbmVTaXplTWFwcGluZyhtYXBwaW5nOiB1bmtub3duKTogR1BUU2xvdDtcbiAgc2V0VGFyZ2V0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBHUFRTbG90O1xuICBzZXRDb2xsYXBzZUVtcHR5RGl2KGNvbGxhcHNlOiBib29sZWFuLCBjb2xsYXBzZUJlZm9yZUFkRmV0Y2g/OiBib29sZWFuKTogR1BUU2xvdDtcbn1cblxuLyoqIEdQVCBnbG9iYWwgbmFtZXNwYWNlICh3aW5kb3cuZ29vZ2xldGFnKSAqL1xuZXhwb3J0IGludGVyZmFjZSBHUFROYW1lc3BhY2Uge1xuICBjbWQ6IEFycmF5PCgpID0+IHZvaWQ+O1xuICBkZWZpbmVTbG90KGFkVW5pdFBhdGg6IHN0cmluZywgc2l6ZTogdW5rbm93biwgZGl2SWQ6IHN0cmluZyk6IEdQVFNsb3QgfCBudWxsO1xuICBwdWJhZHMoKTogR1BUUHViYWRzU2VydmljZTtcbiAgZW5hYmxlU2VydmljZXMoKTogdm9pZDtcbiAgZGlzcGxheShkaXZJZDogc3RyaW5nKTogdm9pZDtcbiAgZGVzdHJveVNsb3RzKHNsb3RzPzogR1BUU2xvdFtdKTogYm9vbGVhbjtcbiAgc2l6ZU1hcHBpbmcoKTogR1BUU2l6ZU1hcHBpbmdCdWlsZGVyO1xufVxuXG4vKiogR1BUIFB1YmFkcyBTZXJ2aWNlICovXG5leHBvcnQgaW50ZXJmYWNlIEdQVFB1YmFkc1NlcnZpY2Uge1xuICBlbmFibGVTaW5nbGVSZXF1ZXN0KCk6IHZvaWQ7XG4gIGVuYWJsZUxhenlMb2FkKGNvbmZpZz86IG9iamVjdCk6IHZvaWQ7XG4gIHNldFRhcmdldGluZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZDtcbiAgc2V0UmVxdWVzdE5vblBlcnNvbmFsaXplZEFkcyh2YWx1ZTogMCB8IDEpOiB2b2lkO1xuICBhZGRFdmVudExpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IEdQVEV2ZW50KSA9PiB2b2lkKTogdm9pZDtcbiAgcmVmcmVzaChzbG90cz86IEdQVFNsb3RbXSk6IHZvaWQ7XG4gIGNvbGxhcHNlRW1wdHlEaXZzKGNvbGxhcHNlQmVmb3JlQWRGZXRjaD86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKiogR1BUIFNpemUgTWFwcGluZyBCdWlsZGVyICovXG5leHBvcnQgaW50ZXJmYWNlIEdQVFNpemVNYXBwaW5nQnVpbGRlciB7XG4gIGFkZFNpemUodmlld3BvcnQ6IFtudW1iZXIsIG51bWJlcl0sIHNpemVzOiB1bmtub3duKTogR1BUU2l6ZU1hcHBpbmdCdWlsZGVyO1xuICBidWlsZCgpOiB1bmtub3duO1xufVxuXG4vKiogR1BUIEV2ZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEdQVEV2ZW50IHtcbiAgc2xvdDogR1BUU2xvdDtcbiAgaXNFbXB0eT86IGJvb2xlYW47XG59XG5cbi8vIEV4dGVuZCBXaW5kb3cgaW50ZXJmYWNlIGZvciBnb29nbGV0YWdcbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgZ29vZ2xldGFnPzogR1BUTmFtZXNwYWNlO1xuICB9XG59XG4iXX0=
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Fkcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQXFGSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBbUQ7SUFDekUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JCLGtCQUFrQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUM5QixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDN0IsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUN2QixVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3RCLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDMUIsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2hDLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZHMgVHlwZXNcbiAqXG4gKiBUaXBvcyBlIGludGVyZmFjZXMgcGFyYSBlbCBzZXJ2aWNpbyBkZSBHb29nbGUgQWQgTWFuYWdlci5cbiAqIFVzYSBHb29nbGUgUHVibGlzaGVyIFRhZ3MgKEdQVCkgcGFyYSByZW5kZXJpemFyIGFkcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05GSUdVUkFDSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29uZmlndXJhY2lvbiBkZWwgc2VydmljaW8gZGUgQWRzLlxuICogUGFzYWRhIGEgcHJvdmlkZVZhbHRlY2hBZHMoKSBlbiBlbCBib290c3RyYXAgZGUgbGEgYXBsaWNhY2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWx0ZWNoQWRzQ29uZmlnIHtcbiAgLyoqIE5ldHdvcmsgSUQgZGUgR29vZ2xlIEFkIE1hbmFnZXIgKGVqOiAnLzEyMzQ1Njc4JykgKi9cbiAgbmV0d29ya0lkOiBzdHJpbmc7XG5cbiAgLyoqIEhhYmlsaXRhciBtb2RvIGRlYnVnIChtdWVzdHJhIGluZm8gZGUgYWRzIGVuIGNvbnNvbGEpICovXG4gIGRlYnVnTW9kZT86IGJvb2xlYW47XG5cbiAgLyoqIEFjdGl2YXIgbGF6eSBsb2FkaW5nIGRlIGFkcyAodmlld3BvcnQgaW50ZXJzZWN0aW9uKSAqL1xuICBsYXp5TG9hZD86IGJvb2xlYW47XG5cbiAgLyoqIENvbmZpZ3VyYWNpb24gZGUgbGF6eSBsb2FkaW5nICovXG4gIGxhenlMb2FkQ29uZmlnPzogTGF6eUxvYWRDb25maWc7XG5cbiAgLyoqIENvbmZpZ3VyYWNpb24gcG9yIGRlZmVjdG8gcGFyYSBhZCBzbG90cyAqL1xuICBkZWZhdWx0U2xvdENvbmZpZz86IFBhcnRpYWw8QWRTbG90Q29uZmlnPjtcblxuICAvKiogVGFyZ2V0aW5nIGdsb2JhbCAoYXBsaWNhIGEgdG9kb3MgbG9zIHNsb3RzKSAqL1xuICBnbG9iYWxUYXJnZXRpbmc/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT47XG5cbiAgLyoqIEhhYmlsaXRhciBwZXJzb25hbGl6YWNpb24gZGUgYWRzIChyZXF1aWVyZSBjb25zZW50KSAqL1xuICBlbmFibGVQZXJzb25hbGl6YXRpb24/OiBib29sZWFuO1xuXG4gIC8qKiBNb3N0cmFyIGFkcyBkZSBmYWxsYmFjayBzaSBubyBoYXkgY29uc2VudCAqL1xuICBzaG93Tm9uUGVyc29uYWxpemVkQWRzPzogYm9vbGVhbjtcblxuICAvKiogQ2FsbGJhY2sgY3VhbmRvIHNlIGNhcmdhIHVuIGFkICovXG4gIG9uQWRMb2FkZWQ/OiAoc2xvdElkOiBzdHJpbmcsIGlzRW1wdHk6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLyoqIENhbGxiYWNrIGN1YW5kbyBmYWxsYSB1biBhZCAqL1xuICBvbkFkRXJyb3I/OiAoc2xvdElkOiBzdHJpbmcsIGVycm9yOiBFcnJvcikgPT4gdm9pZDtcblxuICAvKiogUmVmcmVzaCBhdXRvbWF0aWNvIGRlIGFkcyAoZW4gc2VndW5kb3MsIDAgPSBkZXNoYWJpbGl0YWRvKSAqL1xuICBhdXRvUmVmcmVzaEludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKiBSdXRhcyBkb25kZSBOTyBtb3N0cmFyIGFkcyAocmVnZXggcGF0dGVybnMpICovXG4gIGV4Y2x1ZGVSb3V0ZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmFjaW9uIGRlIGxhenkgbG9hZGluZyBwYXJhIEdQVC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXp5TG9hZENvbmZpZyB7XG4gIC8qKiBNYXJnZW4gZGVsIHZpZXdwb3J0IHBhcmEgY2FyZ2FyIChlajogJzIwMHB4JykgKi9cbiAgcm9vdE1hcmdpbj86IHN0cmluZztcblxuICAvKiogVGhyZXNob2xkIGRlIGludGVyc2VjY2lvbiAoMC0xKSAqL1xuICB0aHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqIEZldGNoIG1hcmdpbiBwYXJhIEdQVCAocGl4ZWxzIGFudGVzIGRlbCB2aWV3cG9ydCkgKi9cbiAgZmV0Y2hNYXJnaW5QZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKiBSZW5kZXIgbWFyZ2luIHBhcmEgR1BUICovXG4gIHJlbmRlck1hcmdpblBlcmNlbnQ/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFEIFNMT1RTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVGFtYW5vcyBkZSBhZCBwcmVkZWZpbmlkb3MgKElBQiBzdGFuZGFyZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEFkU2xvdFNpemUgPVxuICB8ICdsZWFkZXJib2FyZCcgLy8gNzI4eDkwIC0gRGVza3RvcCBoZWFkZXJcbiAgfCAnYmlsbGJvYXJkJyAvLyA5NzB4MjUwIC0gTGFyZ2UgZGVza3RvcFxuICB8ICdtZWRpdW0tcmVjdGFuZ2xlJyAvLyAzMDB4MjUwIC0gVW5pdmVyc2FsXG4gIHwgJ2xhcmdlLXJlY3RhbmdsZScgLy8gMzM2eDI4MCAtIExhcmdlIHJlY3RhbmdsZVxuICB8ICdoYWxmLXBhZ2UnIC8vIDMwMHg2MDAgLSBTaWRlYmFyXG4gIHwgJ3NreXNjcmFwZXInIC8vIDE2MHg2MDAgLSBTaWRlYmFyXG4gIHwgJ21vYmlsZS1iYW5uZXInIC8vIDMyMHg1MCAtIE1vYmlsZVxuICB8ICdtb2JpbGUtbGVhZGVyYm9hcmQnIC8vIDMyMHgxMDAgLSBNb2JpbGUgbGFyZ2VcbiAgfCAnZmx1aWQnIC8vIFJlc3BvbnNpdmVcbiAgfCAnbmF0aXZlJyAvLyBOYXRpdmUgYWQgZm9ybWF0XG4gIHwgJ2N1c3RvbSc7IC8vIFRhbWFubyBjdXN0b21cblxuLyoqXG4gKiBNYXBlbyBkZSB0YW1hbm9zIHByZWRlZmluaWRvcyBhIGRpbWVuc2lvbmVzLlxuICovXG5leHBvcnQgY29uc3QgQURfU0laRV9NQVA6IFJlY29yZDxBZFNsb3RTaXplLCBbbnVtYmVyLCBudW1iZXJdIHwgJ2ZsdWlkJz4gPSB7XG4gIGxlYWRlcmJvYXJkOiBbNzI4LCA5MF0sXG4gIGJpbGxib2FyZDogWzk3MCwgMjUwXSxcbiAgJ21lZGl1bS1yZWN0YW5nbGUnOiBbMzAwLCAyNTBdLFxuICAnbGFyZ2UtcmVjdGFuZ2xlJzogWzMzNiwgMjgwXSxcbiAgJ2hhbGYtcGFnZSc6IFszMDAsIDYwMF0sXG4gIHNreXNjcmFwZXI6IFsxNjAsIDYwMF0sXG4gICdtb2JpbGUtYmFubmVyJzogWzMyMCwgNTBdLFxuICAnbW9iaWxlLWxlYWRlcmJvYXJkJzogWzMyMCwgMTAwXSxcbiAgZmx1aWQ6ICdmbHVpZCcsXG4gIG5hdGl2ZTogJ2ZsdWlkJyxcbiAgY3VzdG9tOiAnZmx1aWQnLFxufTtcblxuLyoqXG4gKiBDb25maWd1cmFjaW9uIGRlIHVuIGFkIHNsb3QgaW5kaXZpZHVhbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZFNsb3RDb25maWcge1xuICAvKiogSUQgdW5pY28gZGVsIHNsb3QgKHVzYWRvIHBhcmEgZWwgZGl2IGNvbnRhaW5lcikgKi9cbiAgc2xvdElkOiBzdHJpbmc7XG5cbiAgLyoqIEFkIHVuaXQgcGF0aCAoZWo6ICcvaG9tZXBhZ2UvdG9wJykgLSBzZSBjb25jYXRlbmEgY29uIG5ldHdvcmtJZCAqL1xuICBhZFVuaXRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqIFRhbWFubyBkZWwgYWQgbyB0YW1hbm9zIHJlc3BvbnNpdm9zICovXG4gIHNpemU6IEFkU2xvdFNpemUgfCBBZFNsb3RTaXplW10gfCBbbnVtYmVyLCBudW1iZXJdIHwgW251bWJlciwgbnVtYmVyXVtdO1xuXG4gIC8qKiBNYXBwaW5nIHJlc3BvbnNpdm86IFt2aWV3cG9ydC13aWR0aCwgc2l6ZXNdICovXG4gIHNpemVNYXBwaW5nPzogU2l6ZU1hcHBpbmdbXTtcblxuICAvKiogVGFyZ2V0aW5nIGVzcGVjaWZpY28gcGFyYSBlc3RlIHNsb3QgKi9cbiAgdGFyZ2V0aW5nPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuXG4gIC8qKiBDb2xhcHNhciBzbG90IHNpIGVzdGEgdmFjaW8gKi9cbiAgY29sbGFwc2VFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqIEVzIHVuIG5hdGl2ZSBhZCAqL1xuICBpc05hdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqIENTUyBjbGFzcyBhZGljaW9uYWwgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqIEFsdHVyYSBtaW5pbWEgbWllbnRyYXMgY2FyZ2EgKi9cbiAgbWluSGVpZ2h0Pzogc3RyaW5nO1xuXG4gIC8qKiBNb3N0cmFyIHNrZWxldG9uIG1pZW50cmFzIGNhcmdhICovXG4gIHNob3dTa2VsZXRvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTWFwcGluZyBkZSB0YW1hbm9zIHJlc3BvbnNpdm9zLlxuICogRGVmaW5lIHF1ZSB0YW1hbm9zIGRlIGFkIG1vc3RyYXIgc2VndW4gZWwgdmlld3BvcnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZU1hcHBpbmcge1xuICAvKiogQW5jaG8gbWluaW1vIGRlbCB2aWV3cG9ydCAqL1xuICB2aWV3cG9ydFdpZHRoOiBudW1iZXI7XG4gIC8qKiBUYW1hbm9zIGRlIGFkIHBhcmEgZXN0ZSB2aWV3cG9ydCAqL1xuICBzaXplczogKFtudW1iZXIsIG51bWJlcl0gfCAnZmx1aWQnKVtdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFU1RBRE9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGUgdW4gYWQgc2xvdC5cbiAqL1xuZXhwb3J0IHR5cGUgQWRTbG90U3RhdGUgPVxuICB8ICdpZGxlJyAvLyBObyBjYXJnYWRvXG4gIHwgJ2xvYWRpbmcnIC8vIFNjcmlwdC9hZCBjYXJnYW5kb1xuICB8ICdyZW5kZXJlZCcgLy8gQWQgdmlzaWJsZVxuICB8ICdlbXB0eScgLy8gU2luIGFkIGRpc3BvbmlibGVcbiAgfCAnaGlkZGVuJyAvLyBVc3VhcmlvIHByZW1pdW0gbyBzaW4gY29uc2VudFxuICB8ICdlcnJvcic7IC8vIEVycm9yIGRlIGNhcmdhXG5cbi8qKlxuICogRXZlbnRvIGVtaXRpZG8gcG9yIGVsIHNlcnZpY2lvIGRlIGFkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZEV2ZW50IHtcbiAgdHlwZTogJ2xvYWRlZCcgfCAnZW1wdHknIHwgJ2Vycm9yJyB8ICd2aWV3YWJsZScgfCAnY2xpY2tlZCc7XG4gIHNsb3RJZDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IERhdGU7XG4gIGlzRW1wdHk/OiBib29sZWFuO1xuICBlcnJvcj86IEVycm9yO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05TRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvIGRlIGNvbnNlbnQgcGFyYSBhZHMgKG1hcGVhZG8gZGVzZGUgQW5hbHl0aWNzU2VydmljZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRzQ29uc2VudFN0YXRlIHtcbiAgLyoqIFBlcm1pdGUgYWxtYWNlbmFtaWVudG8gZGUgYWRzICovXG4gIGFkU3RvcmFnZTogYm9vbGVhbjtcblxuICAvKiogUGVybWl0ZSBwZXJzb25hbGl6YWNpb24gZGUgYWRzICovXG4gIGFkUGVyc29uYWxpemF0aW9uOiBib29sZWFuO1xuXG4gIC8qKiBQZXJtaXRlIGRhdG9zIGRlIHVzdWFyaW8gcGFyYSBhZHMgKi9cbiAgYWRVc2VyRGF0YTogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR1BUIChHb29nbGUgUHVibGlzaGVyIFRhZykgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEdQVCBTbG90IHJlZmVyZW5jZSAqL1xuZXhwb3J0IGludGVyZmFjZSBHUFRTbG90IHtcbiAgZ2V0U2xvdEVsZW1lbnRJZCgpOiBzdHJpbmc7XG4gIGdldEFkVW5pdFBhdGgoKTogc3RyaW5nO1xuICBhZGRTZXJ2aWNlKHNlcnZpY2U6IHVua25vd24pOiBHUFRTbG90O1xuICBkZWZpbmVTaXplTWFwcGluZyhtYXBwaW5nOiB1bmtub3duKTogR1BUU2xvdDtcbiAgc2V0VGFyZ2V0aW5nKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBHUFRTbG90O1xuICBzZXRDb2xsYXBzZUVtcHR5RGl2KGNvbGxhcHNlOiBib29sZWFuLCBjb2xsYXBzZUJlZm9yZUFkRmV0Y2g/OiBib29sZWFuKTogR1BUU2xvdDtcbn1cblxuLyoqIEdQVCBnbG9iYWwgbmFtZXNwYWNlICh3aW5kb3cuZ29vZ2xldGFnKSAqL1xuZXhwb3J0IGludGVyZmFjZSBHUFROYW1lc3BhY2Uge1xuICBjbWQ6IEFycmF5PCgpID0+IHZvaWQ+O1xuICBkZWZpbmVTbG90KGFkVW5pdFBhdGg6IHN0cmluZywgc2l6ZTogdW5rbm93biwgZGl2SWQ6IHN0cmluZyk6IEdQVFNsb3QgfCBudWxsO1xuICBwdWJhZHMoKTogR1BUUHViYWRzU2VydmljZTtcbiAgZW5hYmxlU2VydmljZXMoKTogdm9pZDtcbiAgZGlzcGxheShkaXZJZDogc3RyaW5nKTogdm9pZDtcbiAgZGVzdHJveVNsb3RzKHNsb3RzPzogR1BUU2xvdFtdKTogYm9vbGVhbjtcbiAgc2l6ZU1hcHBpbmcoKTogR1BUU2l6ZU1hcHBpbmdCdWlsZGVyO1xufVxuXG4vKiogR1BUIFB1YmFkcyBTZXJ2aWNlICovXG5leHBvcnQgaW50ZXJmYWNlIEdQVFB1YmFkc1NlcnZpY2Uge1xuICBlbmFibGVTaW5nbGVSZXF1ZXN0KCk6IHZvaWQ7XG4gIGVuYWJsZUxhenlMb2FkKGNvbmZpZz86IG9iamVjdCk6IHZvaWQ7XG4gIHNldFRhcmdldGluZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZDtcbiAgc2V0UmVxdWVzdE5vblBlcnNvbmFsaXplZEFkcyh2YWx1ZTogMCB8IDEpOiB2b2lkO1xuICBhZGRFdmVudExpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IEdQVEV2ZW50KSA9PiB2b2lkKTogdm9pZDtcbiAgcmVmcmVzaChzbG90cz86IEdQVFNsb3RbXSk6IHZvaWQ7XG4gIGNvbGxhcHNlRW1wdHlEaXZzKGNvbGxhcHNlQmVmb3JlQWRGZXRjaD86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKiogR1BUIFNpemUgTWFwcGluZyBCdWlsZGVyICovXG5leHBvcnQgaW50ZXJmYWNlIEdQVFNpemVNYXBwaW5nQnVpbGRlciB7XG4gIGFkZFNpemUodmlld3BvcnQ6IFtudW1iZXIsIG51bWJlcl0sIHNpemVzOiB1bmtub3duKTogR1BUU2l6ZU1hcHBpbmdCdWlsZGVyO1xuICBidWlsZCgpOiB1bmtub3duO1xufVxuXG4vKiogR1BUIEV2ZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEdQVEV2ZW50IHtcbiAgc2xvdDogR1BUU2xvdDtcbiAgaXNFbXB0eT86IGJvb2xlYW47XG59XG5cbi8vIEV4dGVuZCBXaW5kb3cgaW50ZXJmYWNlIGZvciBnb29nbGV0YWdcbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgZ29vZ2xldGFnPzogR1BUTmFtZXNwYWNlO1xuICB9XG59XG4iXX0=
|