@recursyve/nice-ui-kit.v2 14.0.0-beta.129 → 14.0.0-beta.131
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/esm2020/lib/components/async-typeahead/async-typeahead.component.mjs +23 -12
- package/esm2020/lib/components/async-typeahead/providers/async-typeahead.service.mjs +22 -12
- package/esm2020/lib/components/translation-form/components/translation-form.component.mjs +12 -7
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs +77 -53
- package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs +54 -28
- package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +1 -1
- package/lib/components/async-typeahead/async-typeahead.component.d.ts +4 -2
- package/lib/components/async-typeahead/providers/async-typeahead.service.d.ts +8 -5
- package/lib/components/translation-form/components/translation-form.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -68,6 +68,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
68
68
|
this._disabled = false;
|
|
69
69
|
this.id = uuid.v4();
|
|
70
70
|
this.describedBy = "";
|
|
71
|
+
this.componentInitialized = false;
|
|
71
72
|
this.propagate = () => { };
|
|
72
73
|
if (this.ngControl) {
|
|
73
74
|
this.ngControl.valueAccessor = this;
|
|
@@ -136,7 +137,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
136
137
|
get initialized() {
|
|
137
138
|
return this.service.getInitialized();
|
|
138
139
|
}
|
|
139
|
-
ngOnInit() {
|
|
140
|
+
async ngOnInit() {
|
|
140
141
|
this.service.listenForRequest();
|
|
141
142
|
if (this.ngControl) {
|
|
142
143
|
if (this.ngControl.disabled) {
|
|
@@ -160,11 +161,15 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
160
161
|
if (typeof text !== "string") {
|
|
161
162
|
return;
|
|
162
163
|
}
|
|
163
|
-
this.service.search(this.resource, text
|
|
164
|
+
this.service.search(this.resource, text);
|
|
164
165
|
});
|
|
165
166
|
}
|
|
166
167
|
if (this.preloadResource) {
|
|
167
|
-
this.service.search(this.resource, ""
|
|
168
|
+
this.service.search(this.resource, "");
|
|
169
|
+
}
|
|
170
|
+
this.componentInitialized = true;
|
|
171
|
+
if (this.initialWriteValue !== undefined) {
|
|
172
|
+
await this.writeValue(this.initialWriteValue);
|
|
168
173
|
}
|
|
169
174
|
}
|
|
170
175
|
ngOnDestroy() {
|
|
@@ -174,8 +179,9 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
174
179
|
ngOnChanges(changes) {
|
|
175
180
|
if ("searchOptions" in changes) {
|
|
176
181
|
const change = changes.searchOptions;
|
|
182
|
+
this.service.setSearchOptions(change.currentValue);
|
|
177
183
|
if (!change.isFirstChange() && change.currentValue !== change.previousValue && this.autoReload) {
|
|
178
|
-
this.service.search(this.resource, ""
|
|
184
|
+
this.service.search(this.resource, "");
|
|
179
185
|
this.service.items$.pipe(take(1)).subscribe(() => this.checkIfValueStillExist());
|
|
180
186
|
}
|
|
181
187
|
}
|
|
@@ -193,6 +199,10 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
193
199
|
}
|
|
194
200
|
}
|
|
195
201
|
async writeValue(value) {
|
|
202
|
+
if (!this.componentInitialized) {
|
|
203
|
+
this.initialWriteValue = value;
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
196
206
|
if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {
|
|
197
207
|
return;
|
|
198
208
|
}
|
|
@@ -205,7 +215,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
205
215
|
return;
|
|
206
216
|
}
|
|
207
217
|
else {
|
|
208
|
-
await this.service.setActiveId(this.resource, value
|
|
218
|
+
await this.service.setActiveId(this.resource, value).then(() => this.updateSearchInput());
|
|
209
219
|
}
|
|
210
220
|
this.value = value;
|
|
211
221
|
}
|
|
@@ -247,7 +257,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
247
257
|
});
|
|
248
258
|
}
|
|
249
259
|
if (this.open && !this.initialized) {
|
|
250
|
-
this.service.initialize(this.resource
|
|
260
|
+
this.service.initialize(this.resource);
|
|
251
261
|
}
|
|
252
262
|
if (!this.open && this.ngControl) {
|
|
253
263
|
this.ngControl.control.markAsTouched();
|
|
@@ -275,7 +285,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
275
285
|
this.stateChanges.next();
|
|
276
286
|
this.entityRemoved.emit();
|
|
277
287
|
if (reload) {
|
|
278
|
-
this.service.search(this.resource, ""
|
|
288
|
+
this.service.search(this.resource, "");
|
|
279
289
|
}
|
|
280
290
|
}
|
|
281
291
|
formatLabel(item) {
|
|
@@ -291,7 +301,7 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
291
301
|
return item;
|
|
292
302
|
}
|
|
293
303
|
onEndScroll() {
|
|
294
|
-
this.service.loadMore(this.resource
|
|
304
|
+
this.service.loadMore(this.resource);
|
|
295
305
|
}
|
|
296
306
|
focusChanged(isFocused) {
|
|
297
307
|
if (isFocused !== this.focused) {
|
|
@@ -302,16 +312,17 @@ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
|
|
|
302
312
|
}
|
|
303
313
|
}
|
|
304
314
|
}
|
|
305
|
-
|
|
306
|
-
|
|
315
|
+
reload() {
|
|
316
|
+
this.service?.search(this.resource, this.searchControl.value ?? "");
|
|
307
317
|
}
|
|
308
318
|
async reloadActive() {
|
|
309
|
-
await this.service?.reloadActive(this.resource
|
|
319
|
+
await this.service?.reloadActive(this.resource);
|
|
310
320
|
const active = this.service?.getActive();
|
|
311
321
|
this.updateLabel(active);
|
|
312
322
|
}
|
|
313
323
|
setSearchOptions(options) {
|
|
314
324
|
this.searchOptions = options;
|
|
325
|
+
this.service.setSearchOptions(options);
|
|
315
326
|
}
|
|
316
327
|
updateLabel(item) {
|
|
317
328
|
if (!item) {
|
|
@@ -437,4 +448,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
|
|
|
437
448
|
type: HostBinding,
|
|
438
449
|
args: ["attr.aria-describedby"]
|
|
439
450
|
}] } });
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUFFLE1BQU0sRUFDaEIsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FB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O2dCQUlqQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsU0FBUztnQkFJaEIsYUFBYTtzQkFEbkIsTUFBTTtnQkFJQSxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLE1BQU07Z0JBSUksYUFBYTtzQkFEdkIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO2dCQWlDSyxLQUFLO3NCQURmLEtBQUs7Z0JBa0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBVUssZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNdEIsRUFBRTtzQkFEUixXQUFXO2dCQUlMLFdBQVc7c0JBRGpCLFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCwgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZUFjdGl2YXRlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIE1hdE9wdGlvbiwgbWl4aW5FcnJvclN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgdGggfSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUgfSBmcm9tIFwiLi4vdHlwZWFoZWFkXCI7XG5pbXBvcnQgeyBOaWNlQXN5bmNUeXBlYWhlYWRTZXJ2aWNlIH0gZnJvbSBcIi4vcHJvdmlkZXJzL2FzeW5jLXR5cGVhaGVhZC5zZXJ2aWNlXCI7XG5cbi8vIEJvaWxlcnBsYXRlIGZvciBhcHBseWluZyBtaXhpbnMgdG8gKS5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5jb25zdCBfQmFzZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50ID0gbWl4aW5FcnJvclN0YXRlKFxuICAgIGNsYXNzIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgc3RhdGUgY2hhbmdlcyBhbmQgc2hvdWxkIGNhdXNlIHRoZSBwYXJlbnRcbiAgICAgICAgICogZm9ybSBmaWVsZCB0byB1cGRhdGUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgYE1hdEZvcm1GaWVsZENvbnRyb2xgLlxuICAgICAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAgICAgcHVibGljIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JtIGNvbnRyb2wgYm91bmQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgICAgICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgYE1hdEZvcm1GaWVsZENvbnRyb2xgLlxuICAgICAgICAgICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2xcbiAgICAgICAgKSB7fVxuICAgIH1cbik7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5pY2UtYXN5bmMtdHlwZWFoZWFkXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcImFzeW5jLXR5cGVhaGVhZC5zdHlsZS5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2VcbiAgICBdXG59KVxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuZXhwb3J0IGNsYXNzIE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCBleHRlbmRzIF9CYXNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+LCBEb0NoZWNrIHtcbiAgICBwdWJsaWMgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgY29udHJvbFR5cGUgPSBcInJlbW90ZS10eXBlYWhlYWRcIjtcbiAgICBwdWJsaWMgZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCk7XG4gICAgcHVibGljIHZhbHVlQ2hhbmdlc1N1YiQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwYW5lbFdpZHRoID0gMDtcbiAgICBwdWJsaWMgYWN0aXZlT3B0aW9uOiBNYXRPcHRpb247XG5cbiAgICBwdWJsaWMgYWN0aXZlJCA9IHRoaXMuc2VydmljZS5hY3RpdmUkO1xuXG4gICAgQFZpZXdDaGlsZChcInNlYXJjaElucHV0XCIpXG4gICAgcHVibGljIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZHJlbihNYXRPcHRpb24pXG4gICAgcHVibGljIG9wdGlvbnM6IE1hdE9wdGlvbltdO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVudGl0eVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXNvdXJjZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoT3B0aW9uczogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b1JlbG9hZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwcmVsb2FkUmVzb3VyY2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93Tm90Rm91bmRJdGVtcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFuZWxDbGFzczogc3RyaW5nIHwgc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGJpbmRWYWx1ZSA9IFwiaWRcIjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGJpbmRMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5UGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJGbjogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGxhYmVsRm9ybWF0Rm4obGFiZWxGb3JtYXRGbjogKGl0ZW06IGFueSkgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2xhYmVsRm9ybWF0Rm4gPSBsYWJlbEZvcm1hdEZuO1xuICAgIH1cbiAgICBwcml2YXRlIF9sYWJlbEZvcm1hdEZuOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAgICAgLy8gUmVzZXQgZnJvbSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGRvZXNuJ3QgYmVjb21lIHN0dWNrLlxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGUodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICBwcml2YXRlIF92YWx1ZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCA/PyB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZmxvYXRpbmdcIilcbiAgICBwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKClcbiAgICBwdWJsaWMgaWQ6IHN0cmluZyA9IHV1aWQudjQoKTtcblxuICAgIEBIb3N0QmluZGluZyhcImF0dHIuYXJpYS1kZXNjcmliZWRieVwiKVxuICAgIHB1YmxpYyBkZXNjcmliZWRCeSA9IFwiXCI7XG5cbiAgICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCF0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZS5sZW5ndGgpICYmXG4gICAgICAgICAgICAoIXRoaXMuX3ZhbHVlIHx8ICh0eXBlb2YgdGhpcy5fdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXRoaXMuX3ZhbHVlLmxlbmd0aCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRJbml0aWFsaXplZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcm9wYWdhdGU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBzZXJ2aWNlOiBOaWNlQXN5bmNUeXBlYWhlYWRTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcihkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgbmdDb250cm9sKTtcblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UubGlzdGVuRm9yUmVxdWVzdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXR1cyA9PT0gXCJESVNBQkxFRFwiO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWx0ZXJGbikge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNldEZpbHRlckZuKHRoaXMuZmlsdGVyRm4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUodGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIHRleHQsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRSZXNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlcnZpY2UuY2xvc2VSZXF1ZXN0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzU3ViJC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChcInNlYXJjaE9wdGlvbnNcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2UgPSBjaGFuZ2VzLnNlYXJjaE9wdGlvbnM7XG4gICAgICAgICAgICBpZiAoIWNoYW5nZS5pc0ZpcnN0Q2hhbmdlKCkgJiYgY2hhbmdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUgJiYgdGhpcy5hdXRvUmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiLCBjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuaXRlbXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcImZpbHRlckZuXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5maWx0ZXJGbjtcbiAgICAgICAgICAgIGlmICghY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRGaWx0ZXJGbihjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT09IHZhbHVlIHx8IChpc051bGxPclVuZGVmaW5lZCh0aGlzLl92YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5zZXRBY3RpdmVJZCh0aGlzLnJlc291cmNlLCB2YWx1ZSwgdGhpcy5zZWFyY2hPcHRpb25zKS50aGVuKCgpID0+IHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UocHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBOTy1PUFxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmU8VCA9IGFueT4oKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQub3B0aW9uLmlkID09PSBcIm5ldy12YWx1ZS1vcHRpb25cIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKSA6IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlU3RhdGUob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuXG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuICYmICF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLnJlc291cmNlLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wZW4gJiYgdGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdmFsdWUgJiYgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlKGV2ZW50PzogRXZlbnQsIHJlbG9hZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUobnVsbCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG5cbiAgICAgICAgdGhpcy5lbnRpdHlSZW1vdmVkLmVtaXQoKTtcblxuICAgICAgICBpZiAocmVsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VhcmNoKHRoaXMucmVzb3VyY2UsIFwiXCIsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0TGFiZWwoaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX2xhYmVsRm9ybWF0Rm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYWJlbEZvcm1hdEZuKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmluZExhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RJdGVtKHRoaXMuYmluZExhYmVsLCBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5mb3JtYXQodGhpcy5yZXNvdXJjZSwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FbmRTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5sb2FkTW9yZSh0aGlzLnJlc291cmNlLCB0aGlzLnNlYXJjaE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgICAgICAgICBpZiAoaXNGb2N1c2VkICYmIHRoaXMuZmlsdGVyRm4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UucmVsb2FkRmlsdGVyZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlPy5zZWFyY2godGhpcy5yZXNvdXJjZSwgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlID8/IFwiXCIsIHRoaXMuc2VhcmNoT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZEFjdGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlPy5yZWxvYWRBY3RpdmUodGhpcy5yZXNvdXJjZSwgdGhpcy5zZWFyY2hPcHRpb25zKTtcbiAgICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5zZXJ2aWNlPy5nZXRBY3RpdmUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVMYWJlbChhY3RpdmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZWFyY2hPcHRpb25zKG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGFiZWwoaXRlbTogdW5rbm93biB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5mb3JtYXRMYWJlbChpdGVtKTtcblxuICAgICAgICBpZiAobGFiZWwgJiYgbGFiZWwgIT09IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUobGFiZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2JqZWN0SXRlbShrZXk6IHN0cmluZywgb2JqOiBvYmplY3QpOiBhbnkge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgbGV0IGl0ZW0gPSBvYmo7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtID0gaXRlbVtrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VhcmNoSW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbCh0aGlzLl92YWx1ZS4kbmV3KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuc2VydmljZS5nZXRBY3RpdmUoKTtcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbChhY3RpdmUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja0lmVmFsdWVTdGlsbEV4aXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmZpbHRlcmVkSXRlbXMkKTtcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoXG4gICAgICAgICAgICB2ID0+ICh0aGlzLmJpbmRWYWx1ZSAmJiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgdikgOiB2KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInsgbG9hZGluZzogc2VydmljZS5sb2FkaW5nJCB8IGFzeW5jLCBsb2FkaW5nUGFnZTogc2VydmljZS5sb2FkaW5nUGFnZSQgfCBhc3luYywgdmFsdWVzOiBzZXJ2aWNlLmZpbHRlcmVkSXRlbXMkIHwgYXN5bmMgfSBhcyBjdHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiIWRpc2FibGVkOyBlbHNlIGRpc2FibGVcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtYXV0b1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0LWF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiJGFueShkaXNhYmxlZClcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiJGFueShyZXF1aXJlZClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cImZvY3VzQ2hhbmdlZCh0cnVlKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZhbHVlICYmICFjdHgubG9hZGluZ1wiIG1hdFN1ZmZpeCBjbGFzcz1cImNsb3NlLWJ1dHRvbiBzZWNvbmRhcnktdGV4dFwiIChjbGljayk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBjbG9zZVxuICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cInNlbGYtY2VudGVyXCIgW2RpYW1ldGVyXT1cIjE2XCIgKm5nSWY9XCJjdHgubG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCJcbiAgICAgICAgW2NsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgICAgICAob3B0aW9uQWN0aXZhdGVkKT1cIm9uT3B0aW9uQWN0aXZhdGVkKCRldmVudClcIlxuICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgKGNsb3NlZCk9XCJ1cGRhdGVTdGF0ZShmYWxzZSlcIlxuICAgICAgICAob3BlbmVkKT1cInVwZGF0ZVN0YXRlKHRydWUpXCJcbiAgICAgICAgKG9wdGlvbnNTY3JvbGwpPVwib25FbmRTY3JvbGwoKVwiXG4gICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxuICAgID5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJvcGVuICYmIGN0eC5sb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3R4LnZhbHVlc1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBmb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtYXQ+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TGFiZWwob3B0aW9uKSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiFjdHgudmFsdWVzPy5sZW5ndGggJiYgIWFsbG93Tm90Rm91bmRJdGVtc1wiIGRpc2FibGVkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5UGxhY2Vob2xkZXI7IGVsc2UgZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICB7eyBlbXB0eVBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAge3sgXCJjb21wb25lbnRzLnR5cGVhaGVhZC5ub19pdGVtX2ZvdW5kXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhY3R4LnZhbHVlcz8ubGVuZ3RoICYmIGFsbG93Tm90Rm91bmRJdGVtc1wiIGlkPVwibmV3LXZhbHVlLW9wdGlvblwiIFt2YWx1ZV09XCJzZWFyY2hDb250cm9sLnZhbHVlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0YWxpY1wiPnt7IHNlYXJjaENvbnRyb2wudmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJvcGVuICYmIGN0eC5sb2FkaW5nUGFnZVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGU+XG4gICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGNsYXNzPVwiZGlzYWJsZWQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiJGFueShyZXF1aXJlZClcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
451
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUFFLE1BQU0sRUFDaEIsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFFaEYsd0NBQXdDO0FBQ3hDLG9CQUFvQjtBQUNwQixNQUFNLDRCQUE0QixHQUFHLGVBQWUsQ0FDaEQ7SUFRSSxZQUNXLHlCQUE0QyxFQUM1QyxXQUFtQixFQUNuQixnQkFBb0M7SUFDM0M7Ozs7T0FJRztJQUNJLFNBQW9CO1FBUnBCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBbUI7UUFDNUMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQU1wQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBaEIvQjs7OztXQUlHO1FBQ00saUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBWXpDLENBQUM7Q0FDUCxDQUNKLENBQUM7QUFlRiwyQ0FBMkM7QUFDM0MsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDRCQUE0QjtJQTZKekUsWUFDd0IsU0FBb0IsRUFDNUIsVUFBa0IsRUFDbEIsZUFBbUMsRUFDL0Msd0JBQTJDLEVBQ25DLE1BQWMsRUFDZCxpQkFBb0MsRUFDckMsT0FBa0M7UUFFekMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFKaEUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFuS3RDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ2pDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUdmLFlBQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQVMvQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFTekMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUd4Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFHM0IsZUFBVSxHQUFzQixFQUFFLENBQUM7UUFHbkMsY0FBUyxHQUFHLElBQUksQ0FBQztRQWtCakIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFzQ2hDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFzQ3JCLE9BQUUsR0FBVyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFHdkIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFHaEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBYzlCLGNBQVMsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBYWpELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBOUdELElBQ1csYUFBYSxDQUFDLGFBQW9DO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUFtQjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsNkVBQTZFO1FBQzdFLG1FQUFtRTtRQUNuRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7U0FDbEM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQ1csS0FBSyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBQ0QsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUFtQjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDakcsQ0FBQztJQUdELElBQ1csZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQVlELElBQVcsS0FBSztRQUNaLE9BQU8sQ0FDSCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUM3RSxDQUFDO0lBQ04sQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQW9CTSxLQUFLLENBQUMsUUFBUTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDcEQ7WUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLEtBQUssVUFBVSxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ3BEO3FCQUFNO29CQUNILElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ25EO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNySCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtvQkFDMUIsT0FBTztpQkFDVjtnQkFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMxQztRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNqRDtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3JDLElBQUksZUFBZSxJQUFJLE9BQU8sRUFBRTtZQUM1QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRW5ELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzVGLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQzthQUNwRjtTQUNKO1FBRUQsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRDtTQUNKO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQVU7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN2RixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsT0FBTztTQUNWO1FBRUQsSUFBSSxLQUFLLFlBQVkscUJBQXFCLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsT0FBTztTQUNWO2FBQU07WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7U0FDN0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsU0FBa0M7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQU87UUFDNUIsUUFBUTtJQUNaLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxHQUFhO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBb0M7UUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFtQztRQUN2RCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLGtCQUFrQixFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BFO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM3RztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQWE7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ25CO1NBQ0o7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWEsRUFBRSxNQUFNLEdBQUcsSUFBSTtRQUN4QyxJQUFJLEtBQUssRUFBRTtZQUNQLDJCQUEyQjtTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFMUIsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFTO1FBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQWtCO1FBQ2xDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV6QixJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDdEM7U0FDSjtJQUNMLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFDckIsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxPQUFZO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFzQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTztTQUNWO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQzFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2YsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLFlBQVkscUJBQXFCLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLE9BQU87U0FDVjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEMsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxxQkFBcUIsRUFBRTtZQUM5QyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ25CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUM3RyxDQUFDO1FBQ0YsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7SUFDTCxDQUFDOzt3SEE1Y1EsMkJBQTJCOzRHQUEzQiwyQkFBMkIsK3JCQVR6QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsMkJBQTJCO1NBQzNDO1FBQ0QseUJBQXlCO0tBQzVCLDZJQW1CYSxTQUFTLDRGQ3ZGM0IsODZGQXFFQTsyRkRFYSwyQkFBMkI7a0JBZHZDLFNBQVM7K0JBQ0ksc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsNkJBQTZCO3lCQUMzQzt3QkFDRCx5QkFBeUI7cUJBQzVCOzswQkFpS0ksUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFFBQVE7eUtBbEpOLEtBQUs7c0JBRFgsU0FBUzt1QkFBQyxhQUFhO2dCQUlqQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsU0FBUztnQkFJaEIsYUFBYTtzQkFEbkIsTUFBTTtnQkFJQSxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLE1BQU07Z0JBSUksYUFBYTtzQkFEdkIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO2dCQWlDSyxLQUFLO3NCQURmLEtBQUs7Z0JBa0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBVUssZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNdEIsRUFBRTtzQkFEUixXQUFXO2dCQUlMLFdBQVc7c0JBRGpCLFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCwgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZUFjdGl2YXRlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIE1hdE9wdGlvbiwgbWl4aW5FcnJvclN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgTmljZVR5cGVhaGVhZE5ld1ZhbHVlIH0gZnJvbSBcIi4uL3R5cGVhaGVhZFwiO1xuaW1wb3J0IHsgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZSB9IGZyb20gXCIuL3Byb3ZpZGVycy9hc3luYy10eXBlYWhlYWQuc2VydmljZVwiO1xuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvICkuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuY29uc3QgX0Jhc2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCA9IG1peGluRXJyb3JTdGF0ZShcbiAgICBjbGFzcyB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHN0YXRlIGNoYW5nZXMgYW5kIHNob3VsZCBjYXVzZSB0aGUgcGFyZW50XG4gICAgICAgICAqIGZvcm0gZmllbGQgdG8gdXBkYXRlLiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIGBNYXRGb3JtRmllbGRDb250cm9sYC5cbiAgICAgICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybSBjb250cm9sIGJvdW5kIHRvIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIGBNYXRGb3JtRmllbGRDb250cm9sYC5cbiAgICAgICAgICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sXG4gICAgICAgICkge31cbiAgICB9XG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFzeW5jLXR5cGVhaGVhZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcImFzeW5jLXR5cGVhaGVhZC50ZW1wbGF0ZS5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCJhc3luYy10eXBlYWhlYWQuc3R5bGUuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICBOaWNlQXN5bmNUeXBlYWhlYWRTZXJ2aWNlXG4gICAgXVxufSlcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbmV4cG9ydCBjbGFzcyBOaWNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQgZXh0ZW5kcyBfQmFzZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgRG9DaGVjayB7XG4gICAgcHVibGljIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHVibGljIGNvbnRyb2xUeXBlID0gXCJyZW1vdGUtdHlwZWFoZWFkXCI7XG4gICAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZXNTdWIkOiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIG9wZW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcGFuZWxXaWR0aCA9IDA7XG4gICAgcHVibGljIGFjdGl2ZU9wdGlvbjogTWF0T3B0aW9uO1xuXG4gICAgcHVibGljIGFjdGl2ZSQgPSB0aGlzLnNlcnZpY2UuYWN0aXZlJDtcblxuICAgIEBWaWV3Q2hpbGQoXCJzZWFyY2hJbnB1dFwiKVxuICAgIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oTWF0T3B0aW9uKVxuICAgIHB1YmxpYyBvcHRpb25zOiBNYXRPcHRpb25bXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBlbnRpdHlSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVzb3VyY2U6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaE9wdGlvbnM6IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9SZWxvYWQgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJlbG9hZFJlc291cmNlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd05vdEZvdW5kSXRlbXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kVmFsdWUgPSBcImlkXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyRm46ICh2YWx1ZTogYW55KSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBsYWJlbEZvcm1hdEZuKGxhYmVsRm9ybWF0Rm46IChpdGVtOiBhbnkpID0+IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbEZvcm1hdEZuID0gbGFiZWxGb3JtYXRGbjtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbGFiZWxGb3JtYXRGbjogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQgPz8gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmZsb2F0aW5nXCIpXG4gICAgcHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygpXG4gICAgcHVibGljIGlkOiBzdHJpbmcgPSB1dWlkLnY0KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJhdHRyLmFyaWEtZGVzY3JpYmVkYnlcIilcbiAgICBwdWJsaWMgZGVzY3JpYmVkQnkgPSBcIlwiO1xuXG5cbiAgICBwcml2YXRlIGNvbXBvbmVudEluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpbml0aWFsV3JpdGVWYWx1ZT86IGFueTtcblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICghdGhpcy5fdmFsdWUgfHwgKHR5cGVvZiB0aGlzLl92YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5fdmFsdWUubGVuZ3RoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEluaXRpYWxpemVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHNlcnZpY2U6IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBuZ0NvbnRyb2wpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc2VydmljZS5saXN0ZW5Gb3JSZXF1ZXN0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gc3RhdHVzID09PSBcIkRJU0FCTEVEXCI7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckZuKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RmlsdGVyRm4odGhpcy5maWx0ZXJGbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YiQgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh0ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRleHQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5yZXNvdXJjZSwgdGV4dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRSZXNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9uZW50SW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsV3JpdGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlVmFsdWUodGhpcy5pbml0aWFsV3JpdGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5jbG9zZVJlcXVlc3RTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKFwic2VhcmNoT3B0aW9uc1wiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXMuc2VhcmNoT3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRTZWFyY2hPcHRpb25zKGNoYW5nZS5jdXJyZW50VmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoIWNoYW5nZS5pc0ZpcnN0Q2hhbmdlKCkgJiYgY2hhbmdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUgJiYgdGhpcy5hdXRvUmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuaXRlbXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcImZpbHRlckZuXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5maWx0ZXJGbjtcbiAgICAgICAgICAgIGlmICghY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRGaWx0ZXJGbihjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFdyaXRlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gdmFsdWUgfHwgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuX3ZhbHVlKSAmJiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlICYmIHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vblJlbW92ZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZUlkKHRoaXMucmVzb3VyY2UsIHZhbHVlKS50aGVuKCgpID0+IHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UocHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBOTy1PUFxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmU8VCA9IGFueT4oKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQub3B0aW9uLmlkID09PSBcIm5ldy12YWx1ZS1vcHRpb25cIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKSA6IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlU3RhdGUob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuXG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuICYmICF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLnJlc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5vcGVuICYmIHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3ZhbHVlICYmIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblJlbW92ZShldmVudD86IEV2ZW50LCByZWxvYWQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0QWN0aXZlKG51bGwpO1xuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUobnVsbCk7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgICAgIHRoaXMuZW50aXR5UmVtb3ZlZC5lbWl0KCk7XG5cbiAgICAgICAgaWYgKHJlbG9hZCkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRMYWJlbChpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fbGFiZWxGb3JtYXRGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsRm9ybWF0Rm4oaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5iaW5kTGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kTGFiZWwsIGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmZvcm1hdCh0aGlzLnJlc291cmNlLCBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVuZFNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmxvYWRNb3JlKHRoaXMucmVzb3VyY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgICAgICAgICBpZiAoaXNGb2N1c2VkICYmIHRoaXMuZmlsdGVyRm4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UucmVsb2FkRmlsdGVyZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlPy5zZWFyY2godGhpcy5yZXNvdXJjZSwgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlID8/IFwiXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRBY3RpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZT8ucmVsb2FkQWN0aXZlKHRoaXMucmVzb3VyY2UpO1xuICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLnNlcnZpY2U/LmdldEFjdGl2ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VydmljZS5zZXRTZWFyY2hPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGFiZWwoaXRlbTogdW5rbm93biB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5mb3JtYXRMYWJlbChpdGVtKTtcblxuICAgICAgICBpZiAobGFiZWwgJiYgbGFiZWwgIT09IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUobGFiZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2JqZWN0SXRlbShrZXk6IHN0cmluZywgb2JqOiBvYmplY3QpOiBhbnkge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgbGV0IGl0ZW0gPSBvYmo7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtID0gaXRlbVtrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VhcmNoSW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbCh0aGlzLl92YWx1ZS4kbmV3KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuc2VydmljZS5nZXRBY3RpdmUoKTtcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbChhY3RpdmUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja0lmVmFsdWVTdGlsbEV4aXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmZpbHRlcmVkSXRlbXMkKTtcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoXG4gICAgICAgICAgICB2ID0+ICh0aGlzLmJpbmRWYWx1ZSAmJiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgdikgOiB2KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInsgbG9hZGluZzogc2VydmljZS5sb2FkaW5nJCB8IGFzeW5jLCBsb2FkaW5nUGFnZTogc2VydmljZS5sb2FkaW5nUGFnZSQgfCBhc3luYywgdmFsdWVzOiBzZXJ2aWNlLmZpbHRlcmVkSXRlbXMkIHwgYXN5bmMgfSBhcyBjdHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiIWRpc2FibGVkOyBlbHNlIGRpc2FibGVcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtYXV0b1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0LWF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiJGFueShkaXNhYmxlZClcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiJGFueShyZXF1aXJlZClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cImZvY3VzQ2hhbmdlZCh0cnVlKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZhbHVlICYmICFjdHgubG9hZGluZ1wiIG1hdFN1ZmZpeCBjbGFzcz1cImNsb3NlLWJ1dHRvbiBzZWNvbmRhcnktdGV4dFwiIChjbGljayk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBjbG9zZVxuICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cInNlbGYtY2VudGVyXCIgW2RpYW1ldGVyXT1cIjE2XCIgKm5nSWY9XCJjdHgubG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCJcbiAgICAgICAgW2NsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgICAgICAob3B0aW9uQWN0aXZhdGVkKT1cIm9uT3B0aW9uQWN0aXZhdGVkKCRldmVudClcIlxuICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgKGNsb3NlZCk9XCJ1cGRhdGVTdGF0ZShmYWxzZSlcIlxuICAgICAgICAob3BlbmVkKT1cInVwZGF0ZVN0YXRlKHRydWUpXCJcbiAgICAgICAgKG9wdGlvbnNTY3JvbGwpPVwib25FbmRTY3JvbGwoKVwiXG4gICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxuICAgID5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJvcGVuICYmIGN0eC5sb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3R4LnZhbHVlc1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBmb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtYXQ+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TGFiZWwob3B0aW9uKSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiFjdHgudmFsdWVzPy5sZW5ndGggJiYgIWFsbG93Tm90Rm91bmRJdGVtc1wiIGRpc2FibGVkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5UGxhY2Vob2xkZXI7IGVsc2UgZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICB7eyBlbXB0eVBsYWNlaG9sZGVyIH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICAgICAge3sgXCJjb21wb25lbnRzLnR5cGVhaGVhZC5ub19pdGVtX2ZvdW5kXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhY3R4LnZhbHVlcz8ubGVuZ3RoICYmIGFsbG93Tm90Rm91bmRJdGVtc1wiIGlkPVwibmV3LXZhbHVlLW9wdGlvblwiIFt2YWx1ZV09XCJzZWFyY2hDb250cm9sLnZhbHVlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0YWxpY1wiPnt7IHNlYXJjaENvbnRyb2wudmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJvcGVuICYmIGN0eC5sb2FkaW5nUGFnZVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGU+XG4gICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGNsYXNzPVwiZGlzYWJsZWQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiJGFueShyZXF1aXJlZClcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -36,12 +36,12 @@ export class NiceAsyncTypeaheadService {
|
|
|
36
36
|
closeRequestSubscription() {
|
|
37
37
|
this.requestsSubscription$?.unsubscribe();
|
|
38
38
|
}
|
|
39
|
-
async initialize(resource
|
|
39
|
+
async initialize(resource) {
|
|
40
40
|
const { initialized } = this.state$.getValue();
|
|
41
41
|
if (initialized) {
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
-
return this.search(resource, ""
|
|
44
|
+
return this.search(resource, "");
|
|
45
45
|
}
|
|
46
46
|
sendRequest(request) {
|
|
47
47
|
return defer(() => {
|
|
@@ -93,15 +93,15 @@ export class NiceAsyncTypeaheadService {
|
|
|
93
93
|
});
|
|
94
94
|
}));
|
|
95
95
|
}
|
|
96
|
-
search(resource, searchQuery
|
|
96
|
+
search(resource, searchQuery) {
|
|
97
97
|
this.requests$.next({
|
|
98
98
|
resource,
|
|
99
99
|
searchQuery,
|
|
100
|
-
searchOptions:
|
|
100
|
+
searchOptions: this.getSearchOptions(),
|
|
101
101
|
page: 0
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
|
-
loadMore(resource
|
|
104
|
+
loadMore(resource) {
|
|
105
105
|
const { loadingPage, isLastPage } = this.state$.getValue();
|
|
106
106
|
if (loadingPage || isLastPage) {
|
|
107
107
|
return;
|
|
@@ -111,7 +111,7 @@ export class NiceAsyncTypeaheadService {
|
|
|
111
111
|
resource,
|
|
112
112
|
page,
|
|
113
113
|
searchQuery,
|
|
114
|
-
searchOptions:
|
|
114
|
+
searchOptions: this.getSearchOptions(),
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
getActive() {
|
|
@@ -120,13 +120,22 @@ export class NiceAsyncTypeaheadService {
|
|
|
120
120
|
getInitialized() {
|
|
121
121
|
return this.state$.value.initialized;
|
|
122
122
|
}
|
|
123
|
+
getSearchOptions() {
|
|
124
|
+
return this.state$.value.searchOptions;
|
|
125
|
+
}
|
|
126
|
+
setSearchOptions(searchOptions) {
|
|
127
|
+
this.state$.next({
|
|
128
|
+
...this.state$.value,
|
|
129
|
+
searchOptions
|
|
130
|
+
});
|
|
131
|
+
}
|
|
123
132
|
setActive(entity) {
|
|
124
133
|
this.state$.next({
|
|
125
134
|
...this.state$.value,
|
|
126
135
|
active: entity ?? null
|
|
127
136
|
});
|
|
128
137
|
}
|
|
129
|
-
async setActiveId(resource, id
|
|
138
|
+
async setActiveId(resource, id) {
|
|
130
139
|
if (!id) {
|
|
131
140
|
return;
|
|
132
141
|
}
|
|
@@ -150,7 +159,7 @@ export class NiceAsyncTypeaheadService {
|
|
|
150
159
|
});
|
|
151
160
|
return;
|
|
152
161
|
}
|
|
153
|
-
const entity = await api.getById(id,
|
|
162
|
+
const entity = await api.getById(id, this.getSearchOptions());
|
|
154
163
|
if (!entity) {
|
|
155
164
|
return;
|
|
156
165
|
}
|
|
@@ -162,7 +171,8 @@ export class NiceAsyncTypeaheadService {
|
|
|
162
171
|
isLastPage: false
|
|
163
172
|
});
|
|
164
173
|
}
|
|
165
|
-
catch {
|
|
174
|
+
catch {
|
|
175
|
+
}
|
|
166
176
|
finally {
|
|
167
177
|
this.state$.next({
|
|
168
178
|
...this.state$.value,
|
|
@@ -170,8 +180,8 @@ export class NiceAsyncTypeaheadService {
|
|
|
170
180
|
});
|
|
171
181
|
}
|
|
172
182
|
}
|
|
173
|
-
reloadActive(resource
|
|
174
|
-
return this.setActiveId(resource, this.state$.value.active?.id
|
|
183
|
+
reloadActive(resource) {
|
|
184
|
+
return this.setActiveId(resource, this.state$.value.active?.id);
|
|
175
185
|
}
|
|
176
186
|
reloadFilteredItems() {
|
|
177
187
|
// TODO: Use a better way to trigger the items$ observable
|
|
@@ -206,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
|
|
|
206
216
|
type: Inject,
|
|
207
217
|
args: [NICE_ASYNC_TYPEAHEAD_PROVIDER]
|
|
208
218
|
}] }]; } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvYXN5bmMtdHlwZWFoZWFkL3Byb3ZpZGVycy9hc3luYy10eXBlYWhlYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNILGVBQWUsRUFBRSxVQUFVLEVBQzNCLEtBQUssRUFBRSxvQkFBb0IsRUFDM0IsS0FBSyxFQUNMLGNBQWMsRUFDZCxJQUFJLEVBQ0osWUFBWSxFQUNaLFFBQVEsRUFFUixPQUFPLEVBRVAsU0FBUyxFQUNaLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRzVFLE1BQU0sT0FBTyxtQkFBbUI7Q0FVL0I7QUFVRCxNQUFNLE9BQU8seUJBQXlCO0lBc0JsQyxZQUFnRixJQUF1QztRQUF2QyxTQUFJLEdBQUosSUFBSSxDQUFtQztRQXJCL0csV0FBTSxHQUF5QyxJQUFJLGVBQWUsQ0FBQztZQUN2RSxLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLEtBQUs7WUFDZCxXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsQ0FBQztZQUNQLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztRQUVJ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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvcixcbiAgICBkZWZlciwgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgRU1QVFksXG4gICAgZmlyc3RWYWx1ZUZyb20sXG4gICAgZnJvbSxcbiAgICBpc09ic2VydmFibGUsXG4gICAgbWVyZ2VNYXAsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmlwdGlvbixcbiAgICBzd2l0Y2hNYXBcbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZyb21Qcm9taXNlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvb2JzZXJ2YWJsZS9pbm5lckZyb21cIjtcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE5JQ0VfQVNZTkNfVFlQRUFIRUFEX1BST1ZJREVSIH0gZnJvbSBcIi4uL2FzeW5jLXR5cGVhaGVhZC5jb25zdGFudFwiO1xuaW1wb3J0IHsgTmljZUFzeW5jVHlwZWFoZWFkUHJvdmlkZXIsIE5pY2VBc3luY1R5cGVhaGVhZFNlYXJjaFJlc3VsdCB9IGZyb20gXCIuL2FzeW5jLXR5cGVhaGVhZC5wcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQXN5bmNUeXBlYWhlYWRTdGF0ZSB7XG4gICAgaXRlbXM6IGFueVtdO1xuICAgIGFjdGl2ZTogYW55O1xuICAgIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgbG9hZGluZ1BhZ2U6IGJvb2xlYW47XG4gICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGlzTGFzdFBhZ2U6IGJvb2xlYW47XG4gICAgc2VhcmNoUXVlcnk/OiBzdHJpbmc7XG4gICAgZXhjbHVkZWRJZHM6IGFueVtdO1xufVxuXG5leHBvcnQgdHlwZSBBc3luY1R5cGVhaGVhZFJlcXVlc3RzID0ge1xuICAgIHJlc291cmNlOiBzdHJpbmc7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIHNlYXJjaFF1ZXJ5Pzogc3RyaW5nO1xuICAgIHNlYXJjaE9wdGlvbnM/OiBhbnk7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZSB7XG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxBc3luY1R5cGVhaGVhZFN0YXRlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe1xuICAgICAgICBpdGVtczogW10sXG4gICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGxvYWRpbmdQYWdlOiBmYWxzZSxcbiAgICAgICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgICAgICBzZWFyY2hRdWVyeTogbnVsbCxcbiAgICAgICAgcGFnZTogMCxcbiAgICAgICAgaXNMYXN0UGFnZTogZmFsc2UsXG4gICAgICAgIGV4Y2x1ZGVkSWRzOiBbXVxuICAgIH0pO1xuXG4gICAgcHVibGljIGxvYWRpbmckID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoeCA9PiB4LmxvYWRpbmcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICBwdWJsaWMgbG9hZGluZ1BhZ2UkID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoeCA9PiB4LmxvYWRpbmdQYWdlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHVibGljIGFjdGl2ZSQgPSB0aGlzLnN0YXRlJC5waXBlKG1hcCh4ID0+IHguYWN0aXZlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHVibGljIGl0ZW1zJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKHggPT4geC5pdGVtcyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHB1YmxpYyBmaWx0ZXJlZEl0ZW1zJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKHggPT4geC5pdGVtcy5maWx0ZXIoaXRlbSA9PiAheC5leGNsdWRlZElkcy5pbmNsdWRlcyhpdGVtLmlkKSkpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHByaXZhdGUgcmVxdWVzdHMkID0gbmV3IFN1YmplY3Q8QXN5bmNUeXBlYWhlYWRSZXF1ZXN0cz4oKTtcbiAgICBwcml2YXRlIHJlcXVlc3RzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOSUNFX0FTWU5DX1RZUEVBSEVBRF9QUk9WSURFUikgcHJpdmF0ZSByZWFkb25seSBhcGlzOiBOaWNlQXN5bmNUeXBlYWhlYWRQcm92aWRlcjxhbnk+W10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwaXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBpcyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RlbkZvclJlcXVlc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVxdWVzdHNTdWJzY3JpcHRpb24kID0gdGhpcy5yZXF1ZXN0cyQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVxdWVzdCkgPT4gdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0KSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VSZXF1ZXN0U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZShyZXNvdXJjZTogc3RyaW5nLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgaW5pdGlhbGl6ZWQgfSA9IHRoaXMuc3RhdGUkLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoKHJlc291cmNlLCBcIlwiLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZFJlcXVlc3QocmVxdWVzdDogQXN5bmNUeXBlYWhlYWRSZXF1ZXN0cyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gZGVmZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhY3RpdmUsIGluaXRpYWxpemVkIH0gPSB0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aXZlICYmICFpbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuYXBpcy5maW5kKHggPT4geC5yZXNvdXJjZSA9PT0gcmVxdWVzdC5yZXNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoIWFwaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcXVlc3QucGFnZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHJlcXVlc3QucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgaXNMYXN0UGFnZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaFF1ZXJ5OiByZXF1ZXN0LnNlYXJjaFF1ZXJ5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1BhZ2U6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXBpLnNlYXJjaChyZXF1ZXN0LnNlYXJjaFF1ZXJ5LCByZXF1ZXN0LnBhZ2UsIHJlcXVlc3Quc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnJvbVByb21pc2UocmVzdWx0KTtcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogcmVxdWVzdC5wYWdlID09PSAwID8gcmVzdWx0Lml0ZW1zIDogWy4uLih0aGlzLnN0YXRlJC52YWx1ZS5pdGVtcyA/PyBbXSksIC4uLnJlc3VsdC5pdGVtc10sXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHJlc3VsdC5uZXh0UGFnZSA/IHJlc3VsdC5uZXh0UGFnZSA6IHRoaXMuc3RhdGUkLnZhbHVlLnBhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2U6ICFyZXN1bHQubmV4dFBhZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBFTVBUWSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1BhZ2U6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2gocmVzb3VyY2U6IHN0cmluZywgc2VhcmNoUXVlcnk6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RzJC5uZXh0KHtcbiAgICAgICAgICAgIHJlc291cmNlLFxuICAgICAgICAgICAgc2VhcmNoUXVlcnksXG4gICAgICAgICAgICBzZWFyY2hPcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgcGFnZTogMFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZE1vcmUocmVzb3VyY2U6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGxvYWRpbmdQYWdlLCBpc0xhc3RQYWdlIH0gPSB0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAobG9hZGluZ1BhZ2UgfHwgaXNMYXN0UGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBzZWFyY2hRdWVyeSwgcGFnZSB9ID0gdGhpcy5zdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0cyQubmV4dCh7XG4gICAgICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICBzZWFyY2hRdWVyeSxcbiAgICAgICAgICAgIHNlYXJjaE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkLnZhbHVlLmFjdGl2ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlJC52YWx1ZS5pbml0aWFsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWN0aXZlKGVudGl0eTogYW55IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSQudmFsdWUsXG4gICAgICAgICAgICBhY3RpdmU6IGVudGl0eSA/PyBudWxsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRBY3RpdmVJZChyZXNvdXJjZTogc3RyaW5nLCBpZDogYW55LCBvcHRpb25zPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuYXBpcy5maW5kKHggPT4geC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UpO1xuICAgICAgICBpZiAoIWFwaSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBsb2NhbEl0ZW0gPSB0aGlzLnN0YXRlJC52YWx1ZS5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCk7XG4gICAgICAgICAgICBpZiAobG9jYWxJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW2xvY2FsSXRlbV0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogbG9jYWxJdGVtLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgICAgICAgICAgICBpc0xhc3RQYWdlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW50aXR5ID0gYXdhaXQgYXBpLmdldEJ5SWQoaWQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbZW50aXR5XSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IGVudGl0eSxcbiAgICAgICAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2U6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7fSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWRBY3RpdmUocmVzb3VyY2U6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRBY3RpdmVJZChyZXNvdXJjZSwgdGhpcy5zdGF0ZSQudmFsdWUuYWN0aXZlPy5pZCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZEZpbHRlcmVkSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IFVzZSBhIGJldHRlciB3YXkgdG8gdHJpZ2dlciB0aGUgaXRlbXMkIG9ic2VydmFibGVcbiAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RmlsdGVyRm4oZmlsdGVyRm46ICh2YWx1ZTogYW55KSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zJCA9IHRoaXMuaXRlbXMkLnBpcGUobWVyZ2VNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShQcm9taXNlLmFsbChpdGVtcy5tYXAoYXN5bmMgaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmaWx0ZXJGbihpdGVtKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW53cmFwcGVkUmVzdWx0ID0gaXNPYnNlcnZhYmxlKHJlc3VsdCkgPyBhd2FpdCBmaXJzdFZhbHVlRnJvbShyZXN1bHQpIDogYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2l0ZW0sIHVud3JhcHBlZFJlc3VsdF07XG4gICAgICAgICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcChpdGVtcyA9PiBpdGVtcy5maWx0ZXIoKFtpdGVtLCBrZWVwXSkgPT4ga2VlcCkubWFwKChbaXRlbSwga2VlcF0pID0+IGl0ZW0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXQocmVzb3VyY2U6IHN0cmluZywgaXRlbTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYXBpID0gdGhpcy5hcGlzLmZpbmQoeCA9PiB4LnJlc291cmNlID09PSByZXNvdXJjZSk7XG4gICAgICAgIGlmICghYXBpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcGkuZm9ybWF0KGl0ZW0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvYXN5bmMtdHlwZWFoZWFkL3Byb3ZpZGVycy9hc3luYy10eXBlYWhlYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNILGVBQWUsRUFDZixVQUFVLEVBQ1YsS0FBSyxFQUNMLG9CQUFvQixFQUNwQixLQUFLLEVBQ0wsY0FBYyxFQUNkLElBQUksRUFDSixZQUFZLEVBQ1osUUFBUSxFQUVSLE9BQU8sRUFFUCxTQUFTLEVBQ1osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHNUUsTUFBTSxPQUFPLG1CQUFtQjtDQVcvQjtBQVVELE1BQU0sT0FBTyx5QkFBeUI7SUFzQmxDLFlBQWdGLElBQXVDO1FBQXZDLFNBQUksR0FBSixJQUFJLENBQW1DO1FBckIvRyxXQUFNLEdBQXlDLElBQUksZUFBZSxDQUFDO1lBQ3ZFLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUsS0FBSztZQUNkLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLElBQUksRUFBRSxDQUFDO1lBQ1AsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO1FBRUks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LEVBQUUsQ0FBQztTQUNiO1FBRUQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7O3NIQTlPUSx5QkFBeUIsa0JBc0JGLDZCQUE2QjswSEF0QnBELHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVOzswQkF1Qk0sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGNhdGNoRXJyb3IsXG4gICAgZGVmZXIsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgRU1QVFksXG4gICAgZmlyc3RWYWx1ZUZyb20sXG4gICAgZnJvbSxcbiAgICBpc09ic2VydmFibGUsXG4gICAgbWVyZ2VNYXAsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmlwdGlvbixcbiAgICBzd2l0Y2hNYXBcbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZyb21Qcm9taXNlIH0gZnJvbSBcInJ4anMvaW50ZXJuYWwvb2JzZXJ2YWJsZS9pbm5lckZyb21cIjtcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IE5JQ0VfQVNZTkNfVFlQRUFIRUFEX1BST1ZJREVSIH0gZnJvbSBcIi4uL2FzeW5jLXR5cGVhaGVhZC5jb25zdGFudFwiO1xuaW1wb3J0IHsgTmljZUFzeW5jVHlwZWFoZWFkUHJvdmlkZXIgfSBmcm9tIFwiLi9hc3luYy10eXBlYWhlYWQucHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEFzeW5jVHlwZWFoZWFkU3RhdGUge1xuICAgIGl0ZW1zOiBhbnlbXTtcbiAgICBhY3RpdmU6IGFueTtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIGxvYWRpbmdQYWdlOiBib29sZWFuO1xuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBpc0xhc3RQYWdlOiBib29sZWFuO1xuICAgIHNlYXJjaFF1ZXJ5Pzogc3RyaW5nO1xuICAgIGV4Y2x1ZGVkSWRzOiBhbnlbXTtcbiAgICBzZWFyY2hPcHRpb25zPzogb2JqZWN0O1xufVxuXG5leHBvcnQgdHlwZSBBc3luY1R5cGVhaGVhZFJlcXVlc3RzID0ge1xuICAgIHJlc291cmNlOiBzdHJpbmc7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIHNlYXJjaFF1ZXJ5Pzogc3RyaW5nO1xuICAgIHNlYXJjaE9wdGlvbnM/OiBhbnk7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZSB7XG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxBc3luY1R5cGVhaGVhZFN0YXRlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe1xuICAgICAgICBpdGVtczogW10sXG4gICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGxvYWRpbmdQYWdlOiBmYWxzZSxcbiAgICAgICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgICAgICBzZWFyY2hRdWVyeTogbnVsbCxcbiAgICAgICAgcGFnZTogMCxcbiAgICAgICAgaXNMYXN0UGFnZTogZmFsc2UsXG4gICAgICAgIGV4Y2x1ZGVkSWRzOiBbXVxuICAgIH0pO1xuXG4gICAgcHVibGljIGxvYWRpbmckID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoeCA9PiB4LmxvYWRpbmcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICBwdWJsaWMgbG9hZGluZ1BhZ2UkID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoeCA9PiB4LmxvYWRpbmdQYWdlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHVibGljIGFjdGl2ZSQgPSB0aGlzLnN0YXRlJC5waXBlKG1hcCh4ID0+IHguYWN0aXZlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcHVibGljIGl0ZW1zJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKHggPT4geC5pdGVtcyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIHB1YmxpYyBmaWx0ZXJlZEl0ZW1zJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKHggPT4geC5pdGVtcy5maWx0ZXIoaXRlbSA9PiAheC5leGNsdWRlZElkcy5pbmNsdWRlcyhpdGVtLmlkKSkpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHByaXZhdGUgcmVxdWVzdHMkID0gbmV3IFN1YmplY3Q8QXN5bmNUeXBlYWhlYWRSZXF1ZXN0cz4oKTtcbiAgICBwcml2YXRlIHJlcXVlc3RzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChOSUNFX0FTWU5DX1RZUEVBSEVBRF9QUk9WSURFUikgcHJpdmF0ZSByZWFkb25seSBhcGlzOiBOaWNlQXN5bmNUeXBlYWhlYWRQcm92aWRlcjxhbnk+W10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmFwaXMpIHtcbiAgICAgICAgICAgIHRoaXMuYXBpcyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RlbkZvclJlcXVlc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVxdWVzdHNTdWJzY3JpcHRpb24kID0gdGhpcy5yZXF1ZXN0cyQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVxdWVzdCkgPT4gdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0KSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VSZXF1ZXN0U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZShyZXNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHsgaW5pdGlhbGl6ZWQgfSA9IHRoaXMuc3RhdGUkLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoKHJlc291cmNlLCBcIlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZFJlcXVlc3QocmVxdWVzdDogQXN5bmNUeXBlYWhlYWRSZXF1ZXN0cyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gZGVmZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhY3RpdmUsIGluaXRpYWxpemVkIH0gPSB0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aXZlICYmICFpbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuYXBpcy5maW5kKHggPT4geC5yZXNvdXJjZSA9PT0gcmVxdWVzdC5yZXNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoIWFwaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcXVlc3QucGFnZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHJlcXVlc3QucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgaXNMYXN0UGFnZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaFF1ZXJ5OiByZXF1ZXN0LnNlYXJjaFF1ZXJ5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1BhZ2U6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXBpLnNlYXJjaChyZXF1ZXN0LnNlYXJjaFF1ZXJ5LCByZXF1ZXN0LnBhZ2UsIHJlcXVlc3Quc2VhcmNoT3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnJvbVByb21pc2UocmVzdWx0KTtcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogcmVxdWVzdC5wYWdlID09PSAwID8gcmVzdWx0Lml0ZW1zIDogWy4uLih0aGlzLnN0YXRlJC52YWx1ZS5pdGVtcyA/PyBbXSksIC4uLnJlc3VsdC5pdGVtc10sXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHJlc3VsdC5uZXh0UGFnZSA/IHJlc3VsdC5uZXh0UGFnZSA6IHRoaXMuc3RhdGUkLnZhbHVlLnBhZ2UsXG4gICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2U6ICFyZXN1bHQubmV4dFBhZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBFTVBUWSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1BhZ2U6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2gocmVzb3VyY2U6IHN0cmluZywgc2VhcmNoUXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlcXVlc3RzJC5uZXh0KHtcbiAgICAgICAgICAgIHJlc291cmNlLFxuICAgICAgICAgICAgc2VhcmNoUXVlcnksXG4gICAgICAgICAgICBzZWFyY2hPcHRpb25zOiB0aGlzLmdldFNlYXJjaE9wdGlvbnMoKSxcbiAgICAgICAgICAgIHBhZ2U6IDBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWRNb3JlKHJlc291cmNlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBsb2FkaW5nUGFnZSwgaXNMYXN0UGFnZSB9ID0gdGhpcy5zdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGxvYWRpbmdQYWdlIHx8IGlzTGFzdFBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgc2VhcmNoUXVlcnksIHBhZ2UgfSA9IHRoaXMuc3RhdGUkLmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVxdWVzdHMkLm5leHQoe1xuICAgICAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgc2VhcmNoUXVlcnksXG4gICAgICAgICAgICBzZWFyY2hPcHRpb25zOiB0aGlzLmdldFNlYXJjaE9wdGlvbnMoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjdGl2ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQudmFsdWUuYWN0aXZlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkLnZhbHVlLmluaXRpYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWFyY2hPcHRpb25zKCk6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlJC52YWx1ZS5zZWFyY2hPcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZWFyY2hPcHRpb25zKHNlYXJjaE9wdGlvbnM6IG9iamVjdCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgc2VhcmNoT3B0aW9uc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWN0aXZlKGVudGl0eTogYW55IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSQudmFsdWUsXG4gICAgICAgICAgICBhY3RpdmU6IGVudGl0eSA/PyBudWxsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRBY3RpdmVJZChyZXNvdXJjZTogc3RyaW5nLCBpZDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuYXBpcy5maW5kKHggPT4geC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UpO1xuICAgICAgICBpZiAoIWFwaSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBsb2NhbEl0ZW0gPSB0aGlzLnN0YXRlJC52YWx1ZS5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZCk7XG4gICAgICAgICAgICBpZiAobG9jYWxJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW2xvY2FsSXRlbV0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogbG9jYWxJdGVtLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgICAgICAgICAgICBpc0xhc3RQYWdlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW50aXR5ID0gYXdhaXQgYXBpLmdldEJ5SWQoaWQsIHRoaXMuZ2V0U2VhcmNoT3B0aW9ucygpKTtcbiAgICAgICAgICAgIGlmICghZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlJC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpdGVtczogW2VudGl0eV0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBlbnRpdHksXG4gICAgICAgICAgICAgICAgcGFnZTogMCxcbiAgICAgICAgICAgICAgICBpc0xhc3RQYWdlOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSQudmFsdWUsXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZEFjdGl2ZShyZXNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldEFjdGl2ZUlkKHJlc291cmNlLCB0aGlzLnN0YXRlJC52YWx1ZS5hY3RpdmU/LmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkRmlsdGVyZWRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgLy8gVE9ETzogVXNlIGEgYmV0dGVyIHdheSB0byB0cmlnZ2VyIHRoZSBpdGVtcyQgb2JzZXJ2YWJsZVxuICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUkLnZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJGbihmaWx0ZXJGbjogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPik6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkID0gdGhpcy5pdGVtcyQucGlwZShtZXJnZU1hcChpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKFByb21pc2UuYWxsKGl0ZW1zLm1hcChhc3luYyBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbHRlckZuKGl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bndyYXBwZWRSZXN1bHQgPSBpc09ic2VydmFibGUocmVzdWx0KSA/IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHJlc3VsdCkgOiBhd2FpdCByZXN1bHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbaXRlbSwgdW53cmFwcGVkUmVzdWx0XTtcbiAgICAgICAgICAgICAgICAgICAgfSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKGl0ZW1zID0+IGl0ZW1zLmZpbHRlcigoW2l0ZW0sIGtlZXBdKSA9PiBrZWVwKS5tYXAoKFtpdGVtLCBrZWVwXSkgPT4gaXRlbSkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdChyZXNvdXJjZTogc3RyaW5nLCBpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhcGkgPSB0aGlzLmFwaXMuZmluZCh4ID0+IHgucmVzb3VyY2UgPT09IHJlc291cmNlKTtcbiAgICAgICAgaWYgKCFhcGkpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwaS5mb3JtYXQoaXRlbSk7XG4gICAgfVxufVxuIl19
|
|
@@ -48,12 +48,7 @@ export class TranslationFormComponent {
|
|
|
48
48
|
}
|
|
49
49
|
set disabled(value) {
|
|
50
50
|
this._disabled = coerceBooleanProperty(value);
|
|
51
|
-
|
|
52
|
-
this.currentControl.disable({ emitEvent: false });
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.currentControl.enable({ emitEvent: false });
|
|
56
|
-
}
|
|
51
|
+
this.handleDisabledState();
|
|
57
52
|
this.stateChanges.next();
|
|
58
53
|
}
|
|
59
54
|
set placeholder(placeholder) {
|
|
@@ -117,6 +112,7 @@ export class TranslationFormComponent {
|
|
|
117
112
|
}
|
|
118
113
|
setLanguage(language) {
|
|
119
114
|
this.currentControl = this.formGroup.get(language);
|
|
115
|
+
this.handleDisabledState();
|
|
120
116
|
this.changeDetectorRef.markForCheck();
|
|
121
117
|
}
|
|
122
118
|
setupFormControls(languages) {
|
|
@@ -130,6 +126,15 @@ export class TranslationFormComponent {
|
|
|
130
126
|
this.formGroup.removeControl(key);
|
|
131
127
|
}
|
|
132
128
|
this.currentControl = this.formGroup.get(languages[0]);
|
|
129
|
+
this.handleDisabledState();
|
|
130
|
+
}
|
|
131
|
+
handleDisabledState() {
|
|
132
|
+
if (this._disabled) {
|
|
133
|
+
this.currentControl?.disable({ emitEvent: false });
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.currentControl?.enable({ emitEvent: false });
|
|
137
|
+
}
|
|
133
138
|
}
|
|
134
139
|
}
|
|
135
140
|
TranslationFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: TranslationFormComponent, deps: [{ token: i1.ControlContainer }, { token: i2.TranslationContextDirective }, { token: i3.NiceTranslationFormService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -162,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
|
|
|
162
167
|
type: HostBinding,
|
|
163
168
|
args: ["attr.aria-describedby"]
|
|
164
169
|
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvdHJhbnNsYXRpb24tZm9ybS9jb21wb25lbnRzL3RyYW5zbGF0aW9uLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUdSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxnQkFBZ0IsRUFFaEIsV0FBVyxFQUdYLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7OztBQU14RixNQUFNLE9BQWdCLHdCQUF3QjtJQTBGMUMsWUFDWSxTQUEyQixFQUMzQixPQUFvQyxFQUNwQyxPQUFtQyxFQUNuQyxpQkFBb0M7UUFIcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBNkI7UUFDcEMsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUl6QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR2hCLGNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQywyRkFBMkY7UUFHL0cs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QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDswTkFTYyxTQUFTO3NCQURuQixXQUFXO3VCQUFDLE9BQU87Z0JBUVQsZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNbEIsUUFBUTtzQkFEbEIsS0FBSztnQkFlSyxRQUFRO3NCQURsQixLQUFLO2dCQWtCSyxXQUFXO3NCQURyQixLQUFLO2dCQWdEQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLEVBQUU7c0JBRFIsV0FBVztnQkFJTCxXQUFXO3NCQURqQixXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29lcmNpb25cIjtcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSxcbiAgICBDb250cm9sQ29udGFpbmVyLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBOZ0NvbnRyb2wsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbkNvbnRleHREaXJlY3RpdmUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy90cmFuc2xhdGlvbi1jb250ZXh0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgTmljZVRyYW5zbGF0aW9uRm9ybVNlcnZpY2UgfSBmcm9tIFwiLi4vcHJvdmlkZXJzL25pY2UtdHJhbnNsYXRpb24tZm9ybS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2xhdGlvbkZvcm1Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIE9uSW5pdCxcbiAgICAgICAgT25EZXN0cm95LFxuICAgICAgICBNYXRGb3JtRmllbGRDb250cm9sPHN0cmluZz4sXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIilcbiAgICBwdWJsaWMgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJ3LWZ1bGxcIjogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmZsb2F0aW5nXCIpXG4gICAgcHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mbG9hdGluZyB8fCAhdGhpcy5lbXB0eTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcmVxdWlyZWQocmVxKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPz9cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz9cbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVtcHR5Q29udHJvbFZhbHVlID1cbiAgICAgICAgICAgICF0aGlzLmN1cnJlbnRDb250cm9sPy52YWx1ZSB8fCAhdGhpcy5jdXJyZW50Q29udHJvbC52YWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgZW1wdHlWYWx1ZSA9XG4gICAgICAgICAgICAhdGhpcy5fdmFsdWUgfHxcbiAgICAgICAgICAgICh0eXBlb2YgdGhpcy5fdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXRoaXMuX3ZhbHVlLmxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGVtcHR5Q29udHJvbFZhbHVlICYmIGVtcHR5VmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2xcbiAgICAgICAgICAgID8gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgcHJpdmF0ZSBjb250ZXh0OiBUcmFuc2xhdGlvbkNvbnRleHREaXJlY3RpdmUsXG4gICAgICAgIHByaXZhdGUgc2VydmljZTogTmljZVRyYW5zbGF0aW9uRm9ybVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmxvYXRpbmcgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4TGVuZ3RoID0gNTI0Mjg4OyAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoZSA8aW5wdXQ+IGVsZW1lbnQuIERlZmF1bHQgdmFsdWUgaXMgNTI0Mjg4XG5cbiAgICBASG9zdEJpbmRpbmcoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nID0gdXVpZC52NCgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XCIpXG4gICAgcHVibGljIGRlc2NyaWJlZEJ5ID0gXCJcIjtcblxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBwdWJsaWMgY3VycmVudENvbnRyb2w/OiBGb3JtQ29udHJvbDtcbiAgICBwdWJsaWMgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgbmdDb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCBOZ0NvbnRyb2w7XG4gICAgcHVibGljIGZvY3VzZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGNvbnRyb2xUeXBlID0gXCJ0cmFuc2xhdGlvbkZvcm1cIjtcblxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0b2ZpbGxlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdXNlckFyaWFEZXNjcmliZWRCeTogc3RyaW5nO1xuXG4gICAgcHVibGljIHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKFwiIFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuY29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5sYW5ndWFnZXMkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxhbmd1YWdlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBGb3JtQ29udHJvbHMobGFuZ3VhZ2VzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGV4dC5hY3RpdmVMYW5ndWFnZSRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYWN0aXZlTGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldExhbmd1YWdlKGFjdGl2ZUxhbmd1YWdlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldChsYW5ndWFnZSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEZvcm1Db250cm9scyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgbGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2xhbmd1YWdlXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2wobGFuZ3VhZ2UsIG5ldyBGb3JtQ29udHJvbChcIlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sVG9SZW1vdmUgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykuZmlsdGVyKFxuICAgICAgICAgICAgKGtleSkgPT4gIWxhbmd1YWdlcy5pbmNsdWRlcyhrZXkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgY29udHJvbFRvUmVtb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnRDb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KGxhbmd1YWdlc1swXSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxufVxuIl19
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvdHJhbnNsYXRpb24tZm9ybS9jb21wb25lbnRzL3RyYW5zbGF0aW9uLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUdSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxnQkFBZ0IsRUFFaEIsV0FBVyxFQUdYLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7OztBQU14RixNQUFNLE9BQWdCLHdCQUF3QjtJQXFGMUMsWUFDWSxTQUEyQixFQUMzQixPQUFvQyxFQUNwQyxPQUFtQyxFQUNuQyxpQkFBb0M7UUFIcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBNkI7UUFDcEMsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUl6QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR2hCLGNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQywyRkFBMkY7UUFHL0cs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O0lBQ0wsQ0FBQzs7cUhBbE1pQix3QkFBd0I7eUdBQXhCLHdCQUF3QixvVkFIaEMsRUFBRTsyRkFHTSx3QkFBd0I7a0JBSjdDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzBOQVNjLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsT0FBTztnQkFRVCxnQkFBZ0I7c0JBRDFCLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU1sQixRQUFRO3NCQURsQixLQUFLO2dCQWVLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBYUssV0FBVztzQkFEckIsS0FBSztnQkFnREMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxFQUFFO3NCQURSLFdBQVc7Z0JBSUwsV0FBVztzQkFEakIsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUsXG4gICAgQ29udHJvbENvbnRhaW5lcixcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgTmdDb250cm9sLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25Db250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RpcmVjdGl2ZXMvdHJhbnNsYXRpb24tY29udGV4dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IE5pY2VUcmFuc2xhdGlvbkZvcm1TZXJ2aWNlIH0gZnJvbSBcIi4uL3Byb3ZpZGVycy9uaWNlLXRyYW5zbGF0aW9uLWZvcm0uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNsYXRpb25Gb3JtQ29tcG9uZW50XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBPbkluaXQsXG4gICAgICAgIE9uRGVzdHJveSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkQ29udHJvbDxzdHJpbmc+LFxuICAgICAgICBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzXCIpXG4gICAgcHVibGljIGdldCBjbGFzc0xpc3QoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFwidy1mdWxsXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5mbG9hdGluZ1wiKVxuICAgIHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvYXRpbmcgfHwgIXRoaXMuZW1wdHk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcSkge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID8/XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/XG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlRGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZW1wdHlDb250cm9sVmFsdWUgPVxuICAgICAgICAgICAgIXRoaXMuY3VycmVudENvbnRyb2w/LnZhbHVlIHx8ICF0aGlzLmN1cnJlbnRDb250cm9sLnZhbHVlLmxlbmd0aDtcblxuICAgICAgICBjb25zdCBlbXB0eVZhbHVlID1cbiAgICAgICAgICAgICF0aGlzLl92YWx1ZSB8fFxuICAgICAgICAgICAgKHR5cGVvZiB0aGlzLl92YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5fdmFsdWUubGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gZW1wdHlDb250cm9sVmFsdWUgJiYgZW1wdHlWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbFxuICAgICAgICAgICAgPyB0aGlzLm5nQ29udHJvbC50b3VjaGVkICYmIHRoaXMubmdDb250cm9sLmludmFsaWRcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgICBwcml2YXRlIGNvbnRleHQ6IFRyYW5zbGF0aW9uQ29udGV4dERpcmVjdGl2ZSxcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlOiBOaWNlVHJhbnNsYXRpb25Gb3JtU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmbG9hdGluZyA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGggPSA1MjQyODg7IC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhlIDxpbnB1dD4gZWxlbWVudC4gRGVmYXVsdCB2YWx1ZSBpcyA1MjQyODhcblxuICAgIEBIb3N0QmluZGluZygpXG4gICAgcHVibGljIGlkOiBzdHJpbmcgPSB1dWlkLnY0KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJhdHRyLmFyaWEtZGVzY3JpYmVkYnlcIilcbiAgICBwdWJsaWMgZGVzY3JpYmVkQnkgPSBcIlwiO1xuXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBjdXJyZW50Q29udHJvbD86IEZvcm1Db250cm9sO1xuICAgIHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHB1YmxpYyBuZ0NvbnRyb2w6IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB8IE5nQ29udHJvbDtcbiAgICBwdWJsaWMgZm9jdXNlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgY29udHJvbFR5cGUgPSBcInRyYW5zbGF0aW9uRm9ybVwiO1xuXG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyByZWFkb25seSBhdXRvZmlsbGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSB1c2VyQXJpYURlc2NyaWJlZEJ5OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgcHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHVibGljIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGUgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5jb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLmxhbmd1YWdlcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGFuZ3VhZ2VzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFsYW5ndWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEZvcm1Db250cm9scyhsYW5ndWFnZXMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0LmFjdGl2ZUxhbmd1YWdlJFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChhY3RpdmVMYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UoYWN0aXZlTGFuZ3VhZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbCQubmV4dCgpO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KGxhbmd1YWdlKSBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgdGhpcy5oYW5kbGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEZvcm1Db250cm9scyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgbGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2xhbmd1YWdlXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2wobGFuZ3VhZ2UsIG5ldyBGb3JtQ29udHJvbChcIlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sVG9SZW1vdmUgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykuZmlsdGVyKFxuICAgICAgICAgICAgKGtleSkgPT4gIWxhbmd1YWdlcy5pbmNsdWRlcyhrZXkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgY29udHJvbFRvUmVtb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1cnJlbnRDb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KGxhbmd1YWdlc1swXSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICAgIHRoaXMuaGFuZGxlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENvbnRyb2w/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|