ngx-st-tables 17.0.64 → 17.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/material-table/material-table-caption/material-table-caption.component.mjs +11 -4
- package/esm2022/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.mjs +80 -65
- package/esm2022/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter.component.mjs +302 -0
- package/esm2022/lib/components/material-table/material-table.component.mjs +41 -8
- package/esm2022/lib/constants/default-translations.mjs +6 -2
- package/esm2022/lib/models/models.mjs +2 -0
- package/esm2022/lib/models/st-tables-translations.model.mjs +1 -1
- package/esm2022/lib/ngx-st-tables.module.mjs +5 -2
- package/fesm2022/ngx-st-tables.mjs +436 -78
- package/fesm2022/ngx-st-tables.mjs.map +1 -1
- package/lib/components/material-table/material-table-caption/material-table-caption.component.d.ts +1 -12
- package/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter-dialog.component.d.ts +11 -12
- package/lib/components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter.component.d.ts +27 -0
- package/lib/components/material-table/material-table.component.d.ts +1 -1
- package/lib/models/models.d.ts +14 -0
- package/lib/models/st-tables-translations.model.d.ts +5 -1
- package/lib/ngx-st-tables.module.d.ts +28 -27
- package/package.json +1 -1
|
@@ -130,6 +130,9 @@ export class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
130
130
|
else if (column.type === 'boolean') {
|
|
131
131
|
column.filterType = 'boolean';
|
|
132
132
|
}
|
|
133
|
+
else {
|
|
134
|
+
column.filterType = 'string';
|
|
135
|
+
}
|
|
133
136
|
}
|
|
134
137
|
});
|
|
135
138
|
this.loadLocalStorageData();
|
|
@@ -261,13 +264,43 @@ export class MaterialTableComponent extends StSubscribeDestroyComponent {
|
|
|
261
264
|
let searchOkGlobal = true;
|
|
262
265
|
searchTermsKeys.forEach((key) => {
|
|
263
266
|
if (key !== 'stGlobalSearch' &&
|
|
264
|
-
this.selectedColumnsString.includes(key)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
267
|
+
this.selectedColumnsString.includes(key) &&
|
|
268
|
+
searchTerms[key].value) {
|
|
269
|
+
if (Array.isArray(searchTerms[key].value)) {
|
|
270
|
+
const dateFrom = searchTerms[key].value[0];
|
|
271
|
+
const dateTo = searchTerms[key].value[1];
|
|
272
|
+
if (dateFrom || dateTo) {
|
|
273
|
+
const tmpColumn = this.columns.find(col => col.field === key);
|
|
274
|
+
if (tmpColumn && tmpColumn.type === 'date') {
|
|
275
|
+
const dateFromValue = dateFrom ? new Date(dateFrom) : null;
|
|
276
|
+
const dateToValue = dateTo
|
|
277
|
+
? new Date(new Date(dateTo).setDate(new Date(dateTo).getDate() + 1))
|
|
278
|
+
: null;
|
|
279
|
+
const tableData = new Date(data[key]);
|
|
280
|
+
if (dateFromValue && dateToValue) {
|
|
281
|
+
searchOk =
|
|
282
|
+
searchOk &&
|
|
283
|
+
tableData >= dateFromValue &&
|
|
284
|
+
tableData <= dateToValue;
|
|
285
|
+
}
|
|
286
|
+
else if (dateFromValue) {
|
|
287
|
+
searchOk = searchOk && tableData >= dateFromValue;
|
|
288
|
+
}
|
|
289
|
+
else if (dateToValue) {
|
|
290
|
+
searchOk = searchOk && tableData <= dateToValue;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
searchOk =
|
|
297
|
+
searchOk &&
|
|
298
|
+
data[key]
|
|
299
|
+
.toString()
|
|
300
|
+
.toLowerCase()
|
|
301
|
+
.indexOf(searchTerms[key].value.toString().toLowerCase()) !==
|
|
302
|
+
-1;
|
|
303
|
+
}
|
|
271
304
|
}
|
|
272
305
|
});
|
|
273
306
|
if (searchTerms.stGlobalSearch) {
|
|
@@ -457,4 +490,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
457
490
|
}], data: [{
|
|
458
491
|
type: Input
|
|
459
492
|
}] } });
|
|
460
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFPN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsMkJBQTJCLEdBQzVCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFZbEosTUFBTSxPQUFPLHNCQUNYLFNBQVEsMkJBQTJCO0lBNEJuQyxJQUNJLElBQUksQ0FBQyxJQUFXO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFD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QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixTQUFTLEVBQUUsQ0FBQztZQUNaLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUN6RCxZQUFZLEVBQUUsRUFBRTtZQUNoQixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDdEQsT0FBTyxFQUFFLEVBQUU7WUFDWCxTQUFTLEVBQUUsRUFBRTtZQUNiLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7SUFDSixDQUFDOytHQXBpQlUsc0JBQXNCO21HQUF0QixzQkFBc0IsOHhGQUl0QixZQUFZLHVFQUNaLE9BQU8sdUVDL0NwQix3eUhBd0dBOzs0RkQ5RGEsc0JBQXNCO2tCQVZsQyxTQUFTOytCQUNFLHVCQUF1QixtQkFNaEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtnS0FNWixTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0gsSUFBSTtzQkFBdkIsU0FBUzt1QkFBQyxPQUFPO2dCQXlCZCxJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgaW5wdXQsXHJcbiAgb3V0cHV0LFxyXG4gIG1vZGVsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXRTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgU3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc3QtbWF0ZXJpYWwtdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZpZXcvdmlldy1zdC1tYXRlcmlhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIElDYXB0aW9uRGF0YUNoYW5nZWQsXHJcbiAgU3RNYXRlcmlhbFRhYmxlRmlsdGVyLFxyXG59IGZyb20gJy4vbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgU3RCYXNlU2VydmljZSxcclxuICBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnQsXHJcbn0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU3RTbmFja0JhclNlcnZpY2UgfSBmcm9tICduZ3gtc3Qtc25hY2stYmFyJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBTdFRhYmxlc1RyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cvbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtc3QtbWF0ZXJpYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICAnLi4vLi4vLi4vLi4vYXNzZXRzL2Jhc2UtdGFibGUuc2NzcycsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUYWJsZUNvbXBvbmVudFxyXG4gIGV4dGVuZHMgU3RTdWJzY3JpYmVEZXN0cm95Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIHNob3dHbG9iYWxTZWFyY2ggPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gIHRhYmxlVGl0bGUgPSBpbnB1dCgnJyk7XHJcblxyXG4gIHBhZ2VTaXplID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcblxyXG4gIGRhdGFMZW5ndGggPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cclxuICBhbGxvd1BpY2tDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBhbGxvd1Jlb3JkZXJDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBsb2NhbFN0b3JhZ2VOYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblxyXG4gIGxhenlMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGluaXRDb2x1bW5zID0gbW9kZWw8U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXT4oW10pO1xyXG5cclxuICByb3dDbGlja0FjdGlvbiA9IGlucHV0PChyb3c6IGFueSkgPT4gdm9pZD4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF0YShkYXRhOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMucm93RWRpdGluZygpIHx8IHRoaXMucm93U2VsZWN0aW5nKCkpIHtcclxuICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMCAmJiAhZGF0YVswXS5pZCkge1xyXG4gICAgICAgIGRhdGEgPSBkYXRhLm1hcChyb3cgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4ucm93LFxyXG4gICAgICAgICAgICBpZDogU3RCYXNlU2VydmljZS5nZW5lcmF0ZUdVSUQoKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhIHx8IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZGF0YSA9IGRhdGE7XHJcbiAgICAgIGlmICghdGhpcy5sYXp5TG9hZGluZygpICYmIHRoaXMubG9jYWxTdG9yYWdlRGF0YSkge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5wYWdlSW5kZXg7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IuX2VtaXRQYWdlRXZlbnQodGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF0YSgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIHJvd0VkaXRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHJvd1NlbGVjdGluZyA9IGlucHV0KGZhbHNlKTtcclxuXHJcbiAgc2VsZWN0aW9uRmllbGRMYWJlbCA9IGlucHV0KCcnKTtcclxuXHJcbiAgc2hvd0NyZWF0ZUJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY3JlYXRlQnV0dG9uTGFiZWwgPSBpbnB1dCgnQ3JlYXRlJyk7XHJcblxyXG4gIGNyZWF0ZUJ1dHRvbkFjdGlvbiA9IGlucHV0PCgpID0+IHZvaWQ+KCgpID0+IHt9KTtcclxuXHJcbiAgbG9hZERhdGEgPSBvdXRwdXQ8U3RNYXRlcmlhbFRhYmxlTG9hZERhdGE+KCk7XHJcblxyXG4gIHNhdmVOZXdSb3cgPSBvdXRwdXQ8YW55PigpO1xyXG5cclxuICBzZWxlY3RSb3dDaGFuZ2UgPSBvdXRwdXQ8YW55W10+KCk7XHJcblxyXG4gIHByaXZhdGUgX2RhdGE6IGFueVtdID0gW107XHJcblxyXG4gIGNvbHVtbnM6IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbFtdID0gW107XHJcbiAgc2VsZWN0ZWRDb2x1bW5zOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ29sdW1uc1N0cmluZzogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgdGFibGVTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xyXG5cclxuICBpbml0RmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXIgfSA9IHt9O1xyXG4gIGluaXRHbG9iYWxTZWFyY2g6IHN0cmluZyA9ICcnO1xyXG5cclxuICBzaG93VGFibGUgPSB0cnVlO1xyXG5cclxuICBhY3RpdmVSb3dzRWRpdGluZzogeyBbcm93SWQ6IHN0cmluZ106IHsgW3Byb3A6IHN0cmluZ106IGFueSB9IH0gPSB7fTtcclxuICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XHJcblxyXG4gIHByaXZhdGUgbG9jYWxTdG9yYWdlRGF0YTogU3RNYXRlcmlhbFRhYmxlTG9jYWxTdG9yYWdlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU3RTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc3RUYWJsZVRyYW5zbGF0aW9uczogU3RUYWJsZXNUcmFuc2xhdGlvbnNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RpbmcoKSkge1xyXG4gICAgICB0aGlzLmluaXRDb2x1bW5zKCkudW5zaGlmdCh7XHJcbiAgICAgICAgZmllbGQ6ICdhY3Rpb25zLXJvdy1zZWxlY3RpbmcnLFxyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgdHlwZTogJ2FjdGlvbnMtcm93LXNlbGVjdGluZycsXHJcbiAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyOiBmYWxzZSxcclxuICAgICAgICB3aWR0aDogJzYwcHgnLFxyXG4gICAgICAgIHNlbGVjdENvbHVtbkxhYmVsOlxyXG4gICAgICAgICAgdGhpcy5zdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkucm93U2VsZWN0Q29sdW1uTGFiZWwsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0Q29sdW1ucy51cGRhdGUob2xkVmFsID0+XHJcbiAgICAgICAgb2xkVmFsLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpZWxkICE9PSAnYWN0aW9uLXJvdy1zZWxlY3RpbmcnKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJvd0VkaXRpbmcoKSkge1xyXG4gICAgICB0aGlzLmluaXRDb2x1bW5zKCkucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhY3Rpb25zLXJvdy1lZGl0aW5nJyxcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIHR5cGU6ICdhY3Rpb25zLXJvdy1lZGl0aW5nJyxcclxuICAgICAgICBzb3J0OiBmYWxzZSxcclxuICAgICAgICBmaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnMTEwcHgnLFxyXG4gICAgICAgIHNlbGVjdENvbHVtbkxhYmVsOlxyXG4gICAgICAgICAgdGhpcy5zdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkucm93QWN0aW9uc0NvbHVtbkxhYmVsLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5pdENvbHVtbnMudXBkYXRlKG9sZFZhbCA9PlxyXG4gICAgICAgIG9sZFZhbC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWVsZCAhPT0gJ2FjdGlvbi1yb3ctZWRpdGluZycpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Q29sdW1ucygpLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi5maWVsZCA9PT0gJ2FjdGlvbnMnICYmICFjb2x1bW4udHlwZSkge1xyXG4gICAgICAgIGNvbHVtbi50eXBlID0gJ2FjdGlvbnMnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWNvbHVtbi5maWx0ZXJUeXBlICYmIGNvbHVtbi5maWx0ZXIpIHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyVHlwZSA9ICdzdHJpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyVHlwZSA9ICdudW1iZXInO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlclR5cGUgPSAnZGF0ZSc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2N1c3RvbS10ZW1wbGF0ZScpIHtcclxuICAgICAgICAgIGNvbHVtbi5maWx0ZXJUeXBlID0gJ2N1c3RvbSc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyVHlwZSA9ICdib29sZWFuJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZExvY2FsU3RvcmFnZURhdGEoKTtcclxuXHJcbiAgICAvL3ZhbGlkYXRlIGZpbHRlcnNcclxuICAgIGNvbnN0IGZpbHRlcktleXMgPSBPYmplY3Qua2V5cyh0aGlzLmluaXRGaWx0ZXJzKTtcclxuICAgIGNvbnN0IG5ld0ZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH0gPSB7fTtcclxuICAgIGlmIChmaWx0ZXJLZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZmlsdGVyS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sID0gdGhpcy5pbml0Q29sdW1ucygpLmZpbmQoY29sdW1uID0+IGNvbHVtbi5maWVsZCA9PT0ga2V5KTtcclxuXHJcbiAgICAgICAgaWYgKGNvbCkge1xyXG4gICAgICAgICAgbmV3RmlsdGVyc1trZXldID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5pbml0RmlsdGVyc1trZXldLnZhbHVlIHx8ICcnLFxyXG4gICAgICAgICAgICBtYXRjaE1vZGU6XHJcbiAgICAgICAgICAgICAgTWF0ZXJpYWxUYWJsZUZpbHRlckRpYWxvZ0NvbXBvbmVudC5nZXRCYXNlTWF0Y2hNb2RlQnlUeXBlKFxyXG4gICAgICAgICAgICAgICAgY29sLmZpbHRlclR5cGUhXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdGaWx0ZXJzKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5pbml0RmlsdGVycykpIHtcclxuICAgICAgdGhpcy5pbml0RmlsdGVycyA9IG5ld0ZpbHRlcnM7XHJcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzID0gbmV3RmlsdGVycztcclxuICAgICAgdGhpcy51cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldERpc3BsYXllZENvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0SW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLnNldFNvcnRQYWdlU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBjYXB0aW9uRGF0YUNoYW5nZWQoZXZlbnQ6IElDYXB0aW9uRGF0YUNoYW5nZWQpIHtcclxuICAgIGxldCBsb2FkTGF6eURhdGEgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuZ2xvYmFsU2VhcmNoICE9PSB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoIHx8XHJcbiAgICAgIGV2ZW50LmZpbHRlcnMgIT09IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzXHJcbiAgICApIHtcclxuICAgICAgbG9hZExhenlEYXRhID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgIC4uLmV2ZW50LFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4LFxyXG4gICAgICBzb3J0RmllbGQ6IHRoaXMuc29ydC5hY3RpdmUsXHJcbiAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXRDb2x1bW5zT3JkZXIoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uc1Zpc2libGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG5cclxuICAgIGlmIChsb2FkTGF6eURhdGEpIHtcclxuICAgICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRUYWJsZVNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgIHRoaXMudXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gICAgdGhpcy5pbml0RmlsdGVycyA9IHt9O1xyXG4gICAgdGhpcy5pbml0R2xvYmFsU2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLnNvcnQuc29ydCh7IGlkOiAnJywgc3RhcnQ6ICdhc2MnLCBkaXNhYmxlQ2xlYXI6IGZhbHNlIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheWVkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLnNldEluaXRUYWJsZSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGVkaXRSb3cocm93OiBhbnksIGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF0gPSB7IC4uLnJvdyB9O1xyXG4gIH1cclxuXHJcbiAgc2F2ZUVkaXRSb3cocm93OiBhbnksIGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKSB7XHJcbiAgICBsZXQgYWxsb3dTYXZlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihjb2wgPT4gY29sLmFsbG93RWRpdENvbHVtbilcclxuICAgICAgLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sLmN1c3RvbUVkaXRSb3dWYWxpZGF0b3IpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbC5jdXN0b21FZGl0Um93VmFsaWRhdG9yKFxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF1bY29sLmZpZWxkXSxcclxuICAgICAgICAgICAgcm93W2NvbC5maWVsZF0sXHJcbiAgICAgICAgICAgIHJvd1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgICAgYWxsb3dTYXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tiYXIuZXJyb3IocmVzdWx0LmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGlmIChhbGxvd1NhdmUpIHtcclxuICAgICAgdGhpcy5zYXZlTmV3Um93LmVtaXQodGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdKTtcclxuICAgICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLmFsbG93RWRpdENvbHVtbilcclxuICAgICAgICAuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgcm93W2NvbC5maWVsZF0gPSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF1bY29sLmZpZWxkXTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxFZGl0Um93KHJvdzogYW55LCBjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgZGVsZXRlIHRoaXMuYWN0aXZlUm93c0VkaXRpbmdbcm93LmlkXTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnRhYmxlU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMudGFibGVTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RSb3dDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWxlY3RlZFJvdyhyb3c6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3Qocm93KTtcclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Um93Q2hhbmdlZCh2YWx1ZTogYm9vbGVhbiwgcm93OiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KHJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDdXN0b21GaWx0ZXJGb3JMb2NhbFRhYmxlKCkge1xyXG4gICAgbGV0IGZpbHRlckZ1bmN0aW9uID0gKGRhdGE6IGFueSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybXM6IHtcclxuICAgICAgICBbY29sdW1uOiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXI7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHN0R2xvYmFsU2VhcmNoOiBzdHJpbmc7XHJcbiAgICAgIH0gPSBKU09OLnBhcnNlKGZpbHRlcik7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm1zS2V5cyA9IE9iamVjdC5rZXlzKHNlYXJjaFRlcm1zKTtcclxuICAgICAgbGV0IHNlYXJjaE9rID0gdHJ1ZTtcclxuICAgICAgbGV0IHNlYXJjaE9rR2xvYmFsID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNlYXJjaFRlcm1zS2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGtleSAhPT0gJ3N0R2xvYmFsU2VhcmNoJyAmJlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgc2VhcmNoT2sgPVxyXG4gICAgICAgICAgICBzZWFyY2hPayAmJlxyXG4gICAgICAgICAgICBkYXRhW2tleV1cclxuICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgLmluZGV4T2Yoc2VhcmNoVGVybXNba2V5XS52YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoc2VhcmNoVGVybXMuc3RHbG9iYWxTZWFyY2gpIHtcclxuICAgICAgICBzZWFyY2hPa0dsb2JhbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zU3RyaW5nLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhW2NvbF0pIHtcclxuICAgICAgICAgICAgc2VhcmNoT2tHbG9iYWwgPVxyXG4gICAgICAgICAgICAgIHNlYXJjaE9rR2xvYmFsIHx8XHJcbiAgICAgICAgICAgICAgZGF0YVtjb2xdXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5pbmRleE9mKFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hUZXJtcy5zdEdsb2JhbFNlYXJjaC50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICkgIT09IC0xO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gc2VhcmNoT2sgJiYgc2VhcmNoT2tHbG9iYWw7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZpbHRlckZ1bmN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0TGF6eUxvYWRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5sYXp5TG9hZGluZygpKSB7XHJcbiAgICAgIHRoaXMubG9hZERhdGEuZW1pdCh7XHJcbiAgICAgICAgZmlyc3Q6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCAqIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIHJvd3M6IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIGdsb2JhbEZpbHRlckNvbHVtbnM6IHRoaXMuc2VsZWN0ZWRDb2x1bW5zU3RyaW5nLFxyXG4gICAgICAgIGdsb2JhbEZpbHRlcjogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmdsb2JhbFNlYXJjaCxcclxuICAgICAgICBzb3J0RmllbGQ6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5zb3J0RmllbGQsXHJcbiAgICAgICAgc29ydE9yZGVyOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZmlsdGVyID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzLFxyXG4gICAgICAgIHN0R2xvYmFsU2VhcmNoOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpISxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxvY2FsU3RvcmFnZURhdGEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuX2RhdGEpO1xyXG5cclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VJbmRleDtcclxuXHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCAmJiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyKSB7XHJcbiAgICAgIGNvbnN0IGRpc2FibGVDbGVhciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNvcnQuc29ydCh7IGlkOiAnJywgc3RhcnQ6ICdhc2MnLCBkaXNhYmxlQ2xlYXIgfSk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0KHtcclxuICAgICAgICBpZDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCxcclxuICAgICAgICBzdGFydDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRPcmRlcixcclxuICAgICAgICBkaXNhYmxlQ2xlYXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5sYXp5TG9hZGluZygpISkge1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZmlsdGVyUHJlZGljYXRlID0gdGhpcy5jcmVhdGVDdXN0b21GaWx0ZXJGb3JMb2NhbFRhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U29ydFBhZ2VTdWJzY3JpcHRpb24oKSB7XHJcbiAgICB0aGlzLnNvcnQuc29ydENoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxyXG4gICAgICAgICAgKHByZXYsIGN1cnIpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0ge1xyXG4gICAgICAgICAgLi4udGhpcy5sb2NhbFN0b3JhZ2VEYXRhLFxyXG4gICAgICAgICAgc29ydEZpZWxkOiByZXMuYWN0aXZlLFxyXG4gICAgICAgICAgc29ydE9yZGVyOiByZXMuZGlyZWN0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRvci5wYWdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXHJcbiAgICAgICAgICAocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmxvY2FsU3RvcmFnZURhdGEsXHJcbiAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCxcclxuICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuZW1pdExhenlMb2FkaW5nKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREaXNwbGF5ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5pbml0Q29sdW1ucygpLm1hcChjb2wgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICB0eXBlOiBjb2wudHlwZSA/IGNvbC50eXBlIDogJ3N0cmluZycsXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBleHBhbmRlZDogdHJ1ZSxcclxuICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRDb2x1bW5zT3JkZXIoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uc1Zpc2libGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2x1bW5zT3JkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhPy5jb2x1bW5zT3JkZXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW1xyXG4gICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YS5jb2x1bW5zT3JkZXJcclxuICAgICAgICAgIC5maWx0ZXIoY29sdW1uID0+IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IGNvbHVtbikpXHJcbiAgICAgICAgICAubWFwKGNvbHVtbiA9PiB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4pISksXHJcbiAgICAgICAgLi4udGhpcy5jb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgIGNvbHVtbiA9PiAhdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmNvbHVtbnNPcmRlci5pbmNsdWRlcyhjb2x1bW4uZmllbGQpXHJcbiAgICAgICAgKSxcclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sdW1uc1Zpc2libGUoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhPy5zZWxlY3RlZENvbHVtbnMpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgICB2aXNpYmxlOlxyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc2VsZWN0ZWRDb2x1bW5zLmluY2x1ZGVzKGNvbC5maWVsZCkgfHxcclxuICAgICAgICAgICAgIXRoaXMubG9jYWxTdG9yYWdlRGF0YS5jb2x1bW5zT3JkZXIuaW5jbHVkZXMoY29sLmZpZWxkKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiBjb2wudmlzaWJsZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcgPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoY29sID0+IGNvbC5maWVsZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTG9jYWxTdG9yYWdlRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKSkge1xyXG4gICAgICBjb25zdCBsb2NhbFN0b3JhZ2VEYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkhKTtcclxuXHJcbiAgICAgIGlmIChsb2NhbFN0b3JhZ2VEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VEYXRhKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy52YWxpZE9sZEZpbHRlcnNUb05ld0Zvcm1hdChcclxuICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZmlsdGVycyA9IGZpbHRlcnM7XHJcbiAgICAgICAgdGhpcy5pbml0RmlsdGVycyA9IGZpbHRlcnM7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdEdsb2JhbFNlYXJjaCA9IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5nbG9iYWxTZWFyY2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRPbGRGaWx0ZXJzVG9OZXdGb3JtYXQob2xkRmlsdGVyczoge1xyXG4gICAgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIHwgc3RyaW5nO1xyXG4gIH0pOiB7IFtrZXk6IHN0cmluZ106IFN0TWF0ZXJpYWxUYWJsZUZpbHRlciB9IHtcclxuICAgIGNvbnN0IG5ld0ZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH0gPSB7fTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvbGRGaWx0ZXJzKTtcclxuXHJcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG5ld0ZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygb2xkRmlsdGVyc1trZXldID09PSAnb2JqZWN0JyAmJiBvbGRGaWx0ZXJzW2tleV0gIT09IG51bGwpIHtcclxuICAgICAgICBuZXdGaWx0ZXJzW2tleV0gPSBvbGRGaWx0ZXJzW2tleV0gYXMgU3RNYXRlcmlhbFRhYmxlRmlsdGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ld0ZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5ld0VtcHR5TG9jYWxTdG9yYWdlRGF0YSgpIHtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YSA9IHtcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUoKSxcclxuICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICBzZWxlY3RlZENvbHVtbnM6IHRoaXMuaW5pdENvbHVtbnMoKS5tYXAoY29sID0+IGNvbC5maWVsZCksXHJcbiAgICAgIGdsb2JhbFNlYXJjaDogJycsXHJcbiAgICAgIGNvbHVtbnNPcmRlcjogdGhpcy5pbml0Q29sdW1ucygpLm1hcChjb2wgPT4gY29sLmZpZWxkKSxcclxuICAgICAgZmlsdGVyczoge30sXHJcbiAgICAgIHNvcnRGaWVsZDogJycsXHJcbiAgICAgIHNvcnRPcmRlcjogJ2FzYycsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdE1hdGVyaWFsVGFibGVMb2FkRGF0YSB7XHJcbiAgZmlyc3Q6IG51bWJlcjtcclxuICByb3dzOiBudW1iZXI7XHJcbiAgZ2xvYmFsRmlsdGVyOiBzdHJpbmc7XHJcbiAgZ2xvYmFsRmlsdGVyQ29sdW1uczogc3RyaW5nW107XHJcbiAgc29ydEZpZWxkOiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiBTb3J0RGlyZWN0aW9uO1xyXG4gIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RNYXRlcmlhbFRhYmxlTG9jYWxTdG9yYWdlIGV4dGVuZHMgSUNhcHRpb25EYXRhQ2hhbmdlZCB7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICBwYWdlSW5kZXg6IG51bWJlcjtcclxuICBzb3J0RmllbGQ6IHN0cmluZztcclxuICBzb3J0T3JkZXI6IFNvcnREaXJlY3Rpb247XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN0LW1hdGVyaWFsLXRhYmxlXCI+XHJcbiAgQGlmIChpc0xvYWRpbmcoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPlxyXG4gICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJhY2NlbnRcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG5cclxuICBAaWYgKHNob3dUYWJsZSkge1xyXG4gICAgPHN0LW1hdGVyaWFsLXRhYmxlLWNhcHRpb25cclxuICAgICAgW3RhYmxlVGl0bGVdPVwidGFibGVUaXRsZSgpXCJcclxuICAgICAgW2FsbG93UGlja0NvbHVtbnNdPVwiYWxsb3dQaWNrQ29sdW1ucygpXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaCgpXCJcclxuICAgICAgW2FsbG93UmVvcmRlckNvbHVtbnNdPVwiYWxsb3dSZW9yZGVyQ29sdW1ucygpXCJcclxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtpbml0RmlsdGVyc109XCJpbml0RmlsdGVyc1wiXHJcbiAgICAgIFtpbml0R2xvYmFsU2VhcmNoXT1cImluaXRHbG9iYWxTZWFyY2hcIlxyXG4gICAgICBbc2hvd0NyZWF0ZUJ1dHRvbl09XCJzaG93Q3JlYXRlQnV0dG9uKClcIlxyXG4gICAgICBbY3JlYXRlQnV0dG9uTGFiZWxdPVwiY3JlYXRlQnV0dG9uTGFiZWwoKVwiXHJcbiAgICAgIFtjcmVhdGVCdXR0b25BY3Rpb25dPVwiY3JlYXRlQnV0dG9uQWN0aW9uKClcIlxyXG4gICAgICAoY2FwdGlvbkRhdGFDaGFuZ2VkKT1cImNhcHRpb25EYXRhQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKHJlc2V0VGFibGVTZXR0aW5ncyk9XCJyZXNldFRhYmxlU2V0dGluZ3MoKVwiXHJcbiAgICA+PC9zdC1tYXRlcmlhbC10YWJsZS1jYXB0aW9uPlxyXG4gIH1cclxuXHJcbiAgPHRhYmxlXHJcbiAgICBbbmdDbGFzc109XCJ7ICduby1ob3Zlcic6ICFyb3dDbGlja0FjdGlvbigpIH1cIlxyXG4gICAgbWF0LXRhYmxlXHJcbiAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZVNvdXJjZVwiXHJcbiAgICBtYXRTb3J0XHJcbiAgPlxyXG4gICAgQGZvciAoY29sdW1uIG9mIHNlbGVjdGVkQ29sdW1uczsgdHJhY2sgY29sdW1uKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uZmllbGRcIj5cclxuICAgICAgICA8dGhcclxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIHN0eWxlPVwie3sgY29sdW1uLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW4ud2lkdGggOiAnJyB9fVwiXHJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uLnNvcnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZiAoY29sdW1uLnR5cGUgPT09ICdhY3Rpb25zLXJvdy1zZWxlY3RpbmcnKSB7XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93cygpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCJcclxuICAgICAgICAgIHN0eWxlPVwie3sgY29sdW1uLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW4ud2lkdGggOiAnJyB9fVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN0LW1hdGVyaWFsLXRhYmxlLXJvdy1jZWxsXHJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZWxlbWVudFwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhQ29weV09XCJhY3RpdmVSb3dzRWRpdGluZ1tlbGVtZW50LmlkXVwiXHJcbiAgICAgICAgICAgIFtyb3dFZGl0aW5nXT1cIiEhYWN0aXZlUm93c0VkaXRpbmdbZWxlbWVudC5pZF1cIlxyXG4gICAgICAgICAgICBbcm93SXNTZWxlY3RlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgIChlZGl0Um93RW1pdHRlcik9XCJlZGl0Um93KGVsZW1lbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICAoc2F2ZUVkaXRSb3dFbWl0dGVyKT1cInNhdmVFZGl0Um93KGVsZW1lbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICAoY2FuY2VsRWRpdFJvd0VtaXR0ZXIpPVwiY2FuY2VsRWRpdFJvdyhlbGVtZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgKHNlbGVjdFJvd0NoYW5nZSk9XCJzZWxlY3RSb3dDaGFuZ2VkKCRldmVudCwgZWxlbWVudClcIlxyXG4gICAgICAgICAgPjwvc3QtbWF0ZXJpYWwtdGFibGUtcm93LWNlbGw+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcblxyXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJzZWxlY3RlZENvbHVtbnNTdHJpbmdcIj48L3RyPlxyXG4gICAgPHRyXHJcbiAgICAgIG1hdC1yb3dcclxuICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IHNlbGVjdGVkQ29sdW1uc1N0cmluZ1wiXHJcbiAgICAgIChjbGljayk9XCJyb3dDbGlja0FjdGlvbigpID8gcm93Q2xpY2tBY3Rpb24oKSEocm93KSA6IG51bGxcIlxyXG4gICAgPjwvdHI+XHJcbiAgPC90YWJsZT5cclxuICA8bWF0LXBhZ2luYXRvclxyXG4gICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDE1LCAyMCwgMjVdXCJcclxuICAgIFtsZW5ndGhdPVwiZGF0YUxlbmd0aCgpXCJcclxuICA+PC9tYXQtcGFnaW5hdG9yPlxyXG4gIEBpZiAocm93U2VsZWN0aW5nKCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJzdC1tYXRlcmlhbC10YWJsZS1zZWxlY3RlZC1yb3dzXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgIHt7IHN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5yb3dTZWxlY3RlZCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgIEBmb3IgKHJvdyBvZiBzZWxlY3Rpb24uc2VsZWN0ZWQ7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVTZWxlY3RlZFJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICB7eyByb3dbc2VsZWN0aW9uRmllbGRMYWJlbCgpXVxyXG4gICAgICAgICAgICAgIH19PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwOyBtYXJnaW4tbGVmdDogMTBweFwiXHJcbiAgICAgICAgICAgICAgICA+ZGVsZXRlPC9tYXQtaWNvblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsMkJBQTJCLEdBQzVCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFnQmxKLE1BQU0sT0FBTyxzQkFDWCxTQUFRLDJCQUEyQjtJQTRCbkMsSUFDSSxJQUFJLENBQUMsSUFBVztRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FB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ZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgbW9kZWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdC1tYXRlcmlhbC10YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlldy92aWV3LXN0LW1hdGVyaWFsLXRhYmxlLWNvbHVtbi5tb2RlbCc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgU3RCYXNlU2VydmljZSxcclxuICBTdFN1YnNjcmliZURlc3Ryb3lDb21wb25lbnQsXHJcbn0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgU3RTbmFja0JhclNlcnZpY2UgfSBmcm9tICduZ3gtc3Qtc25hY2stYmFyJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBTdFRhYmxlc1RyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cvbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIElDYXB0aW9uRGF0YUNoYW5nZWQsXHJcbiAgU3RNYXRlcmlhbFRhYmxlRmlsdGVyLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtc3QtbWF0ZXJpYWwtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXHJcbiAgICAnLi9tYXRlcmlhbC10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbiAgICAnLi4vLi4vLi4vLi4vYXNzZXRzL2Jhc2UtdGFibGUuc2NzcycsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUYWJsZUNvbXBvbmVudFxyXG4gIGV4dGVuZHMgU3RTdWJzY3JpYmVEZXN0cm95Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIHNob3dHbG9iYWxTZWFyY2ggPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gIHRhYmxlVGl0bGUgPSBpbnB1dCgnJyk7XHJcblxyXG4gIHBhZ2VTaXplID0gaW5wdXQ8bnVtYmVyPigxMCk7XHJcblxyXG4gIGRhdGFMZW5ndGggPSBpbnB1dDxudW1iZXI+KDApO1xyXG5cclxuICBhbGxvd1BpY2tDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBhbGxvd1Jlb3JkZXJDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBsb2NhbFN0b3JhZ2VOYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblxyXG4gIGxhenlMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGluaXRDb2x1bW5zID0gbW9kZWw8U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXT4oW10pO1xyXG5cclxuICByb3dDbGlja0FjdGlvbiA9IGlucHV0PChyb3c6IGFueSkgPT4gdm9pZD4oKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGF0YShkYXRhOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMucm93RWRpdGluZygpIHx8IHRoaXMucm93U2VsZWN0aW5nKCkpIHtcclxuICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMCAmJiAhZGF0YVswXS5pZCkge1xyXG4gICAgICAgIGRhdGEgPSBkYXRhLm1hcChyb3cgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4ucm93LFxyXG4gICAgICAgICAgICBpZDogU3RCYXNlU2VydmljZS5nZW5lcmF0ZUdVSUQoKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX2RhdGEgPSBkYXRhIHx8IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlU291cmNlKSB7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZGF0YSA9IGRhdGE7XHJcbiAgICAgIGlmICghdGhpcy5sYXp5TG9hZGluZygpICYmIHRoaXMubG9jYWxTdG9yYWdlRGF0YSkge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5wYWdlSW5kZXg7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IuX2VtaXRQYWdlRXZlbnQodGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF0YSgpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIHJvd0VkaXRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHJvd1NlbGVjdGluZyA9IGlucHV0KGZhbHNlKTtcclxuXHJcbiAgc2VsZWN0aW9uRmllbGRMYWJlbCA9IGlucHV0KCcnKTtcclxuXHJcbiAgc2hvd0NyZWF0ZUJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY3JlYXRlQnV0dG9uTGFiZWwgPSBpbnB1dCgnQ3JlYXRlJyk7XHJcblxyXG4gIGNyZWF0ZUJ1dHRvbkFjdGlvbiA9IGlucHV0PCgpID0+IHZvaWQ+KCgpID0+IHt9KTtcclxuXHJcbiAgbG9hZERhdGEgPSBvdXRwdXQ8U3RNYXRlcmlhbFRhYmxlTG9hZERhdGE+KCk7XHJcblxyXG4gIHNhdmVOZXdSb3cgPSBvdXRwdXQ8YW55PigpO1xyXG5cclxuICBzZWxlY3RSb3dDaGFuZ2UgPSBvdXRwdXQ8YW55W10+KCk7XHJcblxyXG4gIHByaXZhdGUgX2RhdGE6IGFueVtdID0gW107XHJcblxyXG4gIGNvbHVtbnM6IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbFtdID0gW107XHJcbiAgc2VsZWN0ZWRDb2x1bW5zOiBWaWV3U3RNYXRlcmlhbFRhYmxlQ29sdW1uTW9kZWxbXSA9IFtdO1xyXG4gIHNlbGVjdGVkQ29sdW1uc1N0cmluZzogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgdGFibGVTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xyXG5cclxuICBpbml0RmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXIgfSA9IHt9O1xyXG4gIGluaXRHbG9iYWxTZWFyY2g6IHN0cmluZyA9ICcnO1xyXG5cclxuICBzaG93VGFibGUgPSB0cnVlO1xyXG5cclxuICBhY3RpdmVSb3dzRWRpdGluZzogeyBbcm93SWQ6IHN0cmluZ106IHsgW3Byb3A6IHN0cmluZ106IGFueSB9IH0gPSB7fTtcclxuICBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XHJcblxyXG4gIHByaXZhdGUgbG9jYWxTdG9yYWdlRGF0YTogU3RNYXRlcmlhbFRhYmxlTG9jYWxTdG9yYWdlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU3RTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc3RUYWJsZVRyYW5zbGF0aW9uczogU3RUYWJsZXNUcmFuc2xhdGlvbnNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yb3dTZWxlY3RpbmcoKSkge1xyXG4gICAgICB0aGlzLmluaXRDb2x1bW5zKCkudW5zaGlmdCh7XHJcbiAgICAgICAgZmllbGQ6ICdhY3Rpb25zLXJvdy1zZWxlY3RpbmcnLFxyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgdHlwZTogJ2FjdGlvbnMtcm93LXNlbGVjdGluZycsXHJcbiAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgZmlsdGVyOiBmYWxzZSxcclxuICAgICAgICB3aWR0aDogJzYwcHgnLFxyXG4gICAgICAgIHNlbGVjdENvbHVtbkxhYmVsOlxyXG4gICAgICAgICAgdGhpcy5zdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkucm93U2VsZWN0Q29sdW1uTGFiZWwsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0Q29sdW1ucy51cGRhdGUob2xkVmFsID0+XHJcbiAgICAgICAgb2xkVmFsLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmZpZWxkICE9PSAnYWN0aW9uLXJvdy1zZWxlY3RpbmcnKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJvd0VkaXRpbmcoKSkge1xyXG4gICAgICB0aGlzLmluaXRDb2x1bW5zKCkucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhY3Rpb25zLXJvdy1lZGl0aW5nJyxcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIHR5cGU6ICdhY3Rpb25zLXJvdy1lZGl0aW5nJyxcclxuICAgICAgICBzb3J0OiBmYWxzZSxcclxuICAgICAgICBmaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiAnMTEwcHgnLFxyXG4gICAgICAgIHNlbGVjdENvbHVtbkxhYmVsOlxyXG4gICAgICAgICAgdGhpcy5zdFRhYmxlVHJhbnNsYXRpb25zLmdldFRyYW5zbGF0aW9ucygpKCkucm93QWN0aW9uc0NvbHVtbkxhYmVsLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5pdENvbHVtbnMudXBkYXRlKG9sZFZhbCA9PlxyXG4gICAgICAgIG9sZFZhbC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWVsZCAhPT0gJ2FjdGlvbi1yb3ctZWRpdGluZycpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Q29sdW1ucygpLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi5maWVsZCA9PT0gJ2FjdGlvbnMnICYmICFjb2x1bW4udHlwZSkge1xyXG4gICAgICAgIGNvbHVtbi50eXBlID0gJ2FjdGlvbnMnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWNvbHVtbi5maWx0ZXJUeXBlICYmIGNvbHVtbi5maWx0ZXIpIHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyVHlwZSA9ICdzdHJpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyVHlwZSA9ICdudW1iZXInO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlclR5cGUgPSAnZGF0ZSc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2N1c3RvbS10ZW1wbGF0ZScpIHtcclxuICAgICAgICAgIGNvbHVtbi5maWx0ZXJUeXBlID0gJ2N1c3RvbSc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICBjb2x1bW4uZmlsdGVyVHlwZSA9ICdib29sZWFuJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sdW1uLmZpbHRlclR5cGUgPSAnc3RyaW5nJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZExvY2FsU3RvcmFnZURhdGEoKTtcclxuXHJcbiAgICAvL3ZhbGlkYXRlIGZpbHRlcnNcclxuICAgIGNvbnN0IGZpbHRlcktleXMgPSBPYmplY3Qua2V5cyh0aGlzLmluaXRGaWx0ZXJzKTtcclxuICAgIGNvbnN0IG5ld0ZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH0gPSB7fTtcclxuICAgIGlmIChmaWx0ZXJLZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZmlsdGVyS2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sID0gdGhpcy5pbml0Q29sdW1ucygpLmZpbmQoY29sdW1uID0+IGNvbHVtbi5maWVsZCA9PT0ga2V5KTtcclxuXHJcbiAgICAgICAgaWYgKGNvbCkge1xyXG4gICAgICAgICAgbmV3RmlsdGVyc1trZXldID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5pbml0RmlsdGVyc1trZXldLnZhbHVlIHx8ICcnLFxyXG4gICAgICAgICAgICBtYXRjaE1vZGU6XHJcbiAgICAgICAgICAgICAgTWF0ZXJpYWxUYWJsZUZpbHRlckRpYWxvZ0NvbXBvbmVudC5nZXRCYXNlTWF0Y2hNb2RlQnlUeXBlKFxyXG4gICAgICAgICAgICAgICAgY29sLmZpbHRlclR5cGUhXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdGaWx0ZXJzKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5pbml0RmlsdGVycykpIHtcclxuICAgICAgdGhpcy5pbml0RmlsdGVycyA9IG5ld0ZpbHRlcnM7XHJcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzID0gbmV3RmlsdGVycztcclxuICAgICAgdGhpcy51cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldERpc3BsYXllZENvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0SW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLnNldFNvcnRQYWdlU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBjYXB0aW9uRGF0YUNoYW5nZWQoZXZlbnQ6IElDYXB0aW9uRGF0YUNoYW5nZWQpIHtcclxuICAgIGxldCBsb2FkTGF6eURhdGEgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuZ2xvYmFsU2VhcmNoICE9PSB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoIHx8XHJcbiAgICAgIGV2ZW50LmZpbHRlcnMgIT09IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzXHJcbiAgICApIHtcclxuICAgICAgbG9hZExhenlEYXRhID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgIC4uLmV2ZW50LFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3IucGFnZVNpemUsXHJcbiAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4LFxyXG4gICAgICBzb3J0RmllbGQ6IHRoaXMuc29ydC5hY3RpdmUsXHJcbiAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0LmRpcmVjdGlvbixcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5zZXRDb2x1bW5zT3JkZXIoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uc1Zpc2libGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG5cclxuICAgIGlmIChsb2FkTGF6eURhdGEpIHtcclxuICAgICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRUYWJsZVNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zaG93VGFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgIHRoaXMudXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gICAgdGhpcy5pbml0RmlsdGVycyA9IHt9O1xyXG4gICAgdGhpcy5pbml0R2xvYmFsU2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLnNvcnQuc29ydCh7IGlkOiAnJywgc3RhcnQ6ICdhc2MnLCBkaXNhYmxlQ2xlYXI6IGZhbHNlIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheWVkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLnNldEluaXRUYWJsZSgpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGVkaXRSb3cocm93OiBhbnksIGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF0gPSB7IC4uLnJvdyB9O1xyXG4gIH1cclxuXHJcbiAgc2F2ZUVkaXRSb3cocm93OiBhbnksIGNvbHVtbjogVmlld1N0TWF0ZXJpYWxUYWJsZUNvbHVtbk1vZGVsKSB7XHJcbiAgICBsZXQgYWxsb3dTYXZlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbnNcclxuICAgICAgLmZpbHRlcihjb2wgPT4gY29sLmFsbG93RWRpdENvbHVtbilcclxuICAgICAgLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sLmN1c3RvbUVkaXRSb3dWYWxpZGF0b3IpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbC5jdXN0b21FZGl0Um93VmFsaWRhdG9yKFxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF1bY29sLmZpZWxkXSxcclxuICAgICAgICAgICAgcm93W2NvbC5maWVsZF0sXHJcbiAgICAgICAgICAgIHJvd1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcclxuICAgICAgICAgICAgYWxsb3dTYXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tiYXIuZXJyb3IocmVzdWx0LmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGlmIChhbGxvd1NhdmUpIHtcclxuICAgICAgdGhpcy5zYXZlTmV3Um93LmVtaXQodGhpcy5hY3RpdmVSb3dzRWRpdGluZ1tyb3cuaWRdKTtcclxuICAgICAgdGhpcy5jb2x1bW5zXHJcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sLmFsbG93RWRpdENvbHVtbilcclxuICAgICAgICAuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgcm93W2NvbC5maWVsZF0gPSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF1bY29sLmZpZWxkXTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZVJvd3NFZGl0aW5nW3Jvdy5pZF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5jZWxFZGl0Um93KHJvdzogYW55LCBjb2x1bW46IFZpZXdTdE1hdGVyaWFsVGFibGVDb2x1bW5Nb2RlbCkge1xyXG4gICAgZGVsZXRlIHRoaXMuYWN0aXZlUm93c0VkaXRpbmdbcm93LmlkXTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcclxuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLnRhYmxlU291cmNlLmRhdGEubGVuZ3RoO1xyXG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsUm93cygpIHtcclxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0KC4uLnRoaXMudGFibGVTb3VyY2UuZGF0YSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RSb3dDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTZWxlY3RlZFJvdyhyb3c6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzZWxlY3Qocm93KTtcclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Um93Q2hhbmdlZCh2YWx1ZTogYm9vbGVhbiwgcm93OiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KHJvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2VsZWN0Um93Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDdXN0b21GaWx0ZXJGb3JMb2NhbFRhYmxlKCkge1xyXG4gICAgbGV0IGZpbHRlckZ1bmN0aW9uID0gKGRhdGE6IGFueSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybXM6IHtcclxuICAgICAgICBbY29sdW1uOiBzdHJpbmddOiBTdE1hdGVyaWFsVGFibGVGaWx0ZXI7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHN0R2xvYmFsU2VhcmNoOiBzdHJpbmc7XHJcbiAgICAgIH0gPSBKU09OLnBhcnNlKGZpbHRlcik7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm1zS2V5cyA9IE9iamVjdC5rZXlzKHNlYXJjaFRlcm1zKTtcclxuICAgICAgbGV0IHNlYXJjaE9rID0gdHJ1ZTtcclxuICAgICAgbGV0IHNlYXJjaE9rR2xvYmFsID0gdHJ1ZTtcclxuXHJcbiAgICAgIHNlYXJjaFRlcm1zS2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGtleSAhPT0gJ3N0R2xvYmFsU2VhcmNoJyAmJlxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcuaW5jbHVkZXMoa2V5KSAmJlxyXG4gICAgICAgICAgc2VhcmNoVGVybXNba2V5XS52YWx1ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VhcmNoVGVybXNba2V5XS52YWx1ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZUZyb206IHN0cmluZyB8IG51bGwgPSAoXHJcbiAgICAgICAgICAgICAgc2VhcmNoVGVybXNba2V5XS52YWx1ZSBhcyBbc3RyaW5nIHwgbnVsbCwgc3RyaW5nIHwgbnVsbF1cclxuICAgICAgICAgICAgKVswXTtcclxuICAgICAgICAgICAgY29uc3QgZGF0ZVRvOiBzdHJpbmcgfCBudWxsID0gKFxyXG4gICAgICAgICAgICAgIHNlYXJjaFRlcm1zW2tleV0udmFsdWUgYXMgW3N0cmluZyB8IG51bGwsIHN0cmluZyB8IG51bGxdXHJcbiAgICAgICAgICAgIClbMV07XHJcblxyXG4gICAgICAgICAgICBpZiAoZGF0ZUZyb20gfHwgZGF0ZVRvKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG1wQ29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5maWVsZCA9PT0ga2V5KTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRtcENvbHVtbiAmJiB0bXBDb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRnJvbVZhbHVlID0gZGF0ZUZyb20gPyBuZXcgRGF0ZShkYXRlRnJvbSkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVRvVmFsdWUgPSBkYXRlVG9cclxuICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKGRhdGVUbykuc2V0RGF0ZShuZXcgRGF0ZShkYXRlVG8pLmdldERhdGUoKSArIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJsZURhdGEgPSBuZXcgRGF0ZShkYXRhW2tleV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRlRnJvbVZhbHVlICYmIGRhdGVUb1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaE9rID1cclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hPayAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YSA+PSBkYXRlRnJvbVZhbHVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVEYXRhIDw9IGRhdGVUb1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRlRnJvbVZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaE9rID0gc2VhcmNoT2sgJiYgdGFibGVEYXRhID49IGRhdGVGcm9tVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGVUb1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaE9rID0gc2VhcmNoT2sgJiYgdGFibGVEYXRhIDw9IGRhdGVUb1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2VhcmNoT2sgPVxyXG4gICAgICAgICAgICAgIHNlYXJjaE9rICYmXHJcbiAgICAgICAgICAgICAgZGF0YVtrZXldXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5pbmRleE9mKHNlYXJjaFRlcm1zW2tleV0udmFsdWUhLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICAgICAgICAtMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoc2VhcmNoVGVybXMuc3RHbG9iYWxTZWFyY2gpIHtcclxuICAgICAgICBzZWFyY2hPa0dsb2JhbCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zU3RyaW5nLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhW2NvbF0pIHtcclxuICAgICAgICAgICAgc2VhcmNoT2tHbG9iYWwgPVxyXG4gICAgICAgICAgICAgIHNlYXJjaE9rR2xvYmFsIHx8XHJcbiAgICAgICAgICAgICAgZGF0YVtjb2xdXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5pbmRleE9mKFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hUZXJtcy5zdEdsb2JhbFNlYXJjaC50b1N0cmluZygpLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICkgIT09IC0xO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gc2VhcmNoT2sgJiYgc2VhcmNoT2tHbG9iYWw7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZpbHRlckZ1bmN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0TGF6eUxvYWRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5sYXp5TG9hZGluZygpKSB7XHJcbiAgICAgIHRoaXMubG9hZERhdGEuZW1pdCh7XHJcbiAgICAgICAgZmlyc3Q6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCAqIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIHJvd3M6IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplLFxyXG4gICAgICAgIGdsb2JhbEZpbHRlckNvbHVtbnM6IHRoaXMuc2VsZWN0ZWRDb2x1bW5zU3RyaW5nLFxyXG4gICAgICAgIGdsb2JhbEZpbHRlcjogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmdsb2JhbFNlYXJjaCxcclxuICAgICAgICBzb3J0RmllbGQ6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5zb3J0RmllbGQsXHJcbiAgICAgICAgc29ydE9yZGVyOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZmlsdGVyID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzLFxyXG4gICAgICAgIHN0R2xvYmFsU2VhcmNoOiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZ2xvYmFsU2VhcmNoLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YVRvTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlTmFtZSgpISxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxvY2FsU3RvcmFnZURhdGEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuX2RhdGEpO1xyXG5cclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnBhZ2VJbmRleDtcclxuXHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCAmJiB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc29ydE9yZGVyKSB7XHJcbiAgICAgIGNvbnN0IGRpc2FibGVDbGVhciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNvcnQuc29ydCh7IGlkOiAnJywgc3RhcnQ6ICdhc2MnLCBkaXNhYmxlQ2xlYXIgfSk7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0KHtcclxuICAgICAgICBpZDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRGaWVsZCxcclxuICAgICAgICBzdGFydDogdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLnNvcnRPcmRlcixcclxuICAgICAgICBkaXNhYmxlQ2xlYXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5sYXp5TG9hZGluZygpISkge1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xyXG4gICAgICB0aGlzLnRhYmxlU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XHJcbiAgICAgIHRoaXMudGFibGVTb3VyY2UuZmlsdGVyUHJlZGljYXRlID0gdGhpcy5jcmVhdGVDdXN0b21GaWx0ZXJGb3JMb2NhbFRhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbWl0TGF6eUxvYWRpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U29ydFBhZ2VTdWJzY3JpcHRpb24oKSB7XHJcbiAgICB0aGlzLnNvcnQuc29ydENoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxyXG4gICAgICAgICAgKHByZXYsIGN1cnIpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0ge1xyXG4gICAgICAgICAgLi4udGhpcy5sb2NhbFN0b3JhZ2VEYXRhLFxyXG4gICAgICAgICAgc29ydEZpZWxkOiByZXMuYWN0aXZlLFxyXG4gICAgICAgICAgc29ydE9yZGVyOiByZXMuZGlyZWN0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXRhVG9Mb2NhbFN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmVtaXRMYXp5TG9hZGluZygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRvci5wYWdlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXHJcbiAgICAgICAgICAocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmxvY2FsU3RvcmFnZURhdGEsXHJcbiAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCxcclxuICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZURhdGFUb0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuZW1pdExhenlMb2FkaW5nKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREaXNwbGF5ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5pbml0Q29sdW1ucygpLm1hcChjb2wgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICB0eXBlOiBjb2wudHlwZSA/IGNvbC50eXBlIDogJ3N0cmluZycsXHJcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBleHBhbmRlZDogdHJ1ZSxcclxuICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRDb2x1bW5zT3JkZXIoKTtcclxuICAgIHRoaXMuc2V0Q29sdW1uc1Zpc2libGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb2x1bW5zT3JkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhPy5jb2x1bW5zT3JkZXIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW1xyXG4gICAgICAgIC4uLnRoaXMubG9jYWxTdG9yYWdlRGF0YS5jb2x1bW5zT3JkZXJcclxuICAgICAgICAgIC5maWx0ZXIoY29sdW1uID0+IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZmllbGQgPT09IGNvbHVtbikpXHJcbiAgICAgICAgICAubWFwKGNvbHVtbiA9PiB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4pISksXHJcbiAgICAgICAgLi4udGhpcy5jb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgIGNvbHVtbiA9PiAhdGhpcy5sb2NhbFN0b3JhZ2VEYXRhLmNvbHVtbnNPcmRlci5pbmNsdWRlcyhjb2x1bW4uZmllbGQpXHJcbiAgICAgICAgKSxcclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sdW1uc1Zpc2libGUoKSB7XHJcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VEYXRhPy5zZWxlY3RlZENvbHVtbnMpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgICB2aXNpYmxlOlxyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEuc2VsZWN0ZWRDb2x1bW5zLmluY2x1ZGVzKGNvbC5maWVsZCkgfHxcclxuICAgICAgICAgICAgIXRoaXMubG9jYWxTdG9yYWdlRGF0YS5jb2x1bW5zT3JkZXIuaW5jbHVkZXMoY29sLmZpZWxkKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiBjb2wudmlzaWJsZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnNTdHJpbmcgPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoY29sID0+IGNvbC5maWVsZCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTG9jYWxTdG9yYWdlRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKSkge1xyXG4gICAgICBjb25zdCBsb2NhbFN0b3JhZ2VEYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkhKTtcclxuXHJcbiAgICAgIGlmIChsb2NhbFN0b3JhZ2VEYXRhKSB7XHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VEYXRhKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy52YWxpZE9sZEZpbHRlcnNUb05ld0Zvcm1hdChcclxuICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YS5maWx0ZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZURhdGEuZmlsdGVycyA9IGZpbHRlcnM7XHJcbiAgICAgICAgdGhpcy5pbml0RmlsdGVycyA9IGZpbHRlcnM7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdEdsb2JhbFNlYXJjaCA9IHRoaXMubG9jYWxTdG9yYWdlRGF0YS5nbG9iYWxTZWFyY2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXROZXdFbXB0eUxvY2FsU3RvcmFnZURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRPbGRGaWx0ZXJzVG9OZXdGb3JtYXQob2xkRmlsdGVyczoge1xyXG4gICAgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIHwgc3RyaW5nO1xyXG4gIH0pOiB7IFtrZXk6IHN0cmluZ106IFN0TWF0ZXJpYWxUYWJsZUZpbHRlciB9IHtcclxuICAgIGNvbnN0IG5ld0ZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH0gPSB7fTtcclxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvbGRGaWx0ZXJzKTtcclxuXHJcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG5ld0ZpbHRlcnM7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygb2xkRmlsdGVyc1trZXldID09PSAnb2JqZWN0JyAmJiBvbGRGaWx0ZXJzW2tleV0gIT09IG51bGwpIHtcclxuICAgICAgICBuZXdGaWx0ZXJzW2tleV0gPSBvbGRGaWx0ZXJzW2tleV0gYXMgU3RNYXRlcmlhbFRhYmxlRmlsdGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ld0ZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5ld0VtcHR5TG9jYWxTdG9yYWdlRGF0YSgpIHtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlRGF0YSA9IHtcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUoKSxcclxuICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICBzZWxlY3RlZENvbHVtbnM6IHRoaXMuaW5pdENvbHVtbnMoKS5tYXAoY29sID0+IGNvbC5maWVsZCksXHJcbiAgICAgIGdsb2JhbFNlYXJjaDogJycsXHJcbiAgICAgIGNvbHVtbnNPcmRlcjogdGhpcy5pbml0Q29sdW1ucygpLm1hcChjb2wgPT4gY29sLmZpZWxkKSxcclxuICAgICAgZmlsdGVyczoge30sXHJcbiAgICAgIHNvcnRGaWVsZDogJycsXHJcbiAgICAgIHNvcnRPcmRlcjogJ2FzYycsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdE1hdGVyaWFsVGFibGVMb2FkRGF0YSB7XHJcbiAgZmlyc3Q6IG51bWJlcjtcclxuICByb3dzOiBudW1iZXI7XHJcbiAgZ2xvYmFsRmlsdGVyOiBzdHJpbmc7XHJcbiAgZ2xvYmFsRmlsdGVyQ29sdW1uczogc3RyaW5nW107XHJcbiAgc29ydEZpZWxkOiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyOiBTb3J0RGlyZWN0aW9uO1xyXG4gIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RNYXRlcmlhbFRhYmxlTG9jYWxTdG9yYWdlIGV4dGVuZHMgSUNhcHRpb25EYXRhQ2hhbmdlZCB7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICBwYWdlSW5kZXg6IG51bWJlcjtcclxuICBzb3J0RmllbGQ6IHN0cmluZztcclxuICBzb3J0T3JkZXI6IFNvcnREaXJlY3Rpb247XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInN0LW1hdGVyaWFsLXRhYmxlXCI+XHJcbiAgQGlmIChpc0xvYWRpbmcoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3Bpbm5lclwiPlxyXG4gICAgICA8bWF0LXNwaW5uZXIgY29sb3I9XCJhY2NlbnRcIj48L21hdC1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG5cclxuICBAaWYgKHNob3dUYWJsZSkge1xyXG4gICAgPHN0LW1hdGVyaWFsLXRhYmxlLWNhcHRpb25cclxuICAgICAgW3RhYmxlVGl0bGVdPVwidGFibGVUaXRsZSgpXCJcclxuICAgICAgW2FsbG93UGlja0NvbHVtbnNdPVwiYWxsb3dQaWNrQ29sdW1ucygpXCJcclxuICAgICAgW3Nob3dHbG9iYWxTZWFyY2hdPVwic2hvd0dsb2JhbFNlYXJjaCgpXCJcclxuICAgICAgW2FsbG93UmVvcmRlckNvbHVtbnNdPVwiYWxsb3dSZW9yZGVyQ29sdW1ucygpXCJcclxuICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgIFtpbml0RmlsdGVyc109XCJpbml0RmlsdGVyc1wiXHJcbiAgICAgIFtpbml0R2xvYmFsU2VhcmNoXT1cImluaXRHbG9iYWxTZWFyY2hcIlxyXG4gICAgICBbc2hvd0NyZWF0ZUJ1dHRvbl09XCJzaG93Q3JlYXRlQnV0dG9uKClcIlxyXG4gICAgICBbY3JlYXRlQnV0dG9uTGFiZWxdPVwiY3JlYXRlQnV0dG9uTGFiZWwoKVwiXHJcbiAgICAgIFtjcmVhdGVCdXR0b25BY3Rpb25dPVwiY3JlYXRlQnV0dG9uQWN0aW9uKClcIlxyXG4gICAgICAoY2FwdGlvbkRhdGFDaGFuZ2VkKT1cImNhcHRpb25EYXRhQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKHJlc2V0VGFibGVTZXR0aW5ncyk9XCJyZXNldFRhYmxlU2V0dGluZ3MoKVwiXHJcbiAgICA+PC9zdC1tYXRlcmlhbC10YWJsZS1jYXB0aW9uPlxyXG4gIH1cclxuXHJcbiAgPHRhYmxlXHJcbiAgICBbbmdDbGFzc109XCJ7ICduby1ob3Zlcic6ICFyb3dDbGlja0FjdGlvbigpIH1cIlxyXG4gICAgbWF0LXRhYmxlXHJcbiAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZVNvdXJjZVwiXHJcbiAgICBtYXRTb3J0XHJcbiAgPlxyXG4gICAgQGZvciAoY29sdW1uIG9mIHNlbGVjdGVkQ29sdW1uczsgdHJhY2sgY29sdW1uKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uZmllbGRcIj5cclxuICAgICAgICA8dGhcclxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIHN0eWxlPVwie3sgY29sdW1uLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW4ud2lkdGggOiAnJyB9fVwiXHJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uLnNvcnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZiAoY29sdW1uLnR5cGUgPT09ICdhY3Rpb25zLXJvdy1zZWxlY3RpbmcnKSB7XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gdG9nZ2xlQWxsUm93cygpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIG1hdC1jZWxsXHJcbiAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCJcclxuICAgICAgICAgIHN0eWxlPVwie3sgY29sdW1uLndpZHRoID8gJ3dpZHRoOicgKyBjb2x1bW4ud2lkdGggOiAnJyB9fVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN0LW1hdGVyaWFsLXRhYmxlLXJvdy1jZWxsXHJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcclxuICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZWxlbWVudFwiXHJcbiAgICAgICAgICAgIFtyb3dEYXRhQ29weV09XCJhY3RpdmVSb3dzRWRpdGluZ1tlbGVtZW50LmlkXVwiXHJcbiAgICAgICAgICAgIFtyb3dFZGl0aW5nXT1cIiEhYWN0aXZlUm93c0VkaXRpbmdbZWxlbWVudC5pZF1cIlxyXG4gICAgICAgICAgICBbcm93SXNTZWxlY3RlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgIChlZGl0Um93RW1pdHRlcik9XCJlZGl0Um93KGVsZW1lbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICAoc2F2ZUVkaXRSb3dFbWl0dGVyKT1cInNhdmVFZGl0Um93KGVsZW1lbnQsIGNvbHVtbilcIlxyXG4gICAgICAgICAgICAoY2FuY2VsRWRpdFJvd0VtaXR0ZXIpPVwiY2FuY2VsRWRpdFJvdyhlbGVtZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgKHNlbGVjdFJvd0NoYW5nZSk9XCJzZWxlY3RSb3dDaGFuZ2VkKCRldmVudCwgZWxlbWVudClcIlxyXG4gICAgICAgICAgPjwvc3QtbWF0ZXJpYWwtdGFibGUtcm93LWNlbGw+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICB9XHJcblxyXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJzZWxlY3RlZENvbHVtbnNTdHJpbmdcIj48L3RyPlxyXG4gICAgPHRyXHJcbiAgICAgIG1hdC1yb3dcclxuICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IHNlbGVjdGVkQ29sdW1uc1N0cmluZ1wiXHJcbiAgICAgIChjbGljayk9XCJyb3dDbGlja0FjdGlvbigpID8gcm93Q2xpY2tBY3Rpb24oKSEocm93KSA6IG51bGxcIlxyXG4gICAgPjwvdHI+XHJcbiAgPC90YWJsZT5cclxuICA8bWF0LXBhZ2luYXRvclxyXG4gICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIlxyXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDE1LCAyMCwgMjVdXCJcclxuICAgIFtsZW5ndGhdPVwiZGF0YUxlbmd0aCgpXCJcclxuICA+PC9tYXQtcGFnaW5hdG9yPlxyXG4gIEBpZiAocm93U2VsZWN0aW5nKCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJzdC1tYXRlcmlhbC10YWJsZS1zZWxlY3RlZC1yb3dzXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAge3sgc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCB9fVxyXG4gICAgICAgIHt7IHN0VGFibGVUcmFuc2xhdGlvbnMuZ2V0VHJhbnNsYXRpb25zKCkoKS5yb3dTZWxlY3RlZCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgIEBmb3IgKHJvdyBvZiBzZWxlY3Rpb24uc2VsZWN0ZWQ7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJyZW1vdmVTZWxlY3RlZFJvdyhyb3cpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICB7eyByb3dbc2VsZWN0aW9uRmllbGRMYWJlbCgpXVxyXG4gICAgICAgICAgICAgIH19PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAwOyBtYXJnaW4tbGVmdDogMTBweFwiXHJcbiAgICAgICAgICAgICAgICA+ZGVsZXRlPC9tYXQtaWNvblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -7,7 +7,7 @@ export const DEFAULT_TRANSLATIONS = {
|
|
|
7
7
|
reorderColumns: 'Reorder Columns',
|
|
8
8
|
expandAllFilters: 'Expand all filters',
|
|
9
9
|
collapseAllFilters: 'Collapse all filters',
|
|
10
|
-
|
|
10
|
+
clearAllFilters: 'Clear All Filters',
|
|
11
11
|
filterTitle: 'Filters',
|
|
12
12
|
filter: 'Filter',
|
|
13
13
|
searchFilter: 'Search',
|
|
@@ -21,5 +21,9 @@ export const DEFAULT_TRANSLATIONS = {
|
|
|
21
21
|
rowSelected: 'row selected',
|
|
22
22
|
rowSelectColumnLabel: 'Row Select',
|
|
23
23
|
rowActionsColumnLabel: 'Row Actions',
|
|
24
|
+
matchMode: 'Match Mode',
|
|
25
|
+
clearFilter: 'Clear Filter',
|
|
26
|
+
dateFrom: 'Date From',
|
|
27
|
+
dateTo: 'Date To',
|
|
24
28
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10cmFuc2xhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvY29uc3RhbnRzL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUE4QjtJQUM3RCxZQUFZLEVBQUUsUUFBUTtJQUN0QixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osbUJBQW1CLEVBQUUsaUJBQWlCO0lBQ3RDLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsZ0JBQWdCLEVBQUUsb0JBQW9CO0lBQ3RDLGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxRQUFRO0lBQ3RCLGdCQUFnQixFQUFFLGVBQWU7SUFDakMsZ0JBQWdCLEVBQUUsWUFBWTtJQUM5QixXQUFXLEVBQUUsTUFBTTtJQUNuQixVQUFVLEVBQUUsS0FBSztJQUNqQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxZQUFZO0lBQzdCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLG9CQUFvQixFQUFFLFlBQVk7SUFDbEMscUJBQXFCLEVBQUUsYUFBYTtJQUNwQyxTQUFTLEVBQUUsWUFBWTtJQUN2QixXQUFXLEVBQUUsY0FBYztJQUMzQixRQUFRLEVBQUUsV0FBVztJQUNyQixNQUFNLEVBQUUsU0FBUztDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RUYWJsZXNUcmFuc2xhdGlvbnNNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RSQU5TTEFUSU9OUzogU3RUYWJsZXNUcmFuc2xhdGlvbnNNb2RlbCA9IHtcclxuICBnbG9iYWxTZWFyY2g6ICdTZWFyY2gnLFxyXG4gIGNhbmNlbDogJ0NhbmNlbCcsXHJcbiAgY2xvc2U6ICdDbG9zZScsXHJcbiAgc2F2ZTogJ1NhdmUnLFxyXG4gIHJlb3JkZXJDb2x1bW5zVGl0bGU6ICdSZW9yZGVyIENvbHVtbnMnLFxyXG4gIHJlb3JkZXJDb2x1bW5zOiAnUmVvcmRlciBDb2x1bW5zJyxcclxuICBleHBhbmRBbGxGaWx0ZXJzOiAnRXhwYW5kIGFsbCBmaWx0ZXJzJyxcclxuICBjb2xsYXBzZUFsbEZpbHRlcnM6ICdDb2xsYXBzZSBhbGwgZmlsdGVycycsXHJcbiAgY2xlYXJBbGxGaWx0ZXJzOiAnQ2xlYXIgQWxsIEZpbHRlcnMnLFxyXG4gIGZpbHRlclRpdGxlOiAnRmlsdGVycycsXHJcbiAgZmlsdGVyOiAnRmlsdGVyJyxcclxuICBzZWFyY2hGaWx0ZXI6ICdTZWFyY2gnLFxyXG4gIGZpbHRlckNob29zZURhdGU6ICdDaG9vc2UgYSBkYXRlJyxcclxuICBib29sZWFuUGlja1ZhbHVlOiAnUGljayBWYWx1ZScsXHJcbiAgYm9vbGVhbk5vbmU6ICdOb25lJyxcclxuICBib29sZWFuWWVzOiAnWWVzJyxcclxuICBib29sZWFuTm86ICdObycsXHJcbiAgY3VzdG9tUGlja1ZhbHVlOiAnUGljayBWYWx1ZScsXHJcbiAgY3VzdG9tTm9uZTogJ05vbmUnLFxyXG4gIHJvd1NlbGVjdGVkOiAncm93IHNlbGVjdGVkJyxcclxuICByb3dTZWxlY3RDb2x1bW5MYWJlbDogJ1JvdyBTZWxlY3QnLFxyXG4gIHJvd0FjdGlvbnNDb2x1bW5MYWJlbDogJ1JvdyBBY3Rpb25zJyxcclxuICBtYXRjaE1vZGU6ICdNYXRjaCBNb2RlJyxcclxuICBjbGVhckZpbHRlcjogJ0NsZWFyIEZpbHRlcicsXHJcbiAgZGF0ZUZyb206ICdEYXRlIEZyb20nLFxyXG4gIGRhdGVUbzogJ0RhdGUgVG8nLFxyXG59O1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXRhYmxlcy9zcmMvbGliL21vZGVscy9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUNhcHRpb25EYXRhQ2hhbmdlZCB7XHJcbiAgc2VsZWN0ZWRDb2x1bW5zOiBzdHJpbmdbXTtcclxuICBnbG9iYWxTZWFyY2g6IHN0cmluZztcclxuICBjb2x1bW5zT3JkZXI6IHN0cmluZ1tdO1xyXG4gIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RNYXRlcmlhbFRhYmxlRmlsdGVyIHtcclxuICB2YWx1ZTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyVmFsdWVUeXBlO1xyXG4gIG1hdGNoTW9kZTogU3RNYXRlcmlhbFRhYmxlRmlsdGVyTWF0Y2hNb2RlVHlwZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU3RNYXRlcmlhbFRhYmxlRmlsdGVyVmFsdWVUeXBlID1cclxuICB8IHN0cmluZ1xyXG4gIHwgbnVtYmVyXHJcbiAgfCBudWxsXHJcbiAgfCBbc3RyaW5nIHwgbnVsbCwgc3RyaW5nIHwgbnVsbF07XHJcblxyXG5leHBvcnQgdHlwZSBTdE1hdGVyaWFsVGFibGVGaWx0ZXJNYXRjaE1vZGVUeXBlID1cclxuICB8ICdlcXVhbCdcclxuICB8ICdjb250YWlucydcclxuICB8ICdiZXR3ZWVuJztcclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtdGFibGVzLXRyYW5zbGF0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC10YWJsZXMvc3JjL2xpYi9tb2RlbHMvc3QtdGFibGVzLXRyYW5zbGF0aW9ucy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTdFRhYmxlc1RyYW5zbGF0aW9uc01vZGVsIHtcclxuICBnbG9iYWxTZWFyY2g6IHN0cmluZztcclxuICBjYW5jZWw6IHN0cmluZztcclxuICBjbG9zZTogc3RyaW5nO1xyXG4gIHNhdmU6IHN0cmluZztcclxuICByZW9yZGVyQ29sdW1uc1RpdGxlOiBzdHJpbmc7XHJcbiAgZmlsdGVyVGl0bGU6IHN0cmluZztcclxuICByZW9yZGVyQ29sdW1uczogc3RyaW5nO1xyXG4gIGV4cGFuZEFsbEZpbHRlcnM6IHN0cmluZztcclxuICBjb2xsYXBzZUFsbEZpbHRlcnM6IHN0cmluZztcclxuICBjbGVhckFsbEZpbHRlcnM6IHN0cmluZztcclxuICBmaWx0ZXI6IHN0cmluZztcclxuICBzZWFyY2hGaWx0ZXI6IHN0cmluZztcclxuICBmaWx0ZXJDaG9vc2VEYXRlOiBzdHJpbmc7XHJcbiAgYm9vbGVhblBpY2tWYWx1ZTogc3RyaW5nO1xyXG4gIGJvb2xlYW5Ob25lOiBzdHJpbmc7XHJcbiAgYm9vbGVhblllczogc3RyaW5nO1xyXG4gIGJvb2xlYW5Obzogc3RyaW5nO1xyXG4gIGN1c3RvbVBpY2tWYWx1ZTogc3RyaW5nO1xyXG4gIGN1c3RvbU5vbmU6IHN0cmluZztcclxuICByb3dTZWxlY3RlZDogc3RyaW5nO1xyXG4gIHJvd1NlbGVjdENvbHVtbkxhYmVsOiBzdHJpbmc7XHJcbiAgcm93QWN0aW9uc0NvbHVtbkxhYmVsOiBzdHJpbmc7XHJcbiAgbWF0Y2hNb2RlOiBzdHJpbmc7XHJcbiAgY2xlYXJGaWx0ZXI6IHN0cmluZztcclxuICBkYXRlRnJvbTogc3RyaW5nO1xyXG4gIGRhdGVUbzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -31,6 +31,7 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
|
31
31
|
import { MatNativeDateModule } from '@angular/material/core';
|
|
32
32
|
import { StSnackBarModule } from 'ngx-st-snack-bar';
|
|
33
33
|
import { SelectTableComponent } from './components/select-table/select-table.component';
|
|
34
|
+
import { MaterialTableFilterComponent } from './components/material-table/material-table-caption/material-table-filter-dialog/material-table-filter.component';
|
|
34
35
|
import * as i0 from "@angular/core";
|
|
35
36
|
import * as i1 from "@angular/material/icon";
|
|
36
37
|
export class StTablesModule {
|
|
@@ -55,7 +56,8 @@ export class StTablesModule {
|
|
|
55
56
|
MaterialTableOrderColumnDialogComponent,
|
|
56
57
|
MaterialTableFilterDialogComponent,
|
|
57
58
|
MaterialTableRowCellComponent,
|
|
58
|
-
SelectTableComponent
|
|
59
|
+
SelectTableComponent,
|
|
60
|
+
MaterialTableFilterComponent], imports: [CommonModule,
|
|
59
61
|
MatButtonModule,
|
|
60
62
|
MatIconModule,
|
|
61
63
|
MatTableModule,
|
|
@@ -119,6 +121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
119
121
|
MaterialTableFilterDialogComponent,
|
|
120
122
|
MaterialTableRowCellComponent,
|
|
121
123
|
SelectTableComponent,
|
|
124
|
+
MaterialTableFilterComponent,
|
|
122
125
|
],
|
|
123
126
|
imports: [
|
|
124
127
|
CommonModule,
|
|
@@ -154,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
154
157
|
providers: [MatDatepickerModule],
|
|
155
158
|
}]
|
|
156
159
|
}], ctorParameters: () => [{ type: i1.MatIconRegistry }] });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXN0LXRhYmxlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvbmd4LXN0LXRhYmxlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVB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QUNwQixtQkFBbUI7WUFDbkIsZ0JBQWdCOzs0RkFLUCxjQUFjO2tCQTFDMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osNkJBQTZCO3dCQUM3QixzQkFBc0I7d0JBQ3RCLHVDQUF1Qzt3QkFDdkMsa0NBQWtDO3dCQUNsQyw2QkFBNkI7d0JBQzdCLG9CQUFvQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsUUFBUTt3QkFDUixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3ZELFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUsIE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IFN0RGF0ZUZvcm1hdE1vZHVsZSB9IGZyb20gJ25neC1zdC1kYXRlLWZvcm1hdCc7XHJcbmltcG9ydCB7IE1hdGVyaWFsVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZUNhcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEJhZGdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgU3RCYXNlRnVuY3Rpb25zTW9kdWxlIH0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZU9yZGVyQ29sdW1uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsLXRhYmxlL21hdGVyaWFsLXRhYmxlLWNhcHRpb24vbWF0ZXJpYWwtdGFibGUtb3JkZXItY29sdW1uLWRpYWxvZy9tYXRlcmlhbC10YWJsZS1vcmRlci1jb2x1bW4tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZVJvd0NlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtcm93LWNlbGwvbWF0ZXJpYWwtdGFibGUtcm93LWNlbGwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RRdHlJbnB1dE1vZHVsZSB9IGZyb20gJ25neC1zdC1xdHktaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcclxuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBTdFNuYWNrQmFyTW9kdWxlIH0gZnJvbSAnbmd4LXN0LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IFN0VGFibGVzVHJhbnNsYXRpb25zTW9kZWwgfSBmcm9tICcuL21vZGVscy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0LXRhYmxlL3NlbGVjdC10YWJsZS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE1hdGVyaWFsVGFibGVDYXB0aW9uQ29tcG9uZW50LFxyXG4gICAgTWF0ZXJpYWxUYWJsZUNvbXBvbmVudCxcclxuICAgIE1hdGVyaWFsVGFibGVPcmRlckNvbHVtbkRpYWxvZ0NvbXBvbmVudCxcclxuICAgIE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dDb21wb25lbnQsXHJcbiAgICBNYXRlcmlhbFRhYmxlUm93Q2VsbENvbXBvbmVudCxcclxuICAgIFNlbGVjdFRhYmxlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgU3REYXRlRm9ybWF0TW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEJhZGdlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxyXG4gICAgU3RCYXNlRnVuY3Rpb25zTW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgQ2RrRHJvcExpc3QsXHJcbiAgICBDZGtEcmFnLFxyXG4gICAgU3RRdHlJbnB1dE1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICBTdFNuYWNrQmFyTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW01hdGVyaWFsVGFibGVDb21wb25lbnQsIFNlbGVjdFRhYmxlQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtNYXREYXRlcGlja2VyTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0VGFibGVzTW9kdWxlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdEljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5KSB7XHJcbiAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5zZXREZWZhdWx0Rm9udFNldENsYXNzKCdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiB7XHJcbiAgICB0cmFuc2xhdGlvbnM/OiBQYXJ0aWFsPFN0VGFibGVzVHJhbnNsYXRpb25zTW9kZWw+O1xyXG4gIH0pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFN0VGFibGVzTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogU3RUYWJsZXNNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6ICdTVF9UQUJMRVNfQ09ORklHJyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWcgfHwge30sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXN0LXRhYmxlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3QtdGFibGVzL3NyYy9saWIvbmd4LXN0LXRhYmxlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVB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LGVBQWU7WUFDZixrQkFBa0I7WUFHbEIsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBQ25CLGdCQUFnQjs7NEZBS1AsY0FBYztrQkEzQzFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDZCQUE2Qjt3QkFDN0Isc0JBQXNCO3dCQUN0Qix1Q0FBdUM7d0JBQ3ZDLGtDQUFrQzt3QkFDbEMsNkJBQTZCO3dCQUM3QixvQkFBb0I7d0JBQ3BCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsUUFBUTt3QkFDUixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3ZELFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUsIE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IFN0RGF0ZUZvcm1hdE1vZHVsZSB9IGZyb20gJ25neC1zdC1kYXRlLWZvcm1hdCc7XHJcbmltcG9ydCB7IE1hdGVyaWFsVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZUNhcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1jYXB0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEJhZGdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgU3RCYXNlRnVuY3Rpb25zTW9kdWxlIH0gZnJvbSAnbmd4LXN0LWJhc2UtZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZU9yZGVyQ29sdW1uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsLXRhYmxlL21hdGVyaWFsLXRhYmxlLWNhcHRpb24vbWF0ZXJpYWwtdGFibGUtb3JkZXItY29sdW1uLWRpYWxvZy9tYXRlcmlhbC10YWJsZS1vcmRlci1jb2x1bW4tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdGVyaWFsVGFibGVGaWx0ZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtY2FwdGlvbi9tYXRlcmlhbC10YWJsZS1maWx0ZXItZGlhbG9nL21hdGVyaWFsLXRhYmxlLWZpbHRlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxUYWJsZVJvd0NlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF0ZXJpYWwtdGFibGUvbWF0ZXJpYWwtdGFibGUtcm93LWNlbGwvbWF0ZXJpYWwtdGFibGUtcm93LWNlbGwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RRdHlJbnB1dE1vZHVsZSB9IGZyb20gJ25neC1zdC1xdHktaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcclxuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBTdFNuYWNrQmFyTW9kdWxlIH0gZnJvbSAnbmd4LXN0LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IFN0VGFibGVzVHJhbnNsYXRpb25zTW9kZWwgfSBmcm9tICcuL21vZGVscy9zdC10YWJsZXMtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0LXRhYmxlL3NlbGVjdC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbFRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsLXRhYmxlL21hdGVyaWFsLXRhYmxlLWNhcHRpb24vbWF0ZXJpYWwtdGFibGUtZmlsdGVyLWRpYWxvZy9tYXRlcmlhbC10YWJsZS1maWx0ZXIuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBNYXRlcmlhbFRhYmxlQ2FwdGlvbkNvbXBvbmVudCxcclxuICAgIE1hdGVyaWFsVGFibGVDb21wb25lbnQsXHJcbiAgICBNYXRlcmlhbFRhYmxlT3JkZXJDb2x1bW5EaWFsb2dDb21wb25lbnQsXHJcbiAgICBNYXRlcmlhbFRhYmxlRmlsdGVyRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgTWF0ZXJpYWxUYWJsZVJvd0NlbGxDb21wb25lbnQsXHJcbiAgICBTZWxlY3RUYWJsZUNvbXBvbmVudCxcclxuICAgIE1hdGVyaWFsVGFibGVGaWx0ZXJDb21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0VGFibGVNb2R1bGUsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBTdERhdGVGb3JtYXRNb2R1bGUsXHJcbiAgICBNYXRTb3J0TW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0QmFkZ2UsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXIsXHJcbiAgICBTdEJhc2VGdW5jdGlvbnNNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRFeHBhbnNpb25Nb2R1bGUsXHJcbiAgICBDZGtEcm9wTGlzdCxcclxuICAgIENka0RyYWcsXHJcbiAgICBTdFF0eUlucHV0TW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxyXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgIFN0U25hY2tCYXJNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbTWF0ZXJpYWxUYWJsZUNvbXBvbmVudCwgU2VsZWN0VGFibGVDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW01hdERhdGVwaWNrZXJNb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RUYWJsZXNNb2R1bGUge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnkpIHtcclxuICAgIHRoaXMubWF0SWNvblJlZ2lzdHJ5LnNldERlZmF1bHRGb250U2V0Q2xhc3MoJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IHtcclxuICAgIHRyYW5zbGF0aW9ucz86IFBhcnRpYWw8U3RUYWJsZXNUcmFuc2xhdGlvbnNNb2RlbD47XHJcbiAgfSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U3RUYWJsZXNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBTdFRhYmxlc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogJ1NUX1RBQkxFU19DT05GSUcnLFxyXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyB8fCB7fSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
|