ca-components 1.3.991 → 1.3.992
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.
|
@@ -81,12 +81,12 @@ export class CaInputDropdownTestComponent {
|
|
|
81
81
|
set options(values) {
|
|
82
82
|
if (values)
|
|
83
83
|
this._options = [...values];
|
|
84
|
-
if (this.
|
|
84
|
+
if (this.firstWriteValue) {
|
|
85
85
|
const findInOptions = this.inputConfig.searchinGroupIndex
|
|
86
86
|
? this.getMainGroup()
|
|
87
87
|
: this._options;
|
|
88
88
|
const findOption = findInOptions.find((option) => option[this.optionValue] ==
|
|
89
|
-
this.
|
|
89
|
+
this.firstWriteValue);
|
|
90
90
|
if (findOption) {
|
|
91
91
|
this.setDropdownValue(findOption);
|
|
92
92
|
}
|
|
@@ -157,7 +157,7 @@ export class CaInputDropdownTestComponent {
|
|
|
157
157
|
const findInOptions = this.inputConfig.searchinGroupIndex
|
|
158
158
|
? this.getMainGroup()
|
|
159
159
|
: this._options;
|
|
160
|
-
|
|
160
|
+
this.firstWriteValue = value;
|
|
161
161
|
const findOption = findInOptions.find((option) => option[this.optionValue] == value);
|
|
162
162
|
if (findOption) {
|
|
163
163
|
this.setDropdownValue(findOption);
|
|
@@ -690,4 +690,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
690
690
|
type: Output,
|
|
691
691
|
args: ['searchInputEvent']
|
|
692
692
|
}] } });
|
|
693
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXN0L2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGVzdC9jYS1pbnB1dC1kcm9wZG93bi10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMs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eSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgc2tpcCxcbiAgICBTdWJqZWN0LFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcyc7XG5cbi8vIGJvb3RzdHJhcFxuaW1wb3J0IHtcbiAgICBOZ2JQb3BvdmVyLFxuICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgTmdiTW9kdWxlLFxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbi8vIGFuaW1hdGlvblxuaW1wb3J0IHsgaW5wdXREcm9wZG93bkFuaW1hdGlvbiB9IGZyb20gJy4vYW5pbWF0aW9ucyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVzVHRkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duU3ZnVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dERpc3BhdGNoVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Hcm91cHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3QvY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxhYmVsc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0L2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItc2hpcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVGV4dENvdW50ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRG91YmxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25UcmlwbGVUZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdHJpcGxlLXRleHQtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tdHJpcGxlLXRleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRlZmF1bHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkZ1ZWxGcmFuY2hpc2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZnVlbC1mcmFuY2hpc2UvY2EtaW5wdXQtZHJvcGRvd24tZnVlbC1mcmFuY2hpc2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRpc3BhdGNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRpc3BhdGNoL2NhLWlucHV0LWRyb3Bkb3duLWRpc3BhdGNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZXRhaWxzVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25QYXlyb2xsVHJ1Y2tzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzL2NhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudEl0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtJztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItc2hpcHBlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbS5jb21wb25lbnQnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQaXBlIH0gZnJvbSAnLi4vY2EtaW5wdXQvcGlwZXMnO1xuaW1wb3J0IHtcbiAgICBEcm9wZG93bkNvdW50UGlwZSxcbiAgICBJbnB1dERyb3Bkb3duR2V0SWNvbnNQaXBlLFxuICAgIElucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzUGlwZSxcbn0gZnJvbSAnLi9waXBlcyc7XG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnNQaXBlIH0gZnJvbSAnLi9waXBlcy9kcm9wZG93bi1vcHRpb25zLnBpcGUnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG4vLyBkaXJlY3RpdmVzXG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nQ29udHJvbCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgQ29tbWFuZHNFdmVudCB9IGZyb20gJy4uL2NhLWlucHV0L21vZGVscyc7XG5pbXBvcnQgeyBPcHRpb25Nb2RlbCB9IGZyb20gJy4vbW9kZWxzL2lucHV0LWRyb3Bkb3duLW9wdGlvbi5tb2RlbCc7XG5cbi8vIHN2ZyByb3V0ZXNcbmltcG9ydCB7IElucHV0RHJvcGRvd25TdmdSb3V0ZXMgfSBmcm9tICcuL3V0aWxzL3N2Zy1yb3V0ZXMvaW5wdXQtZHJvcGRvd24tc3ZnLXJvdXRlcyc7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBEcm9wZG93blN0cmluZ0VudW0sIERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSB9IGZyb20gJy4vZW51bXMnO1xuXG4vLyBoZWxwZXJzXG5pbXBvcnQgeyB1dWlkdjQgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzJztcblxuLy8gY2xhc3Nlc1xuaW1wb3J0IHsgRXZlbnRJbnB1dE1hbmFnZXIgfSBmcm9tICcuLi9jYS1pbnB1dC9iYXNlLWNsYXNzZXMvY2EtaW5wdXQtZXZlbnQtbWFuYWdlcic7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IElucHV0VGVzdENvbXBvbmVudCB9IGZyb20gJy4uL2NhLWlucHV0LXRlc3QvaW5wdXQtdGVzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FMb2FkU3RhdHVzU3RyaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbG9hZC1zdGF0dXMtc3RyaW5nL2NhLWxvYWQtc3RhdHVzLXN0cmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYS1wcm9maWxlLWltYWdlL2NhLXByb2ZpbGUtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0L2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0uY29tcG9uZW50JztcblxuLy8gY29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0LXRlc3QvY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYS1pbnB1dC1kcm9wZG93bi10ZXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtGb3JtQ29udHJvbFBpcGVdLFxuICAgIGFuaW1hdGlvbnM6IFtpbnB1dERyb3Bkb3duQW5pbWF0aW9uKCdzaG93SGlkZURyb3Bkb3duT3B0aW9ucycpXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIE1vZHVsZVxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICAvLyBDb21wb25lbnRcbiAgICAgICAgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQsXG4gICAgICAgIENhTG9hZFN0YXR1c1N0cmluZ0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVGV4dENvdW50ZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkZ1ZWxGcmFuY2hpc2VDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRpc3BhdGNoQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZXRhaWxzVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBJbnB1dFRlc3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVzVHRkQ29tcG9uZW50SXRlbSxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudEl0ZW0sXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJJdGVtQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIC8vIFBpcGVzXG4gICAgICAgIEZvcm1Db250cm9sUGlwZSxcbiAgICAgICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzUGlwZSxcbiAgICAgICAgRHJvcGRvd25PcHRpb25zUGlwZSxcbiAgICAgICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RHJvcGRvd25UZXN0Q29tcG9uZW50XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBPbkluaXQsXG4gICAgICAgIEFmdGVyVmlld0luaXQsXG4gICAgICAgIE9uRGVzdHJveSxcbiAgICAgICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgICAgIEFmdGVyVmlld0luaXRcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0UmVmITogSW5wdXRUZXN0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3QyJykgcHVibGljIHBvcG92ZXJSZWYhOiBOZ2JQb3BvdmVyO1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29tcG9uZW50UmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZHJvcGRvd25Db21wb25lbnRSZWY6IGFueTtcblxuICAgIC8vIExhYmVsIGlucHV0IC0gdmFsdWUgdGhhdCB3aWxsIGJlIHNob3dlZCBpbnNpZGUgaW5wdXRcbiAgICBASW5wdXQoKSBsYWJlbCE6IGtleW9mIE9wdGlvbk1vZGVsO1xuXG4gICAgLy8gb3B0aW9uVmFsdWUgaW5wdXQgLSBrZXkgdmFsdWUgZnJvbSBvYmplY3QgLSBFbWl0IHRoaXMgaWYgeW91IHdhbnQgdG8gc2V0IHdob2xlIG9iamVjdFxuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlITogc3RyaW5nO1xuXG4gICAgaW5wdXRIb3ZlcmVkSXRlbTogbnVtYmVyID0gLTE7XG4gICAgZHJvcERvd25Jc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIGRpZmZlcmVudCB0ZW1wbGF0ZXMgZm9yIGJvZHkgcmVuZGVyaW5nXG4gICAgcHVibGljIF90ZW1wbGF0ZSE6IHN0cmluZztcbiAgICBfY2FuQWRkTmV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzZXQgdGVtcGxhdGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG11bHRpc2VsZWN0VGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcbiAgICBASW5wdXQoKSBzZXQgY2FuQWRkTmV3KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NhbkFkZE5ldyA9IHZhbHVlO1xuICAgIH0gLy8gQUREIE5FVyBpdGVtIGluIG9wdGlvbnNcblxuICAgIHB1YmxpYyBnZXQgY2FuQWRkTmV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FuQWRkTmV3O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNhbk9wZW5Nb2RhbCE6IGJvb2xlYW47IC8vIG9wZW4gbW9kYWwgd2l0aCBBREQgTkVXIGJ1dHRvblxuXG4gICAgLy8gc29ydC10ZW1wbGF0ZSBmb3IgZGlmZmVyZW50IG9wdGlvbnNcbiAgICBwdWJsaWMgX3NvcnQhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2V0IHNvcnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zb3J0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgICB9XG5cbiAgICAvLyBjdXJyZW50bHkgYWN0aXZlIGl0ZW1cbiAgICBwdWJsaWMgX2FjdGl2ZUl0ZW0hOiBPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgQElucHV0KCkgc2V0IGFjdGl2ZUl0ZW0odmFsdWU6IE9wdGlvbk1vZGVsIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmVJdGVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlSXRlbTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBhY3RpdmVJdGVtQ29sb3IhOiBPcHRpb25Nb2RlbCB8IG51bGw7IC8vIGN1cnJlbnRseSBhY3RpdmUgY29sb3IgaW4gZHJvcGRvd25cbiAgICBASW5wdXQoKSBsYWJlbE1vZGUhOiAnTGFiZWwnIHwgJ0NvbG9yJztcblxuICAgIC8vIHdoZW4gc2VuZCBTVkcsIHBsZWFzZSBwcmVtbWFwZWQgb2JqZWN0OiBhZGQgJ2ZvbGRlcicgfCAnc3ViZm9sZGVyJ1xuICAgIHB1YmxpYyBfb3B0aW9uczogT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbHVlczogT3B0aW9uTW9kZWxbXSkge1xuICAgICAgICBpZiAodmFsdWVzKSB0aGlzLl9vcHRpb25zID0gWy4uLnZhbHVlc107XG5cbiAgICAgICAgaWYgKHRoaXMubGFzdFZhbGlkT3B0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5kSW5PcHRpb25zID0gdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXhcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0TWFpbkdyb3VwKClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBmaW5kT3B0aW9uID0gZmluZEluT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblt0aGlzLm9wdGlvblZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXSA9PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RWYWxpZE9wdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGZpbmRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoZmluZE9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNdWx0aVNlbGVjdCBTZWxlY3RlZCBJdGVtcyBGcm9tIEJhY2tlbmRcbiAgICBASW5wdXQoKSBzZXQgcHJlbG9hZE11bHRpc2VsZWN0SXRlbXModmFsdWVzOiBPcHRpb25Nb2RlbFtdKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKHRoaXMuaW5wdXRDb25maWcubGFiZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk11bHRpc2VsZWN0U2VsZWN0KGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgaXNEZXRhaWxzUGFnZXMhOiBib29sZWFuOyAvLyBvbmx5IGZvciBkZXRhaWxzIHBhZ2VzXG4gICAgQElucHV0KCkgaXNJbmNvcnJlY3RWYWx1ZSE6IGJvb2xlYW47IC8vIGFwcGxpY2FudCByZXZpZXcgb3B0aW9uXG4gICAgQElucHV0KCkgaXNBZGRyZXNzRHJvcGRvd24hOiBib29sZWFuOyAvLyBvbmx5IGZvciBhZGRyZXNzIGRyb3Bkb3duXG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtOiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zOiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWxbXSB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbFtdIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtQ29sb3I6IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkTGFiZWxNb2RlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZURyb3Bkb3duOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHNhdmVJdGVtOiBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBkYXRhOiBPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IE9wdGlvbk1vZGVsIHwgbnVsbDsgYWN0aW9uOiBzdHJpbmcgfT4oKTtcbiAgICBAT3V0cHV0KCkgaW5jb3JyZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgcGxhY2Vob2xkZXJJY29uRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCdwYWdpbmF0aW9uJykgcGFnaW5hdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoJ2FjdGl2ZUdyb3VwJykgYWN0aXZlR3JvdXBFdmVudDogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWw+KCk7XG4gICAgQE91dHB1dCgnY2xlYXJJbnB1dEV2ZW50JykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KCdzZWFyY2hJbnB1dEV2ZW50Jykgc2VhcmNoSW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICAvLyBldmVudHNcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXRUZXh0ID0gbmV3IEV2ZW50SW5wdXRNYW5hZ2VyPHN0cmluZz4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFdmVudFxuICAgICk7XG5cbiAgICAvLyBDb3B5IG9mIE9wdGlvbnNcbiAgICBwdWJsaWMgb3JpZ2luYWxPcHRpb25zOiBPcHRpb25Nb2RlbFtdID0gW107XG5cbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgcHVibGljIHBhZ2luYXRpb25OdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgICAvLyBNdWx0aXNlbGVjdCBkcm9wZG93biBvcHRpb25zXG4gICAgcHVibGljIG11bHRpc2VsZWN0SXRlbXM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBwdWJsaWMgaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgbXVsdGlTZWxlY3RMYWJlbCE6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgbGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSE6IE9wdGlvbk1vZGVsIHwgbnVsbDtcblxuICAgIC8vIEFkZCBtb2RlXG4gICAgcHVibGljIGlzSW5BZGRNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEcm9wZG93biBuYXZpZ2F0aW9uIHdpdGgga2V5Ym9hcmRcbiAgICBwcml2YXRlIGRyb3Bkb3duUG9zaXRpb246IG51bWJlciA9IC0xO1xuXG4gICAgLy8gRHJvcGRvd24gQ2xlYXJ0aW1lb3V0XG4gICAgcHVibGljIGNsZWFyVGltZW91dERyb3Bkb3duOiBzdHJpbmcgfCBudW1iZXIgfCBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBob3ZlcmluZ0luZGV4ITogbnVtYmVyO1xuICAgIHB1YmxpYyBpbnB1dERyb3Bkb3duU3ZnUm91dGVzID0gSW5wdXREcm9wZG93blN2Z1JvdXRlcztcbiAgICBwdWJsaWMgZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtID0gRHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtO1xuXG4gICAgLy8gRGVzdHJveVxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3VwZXJDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGdldCBnZXRTdXBlckNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnB1dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcblxuICAgIHB1YmxpYyBsYXN0VmFsaWRPcHRpb24hOiBPcHRpb25Nb2RlbDtcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmluZEluT3B0aW9ucyA9IHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4XG4gICAgICAgID8gdGhpcy5nZXRNYWluR3JvdXAoKVxuICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIGNvbnNvbGUubG9nKCdXUklURSBWQUxVRScsIHZhbHVlLCB0aGlzLm9wdGlvblZhbHVlLCB0aGlzLl9vcHRpb25zLCBmaW5kSW5PcHRpb25zKTtcbiAgICAgICBcbiAgICAgICAgY29uc3QgZmluZE9wdGlvbiA9IGZpbmRJbk9wdGlvbnMuZmluZChcbiAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvblt0aGlzLm9wdGlvblZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXSA9PSB2YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoZmluZE9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG4gICAgcHVibGljIG9uQ2hhbmdlKF86IGFueSk6IHZvaWQge31cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIE11bHRpc2VsZWN0XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IHRoaXMuaW5wdXRDb25maWcubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNlYXJjaFRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dChzZWFyY2hUZXh0IHx8ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgNDUwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNjcm9sbERyb3Bkb3duKGV2ZW50OiBFdmVudFRhcmdldCB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0ID09PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25OdW1iZXIgKz0gMTtcblxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRXZlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb25OdW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbShvcHRpb246IE9wdGlvbk1vZGVsLCBncm91cD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgb3B0aW9uPy5bdGhpcy5sYWJlbF0/LnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtR3JvdXAoZXZlbnQ6IHsgb3B0aW9uOiBPcHRpb25Nb2RlbDsgZ3JvdXA6IGFueSB9KSB7XG4gICAgICAgIHRoaXMub25BY3RpdmVJdGVtKGV2ZW50Lm9wdGlvbiwgZXZlbnQuZ3JvdXApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gLTE7XG5cbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoJycpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRHJvcGRvd25MYWJlbCgpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUNvbG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1Db2xvci5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbW1hbmRFdmVudChldmVudDogQ29tbWFuZHNFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnRWRpdCBJbnB1dCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnQ29sb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnVG9nZ2xlIERyb3Bkb3duJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgdGhpcy5hZGROZXdJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdQbGFjZWhvbGRlciBJY29uIEV2ZW50Jykge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckljb25FdmVudC5lbWl0KHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZUludCh1dWlkdjQoKSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUsXG4gICAgICAgIH07XG4gICAgICAgIC8vdGhpcy5pbnB1dENvbmZpZy5jb21tYW5kcyEuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNWaXNpYmxlQ29tbWFuZHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoeyBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLCBhY3Rpb246ICduZXcnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNUb3VjaGVkSW5wdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgICAgICAgY29sb3JJZDogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5pZFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvbG9ySWQsXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IubmFtZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvbG9yLFxuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuY29kZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvZGUsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgYWN0aW9uOiAnZWRpdCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGROZXdDb25maWcoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2NvbmZpcm0tY2FuY2VsJyxcbiAgICAgICAgICAgICAgICBmaXJzdENvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maXJtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMzMDc0ZDMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgIHN2ZzogSW5wdXREcm9wZG93blN2Z1JvdXRlcy5zcGVjQ29uZmlybVN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlY29uZENvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzJmMmYyZicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcblxuICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIsIGl0ZW06IE9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIG9wdGlvbi5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IChpdGVtLm9wZW4gPSBmYWxzZSkpO1xuXG4gICAgICAgIG9wdGlvbi5vcGVuID0gIW9wdGlvbi5vcGVuO1xuXG4gICAgICAgIGlmIChvcHRpb24ub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEV2ZW50LmVtaXQob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkJsdXJJbnB1dChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJJbnB1dEV2ZW50KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICAgICAgLy8gbGFiZWwgZHJvcGRvd25cblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJEcm9wZG93bkxhYmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBub3JtYWwgZHJvcGRvd25cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUhpZGRlbkRyb3Bkb3duKCkge1xuICAgICAgICB0aGlzLmRyb3BEb3duSXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuZHJvcGRvd25WYWx1ZSB8fCAnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25Jc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93SGlkZURyb3Bkb3duKGFjdGlvbjogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlICE9PSAnQ29sb3InKSB7XG4gICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGFpbHMgcGFnZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5jdXN0b21DbGFzcz8uaW5jbHVkZXMoJ2RldGFpbHMtcGFnZXMnKSAmJlxuICAgICAgICAgICAgIWFjdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQodGhpcy5fYWN0aXZlSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWFpbkdyb3VwKCkge1xuICAgICAgICBsZXQgbWFpbkdyb3VwOiBPcHRpb25Nb2RlbFtdID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMubWFwKChncm91cHMpID0+IHtcbiAgICAgICAgICAgIG1haW5Hcm91cC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmdyb3Vwc1tcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXggYXMga2V5b2YgT3B0aW9uTW9kZWxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFpbkdyb3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wRG93bktleU5hdmlnYXRpb24oe1xuICAgICAgICBrZXlDb2RlLFxuICAgICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBhbnk7XG4gICAgfSkge1xuICAgICAgICAvLyBOYXZpZ2F0ZSBkb3duXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTmF2aWdhdGUgdXBcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duTmF2aWdhdGlvbigtMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmVzcyAnZW50ZXInXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAxMykge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLnNlYXJjaGluR3JvdXBJbmRleCkge1xuICAgICAgICAgICAgICAgIGxldCBtYWluR3JvdXAgPSB0aGlzLmdldE1haW5Hcm91cCgpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IG1haW5Hcm91cFt0aGlzLmlucHV0SG92ZXJlZEl0ZW1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLm9wdGlvbnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7IFt0aGlzLmxhYmVsXTogJycgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuT3Blbk1vZGFsICYmXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtPy5bdGhpcy5sYWJlbF0/LnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICAgICAgY2FuT3Blbk1vZGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA5KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3ZlclJlZi5pc09wZW4oKSkgdGhpcy5wb3BvdmVyUmVmPy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RHJvcGRvd25WYWx1ZShcbiAgICAgICAgb3B0aW9uOiBPcHRpb25Nb2RlbCxcbiAgICAgICAgb3B0aW9uVmFsdWU/OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsPzogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMubGFzdFZhbGlkT3B0aW9uID0gb3B0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgIGNvbnN0IG9wdFZhbHVlID0gb3B0aW9uVmFsdWUgPyBvcHRpb25WYWx1ZSA6IHRoaXMub3B0aW9uVmFsdWU7XG4gICAgICAgIGNvbnN0IGxiZWwgPSBsYWJlbCA/IGxhYmVsIDogdGhpcy5sYWJlbDtcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gb3B0VmFsdWVcbiAgICAgICAgICAgID8gb3B0aW9uW29wdFZhbHVlIGFzIGtleW9mIE9wdGlvbk1vZGVsXVxuICAgICAgICAgICAgOiBvcHRpb247XG5cbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IG9wdGlvbltsYmVsIGFzIGtleW9mIE9wdGlvbk1vZGVsXSB8fCBjb250cm9sVmFsdWU7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoY29udHJvbFZhbHVlLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIE11bHRpc2VsZWN0IERyb3Bkb3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25NdWx0aXNlbGVjdFNlbGVjdChvcHRpb246IE9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmxhYmVsID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0SXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbS5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdCh0aGlzLm11bHRpc2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLnNvcnQoXG4gICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuYWN0aXZlKSAtIE51bWJlcih4LmFjdGl2ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5fb3B0aW9uc107XG5cbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm11bHRpc2VsZWN0SXRlbXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKGN1cnJlbnRMYWJlbD86IHN0cmluZykge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gIXRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgRW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBkcm9wZG93blZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgICBwdWJsaWMgc2V0Q29udHJvbFZhbHVlKHZhbHVlPzogc3RyaW5nLCBkcm9wZG93bklucHV0VmFsdWU/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25Ub3VjaGVkKCk7IC8vIE1hcmsgYXMgdG91Y2hlZFxuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWUgPSBkcm9wZG93bklucHV0VmFsdWUgfHwgdmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKGRyb3Bkb3duSW5wdXRWYWx1ZSB8fCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdGhyb3VnaCBkcm9wZG93biB3aXRoIGtleWJvYXJkIGFycm93c1xuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25OYXZpZ2F0aW9uKHN0ZXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSArIHN0ZXA7XG5cbiAgICAgICAgaWYgKG5leHRTdGVwID4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kcm9wZG93bk9wdGlvbi5sZW5ndGggLSAxKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gMDtcbiAgICAgICAgZWxzZSBpZiAobmV4dFN0ZXAgPCAwKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID1cbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRyb3Bkb3duT3B0aW9uLmxlbmd0aCAtIDE7XG4gICAgICAgIGVsc2UgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gbmV4dFN0ZXA7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJhcHBsaWNhdGlvbi1kcm9wZG93blwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgICAgICB8IGlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzXG4gICAgICAgICAgICAgICAgOiBtdWx0aXNlbGVjdEl0ZW1zXG4gICAgICAgICAgICAgICAgOiBpc011bHRpU2VsZWN0SW5wdXRGb2N1c1xuICAgIFwiXG4+XG4gICAgQGlmIChtdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICA8cCBjbGFzcz1cIm11bHRpc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBtdWx0aVNlbGVjdExhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICB9XG5cbiAgICBAaWYgKGlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBhcnJvdyAtLT5cbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWFycm93XCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKVwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cblxuICAgIEBpZiAobXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiYgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBjbGVhciBhbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgaXRlbXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0IG9mIG11bHRpc2VsZWN0SXRlbXM7XG4gICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSAtIFRvdGFsIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpU2VsZWN0SXRlbVJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gc2VhcmNoIC0tPlxuXG4gICAgQGlmICghaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgQGlmICghc2VhcmNoSW5wdXRUZXh0LnZhbHVlKSB7XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJkcm9wRG93bklzT3BlblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmxlZnRJY29uXT1cImlucHV0Q29uZmlnLnBsYWNlaG9sZGVySWNvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25fdmFsdWUgZHJvcGRvd24tb3B0aW9ucyAge3tcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vcHRpb24gZHJvcGRvd24tZG91YmxlLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOb1Jlc3Vsc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1icm9rZXItY29udGFjdC1ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93bldpdGhJbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNwZWNpYWwgRHJvcGRvd24gU2VsZWN0ZWQgU1ZHIHdpdGggb3IgV2l0aG91dCBUZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQgJiYgYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5wdXREcm9wZG93bkdldEljb25zOiBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2Uge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zZXQtY29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtPy5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnI2ZmZmZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkcm9wZG93blZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxjYS1pbnB1dC10ZXN0XG4gICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImNhSW5wdXREcm9wZG93blBvcG92ZXJcIlxuICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgW3BsYWNlbWVudF09XCJcbiAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXG4gICAgICAgICAgICAgICAgICAgID8gWydib3R0b20tbGVmdCcsICd0b3AtbGVmdCddXG4gICAgICAgICAgICAgICAgICAgIDogWydib3R0b20tbGVmdCddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRGb3JtQ29udHJvbCB8IGZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtwYXJlbnRDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaXNJbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJfdGVtcGxhdGVcIlxuICAgICAgICAgICAgKGJsdXJJbnB1dCk9XCJvbkJsdXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFySW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjb21tYW5kRXZlbnQpPVwiY29tbWFuZEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKHNob3dIaWRlRHJvcGRvd24pPVwic2hvd0hpZGVEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChkcm9wRG93bktleU5hdmlnYXRpb24pPVwiZHJvcERvd25LZXlOYXZpZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGluY29ycmVjdEV2ZW50KT1cIm9uSW5jb3JyZWN0SW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaGlkZGVuKT1cImhhbmRsZUhpZGRlbkRyb3Bkb3duKClcIlxuICAgICAgICAgICAgKHNob3duKT1cImhhbmRsZU9wZW5Ecm9wZG93bigpXCJcbiAgICAgICAgPjwvY2EtaW5wdXQtdGVzdD5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIGljb24gaW5zdGVhZCBvZiBpbnB1dCAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICB2YWxpZDpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaXNWYWxpZEljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlucHV0SWNvbj8uaW5jbHVkZXMoJ2N1c3RvbScpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogcG9wb3ZlclJlZj8uaXNPcGVuKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJbJ2JvdHRvbS1sZWZ0J11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREcm9wZG93blN2Z1JvdXRlcy5yZXBhaXJQbVN2Z1JvdXRlICtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaW5wdXRJY29uXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY2FJbnB1dERyb3Bkb3duUG9wb3Zlcj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEcm9wZG93biBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnPy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCAmJiBfb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1kaXZpZGVyIHt7XG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGF0Y2hfZHJvcGRvd25dPVwiX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICAoaW5wdXRDb25maWc/Lm5hbWUgIT0gJ0FkZHJlc3MnICYmXG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSAhPSAnUm91dGluZ0FkZHJlc3MnICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgX29wdGlvbnM/Lmxlbmd0aClcbiAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbERyb3Bkb3duKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3VsdC1jb250YWluZXInOiBfb3B0aW9uc1swXT8ubmFtZSA9PT0gJ05vIFJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zICB7eyBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3MgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAc3dpdGNoIChfdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTVkcgVGVtcGxhdGUgKFJlbmRlciBzdmdzIG9yIHRleHQgaWYgc3ZncyBkb2Vzbid0IGV4aXN0ICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5TVkdfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cImlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyIFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blN2Z1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdmcgVGV4dCBUZW1wbGF0ZSAoZGlzcGxheSBmbGV4KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN2Z1RleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGlzcGF0Y2ggZHJvcGRvd24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGF0Y2hUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGV0YWlscyB0ZW1wbGF0ZSAodHJ1Y2ssIHRyYWlsZXIuLi4gZGV0YWlscy1wYWdlcykgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uREVUQUlMU19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRdPVwiX3NvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdyb3VwaW5nIHRlbXBsYXRlIChjYW4gc2VlIG9uIGNvbnRhY3QgbW9kYWwpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkdST1VQUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXNlbGVjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1dPVwibGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uTXVsdGlzZWxlY3RTZWxlY3QpPVwib25NdWx0aXNlbGVjdFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMYWJlbHMgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MQUJFTFMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbE1vZGVdPVwibGFiZWxNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5BZGROZXddPVwiX2NhbkFkZE5ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVscz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEaXNwYXRjaCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRJU1BBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIERpc3BhdGNoZXIgVGVtcGxhdGUgKHVzZXIgYXZhdGFyICsgdXNlciBuYW1lKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBDb21iaW5lIFRydWNrLVRyYWlsZXItRHJpdmVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIENvbnRhY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3Q+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBTaGlwcGVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRlbXBsYXRlIFRleHQgLSBDb3VudGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVEVYVF9DT1VOVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1ZWwgRnJhbmNoaXNlIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRlVFTF9GUkFOQ0hJU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVOZXN0ZWRMaXN0KT1cInRvZ2dsZU5lc3RlZExpc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtR3JvdXApPVwib25BY3RpdmVJdGVtR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBUZXh0IFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgQ29sdW1uIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfQ09MVU1OX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRyaXBsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRSSVBMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gUEFZUk9MTCBUUlVDS1MgVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlBBWVJPTExfVFJVQ0tTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3NcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWZhdWx0IFRlbXBsYXRlIC0gUmVuZGVyIE9ubHkgVGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
693
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXN0L2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGVzdC9jYS1pbnB1dC1kcm9wZG93bi10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJSCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMs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Z0JBRWYsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJM0MsS0FBSztzQkFBYixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBU08sUUFBUTtzQkFBcEIsS0FBSztnQkFJRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFVTyxVQUFVO3NCQUF0QixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQW9CTyx1QkFBdUI7c0JBQW5DLEtBQUs7Z0JBZUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTTtnQkFJRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFZSxlQUFlO3NCQUFwQyxNQUFNO3VCQUFDLFlBQVk7Z0JBRUcsZ0JBQWdCO3NCQUF0QyxNQUFNO3VCQUFDLGFBQWE7Z0JBRU0sZUFBZTtzQkFBekMsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBR0csZ0JBQWdCO3NCQUEzQyxNQUFNO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIHNraXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG4vLyBib290c3RyYXBcbmltcG9ydCB7XG4gICAgTmdiUG9wb3ZlcixcbiAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBhbmltYXRpb25cbmltcG9ydCB7IGlucHV0RHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuaW1wb3J0IHsgT3B0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9pbnB1dC1kcm9wZG93bi1vcHRpb24ubW9kZWwnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhTG9hZFN0YXR1c1N0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtc3RhdHVzLXN0cmluZy9jYS1sb2FkLXN0YXR1cy1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtLmNvbXBvbmVudCc7XG5cbi8vIGNvbmZpZ1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2EtaW5wdXQtZHJvcGRvd24tdGVzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbRm9ybUNvbnRyb2xQaXBlXSxcbiAgICBhbmltYXRpb25zOiBbaW5wdXREcm9wZG93bkFuaW1hdGlvbignc2hvd0hpZGVEcm9wZG93bk9wdGlvbnMnKV0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBNb2R1bGVcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiUG9wb3Zlck1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgLy8gQ29tcG9uZW50XG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBDYUxvYWRTdGF0dXNTdHJpbmdDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dERpc3BhdGNoVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkdyb3Vwc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxhYmVsc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Eb3VibGVUZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blRyaXBsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGVmYXVsdFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25QYXlyb2xsVHJ1Y2tzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRUZXN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudEl0ZW0sXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnRJdGVtLFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckl0ZW1Db21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RJdGVtQ29tcG9uZW50LFxuICAgICAgICAvLyBQaXBlc1xuICAgICAgICBGb3JtQ29udHJvbFBpcGUsXG4gICAgICAgIERyb3Bkb3duQ291bnRQaXBlLFxuICAgICAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG4gICAgICAgIERyb3Bkb3duT3B0aW9uc1BpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25HZXRJY29uc1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FJbnB1dERyb3Bkb3duVGVzdENvbXBvbmVudFxuICAgIGltcGxlbWVudHNcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBBZnRlclZpZXdJbml0XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IElucHV0VGVzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd0MicpIHB1YmxpYyBwb3BvdmVyUmVmITogTmdiUG9wb3ZlcjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbXBvbmVudFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBhbnk7XG5cbiAgICAvLyBMYWJlbCBpbnB1dCAtIHZhbHVlIHRoYXQgd2lsbCBiZSBzaG93ZWQgaW5zaWRlIGlucHV0XG4gICAgQElucHV0KCkgbGFiZWwhOiBrZXlvZiBPcHRpb25Nb2RlbDtcblxuICAgIC8vIG9wdGlvblZhbHVlIGlucHV0IC0ga2V5IHZhbHVlIGZyb20gb2JqZWN0IC0gRW1pdCB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB3aG9sZSBvYmplY3RcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZSE6IHN0cmluZztcblxuICAgIGlucHV0SG92ZXJlZEl0ZW06IG51bWJlciA9IC0xO1xuICAgIGRyb3BEb3duSXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBib2R5IHJlbmRlcmluZ1xuICAgIHB1YmxpYyBfdGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgX2NhbkFkZE5ldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc2V0IHRlbXBsYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGVtcGxhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBtdWx0aXNlbGVjdFRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgc2V0IGNhbkFkZE5ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jYW5BZGROZXcgPSB2YWx1ZTtcbiAgICB9IC8vIEFERCBORVcgaXRlbSBpbiBvcHRpb25zXG5cbiAgICBwdWJsaWMgZ2V0IGNhbkFkZE5ldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbkFkZE5ldztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjYW5PcGVuTW9kYWwhOiBib29sZWFuOyAvLyBvcGVuIG1vZGFsIHdpdGggQUREIE5FVyBidXR0b25cblxuICAgIC8vIHNvcnQtdGVtcGxhdGUgZm9yIGRpZmZlcmVudCBvcHRpb25zXG4gICAgcHVibGljIF9zb3J0ITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNldCBzb3J0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc29ydCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc29ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnQ7XG4gICAgfVxuXG4gICAgLy8gY3VycmVudGx5IGFjdGl2ZSBpdGVtXG4gICAgcHVibGljIF9hY3RpdmVJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBhY3RpdmVJdGVtKHZhbHVlOiBPcHRpb25Nb2RlbCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogT3B0aW9uTW9kZWwgfCBudWxsOyAvLyBjdXJyZW50bHkgYWN0aXZlIGNvbG9yIGluIGRyb3Bkb3duXG4gICAgQElucHV0KCkgbGFiZWxNb2RlITogJ0xhYmVsJyB8ICdDb2xvcic7XG5cbiAgICAvLyB3aGVuIHNlbmQgU1ZHLCBwbGVhc2UgcHJlbW1hcGVkIG9iamVjdDogYWRkICdmb2xkZXInIHwgJ3N1YmZvbGRlcidcbiAgICBwdWJsaWMgX29wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuXG4gICAgICAgIGlmICh0aGlzLmZpcnN0V3JpdGVWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZmluZEluT3B0aW9ucyA9IHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4XG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldE1haW5Hcm91cCgpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgZmluZE9wdGlvbiA9IGZpbmRJbk9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAob3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZSBhcyBrZXlvZiBPcHRpb25Nb2RlbF0gPT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdFdyaXRlVmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKGZpbmRPcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTXVsdGlTZWxlY3QgU2VsZWN0ZWQgSXRlbXMgRnJvbSBCYWNrZW5kXG4gICAgQElucHV0KCkgc2V0IHByZWxvYWRNdWx0aXNlbGVjdEl0ZW1zKHZhbHVlczogT3B0aW9uTW9kZWxbXSkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyh0aGlzLmlucHV0Q29uZmlnLmxhYmVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25NdWx0aXNlbGVjdFNlbGVjdChpdGVtKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGlzRGV0YWlsc1BhZ2VzITogYm9vbGVhbjsgLy8gb25seSBmb3IgZGV0YWlscyBwYWdlc1xuICAgIEBJbnB1dCgpIGlzSW5jb3JyZWN0VmFsdWUhOiBib29sZWFuOyAvLyBhcHBsaWNhbnQgcmV2aWV3IG9wdGlvblxuICAgIEBJbnB1dCgpIGlzQWRkcmVzc0Ryb3Bkb3duITogYm9vbGVhbjsgLy8gb25seSBmb3IgYWRkcmVzcyBkcm9wZG93blxuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbTogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtczogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsW10gfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWxbXSB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUNvbG9yOiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWwgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZExhYmVsTW9kZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VEcm9wZG93bjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBzYXZlSXRlbTogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZGF0YTogT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgICAgICBhY3Rpb246IHN0cmluZztcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBPcHRpb25Nb2RlbCB8IG51bGw7IGFjdGlvbjogc3RyaW5nIH0+KCk7XG4gICAgQE91dHB1dCgpIGluY29ycmVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHBsYWNlaG9sZGVySWNvbkV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgncGFnaW5hdGlvbicpIHBhZ2luYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCdhY3RpdmVHcm91cCcpIGFjdGl2ZUdyb3VwRXZlbnQ6IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsPigpO1xuICAgIEBPdXRwdXQoJ2NsZWFySW5wdXRFdmVudCcpIGNsZWFySW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQE91dHB1dCgnc2VhcmNoSW5wdXRFdmVudCcpIHNlYXJjaElucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgLy8gZXZlbnRzXG4gICAgcHVibGljIHNlYXJjaElucHV0VGV4dCA9IG5ldyBFdmVudElucHV0TWFuYWdlcjxzdHJpbmc+KFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLnNlYXJjaElucHV0RXZlbnRcbiAgICApO1xuXG4gICAgLy8gQ29weSBvZiBPcHRpb25zXG4gICAgcHVibGljIG9yaWdpbmFsT3B0aW9uczogT3B0aW9uTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gUGFnaW5hdGlvblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uTnVtYmVyOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gTXVsdGlzZWxlY3QgZHJvcGRvd24gb3B0aW9uc1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdEl0ZW1zOiBPcHRpb25Nb2RlbFtdID0gW107XG4gICAgcHVibGljIGlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG11bHRpU2VsZWN0TGFiZWwhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0hOiBPcHRpb25Nb2RlbCB8IG51bGw7XG5cbiAgICAvLyBBZGQgbW9kZVxuICAgIHB1YmxpYyBpc0luQWRkTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRHJvcGRvd24gbmF2aWdhdGlvbiB3aXRoIGtleWJvYXJkXG4gICAgcHJpdmF0ZSBkcm9wZG93blBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICAgIC8vIERyb3Bkb3duIENsZWFydGltZW91dFxuICAgIHB1YmxpYyBjbGVhclRpbWVvdXREcm9wZG93bjogc3RyaW5nIHwgbnVtYmVyIHwgTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgaG92ZXJpbmdJbmRleCE6IG51bWJlcjtcbiAgICBwdWJsaWMgaW5wdXREcm9wZG93blN2Z1JvdXRlcyA9IElucHV0RHJvcGRvd25TdmdSb3V0ZXM7XG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICAgIC8vIERlc3Ryb3lcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAU2VsZigpIHB1YmxpYyBzdXBlckNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5wdXRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCk7XG5cbiAgICBwdWJsaWMgbGFzdFZhbGlkT3B0aW9uITogT3B0aW9uTW9kZWw7XG4gICAgcHVibGljIGZpcnN0V3JpdGVWYWx1ZTogYW55O1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBmaW5kSW5PcHRpb25zID0gdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXhcbiAgICAgICAgICAgID8gdGhpcy5nZXRNYWluR3JvdXAoKVxuICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zO1xuICAgICAgIFxuICAgICAgICB0aGlzLmZpcnN0V3JpdGVWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IGZpbmRPcHRpb24gPSBmaW5kSW5PcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZSBhcyBrZXlvZiBPcHRpb25Nb2RlbF0gPT0gdmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZmluZE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKGZpbmRPcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuICAgIHB1YmxpYyBvbkNoYW5nZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBNdWx0aXNlbGVjdFxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0TGFiZWwgPSB0aGlzLmlucHV0Q29uZmlnLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWFyY2hUZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlID09PSAnQ29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoc2VhcmNoVGV4dCB8fCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgIH0sIDQ1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TY3JvbGxEcm9wZG93bihldmVudDogRXZlbnRUYXJnZXQgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmICh0YXJnZXQuc2Nyb2xsVG9wICsgdGFyZ2V0Lm9mZnNldEhlaWdodCA9PT0gdGFyZ2V0LnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uTnVtYmVyICs9IDE7XG5cbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkV2ZW50LmVtaXQodGhpcy5wYWdpbmF0aW9uTnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkFjdGl2ZUl0ZW0ob3B0aW9uOiBPcHRpb25Nb2RlbCwgZ3JvdXA/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jYW5PcGVuTW9kYWwgJiZcbiAgICAgICAgICAgIG9wdGlvbj8uW3RoaXMubGFiZWxdPy50b0xvd2VyQ2FzZSgpID09PSAnYWRkIG5ldydcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICBjYW5PcGVuTW9kYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJvcGRvd25WYWx1ZShvcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogT3B0aW9uTW9kZWw7IGdyb3VwOiBhbnkgfSkge1xuICAgICAgICB0aGlzLm9uQWN0aXZlSXRlbShldmVudC5vcHRpb24sIGV2ZW50Lmdyb3VwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9IC0xO1xuXG4gICAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKCcnKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyb3Bkb3duTGFiZWwoKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1Db2xvciA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21tYW5kRXZlbnQoZXZlbnQ6IENvbW1hbmRzRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ0VkaXQgSW5wdXQnKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ1RvZ2dsZSBEcm9wZG93bicpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ25ldycpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3SXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NvbmZpcm0nICYmIGV2ZW50Lm1vZGUgPT09ICdlZGl0Jykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnUGxhY2Vob2xkZXIgSWNvbiBFdmVudCcpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJJY29uRXZlbnQuZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjYW5jZWwnKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnY2FuY2VsJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE5ld0l0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICBpZDogcGFyc2VJbnQodXVpZHY0KCkpLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2whLnZhbHVlLFxuICAgICAgICB9O1xuICAgICAgICAvL3RoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzVmlzaWJsZUNvbW1hbmRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHsgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSwgYWN0aW9uOiAnbmV3JyB9KTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzVG91Y2hlZElucHV0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbG9ySWQ6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuaWRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcklkLFxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcixcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2RlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoe1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3Q29uZmlnKCkge1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGNvbW1hbmRzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjb25maXJtLWNhbmNlbCcsXG4gICAgICAgICAgICAgICAgZmlyc3RDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMzA3NGQzJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMuc3BlY0NvbmZpcm1TdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWNvbmRDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMyZjJmMmYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnhDbGVhclN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNJbkFkZE1vZGUgPSBmYWxzZTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbmNvcnJlY3RJbnB1dChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmluY29ycmVjdEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpZGVudGl0eShpbmRleDogbnVtYmVyLCBpdGVtOiBPcHRpb25Nb2RlbCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVOZXN0ZWRMaXN0KG9wdGlvbjogT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbi5vcGVuKSB7XG4gICAgICAgICAgICBvcHRpb24ub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAoaXRlbS5vcGVuID0gZmFsc2UpKTtcblxuICAgICAgICBvcHRpb24ub3BlbiA9ICFvcHRpb24ub3BlbjtcblxuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR3JvdXBFdmVudC5lbWl0KG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgICAgIC8vIGxhYmVsIGRyb3Bkb3duXG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25MYWJlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm9ybWFsIGRyb3Bkb3duXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xlYXJTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVIaWRkZW5Ecm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5kcm9wRG93bklzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLmRyb3Bkb3duVmFsdWUgfHwgJycpO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3BlbkRyb3Bkb3duKCkge1xuICAgICAgICB0aGlzLmRyb3BEb3duSXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0hpZGVEcm9wZG93bihhY3Rpb246IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cyA9IGFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSAhPT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnNldFZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRhaWxzIHBhZ2VzXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY3VzdG9tQ2xhc3M/LmluY2x1ZGVzKCdkZXRhaWxzLXBhZ2VzJykgJiZcbiAgICAgICAgICAgICFhY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHRoaXMuX2FjdGl2ZUl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1haW5Hcm91cCgpIHtcbiAgICAgICAgbGV0IG1haW5Hcm91cDogT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zLm1hcCgoZ3JvdXBzKSA9PiB7XG4gICAgICAgICAgICBtYWluR3JvdXAucHVzaChcbiAgICAgICAgICAgICAgICAuLi5ncm91cHNbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4IGFzIGtleW9mIE9wdGlvbk1vZGVsXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1haW5Hcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcERvd25LZXlOYXZpZ2F0aW9uKHtcbiAgICAgICAga2V5Q29kZSxcbiAgICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICAgICAgZGF0YTogYW55O1xuICAgIH0pIHtcbiAgICAgICAgLy8gTmF2aWdhdGUgZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25OYXZpZ2F0aW9uKDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5hdmlnYXRlIHVwXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW07XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWFpbkdyb3VwID0gdGhpcy5nZXRNYWluR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSBtYWluR3JvdXBbdGhpcy5pbnB1dEhvdmVyZWRJdGVtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5vcHRpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBbdGhpcy5sYWJlbF06ICcnIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbT8uW3RoaXMubGFiZWxdPy50b0xvd2VyQ2FzZSgpID09PSAnYWRkIG5ldydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gOSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXJSZWYuaXNPcGVuKCkpIHRoaXMucG9wb3ZlclJlZj8ub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERyb3Bkb3duVmFsdWUoXG4gICAgICAgIG9wdGlvbjogT3B0aW9uTW9kZWwsXG4gICAgICAgIG9wdGlvblZhbHVlPzogc3RyaW5nLFxuICAgICAgICBsYWJlbD86IHN0cmluZ1xuICAgICkge1xuICAgICAgICB0aGlzLmxhc3RWYWxpZE9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChvcHRpb24pO1xuICAgICAgICBjb25zdCBvcHRWYWx1ZSA9IG9wdGlvblZhbHVlID8gb3B0aW9uVmFsdWUgOiB0aGlzLm9wdGlvblZhbHVlO1xuICAgICAgICBjb25zdCBsYmVsID0gbGFiZWwgPyBsYWJlbCA6IHRoaXMubGFiZWw7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IG9wdFZhbHVlXG4gICAgICAgICAgICA/IG9wdGlvbltvcHRWYWx1ZSBhcyBrZXlvZiBPcHRpb25Nb2RlbF1cbiAgICAgICAgICAgIDogb3B0aW9uO1xuXG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBvcHRpb25bbGJlbCBhcyBrZXlvZiBPcHRpb25Nb2RlbF0gfHwgY29udHJvbFZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBvcHRpb247XG4gICAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGNvbnRyb2xWYWx1ZSwgaW5wdXRWYWx1ZSk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcblxuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBNdWx0aXNlbGVjdCBEcm9wZG93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIG9uTXVsdGlzZWxlY3RTZWxlY3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgICAgIC8vdGhpcy5pbnB1dENvbmZpZy5sYWJlbCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdEl0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG9wdGlvbi5pZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IG9wdGlvbi5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcyA9IHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQodGhpcy5tdWx0aXNlbGVjdEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5zb3J0KFxuICAgICAgICAgICAgKHgsIHkpID0+IE51bWJlcih5LmFjdGl2ZSkgLSBOdW1iZXIoeC5hY3RpdmUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gWy4uLnRoaXMuX29wdGlvbnNdO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgLnNsaWNlKC0xKVswXTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dFJlZikge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZU11bHRpU2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSB0aGlzLm11bHRpc2VsZWN0SXRlbXNbaW5kZXhdLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tdWx0aXNlbGVjdEl0ZW1zW2luZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLnNvcnQoXG4gICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuYWN0aXZlKSAtIE51bWJlcih4LmFjdGl2ZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQoXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyhjdXJyZW50TGFiZWw/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChudWxsKTtcblxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVNdWx0aXNlbGVjdERyb3Bkb3duKCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cyA9ICF0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIEVuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZHJvcGRvd25WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gICAgcHVibGljIHNldENvbnRyb2xWYWx1ZSh2YWx1ZT86IHN0cmluZywgZHJvcGRvd25JbnB1dFZhbHVlPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpOyAvLyBOb3RpZnkgQW5ndWxhciBmb3JtIGFib3V0IHRoZSBjaGFuZ2VcbiAgICAgICAgaWYgKHZhbHVlKSB0aGlzLm9uVG91Y2hlZCgpOyAvLyBNYXJrIGFzIHRvdWNoZWRcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlID0gZHJvcGRvd25JbnB1dFZhbHVlIHx8IHZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShkcm9wZG93bklucHV0VmFsdWUgfHwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlIHRocm91Z2ggZHJvcGRvd24gd2l0aCBrZXlib2FyZCBhcnJvd3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duTmF2aWdhdGlvbihzdGVwOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV4dFN0ZXAgPSB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gKyBzdGVwO1xuXG4gICAgICAgIGlmIChuZXh0U3RlcCA+IHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuZHJvcGRvd25PcHRpb24ubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9IDA7XG4gICAgICAgIGVsc2UgaWYgKG5leHRTdGVwIDwgMClcbiAgICAgICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kcm9wZG93bk9wdGlvbi5sZW5ndGggLSAxO1xuICAgICAgICBlbHNlIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9IG5leHRTdGVwO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGVhclRpbWVvdXREcm9wZG93bik7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiYXBwbGljYXRpb24tZHJvcGRvd25cIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgfCBpbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1xuICAgICAgICAgICAgICAgIDogbXVsdGlzZWxlY3RJdGVtc1xuICAgICAgICAgICAgICAgIDogaXNNdWx0aVNlbGVjdElucHV0Rm9jdXNcbiAgICBcIlxuPlxuICAgIEBpZiAobXVsdGlzZWxlY3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJtdWx0aXNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgbXVsdGlTZWxlY3RMYWJlbCB9fVxuICAgICAgICA8L3A+XG4gICAgfVxuXG4gICAgQGlmIChpbnB1dENvbmZpZy5tdWx0aVNlbGVjdERyb3Bkb3duQWN0aXZlKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgYXJyb3cgLS0+XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1hcnJvd1wiXG4gICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMuaW5wdXREcm9wZG93bkFycm93U3ZnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNdWx0aXNlbGVjdERyb3Bkb3duKClcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICB9XG5cbiAgICBAaWYgKG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoICYmICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgY2xlYXIgYWxsIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyIG11bHRpc2VsZWN0LWNsZWFyXCJcbiAgICAgICAgICAgIG1haW5Ub29sdGlwPVwiQ2xlYXIgQWxsXCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1jbGVhci14XCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICBpbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duICYmXG4gICAgICAgIG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoICYmXG4gICAgICAgIF90ZW1wbGF0ZSA9PT0gJ211bHRpc2VsZWN0J1xuICAgICkge1xuICAgICAgICA8IS0tIE11bHRpc2VsZWN0IGl0ZW1zIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMge3sgbXVsdGlzZWxlY3RUZW1wbGF0ZSB9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdCBvZiBtdWx0aXNlbGVjdEl0ZW1zO1xuICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleDtcbiAgICAgICAgICAgICAgICBsZXQgaW5kID0gJGluZGV4XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgLSBUb3RhbCBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubXVsdGlTZWxlY3RJdGVtUmFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIW11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgQ291bnRlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiMyZjJmMmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIHNlYXJjaCAtLT5cblxuICAgIEBpZiAoIWlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIEBpZiAoIXNlYXJjaElucHV0VGV4dC52YWx1ZSkge1xuICAgICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsRHJvcGRvd24oJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHNjcm9sbDogX29wdGlvbnMgfCBjYURyb3Bkb3duQ291bnQ6IF90ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1ncm91cHMnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2xvYWQtYnJva2VyLWNvbnRhY3QnLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWZ1ZWwtZnJhbmNoaXNlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICdtZXJnZS1kcm9wZG93bi1ib2R5LXdpdGgtaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCxcbiAgICAgICAgICAgICAgICAnbm8tcmVzdWx0LWNvbnRhaW5lcic6IF9vcHRpb25zWzBdPy5uYW1lID09PSAnTm8gUmVzdWx0cycsXG4gICAgICAgICAgICAgICAgJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnMgIHt7IGlucHV0Q29uZmlnLmRyb3Bkb3duV2lkdGhDbGFzcyB9fVwiXG4gICAgICAgID4gLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW2NsYXNzLm9wZW5dPVwiZHJvcERvd25Jc09wZW5cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5sZWZ0SWNvbl09XCJpbnB1dENvbmZpZy5wbGFjZWhvbGRlckljb25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1ncm91cHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWZ1ZWwtZnJhbmNoaXNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duX3ZhbHVlIGRyb3Bkb3duLW9wdGlvbnMgIHt7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duV2lkdGhDbGFzc1xuICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChfdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVNfVFREKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uIGRyb3Bkb3duLWRvdWJsZS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Tm9SZXN1bHN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25dPVwiYWN0aXZlSXRlbSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX1NISVBQRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVJfQ09OVEFDVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWQtYnJva2VyLWNvbnRhY3QtZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25XaXRoSW1hZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGVjaWFsIERyb3Bkb3duIFNlbGVjdGVkIFNWRyB3aXRoIG9yIFdpdGhvdXQgVGV4dCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0ICYmIGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dCFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlucHV0RHJvcGRvd25HZXRJY29uczogYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXNlbGVjdGVkLWltYWdlIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc2V0LWNvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYWN0aXZlSXRlbT8uY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyNmZmZmZmYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQ/LndpdGhUZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZHJvcGRvd25WYWx1ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8Y2EtaW5wdXQtdGVzdFxuICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJjYUlucHV0RHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cImNhLWlucHV0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiXG4gICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1xuICAgICAgICAgICAgICAgICAgICA/IFsnYm90dG9tLWxlZnQnLCAndG9wLWxlZnQnXVxuICAgICAgICAgICAgICAgICAgICA6IFsnYm90dG9tLWxlZnQnXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlucHV0Rm9ybUNvbnRyb2wgfCBmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICBbcGFyZW50Q29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgW2luY29ycmVjdFZhbHVlXT1cImlzSW5jb3JyZWN0VmFsdWVcIlxuICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZERyb3Bkb3duTGFiZWxDb2xvcl09XCJcbiAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdGVtcGxhdGVdPVwiX3RlbXBsYXRlXCJcbiAgICAgICAgICAgIChibHVySW5wdXQpPVwib25CbHVySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xlYXIpPVwib25DbGVhcklucHV0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY29tbWFuZEV2ZW50KT1cImNvbW1hbmRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChzaG93SGlkZURyb3Bkb3duKT1cInNob3dIaWRlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoZHJvcERvd25LZXlOYXZpZ2F0aW9uKT1cImRyb3BEb3duS2V5TmF2aWdhdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIChpbmNvcnJlY3RFdmVudCk9XCJvbkluY29ycmVjdElucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGhpZGRlbik9XCJoYW5kbGVIaWRkZW5Ecm9wZG93bigpXCJcbiAgICAgICAgICAgIChzaG93bik9XCJoYW5kbGVPcGVuRHJvcGRvd24oKVwiXG4gICAgICAgID48L2NhLWlucHV0LXRlc3Q+XG4gICAgfVxuXG4gICAgPCEtLSBEcm9wZG93biBpY29uIGluc3RlYWQgb2YgaW5wdXQgLS0+XG4gICAgQGlmIChpbnB1dENvbmZpZy5pc0ljb25JbnB1dCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBpbnB1dC1pY29uLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgdmFsaWQ6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmlzVmFsaWRJY29uICYmXG4gICAgICAgICAgICAgICAgICAgICFpbnB1dENvbmZpZy5pbnB1dEljb24/LmluY2x1ZGVzKCdjdXN0b20nKSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHBvcG92ZXJSZWY/LmlzT3BlbigpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICN0Mj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImNhSW5wdXREcm9wZG93blBvcG92ZXJcIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cImNhLWlucHV0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiWydib3R0b20tbGVmdCddXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlucHV0RHJvcGRvd25TdmdSb3V0ZXMucmVwYWlyUG1TdmdSb3V0ZSArXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmlucHV0SWNvblxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2NhSW5wdXREcm9wZG93blBvcG92ZXI+XG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRHJvcGRvd24gb3B0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgQGlmIChpbnB1dENvbmZpZz8ubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQgJiYgX29wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnMtZGl2aWRlciB7e1xuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duV2lkdGhDbGFzc1xuICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgW2NsYXNzLmRpc3BhdGNoX2Ryb3Bkb3duXT1cIl90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSdcIlxuICAgICAgICA+PC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChcbiAgICAgICAgKGlucHV0Q29uZmlnPy5uYW1lICE9ICdBZGRyZXNzJyAmJlxuICAgICAgICAgICAgaW5wdXRDb25maWc/Lm5hbWUgIT0gJ1JvdXRpbmdBZGRyZXNzJyAmJlxuICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHx8XG4gICAgICAgICgoaW5wdXRDb25maWc/Lm5hbWUgPT0gJ0FkZHJlc3MnIHx8XG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSA9PSAnUm91dGluZ0FkZHJlc3MnKSAmJlxuICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQgJiZcbiAgICAgICAgICAgIF9vcHRpb25zPy5sZW5ndGgpXG4gICAgKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQHN3aXRjaCAoX3RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1ZHIFRlbXBsYXRlIChSZW5kZXIgc3ZncyBvciB0ZXh0IGlmIHN2Z3MgZG9lc24ndCBleGlzdCApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93bldpdGhJbWFnZV09XCJpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciBcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJvcGRvd25TdmdUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3ZnIFRleHQgVGVtcGxhdGUgKGRpc3BsYXkgZmxleCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5TVkdURVhUX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdmdUZXh0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLURpc3BhdGNoIGRyb3Bkb3duLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfRElTUEFUQ0hfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BhdGNoVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldGFpbHMgdGVtcGxhdGUgKHRydWNrLCB0cmFpbGVyLi4uIGRldGFpbHMtcGFnZXMpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRFVEFJTFNfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0XT1cIl9zb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHcm91cGluZyB0ZW1wbGF0ZSAoY2FuIHNlZSBvbiBjb250YWN0IG1vZGFsKSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5HUk9VUFMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1ncm91cHNcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1ncm91cHM+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTXVsdGlzZWxlY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5NVUxUSVNFTEVDVCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtXT1cImxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbk11bHRpc2VsZWN0U2VsZWN0KT1cIm9uTXVsdGlzZWxlY3RTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxzIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTEFCRUxTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxNb2RlXT1cImxhYmVsTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FuQWRkTmV3XT1cIl9jYW5BZGROZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHM+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGlzcGF0Y2ggVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ESVNQQVRDSCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRpc3BhdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2g+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBEaXNwYXRjaGVyIFRlbXBsYXRlICh1c2VyIGF2YXRhciArIHVzZXIgbmFtZSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQ29tYmluZSBUcnVjay1UcmFpbGVyLURyaXZlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIEJyb2tlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlcj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIEJyb2tlciBDb250YWN0IFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVJfQ09OVEFDVCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgU2hpcHBlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlcj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUZW1wbGF0ZSBUZXh0IC0gQ291bnRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRFWFRfQ09VTlRFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlcj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdWVsIEZyYW5jaGlzZSBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkZVRUxfRlJBTkNISVNFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZnVlbC1mcmFuY2hpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlTmVzdGVkTGlzdCk9XCJ0b2dnbGVOZXN0ZWRMaXN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbUdyb3VwKT1cIm9uQWN0aXZlSXRlbUdyb3VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZnVlbC1mcmFuY2hpc2U+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgVGV4dCBUZW1wbGF0ZSAtLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRE9VQkxFX1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gRG91YmxlIENvbHVtbiBUZW1wbGF0ZSAtLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRE9VQkxFX0NPTFVNTl9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBUcmlwbGUgQ29sdW1uIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5UUklQTEVfQ09MVU1OX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tdHJpcGxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFBBWVJPTEwgVFJVQ0tTIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3M+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVmYXVsdCBUZW1wbGF0ZSAtIFJlbmRlciBPbmx5IFRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -30963,12 +30963,12 @@ class CaInputDropdownTestComponent {
|
|
|
30963
30963
|
set options(values) {
|
|
30964
30964
|
if (values)
|
|
30965
30965
|
this._options = [...values];
|
|
30966
|
-
if (this.
|
|
30966
|
+
if (this.firstWriteValue) {
|
|
30967
30967
|
const findInOptions = this.inputConfig.searchinGroupIndex
|
|
30968
30968
|
? this.getMainGroup()
|
|
30969
30969
|
: this._options;
|
|
30970
30970
|
const findOption = findInOptions.find((option) => option[this.optionValue] ==
|
|
30971
|
-
this.
|
|
30971
|
+
this.firstWriteValue);
|
|
30972
30972
|
if (findOption) {
|
|
30973
30973
|
this.setDropdownValue(findOption);
|
|
30974
30974
|
}
|
|
@@ -31039,7 +31039,7 @@ class CaInputDropdownTestComponent {
|
|
|
31039
31039
|
const findInOptions = this.inputConfig.searchinGroupIndex
|
|
31040
31040
|
? this.getMainGroup()
|
|
31041
31041
|
: this._options;
|
|
31042
|
-
|
|
31042
|
+
this.firstWriteValue = value;
|
|
31043
31043
|
const findOption = findInOptions.find((option) => option[this.optionValue] == value);
|
|
31044
31044
|
if (findOption) {
|
|
31045
31045
|
this.setDropdownValue(findOption);
|