ca-components 1.7.9995 → 1.7.9996
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.
|
@@ -220,13 +220,13 @@ export class CaInputDropdownTestComponent {
|
|
|
220
220
|
onActiveItem(option, group) {
|
|
221
221
|
if (this.canOpenModal &&
|
|
222
222
|
option?.[this.label].toString()?.toLowerCase() === 'add new') {
|
|
223
|
+
this.popoverRef?.close();
|
|
224
|
+
this.searchInputText.next('');
|
|
223
225
|
this.selectedItem.emit({
|
|
224
226
|
id: 7655,
|
|
225
227
|
name: DropdownStringEnum.ADD_NEW,
|
|
226
228
|
canOpenModal: true,
|
|
227
229
|
});
|
|
228
|
-
this.popoverRef?.close();
|
|
229
|
-
this.searchInputText.next('');
|
|
230
230
|
}
|
|
231
231
|
else {
|
|
232
232
|
this.setDropdownValue({ option });
|
|
@@ -709,4 +709,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
709
709
|
type: Output,
|
|
710
710
|
args: ['searchInputEvent']
|
|
711
711
|
}] } });
|
|
712
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXN0L2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGVzdC9jYS1pbnB1dC1kcm9wZG93bi10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMs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SztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFFRyxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFFTSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHRyxnQkFBZ0I7c0JBQTNDLE1BQU07dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIHNraXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG4vLyBib290c3RyYXBcbmltcG9ydCB7XG4gICAgTmdiUG9wb3ZlcixcbiAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBhbmltYXRpb25cbmltcG9ydCB7IGlucHV0RHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuXG4vLyB0eXBlc1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2xXaXRoTm90Rm91bmRUeXBlLFxuICAgIEZvcm1Db250cm9sV2l0aE5vdEZvdW5kVHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3REcm9wZG93blZhbHVlVHlwZSB9IGZyb20gJy4vdHlwZXMvc2VsZWN0LWRyb3Bkb3duLXZhbHVlLnR5cGUnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0L2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0uY29tcG9uZW50JztcblxuLy8gY29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0LXRlc3QvY29uZmlnJztcblxuLy8gaW50ZXJmYWNlc1xuaW1wb3J0IHsgSU9wdGlvbk1vZGVsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lucHV0LWRyb3Bkb3duLW9wdGlvbi5pbnRlcmZhY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYS1pbnB1dC1kcm9wZG93bi10ZXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtGb3JtQ29udHJvbFBpcGVdLFxuICAgIGFuaW1hdGlvbnM6IFtpbnB1dERyb3Bkb3duQW5pbWF0aW9uKCdzaG93SGlkZURyb3Bkb3duT3B0aW9ucycpXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIE1vZHVsZVxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICAvLyBDb21wb25lbnRcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVGV4dENvdW50ZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkZ1ZWxGcmFuY2hpc2VDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRpc3BhdGNoQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZXRhaWxzVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBJbnB1dFRlc3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVzVHRkQ29tcG9uZW50SXRlbSxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudEl0ZW0sXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJJdGVtQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIC8vIFBpcGVzXG4gICAgICAgIEZvcm1Db250cm9sUGlwZSxcbiAgICAgICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzUGlwZSxcbiAgICAgICAgRHJvcGRvd25PcHRpb25zUGlwZSxcbiAgICAgICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RHJvcGRvd25UZXN0Q29tcG9uZW50XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBPbkluaXQsXG4gICAgICAgIEFmdGVyVmlld0luaXQsXG4gICAgICAgIE9uRGVzdHJveSxcbiAgICAgICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgICAgIEFmdGVyVmlld0luaXRcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0UmVmITogSW5wdXRUZXN0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3QyJykgcHVibGljIHBvcG92ZXJSZWYhOiBOZ2JQb3BvdmVyO1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29tcG9uZW50UmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZHJvcGRvd25Db21wb25lbnRSZWY6IGFueTtcblxuICAgIC8vIExhYmVsIGlucHV0IC0gdmFsdWUgdGhhdCB3aWxsIGJlIHNob3dlZCBpbnNpZGUgaW5wdXRcbiAgICBASW5wdXQoKSBsYWJlbCE6IGtleW9mIElPcHRpb25Nb2RlbDtcblxuICAgIC8vIG9wdGlvblZhbHVlIGlucHV0IC0ga2V5IHZhbHVlIGZyb20gb2JqZWN0IC0gRW1pdCB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB3aG9sZSBvYmplY3RcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZSE6IHN0cmluZztcblxuICAgIHB1YmxpYyBpbnB1dEhvdmVyZWRJdGVtOiBudW1iZXIgPSAtMTtcbiAgICBwdWJsaWMgaXNEcm9wRG93bklzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgYm9keSByZW5kZXJpbmdcbiAgICBwdWJsaWMgX3RlbXBsYXRlITogc3RyaW5nO1xuICAgIF9jYW5BZGROZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNldCB0ZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbXVsdGlzZWxlY3RUZW1wbGF0ZSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBpbnB1dENvbmZpZyE6IElDYUlucHV0O1xuICAgIEBJbnB1dCgpIHNldCBjYW5BZGROZXcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY2FuQWRkTmV3ID0gdmFsdWU7XG4gICAgfSAvLyBBREQgTkVXIGl0ZW0gaW4gb3B0aW9uc1xuXG4gICAgcHVibGljIGdldCBjYW5BZGROZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5BZGROZXc7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY2FuT3Blbk1vZGFsITogYm9vbGVhbjsgLy8gb3BlbiBtb2RhbCB3aXRoIEFERCBORVcgYnV0dG9uXG5cbiAgICAvLyBzb3J0LXRlbXBsYXRlIGZvciBkaWZmZXJlbnQgb3B0aW9uc1xuICAgIHB1YmxpYyBfc29ydCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXQgc29ydCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NvcnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNvcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0O1xuICAgIH1cblxuICAgIC8vIGN1cnJlbnRseSBhY3RpdmUgaXRlbVxuICAgIHB1YmxpYyBfYWN0aXZlSXRlbSE6IElPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgQElucHV0KCkgc2V0IGFjdGl2ZUl0ZW0odmFsdWU6IElPcHRpb25Nb2RlbCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogSU9wdGlvbk1vZGVsIHwgbnVsbDsgLy8gY3VycmVudGx5IGFjdGl2ZSBjb2xvciBpbiBkcm9wZG93blxuICAgIEBJbnB1dCgpIGxhYmVsTW9kZSE6ICdMYWJlbCcgfCAnQ29sb3InO1xuXG4gICAgLy8gd2hlbiBzZW5kIFNWRywgcGxlYXNlIHByZW1tYXBlZCBvYmplY3Q6IGFkZCAnZm9sZGVyJyB8ICdzdWJmb2xkZXInXG4gICAgcHVibGljIF9vcHRpb25zOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbHVlczogSU9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuICAgICAgICBpZiAodGhpcy5maXJzdFdyaXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZVRvRm9ybUNvbnRyb2wodGhpcy5maXJzdFdyaXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTXVsdGlTZWxlY3QgU2VsZWN0ZWQgSXRlbXMgRnJvbSBCYWNrZW5kXG4gICAgQElucHV0KCkgc2V0IHByZWxvYWRNdWx0aXNlbGVjdEl0ZW1zKHZhbHVlczogSU9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFsbE11bHRpU2VsZWN0SXRlbXModGhpcy5pbnB1dENvbmZpZy5sYWJlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTXVsdGlzZWxlY3RTZWxlY3QoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc0RldGFpbHNQYWdlcyE6IGJvb2xlYW47IC8vIG9ubHkgZm9yIGRldGFpbHMgcGFnZXNcbiAgICBASW5wdXQoKSBpc0luY29ycmVjdFZhbHVlITogYm9vbGVhbjsgLy8gYXBwbGljYW50IHJldmlldyBvcHRpb25cbiAgICBASW5wdXQoKSBpc0FkZHJlc3NEcm9wZG93biE6IGJvb2xlYW47IC8vIG9ubHkgZm9yIGFkZHJlc3MgZHJvcGRvd25cblxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW06IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtczogRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbFtdIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbFtdIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtQ29sb3I6IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRMYWJlbE1vZGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRHJvcGRvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgc2F2ZUl0ZW06IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGRhdGE6IElPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IElPcHRpb25Nb2RlbCB8IG51bGw7IGFjdGlvbjogc3RyaW5nIH0+KCk7XG4gICAgQE91dHB1dCgpIGluY29ycmVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHBsYWNlaG9sZGVySWNvbkV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgncGFnaW5hdGlvbicpIHBhZ2luYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCdhY3RpdmVHcm91cCcpIGFjdGl2ZUdyb3VwRXZlbnQ6IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWw+KCk7XG4gICAgQE91dHB1dCgnY2xlYXJJbnB1dEV2ZW50JykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KCdzZWFyY2hJbnB1dEV2ZW50Jykgc2VhcmNoSW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICAvLyBldmVudHNcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXRUZXh0ID0gbmV3IEV2ZW50SW5wdXRNYW5hZ2VyPHN0cmluZz4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFdmVudFxuICAgICk7XG5cbiAgICAvLyBDb3B5IG9mIE9wdGlvbnNcbiAgICBwdWJsaWMgb3JpZ2luYWxPcHRpb25zOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gUGFnaW5hdGlvblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uTnVtYmVyOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gTXVsdGlzZWxlY3QgZHJvcGRvd24gb3B0aW9uc1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdEl0ZW1zOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIHB1YmxpYyBpc011bHRpU2VsZWN0SW5wdXRGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBtdWx0aVNlbGVjdExhYmVsITogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyBsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtITogSU9wdGlvbk1vZGVsIHwgbnVsbDtcblxuICAgIC8vIEFkZCBtb2RlXG4gICAgcHVibGljIGlzSW5BZGRNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEcm9wZG93biBuYXZpZ2F0aW9uIHdpdGgga2V5Ym9hcmRcbiAgICBwcml2YXRlIGRyb3Bkb3duUG9zaXRpb246IG51bWJlciA9IC0xO1xuXG4gICAgLy8gRHJvcGRvd24gQ2xlYXJ0aW1lb3V0XG4gICAgcHVibGljIGNsZWFyVGltZW91dERyb3Bkb3duOlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IG51bWJlclxuICAgICAgICB8IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGhvdmVyaW5nSW5kZXghOiBudW1iZXI7XG4gICAgcHVibGljIGlucHV0RHJvcGRvd25TdmdSb3V0ZXMgPSBJbnB1dERyb3Bkb3duU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0gPSBEcm9wZG93blRlbXBsYXRlVHlwZUVudW07XG5cbiAgICAvLyBEZXN0cm95XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKSBwdWJsaWMgc3VwZXJDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuXG4gICAgcHVibGljIGxhc3RWYWxpZE9wdGlvbiE6IElPcHRpb25Nb2RlbDtcbiAgICBwdWJsaWMgZmlyc3RXcml0ZVZhbHVlOiBhbnk7XG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkgdGhpcy5maXJzdFdyaXRlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWVUb0Zvcm1Db250cm9sVGltZXIhOiBOb2RlSlMuVGltZW91dDtcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZVRvRm9ybUNvbnRyb2wodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbFRpbWVyKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaW5kSW5PcHRpb25zID0gdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXhcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0TWFpbkdyb3VwKClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG5cbiAgICAgICAgICAgIGxldCBmaW5kT3B0aW9uID0gZmluZEluT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblt0aGlzLm9wdGlvblZhbHVlIGFzIGtleW9mIElPcHRpb25Nb2RlbF0gPT09IHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBsZXQgb3B0aW9uTm90Rm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghZmluZE9wdGlvbiAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGZpbmRPcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLm9wdGlvblZhbHVlXTogdGhpcy5maXJzdFdyaXRlVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmxhYmVsXTogdGhpcy5maXJzdFdyaXRlVmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBvcHRpb25Ob3RGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiBmaW5kT3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzZXROb3RGb3VuZEVycm9yOiBvcHRpb25Ob3RGb3VuZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Tm90Rm91bmRJbnZhbGlkRmxhZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nZXRTdXBlckNvbnRyb2wpXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2wgYXMgQWJzdHJhY3RDb250cm9sV2l0aE5vdEZvdW5kVHlwZVxuICAgICAgICAgICAgKS5ub3RGb3VuZEludmFsaWQgPSB2YWx1ZTsgLy8gQXR0YWNoIGR5bmFtaWMgdmFsdWVzXG4gICAgICAgICh0aGlzLmlucHV0Rm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xXaXRoTm90Rm91bmRUeXBlKS5ub3RGb3VuZEludmFsaWQgPVxuICAgICAgICAgICAgdmFsdWU7IC8vIEF0dGFjaCBkeW5hbWljIHZhbHVlc1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gTXVsdGlzZWxlY3RcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdExhYmVsID0gdGhpcy5pbnB1dENvbmZpZy5sYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KHNlYXJjaFRleHQgfHwgJycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCA0NTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2Nyb2xsRHJvcGRvd24oZXZlbnQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgPT09IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbk51bWJlciArPSAxO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25FdmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbk51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtKG9wdGlvbjogSU9wdGlvbk1vZGVsLCBncm91cD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgb3B0aW9uPy5bdGhpcy5sYWJlbF0udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkZCBuZXcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgaWQ6IDc2NTUsXG4gICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgY2FuT3Blbk1vZGFsOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHsgb3B0aW9uIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogSU9wdGlvbk1vZGVsOyBncm91cDogYW55IH0pIHtcbiAgICAgICAgdGhpcy5vbkFjdGl2ZUl0ZW0oZXZlbnQub3B0aW9uLCBldmVudC5ncm91cCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSAtMTtcblxuICAgICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSgnJyk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJEcm9wZG93bkxhYmVsKCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ29sb3IgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNvbG9yLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tbWFuZEV2ZW50KGV2ZW50OiBDb21tYW5kc0V2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdFZGl0IElucHV0Jykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdDb2xvcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdUb2dnbGUgRHJvcGRvd24nKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NvbmZpcm0nICYmIGV2ZW50Lm1vZGUgPT09ICduZXcnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0l0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ1BsYWNlaG9sZGVyIEljb24gRXZlbnQnKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVySWNvbkV2ZW50LmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NhbmNlbCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGROZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlSW50KHV1aWR2NCgpKSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmNvbW1hbmRzIS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1Zpc2libGVDb21tYW5kcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7IGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sIGFjdGlvbjogJ25ldycgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1RvdWNoZWRJbnB1dCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBjb2xvcklkOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmlkXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29sb3JJZCxcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5uYW1lXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29sb3IsXG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5jb2RlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29kZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE5ld0NvbmZpZygpIHtcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICBjb21tYW5kczoge1xuICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnY29uZmlybS1jYW5jZWwnLFxuICAgICAgICAgICAgICAgIGZpcnN0Q29tbWFuZDoge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzMwNzRkMycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25maXJtJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnNwZWNDb25maXJtU3ZnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2Vjb25kQ29tbWFuZDoge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMmYyZjJmJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgIHN2ZzogSW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuaXNJbkFkZE1vZGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5jb3JyZWN0SW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaWRlbnRpdHkoaW5kZXg6IG51bWJlciwgaXRlbTogSU9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBJT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbi5vcGVuKSB7XG4gICAgICAgICAgICBvcHRpb24ub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAoaXRlbS5vcGVuID0gZmFsc2UpKTtcblxuICAgICAgICBvcHRpb24ub3BlbiA9ICFvcHRpb24ub3BlbjtcblxuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR3JvdXBFdmVudC5lbWl0KG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgICAgIC8vIGxhYmVsIGRyb3Bkb3duXG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25MYWJlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm9ybWFsIGRyb3Bkb3duXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xlYXJTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVIaWRkZW5Ecm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3BEb3duSXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuZHJvcGRvd25WYWx1ZSB8fCAnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaXNEcm9wRG93bklzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dIaWRlRHJvcGRvd24oYWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgIT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0YWlscyBwYWdlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmN1c3RvbUNsYXNzPy5pbmNsdWRlcygnZGV0YWlscy1wYWdlcycpICYmXG4gICAgICAgICAgICAhYWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh0aGlzLl9hY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYWluR3JvdXAoKSB7XG4gICAgICAgIGxldCBtYWluR3JvdXA6IElPcHRpb25Nb2RlbFtdID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMubWFwKChncm91cHMpID0+IHtcbiAgICAgICAgICAgIG1haW5Hcm91cC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmdyb3Vwc1tcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXggYXMga2V5b2YgSU9wdGlvbk1vZGVsXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1haW5Hcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcERvd25LZXlOYXZpZ2F0aW9uKHtcbiAgICAgICAga2V5Q29kZSxcbiAgICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICAgICAgZGF0YTogYW55O1xuICAgIH0pIHtcbiAgICAgICAgLy8gTmF2aWdhdGUgZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25OYXZpZ2F0aW9uKDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5hdmlnYXRlIHVwXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW07XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWFpbkdyb3VwID0gdGhpcy5nZXRNYWluR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSBtYWluR3JvdXBbdGhpcy5pbnB1dEhvdmVyZWRJdGVtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5vcHRpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBbdGhpcy5sYWJlbF06ICcnIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbT8uW3RoaXMubGFiZWxdLnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICdhZGQgbmV3J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICAgICAgY2FuT3Blbk1vZGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoeyBvcHRpb246IHNlbGVjdGVkSXRlbSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA5KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3ZlclJlZi5pc09wZW4oKSkgdGhpcy5wb3BvdmVyUmVmPy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RHJvcGRvd25WYWx1ZSh7XG4gICAgICAgIG9wdGlvbixcbiAgICAgICAgb3B0aW9uVmFsdWUsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBzZXROb3RGb3VuZEVycm9yLFxuICAgIH06IFNlbGVjdERyb3Bkb3duVmFsdWVUeXBlKSB7XG4gICAgICAgIHRoaXMuc2V0Tm90Rm91bmRJbnZhbGlkRmxhZyhzZXROb3RGb3VuZEVycm9yIHx8IGZhbHNlKTtcbiAgICAgICAgdGhpcy5sYXN0VmFsaWRPcHRpb24gPSBvcHRpb247XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQob3B0aW9uKTtcbiAgICAgICAgY29uc3Qgb3B0VmFsdWUgPSBvcHRpb25WYWx1ZSA/IG9wdGlvblZhbHVlIDogdGhpcy5vcHRpb25WYWx1ZTtcbiAgICAgICAgY29uc3QgbGJlbCA9IGxhYmVsID8gbGFiZWwgOiB0aGlzLmxhYmVsO1xuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPSBvcHRWYWx1ZVxuICAgICAgICAgICAgPyBvcHRpb25bb3B0VmFsdWUgYXMga2V5b2YgSU9wdGlvbk1vZGVsXVxuICAgICAgICAgICAgOiBvcHRpb247XG5cbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IG9wdGlvbltsYmVsIGFzIGtleW9mIElPcHRpb25Nb2RlbF0gfHwgY29udHJvbFZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBvcHRpb247XG4gICAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGNvbnRyb2xWYWx1ZSwgaW5wdXRWYWx1ZSk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcblxuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBNdWx0aXNlbGVjdCBEcm9wZG93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIG9uTXVsdGlzZWxlY3RTZWxlY3Qob3B0aW9uOiBJT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cyA9IGZhbHNlO1xuICAgICAgICAvL3RoaXMuaW5wdXRDb25maWcubGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3RJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBvcHRpb24uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KHRoaXMubXVsdGlzZWxlY3RJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLl9vcHRpb25zXTtcblxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSB0aGlzLl9vcHRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gdGhpcy5tdWx0aXNlbGVjdEl0ZW1zW2luZGV4XS5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5zb3J0KFxuICAgICAgICAgICAgKHgsIHkpID0+IE51bWJlcih5LmFjdGl2ZSkgLSBOdW1iZXIoeC5hY3RpdmUpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSB0aGlzLl9vcHRpb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgLnNsaWNlKC0xKVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KFxuICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZUFsbE11bHRpU2VsZWN0SXRlbXMoY3VycmVudExhYmVsPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQobnVsbCk7XG5cbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlTXVsdGlzZWxlY3REcm9wZG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSAhdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cztcblxuICAgICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBFbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGRyb3Bkb3duVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICAgIHB1YmxpYyBzZXRDb250cm9sVmFsdWUodmFsdWU/OiBzdHJpbmcsIGRyb3Bkb3duSW5wdXRWYWx1ZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTsgLy8gTm90aWZ5IEFuZ3VsYXIgZm9ybSBhYm91dCB0aGUgY2hhbmdlXG4gICAgICAgIGlmICh2YWx1ZSkgdGhpcy5vblRvdWNoZWQoKTsgLy8gTWFyayBhcyB0b3VjaGVkXG4gICAgICAgIHRoaXMuZHJvcGRvd25WYWx1ZSA9IGRyb3Bkb3duSW5wdXRWYWx1ZSB8fCB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnBhdGNoVmFsdWUoZHJvcGRvd25JbnB1dFZhbHVlIHx8IHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZSB0aHJvdWdoIGRyb3Bkb3duIHdpdGgga2V5Ym9hcmQgYXJyb3dzXG4gICAgICovXG4gICAgcHJpdmF0ZSBkcm9wZG93bk5hdmlnYXRpb24oc3RlcDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5leHRTdGVwID0gdGhpcy5pbnB1dEhvdmVyZWRJdGVtICsgc3RlcDtcblxuICAgICAgICBpZiAobmV4dFN0ZXAgPiB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRyb3Bkb3duT3B0aW9uLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSAwO1xuICAgICAgICBlbHNlIGlmIChuZXh0U3RlcCA8IDApXG4gICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPVxuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuZHJvcGRvd25PcHRpb24ubGVuZ3RoIC0gMTtcbiAgICAgICAgZWxzZSB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSBuZXh0U3RlcDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImFwcGxpY2F0aW9uLWRyb3Bkb3duXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgICAgaW5wdXRDb25maWdcbiAgICAgICAgICAgIHwgaW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q2xhc3NcbiAgICAgICAgICAgICAgICA6IG11bHRpc2VsZWN0SXRlbXNcbiAgICAgICAgICAgICAgICA6IGlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzXG4gICAgXCJcbj5cbiAgICBAaWYgKG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIDxwIGNsYXNzPVwibXVsdGlzZWxlY3QtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0TGFiZWwgfX1cbiAgICAgICAgPC9wPlxuICAgIH1cblxuICAgIEBpZiAoaW5wdXRDb25maWcubXVsdGlTZWxlY3REcm9wZG93bkFjdGl2ZSkge1xuICAgICAgICA8IS0tIE11bHRpc2VsZWN0IGFycm93IC0tPlxuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwibXVsdGlzZWxlY3QtYXJyb3dcIlxuICAgICAgICAgICAgW3NyY109XCJpbnB1dERyb3Bkb3duU3ZnUm91dGVzLmlucHV0RHJvcGRvd25BcnJvd1N2Z1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTXVsdGlzZWxlY3REcm9wZG93bigpXCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgfVxuXG4gICAgQGlmIChcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQgJiZcbiAgICAgICAgIWdldFN1cGVyQ29udHJvbD8uZGlzYWJsZWRcbiAgICApIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBjbGVhciBhbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgaXRlbXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0IG9mIG11bHRpc2VsZWN0SXRlbXM7XG4gICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSAtIFRvdGFsIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpU2VsZWN0SXRlbVJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQgJiYgIWdldFN1cGVyQ29udHJvbD8uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gc2VhcmNoIC0tPlxuXG4gICAgQGlmICghaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgQGlmICghc2VhcmNoSW5wdXRUZXh0LnZhbHVlKSB7XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJpc0Ryb3BEb3duSXNPcGVuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubGVmdEljb25dPVwiaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogX29wdGlvbnMgfCBjYURyb3Bkb3duQ291bnQ6IF90ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2xvYWQtYnJva2VyLWNvbnRhY3QnLFxuICAgICAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgICAgICdtZXJnZS1kcm9wZG93bi1ib2R5LXdpdGgtaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi12YWx1ZS1yaWdodC1zaWRlJzogaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl92YWx1ZSBkcm9wZG93bi1vcHRpb25zICB7e1xuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3NcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoX3RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbiBkcm9wZG93bi1kb3VibGUtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW0hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSX0NPTlRBQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkLWJyb2tlci1jb250YWN0LWdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lhbCBEcm9wZG93biBTZWxlY3RlZCBTVkcgd2l0aCBvciBXaXRob3V0IFRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dCAmJiBhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnB1dERyb3Bkb3duR2V0SWNvbnM6IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1zZWxlY3RlZC1pbWFnZSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNldC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW0/LmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcjZmZmZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py53aXRoVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyb3Bkb3duVmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGNhLWlucHV0LXRlc3RcbiAgICAgICAgICAgICN0Mj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJjYS1pbnB1dC1kcm9wZG93blwiXG4gICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICBbcGxhY2VtZW50XT1cIlxuICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSdcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2JvdHRvbS1sZWZ0JywgJ3RvcC1sZWZ0J11cbiAgICAgICAgICAgICAgICAgICAgOiBbJ2JvdHRvbS1sZWZ0J11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sIHwgZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3BhcmVudENvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgIFtpbmNvcnJlY3RWYWx1ZV09XCJpc0luY29ycmVjdFZhbHVlXCJcbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbc2VsZWN0ZWREcm9wZG93bkxhYmVsQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIl90ZW1wbGF0ZVwiXG4gICAgICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXJJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbW1hbmRFdmVudCk9XCJjb21tYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2hvd0hpZGVEcm9wZG93bik9XCJzaG93SGlkZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGRyb3BEb3duS2V5TmF2aWdhdGlvbik9XCJkcm9wRG93bktleU5hdmlnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChoaWRkZW4pPVwiaGFuZGxlSGlkZGVuRHJvcGRvd24oKVwiXG4gICAgICAgICAgICAoc2hvd24pPVwiaGFuZGxlT3BlbkRyb3Bkb3duKClcIlxuICAgICAgICA+PC9jYS1pbnB1dC10ZXN0PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gaWNvbiBpbnN0ZWFkIG9mIGlucHV0IC0tPlxuICAgIEBpZiAoaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaW5wdXQtaWNvbi1jb250YWluZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHZhbGlkOlxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5pc1ZhbGlkSWNvbiAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuaW5wdXRJY29uPy5pbmNsdWRlcygnY3VzdG9tJyksXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBwb3BvdmVyUmVmPy5pc09wZW4oKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJjYUlucHV0RHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJjYS1pbnB1dC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIlsnYm90dG9tLWxlZnQnXVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1pY29uXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICBpbnB1dERyb3Bkb3duU3ZnUm91dGVzLnJlcGFpclBtU3ZnUm91dGUgK1xuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5pbnB1dEljb25cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjYUlucHV0RHJvcGRvd25Qb3BvdmVyPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERyb3Bkb3duIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIEBpZiAoaW5wdXRDb25maWc/Lm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0ICYmIF9vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zLWRpdmlkZXIge3tcbiAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3NcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNwYXRjaF9kcm9wZG93bl09XCJfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIChpbnB1dENvbmZpZz8ubmFtZSAhPSAnQWRkcmVzcycgJiZcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lICE9ICdSb3V0aW5nQWRkcmVzcycgJiZcbiAgICAgICAgICAgICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkICYmXG4gICAgICAgICAgICAhZ2V0U3VwZXJDb250cm9sPy5kaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgIWdldFN1cGVyQ29udHJvbD8uZGlzYWJsZWQgJiZcbiAgICAgICAgICAgIF9vcHRpb25zPy5sZW5ndGgpXG4gICAgKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQHN3aXRjaCAoX3RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1ZHIFRlbXBsYXRlIChSZW5kZXIgc3ZncyBvciB0ZXh0IGlmIHN2Z3MgZG9lc24ndCBleGlzdCApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25XaXRoSW1hZ2VdPVwiaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duU3ZnVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN2ZyBUZXh0IFRlbXBsYXRlIChkaXNwbGF5IGZsZXgpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN2Z1RleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGlzcGF0Y2ggZHJvcGRvd24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BhdGNoVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldGFpbHMgdGVtcGxhdGUgKHRydWNrLCB0cmFpbGVyLi4uIGRldGFpbHMtcGFnZXMpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRFVEFJTFNfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJfc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR3JvdXBpbmcgdGVtcGxhdGUgKGNhbiBzZWUgb24gY29udGFjdCBtb2RhbCkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uR1JPVVBTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXNlbGVjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtXT1cImxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbk11bHRpc2VsZWN0U2VsZWN0KT1cIm9uTXVsdGlzZWxlY3RTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxzIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTEFCRUxTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsTW9kZV09XCJsYWJlbE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkFkZE5ld109XCJfY2FuQWRkTmV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERpc3BhdGNoIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRElTUEFUQ0gpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIERpc3BhdGNoZXIgVGVtcGxhdGUgKHVzZXIgYXZhdGFyICsgdXNlciBuYW1lKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQ29tYmluZSBUcnVjay1UcmFpbGVyLURyaXZlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQ+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBCcm9rZXIgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIENvbnRhY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgU2hpcHBlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVtcGxhdGUgVGV4dCAtIENvdW50ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5URVhUX0NPVU5URVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1ZWwgRnJhbmNoaXNlIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRlVFTF9GUkFOQ0hJU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlTmVzdGVkTGlzdCk9XCJ0b2dnbGVOZXN0ZWRMaXN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbUdyb3VwKT1cIm9uQWN0aXZlSXRlbUdyb3VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZnVlbC1mcmFuY2hpc2U+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgVGV4dCBUZW1wbGF0ZSAtLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRE9VQkxFX1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRyaXBsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRSSVBMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFBBWVJPTEwgVFJVQ0tTIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlZmF1bHQgVGVtcGxhdGUgLSBSZW5kZXIgT25seSBUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
712
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXN0L2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGVzdC9jYS1pbnB1dC1kcm9wZG93bi10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQzNJLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ3ZKLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLGdIQUFnSCxDQUFDO0FBQ2pMLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzFILE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3pJLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzFILE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQzNJLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHNHQUFzRyxDQUFDO0FBQ2xLLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHNHQUFzRyxDQUFDO0FBQ2xLLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBGQUEwRixDQUFDO0FBQ2pKLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBGQUEwRixDQUFDO0FBQ2pKLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLDBJQUEwSSxDQUFDO0FBQ3pNLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRIQUE0SCxDQUFDO0FBQ3BMLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG9KQUFvSixDQUFDO0FBQ25OLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHdJQUF3SSxDQUFDO0FBRXBNLFFBQVE7QUFDUixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUNILGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsaUNBQWlDLEdBQ3BDLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBFLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxhQUFhO0FBQ2IsT0FBTyxFQUVILFdBQVcsRUFDWCxXQUFXLEVBRVgsbUJBQW1CLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFZeEIsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRGLFFBQVE7QUFDUixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdkUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QyxVQUFVO0FBQ1YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFcEYsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG9KQUFvSixDQUFDOzs7Ozs7QUF5RG5OLE1BQU0sT0FBTyw0QkFBNEI7SUEwQnJDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUlELElBQWEsU0FBUyxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQyxDQUFDLDBCQUEwQjtJQUU1QixJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFNRCxJQUFhLElBQUksQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUlELElBQWEsVUFBVSxDQUFDLEtBQTBCO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFPRCxJQUFhLE9BQU8sQ0FBQyxNQUFzQjtRQUN2QyxJQUFJLE1BQU07WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDTCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLElBQWEsdUJBQXVCLENBQUMsTUFBc0I7UUFDdkQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNWLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2RCxPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUF1RUQsWUFDbUIsWUFBdUIsRUFDOUIsS0FBd0IsRUFDeEIsUUFBbUI7UUFGWixpQkFBWSxHQUFaLFlBQVksQ0FBVztRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBL0l4QixxQkFBZ0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFJekMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQXlDNUIscUVBQXFFO1FBQzlELGFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBNEIzQixpQkFBWSxHQUNsQixJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNsQyxrQkFBYSxHQUNuQixJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUNwQyxzQkFBaUIsR0FDdkIsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDbEMsc0JBQWlCLEdBQ3ZCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckIsa0JBQWEsR0FDbkIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0QixhQUFRLEdBR2IsSUFBSSxZQUFZLEVBQWlELENBQUM7UUFDN0QsbUJBQWMsR0FDcEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0Qix5QkFBb0IsR0FDMUIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNWLG9CQUFlLEdBQ2pDLElBQUksWUFBWSxFQUFVLENBQUM7UUFDUixxQkFBZ0IsR0FDbkMsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDVixvQkFBZSxHQUN0QyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRUoscUJBQWdCLEdBQ3hDLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0IsU0FBUztRQUNGLG9CQUFlLEdBQUcsSUFBSSxpQkFBaUIsQ0FDMUMsSUFBSSxFQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FDeEIsQ0FBQztRQUVGLGtCQUFrQjtRQUNYLG9CQUFlLEdBQW1CLEVBQUUsQ0FBQztRQUU1QyxhQUFhO1FBQ04scUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBRXBDLCtCQUErQjtRQUN4QixxQkFBZ0IsR0FBbUIsRUFBRSxDQUFDO1FBQ3RDLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUloRCxXQUFXO1FBQ0osZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFcEMsb0NBQW9DO1FBQzVCLHFCQUFnQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBVS9CLDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBQ2hELDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBRTNELFVBQVU7UUFDRixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWNoQyxxQkFBZ0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFpRHRELGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFnZTVCLDZFQUE2RTtRQUV0RSxrQkFBYSxHQUF1QixFQUFFLENBQUM7UUExaEIxQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQU1ELFVBQVUsQ0FBQyxLQUFzQjtRQUM3QixJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUdNLHVCQUF1QixDQUFDLEtBQXNCO1FBQ2pELFlBQVksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNoRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQjtnQkFDckQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRXBCLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQy9CLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDUCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQWlDLENBQUMsS0FBSyxLQUFLLENBQy9ELENBQUM7WUFFRixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxHQUFHO29CQUNULENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUN4QyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZTtpQkFDckMsQ0FBQztnQkFDRixjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzFCLENBQUM7WUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbEIsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLGdCQUFnQixFQUFFLGNBQWM7aUJBQ25DLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU0sc0JBQXNCLENBQUMsS0FBYztRQUN4QyxJQUFJLElBQUksQ0FBQyxlQUFlO1lBRWhCLElBQUksQ0FBQyxlQUNSLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLHdCQUF3QjtRQUN0RCxJQUFJLENBQUMsZ0JBQWdELENBQUMsZUFBZTtZQUNsRSxLQUFLLENBQUMsQ0FBQyx3QkFBd0I7SUFDdkMsQ0FBQztJQUdNLFFBQVEsQ0FBQyxDQUFNLElBQVMsQ0FBQztJQUV6QixnQkFBZ0IsQ0FBQyxFQUFPO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRO1FBQ0osY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVk7YUFDN0IsSUFBSSxDQUNELG9CQUFvQixFQUFFLEVBQ3RCLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRTlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUF5QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxLQUFvQixDQUFDO1FBRXBDLElBQUksTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1lBRTNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQW9CLEVBQUUsS0FBVztRQUNqRCxJQUNJLElBQUksQ0FBQyxZQUFZO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxTQUFTLEVBQzlELENBQUM7WUFDQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBRXpCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNuQixFQUFFLEVBQUUsSUFBSTtnQkFDUixJQUFJLEVBQUUsa0JBQWtCLENBQUMsT0FBTztnQkFDaEMsWUFBWSxFQUFFLElBQUk7YUFDckIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBMkM7UUFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssd0JBQXdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUN0QixNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZ0IsQ0FBQyxLQUFLO1NBQ3BDLENBQUM7UUFDRiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRW5DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFOUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUs7Z0JBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtvQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTztnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJO29CQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLO2dCQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7b0JBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUk7YUFDL0IsQ0FBQztZQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUs7YUFDcEMsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixNQUFNLEVBQUUsTUFBTTtTQUNqQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLFFBQVEsRUFBRTtnQkFDTixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixZQUFZLEVBQUU7b0JBQ1YsS0FBSyxFQUFFO3dCQUNILElBQUksRUFBRSxTQUFTO3dCQUNmLGVBQWUsRUFBRSxTQUFTO3FCQUM3QjtvQkFDRCxJQUFJLEVBQUUsU0FBUztvQkFDZixHQUFHLEVBQUUsc0JBQXNCLENBQUMsY0FBYztpQkFDN0M7Z0JBQ0QsYUFBYSxFQUFFO29CQUNYLEtBQUssRUFBRTt3QkFDSCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxlQUFlLEVBQUUsU0FBUztxQkFDN0I7b0JBQ0QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsR0FBRyxFQUFFLHNCQUFzQixDQUFDLFNBQVM7aUJBQ3hDO2FBQ0o7WUFDRCxXQUFXLEVBQUUsRUFBRTtTQUNsQixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWEsRUFBRSxJQUFrQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQW9CO1FBQ3hDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFcEQsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFFM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEtBQWM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDekIsaUJBQWlCO1lBRWpCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUNELGtCQUFrQjtpQkFDYixDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBZTtRQUNuQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGVBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELGdCQUFnQjtRQUNoQixJQUNJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkQsQ0FBQyxNQUFNLEVBQ1QsQ0FBQztZQUNDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVk7UUFDZixJQUFJLFNBQVMsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekIsU0FBUyxDQUFDLElBQUksQ0FDVixHQUFHLE1BQU0sQ0FDTCxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUF3QyxDQUM1RCxDQUNKLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxFQUN6QixPQUFPLEVBQ1AsSUFBSSxHQUlQO1FBQ0csZ0JBQWdCO1FBQ2hCLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsY0FBYztRQUNkLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakIsSUFBSSxZQUFZLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3RDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNwRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osWUFBWTtvQkFDUixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO3dCQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUN4Qjt3QkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBRUQsSUFDSSxJQUFJLENBQUMsWUFBWTtnQkFDakIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRTtvQkFDaEQsU0FBUyxFQUNmLENBQUM7Z0JBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ25CLEVBQUUsRUFBRSxJQUFJO29CQUNSLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO29CQUNoQyxZQUFZLEVBQUUsSUFBSTtpQkFDckIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUNwQixNQUFNLEVBQ04sV0FBVyxFQUNYLEtBQUssRUFDTCxnQkFBZ0IsR0FDTTtRQUN0QixJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxZQUFZLEdBQUcsUUFBUTtZQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQThCLENBQUM7WUFDeEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUViLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUEwQixDQUFDLElBQUksWUFBWSxDQUFDO1FBRXRFLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELDhGQUE4RjtJQUN2RixtQkFBbUIsQ0FBQyxNQUFvQjtRQUMzQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLHFDQUFxQztRQUVyQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUQsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztvQkFDSCxHQUFHLElBQUk7b0JBQ1AsTUFBTSxFQUFFLElBQUk7aUJBQ2YsQ0FBQztZQUNOLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNmLE9BQU87d0JBQ0gsR0FBRyxJQUFJO3dCQUNQLE1BQU0sRUFBRSxLQUFLO3FCQUNoQixDQUFDO2dCQUNOLENBQUM7cUJBQU0sQ0FBQztvQkFDSixPQUFPO3dCQUNILEdBQUcsSUFBSTt3QkFDUCxNQUFNLEVBQUUsSUFBSTtxQkFDZixDQUFDO2dCQUNOLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDaEQsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDekMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzdCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsQ0FBQztJQUNMLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM5QyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QyxPQUFPO29CQUNILEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztvQkFDL0IsTUFBTSxFQUFFLEtBQUs7aUJBQ2hCLENBQUM7WUFDTixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDaEQsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFFBQVE7aUJBQ3pDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDN0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxZQUFxQjtRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxPQUFPO2dCQUNILEdBQUcsSUFBSTtnQkFDUCxNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRU0seUJBQXlCO1FBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUU3RCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFJTSxlQUFlLENBQUMsS0FBYyxFQUFFLGtCQUEyQjtRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsdUNBQXVDO1FBQzdELElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixJQUFJLEtBQUssQ0FBQztRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLElBQVk7UUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUU5QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7YUFDekIsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsZ0JBQWdCO2dCQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7O1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7K0dBeHRCUSw0QkFBNEI7bUdBQTVCLDRCQUE0Qix3OUJBNUMxQixDQUFDLGVBQWUsQ0FBQywrVENuSGhDLDh5cUNBazBCQTtnQkQ1c0JRLFNBQVM7Z0JBQ1QsWUFBWSw0SEFDWixXQUFXLHNJQUNYLGdCQUFnQixzWEFDaEIsbUJBQW1CLGlOQUNuQixTQUFTLHNXQUNULG9CQUFvQjtnQkFDcEIsWUFBWTtnQkFDWix1Q0FBdUMsMk1BQ3ZDLCtDQUErQyxvTkFDL0MsOEJBQThCLGtMQUM5QixtQ0FBbUMsNk1BQ25DLDhCQUE4QiwyTkFDOUIsa0NBQWtDLHVMQUNsQyx5Q0FBeUMsK0xBQ3pDLHNDQUFzQywwTUFDdEMseUNBQXlDLCtMQUN6Qyx5Q0FBeUMsd0xBQ3pDLG1DQUFtQyx3TEFDbkMsMENBQTBDLGdNQUMxQywwQ0FBMEMsZ01BQzFDLHVDQUF1QywyTUFDdkMscUNBQXFDLG1PQUNyQyxnQ0FBZ0Msb0xBQ2hDLHVDQUF1QyxvTUFDdkMscUNBQXFDLDBMQUNyQyxtQ0FBbUMsNk1BQ25DLGtCQUFrQix3V0FDbEIsNkNBQTZDLDZKQUM3QyxzQ0FBc0MsNElBQ3RDLDZDQUE2QywySkFDN0MsMENBQTBDLGtNQUMxQyw2Q0FBNkM7Z0JBQzdDLFFBQVE7Z0JBQ1IsZUFBZSwrQ0FDZixpQkFBaUIsbURBQ2pCLGlDQUFpQyxpRUFDakMsbUJBQW1CLHlEQUNuQix5QkFBeUIsZ0RBeENqQixDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUM7OzRGQTJDdEQsNEJBQTRCO2tCQWxEeEMsU0FBUzsrQkFDSSx3QkFBd0IsY0FHdEIsSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsZUFBZSxDQUFDLGNBQ2hCLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxXQUN0RDt3QkFDTCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osdUNBQXVDO3dCQUN2QywrQ0FBK0M7d0JBQy9DLDhCQUE4Qjt3QkFDOUIsbUNBQW1DO3dCQUNuQyw4QkFBOEI7d0JBQzlCLGtDQUFrQzt3QkFDbEMseUNBQXlDO3dCQUN6QyxzQ0FBc0M7d0JBQ3RDLHlDQUF5Qzt3QkFDekMseUNBQXlDO3dCQUN6QyxtQ0FBbUM7d0JBQ25DLDBDQUEwQzt3QkFDMUMsMENBQTBDO3dCQUMxQyx1Q0FBdUM7d0JBQ3ZDLHFDQUFxQzt3QkFDckMsZ0NBQWdDO3dCQUNoQyx1Q0FBdUM7d0JBQ3ZDLHFDQUFxQzt3QkFDckMsbUNBQW1DO3dCQUNuQyxrQkFBa0I7d0JBQ2xCLDZDQUE2Qzt3QkFDN0Msc0NBQXNDO3dCQUN0Qyw2Q0FBNkM7d0JBQzdDLDBDQUEwQzt3QkFDMUMsNkNBQTZDO3dCQUM3QyxRQUFRO3dCQUNSLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixpQ0FBaUM7d0JBQ2pDLG1CQUFtQjt3QkFDbkIseUJBQXlCO3FCQUM1Qjs7MEJBa0tJLElBQUk7aUdBeEpXLFFBQVE7c0JBQTNCLFNBQVM7dUJBQUMsT0FBTztnQkFDTSxVQUFVO3NCQUFqQyxTQUFTO3VCQUFDLElBQUk7Z0JBRWYsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJM0MsS0FBSztzQkFBYixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBU08sUUFBUTtzQkFBcEIsS0FBSztnQkFJRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFVTyxVQUFVO3NCQUF0QixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQVFPLHVCQUF1QjtzQkFBbkMsS0FBSztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFFRyxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFFTSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHRyxnQkFBZ0I7c0JBQTNDLE1BQU07dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIHNraXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG4vLyBib290c3RyYXBcbmltcG9ydCB7XG4gICAgTmdiUG9wb3ZlcixcbiAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBhbmltYXRpb25cbmltcG9ydCB7IGlucHV0RHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuXG4vLyB0eXBlc1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2xXaXRoTm90Rm91bmRUeXBlLFxuICAgIEZvcm1Db250cm9sV2l0aE5vdEZvdW5kVHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3REcm9wZG93blZhbHVlVHlwZSB9IGZyb20gJy4vdHlwZXMvc2VsZWN0LWRyb3Bkb3duLXZhbHVlLnR5cGUnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0L2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0uY29tcG9uZW50JztcblxuLy8gY29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0LXRlc3QvY29uZmlnJztcblxuLy8gaW50ZXJmYWNlc1xuaW1wb3J0IHsgSU9wdGlvbk1vZGVsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2lucHV0LWRyb3Bkb3duLW9wdGlvbi5pbnRlcmZhY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYS1pbnB1dC1kcm9wZG93bi10ZXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtGb3JtQ29udHJvbFBpcGVdLFxuICAgIGFuaW1hdGlvbnM6IFtpbnB1dERyb3Bkb3duQW5pbWF0aW9uKCdzaG93SGlkZURyb3Bkb3duT3B0aW9ucycpXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIE1vZHVsZVxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICAvLyBDb21wb25lbnRcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVGV4dENvdW50ZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkZ1ZWxGcmFuY2hpc2VDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRpc3BhdGNoQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZXRhaWxzVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBJbnB1dFRlc3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVzVHRkQ29tcG9uZW50SXRlbSxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudEl0ZW0sXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJJdGVtQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIC8vIFBpcGVzXG4gICAgICAgIEZvcm1Db250cm9sUGlwZSxcbiAgICAgICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzUGlwZSxcbiAgICAgICAgRHJvcGRvd25PcHRpb25zUGlwZSxcbiAgICAgICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RHJvcGRvd25UZXN0Q29tcG9uZW50XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBPbkluaXQsXG4gICAgICAgIEFmdGVyVmlld0luaXQsXG4gICAgICAgIE9uRGVzdHJveSxcbiAgICAgICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgICAgIEFmdGVyVmlld0luaXRcbntcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0UmVmITogSW5wdXRUZXN0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3QyJykgcHVibGljIHBvcG92ZXJSZWYhOiBOZ2JQb3BvdmVyO1xuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29tcG9uZW50UmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZHJvcGRvd25Db21wb25lbnRSZWY6IGFueTtcblxuICAgIC8vIExhYmVsIGlucHV0IC0gdmFsdWUgdGhhdCB3aWxsIGJlIHNob3dlZCBpbnNpZGUgaW5wdXRcbiAgICBASW5wdXQoKSBsYWJlbCE6IGtleW9mIElPcHRpb25Nb2RlbDtcblxuICAgIC8vIG9wdGlvblZhbHVlIGlucHV0IC0ga2V5IHZhbHVlIGZyb20gb2JqZWN0IC0gRW1pdCB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB3aG9sZSBvYmplY3RcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZSE6IHN0cmluZztcblxuICAgIHB1YmxpYyBpbnB1dEhvdmVyZWRJdGVtOiBudW1iZXIgPSAtMTtcbiAgICBwdWJsaWMgaXNEcm9wRG93bklzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgYm9keSByZW5kZXJpbmdcbiAgICBwdWJsaWMgX3RlbXBsYXRlITogc3RyaW5nO1xuICAgIF9jYW5BZGROZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNldCB0ZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbXVsdGlzZWxlY3RUZW1wbGF0ZSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBpbnB1dENvbmZpZyE6IElDYUlucHV0O1xuICAgIEBJbnB1dCgpIHNldCBjYW5BZGROZXcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY2FuQWRkTmV3ID0gdmFsdWU7XG4gICAgfSAvLyBBREQgTkVXIGl0ZW0gaW4gb3B0aW9uc1xuXG4gICAgcHVibGljIGdldCBjYW5BZGROZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5BZGROZXc7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY2FuT3Blbk1vZGFsITogYm9vbGVhbjsgLy8gb3BlbiBtb2RhbCB3aXRoIEFERCBORVcgYnV0dG9uXG5cbiAgICAvLyBzb3J0LXRlbXBsYXRlIGZvciBkaWZmZXJlbnQgb3B0aW9uc1xuICAgIHB1YmxpYyBfc29ydCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXQgc29ydCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NvcnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNvcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0O1xuICAgIH1cblxuICAgIC8vIGN1cnJlbnRseSBhY3RpdmUgaXRlbVxuICAgIHB1YmxpYyBfYWN0aXZlSXRlbSE6IElPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgQElucHV0KCkgc2V0IGFjdGl2ZUl0ZW0odmFsdWU6IElPcHRpb25Nb2RlbCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogSU9wdGlvbk1vZGVsIHwgbnVsbDsgLy8gY3VycmVudGx5IGFjdGl2ZSBjb2xvciBpbiBkcm9wZG93blxuICAgIEBJbnB1dCgpIGxhYmVsTW9kZSE6ICdMYWJlbCcgfCAnQ29sb3InO1xuXG4gICAgLy8gd2hlbiBzZW5kIFNWRywgcGxlYXNlIHByZW1tYXBlZCBvYmplY3Q6IGFkZCAnZm9sZGVyJyB8ICdzdWJmb2xkZXInXG4gICAgcHVibGljIF9vcHRpb25zOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbHVlczogSU9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuICAgICAgICBpZiAodGhpcy5maXJzdFdyaXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZVRvRm9ybUNvbnRyb2wodGhpcy5maXJzdFdyaXRlVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTXVsdGlTZWxlY3QgU2VsZWN0ZWQgSXRlbXMgRnJvbSBCYWNrZW5kXG4gICAgQElucHV0KCkgc2V0IHByZWxvYWRNdWx0aXNlbGVjdEl0ZW1zKHZhbHVlczogSU9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFsbE11bHRpU2VsZWN0SXRlbXModGhpcy5pbnB1dENvbmZpZy5sYWJlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTXVsdGlzZWxlY3RTZWxlY3QoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc0RldGFpbHNQYWdlcyE6IGJvb2xlYW47IC8vIG9ubHkgZm9yIGRldGFpbHMgcGFnZXNcbiAgICBASW5wdXQoKSBpc0luY29ycmVjdFZhbHVlITogYm9vbGVhbjsgLy8gYXBwbGljYW50IHJldmlldyBvcHRpb25cbiAgICBASW5wdXQoKSBpc0FkZHJlc3NEcm9wZG93biE6IGJvb2xlYW47IC8vIG9ubHkgZm9yIGFkZHJlc3MgZHJvcGRvd25cblxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW06IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtczogRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbFtdIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbFtdIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtQ29sb3I6IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWwgfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRMYWJlbE1vZGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRHJvcGRvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgc2F2ZUl0ZW06IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGRhdGE6IElPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IElPcHRpb25Nb2RlbCB8IG51bGw7IGFjdGlvbjogc3RyaW5nIH0+KCk7XG4gICAgQE91dHB1dCgpIGluY29ycmVjdEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHBsYWNlaG9sZGVySWNvbkV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgncGFnaW5hdGlvbicpIHBhZ2luYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCdhY3RpdmVHcm91cCcpIGFjdGl2ZUdyb3VwRXZlbnQ6IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWw+KCk7XG4gICAgQE91dHB1dCgnY2xlYXJJbnB1dEV2ZW50JykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAT3V0cHV0KCdzZWFyY2hJbnB1dEV2ZW50Jykgc2VhcmNoSW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICAvLyBldmVudHNcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXRUZXh0ID0gbmV3IEV2ZW50SW5wdXRNYW5hZ2VyPHN0cmluZz4oXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFdmVudFxuICAgICk7XG5cbiAgICAvLyBDb3B5IG9mIE9wdGlvbnNcbiAgICBwdWJsaWMgb3JpZ2luYWxPcHRpb25zOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gUGFnaW5hdGlvblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uTnVtYmVyOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gTXVsdGlzZWxlY3QgZHJvcGRvd24gb3B0aW9uc1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdEl0ZW1zOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIHB1YmxpYyBpc011bHRpU2VsZWN0SW5wdXRGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBtdWx0aVNlbGVjdExhYmVsITogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyBsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtITogSU9wdGlvbk1vZGVsIHwgbnVsbDtcblxuICAgIC8vIEFkZCBtb2RlXG4gICAgcHVibGljIGlzSW5BZGRNb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEcm9wZG93biBuYXZpZ2F0aW9uIHdpdGgga2V5Ym9hcmRcbiAgICBwcml2YXRlIGRyb3Bkb3duUG9zaXRpb246IG51bWJlciA9IC0xO1xuXG4gICAgLy8gRHJvcGRvd24gQ2xlYXJ0aW1lb3V0XG4gICAgcHVibGljIGNsZWFyVGltZW91dERyb3Bkb3duOlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IG51bWJlclxuICAgICAgICB8IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+XG4gICAgICAgIHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGhvdmVyaW5nSW5kZXghOiBudW1iZXI7XG4gICAgcHVibGljIGlucHV0RHJvcGRvd25TdmdSb3V0ZXMgPSBJbnB1dERyb3Bkb3duU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0gPSBEcm9wZG93blRlbXBsYXRlVHlwZUVudW07XG5cbiAgICAvLyBEZXN0cm95XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKSBwdWJsaWMgc3VwZXJDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuXG4gICAgcHVibGljIGxhc3RWYWxpZE9wdGlvbiE6IElPcHRpb25Nb2RlbDtcbiAgICBwdWJsaWMgZmlyc3RXcml0ZVZhbHVlOiBhbnk7XG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkgdGhpcy5maXJzdFdyaXRlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWVUb0Zvcm1Db250cm9sVGltZXIhOiBOb2RlSlMuVGltZW91dDtcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZVRvRm9ybUNvbnRyb2wodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbFRpbWVyKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaW5kSW5PcHRpb25zID0gdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXhcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0TWFpbkdyb3VwKClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG5cbiAgICAgICAgICAgIGxldCBmaW5kT3B0aW9uID0gZmluZEluT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvblt0aGlzLm9wdGlvblZhbHVlIGFzIGtleW9mIElPcHRpb25Nb2RlbF0gPT09IHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBsZXQgb3B0aW9uTm90Rm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghZmluZE9wdGlvbiAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGZpbmRPcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLm9wdGlvblZhbHVlXTogdGhpcy5maXJzdFdyaXRlVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmxhYmVsXTogdGhpcy5maXJzdFdyaXRlVmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBvcHRpb25Ob3RGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiBmaW5kT3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzZXROb3RGb3VuZEVycm9yOiBvcHRpb25Ob3RGb3VuZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Tm90Rm91bmRJbnZhbGlkRmxhZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nZXRTdXBlckNvbnRyb2wpXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2wgYXMgQWJzdHJhY3RDb250cm9sV2l0aE5vdEZvdW5kVHlwZVxuICAgICAgICAgICAgKS5ub3RGb3VuZEludmFsaWQgPSB2YWx1ZTsgLy8gQXR0YWNoIGR5bmFtaWMgdmFsdWVzXG4gICAgICAgICh0aGlzLmlucHV0Rm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xXaXRoTm90Rm91bmRUeXBlKS5ub3RGb3VuZEludmFsaWQgPVxuICAgICAgICAgICAgdmFsdWU7IC8vIEF0dGFjaCBkeW5hbWljIHZhbHVlc1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gTXVsdGlzZWxlY3RcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdExhYmVsID0gdGhpcy5pbnB1dENvbmZpZy5sYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KHNlYXJjaFRleHQgfHwgJycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCA0NTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2Nyb2xsRHJvcGRvd24oZXZlbnQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgPT09IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbk51bWJlciArPSAxO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25FdmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbk51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtKG9wdGlvbjogSU9wdGlvbk1vZGVsLCBncm91cD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgb3B0aW9uPy5bdGhpcy5sYWJlbF0udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkZCBuZXcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHsgb3B0aW9uIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogSU9wdGlvbk1vZGVsOyBncm91cDogYW55IH0pIHtcbiAgICAgICAgdGhpcy5vbkFjdGl2ZUl0ZW0oZXZlbnQub3B0aW9uLCBldmVudC5ncm91cCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSAtMTtcblxuICAgICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSgnJyk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJEcm9wZG93bkxhYmVsKCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ29sb3IgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNvbG9yLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tbWFuZEV2ZW50KGV2ZW50OiBDb21tYW5kc0V2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdFZGl0IElucHV0Jykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdDb2xvcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdUb2dnbGUgRHJvcGRvd24nKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NvbmZpcm0nICYmIGV2ZW50Lm1vZGUgPT09ICduZXcnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0l0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ1BsYWNlaG9sZGVyIEljb24gRXZlbnQnKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVySWNvbkV2ZW50LmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NhbmNlbCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGROZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlSW50KHV1aWR2NCgpKSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmNvbW1hbmRzIS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1Zpc2libGVDb21tYW5kcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7IGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sIGFjdGlvbjogJ25ldycgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1RvdWNoZWRJbnB1dCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBjb2xvcklkOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmlkXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29sb3JJZCxcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5uYW1lXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29sb3IsXG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5jb2RlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29kZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE5ld0NvbmZpZygpIHtcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICBjb21tYW5kczoge1xuICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnY29uZmlybS1jYW5jZWwnLFxuICAgICAgICAgICAgICAgIGZpcnN0Q29tbWFuZDoge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzMwNzRkMycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25maXJtJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnNwZWNDb25maXJtU3ZnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2Vjb25kQ29tbWFuZDoge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMmYyZjJmJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgIHN2ZzogSW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuaXNJbkFkZE1vZGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5jb3JyZWN0SW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaWRlbnRpdHkoaW5kZXg6IG51bWJlciwgaXRlbTogSU9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBJT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbi5vcGVuKSB7XG4gICAgICAgICAgICBvcHRpb24ub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAoaXRlbS5vcGVuID0gZmFsc2UpKTtcblxuICAgICAgICBvcHRpb24ub3BlbiA9ICFvcHRpb24ub3BlbjtcblxuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR3JvdXBFdmVudC5lbWl0KG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgICAgIC8vIGxhYmVsIGRyb3Bkb3duXG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25MYWJlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm9ybWFsIGRyb3Bkb3duXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xlYXJTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVIaWRkZW5Ecm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3BEb3duSXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuZHJvcGRvd25WYWx1ZSB8fCAnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaXNEcm9wRG93bklzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dIaWRlRHJvcGRvd24oYWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgIT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0YWlscyBwYWdlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmN1c3RvbUNsYXNzPy5pbmNsdWRlcygnZGV0YWlscy1wYWdlcycpICYmXG4gICAgICAgICAgICAhYWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh0aGlzLl9hY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYWluR3JvdXAoKSB7XG4gICAgICAgIGxldCBtYWluR3JvdXA6IElPcHRpb25Nb2RlbFtdID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMubWFwKChncm91cHMpID0+IHtcbiAgICAgICAgICAgIG1haW5Hcm91cC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmdyb3Vwc1tcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXggYXMga2V5b2YgSU9wdGlvbk1vZGVsXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1haW5Hcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcERvd25LZXlOYXZpZ2F0aW9uKHtcbiAgICAgICAga2V5Q29kZSxcbiAgICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICAgICAgZGF0YTogYW55O1xuICAgIH0pIHtcbiAgICAgICAgLy8gTmF2aWdhdGUgZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25OYXZpZ2F0aW9uKDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5hdmlnYXRlIHVwXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW07XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWFpbkdyb3VwID0gdGhpcy5nZXRNYWluR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSBtYWluR3JvdXBbdGhpcy5pbnB1dEhvdmVyZWRJdGVtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5vcHRpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBbdGhpcy5sYWJlbF06ICcnIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbT8uW3RoaXMubGFiZWxdLnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICdhZGQgbmV3J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICAgICAgY2FuT3Blbk1vZGFsOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoeyBvcHRpb246IHNlbGVjdGVkSXRlbSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA5KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3ZlclJlZi5pc09wZW4oKSkgdGhpcy5wb3BvdmVyUmVmPy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RHJvcGRvd25WYWx1ZSh7XG4gICAgICAgIG9wdGlvbixcbiAgICAgICAgb3B0aW9uVmFsdWUsXG4gICAgICAgIGxhYmVsLFxuICAgICAgICBzZXROb3RGb3VuZEVycm9yLFxuICAgIH06IFNlbGVjdERyb3Bkb3duVmFsdWVUeXBlKSB7XG4gICAgICAgIHRoaXMuc2V0Tm90Rm91bmRJbnZhbGlkRmxhZyhzZXROb3RGb3VuZEVycm9yIHx8IGZhbHNlKTtcbiAgICAgICAgdGhpcy5sYXN0VmFsaWRPcHRpb24gPSBvcHRpb247XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQob3B0aW9uKTtcbiAgICAgICAgY29uc3Qgb3B0VmFsdWUgPSBvcHRpb25WYWx1ZSA/IG9wdGlvblZhbHVlIDogdGhpcy5vcHRpb25WYWx1ZTtcbiAgICAgICAgY29uc3QgbGJlbCA9IGxhYmVsID8gbGFiZWwgOiB0aGlzLmxhYmVsO1xuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPSBvcHRWYWx1ZVxuICAgICAgICAgICAgPyBvcHRpb25bb3B0VmFsdWUgYXMga2V5b2YgSU9wdGlvbk1vZGVsXVxuICAgICAgICAgICAgOiBvcHRpb247XG5cbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IG9wdGlvbltsYmVsIGFzIGtleW9mIElPcHRpb25Nb2RlbF0gfHwgY29udHJvbFZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBvcHRpb247XG4gICAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGNvbnRyb2xWYWx1ZSwgaW5wdXRWYWx1ZSk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcblxuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBNdWx0aXNlbGVjdCBEcm9wZG93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIG9uTXVsdGlzZWxlY3RTZWxlY3Qob3B0aW9uOiBJT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cyA9IGZhbHNlO1xuICAgICAgICAvL3RoaXMuaW5wdXRDb25maWcubGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3RJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBvcHRpb24uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KHRoaXMubXVsdGlzZWxlY3RJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLl9vcHRpb25zXTtcblxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSB0aGlzLl9vcHRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gdGhpcy5tdWx0aXNlbGVjdEl0ZW1zW2luZGV4XS5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5zb3J0KFxuICAgICAgICAgICAgKHgsIHkpID0+IE51bWJlcih5LmFjdGl2ZSkgLSBOdW1iZXIoeC5hY3RpdmUpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSB0aGlzLl9vcHRpb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgLnNsaWNlKC0xKVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KFxuICAgICAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZUFsbE11bHRpU2VsZWN0SXRlbXMoY3VycmVudExhYmVsPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQobnVsbCk7XG5cbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlTXVsdGlzZWxlY3REcm9wZG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSAhdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cztcblxuICAgICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBFbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGRyb3Bkb3duVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuICAgIHB1YmxpYyBzZXRDb250cm9sVmFsdWUodmFsdWU/OiBzdHJpbmcsIGRyb3Bkb3duSW5wdXRWYWx1ZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTsgLy8gTm90aWZ5IEFuZ3VsYXIgZm9ybSBhYm91dCB0aGUgY2hhbmdlXG4gICAgICAgIGlmICh2YWx1ZSkgdGhpcy5vblRvdWNoZWQoKTsgLy8gTWFyayBhcyB0b3VjaGVkXG4gICAgICAgIHRoaXMuZHJvcGRvd25WYWx1ZSA9IGRyb3Bkb3duSW5wdXRWYWx1ZSB8fCB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnBhdGNoVmFsdWUoZHJvcGRvd25JbnB1dFZhbHVlIHx8IHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZSB0aHJvdWdoIGRyb3Bkb3duIHdpdGgga2V5Ym9hcmQgYXJyb3dzXG4gICAgICovXG4gICAgcHJpdmF0ZSBkcm9wZG93bk5hdmlnYXRpb24oc3RlcDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5leHRTdGVwID0gdGhpcy5pbnB1dEhvdmVyZWRJdGVtICsgc3RlcDtcblxuICAgICAgICBpZiAobmV4dFN0ZXAgPiB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRyb3Bkb3duT3B0aW9uLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSAwO1xuICAgICAgICBlbHNlIGlmIChuZXh0U3RlcCA8IDApXG4gICAgICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPVxuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuZHJvcGRvd25PcHRpb24ubGVuZ3RoIC0gMTtcbiAgICAgICAgZWxzZSB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSBuZXh0U3RlcDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImFwcGxpY2F0aW9uLWRyb3Bkb3duXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgICAgaW5wdXRDb25maWdcbiAgICAgICAgICAgIHwgaW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q2xhc3NcbiAgICAgICAgICAgICAgICA6IG11bHRpc2VsZWN0SXRlbXNcbiAgICAgICAgICAgICAgICA6IGlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzXG4gICAgXCJcbj5cbiAgICBAaWYgKG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIDxwIGNsYXNzPVwibXVsdGlzZWxlY3QtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0TGFiZWwgfX1cbiAgICAgICAgPC9wPlxuICAgIH1cblxuICAgIEBpZiAoaW5wdXRDb25maWcubXVsdGlTZWxlY3REcm9wZG93bkFjdGl2ZSkge1xuICAgICAgICA8IS0tIE11bHRpc2VsZWN0IGFycm93IC0tPlxuICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwibXVsdGlzZWxlY3QtYXJyb3dcIlxuICAgICAgICAgICAgW3NyY109XCJpbnB1dERyb3Bkb3duU3ZnUm91dGVzLmlucHV0RHJvcGRvd25BcnJvd1N2Z1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTXVsdGlzZWxlY3REcm9wZG93bigpXCJcbiAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgfVxuXG4gICAgQGlmIChcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQgJiZcbiAgICAgICAgIWdldFN1cGVyQ29udHJvbD8uZGlzYWJsZWRcbiAgICApIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBjbGVhciBhbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgaXRlbXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0IG9mIG11bHRpc2VsZWN0SXRlbXM7XG4gICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSAtIFRvdGFsIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpU2VsZWN0SXRlbVJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQgJiYgIWdldFN1cGVyQ29udHJvbD8uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gc2VhcmNoIC0tPlxuXG4gICAgQGlmICghaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgQGlmICghc2VhcmNoSW5wdXRUZXh0LnZhbHVlKSB7XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJpc0Ryb3BEb3duSXNPcGVuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubGVmdEljb25dPVwiaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogX29wdGlvbnMgfCBjYURyb3Bkb3duQ291bnQ6IF90ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2xvYWQtYnJva2VyLWNvbnRhY3QnLFxuICAgICAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgICAgICdtZXJnZS1kcm9wZG93bi1ib2R5LXdpdGgtaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi12YWx1ZS1yaWdodC1zaWRlJzogaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uUmlnaHRTaWRlXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl92YWx1ZSBkcm9wZG93bi1vcHRpb25zICB7e1xuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3NcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoX3RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbiBkcm9wZG93bi1kb3VibGUtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW0hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSX0NPTlRBQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkLWJyb2tlci1jb250YWN0LWdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lhbCBEcm9wZG93biBTZWxlY3RlZCBTVkcgd2l0aCBvciBXaXRob3V0IFRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dCAmJiBhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnB1dERyb3Bkb3duR2V0SWNvbnM6IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1zZWxlY3RlZC1pbWFnZSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNldC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW0/LmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcjZmZmZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py53aXRoVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyb3Bkb3duVmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGNhLWlucHV0LXRlc3RcbiAgICAgICAgICAgICN0Mj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJjYS1pbnB1dC1kcm9wZG93blwiXG4gICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICBbcGxhY2VtZW50XT1cIlxuICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSdcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2JvdHRvbS1sZWZ0JywgJ3RvcC1sZWZ0J11cbiAgICAgICAgICAgICAgICAgICAgOiBbJ2JvdHRvbS1sZWZ0J11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sIHwgZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3BhcmVudENvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgIFtpbmNvcnJlY3RWYWx1ZV09XCJpc0luY29ycmVjdFZhbHVlXCJcbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbc2VsZWN0ZWREcm9wZG93bkxhYmVsQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIl90ZW1wbGF0ZVwiXG4gICAgICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXJJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbW1hbmRFdmVudCk9XCJjb21tYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2hvd0hpZGVEcm9wZG93bik9XCJzaG93SGlkZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGRyb3BEb3duS2V5TmF2aWdhdGlvbik9XCJkcm9wRG93bktleU5hdmlnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChoaWRkZW4pPVwiaGFuZGxlSGlkZGVuRHJvcGRvd24oKVwiXG4gICAgICAgICAgICAoc2hvd24pPVwiaGFuZGxlT3BlbkRyb3Bkb3duKClcIlxuICAgICAgICA+PC9jYS1pbnB1dC10ZXN0PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gaWNvbiBpbnN0ZWFkIG9mIGlucHV0IC0tPlxuICAgIEBpZiAoaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaW5wdXQtaWNvbi1jb250YWluZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHZhbGlkOlxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5pc1ZhbGlkSWNvbiAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuaW5wdXRJY29uPy5pbmNsdWRlcygnY3VzdG9tJyksXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBwb3BvdmVyUmVmPy5pc09wZW4oKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJjYUlucHV0RHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJjYS1pbnB1dC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIlsnYm90dG9tLWxlZnQnXVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1pY29uXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICBpbnB1dERyb3Bkb3duU3ZnUm91dGVzLnJlcGFpclBtU3ZnUm91dGUgK1xuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5pbnB1dEljb25cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjYUlucHV0RHJvcGRvd25Qb3BvdmVyPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERyb3Bkb3duIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIEBpZiAoaW5wdXRDb25maWc/Lm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0ICYmIF9vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zLWRpdmlkZXIge3tcbiAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3NcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNwYXRjaF9kcm9wZG93bl09XCJfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIChpbnB1dENvbmZpZz8ubmFtZSAhPSAnQWRkcmVzcycgJiZcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lICE9ICdSb3V0aW5nQWRkcmVzcycgJiZcbiAgICAgICAgICAgICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkICYmXG4gICAgICAgICAgICAhZ2V0U3VwZXJDb250cm9sPy5kaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgIWdldFN1cGVyQ29udHJvbD8uZGlzYWJsZWQgJiZcbiAgICAgICAgICAgIF9vcHRpb25zPy5sZW5ndGgpXG4gICAgKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQHN3aXRjaCAoX3RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1ZHIFRlbXBsYXRlIChSZW5kZXIgc3ZncyBvciB0ZXh0IGlmIHN2Z3MgZG9lc24ndCBleGlzdCApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25XaXRoSW1hZ2VdPVwiaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duU3ZnVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN2ZyBUZXh0IFRlbXBsYXRlIChkaXNwbGF5IGZsZXgpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN2Z1RleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGlzcGF0Y2ggZHJvcGRvd24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRpc3BhdGNoVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldGFpbHMgdGVtcGxhdGUgKHRydWNrLCB0cmFpbGVyLi4uIGRldGFpbHMtcGFnZXMpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRFVEFJTFNfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJfc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR3JvdXBpbmcgdGVtcGxhdGUgKGNhbiBzZWUgb24gY29udGFjdCBtb2RhbCkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uR1JPVVBTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXNlbGVjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtXT1cImxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbk11bHRpc2VsZWN0U2VsZWN0KT1cIm9uTXVsdGlzZWxlY3RTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxzIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTEFCRUxTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsTW9kZV09XCJsYWJlbE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkFkZE5ld109XCJfY2FuQWRkTmV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERpc3BhdGNoIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRElTUEFUQ0gpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIERpc3BhdGNoZXIgVGVtcGxhdGUgKHVzZXIgYXZhdGFyICsgdXNlciBuYW1lKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQ29tYmluZSBUcnVjay1UcmFpbGVyLURyaXZlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQ+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBCcm9rZXIgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIENvbnRhY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgU2hpcHBlciBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVtcGxhdGUgVGV4dCAtIENvdW50ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5URVhUX0NPVU5URVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF90ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1ZWwgRnJhbmNoaXNlIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRlVFTF9GUkFOQ0hJU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlTmVzdGVkTGlzdCk9XCJ0b2dnbGVOZXN0ZWRMaXN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbUdyb3VwKT1cIm9uQWN0aXZlSXRlbUdyb3VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZnVlbC1mcmFuY2hpc2U+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgVGV4dCBUZW1wbGF0ZSAtLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRE9VQkxFX1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRyaXBsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRSSVBMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFBBWVJPTEwgVFJVQ0tTIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlZmF1bHQgVGVtcGxhdGUgLSBSZW5kZXIgT25seSBUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3RlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -34356,13 +34356,13 @@ class CaInputDropdownTestComponent {
|
|
|
34356
34356
|
onActiveItem(option, group) {
|
|
34357
34357
|
if (this.canOpenModal &&
|
|
34358
34358
|
option?.[this.label].toString()?.toLowerCase() === 'add new') {
|
|
34359
|
+
this.popoverRef?.close();
|
|
34360
|
+
this.searchInputText.next('');
|
|
34359
34361
|
this.selectedItem.emit({
|
|
34360
34362
|
id: 7655,
|
|
34361
34363
|
name: DropdownStringEnum.ADD_NEW,
|
|
34362
34364
|
canOpenModal: true,
|
|
34363
34365
|
});
|
|
34364
|
-
this.popoverRef?.close();
|
|
34365
|
-
this.searchInputText.next('');
|
|
34366
34366
|
}
|
|
34367
34367
|
else {
|
|
34368
34368
|
this.setDropdownValue({ option });
|