nuxeo-development-framework 6.1.7 → 6.1.8
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/bundles/nuxeo-development-framework.umd.js +51 -38
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +38 -25
- package/fesm2015/nuxeo-development-framework.js +52 -39
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +5 -5
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
|
-
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
|
|
2
|
+
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, } from '@angular/core';
|
|
3
|
+
import _, { merge } from 'lodash';
|
|
3
4
|
import { BehaviorSubject, combineLatest, forkJoin, of } from 'rxjs';
|
|
4
5
|
import { catchError, filter, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { ACTIONS_TABLE_TEMPLATE, FILTER_CUSTOM_TEMPLATE, SEARCH_TABLE_TEMPLATE } from '../../directives';
|
|
6
|
-
import { COMPARISON_OPERATOR, HtmlDialogComponent } from '../../../../ndf-filters';
|
|
7
|
-
import _ from 'lodash';
|
|
8
|
-
import { PAGE_SIZE } from '../../constants';
|
|
9
6
|
import { DestroySubject } from '../../../../../shared/components';
|
|
7
|
+
import { COMPARISON_OPERATOR, HtmlDialogComponent, } from '../../../../ndf-filters';
|
|
8
|
+
import { PAGE_SIZE } from '../../constants';
|
|
9
|
+
import { ACTIONS_TABLE_TEMPLATE, FILTER_CUSTOM_TEMPLATE, SEARCH_TABLE_TEMPLATE, } from '../../directives';
|
|
10
10
|
import { NDF_EDITOR_TYPE } from '../../../../../shared';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "../../../../ndf-filters/services";
|
|
@@ -54,8 +54,8 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
54
54
|
this._customCriteriaSub = new BehaviorSubject({
|
|
55
55
|
params: {},
|
|
56
56
|
payload: {
|
|
57
|
-
predicateList: []
|
|
58
|
-
}
|
|
57
|
+
predicateList: [],
|
|
58
|
+
},
|
|
59
59
|
});
|
|
60
60
|
this.aggregations$ = this._aggregationsSub.asObservable();
|
|
61
61
|
this.displayedColumns$ = this._displayedColumnsSub.asObservable();
|
|
@@ -63,7 +63,10 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
63
63
|
this.viewMode$ = this._viewModeSub.asObservable();
|
|
64
64
|
this.customFilters$ = this._customCriteriaSub.asObservable();
|
|
65
65
|
this.textSearch$ = this._textSearchSub.asObservable();
|
|
66
|
-
this.searchAndFilters$ = combineLatest([
|
|
66
|
+
this.searchAndFilters$ = combineLatest([
|
|
67
|
+
this.textSearch$,
|
|
68
|
+
this.customFilters$,
|
|
69
|
+
]).pipe(map((res) => this._prepareSearch(res)));
|
|
67
70
|
this.autoCalculateHeight = true;
|
|
68
71
|
this.emptyMessage = 'table_noData';
|
|
69
72
|
this.configPath = 'tables';
|
|
@@ -91,7 +94,7 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
91
94
|
this._activePage = {
|
|
92
95
|
pageIndex: 1,
|
|
93
96
|
pageSize: 10,
|
|
94
|
-
length: 0
|
|
97
|
+
length: 0,
|
|
95
98
|
};
|
|
96
99
|
this.editorType = NDF_EDITOR_TYPE.TABLES;
|
|
97
100
|
this.togglePanel = () => {
|
|
@@ -203,11 +206,14 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
203
206
|
onLoad(data) {
|
|
204
207
|
var _a, _b, _c;
|
|
205
208
|
this.onLoaded.emit(data);
|
|
206
|
-
if (!this._tableInitialized ||
|
|
209
|
+
if (!this._tableInitialized ||
|
|
210
|
+
((_a = this.filterReloadConfig) === null || _a === void 0 ? void 0 : _a.strategy) === 'never' ||
|
|
211
|
+
this._pageChanged) {
|
|
207
212
|
this._pageChanged = false;
|
|
208
213
|
return;
|
|
209
214
|
}
|
|
210
|
-
if (this._isConfigChanged ||
|
|
215
|
+
if (this._isConfigChanged ||
|
|
216
|
+
((_b = this.filterReloadConfig) === null || _b === void 0 ? void 0 : _b.strategy) === 'always') {
|
|
211
217
|
this._aggregationsSub.next(data === null || data === void 0 ? void 0 : data.aggregations);
|
|
212
218
|
return;
|
|
213
219
|
}
|
|
@@ -253,22 +259,25 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
253
259
|
const fields = columns.map((col) => col.headerClass || (col === null || col === void 0 ? void 0 : col.filedKey));
|
|
254
260
|
const headers = columns.map((col) => (this.tableConfig.prefix || '') + col.name);
|
|
255
261
|
const criteria = this._customCriteriaSub.getValue();
|
|
256
|
-
request.params =
|
|
262
|
+
request.params = merge({}, criteria.params, this._sortValue || {}, ((_b = this.tableConfig) === null || _b === void 0 ? void 0 : _b.quickFilters)
|
|
263
|
+
? { quickFilters: this.tableConfig.quickFilters }
|
|
264
|
+
: {}, request === null || request === void 0 ? void 0 : request.params);
|
|
257
265
|
const blobNameKey = (_c = this.exportTableConfig) === null || _c === void 0 ? void 0 : _c.blobName;
|
|
258
|
-
const payload = {
|
|
266
|
+
const payload = merge({}, (request === null || request === void 0 ? void 0 : request.payload) || {}, {
|
|
259
267
|
predicateList: criteria.payload.predicateList || [],
|
|
260
268
|
reportMetaData: {
|
|
261
269
|
blobName: '',
|
|
262
270
|
docTypeName: this.exportTableConfig.docTypeName,
|
|
263
271
|
fileType: type,
|
|
264
|
-
locale: ((_d = this.exportTableConfig) === null || _d === void 0 ? void 0 : _d.locale) ||
|
|
272
|
+
locale: ((_d = this.exportTableConfig) === null || _d === void 0 ? void 0 : _d.locale) ||
|
|
273
|
+
this._translateService.currentLang,
|
|
265
274
|
fields: ((_e = this.exportTableConfig) === null || _e === void 0 ? void 0 : _e.fields) || fields,
|
|
266
|
-
headers: []
|
|
267
|
-
}
|
|
268
|
-
};
|
|
275
|
+
headers: [],
|
|
276
|
+
},
|
|
277
|
+
});
|
|
269
278
|
forkJoin({
|
|
270
279
|
ar: this._translateService.getTranslation('ar'),
|
|
271
|
-
en: this._translateService.getTranslation('en')
|
|
280
|
+
en: this._translateService.getTranslation('en'),
|
|
272
281
|
})
|
|
273
282
|
.pipe(switchMap((translations) => {
|
|
274
283
|
const currentTranslations = translations[this._translateService.currentLang];
|
|
@@ -294,7 +303,9 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
294
303
|
this._triggerCriteriaChanges(criteria);
|
|
295
304
|
if (((_a = this.filtersConfig) === null || _a === void 0 ? void 0 : _a.mode) !== 'payload') {
|
|
296
305
|
const isStringifyParams = (_b = this.filtersConfig) === null || _b === void 0 ? void 0 : _b.stringifyParams;
|
|
297
|
-
const value = !isStringifyParams
|
|
306
|
+
const value = !isStringifyParams
|
|
307
|
+
? criteria
|
|
308
|
+
: this._stringifyValues(criteria);
|
|
298
309
|
this._dynamicTableService.refreshData.next(value);
|
|
299
310
|
return;
|
|
300
311
|
}
|
|
@@ -302,7 +313,9 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
302
313
|
this._customCriteriaSub.next(payload);
|
|
303
314
|
}
|
|
304
315
|
onPageChanged(page) {
|
|
305
|
-
this._pageChanged =
|
|
316
|
+
this._pageChanged =
|
|
317
|
+
this._activePage.pageIndex !== page.pageIndex ||
|
|
318
|
+
this._activePage.pageSize !== page.pageSize;
|
|
306
319
|
if (this._pageChanged) {
|
|
307
320
|
this.onPage.emit(page);
|
|
308
321
|
this._activePage = page;
|
|
@@ -325,7 +338,7 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
325
338
|
predicateList.push({
|
|
326
339
|
name: _key,
|
|
327
340
|
operator: ((_b = this.textSearchConfig) === null || _b === void 0 ? void 0 : _b.operator) || COMPARISON_OPERATOR.equals,
|
|
328
|
-
value: `'${search}'
|
|
341
|
+
value: `'${search}'`,
|
|
329
342
|
});
|
|
330
343
|
}
|
|
331
344
|
}
|
|
@@ -349,7 +362,7 @@ export class NdfTableComponent extends DestroySubject {
|
|
|
349
362
|
const previousValue = activatedQuery === null || activatedQuery === void 0 ? void 0 : activatedQuery.currentValue;
|
|
350
363
|
this._activatedCriteriaSub.next({
|
|
351
364
|
previousValue: previousValue,
|
|
352
|
-
currentValue: criteria
|
|
365
|
+
currentValue: criteria,
|
|
353
366
|
});
|
|
354
367
|
}
|
|
355
368
|
/**
|
|
@@ -405,8 +418,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
405
418
|
styleUrls: ['./ndf-table.component.scss'],
|
|
406
419
|
host: {
|
|
407
420
|
class: 'ndf-table',
|
|
408
|
-
'[dir]': 'direction'
|
|
409
|
-
}
|
|
421
|
+
'[dir]': 'direction',
|
|
422
|
+
},
|
|
410
423
|
}]
|
|
411
424
|
}], ctorParameters: function () { return [{ type: i1.FiltersMapperService }, { type: i2.DynamicTableService }, { type: i3.TranslateService }, { type: i4.NdfTableService }, { type: i5.CustomToastrService }, { type: i4.NdfTableConfigurationService }, { type: i6.MatDialog }]; }, propDecorators: { rows: [{
|
|
412
425
|
type: Input
|
|
@@ -466,4 +479,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
466
479
|
type: ContentChild,
|
|
467
480
|
args: [FILTER_CUSTOM_TEMPLATE, { read: TemplateRef }]
|
|
468
481
|
}] } });
|
|
469
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBbUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pHLE9BQU8sRUFFTixtQkFBbUIsRUFFbkIsbUJBQW1CLEVBRW5CLE1BQU0seUJBQXlCLENBQUM7QUFZakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFNbEUsT0FB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S0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHTyxNQUFNO3NCQUFsQixLQUFLO2dCQVFPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBTU8sVUFBVTtzQkFBdEIsS0FBSztnQkFNSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFHUCxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUczRCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUcxRCxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGQsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRPdXRwdXQsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBpaWYsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCBGSUxURVJfQ1VTVE9NX1RFTVBMQVRFLCBTRUFSQ0hfVEFCTEVfVEVNUExBVEUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHtcclxuXHRBZ2dyZWdhdGlvblJlc3BvbnNlLFxyXG5cdENPTVBBUklTT05fT1BFUkFUT1IsXHJcblx0Rm9ybVF1ZXJ5TW9kZWwsXHJcblx0SHRtbERpYWxvZ0NvbXBvbmVudCxcclxuXHRIdG1sRGlhbG9nQ29uZmlnXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWZpbHRlcnMnO1xyXG5pbXBvcnQge1xyXG5cdEN1c3RvbUNyaXRlcmlhTW9kZWwsXHJcblx0RXhwb3J0VHlwZSxcclxuXHROZGZFeHBvcnRQYXlsb2FkLFxyXG5cdE5kZlRhYmxlQ29uZmlnLFxyXG5cdFNvcnRUYWJsZUl0ZW0sXHJcblx0VGFibGVDb2x1bW5Db25maWcsXHJcblx0VGFibGVTb3J0T3B0aW9ucyxcclxuXHRUYWJsZVZpZXdNb2RlXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZSwgTmRmVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBQQUdFX1NJWkUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgRGVzdHJveVN1YmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IE51eGVvUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBEeW5hbWljVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZHluYW1pYy10YWJsZSc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBGaWx0ZXJzTWFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgTkRGX0VESVRPUl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLW5kZi10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbmRmLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aG9zdDoge1xyXG5cdFx0Y2xhc3M6ICduZGYtdGFibGUnLFxyXG5cdFx0J1tkaXJdJzogJ2RpcmVjdGlvbidcclxuXHR9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZGZUYWJsZUNvbXBvbmVudCBleHRlbmRzIERlc3Ryb3lTdWJqZWN0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9hZ2dyZWdhdGlvbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlY29yZDxzdHJpbmcsIEFnZ3JlZ2F0aW9uUmVzcG9uc2U+PihudWxsKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9kaXNwbGF5ZWRDb2x1bW5zU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbkNvbmZpZ1tdPihbXSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfc29ydE9wdGlvblN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVTb3J0T3B0aW9ucz4obnVsbCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfdmlld01vZGVTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlVmlld01vZGU+KCdsaXN0Jyk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfdGV4dFNlYXJjaFN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGVkQ3JpdGVyaWFTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuXHRcdHByZXZpb3VzVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHRjdXJyZW50VmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0fT4obnVsbCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUNyaXRlcmlhU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDdXN0b21Dcml0ZXJpYU1vZGVsPih7XHJcblx0XHRwYXJhbXM6IHt9LFxyXG5cdFx0cGF5bG9hZDoge1xyXG5cdFx0XHRwcmVkaWNhdGVMaXN0OiBbXVxyXG5cdFx0fVxyXG5cdH0pO1xyXG5cclxuXHRyZWFkb25seSBhZ2dyZWdhdGlvbnMkID0gdGhpcy5fYWdncmVnYXRpb25zU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSBzb3J0T3B0aW9uJCA9IHRoaXMuX3NvcnRPcHRpb25TdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgdmlld01vZGUkID0gdGhpcy5fdmlld01vZGVTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgY3VzdG9tRmlsdGVycyQgPSB0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSB0ZXh0U2VhcmNoJCA9IHRoaXMuX3RleHRTZWFyY2hTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHJlYWRvbmx5IHNlYXJjaEFuZEZpbHRlcnMkID0gY29tYmluZUxhdGVzdChbdGhpcy50ZXh0U2VhcmNoJCwgdGhpcy5jdXN0b21GaWx0ZXJzJF0pLnBpcGUoXHJcblx0XHRtYXAoKHJlcykgPT4gdGhpcy5fcHJlcGFyZVNlYXJjaChyZXMpKVxyXG5cdCk7XHJcblx0QElucHV0KCkgcm93czogQXJyYXk8dW5rbm93bj47XHJcblx0QElucHV0KCkgdG90YWxSZWNvcmRzOiBudW1iZXI7XHJcblx0QElucHV0KCkgYXV0b0NhbGN1bGF0ZUhlaWdodCA9IHRydWU7XHJcblx0QElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ3RhYmxlX25vRGF0YSc7XHJcblx0QElucHV0KCkgYWN0aXZlUXVlcnk6IEZvcm1RdWVyeU1vZGVsO1xyXG5cdEBJbnB1dCgpIGNvbmZpZ1BhdGg6IHN0cmluZyA9ICd0YWJsZXMnO1xyXG5cdEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuXHRASW5wdXQoKSBjb25maWdUcmFuc2Zvcm1lcjogKGNvbmZpZzogTmRmVGFibGVDb25maWcpID0+IE9ic2VydmFibGU8TmRmVGFibGVDb25maWc+O1xyXG5cdEBJbnB1dCgpIHRhYmxlS2V5OiBzdHJpbmc7XHJcblxyXG5cdEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdHByaXZhdGUgX2NvbmZpZzogTmRmVGFibGVDb25maWc7XHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKSB7XHJcblx0XHR0aGlzLl9jb25maWcgPSBjb25maWc7XHJcblx0fVxyXG5cclxuXHRnZXQgdGFibGVDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fdGFibGVDb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIHNldCBjdXN0b21Dcml0ZXJpYShjcml0ZXJpYTogQ3VzdG9tQ3JpdGVyaWFNb2RlbCkge1xyXG5cdFx0aWYgKGNyaXRlcmlhKSB7XHJcblx0XHRcdHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQoY3JpdGVyaWEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QElucHV0KCkgc2V0IHNlYXJjaFRlcm0odmFsdWU6IHN0cmluZykge1xyXG5cdFx0aWYgKHZhbHVlKSB7XHJcblx0XHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25HZXR0aW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25NdWx0aVJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cdEBPdXRwdXQoKSBvblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuXHRAT3V0cHV0KCkgb25Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnV4ZW9QYWdpbmF0aW9uPGFueT4+KCk7XHJcblx0QE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHJcblx0QE91dHB1dCgpIG9uUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uU29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0T3B0aW9ucz4oKTtcclxuXHJcblx0QENvbnRlbnRDaGlsZChBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcblx0YWN0aW9uc1RhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblx0QENvbnRlbnRDaGlsZChTRUFSQ0hfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuXHRzZWFyY2hUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdEBDb250ZW50Q2hpbGQoRklMVEVSX0NVU1RPTV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG5cdGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuXHRwcml2YXRlIF90YWJsZUNvbmZpZ1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmVGFibGVDb25maWc+KG51bGwpO1xyXG5cclxuXHRnZXQgb3B0aW9ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5vcHRpb25zO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpbHRlcnNDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNvcnRMaXN0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uc29ydExpc3QgfHwgW107XHJcblx0fVxyXG5cclxuXHRnZXQgY29sdW1uc09wdGlvbnMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8ub3B0aW9ucz8uY29sdW1ucztcclxuXHR9XHJcblxyXG5cdGdldCBjb2x1bW5Ub2dnbGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5jb2x1bW5zT3B0aW9ucz8udG9nZ2xlID8/IHRydWU7XHJcblx0fVxyXG5cclxuXHRnZXQgdGFibGVNb2RlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8udGFibGVNb2RlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBhbmVsQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw7XHJcblx0fVxyXG5cclxuXHRnZXQgaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLnBhbmVsQ29uZmlnPy50b2dnbGVCdXR0b24gPz8gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdldCB0ZXh0U2VhcmNoQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uc2VhcmNoO1xyXG5cdH1cclxuXHJcblx0Z2V0IGZpbHRlclJlbG9hZENvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM/LnJlbG9hZDtcclxuXHR9XHJcblxyXG5cdGdldCBleHBvcnRUYWJsZUNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmV4cG9ydDtcclxuXHR9XHJcblxyXG5cdHJlYWRvbmx5IGRlZmF1bHRTb3J0ID0gW3sgcHJvcDogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV07XHJcblxyXG5cdGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblx0aXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG5cdHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZXMgPSBQQUdFX1NJWkU7XHJcblxyXG5cdHByaXZhdGUgX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX3RhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9wYWdlQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX2FjdGl2ZVBhZ2U6IFBhZ2VFdmVudCA9IHtcclxuXHRcdHBhZ2VJbmRleDogMSxcclxuXHRcdHBhZ2VTaXplOiAxMCxcclxuXHRcdGxlbmd0aDogMFxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgX3NvcnRWYWx1ZTogVGFibGVTb3J0T3B0aW9ucztcclxuXHJcblx0ZWRpdG9yVHlwZSA9IE5ERl9FRElUT1JfVFlQRS5UQUJMRVM7XHJcblx0LyoqXHJcblx0ICpcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgX2ZpbHRlcnNNYXBwZXI6IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZHluYW1pY1RhYmxlU2VydmljZTogRHluYW1pY1RhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9uZ1RhYmxlU2VydmljZTogTmRmVGFibGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdG9hc3RyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX25kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2U6IE5kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZ1xyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXHJcblx0XHRcdC5waXBlKHN0YXJ0V2l0aCh7IGxhbmc6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb24gPSByZXMubGFuZyA9PT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHR0b2dnbGVQYW5lbCA9ICgpID0+IHtcclxuXHRcdHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcblx0fTtcclxuXHJcblxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRjb25zdCB0YWJsZUtleSA9IGNoYW5nZXMudGFibGVLZXk/LmN1cnJlbnRWYWx1ZTtcclxuXHRcdGNvbnN0IGNvbmZpZyA9IGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWU7XHJcblxyXG5cdFx0aWYgKHRhYmxlS2V5ICYmIGNvbmZpZykge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3Qgc2V0IGJvdGggdGFibGVLZXkgYW5kIHRhYmxlQ29uZmlnIGF0IHRoZSBzYW1lIHRpbWUuJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNvbmZpZykge1xyXG5cdFx0XHR0aGlzLl9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRhYmxlS2V5KSB7XHJcblx0XHRcdHRoaXMuX2xvYWRUYWJsZUNvbmZpZyh0YWJsZUtleSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkxvYWQoZGF0YTogTnV4ZW9QYWdpbmF0aW9uPGFueT4pOiB2b2lkIHtcclxuXHRcdHRoaXMub25Mb2FkZWQuZW1pdChkYXRhKTtcclxuXHRcdGlmICghdGhpcy5fdGFibGVJbml0aWFsaXplZCB8fCB0aGlzLmZpbHRlclJlbG9hZENvbmZpZz8uc3RyYXRlZ3kgPT09ICduZXZlcicgfHwgdGhpcy5fcGFnZUNoYW5nZWQpIHtcclxuXHRcdFx0dGhpcy5fcGFnZUNoYW5nZWQgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgfHwgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnYWx3YXlzJykge1xyXG5cdFx0XHR0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ29uQ2hhbmdlJykge1xyXG5cdFx0XHRjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLmdldFZhbHVlKCk7XHJcblx0XHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5jdXJyZW50VmFsdWUgfHwge307XHJcblx0XHRcdGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8ucHJldmlvdXNWYWx1ZSB8fCB7fTtcclxuXHJcblx0XHRcdGNvbnN0IHVwZGF0ZWRLZXlzID0gXy51bmlvbihfLmtleXMocHJldmlvdXNWYWx1ZSksIF8ua2V5cyhjdXJyZW50VmFsdWUpKS5maWx0ZXIoXHJcblx0XHRcdFx0KGtleSkgPT4gIV8uaXNFcXVhbChwcmV2aW91c1ZhbHVlW2tleV0sIGN1cnJlbnRWYWx1ZVtrZXldKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0Y29uc3QgdHJpZ2dlcktleXMgPSB0aGlzLmZpbHRlclJlbG9hZENvbmZpZy50cmlnZ2VyRmllbGRzIHx8IFtdO1xyXG5cdFx0XHRjb25zdCBzaG91bGRSZWxvYWQgPSB0cmlnZ2VyS2V5cy5zb21lKChrZXkpID0+IHVwZGF0ZWRLZXlzLmluY2x1ZGVzKGtleSkpO1xyXG5cdFx0XHRpZiAoc2hvdWxkUmVsb2FkKSB7XHJcblx0XHRcdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25Jbml0aWFsaXplKGRhdGE6IE51eGVvUGFnaW5hdGlvbjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG5cdFx0dGhpcy5fdGFibGVJbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHR0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMub25Jbml0aWFsaXplZC5lbWl0KGRhdGEpO1xyXG5cdH1cclxuXHJcblx0Y29sdW1uc0NoYW5nZWQoY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXSkge1xyXG5cdFx0dGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5uZXh0KGNvbHVtbnMpO1xyXG5cdH1cclxuXHJcblx0c29ydENoYW5nZWQoc29ydDogU29ydFRhYmxlSXRlbSkge1xyXG5cdFx0dGhpcy5fc29ydFZhbHVlID0geyBzb3J0Qnk6IHNvcnQudmFsdWUsIHNvcnRPcmRlcjogc29ydC5kaXJlY3Rpb24gfTtcclxuXHRcdHRoaXMuX3NvcnRPcHRpb25TdWIubmV4dCh0aGlzLl9zb3J0VmFsdWUpO1xyXG5cdH1cclxuXHJcblx0bW9kZUNoYW5nZWQobW9kZTogVGFibGVWaWV3TW9kZSkge1xyXG5cdFx0dGhpcy5fdmlld01vZGVTdWIubmV4dChtb2RlKTtcclxuXHR9XHJcblxyXG5cdG9uU29ydENoYW5nZWQoc29ydDogVGFibGVTb3J0T3B0aW9ucykge1xyXG5cdFx0dGhpcy5fc29ydFZhbHVlID0gc29ydDtcclxuXHRcdHRoaXMub25Tb3J0LmVtaXQoc29ydCk7XHJcblx0fVxyXG5cclxuXHRleHBvcnRUYWJsZSh0eXBlOiBFeHBvcnRUeXBlKSB7XHJcblx0XHRjb25zdCByZXF1ZXN0ID0gXy5jbG9uZURlZXAodGhpcy5leHBvcnRUYWJsZUNvbmZpZz8ucmVxdWVzdCk7XHJcblx0XHRpZiAoIXJlcXVlc3QpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgY29sdW1ucyA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuZ2V0VmFsdWUoKTtcclxuXHRcdGNvbnN0IGZpZWxkcyA9IGNvbHVtbnMubWFwKChjb2wpID0+IGNvbC5oZWFkZXJDbGFzcyB8fCBjb2w/LmZpbGVkS2V5KTtcclxuXHRcdGNvbnN0IGhlYWRlcnMgPSBjb2x1bW5zLm1hcCgoY29sKSA9PiAodGhpcy50YWJsZUNvbmZpZy5wcmVmaXggfHwgJycpICsgY29sLm5hbWUpO1xyXG5cclxuXHRcdGNvbnN0IGNyaXRlcmlhID0gdGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIuZ2V0VmFsdWUoKTtcclxuXHJcblx0XHRyZXF1ZXN0LnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oXHJcblx0XHRcdHt9LFxyXG5cdFx0XHRjcml0ZXJpYS5wYXJhbXMsXHJcblx0XHRcdHRoaXMuX3NvcnRWYWx1ZSB8fCB7fSxcclxuXHRcdFx0dGhpcy50YWJsZUNvbmZpZz8ucXVpY2tGaWx0ZXJzID8geyBxdWlja0ZpbHRlcnM6IHRoaXMudGFibGVDb25maWcucXVpY2tGaWx0ZXJzIH0gOiB7fSxcclxuXHRcdFx0cmVxdWVzdC5wYXJhbXNcclxuXHRcdCk7XHJcblxyXG5cdFx0Y29uc3QgYmxvYk5hbWVLZXkgPSB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5ibG9iTmFtZTtcclxuXHRcdGNvbnN0IHBheWxvYWQ6IE5kZkV4cG9ydFBheWxvYWQgPSB7XHJcblx0XHRcdHByZWRpY2F0ZUxpc3Q6IGNyaXRlcmlhLnBheWxvYWQucHJlZGljYXRlTGlzdCB8fCBbXSxcclxuXHRcdFx0cmVwb3J0TWV0YURhdGE6IHtcclxuXHRcdFx0XHRibG9iTmFtZTogJycsXHJcblx0XHRcdFx0ZG9jVHlwZU5hbWU6IHRoaXMuZXhwb3J0VGFibGVDb25maWcuZG9jVHlwZU5hbWUsXHJcblx0XHRcdFx0ZmlsZVR5cGU6IHR5cGUsXHJcblx0XHRcdFx0bG9jYWxlOiB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5sb2NhbGUgfHwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyxcclxuXHRcdFx0XHRmaWVsZHM6IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmZpZWxkcyB8fCBmaWVsZHMsXHJcblx0XHRcdFx0aGVhZGVyczogW11cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHRmb3JrSm9pbih7XHJcblx0XHRcdGFyOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdhcicpLFxyXG5cdFx0XHRlbjogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbignZW4nKVxyXG5cdFx0fSlcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0c3dpdGNoTWFwKCh0cmFuc2xhdGlvbnMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRUcmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbnNbdGhpcy5fdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ107XHJcblx0XHRcdFx0XHRwYXlsb2FkLnJlcG9ydE1ldGFEYXRhLmhlYWRlcnMgPSBoZWFkZXJzLm1hcCgoY29sKSA9PiBfLmdldChjdXJyZW50VHJhbnNsYXRpb25zLCBjb2wpKTtcclxuXHRcdFx0XHRcdHBheWxvYWQucmVwb3J0TWV0YURhdGEuYmxvYk5hbWUgPSBfLmdldCh0cmFuc2xhdGlvbnNbJ2FyJ10sIGJsb2JOYW1lS2V5KTtcclxuXHRcdFx0XHRcdHBheWxvYWQucmVwb3J0TWV0YURhdGEuYmxvYk5hbWVFbiA9IF8uZ2V0KHRyYW5zbGF0aW9uc1snZW4nXSwgYmxvYk5hbWVLZXkpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX25nVGFibGVTZXJ2aWNlLmV4cG9ydFRhYmxlKHJlcXVlc3QsIHBheWxvYWQpLnBpcGUoXHJcblx0XHRcdFx0XHRcdGNhdGNoRXJyb3IoKF8pID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQuUmVxdWVzdEVycm9yJyk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9mKGZhbHNlKTtcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSksXHJcblxyXG5cdFx0XHRcdGZpbHRlcihCb29sZWFuKSxcclxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKChyZXM6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzKSB7XHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoJ1RBQkxFLkVYUE9SVC5yZXF1ZXN0U3VjY2VzcycpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQucmVxdWVzdEVycm9yJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGZpbHRlckNoYW5nZWQoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdHRoaXMuX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWEpO1xyXG5cdFx0aWYgKHRoaXMuZmlsdGVyc0NvbmZpZz8ubW9kZSAhPT0gJ3BheWxvYWQnKSB7XHJcblx0XHRcdGNvbnN0IGlzU3RyaW5naWZ5UGFyYW1zID0gdGhpcy5maWx0ZXJzQ29uZmlnPy5zdHJpbmdpZnlQYXJhbXM7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gIWlzU3RyaW5naWZ5UGFyYW1zID8gY3JpdGVyaWEgOiB0aGlzLl9zdHJpbmdpZnlWYWx1ZXMoY3JpdGVyaWEpO1xyXG5cdFx0XHR0aGlzLl9keW5hbWljVGFibGVTZXJ2aWNlLnJlZnJlc2hEYXRhLm5leHQodmFsdWUpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZCA9IHRoaXMuX2ZpbHRlcnNNYXBwZXIucHJlcGFyZVBheWxvYWQodGhpcy5maWx0ZXJzQ29uZmlnLmZpZWxkcywgY3JpdGVyaWEpO1xyXG5cdFx0dGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIubmV4dChwYXlsb2FkKTtcclxuXHR9XHJcblxyXG5cdG9uVGV4dFNlYXJjaCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuXHRcdGlmICghdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleSB8fCB0eXBlb2YgdGV4dCAhPT0gJ3N0cmluZycpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghdGV4dCkge1xyXG5cdFx0XHR0aGlzLm9uQ2xlYXJTZWFyY2goKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KHRleHQpO1xyXG5cdH07XHJcblxyXG5cdG9wZW5TZWFyY2hNb2RhbCA9ICgpID0+IHtcclxuXHRcdGNvbnN0IF9kaWFsb2dDb25maWcgPSB0aGlzLnRleHRTZWFyY2hDb25maWc/LnN1ZmZpeD8uZGlhbG9nO1xyXG5cdFx0aWYgKCFfZGlhbG9nQ29uZmlnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHsgb3B0aW9ucywgLi4uZGF0YSB9ID0gX2RpYWxvZ0NvbmZpZztcclxuXHRcdHRoaXMuX2RpYWxvZy5vcGVuPEh0bWxEaWFsb2dDb21wb25lbnQsIEh0bWxEaWFsb2dDb25maWc+KEh0bWxEaWFsb2dDb21wb25lbnQsIHtcclxuXHRcdFx0cGFuZWxDbGFzczogJ3AtMCcsXHJcblx0XHRcdG1pbldpZHRoOiAnbWluKDUwMHB4LDYwdncpJyxcclxuXHRcdFx0ZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbixcclxuXHRcdFx0Li4ub3B0aW9ucyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSk7XHJcblx0fTtcclxuXHJcblx0b25DbGVhclNlYXJjaCA9ICgpID0+IHtcclxuXHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dChudWxsKTtcclxuXHR9O1xyXG5cclxuXHRvblBhZ2VDaGFuZ2VkKHBhZ2U6IFBhZ2VFdmVudCkge1xyXG5cdFx0dGhpcy5fcGFnZUNoYW5nZWQgPSB0aGlzLl9hY3RpdmVQYWdlLnBhZ2VJbmRleCAhPT0gcGFnZS5wYWdlSW5kZXggfHwgdGhpcy5fYWN0aXZlUGFnZS5wYWdlU2l6ZSAhPT0gcGFnZS5wYWdlU2l6ZTtcclxuXHRcdGlmICh0aGlzLl9wYWdlQ2hhbmdlZCkge1xyXG5cdFx0XHR0aGlzLm9uUGFnZS5lbWl0KHBhZ2UpO1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVQYWdlID0gcGFnZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2ZpbHRlckJ5VmlzaWJpbGl0eShjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdKTogVGFibGVDb2x1bW5Db25maWdbXSB7XHJcblx0XHRyZXR1cm4gY29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gY29sLmRlZmF1bHRWaXNpYmxlKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3ByZXBhcmVTZWFyY2goW3NlYXJjaCwgZmlsdGVyc106IFtcclxuXHRcdHN0cmluZyxcclxuXHRcdHtcclxuXHRcdFx0cGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRcdFx0cGF5bG9hZD86IHsgcHJlZGljYXRlTGlzdDogYW55W10gfSAmIFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHR9XHJcblx0XSk6IGFueSB7XHJcblx0XHR7XHJcblx0XHRcdGNvbnN0IHsgcHJlZGljYXRlTGlzdCB9ID0gZmlsdGVycz8ucGF5bG9hZCB8fCB7IHByZWRpY2F0ZUxpc3Q6IFtdIH07XHJcblx0XHRcdGNvbnN0IF9rZXkgPSB0aGlzLnRleHRTZWFyY2hDb25maWc/LmZpZWxkS2V5O1xyXG5cdFx0XHRjb25zdCBzZWFyY2hJbmRleCA9IHByZWRpY2F0ZUxpc3QuZmluZEluZGV4KChpdG0pID0+IGl0bS5uYW1lID09PSBfa2V5KTtcclxuXHRcdFx0aWYgKHNlYXJjaCAmJiBfa2V5KSB7XHJcblx0XHRcdFx0aWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdHByZWRpY2F0ZUxpc3Rbc2VhcmNoSW5kZXhdLnZhbHVlID0gYCcke3NlYXJjaH0nYDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0cHJlZGljYXRlTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0bmFtZTogX2tleSxcclxuXHRcdFx0XHRcdFx0b3BlcmF0b3I6IHRoaXMudGV4dFNlYXJjaENvbmZpZz8ub3BlcmF0b3IgfHwgQ09NUEFSSVNPTl9PUEVSQVRPUi5lcXVhbHMsXHJcblx0XHRcdFx0XHRcdHZhbHVlOiBgJyR7c2VhcmNofSdgXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSBpZiAoc2VhcmNoSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdHByZWRpY2F0ZUxpc3Quc3BsaWNlKHNlYXJjaEluZGV4KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gXy5jbG9uZURlZXAoeyAuLi5maWx0ZXJzIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoY3JpdGVyaWEpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuXHRcdFx0YWNjW2tleV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlO1xyXG5cdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0fSwge30pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfdHJpZ2dlckNyaXRlcmlhQ2hhbmdlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0aWYgKHRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQpIHtcclxuXHRcdFx0dGhpcy5vblF1ZXJ5Q2hhbmdlLmVtaXQoY3JpdGVyaWEpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgYWN0aXZhdGVkUXVlcnkgPSB7IC4uLnRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLmdldFZhbHVlKCkgfTtcclxuXHRcdGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudFZhbHVlO1xyXG5cdFx0dGhpcy5fYWN0aXZhdGVkQ3JpdGVyaWFTdWIubmV4dCh7XHJcblx0XHRcdHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWUsXHJcblx0XHRcdGN1cnJlbnRWYWx1ZTogY3JpdGVyaWFcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb25cclxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgdGFibGUgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcGFyYW0gY29uZmlnIE5kZlRhYmxlQ29uZmlnXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYXBwbHlUYWJsZUNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKTogdm9pZCB7XHJcblx0XHR0aGlzLl90YWJsZUNvbmZpZ1N1Yi5uZXh0KGNvbmZpZyk7XHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSBjb25maWc/Lm9wdGlvbnM/LmZpbHRlcnM/LnBhbmVsPy52aXNpYmxlID8/IHRydWU7XHJcblx0XHR0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSAhIWNvbmZpZztcclxuXHRcdGlmIChjb25maWcuY29sdW1ucykge1xyXG5cdFx0XHR0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLm5leHQodGhpcy5fZmlsdGVyQnlWaXNpYmlsaXR5KGNvbmZpZy5jb2x1bW5zKSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnLnNvcnRpbmdCeSkge1xyXG5cdFx0XHR0aGlzLl9zb3J0VmFsdWUgPSBjb25maWcuc29ydGluZ0J5O1xyXG5cdFx0XHR0aGlzLl9zb3J0T3B0aW9uU3ViLm5leHQoY29uZmlnLnNvcnRpbmdCeSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnPy5vcHRpb25zPy50YWJsZU1vZGU/Lm1vZGUpIHtcclxuXHRcdFx0dGhpcy5fdmlld01vZGVTdWIubmV4dChjb25maWcub3B0aW9ucy50YWJsZU1vZGUubW9kZSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnLnBhZ2VTaXplKSB7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZVBhZ2UucGFnZVNpemUgPSBjb25maWcucGFnZVNpemU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJpdmF0ZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBMb2FkcyB0aGUgdGFibGUgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQga2V5IGFuZCBhcHBsaWVzIGl0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHVzZWQgdG8gZmV0Y2ggdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24uXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfbG9hZFRhYmxlQ29uZmlnKGtleTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9uZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcblx0XHRcdC5nZXRUYWJsZUNvbmZpZ3VyYXRpb24oa2V5LCB0aGlzLmNvbmZpZ1BhdGgpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHN3aXRjaE1hcCgoY29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5jb25maWdUcmFuc2Zvcm1lciAmJiBfLmlzRnVuY3Rpb24odGhpcy5jb25maWdUcmFuc2Zvcm1lcikpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY29uZmlnVHJhbnNmb3JtZXIoY29uZmlnKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJldHVybiBvZihjb25maWcpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX2FwcGx5VGFibGVDb25maWcoY29uZmlnKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXZcclxuICAqbmdJZj1cInRhYmxlQ29uZmlnXCJcclxuICBjbGFzcz1cIm5kZi10YWJsZV9fY29udGFpbmVyXCJcclxuICBbY2xhc3MucGFuZWwtb3BlbmVkXT1cImlzUGFuZWxPcGVuZWQgJiYgZmlsdGVyc0NvbmZpZ1wiXHJcbiAgW2Rpcl09XCJkaXJlY3Rpb25cIlxyXG4gIG5kZkZsdWlkSGVpZ2h0XHJcbiAgY3NzVmFyPVwiLS1uZGYtdGFibGUtaGVpZ2h0XCJcclxuICBbY2FsY3VsYXRlXT1cImF1dG9DYWxjdWxhdGVIZWlnaHRcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9fcGFuZWxcIiAqbmdJZj1cImZpbHRlcnNDb25maWc/LmZpZWxkc1wiPlxyXG4gICAgPGFwcC1maWx0ZXJzLXBhbmVsXHJcbiAgICAgIFtmaWVsZHNdPVwiZmlsdGVyc0NvbmZpZy5maWVsZHNcIlxyXG4gICAgICBbYWdncmVnYXRpb25zXT1cImFnZ3JlZ2F0aW9ucyQgfCBhc3luY1wiXHJcbiAgICAgIChmaWx0ZXJDaGFuZ2VkKT1cImZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVRdWVyeVwiXHJcbiAgICAgIGNsYXNzPVwibmRmLXRhYmxlX19maWx0ZXJzXCJcclxuICAgICAgW2N1c3RvbVRlbXBsYXRlUmVmXT1cImZpbHRlckN1c3RvbVRlbXBsYXRlXCJcclxuICAgID48L2FwcC1maWx0ZXJzLXBhbmVsPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2NvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2hlYWRlciBmbGV4XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2hlYWRlcl9fY3VzdG9tLWFjdGlvbnMgZmxleCBnYXAteC00IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaFRhYmxlVGVtcGxhdGUgfHwgZGVmYXVsdEFjdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGFibGVDb25maWcsXHJcbiAgICAgICAgICAgIHBhbmVsT3BlbmVkOiBpc1BhbmVsT3BlbmVkLFxyXG4gICAgICAgICAgICB0b2dnbGVQYW5lbDogdG9nZ2xlUGFuZWwsXHJcbiAgICAgICAgICAgIG9wZW5Nb2RhbDogb3BlblNlYXJjaE1vZGFsLFxyXG4gICAgICAgICAgICBzZWFyY2g6IG9uVGV4dFNlYXJjaCxcclxuICAgICAgICAgICAgY2xlYXI6IG9uQ2xlYXJTZWFyY2hcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QWN0aW9uVGVtcGxhdGU+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImlzUGFuZWxUb2dnbGVBdmFpbGFibGUgJiYgISFmaWx0ZXJzQ29uZmlnLmZpZWxkcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+IGZpbHRlcl9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YXBwLXRleHQtc2VhcmNoXHJcbiAgICAgICAgICAgICpuZ0lmPVwidGV4dFNlYXJjaENvbmZpZ1wiXHJcbiAgICAgICAgICAgIFtzZWFyY2hDb25maWddPVwidGV4dFNlYXJjaENvbmZpZ1wiXHJcbiAgICAgICAgICAgIChvcGVuTW9kYWwpPVwib3BlblNlYXJjaE1vZGFsKClcIlxyXG4gICAgICAgICAgICBbc2VhcmNoXT1cInRleHRTZWFyY2gkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAoc2VhcmNoQ2hhbmdlKT1cIm9uVGV4dFNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXJTZWFyY2goKVwiXHJcbiAgICAgICAgICA+PC9hcHAtdGV4dC1zZWFyY2g+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2hlYWRlcl9fYWN0aW9ucyBmbGV4IGdhcC14LTQgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGFwcC1lZGl0b3ItYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cImpzb25FZGl0b3JFbmFibGVkICYmICh0YWJsZUtleSB8fCB0YWJsZUNvbmZpZz8ua2V5KVwiXHJcbiAgICAgICAgICBba2V5XT1cInRhYmxlS2V5IHx8IHRhYmxlQ29uZmlnPy5rZXlcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiZWRpdG9yVHlwZVwiXHJcbiAgICAgICAgPjwvYXBwLWVkaXRvci1idXR0b24+XHJcbiAgICAgICAgPG5kZi10YWJsZS1leHBvcnRcclxuICAgICAgICAgICpuZ0lmPVwiZXhwb3J0VGFibGVDb25maWc/LmVuYWJsZWRcIlxyXG4gICAgICAgICAgW2NvbmZpZ109XCJleHBvcnRUYWJsZUNvbmZpZ1wiXHJcbiAgICAgICAgICAob25FeHBvcnQpPVwiZXhwb3J0VGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvbmRmLXRhYmxlLWV4cG9ydD5cclxuXHJcbiAgICAgICAgPHRhYmxlLXNvcnRpbmctbGlzdFxyXG4gICAgICAgICAgKm5nSWY9XCIhIXNvcnRMaXN0Py5sZW5ndGhcIlxyXG4gICAgICAgICAgW3NvcnRMaXN0XT1cInNvcnRMaXN0XCJcclxuICAgICAgICAgIChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICA+PC90YWJsZS1zb3J0aW5nLWxpc3Q+XHJcbiAgICAgICAgPHRhYmxlLWNvbHVtbnMtdG9nZ2xlclxyXG4gICAgICAgICAgKm5nSWY9XCJjb2x1bW5Ub2dnbGVcIlxyXG4gICAgICAgICAgW2NvbHVtbnNdPVwidGFibGVDb25maWcuY29sdW1uc1wiXHJcbiAgICAgICAgICBbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeFwiXHJcbiAgICAgICAgICBbc29ydGFibGVdPVwiY29sdW1uc09wdGlvbnM/LnNvcnRhYmxlXCJcclxuICAgICAgICAgIChjb2x1bW5zQ2hhbmdlZCk9XCJjb2x1bW5zQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICA+PC90YWJsZS1jb2x1bW5zLXRvZ2dsZXI+XHJcbiAgICAgICAgPG1vZGUtdG9nZ2xlclxyXG4gICAgICAgICAgKm5nSWY9XCJ0YWJsZU1vZGU/LnRvZ2dsZU1vZGVcIlxyXG4gICAgICAgICAgW21vZGVdPVwidGFibGVNb2RlLm1vZGUgfHwgJ2xpc3QnXCJcclxuICAgICAgICAgIFttb2Rlc0xpc3RdPVwidGFibGVNb2RlPy5hdmFpbGFibGVNb2RlXCJcclxuICAgICAgICAgIChtb2RlQ2hhbmdlZCk9XCJtb2RlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICA+PC9tb2RlLXRvZ2dsZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uc1RhYmxlVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgJGltcGxpY2l0OiB0YWJsZUNvbmZpZyxcclxuICAgICAgICAgICAgcGFuZWxPcGVuZWQ6IGlzUGFuZWxPcGVuZWQsXHJcbiAgICAgICAgICAgIHRvZ2dsZVBhbmVsOiB0b2dnbGVQYW5lbCxcclxuICAgICAgICAgICAgb3Blbk1vZGFsOiBvcGVuU2VhcmNoTW9kYWwsXHJcbiAgICAgICAgICAgIHNlYXJjaDogb25UZXh0U2VhcmNoLFxyXG4gICAgICAgICAgICBjbGVhcjogb25DbGVhclNlYXJjaFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxjdHMtZHluYW1pYy10YWJsZVxyXG4gICAgICAqbmdJZj1cIiF0YWJsZUNvbmZpZy5pc0RhdGFQcm92aWRlZFwiXHJcbiAgICAgIGNsYXNzPVwibmRmLXRhYmxlX190YWJsZSB0YWJsZS1zdHlsZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIlxyXG4gICAgICBbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuICAgICAgW3Jlc3BvbnNpdmVDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG4gICAgICBbZnVsbFdpZHRoXT1cInRhYmxlQ29uZmlnLmZ1bGxXaWR0aCB8fCAnYXV0bydcIlxyXG4gICAgICBbcGFnZVNpemVdPVwidGFibGVDb25maWcucGFnZVNpemUgfHwgMTBcIlxyXG4gICAgICBbcGFnZU51bWJlcl09XCJ0YWJsZUNvbmZpZy5wYWdlTnVtYmVyIHx8IDFcIlxyXG4gICAgICBbcGFnZVByb3ZpZGVyXT1cInRhYmxlQ29uZmlnLnBhZ2VQcm92aWRlclwiXHJcbiAgICAgIFtjdXN0b21VcmxdPVwidGFibGVDb25maWcuY3VzdG9tVXJsXCJcclxuICAgICAgW3F1aWNrRmlsdGVyXT1cIlxyXG4gICAgICAgIHRhYmxlQ29uZmlnLnF1aWNrRmlsdGVyc1xyXG4gICAgICAgICAgPyB7IHF1aWNrRmlsdGVyczogdGFibGVDb25maWcucXVpY2tGaWx0ZXJzIH1cclxuICAgICAgICAgIDogdW5kZWZpbmVkXHJcbiAgICAgIFwiXHJcbiAgICAgIFtkZWZ1bHRTb3J0XT1cInRhYmxlQ29uZmlnLmRlZmF1bHRTb3J0IHx8IGRlZmF1bHRTb3J0XCJcclxuICAgICAgW3NvcnRpbmdCeV09XCJzb3J0T3B0aW9uJCB8IGFzeW5jXCJcclxuICAgICAgW2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG4gICAgICBbZmllbGRzXT1cInRhYmxlQ29uZmlnLmZpZWxkc1wiXHJcbiAgICAgIFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG4gICAgICBbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuICAgICAgW3JhbmdlXT1cInRhYmxlQ29uZmlnPy5yYW5nZVwiXHJcbiAgICAgIFtpc1NlYXJjaFBhZ2VdPVwidGFibGVDb25maWc/LmlzU2VhcmNoUGFnZVwiXHJcbiAgICAgIFttdWx0aVNlbGVjdFJvd3NdPVwidGFibGVDb25maWc/Lm11bHRpU2VsZWN0Um93c1wiXHJcbiAgICAgIFtjdXN0b21GaXJzdFJvd109XCJ0YWJsZUNvbmZpZz8uY3VzdG9tRmlyc3RSb3dcIlxyXG4gICAgICBbaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXT1cInRhYmxlQ29uZmlnPy5oaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG4gICAgICBbc2hvd0FjdGlvbnNBc01lbnVdPVwidGFibGVDb25maWc/LnNob3dBY3Rpb25zQXNNZW51XCJcclxuICAgICAgW2ZpbHRlclBhcmFtc109XCJ0YWJsZUNvbmZpZz8uZmlsdGVyUGFyYW1zXCJcclxuICAgICAgW2Zvcm1hdF09XCJ0YWJsZUNvbmZpZz8uZm9ybWF0IHx8ICdNTU1NIGQsIHknXCJcclxuICAgICAgW3BhZ2VTaXplc109XCJ0YWJsZUNvbmZpZz8ucGFnZVNpemVzIHx8IGRlZmF1bHRQYWdlU2l6ZXNcIlxyXG4gICAgICBbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJ1wiXHJcbiAgICAgIFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcbiAgICAgIFtxdWVyeVBhcmFtXT1cInRhYmxlQ29uZmlnLnF1ZXJ5UGFyYW1cIlxyXG4gICAgICBbY3VzdG9tRmlsdGVyc109XCJzZWFyY2hBbmRGaWx0ZXJzJCB8IGFzeW5jXCJcclxuICAgICAgW3RhYmxlQWN0aW9uc109XCJ0YWJsZUNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG4gICAgICBbcmVxdWVzdEFjdGlvbnNdPVwidGFibGVDb25maWc/LnJlcXVlc3RBY3Rpb25zXCJcclxuICAgICAgW2hlYWRlcnNdPVwidGFibGVDb25maWcuaGVhZGVyc1wiXHJcbiAgICAgIChvblJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uUm93SW5kZXhTZWxlY3RlZCk9XCJvblJvd0luZGV4U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKGFjdGlvbk9uUm93KT1cImFjdGlvbk9uUm93LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvbkdldHRpbmdEYXRhKT1cIm9uR2V0dGluZ0RhdGEuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uTG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiXHJcbiAgICAgIChvbkluaXRpYWxpemUpPVwib25Jbml0aWFsaXplKCRldmVudClcIlxyXG4gICAgICAob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Mb2FkaW5nKT1cIm9uTG9hZGluZy5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25QYWdlKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIFtpc0xlZ2FjeU1vZGVdPVwiZmFsc2VcIlxyXG4gICAgICBbc2hvd1RvdGFsUmVjb3JkXT1cInRydWVcIlxyXG4gICAgICAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgZW1wdHlUZW1wbGF0ZVxyXG4gICAgICAgIGxldC1pc0xvYWRpbmdcclxuICAgICAgICBsZXQtcm93cz1cInJvd3NcIlxyXG4gICAgICAgIGxldC1pbml0aWFsaXplZD1cImluaXRpYWxpemVkXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWRhdGFcIiAqbmdJZj1cImlzTG9hZGluZyAmJiBpbml0aWFsaXplZFwiPlxyXG4gICAgICAgICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC01LzZcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFyb3dzLmxlbmd0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFwcC1uby1kYXRhLWZvdW5kXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXQtNFwiXHJcbiAgICAgICAgICAgIFttZXNzYWdlXT1cImVtcHR5TWVzc2FnZVwiXHJcbiAgICAgICAgICA+PC9hcHAtbm8tZGF0YS1mb3VuZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvY3RzLWR5bmFtaWMtdGFibGU+XHJcblxyXG4gICAgPGN0cy10YWJsZVxyXG4gICAgICAqbmdJZj1cInRhYmxlQ29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuICAgICAgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiXHJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgIFtjb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG4gICAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcbiAgICAgIFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcbiAgICAgIFtmdWxsV2lkdGhdPVwidGFibGVDb25maWcuZnVsbFdpZHRoIHx8ICdhdXRvJ1wiXHJcbiAgICAgIFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuICAgICAgW3ByZWZpeF09XCJ0YWJsZUNvbmZpZy5wcmVmaXggfHwgJydcIlxyXG4gICAgICBbdGFibGVNb2RlXT1cInZpZXdNb2RlJCB8IGFzeW5jXCJcclxuICAgICAgW2NvbXBvbmVudE5hbWVdPVwidGFibGVNb2RlPy5bJ2NvbXBvbmVudE5hbWUnXVwiXHJcbiAgICAgIFttdWx0aVNlbGVjdFJvd3NdPVwidGFibGVDb25maWc/Lm11bHRpU2VsZWN0Um93c1wiXHJcbiAgICAgIFtjdXN0b21GaXJzdFJvd109XCJ0YWJsZUNvbmZpZz8uY3VzdG9tRmlyc3RSb3dcIlxyXG4gICAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQ29uZmlnLnRhYmxlQWN0aW9uc1wiXHJcbiAgICAgIFtzaG93QWN0aW9uc0FzTWVudV09XCJ0YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnNBc01lbnVcIlxyXG4gICAgICBbZGVmdWx0U29ydF09XCJ0YWJsZUNvbmZpZy5kZWZhdWx0U29ydCB8fCBkZWZhdWx0U29ydFwiXHJcbiAgICAgIFtmb3JtYXRdPVwidGFibGVDb25maWc/LmZvcm1hdCB8fCAnTU1NTSBkLCB5J1wiXHJcbiAgICAgIFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwidGFibGVDb25maWc/LmhpZ2hsaWdodFNlbGVjdGVkQ2FyZFwiXHJcbiAgICAgIChvblJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uUm93SW5kZXhTZWxlY3RlZCk9XCJvblJvd0luZGV4U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uTXVsdGlSb3dTZWxlY3RlZCk9XCJvbk11bHRpUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKGFjdGlvbk9uUm93KT1cImFjdGlvbk9uUm93LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvblNvcnRpbmcpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgID48L2N0cy10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFDTixlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFFUixFQUFFLEVBQ0YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHbEUsT0FBTyxFQUVOLG1CQUFtQixFQUVuQixtQkFBbUIsR0FFbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUNOLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIscUJBQXFCLEdBQ3JCLE1BQU0s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Q0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdPLE1BQU07c0JBQWxCLEtBQUs7Z0JBUU8sY0FBYztzQkFBMUIsS0FBSztnQkFNTyxVQUFVO3NCQUF0QixLQUFLO2dCQU1JLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUdQLG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzNELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzFELG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvcGFnaW5hdG9yJztcclxuaW1wb3J0IF8sIHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQge1xyXG5cdEJlaGF2aW9yU3ViamVjdCxcclxuXHRjb21iaW5lTGF0ZXN0LFxyXG5cdGZvcmtKb2luLFxyXG5cdE9ic2VydmFibGUsXHJcblx0b2ZcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuXHRjYXRjaEVycm9yLFxyXG5cdGZpbHRlcixcclxuXHRtYXAsXHJcblx0c3RhcnRXaXRoLFxyXG5cdHN3aXRjaE1hcCxcclxuXHR0YWtlVW50aWxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERlc3Ryb3lTdWJqZWN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBOdXhlb1BhZ2luYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvbW9kZWxzJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuXHRBZ2dyZWdhdGlvblJlc3BvbnNlLFxyXG5cdENPTVBBUklTT05fT1BFUkFUT1IsXHJcblx0Rm9ybVF1ZXJ5TW9kZWwsXHJcblx0SHRtbERpYWxvZ0NvbXBvbmVudCxcclxuXHRIdG1sRGlhbG9nQ29uZmlnLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzJztcclxuaW1wb3J0IHsgRHluYW1pY1RhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2R5bmFtaWMtdGFibGUnO1xyXG5pbXBvcnQgeyBQQUdFX1NJWkUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG5cdEFDVElPTlNfVEFCTEVfVEVNUExBVEUsXHJcblx0RklMVEVSX0NVU1RPTV9URU1QTEFURSxcclxuXHRTRUFSQ0hfVEFCTEVfVEVNUExBVEUsXHJcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7XHJcblx0Q3VzdG9tQ3JpdGVyaWFNb2RlbCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdE5kZkV4cG9ydFBheWxvYWQsXHJcblx0TmRmVGFibGVDb25maWcsXHJcblx0U29ydFRhYmxlSXRlbSxcclxuXHRUYWJsZUNvbHVtbkNvbmZpZyxcclxuXHRUYWJsZVNvcnRPcHRpb25zLFxyXG5cdFRhYmxlVmlld01vZGUsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZSwgTmRmVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5cclxuaW1wb3J0IHsgTkRGX0VESVRPUl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgRmlsdGVyc01hcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycy9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1uZGYtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZGYtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25kZi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnbmRmLXRhYmxlJyxcclxuICAgICdbZGlyXSc6ICdkaXJlY3Rpb24nLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZGZUYWJsZUNvbXBvbmVudCBleHRlbmRzIERlc3Ryb3lTdWJqZWN0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9hZ2dyZWdhdGlvbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxyXG4gICAgUmVjb3JkPHN0cmluZywgQWdncmVnYXRpb25SZXNwb25zZT5cclxuICA+KG51bGwpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3BsYXllZENvbHVtbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxyXG4gICAgVGFibGVDb2x1bW5Db25maWdbXVxyXG4gID4oW10pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NvcnRPcHRpb25TdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlU29ydE9wdGlvbnM+KG51bGwpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdNb2RlU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVZpZXdNb2RlPignbGlzdCcpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RleHRTZWFyY2hTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZENyaXRlcmlhU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcbiAgICBwcmV2aW91c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgY3VycmVudFZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH0+KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21Dcml0ZXJpYVN1YiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbUNyaXRlcmlhTW9kZWw+KHtcclxuICAgICAgcGFyYW1zOiB7fSxcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIHByZWRpY2F0ZUxpc3Q6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGFnZ3JlZ2F0aW9ucyQgPSB0aGlzLl9hZ2dyZWdhdGlvbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHJlYWRvbmx5IHNvcnRPcHRpb24kID0gdGhpcy5fc29ydE9wdGlvblN1Yi5hc09ic2VydmFibGUoKTtcclxuICByZWFkb25seSB2aWV3TW9kZSQgPSB0aGlzLl92aWV3TW9kZVN1Yi5hc09ic2VydmFibGUoKTtcclxuICByZWFkb25seSBjdXN0b21GaWx0ZXJzJCA9IHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHJlYWRvbmx5IHRleHRTZWFyY2gkID0gdGhpcy5fdGV4dFNlYXJjaFN1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VhcmNoQW5kRmlsdGVycyQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgIHRoaXMudGV4dFNlYXJjaCQsXHJcbiAgICB0aGlzLmN1c3RvbUZpbHRlcnMkLFxyXG4gIF0pLnBpcGUobWFwKChyZXMpID0+IHRoaXMuX3ByZXBhcmVTZWFyY2gocmVzKSkpO1xyXG4gIEBJbnB1dCgpIHJvd3M6IEFycmF5PHVua25vd24+O1xyXG4gIEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGF1dG9DYWxjdWxhdGVIZWlnaHQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICd0YWJsZV9ub0RhdGEnO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZVF1ZXJ5OiBGb3JtUXVlcnlNb2RlbDtcclxuICBASW5wdXQoKSBjb25maWdQYXRoOiBzdHJpbmcgPSAndGFibGVzJztcclxuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgY29uZmlnVHJhbnNmb3JtZXI6IChcclxuICAgIGNvbmZpZzogTmRmVGFibGVDb25maWdcclxuICApID0+IE9ic2VydmFibGU8TmRmVGFibGVDb25maWc+O1xyXG4gIEBJbnB1dCgpIHRhYmxlS2V5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogTmRmVGFibGVDb25maWc7XHJcbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFibGVDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVDb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBjdXN0b21Dcml0ZXJpYShjcml0ZXJpYTogQ3VzdG9tQ3JpdGVyaWFNb2RlbCkge1xyXG4gICAgaWYgKGNyaXRlcmlhKSB7XHJcbiAgICAgIHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQoY3JpdGVyaWEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHNlYXJjaFRlcm0odmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25HZXR0aW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25NdWx0aVJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnV4ZW9QYWdpbmF0aW9uPGFueT4+KCk7XHJcbiAgQE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0T3B0aW9ucz4oKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgYWN0aW9uc1RhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQENvbnRlbnRDaGlsZChTRUFSQ0hfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICBzZWFyY2hUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoRklMVEVSX0NVU1RPTV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIF90YWJsZUNvbmZpZ1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmVGFibGVDb25maWc+KG51bGwpO1xyXG5cclxuICBnZXQgb3B0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5vcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlcnNDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNvcnRMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uc29ydExpc3QgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXQgY29sdW1uc09wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8ub3B0aW9ucz8uY29sdW1ucztcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5Ub2dnbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zT3B0aW9ucz8udG9nZ2xlID8/IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFibGVNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8udGFibGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhbmVsQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnBhbmVsQ29uZmlnPy50b2dnbGVCdXR0b24gPz8gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCB0ZXh0U2VhcmNoQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uc2VhcmNoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlclJlbG9hZENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM/LnJlbG9hZDtcclxuICB9XHJcblxyXG4gIGdldCBleHBvcnRUYWJsZUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmV4cG9ydDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGRlZmF1bHRTb3J0ID0gW3sgcHJvcDogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV07XHJcblxyXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcbiAgaXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG4gIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZXMgPSBQQUdFX1NJWkU7XHJcblxyXG4gIHByaXZhdGUgX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9wYWdlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2FjdGl2ZVBhZ2U6IFBhZ2VFdmVudCA9IHtcclxuICAgIHBhZ2VJbmRleDogMSxcclxuICAgIHBhZ2VTaXplOiAxMCxcclxuICAgIGxlbmd0aDogMCxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9zb3J0VmFsdWU6IFRhYmxlU29ydE9wdGlvbnM7XHJcblxyXG4gIGVkaXRvclR5cGUgPSBOREZfRURJVE9SX1RZUEUuVEFCTEVTO1xyXG4gIC8qKlxyXG4gICAqXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9maWx0ZXJzTWFwcGVyOiBGaWx0ZXJzTWFwcGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX2R5bmFtaWNUYWJsZVNlcnZpY2U6IER5bmFtaWNUYWJsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbmdUYWJsZVNlcnZpY2U6IE5kZlRhYmxlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9uZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoeyBsYW5nOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gcmVzLmxhbmcgPT09ICdhcicgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgdG9nZ2xlUGFuZWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzUGFuZWxPcGVuZWQgPSAhdGhpcy5pc1BhbmVsT3BlbmVkO1xyXG4gIH07XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHRhYmxlS2V5ID0gY2hhbmdlcy50YWJsZUtleT8uY3VycmVudFZhbHVlO1xyXG4gICAgY29uc3QgY29uZmlnID0gY2hhbmdlcy5jb25maWc/LmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICBpZiAodGFibGVLZXkgJiYgY29uZmlnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnWW91IGNhbm5vdCBzZXQgYm90aCB0YWJsZUtleSBhbmQgdGFibGVDb25maWcgYXQgdGhlIHNhbWUgdGltZS4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLl9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRhYmxlS2V5KSB7XHJcbiAgICAgIHRoaXMuX2xvYWRUYWJsZUNvbmZpZyh0YWJsZUtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxvYWQoZGF0YTogTnV4ZW9QYWdpbmF0aW9uPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMub25Mb2FkZWQuZW1pdChkYXRhKTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgfHxcclxuICAgICAgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnbmV2ZXInIHx8XHJcbiAgICAgIHRoaXMuX3BhZ2VDaGFuZ2VkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fcGFnZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5faXNDb25maWdDaGFuZ2VkIHx8XHJcbiAgICAgIHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ2Fsd2F5cydcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ29uQ2hhbmdlJykge1xyXG4gICAgICBjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLmdldFZhbHVlKCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5jdXJyZW50VmFsdWUgfHwge307XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8ucHJldmlvdXNWYWx1ZSB8fCB7fTtcclxuXHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRLZXlzID0gXy51bmlvbihcclxuICAgICAgICBfLmtleXMocHJldmlvdXNWYWx1ZSksXHJcbiAgICAgICAgXy5rZXlzKGN1cnJlbnRWYWx1ZSlcclxuICAgICAgKS5maWx0ZXIoKGtleSkgPT4gIV8uaXNFcXVhbChwcmV2aW91c1ZhbHVlW2tleV0sIGN1cnJlbnRWYWx1ZVtrZXldKSk7XHJcblxyXG4gICAgICBjb25zdCB0cmlnZ2VyS2V5cyA9IHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnLnRyaWdnZXJGaWVsZHMgfHwgW107XHJcbiAgICAgIGNvbnN0IHNob3VsZFJlbG9hZCA9IHRyaWdnZXJLZXlzLnNvbWUoKGtleSkgPT4gdXBkYXRlZEtleXMuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgIGlmIChzaG91bGRSZWxvYWQpIHtcclxuICAgICAgICB0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkluaXRpYWxpemUoZGF0YTogTnV4ZW9QYWdpbmF0aW9uPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5uZXh0KGRhdGE/LmFnZ3JlZ2F0aW9ucyk7XHJcbiAgICB0aGlzLl90YWJsZUluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5vbkluaXRpYWxpemVkLmVtaXQoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjb2x1bW5zQ2hhbmdlZChjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdKSB7XHJcbiAgICB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLm5leHQoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuICBzb3J0Q2hhbmdlZChzb3J0OiBTb3J0VGFibGVJdGVtKSB7XHJcbiAgICB0aGlzLl9zb3J0VmFsdWUgPSB7IHNvcnRCeTogc29ydC52YWx1ZSwgc29ydE9yZGVyOiBzb3J0LmRpcmVjdGlvbiB9O1xyXG4gICAgdGhpcy5fc29ydE9wdGlvblN1Yi5uZXh0KHRoaXMuX3NvcnRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBtb2RlQ2hhbmdlZChtb2RlOiBUYWJsZVZpZXdNb2RlKSB7XHJcbiAgICB0aGlzLl92aWV3TW9kZVN1Yi5uZXh0KG1vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0Q2hhbmdlZChzb3J0OiBUYWJsZVNvcnRPcHRpb25zKSB7XHJcbiAgICB0aGlzLl9zb3J0VmFsdWUgPSBzb3J0O1xyXG4gICAgdGhpcy5vblNvcnQuZW1pdChzb3J0KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFRhYmxlKHR5cGU6IEV4cG9ydFR5cGUpIHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSBfLmNsb25lRGVlcCh0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5yZXF1ZXN0KTtcclxuICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5nZXRWYWx1ZSgpO1xyXG4gICAgY29uc3QgZmllbGRzID0gY29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLmhlYWRlckNsYXNzIHx8IGNvbD8uZmlsZWRLZXkpO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGNvbHVtbnMubWFwKFxyXG4gICAgICAoY29sKSA9PiAodGhpcy50YWJsZUNvbmZpZy5wcmVmaXggfHwgJycpICsgY29sLm5hbWVcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgY3JpdGVyaWEgPSB0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cclxuICAgIHJlcXVlc3QucGFyYW1zID0gbWVyZ2UoXHJcbiAgICAgIHt9LFxyXG4gICAgICBjcml0ZXJpYS5wYXJhbXMsXHJcbiAgICAgIHRoaXMuX3NvcnRWYWx1ZSB8fCB7fSxcclxuICAgICAgdGhpcy50YWJsZUNvbmZpZz8ucXVpY2tGaWx0ZXJzXHJcbiAgICAgICAgPyB7IHF1aWNrRmlsdGVyczogdGhpcy50YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfVxyXG4gICAgICAgIDoge30sXHJcbiAgICAgIHJlcXVlc3Q/LnBhcmFtc1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBibG9iTmFtZUtleSA9IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmJsb2JOYW1lO1xyXG4gICAgY29uc3QgcGF5bG9hZDogTmRmRXhwb3J0UGF5bG9hZCA9IG1lcmdlKFxyXG4gICAgICB7fSxcclxuICAgICAgcmVxdWVzdD8ucGF5bG9hZCB8fCB7fSxcclxuXHJcbiAgICAgIHtcclxuICAgICAgICBwcmVkaWNhdGVMaXN0OiBjcml0ZXJpYS5wYXlsb2FkLnByZWRpY2F0ZUxpc3QgfHwgW10sXHJcbiAgICAgICAgcmVwb3J0TWV0YURhdGE6IHtcclxuICAgICAgICAgIGJsb2JOYW1lOiAnJyxcclxuICAgICAgICAgIGRvY1R5cGVOYW1lOiB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnLmRvY1R5cGVOYW1lLFxyXG4gICAgICAgICAgZmlsZVR5cGU6IHR5cGUsXHJcbiAgICAgICAgICBsb2NhbGU6XHJcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmxvY2FsZSB8fFxyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5maWVsZHMgfHwgZmllbGRzLFxyXG4gICAgICAgICAgaGVhZGVyczogW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIGFyOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdhcicpLFxyXG4gICAgICBlbjogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbignZW4nKSxcclxuICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgodHJhbnNsYXRpb25zKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRpb25zID1cclxuICAgICAgICAgICAgdHJhbnNsYXRpb25zW3RoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmddO1xyXG4gICAgICAgICAgcGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5oZWFkZXJzID0gaGVhZGVycy5tYXAoKGNvbCkgPT5cclxuICAgICAgICAgICAgXy5nZXQoY3VycmVudFRyYW5zbGF0aW9ucywgY29sKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHBheWxvYWQucmVwb3J0TWV0YURhdGEuYmxvYk5hbWUgPSBfLmdldChcclxuICAgICAgICAgICAgdHJhbnNsYXRpb25zWydhciddLFxyXG4gICAgICAgICAgICBibG9iTmFtZUtleVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHBheWxvYWQucmVwb3J0TWV0YURhdGEuYmxvYk5hbWVFbiA9IF8uZ2V0KFxyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbnNbJ2VuJ10sXHJcbiAgICAgICAgICAgIGJsb2JOYW1lS2V5XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX25nVGFibGVTZXJ2aWNlLmV4cG9ydFRhYmxlKHJlcXVlc3QsIHBheWxvYWQpLnBpcGUoXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKF8pID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQuUmVxdWVzdEVycm9yJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSksXHJcblxyXG4gICAgICAgIGZpbHRlcihCb29sZWFuKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICB0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoJ1RBQkxFLkVYUE9SVC5yZXF1ZXN0U3VjY2VzcycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQucmVxdWVzdEVycm9yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGZpbHRlckNoYW5nZWQoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIHRoaXMuX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWEpO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyc0NvbmZpZz8ubW9kZSAhPT0gJ3BheWxvYWQnKSB7XHJcbiAgICAgIGNvbnN0IGlzU3RyaW5naWZ5UGFyYW1zID0gdGhpcy5maWx0ZXJzQ29uZmlnPy5zdHJpbmdpZnlQYXJhbXM7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gIWlzU3RyaW5naWZ5UGFyYW1zXHJcbiAgICAgICAgPyBjcml0ZXJpYVxyXG4gICAgICAgIDogdGhpcy5fc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhKTtcclxuICAgICAgdGhpcy5fZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5uZXh0KHZhbHVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLl9maWx0ZXJzTWFwcGVyLnByZXBhcmVQYXlsb2FkKFxyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuZmllbGRzLFxyXG4gICAgICBjcml0ZXJpYVxyXG4gICAgKTtcclxuICAgIHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICBvblRleHRTZWFyY2ggPSAodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMudGV4dFNlYXJjaENvbmZpZz8uZmllbGRLZXkgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRleHQpIHtcclxuICAgICAgdGhpcy5vbkNsZWFyU2VhcmNoKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh0ZXh0KTtcclxuICB9O1xyXG5cclxuICBvcGVuU2VhcmNoTW9kYWwgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBfZGlhbG9nQ29uZmlnID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5zdWZmaXg/LmRpYWxvZztcclxuICAgIGlmICghX2RpYWxvZ0NvbmZpZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG9wdGlvbnMsIC4uLmRhdGEgfSA9IF9kaWFsb2dDb25maWc7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbjxIdG1sRGlhbG9nQ29tcG9uZW50LCBIdG1sRGlhbG9nQ29uZmlnPihcclxuICAgICAgSHRtbERpYWxvZ0NvbXBvbmVudCxcclxuICAgICAge1xyXG4gICAgICAgIHBhbmVsQ2xhc3M6ICdwLTAnLFxyXG4gICAgICAgIG1pbldpZHRoOiAnbWluKDUwMHB4LDYwdncpJyxcclxuICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uLFxyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICBvbkNsZWFyU2VhcmNoID0gKCkgPT4ge1xyXG4gICAgdGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KG51bGwpO1xyXG4gIH07XHJcblxyXG4gIG9uUGFnZUNoYW5nZWQocGFnZTogUGFnZUV2ZW50KSB7XHJcbiAgICB0aGlzLl9wYWdlQ2hhbmdlZCA9XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVBhZ2UucGFnZUluZGV4ICE9PSBwYWdlLnBhZ2VJbmRleCB8fFxyXG4gICAgICB0aGlzLl9hY3RpdmVQYWdlLnBhZ2VTaXplICE9PSBwYWdlLnBhZ2VTaXplO1xyXG4gICAgaWYgKHRoaXMuX3BhZ2VDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMub25QYWdlLmVtaXQocGFnZSk7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVBhZ2UgPSBwYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyQnlWaXNpYmlsaXR5KFxyXG4gICAgY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXVxyXG4gICk6IFRhYmxlQ29sdW1uQ29uZmlnW10ge1xyXG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKChjb2wpID0+IGNvbC5kZWZhdWx0VmlzaWJsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlU2VhcmNoKFtzZWFyY2gsIGZpbHRlcnNdOiBbXHJcbiAgICBzdHJpbmcsXHJcbiAgICB7XHJcbiAgICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICAgIHBheWxvYWQ/OiB7IHByZWRpY2F0ZUxpc3Q6IGFueVtdIH0gJiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgfVxyXG4gIF0pOiBhbnkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCB7IHByZWRpY2F0ZUxpc3QgfSA9IGZpbHRlcnM/LnBheWxvYWQgfHwgeyBwcmVkaWNhdGVMaXN0OiBbXSB9O1xyXG4gICAgICBjb25zdCBfa2V5ID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleTtcclxuICAgICAgY29uc3Qgc2VhcmNoSW5kZXggPSBwcmVkaWNhdGVMaXN0LmZpbmRJbmRleCgoaXRtKSA9PiBpdG0ubmFtZSA9PT0gX2tleSk7XHJcbiAgICAgIGlmIChzZWFyY2ggJiYgX2tleSkge1xyXG4gICAgICAgIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICBwcmVkaWNhdGVMaXN0W3NlYXJjaEluZGV4XS52YWx1ZSA9IGAnJHtzZWFyY2h9J2A7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByZWRpY2F0ZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IF9rZXksXHJcbiAgICAgICAgICAgIG9wZXJhdG9yOlxyXG4gICAgICAgICAgICAgIHRoaXMudGV4dFNlYXJjaENvbmZpZz8ub3BlcmF0b3IgfHwgQ09NUEFSSVNPTl9PUEVSQVRPUi5lcXVhbHMsXHJcbiAgICAgICAgICAgIHZhbHVlOiBgJyR7c2VhcmNofSdgLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuICAgICAgICBwcmVkaWNhdGVMaXN0LnNwbGljZShzZWFyY2hJbmRleCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHsgLi4uZmlsdGVycyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIGlmICh0aGlzLl90YWJsZUluaXRpYWxpemVkKSB7XHJcbiAgICAgIHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0geyAuLi50aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpIH07XHJcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnRWYWx1ZTtcclxuICAgIHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLm5leHQoe1xyXG4gICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxyXG4gICAgICBjdXJyZW50VmFsdWU6IGNyaXRlcmlhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2V0IHRoZSB0YWJsZSBjb25maWd1cmF0aW9uLlxyXG4gICAqIEBwYXJhbSBjb25maWcgTmRmVGFibGVDb25maWdcclxuICAgKi9cclxuICBwcml2YXRlIF9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZzogTmRmVGFibGVDb25maWcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RhYmxlQ29uZmlnU3ViLm5leHQoY29uZmlnKTtcclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9IGNvbmZpZz8ub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw/LnZpc2libGUgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9ICEhY29uZmlnO1xyXG4gICAgaWYgKGNvbmZpZy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIubmV4dCh0aGlzLl9maWx0ZXJCeVZpc2liaWxpdHkoY29uZmlnLmNvbHVtbnMpKTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcuc29ydGluZ0J5KSB7XHJcbiAgICAgIHRoaXMuX3NvcnRWYWx1ZSA9IGNvbmZpZy5zb3J0aW5nQnk7XHJcbiAgICAgIHRoaXMuX3NvcnRPcHRpb25TdWIubmV4dChjb25maWcuc29ydGluZ0J5KTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWc/Lm9wdGlvbnM/LnRhYmxlTW9kZT8ubW9kZSkge1xyXG4gICAgICB0aGlzLl92aWV3TW9kZVN1Yi5uZXh0KGNvbmZpZy5vcHRpb25zLnRhYmxlTW9kZS5tb2RlKTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcucGFnZVNpemUpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlUGFnZS5wYWdlU2l6ZSA9IGNvbmZpZy5wYWdlU2l6ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQGRlc2NyaXB0aW9uIExvYWRzIHRoZSB0YWJsZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBrZXkgYW5kIGFwcGxpZXMgaXQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgdXNlZCB0byBmZXRjaCB0aGUgdGFibGUgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBwcml2YXRlIF9sb2FkVGFibGVDb25maWcoa2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX25kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2VcclxuICAgICAgLmdldFRhYmxlQ29uZmlndXJhdGlvbihrZXksIHRoaXMuY29uZmlnUGF0aClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChjb25maWcpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyICYmIF8uaXNGdW5jdGlvbih0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdUcmFuc2Zvcm1lcihjb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9mKGNvbmZpZyk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fYXBwbHlUYWJsZUNvbmZpZyhjb25maWcpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICpuZ0lmPVwidGFibGVDb25maWdcIlxyXG4gIGNsYXNzPVwibmRmLXRhYmxlX19jb250YWluZXJcIlxyXG4gIFtjbGFzcy5wYW5lbC1vcGVuZWRdPVwiaXNQYW5lbE9wZW5lZCAmJiBmaWx0ZXJzQ29uZmlnXCJcclxuICBbZGlyXT1cImRpcmVjdGlvblwiXHJcbiAgbmRmRmx1aWRIZWlnaHRcclxuICBjc3NWYXI9XCItLW5kZi10YWJsZS1oZWlnaHRcIlxyXG4gIFtjYWxjdWxhdGVdPVwiYXV0b0NhbGN1bGF0ZUhlaWdodFwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19wYW5lbFwiICpuZ0lmPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCI+XHJcbiAgICA8YXBwLWZpbHRlcnMtcGFuZWxcclxuICAgICAgW2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnLmZpZWxkc1wiXHJcbiAgICAgIFthZ2dyZWdhdGlvbnNdPVwiYWdncmVnYXRpb25zJCB8IGFzeW5jXCJcclxuICAgICAgKGZpbHRlckNoYW5nZWQpPVwiZmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgW2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZVF1ZXJ5XCJcclxuICAgICAgY2xhc3M9XCJuZGYtdGFibGVfX2ZpbHRlcnNcIlxyXG4gICAgICBbY3VzdG9tVGVtcGxhdGVSZWZdPVwiZmlsdGVyQ3VzdG9tVGVtcGxhdGVcIlxyXG4gICAgPjwvYXBwLWZpbHRlcnMtcGFuZWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9fY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyIGZsZXhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19jdXN0b20tYWN0aW9ucyBmbGV4IGdhcC14LTQgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoVGFibGVUZW1wbGF0ZSB8fCBkZWZhdWx0QWN0aW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgJGltcGxpY2l0OiB0YWJsZUNvbmZpZyxcclxuICAgICAgICAgICAgcGFuZWxPcGVuZWQ6IGlzUGFuZWxPcGVuZWQsXHJcbiAgICAgICAgICAgIHRvZ2dsZVBhbmVsOiB0b2dnbGVQYW5lbCxcclxuICAgICAgICAgICAgb3Blbk1vZGFsOiBvcGVuU2VhcmNoTW9kYWwsXHJcbiAgICAgICAgICAgIHNlYXJjaDogb25UZXh0U2VhcmNoLFxyXG4gICAgICAgICAgICBjbGVhcjogb25DbGVhclNlYXJjaFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBY3Rpb25UZW1wbGF0ZT5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZSAmJiAhIWZpbHRlcnNDb25maWcuZmllbGRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFuZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxhcHAtdGV4dC1zZWFyY2hcclxuICAgICAgICAgICAgKm5nSWY9XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuICAgICAgICAgICAgW3NlYXJjaENvbmZpZ109XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuICAgICAgICAgICAgKG9wZW5Nb2RhbCk9XCJvcGVuU2VhcmNoTW9kYWwoKVwiXHJcbiAgICAgICAgICAgIFtzZWFyY2hdPVwidGV4dFNlYXJjaCQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25UZXh0U2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAoY2xlYXIpPVwib25DbGVhclNlYXJjaCgpXCJcclxuICAgICAgICAgID48L2FwcC10ZXh0LXNlYXJjaD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19hY3Rpb25zIGZsZXggZ2FwLXgtNCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YXBwLWVkaXRvci1idXR0b25cclxuICAgICAgICAgICpuZ0lmPVwianNvbkVkaXRvckVuYWJsZWQgJiYgKHRhYmxlS2V5IHx8IHRhYmxlQ29uZmlnPy5rZXkpXCJcclxuICAgICAgICAgIFtrZXldPVwidGFibGVLZXkgfHwgdGFibGVDb25maWc/LmtleVwiXHJcbiAgICAgICAgICBbdHlwZV09XCJlZGl0b3JUeXBlXCJcclxuICAgICAgICA+PC9hcHAtZWRpdG9yLWJ1dHRvbj5cclxuICAgICAgICA8bmRmLXRhYmxlLWV4cG9ydFxyXG4gICAgICAgICAgKm5nSWY9XCJleHBvcnRUYWJsZUNvbmZpZz8uZW5hYmxlZFwiXHJcbiAgICAgICAgICBbY29uZmlnXT1cImV4cG9ydFRhYmxlQ29uZmlnXCJcclxuICAgICAgICAgIChvbkV4cG9ydCk9XCJleHBvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9uZGYtdGFibGUtZXhwb3J0PlxyXG5cclxuICAgICAgICA8dGFibGUtc29ydGluZy1saXN0XHJcbiAgICAgICAgICAqbmdJZj1cIiEhc29ydExpc3Q/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBbc29ydExpc3RdPVwic29ydExpc3RcIlxyXG4gICAgICAgICAgKHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgID48L3RhYmxlLXNvcnRpbmctbGlzdD5cclxuICAgICAgICA8dGFibGUtY29sdW1ucy10b2dnbGVyXHJcbiAgICAgICAgICAqbmdJZj1cImNvbHVtblRvZ2dsZVwiXHJcbiAgICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbmZpZy5jb2x1bW5zXCJcclxuICAgICAgICAgIFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4XCJcclxuICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW5zT3B0aW9ucz8uc29ydGFibGVcIlxyXG4gICAgICAgICAgKGNvbHVtbnNDaGFuZ2VkKT1cImNvbHVtbnNDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgID48L3RhYmxlLWNvbHVtbnMtdG9nZ2xlcj5cclxuICAgICAgICA8bW9kZS10b2dnbGVyXHJcbiAgICAgICAgICAqbmdJZj1cInRhYmxlTW9kZT8udG9nZ2xlTW9kZVwiXHJcbiAgICAgICAgICBbbW9kZV09XCJ0YWJsZU1vZGUubW9kZSB8fCAnbGlzdCdcIlxyXG4gICAgICAgICAgW21vZGVzTGlzdF09XCJ0YWJsZU1vZGU/LmF2YWlsYWJsZU1vZGVcIlxyXG4gICAgICAgICAgKG1vZGVDaGFuZ2VkKT1cIm1vZGVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgID48L21vZGUtdG9nZ2xlcj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVGFibGVUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRhYmxlQ29uZmlnLFxyXG4gICAgICAgICAgICBwYW5lbE9wZW5lZDogaXNQYW5lbE9wZW5lZCxcclxuICAgICAgICAgICAgdG9nZ2xlUGFuZWw6IHRvZ2dsZVBhbmVsLFxyXG4gICAgICAgICAgICBvcGVuTW9kYWw6IG9wZW5TZWFyY2hNb2RhbCxcclxuICAgICAgICAgICAgc2VhcmNoOiBvblRleHRTZWFyY2gsXHJcbiAgICAgICAgICAgIGNsZWFyOiBvbkNsZWFyU2VhcmNoXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGN0cy1keW5hbWljLXRhYmxlXHJcbiAgICAgICpuZ0lmPVwiIXRhYmxlQ29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuICAgICAgY2xhc3M9XCJuZGYtdGFibGVfX3RhYmxlIHRhYmxlLXN0eWxlXCJcclxuICAgICAgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiXHJcbiAgICAgIFtjb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG4gICAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcbiAgICAgIFtmdWxsV2lkdGhdPVwidGFibGVDb25maWcuZnVsbFdpZHRoIHx8ICdhdXRvJ1wiXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJ0YWJsZUNvbmZpZy5wYWdlU2l6ZSB8fCAxMFwiXHJcbiAgICAgIFtwYWdlTnVtYmVyXT1cInRhYmxlQ29uZmlnLnBhZ2VOdW1iZXIgfHwgMVwiXHJcbiAgICAgIFtwYWdlUHJvdmlkZXJdPVwidGFibGVDb25maWcucGFnZVByb3ZpZGVyXCJcclxuICAgICAgW2N1c3RvbVVybF09XCJ0YWJsZUNvbmZpZy5jdXN0b21VcmxcIlxyXG4gICAgICBbcXVpY2tGaWx0ZXJdPVwiXHJcbiAgICAgICAgdGFibGVDb25maWcucXVpY2tGaWx0ZXJzXHJcbiAgICAgICAgICA/IHsgcXVpY2tGaWx0ZXJzOiB0YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfVxyXG4gICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgXCJcclxuICAgICAgW2RlZnVsdFNvcnRdPVwidGFibGVDb25maWcuZGVmYXVsdFNvcnQgfHwgZGVmYXVsdFNvcnRcIlxyXG4gICAgICBbc29ydGluZ0J5XT1cInNvcnRPcHRpb24kIHwgYXN5bmNcIlxyXG4gICAgICBbZW50aXR5VHlwZV09XCInYWxsJ1wiXHJcbiAgICAgIFtmaWVsZHNdPVwidGFibGVDb25maWcuZmllbGRzXCJcclxuICAgICAgW3RhYmxlTW9kZV09XCJ2aWV3TW9kZSQgfCBhc3luY1wiXHJcbiAgICAgIFtjb21wb25lbnROYW1lXT1cInRhYmxlTW9kZT8uWydjb21wb25lbnROYW1lJ11cIlxyXG4gICAgICBbcmFuZ2VdPVwidGFibGVDb25maWc/LnJhbmdlXCJcclxuICAgICAgW2lzU2VhcmNoUGFnZV09XCJ0YWJsZUNvbmZpZz8uaXNTZWFyY2hQYWdlXCJcclxuICAgICAgW211bHRpU2VsZWN0Um93c109XCJ0YWJsZUNvbmZpZz8ubXVsdGlTZWxlY3RSb3dzXCJcclxuICAgICAgW2N1c3RvbUZpcnN0Um93XT1cInRhYmxlQ29uZmlnPy5jdXN0b21GaXJzdFJvd1wiXHJcbiAgICAgIFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwidGFibGVDb25maWc/LmhpZ2hsaWdodFNlbGVjdGVkQ2FyZFwiXHJcbiAgICAgIFtzaG93QWN0aW9uc0FzTWVudV09XCJ0YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnNBc01lbnVcIlxyXG4gICAgICBbZmlsdGVyUGFyYW1zXT1cInRhYmxlQ29uZmlnPy5maWx0ZXJQYXJhbXNcIlxyXG4gICAgICBbZm9ybWF0XT1cInRhYmxlQ29uZmlnPy5mb3JtYXQgfHwgJ01NTU0gZCwgeSdcIlxyXG4gICAgICBbcGFnZVNpemVzXT1cInRhYmxlQ29uZmlnPy5wYWdlU2l6ZXMgfHwgZGVmYXVsdFBhZ2VTaXplc1wiXHJcbiAgICAgIFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4IHx8ICcnXCJcclxuICAgICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICAgICAgW3F1ZXJ5UGFyYW1dPVwidGFibGVDb25maWcucXVlcnlQYXJhbVwiXHJcbiAgICAgIFtjdXN0b21GaWx0ZXJzXT1cInNlYXJjaEFuZEZpbHRlcnMkIHwgYXN5bmNcIlxyXG4gICAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQ29uZmlnLnRhYmxlQWN0aW9uc1wiXHJcbiAgICAgIFtyZXF1ZXN0QWN0aW9uc109XCJ0YWJsZUNvbmZpZz8ucmVxdWVzdEFjdGlvbnNcIlxyXG4gICAgICBbaGVhZGVyc109XCJ0YWJsZUNvbmZpZy5oZWFkZXJzXCJcclxuICAgICAgKG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uR2V0dGluZ0RhdGEpPVwib25HZXR0aW5nRGF0YS5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Mb2FkKT1cIm9uTG9hZCgkZXZlbnQpXCJcclxuICAgICAgKG9uSW5pdGlhbGl6ZSk9XCJvbkluaXRpYWxpemUoJGV2ZW50KVwiXHJcbiAgICAgIChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvbkxvYWRpbmcpPVwib25Mb2FkaW5nLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvblBhZ2UpPVwib25QYWdlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgW2lzTGVnYWN5TW9kZV09XCJmYWxzZVwiXHJcbiAgICAgIFtzaG93VG90YWxSZWNvcmRdPVwidHJ1ZVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICBlbXB0eVRlbXBsYXRlXHJcbiAgICAgICAgbGV0LWlzTG9hZGluZ1xyXG4gICAgICAgIGxldC1yb3dzPVwicm93c1wiXHJcbiAgICAgICAgbGV0LWluaXRpYWxpemVkPVwiaW5pdGlhbGl6ZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctZGF0YVwiICpuZ0lmPVwiaXNMb2FkaW5nICYmIGluaXRpYWxpemVkXCI+XHJcbiAgICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTUvNlwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIXJvd3MubGVuZ3RoXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLW5vLWRhdGEtZm91bmRcclxuICAgICAgICAgICAgY2xhc3M9XCJtdC00XCJcclxuICAgICAgICAgICAgW21lc3NhZ2VdPVwiZW1wdHlNZXNzYWdlXCJcclxuICAgICAgICAgID48L2FwcC1uby1kYXRhLWZvdW5kPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jdHMtZHluYW1pYy10YWJsZT5cclxuXHJcbiAgICA8Y3RzLXRhYmxlXHJcbiAgICAgICpuZ0lmPVwidGFibGVDb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG4gICAgICBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCJcclxuICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgW2NvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcbiAgICAgIFtyZXNwb25zaXZlQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuICAgICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICAgICAgW2Z1bGxXaWR0aF09XCJ0YWJsZUNvbmZpZy5mdWxsV2lkdGggfHwgJ2F1dG8nXCJcclxuICAgICAgW2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG4gICAgICBbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJ1wiXHJcbiAgICAgIFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG4gICAgICBbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuICAgICAgW211bHRpU2VsZWN0Um93c109XCJ0YWJsZUNvbmZpZz8ubXVsdGlTZWxlY3RSb3dzXCJcclxuICAgICAgW2N1c3RvbUZpcnN0Um93XT1cInRhYmxlQ29uZmlnPy5jdXN0b21GaXJzdFJvd1wiXHJcbiAgICAgIFt0YWJsZUFjdGlvbnNdPVwidGFibGVDb25maWcudGFibGVBY3Rpb25zXCJcclxuICAgICAgW3Nob3dBY3Rpb25zQXNNZW51XT1cInRhYmxlQ29uZmlnPy5zaG93QWN0aW9uc0FzTWVudVwiXHJcbiAgICAgIFtkZWZ1bHRTb3J0XT1cInRhYmxlQ29uZmlnLmRlZmF1bHRTb3J0IHx8IGRlZmF1bHRTb3J0XCJcclxuICAgICAgW2Zvcm1hdF09XCJ0YWJsZUNvbmZpZz8uZm9ybWF0IHx8ICdNTU1NIGQsIHknXCJcclxuICAgICAgW2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJ0YWJsZUNvbmZpZz8uaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuICAgICAgKG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uU29ydGluZyk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPjwvY3RzLXRhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -32,7 +32,7 @@ import * as i7 from '@angular/material/tooltip';
|
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
33
33
|
import { merge } from 'lodash-es';
|
|
34
34
|
import * as _ from 'lodash';
|
|
35
|
-
import ___default, { cloneDeep, filter, sortBy, each, unionWith, isEqual, isNil, isObject as isObject$1, isDate, isBoolean, isNumber, union, assign, keyBy, values, flatMap, map as map$1 } from 'lodash';
|
|
35
|
+
import ___default, { cloneDeep, filter, sortBy, each, unionWith, isEqual, isNil, isObject as isObject$1, isDate, isBoolean, isNumber, merge as merge$1, union, assign, keyBy, values, flatMap, map as map$1 } from 'lodash';
|
|
36
36
|
import * as moment$6 from 'moment';
|
|
37
37
|
import moment__default, { isMoment } from 'moment';
|
|
38
38
|
import _omit from 'lodash/omit';
|
|
@@ -19719,6 +19719,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
19719
19719
|
type: Output
|
|
19720
19720
|
}] } });
|
|
19721
19721
|
|
|
19722
|
+
const PAGE_SIZE = [
|
|
19723
|
+
{
|
|
19724
|
+
label: '5',
|
|
19725
|
+
size: 5
|
|
19726
|
+
},
|
|
19727
|
+
{
|
|
19728
|
+
label: '10',
|
|
19729
|
+
size: 10
|
|
19730
|
+
},
|
|
19731
|
+
{
|
|
19732
|
+
label: '25',
|
|
19733
|
+
size: 25
|
|
19734
|
+
},
|
|
19735
|
+
{
|
|
19736
|
+
label: '50',
|
|
19737
|
+
size: 50
|
|
19738
|
+
}
|
|
19739
|
+
];
|
|
19740
|
+
|
|
19722
19741
|
const ACTIONS_TABLE_TEMPLATE = new InjectionToken('ActionsTableTemplateDirective');
|
|
19723
19742
|
class ActionsTableTemplateDirective {
|
|
19724
19743
|
constructor(template) {
|
|
@@ -19797,25 +19816,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
19797
19816
|
}]
|
|
19798
19817
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
|
19799
19818
|
|
|
19800
|
-
const PAGE_SIZE = [
|
|
19801
|
-
{
|
|
19802
|
-
label: '5',
|
|
19803
|
-
size: 5
|
|
19804
|
-
},
|
|
19805
|
-
{
|
|
19806
|
-
label: '10',
|
|
19807
|
-
size: 10
|
|
19808
|
-
},
|
|
19809
|
-
{
|
|
19810
|
-
label: '25',
|
|
19811
|
-
size: 25
|
|
19812
|
-
},
|
|
19813
|
-
{
|
|
19814
|
-
label: '50',
|
|
19815
|
-
size: 50
|
|
19816
|
-
}
|
|
19817
|
-
];
|
|
19818
|
-
|
|
19819
19819
|
const NDF_EDITOR_TYPE = {
|
|
19820
19820
|
REPORTS: 'report',
|
|
19821
19821
|
TABLES: 'table'
|
|
@@ -20853,8 +20853,8 @@ class NdfTableComponent extends DestroySubject {
|
|
|
20853
20853
|
this._customCriteriaSub = new BehaviorSubject({
|
|
20854
20854
|
params: {},
|
|
20855
20855
|
payload: {
|
|
20856
|
-
predicateList: []
|
|
20857
|
-
}
|
|
20856
|
+
predicateList: [],
|
|
20857
|
+
},
|
|
20858
20858
|
});
|
|
20859
20859
|
this.aggregations$ = this._aggregationsSub.asObservable();
|
|
20860
20860
|
this.displayedColumns$ = this._displayedColumnsSub.asObservable();
|
|
@@ -20862,7 +20862,10 @@ class NdfTableComponent extends DestroySubject {
|
|
|
20862
20862
|
this.viewMode$ = this._viewModeSub.asObservable();
|
|
20863
20863
|
this.customFilters$ = this._customCriteriaSub.asObservable();
|
|
20864
20864
|
this.textSearch$ = this._textSearchSub.asObservable();
|
|
20865
|
-
this.searchAndFilters$ = combineLatest([
|
|
20865
|
+
this.searchAndFilters$ = combineLatest([
|
|
20866
|
+
this.textSearch$,
|
|
20867
|
+
this.customFilters$,
|
|
20868
|
+
]).pipe(map((res) => this._prepareSearch(res)));
|
|
20866
20869
|
this.autoCalculateHeight = true;
|
|
20867
20870
|
this.emptyMessage = 'table_noData';
|
|
20868
20871
|
this.configPath = 'tables';
|
|
@@ -20890,7 +20893,7 @@ class NdfTableComponent extends DestroySubject {
|
|
|
20890
20893
|
this._activePage = {
|
|
20891
20894
|
pageIndex: 1,
|
|
20892
20895
|
pageSize: 10,
|
|
20893
|
-
length: 0
|
|
20896
|
+
length: 0,
|
|
20894
20897
|
};
|
|
20895
20898
|
this.editorType = NDF_EDITOR_TYPE.TABLES;
|
|
20896
20899
|
this.togglePanel = () => {
|
|
@@ -21002,11 +21005,14 @@ class NdfTableComponent extends DestroySubject {
|
|
|
21002
21005
|
onLoad(data) {
|
|
21003
21006
|
var _a, _b, _c;
|
|
21004
21007
|
this.onLoaded.emit(data);
|
|
21005
|
-
if (!this._tableInitialized ||
|
|
21008
|
+
if (!this._tableInitialized ||
|
|
21009
|
+
((_a = this.filterReloadConfig) === null || _a === void 0 ? void 0 : _a.strategy) === 'never' ||
|
|
21010
|
+
this._pageChanged) {
|
|
21006
21011
|
this._pageChanged = false;
|
|
21007
21012
|
return;
|
|
21008
21013
|
}
|
|
21009
|
-
if (this._isConfigChanged ||
|
|
21014
|
+
if (this._isConfigChanged ||
|
|
21015
|
+
((_b = this.filterReloadConfig) === null || _b === void 0 ? void 0 : _b.strategy) === 'always') {
|
|
21010
21016
|
this._aggregationsSub.next(data === null || data === void 0 ? void 0 : data.aggregations);
|
|
21011
21017
|
return;
|
|
21012
21018
|
}
|
|
@@ -21052,22 +21058,25 @@ class NdfTableComponent extends DestroySubject {
|
|
|
21052
21058
|
const fields = columns.map((col) => col.headerClass || (col === null || col === void 0 ? void 0 : col.filedKey));
|
|
21053
21059
|
const headers = columns.map((col) => (this.tableConfig.prefix || '') + col.name);
|
|
21054
21060
|
const criteria = this._customCriteriaSub.getValue();
|
|
21055
|
-
request.params =
|
|
21061
|
+
request.params = merge$1({}, criteria.params, this._sortValue || {}, ((_b = this.tableConfig) === null || _b === void 0 ? void 0 : _b.quickFilters)
|
|
21062
|
+
? { quickFilters: this.tableConfig.quickFilters }
|
|
21063
|
+
: {}, request === null || request === void 0 ? void 0 : request.params);
|
|
21056
21064
|
const blobNameKey = (_c = this.exportTableConfig) === null || _c === void 0 ? void 0 : _c.blobName;
|
|
21057
|
-
const payload = {
|
|
21065
|
+
const payload = merge$1({}, (request === null || request === void 0 ? void 0 : request.payload) || {}, {
|
|
21058
21066
|
predicateList: criteria.payload.predicateList || [],
|
|
21059
21067
|
reportMetaData: {
|
|
21060
21068
|
blobName: '',
|
|
21061
21069
|
docTypeName: this.exportTableConfig.docTypeName,
|
|
21062
21070
|
fileType: type,
|
|
21063
|
-
locale: ((_d = this.exportTableConfig) === null || _d === void 0 ? void 0 : _d.locale) ||
|
|
21071
|
+
locale: ((_d = this.exportTableConfig) === null || _d === void 0 ? void 0 : _d.locale) ||
|
|
21072
|
+
this._translateService.currentLang,
|
|
21064
21073
|
fields: ((_e = this.exportTableConfig) === null || _e === void 0 ? void 0 : _e.fields) || fields,
|
|
21065
|
-
headers: []
|
|
21066
|
-
}
|
|
21067
|
-
};
|
|
21074
|
+
headers: [],
|
|
21075
|
+
},
|
|
21076
|
+
});
|
|
21068
21077
|
forkJoin({
|
|
21069
21078
|
ar: this._translateService.getTranslation('ar'),
|
|
21070
|
-
en: this._translateService.getTranslation('en')
|
|
21079
|
+
en: this._translateService.getTranslation('en'),
|
|
21071
21080
|
})
|
|
21072
21081
|
.pipe(switchMap((translations) => {
|
|
21073
21082
|
const currentTranslations = translations[this._translateService.currentLang];
|
|
@@ -21093,7 +21102,9 @@ class NdfTableComponent extends DestroySubject {
|
|
|
21093
21102
|
this._triggerCriteriaChanges(criteria);
|
|
21094
21103
|
if (((_a = this.filtersConfig) === null || _a === void 0 ? void 0 : _a.mode) !== 'payload') {
|
|
21095
21104
|
const isStringifyParams = (_b = this.filtersConfig) === null || _b === void 0 ? void 0 : _b.stringifyParams;
|
|
21096
|
-
const value = !isStringifyParams
|
|
21105
|
+
const value = !isStringifyParams
|
|
21106
|
+
? criteria
|
|
21107
|
+
: this._stringifyValues(criteria);
|
|
21097
21108
|
this._dynamicTableService.refreshData.next(value);
|
|
21098
21109
|
return;
|
|
21099
21110
|
}
|
|
@@ -21101,7 +21112,9 @@ class NdfTableComponent extends DestroySubject {
|
|
|
21101
21112
|
this._customCriteriaSub.next(payload);
|
|
21102
21113
|
}
|
|
21103
21114
|
onPageChanged(page) {
|
|
21104
|
-
this._pageChanged =
|
|
21115
|
+
this._pageChanged =
|
|
21116
|
+
this._activePage.pageIndex !== page.pageIndex ||
|
|
21117
|
+
this._activePage.pageSize !== page.pageSize;
|
|
21105
21118
|
if (this._pageChanged) {
|
|
21106
21119
|
this.onPage.emit(page);
|
|
21107
21120
|
this._activePage = page;
|
|
@@ -21124,7 +21137,7 @@ class NdfTableComponent extends DestroySubject {
|
|
|
21124
21137
|
predicateList.push({
|
|
21125
21138
|
name: _key,
|
|
21126
21139
|
operator: ((_b = this.textSearchConfig) === null || _b === void 0 ? void 0 : _b.operator) || COMPARISON_OPERATOR.equals,
|
|
21127
|
-
value: `'${search}'
|
|
21140
|
+
value: `'${search}'`,
|
|
21128
21141
|
});
|
|
21129
21142
|
}
|
|
21130
21143
|
}
|
|
@@ -21148,7 +21161,7 @@ class NdfTableComponent extends DestroySubject {
|
|
|
21148
21161
|
const previousValue = activatedQuery === null || activatedQuery === void 0 ? void 0 : activatedQuery.currentValue;
|
|
21149
21162
|
this._activatedCriteriaSub.next({
|
|
21150
21163
|
previousValue: previousValue,
|
|
21151
|
-
currentValue: criteria
|
|
21164
|
+
currentValue: criteria,
|
|
21152
21165
|
});
|
|
21153
21166
|
}
|
|
21154
21167
|
/**
|
|
@@ -21204,8 +21217,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
21204
21217
|
styleUrls: ['./ndf-table.component.scss'],
|
|
21205
21218
|
host: {
|
|
21206
21219
|
class: 'ndf-table',
|
|
21207
|
-
'[dir]': 'direction'
|
|
21208
|
-
}
|
|
21220
|
+
'[dir]': 'direction',
|
|
21221
|
+
},
|
|
21209
21222
|
}]
|
|
21210
21223
|
}], ctorParameters: function () { return [{ type: FiltersMapperService }, { type: DynamicTableService }, { type: i1.TranslateService }, { type: NdfTableService }, { type: CustomToastrService }, { type: NdfTableConfigurationService }, { type: i1$3.MatDialog }]; }, propDecorators: { rows: [{
|
|
21211
21224
|
type: Input
|