@fundamental-ngx/platform 0.43.26 → 0.43.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/dynamic-page/dynamic-page.component.mjs +1 -1
- package/esm2020/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +1 -1
- package/esm2020/form/date-picker/date-picker.component.mjs +1 -2
- package/esm2020/form/datetime-picker/datetime-picker.component.mjs +4 -2
- package/esm2020/form/multi-combobox/commons/base-multi-combobox.mjs +2 -1
- package/esm2020/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +1 -1
- package/esm2020/form/step-input/base.step-input.mjs +2 -1
- package/esm2020/list/base-list-item.mjs +10 -2
- package/esm2020/list/list.component.mjs +3 -3
- package/esm2020/settings-generator/settings-generator-content/settings-generator-content.component.mjs +1 -1
- package/esm2020/shared/form/base.input.mjs +14 -3
- package/esm2020/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +1 -1
- package/esm2020/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
- package/esm2020/table/components/table-header-row/table-header-row.component.mjs +3 -3
- package/esm2020/table/components/table-p13-dialog/columns/columns.component.mjs +3 -3
- package/esm2020/table/components/table-p13-dialog/filtering/filtering.component.mjs +1 -1
- package/esm2020/table/components/table-p13-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2020/table/components/table-p13-dialog/sorting/sorting.component.mjs +2 -2
- package/esm2020/table/components/table-row/table-row.component.mjs +20 -3
- package/esm2020/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +1 -1
- package/esm2020/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +1 -1
- package/esm2020/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2020/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +1 -1
- package/esm2020/thumbnail/thumbnail-details/thumbnail-details.component.mjs +1 -1
- package/esm2020/upload-collection/dialogs/move-to/move-to.component.mjs +1 -1
- package/esm2020/upload-collection/dialogs/new-folder/new-folder.component.mjs +1 -1
- package/esm2020/value-help-dialog/components/define-tab/define-tab.component.mjs +1 -1
- package/esm2020/value-help-dialog/components/select-tab/select-tab.component.mjs +1 -1
- package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +1 -1
- package/esm2020/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +1 -1
- package/esm2020/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +1 -1
- package/esm2020/variant-management/variant-management.component.mjs +1 -1
- package/esm2020/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +1 -1
- package/esm2020/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +1 -1
- package/esm2020/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-form.mjs +7 -4
- package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-list.mjs +11 -3
- package/fesm2015/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-settings-generator.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-shared.mjs +13 -2
- package/fesm2015/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
- package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-table.mjs +31 -13
- package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-thumbnail.mjs +1 -1
- package/fesm2015/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-upload-collection.mjs +2 -2
- package/fesm2015/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +3 -3
- package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs +3 -3
- package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-platform-wizard-generator.mjs +3 -3
- package/fesm2015/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-form.mjs +7 -4
- package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-list.mjs +11 -3
- package/fesm2020/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-settings-generator.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-shared.mjs +13 -2
- package/fesm2020/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
- package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table.mjs +30 -13
- package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-thumbnail.mjs +1 -1
- package/fesm2020/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-upload-collection.mjs +2 -2
- package/fesm2020/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +3 -3
- package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs +3 -3
- package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-wizard-generator.mjs +3 -3
- package/fesm2020/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.43.28.tgz +0 -0
- package/list/base-list-item.d.ts +2 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/shared/form/base.input.d.ts +6 -0
- package/table/components/table-p13-dialog/columns/columns.component.d.ts +1 -1
- package/table/components/table-row/table-row.component.d.ts +3 -0
- package/fundamental-ngx-platform-v0.43.26.tgz +0 -0
|
@@ -230,6 +230,8 @@ export class BaseListItem extends BaseComponent {
|
|
|
230
230
|
/** @hidden */
|
|
231
231
|
this._defaultRole = 'listitem';
|
|
232
232
|
/** @hidden */
|
|
233
|
+
this._viewInited = false;
|
|
234
|
+
/** @hidden */
|
|
233
235
|
this._listComponent = inject(FdpListComponent);
|
|
234
236
|
/** @hidden */
|
|
235
237
|
this._avatarConfig = new ListAvatarConfig();
|
|
@@ -321,6 +323,7 @@ export class BaseListItem extends BaseComponent {
|
|
|
321
323
|
}
|
|
322
324
|
/** @hidden */
|
|
323
325
|
ngAfterViewInit() {
|
|
326
|
+
this._viewInited = true;
|
|
324
327
|
this._listComponent._setupListItem(this);
|
|
325
328
|
}
|
|
326
329
|
/**
|
|
@@ -424,7 +427,12 @@ export class BaseListItem extends BaseComponent {
|
|
|
424
427
|
this.rowSelection || this.selectionMode === 'single' || this.selectionMode === 'multi'
|
|
425
428
|
? 'option'
|
|
426
429
|
: 'listitem';
|
|
427
|
-
this.
|
|
430
|
+
if (this._viewInited) {
|
|
431
|
+
this._cd.detectChanges();
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
this._cd.markForCheck();
|
|
435
|
+
}
|
|
428
436
|
}
|
|
429
437
|
}
|
|
430
438
|
BaseListItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseListItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.ListConfig }, { token: FD_LIST_UNREAD_INDICATOR, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -525,4 +533,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
525
533
|
type: HostListener,
|
|
526
534
|
args: ['focusout', ['$event']]
|
|
527
535
|
}] } });
|
|
528
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbGlzdC9iYXNlLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBR0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFlLE9BQU8sRUFBa0IsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQXVCLE1BQU0sNEJBQTRCLENBQUM7QUFDM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUczQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDO0FBQzNDLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQUd2QixNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUtJLDRCQUE0QjtRQUM1QixVQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUNuQzs7O1dBR0c7UUFDSCxTQUFJLEdBQTBC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QUFJO3NCQURQLEtBQUs7Z0JBY04sTUFBTTtzQkFETCxLQUFLO2dCQVlOLEtBQUs7c0JBREosS0FBSztnQkFLRixhQUFhO3NCQURoQixLQUFLO2dCQVlOLFFBQVE7c0JBRFAsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBU04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFRTixZQUFZO3NCQURYLE1BQU07Z0JBT1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLM0MsTUFBTTtzQkFETCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSzlDLElBQUk7c0JBREgsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUt2QyxNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLekMsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLGlCQUFpQjtnQkFLNUIsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLG9CQUFvQjtnQkF1RjNCLGNBQWM7c0JBRGpCLEtBQUs7Z0JBaUJOLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPO2dCQWVyQixvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTJCbkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1QmpDLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQgeyBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29sb3JBY2NlbnQsIEtleVV0aWwsIE51bGxhYmxlLCBTaXplIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9pY29uJztcbmltcG9ydCB7IEZEX0xJU1RfVU5SRUFEX0lORElDQVRPUiwgTGlzdFVucmVhZEluZGljYXRvciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIGlzUHJlc2VudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZkcExpc3RDb21wb25lbnQgfSBmcm9tICcuL2ZkcExpc3RDb21wb25lbnQudG9rZW4nO1xuaW1wb3J0IHsgTGlzdENvbmZpZyB9IGZyb20gJy4vbGlzdC5jb25maWcnO1xuaW1wb3J0IHsgRmRwTGlzdCwgTGlzdFR5cGUsIFNlbGVjdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9saXN0JztcblxuZXhwb3J0IGNvbnN0IElTX0FDVElWRV9DTEFTUyA9ICdpcy1hY3RpdmUnO1xubGV0IG5leHRMaXN0SXRlbUlkID0gMDtcbmV4cG9ydCB0eXBlIFN0YXR1c1R5cGUgPSAnbmVnYXRpdmUnIHwgJ2NyaXRpY2FsJyB8ICdwb3NpdGl2ZScgfCAnaW5mb3JtYXRpdmUnO1xuXG5leHBvcnQgY2xhc3MgTGlzdEljb25Db25maWcge1xuICAgIC8qKiBUaGUgaWNvbiBuYW1lIHRvIGRpc3BsYXkuIFNlZSB0aGUgaWNvbiBwYWdlIGZvciB0aGUgbGlzdCBvZiBpY29uc1xuICAgICAqIGhlcmU6IGh0dHBzOi8vc2FwLmdpdGh1Yi5pby9mdW5kYW1lbnRhbC1uZ3gvaWNvblxuICAgICAqICovXG4gICAgZ2x5cGg6IEljb25Db21wb25lbnRbJ2dseXBoJ107XG4gICAgLyoqIHVzZXIncyBjdXN0b20gY2xhc3NlcyAqL1xuICAgIGNsYXNzOiBJY29uQ29tcG9uZW50WydjbGFzcyddID0gJyc7XG4gICAgLyoqXG4gICAgICogVGhlIGljb24gZm9udFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTogJ1NBUC1pY29ucycsICdCdXNpbmVzc1N1aXRlSW5BcHBTeW1ib2xzJyBhbmQgJ1NBUC1pY29ucy1UTlQnXG4gICAgICovXG4gICAgZm9udDogSWNvbkNvbXBvbmVudFsnZm9udCddID0gJ1NBUC1pY29ucyc7XG4gICAgLyoqIEFyaWEtbGFiZWwgZm9yIEljb24uICovXG4gICAgYXJpYUxhYmVsOiBJY29uQ29tcG9uZW50WydhcmlhTGFiZWwnXTtcbn1cblxuZXhwb3J0IGNsYXNzIExpc3RBdmF0YXJDb25maWcge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xhc3MgPSAnJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhcmlhTGFiZWxsZWRieTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsYWJlbDogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaXplOiBTaXplID0gJ3MnO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2x5cGg6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgem9vbUdseXBoOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNpcmNsZSA9IGZhbHNlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhbnNwYXJlbnQgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRhaW4gPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHBsYWNlaG9sZGVyID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0aWxlID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBib3JkZXIgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbG9yQWNjZW50OiBOdWxsYWJsZTxDb2xvckFjY2VudD4gPSBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmFuZG9tID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGlja2FibGUgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGltYWdlOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFsdGVySWNvbjogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBiYWNrdXBJbWFnZTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG59XG5cbi8qKlxuICogQmFzZSBpbnRlcmZhY2UgZm9yIGEgbGlzdCB2YXJpYW50IGRlZmluaXRpb24uXG4gKiBDYXB0dXJlcyBhIGxpc3QgaXRlbSB0ZW1wbGF0ZSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1EZWYge1xuICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RBZHZhbmNlZERlc2NyaXB0aW9uIHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBMaXN0RGVzY3JpcHRpb24gPSBzdHJpbmcgfCBMaXN0QWR2YW5jZWREZXNjcmlwdGlvbjtcblxuZXhwb3J0IGVudW0gTElTVF9JVEVNX1RZUEUge1xuICAgIElURU0gPSAnaXRlbScsXG4gICAgR1JPVVAgPSAnZ3JvdXAnLFxuICAgIEZPT1RFUiA9ICdmb290ZXInLFxuICAgIEhFQURFUiA9ICdoZWFkZXInXG59XG5cbmV4cG9ydCBjbGFzcyBNb2RpZnlJdGVtRXZlbnQge1xuICAgIC8qKiBMaXN0IEl0ZW0gY29tcG9uZW50ICovXG4gICAgc291cmNlOiBCYXNlTGlzdEl0ZW07XG4gICAgLyoqIEFjdGlvbiAqL1xuICAgIGFjdGlvbjogJ2RlbGV0ZScgfCAnZWRpdCc7XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBJdGVtRGVmXScgfSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIExpc3RJdGVtRGVmIGltcGxlbWVudHMgSXRlbURlZiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigvKiogQGRvY3MtcHJpdmF0ZSAqLyBwdWJsaWMgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBjb250YWlucyBjb21tb24gcHJvcGVydGllcyB1c2VkIGFjcm9zcyBsaXN0IEl0ZW0gY29tcG9uZW50cy5cbiAqIHRoaXMgY2FuIGJlIGV4dGVuZGVkIHRvIHJlZHVjZSB0aGUgY29kZSBkdXBsaWNhdGlvbiBhY3Jvc3MgbGlzdCBJdGVtIGNvbXBvbmVudHMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEJhc2VMaXN0SXRlbSBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gICAgLyoqIGRlZmluZSBsYWJlbCBmb3Igc2NyZWVuIHJlYWRlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIC8qKiBkZWZpbmUgbGV2ZWwgb2YgaXRlbSBmb3Igc2NyZWVuIHJlYWRlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxldmVsOiBudW1iZXI7XG5cbiAgICAvKiogZGVmaW5lIHBvc2l0aW9uIG9mIGl0ZW0gZm9yIHNjcmVlbiByZWFkZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFQb3NpbnNldDogbnVtYmVyO1xuXG4gICAgLyoqIEF2YXRhciBjb21wb25lbnQgcHJvcGVydGllcy4gQHNlZSBBdmF0YXJDb21wb25lbnQgZm9yIG1vcmUgZGV0YWlscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGF2YXRhcih2YWx1ZTogUGFydGlhbDxMaXN0QXZhdGFyQ29uZmlnPiB8IHN0cmluZykge1xuICAgICAgICB2YWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB7IGltYWdlOiB2YWx1ZSB9IDogdmFsdWU7XG4gICAgICAgIHRoaXMuX2F2YXRhckNvbmZpZyA9IG1lcmdlKG5ldyBMaXN0QXZhdGFyQ29uZmlnKCksIHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgYXZhdGFyKCk6IExpc3RBdmF0YXJDb25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXZhdGFyQ29uZmlnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogVXNlIGBhdmF0YXJgIHByb3BlcnR5IGZvciBtb3JlIGZsZXhpYmxlIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBBdHRyaWJ1dGUgdG8gaG9sZCBhdmF0YXIgcGF0aFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGF2YXRhclNyYyh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9hdmF0YXJDb25maWcgPSBtZXJnZSh0aGlzLl9hdmF0YXJDb25maWcsIHsgaW1hZ2U6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIGdldCBhdmF0YXJTcmMoKTogTnVsbGFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmF2YXRhcj8uaW1hZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBVc2UgYGF2YXRhcmAgcHJvcGVydHkgZm9yIG1vcmUgZmxleGlibGUgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEF0dHJpYnV0ZSB0byBob2xkIGF2YXRhciB0aXRsZSBmb3IgYTExeVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGF2YXRhclRpdGxlKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2F2YXRhckNvbmZpZyA9IG1lcmdlKHRoaXMuX2F2YXRhckNvbmZpZywgeyBhcmlhTGFiZWw6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIGdldCBhdmF0YXJUaXRsZSgpOiBOdWxsYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhdGFyPy5hcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIGF0dHJpYnV0ZSB0byBob2xkIGNvdW50ZXIgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvdW50ZXI/OiBzdHJpbmc7XG5cbiAgICAvKiogRGVzY3JpcHRpb24gb2YgdGhlIHRpdGxlICovXG4gICAgQElucHV0KClcbiAgICBkZXNjcmlwdGlvbjogTnVsbGFibGU8TGlzdERlc2NyaXB0aW9uPjtcblxuICAgIC8qKiBUbyBpbnZlcnQgdGhlIHN0YXR1cyBvZiBzZWNvbmRhcnkgdGV4dCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW52ZXJ0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZXJlIGlzIG5vIGRhdGEgaW5zaWRlIGxpc3QgaXRlbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9EYXRhVGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHR5cGUgb2YgdGhlIHNlY29uZGFyeSB0ZXh0LmZkLWxpc3RfX2J5bGluZS1yaWdodC0tKlxuICAgICAqIENhbiBiZSBvbmUgb2YgKnBvc2l0aXZlKiwgKm5lZ2F0aXZlKiwgKmluZm9ybWF0aXZlKiwgKmNyaXRpY2FsKiwgKm5ldXRyYWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0YXR1c1R5cGU/OiBTdGF0dXNUeXBlO1xuXG4gICAgLyoqIGF0dHJpYnV0ZSB0byBob2xkIHNlY29uZGFyeSB0ZXh0Ki9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeTogTnVsbGFibGU8TGlzdERlc2NyaXB0aW9uPjtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsaW5nIHRoaXMgZmxhZyBjYXVzZXMgZm9yY2luZyBzZWNvbmRhcnkgaXRlbSBkaXJlY3RpdmUgdG8gbm90IHdyYXAgdGV4dCxcbiAgICAgKiBpbnN0ZWFkIG9mIHdyYXBwaW5nIHRoZXJlIHdpbGwgYmUgdGV4dCB0cnVuY2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlXcmFwPzogYm9vbGVhbjtcblxuICAgIC8qKiBUb29sdGlwIHRleHQgdG8gc2hvdyB3aGVuIGZvY3VzZWQgZm9yIG1vcmUgdGhhbiB0aW1lb3V0IHZhbHVlKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlPzogc3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgZm9yIHBsYWNlaW5nIG5hdmlnYXRpb24gTGluayAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGluazogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsaW5nIHRoaXMgZmxhZyBjYXVzZXMgZm9yY2luZyB0aXRsZSBkaXJlY3RpdmUgdG8gbm90IHdyYXAgdGV4dCxcbiAgICAgKiBpbnN0ZWFkIG9mIHdyYXBwaW5nIHRoZXJlIHdpbGwgYmUgdGV4dCB0cnVuY2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZVdyYXA/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgU2VlIGBpY29uYCBpbnB1dCBwcm9wZXJ0eSBmb3IgbW9yZSBmbGV4aWJsZSBpY29uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogYXR0cmlidXRlIHRvIGhvbGQgcHJpbWFyeS90aXRsZSBpY29uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGl0bGVJY29uKHZhbHVlOiBOdWxsYWJsZTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2ljb25Db25maWcgPSBtZXJnZShuZXcgTGlzdEljb25Db25maWcoKSwgeyBnbHlwaDogdmFsdWUsIGFyaWFMYWJlbDogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHRpdGxlSWNvbigpOiBOdWxsYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ljb25Db25maWcuZ2x5cGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBpdGVtIGljb24gY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpY29uKHZhbHVlOiBQYXJ0aWFsPExpc3RJY29uQ29uZmlnPikge1xuICAgICAgICB0aGlzLl9pY29uQ29uZmlnID0gbWVyZ2UobmV3IExpc3RJY29uQ29uZmlnKCksIHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgaWNvbigpOiBMaXN0SWNvbkNvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pY29uQ29uZmlnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdGhlIGxpc3QgaXRlbSBpbiBib2xkIHRleHRcbiAgICAgKiB3aGljaCByZXNwcmVzZW50cyB1bnJlYWQgZGF0YVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5SZWFkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5IHVucmVhZCBub3RpZmljYXRpb24gY2lyY2xlLlxuICAgICAqL1xuICAgIGdldCBkaXNwbGF5VW5yZWFkTm90aWZpY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9saXN0Py51bnJlYWRJbmRpY2F0b3I7XG4gICAgfVxuXG4gICAgLyoqIHJhZGlvIGJ1dHRvbiB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBCeSBkZWZhdWx0IHNlbGVjdGlvbiBtb2RlIGlzICdub25lJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNlbGVjdGlvbk1vZGUodmFsdWU6IFNlbGVjdGlvblR5cGUpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9zZXRBdHRyUm9sZSgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3Rpb25Nb2RlKCk6IFNlbGVjdGlvblR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZTtcbiAgICB9XG5cbiAgICAvKiogQnkgZGVmYXVsdCBzZWxlY3Rpb24gbW9kZSBpcyAnYWN0aXZlJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGlzdFR5cGU6IExpc3RUeXBlID0gJ2FjdGl2ZSc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIE5hdmlnYXRpb24gbW9kZSBpcyBpbmNsdWRlZCB0byBsaXN0IGNvbXBvbmVudFxuICAgICAqIGZvciBhbGwgdGhlIGl0ZW1zXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0ZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgTmF2aWdhdGlvbiBtb2RlIGlzIGluY2x1ZGVkIHRvIGxpc3QgY29tcG9uZW50XG4gICAgICogb25seSBhIHN1YnNldCBvZiB0aGUgbGlzdCBpdGVtcyBhcmUgbmF2aWdhYmxlXG4gICAgICogeW91IHNob3VsZCBpbmRpY2F0ZSB0aG9zZSBieSBkaXNwbGF5aW5nIGEgbmF2aWdhdGlvbiBhcnJvd1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbkluZGljYXRvciA9IGZhbHNlO1xuXG4gICAgLyoqIHJvbGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHJvbGU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBldmVudCBlbWl0dGVyIGZvciBzZWxlY3RlZCBpdGVtXG4gICAgICogc2VwcmF0ZSBQUiBmb3IgY3VzdG9tIGV2ZW50XG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxNb2RpZnlJdGVtRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIGZvciBzZWxlY3RlZCBpdGVtIHRocm91Z2ggdGhlIGNoZWNrYm94LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGl0ZW1DaGVja2JveFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxNb2RpZnlJdGVtRXZlbnQ+KCk7XG5cbiAgICAvKiogRXZlbnQgc2VudCB3aGVuIGRlbGV0ZSwgZGV0YWlscyBvciBhbnkgb3RoZXIgYWN0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBidXR0b25DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNb2RpZnlJdGVtRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RJdGVtJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgbGlzdEl0ZW06IEVsZW1lbnRSZWY8SFRNTExJRWxlbWVudD47XG5cbiAgICAvKiogQWNjZXNzIGNoaWxkIGVsZW1lbnQsIGZvciBjaGVja2luZyBsaW5rIGNvbnRlbnQqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpbmtFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgYW5jaG9yOiBFbGVtZW50UmVmPEhUTUxMaW5rRWxlbWVudD47XG5cbiAgICAvKiogQWNjZXNzIGVkaXQgYnV0dG9uKi9cbiAgICBAVmlld0NoaWxkKCdlZGl0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgZWRpdDogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgICAvKiogQWNjZXNzIGRlbGV0ZSBidXR0b24qL1xuICAgIEBWaWV3Q2hpbGQoJ2RlbGV0ZScsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGRlbGV0ZTogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2hlY2tib3hDb21wb25lbnQpXG4gICAgY2hlY2tib3hDb21wb25lbnQ6IENoZWNrYm94Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFJhZGlvQnV0dG9uQ29tcG9uZW50KVxuICAgIHJhZGlvQnV0dG9uQ29tcG9uZW50OiBSYWRpb0J1dHRvbkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3R5cGU6IExJU1RfSVRFTV9UWVBFID0gTElTVF9JVEVNX1RZUEUuSVRFTTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBXaGV0aGVyIEJ5IGxpbmUgbW9kZSBpcyBpbmNsdWRlZCB0byBsaXN0IGNvbXBvbmVudCwgYnkgd2hpY2hcbiAgICAgKiBsaXN0IGl0ZW0gd2lsbCBhY2NvbWRhdGUgdGhlIGRhdGEgaW4gMiBjb2x1bW5cbiAgICAgKi9cbiAgICBfaGFzQnlMaW5lID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogV2hldGhlciBsaXN0aXRlbSBoYXMgcm93IGxldmVsIHNlbGVjdGlvbiBlbmFibGVkXG4gICAgICovXG4gICAgc2V0IHJvd1NlbGVjdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yb3dTZWxlY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0QXR0clJvbGUoKTtcbiAgICB9XG5cbiAgICBnZXQgcm93U2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93U2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBXaGV0aGVyIGxpc3RpdGVtIGlzIHNlbGVjdGVkIGJpbmRlZCB0byB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3NlbGVjdGVkQXR0cigpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yb3dTZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbm9uZScgPyBudWxsIDogdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGdldCB0aGUgZm9jdXNlZCBlbGVtZW50IGZvciBrZXkgbWFuYWdlclxuICAgICAqL1xuICAgIF9mb2N1c2VkOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2xpc3RJdGVtUm9sZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yb2xlIHx8IHRoaXMuX2RlZmF1bHRSb2xlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYXJpYVNldFNpemU6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcm93U2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmF1bHRSb2xlID0gJ2xpc3RpdGVtJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdENvbXBvbmVudCA9IGluamVjdDxGZHBMaXN0PihGZHBMaXN0Q29tcG9uZW50KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXZhdGFyQ29uZmlnOiBMaXN0QXZhdGFyQ29uZmlnID0gbmV3IExpc3RBdmF0YXJDb25maWcoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaWNvbkNvbmZpZzogTGlzdEljb25Db25maWcgPSBuZXcgTGlzdEljb25Db25maWcoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiByYWRpbyBidXR0b24gc2VsZWN0ZWQgdmFsdWUgYmluZGVkIHRvIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uVmFsdWU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGlvbk1vZGU6IFNlbGVjdGlvblR5cGUgPSAnbm9uZSc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgaXRlbUVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIF9saXN0Q29uZmlnOiBMaXN0Q29uZmlnLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZEX0xJU1RfVU5SRUFEX0lORElDQVRPUikgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogTGlzdFVucmVhZEluZGljYXRvclxuICAgICkge1xuICAgICAgICBzdXBlcihfY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIC8qKiBTZWxlY3Rpb24gdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3Rpb25WYWx1ZSh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25WYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uVmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGlvblZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMudmFsdWUgPT09IHRoaXMuX3NlbGVjdGlvblZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBzZWxlY3Rpb25WYWx1ZSgpOiBOdWxsYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBPbiBpdGVtIGNsaWNrIGV2ZW50IHdpbGwgYmUgZW1pdHRlZFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBfb25JdGVtQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJvd1NlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gIXRoaXMuX3NlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTW9kaWZ5SXRlbUV2ZW50KCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSAhdGhpcy5fZm9jdXNlZDtcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX2hhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jaGVja2JveENvbXBvbmVudCB8fCB0aGlzLnJhZGlvQnV0dG9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9vbktleWJvYXJkQ2xpY2soZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmNob3I/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcblxuICAgICAgICBpZiAodGhpcy5yb3dTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gIXRoaXMuX3NlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgJGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICAkZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlciBmb3IgbW91c2UgZXZlbnRzXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIF9vbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrYm94Q29tcG9uZW50ICYmICF0aGlzLmFuY2hvcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrYm94Q29tcG9uZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvbiB0aGUgY2hlY2tib3ggaXMgbm90IHN1cHByZXNzZWRcbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgb25seSBwcm9jZXNzIGNsaWNrcyBpZiBjbGlja2VkIG9uIHRoZSBsaXN0LWl0ZW0sIG5vdCBjaGVja2JveCBpdHNlbGZcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94Q29tcG9uZW50Lm5leHRWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJhZGlvQnV0dG9uQ29tcG9uZW50Py52YWx1ZUNoYW5nZShldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3QgJGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICAkZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBoZWxwcyB0byBhdm9pZCBtdWx0aSByb3dzIGFjdGl2ZSBjbGFzcyB3aXRoIG5hdmlnYXRpb25cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXG4gICAgX29uQmx1cihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQcmVzZW50KHRoaXMuYW5jaG9yKSAmJiAhS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKElTX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2hvdyBuYXZpZ2F0aW9uIGZvciBzaW5nbGUgbGlzdFxuICAgICAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlkID0gYGZkcC1saXN0LWl0ZW0tJHtuZXh0TGlzdEl0ZW1JZCsrfWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdENvbXBvbmVudC5fc2V0dXBMaXN0SXRlbSh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVG8gZGV0ZWN0IGNoYW5nZXMgZnJvbSBwYXJlbnQtbGlzdGJveCB0byBsaXN0IGl0ZW1cbiAgICAgKiBmb3IgZXhhbXBsZSBzaW5nbGUsIG11bHRpIG9wdGlvbiBzZWxlY3Rpb24gdGhvc2UgZGV0YWlsc1xuICAgICAqIHdpbGwgYmUgZGVkdWN0ZWQgaW4gbGlzdCBpdGVtXG4gICAgICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbTogTnVsbGFibGU8SFRNTExJRWxlbWVudD4gPSB0aGlzLml0ZW1FbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpJyk7XG4gICAgICAgIGlmICghY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBjdXJyZW50SXRlbS5wYXJlbnROb2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgY3VycmVudEl0ZW0ucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZWQgZm9jdXMgb24gbGlzdCBpdGVtIG9uIG1vdXNlY2xpY2ssXG4gICAgICogVXAsZG93biBhcnJvdyBwcmVzc1xuICAgICAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9ncmFtbWF0aWNhbGx5IHNldCBzZWxlY3RlZCBzdGF0ZSBvZiB0aGUgbGlzdCBpdGVtLlxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCBXaGV0aGVyIHRoZSBsaXN0IGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBzZXRTZWxlY3RlZChzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTW9kaWZ5SXRlbUV2ZW50KCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogb24ga2V5ZG93biBhcHBlbmQgYWN0aXZlIHN0eWxlcyBvbiBhY3Rpb25hYmxlIGl0ZW1cbiAgICAgKi9cbiAgICBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChpc1ByZXNlbnQodGhpcy5hbmNob3IpICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChJU19BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIG9uIGtleXVwIHJlbW92ZSBhY3RpdmUgc3R5bGVzIGZyb20gYWN0aW9uYWJsZSBpdGVtXG4gICAgICovXG4gICAgX29uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUHJlc2VudCh0aGlzLmFuY2hvcikgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKElTX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkNoZWNrYm94TW9kZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgICAgICB0aGlzLml0ZW1DaGVja2JveFNlbGVjdGVkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBIYW5kbGVzIGFjdGlvbiBidXR0b24gY2xpY2tcbiAgICAgKi9cbiAgICBfb25BY3Rpb25CdXR0b25DbGljayhhY3Rpb246ICdkZWxldGUnIHwgJ2VkaXQnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgICAgICBldmVudC5hY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHRoaXMuYnV0dG9uQ2xpY2tlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlcyBhY3Rpb24gYnV0dG9uIGNsaWNrIG9uIGtleSBwcmVzc1xuICAgICAqL1xuICAgIF9vbktleUJ1dHRvbkNsaWNrKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBhY3Rpb246ICdkZWxldGUnIHwgJ2VkaXQnKTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkFjdGlvbkJ1dHRvbkNsaWNrKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc0FkdmFuY2VkVGV4dCh0ZXh0OiBMaXN0RGVzY3JpcHRpb24pOiB0ZXh0IGlzIExpc3RBZHZhbmNlZERlc2NyaXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJyAmJiAhIXRleHQudGV4dDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uS2V5Ym9hcmRDbGljayhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrYm94Q29tcG9uZW50Py5uZXh0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5yYWRpb0J1dHRvbkNvbXBvbmVudD8udmFsdWVDaGFuZ2UoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBjb25zdCAkZXZlbnQgPSBuZXcgTW9kaWZ5SXRlbUV2ZW50KCk7XG4gICAgICAgICRldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgICAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KCRldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRBdHRyUm9sZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFJvbGUgPVxuICAgICAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJyB8fCB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aSdcbiAgICAgICAgICAgICAgICA/ICdvcHRpb24nXG4gICAgICAgICAgICAgICAgOiAnbGlzdGl0ZW0nO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
|
|
536
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbGlzdC9iYXNlLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBR0gsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFlLE9BQU8sRUFBa0IsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQXVCLE1BQU0sNEJBQTRCLENBQUM7QUFDM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUczQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDO0FBQzNDLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQUd2QixNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUtJLDRCQUE0QjtRQUM1QixVQUFLLEdBQTJCLEVBQUUsQ0FBQztRQUNuQzs7O1dBR0c7UUFDSCxTQUFJLEdBQTBC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LENBQUM7Z0JBdUJqQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHsgRU5URVIsIFNQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbG9yQWNjZW50LCBLZXlVdGlsLCBOdWxsYWJsZSwgU2l6ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBGRF9MSVNUX1VOUkVBRF9JTkRJQ0FUT1IsIExpc3RVbnJlYWRJbmRpY2F0b3IgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGlzdCc7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9yYWRpbyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBpc1ByZXNlbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZHBMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9mZHBMaXN0Q29tcG9uZW50LnRva2VuJztcbmltcG9ydCB7IExpc3RDb25maWcgfSBmcm9tICcuL2xpc3QuY29uZmlnJztcbmltcG9ydCB7IEZkcExpc3QsIExpc3RUeXBlLCBTZWxlY3Rpb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvbGlzdCc7XG5cbmV4cG9ydCBjb25zdCBJU19BQ1RJVkVfQ0xBU1MgPSAnaXMtYWN0aXZlJztcbmxldCBuZXh0TGlzdEl0ZW1JZCA9IDA7XG5leHBvcnQgdHlwZSBTdGF0dXNUeXBlID0gJ25lZ2F0aXZlJyB8ICdjcml0aWNhbCcgfCAncG9zaXRpdmUnIHwgJ2luZm9ybWF0aXZlJztcblxuZXhwb3J0IGNsYXNzIExpc3RJY29uQ29uZmlnIHtcbiAgICAvKiogVGhlIGljb24gbmFtZSB0byBkaXNwbGF5LiBTZWUgdGhlIGljb24gcGFnZSBmb3IgdGhlIGxpc3Qgb2YgaWNvbnNcbiAgICAgKiBoZXJlOiBodHRwczovL3NhcC5naXRodWIuaW8vZnVuZGFtZW50YWwtbmd4L2ljb25cbiAgICAgKiAqL1xuICAgIGdseXBoOiBJY29uQ29tcG9uZW50WydnbHlwaCddO1xuICAgIC8qKiB1c2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBjbGFzczogSWNvbkNvbXBvbmVudFsnY2xhc3MnXSA9ICcnO1xuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIGZvbnRcbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdTQVAtaWNvbnMnLCAnQnVzaW5lc3NTdWl0ZUluQXBwU3ltYm9scycgYW5kICdTQVAtaWNvbnMtVE5UJ1xuICAgICAqL1xuICAgIGZvbnQ6IEljb25Db21wb25lbnRbJ2ZvbnQnXSA9ICdTQVAtaWNvbnMnO1xuICAgIC8qKiBBcmlhLWxhYmVsIGZvciBJY29uLiAqL1xuICAgIGFyaWFMYWJlbDogSWNvbkNvbXBvbmVudFsnYXJpYUxhYmVsJ107XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0QXZhdGFyQ29uZmlnIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsYXNzID0gJyc7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYXJpYUxhYmVsbGVkYnk6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbGFiZWw6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2l6ZTogU2l6ZSA9ICdzJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdseXBoOiBOdWxsYWJsZTxzdHJpbmc+ID0gbnVsbDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHpvb21HbHlwaDogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaXJjbGUgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zcGFyZW50ID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb250YWluID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwbGFjZWhvbGRlciA9IGZhbHNlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdGlsZSA9IGZhbHNlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYm9yZGVyID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb2xvckFjY2VudDogTnVsbGFibGU8Q29sb3JBY2NlbnQ+ID0gbnVsbDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJhbmRvbSA9IGZhbHNlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xpY2thYmxlID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbWFnZTogTnVsbGFibGU8c3RyaW5nPiA9IG51bGw7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhbHRlckljb246IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYmFja3VwSW1hZ2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xufVxuXG4vKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciBhIGxpc3QgdmFyaWFudCBkZWZpbml0aW9uLlxuICogQ2FwdHVyZXMgYSBsaXN0IGl0ZW0gdGVtcGxhdGUgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJdGVtRGVmIHtcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QWR2YW5jZWREZXNjcmlwdGlvbiB7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGFyaWFMYWJlbD86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTGlzdERlc2NyaXB0aW9uID0gc3RyaW5nIHwgTGlzdEFkdmFuY2VkRGVzY3JpcHRpb247XG5cbmV4cG9ydCBlbnVtIExJU1RfSVRFTV9UWVBFIHtcbiAgICBJVEVNID0gJ2l0ZW0nLFxuICAgIEdST1VQID0gJ2dyb3VwJyxcbiAgICBGT09URVIgPSAnZm9vdGVyJyxcbiAgICBIRUFERVIgPSAnaGVhZGVyJ1xufVxuXG5leHBvcnQgY2xhc3MgTW9kaWZ5SXRlbUV2ZW50IHtcbiAgICAvKiogTGlzdCBJdGVtIGNvbXBvbmVudCAqL1xuICAgIHNvdXJjZTogQmFzZUxpc3RJdGVtO1xuICAgIC8qKiBBY3Rpb24gKi9cbiAgICBhY3Rpb246ICdkZWxldGUnIHwgJ2VkaXQnO1xufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZmRwSXRlbURlZl0nIH0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBMaXN0SXRlbURlZiBpbXBsZW1lbnRzIEl0ZW1EZWYge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoLyoqIEBkb2NzLXByaXZhdGUgKi8gcHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG4vKipcbiAqIFRoaXMgY2xhc3MgY29udGFpbnMgY29tbW9uIHByb3BlcnRpZXMgdXNlZCBhY3Jvc3MgbGlzdCBJdGVtIGNvbXBvbmVudHMuXG4gKiB0aGlzIGNhbiBiZSBleHRlbmRlZCB0byByZWR1Y2UgdGhlIGNvZGUgZHVwbGljYXRpb24gYWNyb3NzIGxpc3QgSXRlbSBjb21wb25lbnRzLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlTGlzdEl0ZW0gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBkZWZpbmUgbGFiZWwgZm9yIHNjcmVlbiByZWFkZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgICAvKiogZGVmaW5lIGxldmVsIG9mIGl0ZW0gZm9yIHNjcmVlbiByZWFkZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMZXZlbDogbnVtYmVyO1xuXG4gICAgLyoqIGRlZmluZSBwb3NpdGlvbiBvZiBpdGVtIGZvciBzY3JlZW4gcmVhZGVyICovXG4gICAgQElucHV0KClcbiAgICBhcmlhUG9zaW5zZXQ6IG51bWJlcjtcblxuICAgIC8qKiBBdmF0YXIgY29tcG9uZW50IHByb3BlcnRpZXMuIEBzZWUgQXZhdGFyQ29tcG9uZW50IGZvciBtb3JlIGRldGFpbHMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhdmF0YXIodmFsdWU6IFBhcnRpYWw8TGlzdEF2YXRhckNvbmZpZz4gfCBzdHJpbmcpIHtcbiAgICAgICAgdmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8geyBpbWFnZTogdmFsdWUgfSA6IHZhbHVlO1xuICAgICAgICB0aGlzLl9hdmF0YXJDb25maWcgPSBtZXJnZShuZXcgTGlzdEF2YXRhckNvbmZpZygpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGF2YXRhcigpOiBMaXN0QXZhdGFyQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YXRhckNvbmZpZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIFVzZSBgYXZhdGFyYCBwcm9wZXJ0eSBmb3IgbW9yZSBmbGV4aWJsZSBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQXR0cmlidXRlIHRvIGhvbGQgYXZhdGFyIHBhdGhcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhdmF0YXJTcmModmFsdWU6IE51bGxhYmxlPHN0cmluZz4pIHtcbiAgICAgICAgdGhpcy5fYXZhdGFyQ29uZmlnID0gbWVyZ2UodGhpcy5fYXZhdGFyQ29uZmlnLCB7IGltYWdlOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgYXZhdGFyU3JjKCk6IE51bGxhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hdmF0YXI/LmltYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogVXNlIGBhdmF0YXJgIHByb3BlcnR5IGZvciBtb3JlIGZsZXhpYmxlIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBBdHRyaWJ1dGUgdG8gaG9sZCBhdmF0YXIgdGl0bGUgZm9yIGExMXlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhdmF0YXJUaXRsZSh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9hdmF0YXJDb25maWcgPSBtZXJnZSh0aGlzLl9hdmF0YXJDb25maWcsIHsgYXJpYUxhYmVsOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgYXZhdGFyVGl0bGUoKTogTnVsbGFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmF2YXRhcj8uYXJpYUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBhdHRyaWJ1dGUgdG8gaG9sZCBjb3VudGVyIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBjb3VudGVyPzogc3RyaW5nO1xuXG4gICAgLyoqIERlc2NyaXB0aW9uIG9mIHRoZSB0aXRsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVzY3JpcHRpb246IE51bGxhYmxlPExpc3REZXNjcmlwdGlvbj47XG5cbiAgICAvKiogVG8gaW52ZXJ0IHRoZSBzdGF0dXMgb2Ygc2Vjb25kYXJ5IHRleHQgKi9cbiAgICBASW5wdXQoKVxuICAgIGludmVydGVkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGVyZSBpcyBubyBkYXRhIGluc2lkZSBsaXN0IGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vRGF0YVRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBzZWNvbmRhcnkgdGV4dC5mZC1saXN0X19ieWxpbmUtcmlnaHQtLSpcbiAgICAgKiBDYW4gYmUgb25lIG9mICpwb3NpdGl2ZSosICpuZWdhdGl2ZSosICppbmZvcm1hdGl2ZSosICpjcml0aWNhbCosICpuZXV0cmFsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNUeXBlPzogU3RhdHVzVHlwZTtcblxuICAgIC8qKiBhdHRyaWJ1dGUgdG8gaG9sZCBzZWNvbmRhcnkgdGV4dCovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnk6IE51bGxhYmxlPExpc3REZXNjcmlwdGlvbj47XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGluZyB0aGlzIGZsYWcgY2F1c2VzIGZvcmNpbmcgc2Vjb25kYXJ5IGl0ZW0gZGlyZWN0aXZlIHRvIG5vdCB3cmFwIHRleHQsXG4gICAgICogaW5zdGVhZCBvZiB3cmFwcGluZyB0aGVyZSB3aWxsIGJlIHRleHQgdHJ1bmNhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Vjb25kYXJ5V3JhcD86IGJvb2xlYW47XG5cbiAgICAvKiogVG9vbHRpcCB0ZXh0IHRvIHNob3cgd2hlbiBmb2N1c2VkIGZvciBtb3JlIHRoYW4gdGltZW91dCB2YWx1ZSovXG4gICAgQElucHV0KClcbiAgICB0aXRsZT86IHN0cmluZztcblxuICAgIC8qKiBVc2VkIGZvciBwbGFjZWluZyBuYXZpZ2F0aW9uIExpbmsgKi9cbiAgICBASW5wdXQoKVxuICAgIGxpbms6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGluZyB0aGlzIGZsYWcgY2F1c2VzIGZvcmNpbmcgdGl0bGUgZGlyZWN0aXZlIHRvIG5vdCB3cmFwIHRleHQsXG4gICAgICogaW5zdGVhZCBvZiB3cmFwcGluZyB0aGVyZSB3aWxsIGJlIHRleHQgdHJ1bmNhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGVXcmFwPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFNlZSBgaWNvbmAgaW5wdXQgcHJvcGVydHkgZm9yIG1vcmUgZmxleGlibGUgaWNvbiBjb25maWd1cmF0aW9uLlxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIGF0dHJpYnV0ZSB0byBob2xkIHByaW1hcnkvdGl0bGUgaWNvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRpdGxlSWNvbih2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9pY29uQ29uZmlnID0gbWVyZ2UobmV3IExpc3RJY29uQ29uZmlnKCksIHsgZ2x5cGg6IHZhbHVlLCBhcmlhTGFiZWw6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIGdldCB0aXRsZUljb24oKTogTnVsbGFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pY29uQ29uZmlnLmdseXBoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpc3QgaXRlbSBpY29uIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaWNvbih2YWx1ZTogUGFydGlhbDxMaXN0SWNvbkNvbmZpZz4pIHtcbiAgICAgICAgdGhpcy5faWNvbkNvbmZpZyA9IG1lcmdlKG5ldyBMaXN0SWNvbkNvbmZpZygpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGljb24oKTogTGlzdEljb25Db25maWcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWNvbkNvbmZpZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIHRoZSBsaXN0IGl0ZW0gaW4gYm9sZCB0ZXh0XG4gICAgICogd2hpY2ggcmVzcHJlc2VudHMgdW5yZWFkIGRhdGFcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVuUmVhZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSB1bnJlYWQgbm90aWZpY2F0aW9uIGNpcmNsZS5cbiAgICAgKi9cbiAgICBnZXQgZGlzcGxheVVucmVhZE5vdGlmaWNhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fbGlzdD8udW5yZWFkSW5kaWNhdG9yO1xuICAgIH1cblxuICAgIC8qKiByYWRpbyBidXR0b24gdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKiogQnkgZGVmYXVsdCBzZWxlY3Rpb24gbW9kZSBpcyAnbm9uZScgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3Rpb25Nb2RlKHZhbHVlOiBTZWxlY3Rpb25UeXBlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0QXR0clJvbGUoKTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0aW9uTW9kZSgpOiBTZWxlY3Rpb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGU7XG4gICAgfVxuXG4gICAgLyoqIEJ5IGRlZmF1bHQgc2VsZWN0aW9uIG1vZGUgaXMgJ2FjdGl2ZScgKi9cbiAgICBASW5wdXQoKVxuICAgIGxpc3RUeXBlOiBMaXN0VHlwZSA9ICdhY3RpdmUnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBOYXZpZ2F0aW9uIG1vZGUgaXMgaW5jbHVkZWQgdG8gbGlzdCBjb21wb25lbnRcbiAgICAgKiBmb3IgYWxsIHRoZSBpdGVtc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIE5hdmlnYXRpb24gbW9kZSBpcyBpbmNsdWRlZCB0byBsaXN0IGNvbXBvbmVudFxuICAgICAqIG9ubHkgYSBzdWJzZXQgb2YgdGhlIGxpc3QgaXRlbXMgYXJlIG5hdmlnYWJsZVxuICAgICAqIHlvdSBzaG91bGQgaW5kaWNhdGUgdGhvc2UgYnkgZGlzcGxheWluZyBhIG5hdmlnYXRpb24gYXJyb3dcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25JbmRpY2F0b3IgPSBmYWxzZTtcblxuICAgIC8qKiByb2xlICovXG4gICAgQElucHV0KClcbiAgICByb2xlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogZXZlbnQgZW1pdHRlciBmb3Igc2VsZWN0ZWQgaXRlbVxuICAgICAqIHNlcHJhdGUgUFIgZm9yIGN1c3RvbSBldmVudFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kaWZ5SXRlbUV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCBmb3Igc2VsZWN0ZWQgaXRlbSB0aHJvdWdoIHRoZSBjaGVja2JveC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBpdGVtQ2hlY2tib3hTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kaWZ5SXRlbUV2ZW50PigpO1xuXG4gICAgLyoqIEV2ZW50IHNlbnQgd2hlbiBkZWxldGUsIGRldGFpbHMgb3IgYW55IG90aGVyIGFjdGlvbiBidXR0b25zIGFyZSBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kaWZ5SXRlbUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdsaXN0SXRlbScsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGxpc3RJdGVtOiBFbGVtZW50UmVmPEhUTUxMSUVsZW1lbnQ+O1xuXG4gICAgLyoqIEFjY2VzcyBjaGlsZCBlbGVtZW50LCBmb3IgY2hlY2tpbmcgbGluayBjb250ZW50Ki9cbiAgICBAVmlld0NoaWxkKCdsaW5rRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGFuY2hvcjogRWxlbWVudFJlZjxIVE1MTGlua0VsZW1lbnQ+O1xuXG4gICAgLyoqIEFjY2VzcyBlZGl0IGJ1dHRvbiovXG4gICAgQFZpZXdDaGlsZCgnZWRpdCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGVkaXQ6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgLyoqIEFjY2VzcyBkZWxldGUgYnV0dG9uKi9cbiAgICBAVmlld0NoaWxkKCdkZWxldGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBkZWxldGU6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENoZWNrYm94Q29tcG9uZW50KVxuICAgIGNoZWNrYm94Q29tcG9uZW50OiBDaGVja2JveENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChSYWRpb0J1dHRvbkNvbXBvbmVudClcbiAgICByYWRpb0J1dHRvbkNvbXBvbmVudDogUmFkaW9CdXR0b25Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90eXBlOiBMSVNUX0lURU1fVFlQRSA9IExJU1RfSVRFTV9UWVBFLklURU07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogV2hldGhlciBCeSBsaW5lIG1vZGUgaXMgaW5jbHVkZWQgdG8gbGlzdCBjb21wb25lbnQsIGJ5IHdoaWNoXG4gICAgICogbGlzdCBpdGVtIHdpbGwgYWNjb21kYXRlIHRoZSBkYXRhIGluIDIgY29sdW1uXG4gICAgICovXG4gICAgX2hhc0J5TGluZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFdoZXRoZXIgbGlzdGl0ZW0gaGFzIHJvdyBsZXZlbCBzZWxlY3Rpb24gZW5hYmxlZFxuICAgICAqL1xuICAgIHNldCByb3dTZWxlY3Rpb24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcm93U2VsZWN0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3NldEF0dHJSb2xlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHJvd1NlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd1NlbGVjdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogV2hldGhlciBsaXN0aXRlbSBpcyBzZWxlY3RlZCBiaW5kZWQgdG8gdGVtcGxhdGVcbiAgICAgKi9cbiAgICBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9zZWxlY3RlZEF0dHIoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucm93U2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ25vbmUnID8gbnVsbCA6IHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBnZXQgdGhlIGZvY3VzZWQgZWxlbWVudCBmb3Iga2V5IG1hbmFnZXJcbiAgICAgKi9cbiAgICBfZm9jdXNlZDogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9saXN0SXRlbVJvbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm9sZSB8fCB0aGlzLl9kZWZhdWx0Um9sZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFyaWFTZXRTaXplOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jvd1NlbGVjdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZWZhdWx0Um9sZSA9ICdsaXN0aXRlbSc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdJbml0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdENvbXBvbmVudCA9IGluamVjdDxGZHBMaXN0PihGZHBMaXN0Q29tcG9uZW50KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXZhdGFyQ29uZmlnOiBMaXN0QXZhdGFyQ29uZmlnID0gbmV3IExpc3RBdmF0YXJDb25maWcoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaWNvbkNvbmZpZzogTGlzdEljb25Db25maWcgPSBuZXcgTGlzdEljb25Db25maWcoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiByYWRpbyBidXR0b24gc2VsZWN0ZWQgdmFsdWUgYmluZGVkIHRvIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uVmFsdWU6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGlvbk1vZGU6IFNlbGVjdGlvblR5cGUgPSAnbm9uZSc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgaXRlbUVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIF9saXN0Q29uZmlnOiBMaXN0Q29uZmlnLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZEX0xJU1RfVU5SRUFEX0lORElDQVRPUikgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogTGlzdFVucmVhZEluZGljYXRvclxuICAgICkge1xuICAgICAgICBzdXBlcihfY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIC8qKiBTZWxlY3Rpb24gdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3Rpb25WYWx1ZSh2YWx1ZTogTnVsbGFibGU8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25WYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uVmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGlvblZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMudmFsdWUgPT09IHRoaXMuX3NlbGVjdGlvblZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBzZWxlY3Rpb25WYWx1ZSgpOiBOdWxsYWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBPbiBpdGVtIGNsaWNrIGV2ZW50IHdpbGwgYmUgZW1pdHRlZFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBfb25JdGVtQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJvd1NlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gIXRoaXMuX3NlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTW9kaWZ5SXRlbUV2ZW50KCk7XG4gICAgICAgIGV2ZW50LnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSAhdGhpcy5fZm9jdXNlZDtcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgX2hhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jaGVja2JveENvbXBvbmVudCB8fCB0aGlzLnJhZGlvQnV0dG9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9vbktleWJvYXJkQ2xpY2soZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmNob3I/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcblxuICAgICAgICBpZiAodGhpcy5yb3dTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gIXRoaXMuX3NlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgJGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICAkZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlciBmb3IgbW91c2UgZXZlbnRzXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIF9vbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrYm94Q29tcG9uZW50ICYmICF0aGlzLmFuY2hvcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrYm94Q29tcG9uZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBjbGlja2luZyBvbiB0aGUgY2hlY2tib3ggaXMgbm90IHN1cHByZXNzZWRcbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgb25seSBwcm9jZXNzIGNsaWNrcyBpZiBjbGlja2VkIG9uIHRoZSBsaXN0LWl0ZW0sIG5vdCBjaGVja2JveCBpdHNlbGZcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94Q29tcG9uZW50Lm5leHRWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJhZGlvQnV0dG9uQ29tcG9uZW50Py52YWx1ZUNoYW5nZShldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3QgJGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICAkZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBoZWxwcyB0byBhdm9pZCBtdWx0aSByb3dzIGFjdGl2ZSBjbGFzcyB3aXRoIG5hdmlnYXRpb25cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXG4gICAgX29uQmx1cihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQcmVzZW50KHRoaXMuYW5jaG9yKSAmJiAhS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKElTX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2hvdyBuYXZpZ2F0aW9uIGZvciBzaW5nbGUgbGlzdFxuICAgICAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlkID0gYGZkcC1saXN0LWl0ZW0tJHtuZXh0TGlzdEl0ZW1JZCsrfWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld0luaXRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2xpc3RDb21wb25lbnQuX3NldHVwTGlzdEl0ZW0odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRvIGRldGVjdCBjaGFuZ2VzIGZyb20gcGFyZW50LWxpc3Rib3ggdG8gbGlzdCBpdGVtXG4gICAgICogZm9yIGV4YW1wbGUgc2luZ2xlLCBtdWx0aSBvcHRpb24gc2VsZWN0aW9uIHRob3NlIGRldGFpbHNcbiAgICAgKiB3aWxsIGJlIGRlZHVjdGVkIGluIGxpc3QgaXRlbVxuICAgICAqL1xuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW06IE51bGxhYmxlPEhUTUxMSUVsZW1lbnQ+ID0gdGhpcy5pdGVtRWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdsaScpO1xuICAgICAgICBpZiAoIWN1cnJlbnRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gY3VycmVudEl0ZW0ucGFyZW50Tm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGN1cnJlbnRJdGVtLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgICAgICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDcmVhdGVkIGZvY3VzIG9uIGxpc3QgaXRlbSBvbiBtb3VzZWNsaWNrLFxuICAgICAqIFVwLGRvd24gYXJyb3cgcHJlc3NcbiAgICAgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0SXRlbS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbW1hdGljYWxseSBzZXQgc2VsZWN0ZWQgc3RhdGUgb2YgdGhlIGxpc3QgaXRlbS5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWQgV2hldGhlciB0aGUgbGlzdCBpdGVtIGlzIHNlbGVjdGVkXG4gICAgICovXG4gICAgc2V0U2VsZWN0ZWQoc2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkID09PSB0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICBldmVudC5zb3VyY2UgPSB0aGlzO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIG9uIGtleWRvd24gYXBwZW5kIGFjdGl2ZSBzdHlsZXMgb24gYWN0aW9uYWJsZSBpdGVtXG4gICAgICovXG4gICAgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQcmVzZW50KHRoaXMuYW5jaG9yKSAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VOVEVSLCBTUEFDRV0pKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoSVNfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBvbiBrZXl1cCByZW1vdmUgYWN0aXZlIHN0eWxlcyBmcm9tIGFjdGlvbmFibGUgaXRlbVxuICAgICAqL1xuICAgIF9vbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChpc1ByZXNlbnQodGhpcy5hbmNob3IpICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRU5URVIsIFNQQUNFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShJU19BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25DaGVja2JveE1vZGVsQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBNb2RpZnlJdGVtRXZlbnQoKTtcbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5pdGVtQ2hlY2tib3hTZWxlY3RlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlcyBhY3Rpb24gYnV0dG9uIGNsaWNrXG4gICAgICovXG4gICAgX29uQWN0aW9uQnV0dG9uQ2xpY2soYWN0aW9uOiAnZGVsZXRlJyB8ICdlZGl0Jyk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBNb2RpZnlJdGVtRXZlbnQoKTtcbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQuYWN0aW9uID0gYWN0aW9uO1xuICAgICAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZXMgYWN0aW9uIGJ1dHRvbiBjbGljayBvbiBrZXkgcHJlc3NcbiAgICAgKi9cbiAgICBfb25LZXlCdXR0b25DbGljayhldmVudDogS2V5Ym9hcmRFdmVudCwgYWN0aW9uOiAnZGVsZXRlJyB8ICdlZGl0Jyk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFTlRFUiwgU1BBQ0VdKSkge1xuICAgICAgICAgICAgdGhpcy5fb25BY3Rpb25CdXR0b25DbGljayhhY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXNBZHZhbmNlZFRleHQodGV4dDogTGlzdERlc2NyaXB0aW9uKTogdGV4dCBpcyBMaXN0QWR2YW5jZWREZXNjcmlwdGlvbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGV4dCAhPT0gJ3N0cmluZycgJiYgISF0ZXh0LnRleHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbktleWJvYXJkQ2xpY2soZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2JveENvbXBvbmVudD8ubmV4dFZhbHVlKCk7XG4gICAgICAgIHRoaXMucmFkaW9CdXR0b25Db21wb25lbnQ/LnZhbHVlQ2hhbmdlKGV2ZW50KTtcblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3QgJGV2ZW50ID0gbmV3IE1vZGlmeUl0ZW1FdmVudCgpO1xuICAgICAgICAkZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0QXR0clJvbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRSb2xlID1cbiAgICAgICAgICAgIHRoaXMucm93U2VsZWN0aW9uIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGknXG4gICAgICAgICAgICAgICAgPyAnb3B0aW9uJ1xuICAgICAgICAgICAgICAgIDogJ2xpc3RpdGVtJztcblxuICAgICAgICBpZiAodGhpcy5fdmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|