ets-fe-ng-sdk 17.0.305 → 17.0.306
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, computed, effect, inject, input, signal, viewChild, } from '@angular/core';
|
|
2
2
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { cloneDeep } from 'lodash-es';
|
|
4
|
-
import { debounceTime } from 'rxjs/operators';
|
|
4
|
+
import { debounceTime, filter } from 'rxjs/operators';
|
|
5
5
|
import { FunctionCaller2, ToAnyPipe } from '../../pipes/utility.pipe';
|
|
6
6
|
import { BtnComponent } from '../btn/btn.component';
|
|
7
7
|
import { InputBasicComponent } from '../input/input-basic.component';
|
|
@@ -91,11 +91,9 @@ export class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
91
91
|
listenToKey?.unsubscribe();
|
|
92
92
|
if (ftr?.nativeElement && submitOnEnterKey)
|
|
93
93
|
listenToKey = fromEvent(ftr.nativeElement, 'keydown')
|
|
94
|
-
.pipe(debounceTime(100))
|
|
94
|
+
.pipe(debounceTime(100), filter((r) => (r.code === 'Enter' || r.keyCode === 13) && this.form.valid))
|
|
95
95
|
.subscribe((r) => {
|
|
96
|
-
|
|
97
|
-
if (r.code === 'Enter' || r.keyCode === 13)
|
|
98
|
-
this.submit(this.submitBtnRef());
|
|
96
|
+
this.submit(this.submitBtnRef());
|
|
99
97
|
});
|
|
100
98
|
});
|
|
101
99
|
}
|
|
@@ -228,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
228
226
|
type: Input,
|
|
229
227
|
args: ['isShow']
|
|
230
228
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBOEIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQTRCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUczRDs7R0FFRztBQXVCSCxNQUFNLE9BQU8sc0JBQWtHLFNBQVEsaUJBR3RIO0lBZ0NDLElBQW9ELFdBQVcsQ0FBQyxDQUE0QjtRQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQXFCLE9BQU8sQ0FBQyxDQUFVO1FBQ3JDLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7O1lBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFFekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQztnQkFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOztnQkFDM0MsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBcUJEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFoRUQsYUFBUSxHQUFzQixPQUFPLENBQUM7UUFDL0MsK0JBQTBCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLGFBQVEsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUM1QixxQkFBZ0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekMsZUFBVSxHQUFHLFNBQVMsQ0FBOEIsU0FBUyxDQUFDLENBQUM7UUFFckQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDZCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVFLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLHNCQUFpQixHQUFHLEtBQUssRUFBb0IsQ0FBQztRQUM5QyxzQkFBaUIsR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixjQUFTLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBRXhDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsY0FBUyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzdCLFlBQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUUzQixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWxDLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpHLGlCQUFZLEdBQUcsU0FBUyxDQUFlLFdBQVcsQ0FBQyxDQUFDO1FBZXBELGVBQVUsR0FBRyxNQUFNLENBQWUsRUFBRSxDQUFDLENBQUM7UUFDdEMsc0RBQXNEO1FBRXRELHVCQUFrQixHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFO1lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQ3hDLDBCQUEwQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUM5RCxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUMxQixHQUFHLEdBQThCLEVBQUUsQ0FBQztZQUN0QyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO29CQUNsQixJQUFJLFFBQVE7d0JBQUUsTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7b0JBQ2hILEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2xCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxRQUFRLENBQUM7WUFDeEMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUNILHlCQUF5QjtRQUNsQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBcUVsRCxrQkFBYSxHQUFHLENBQUMsU0FBMkIsRUFBRSxFQUFFO1lBQzlDLFlBQVk7WUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFtQixDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDO1FBbkVBLElBQUksV0FBeUIsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDM0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0MsWUFBWTtZQUVaLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUMzQixJQUFJLEdBQUcsRUFBRSxhQUFhLElBQUksZ0JBQWdCO2dCQUN4QyxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDO3FCQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN2QixTQUFTLENBQUMsQ0FBQyxDQUFnQixFQUFFLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMxQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRTt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRSxDQUFDLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFpQztRQUNwQyxZQUFZO1FBQ1osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTTtZQUFFLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTTtnQkFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsSUFBSSxNQUFNO1lBQ1IsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxxQkFBcUI7b0JBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlJLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUErQjtRQUM5QyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDL0MsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUk7WUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNsRCxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJO1lBQUUsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUN0RSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLCtCQUErQjtZQUN6RCxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDeEgsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFZLENBQUM7WUFBRSxRQUFRLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLENBQUMsZUFBZTtZQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksTUFBTSxDQUFDLGdCQUFnQjtZQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDdkIsSUFBSSxNQUFNLENBQUMsS0FBSztnQkFBRSxRQUFRLENBQUM7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxNQUErQixFQUFFLFFBQTJCO1FBQ3pGLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUE0QjtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQW1CLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRVMsY0FBYztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQU9ELGVBQWUsQ0FBQyxVQUFtQztRQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxNQUF3QztRQUNwRixPQUFPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxHQUFvRTtRQUN0RixPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsU0FBMkI7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFtQixDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQ3pFLElBQUksUUFBUTtZQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBbUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUyxjQUFjLENBQUMsTUFBVyxFQUFFLE1BQStCO1FBQ25FLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBa0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLEdBQUcsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixJQUFJO2dCQUNGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ3hEO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2Qjs7WUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0FsTFUsc0JBQXNCO2tHQUF0QixzQkFBc0IseWhHQzFEbkMsK2hNQXlIQSwwREQvRUksZUFBZSxrR0FDZixXQUFXLG1TQUNYLFlBQVksc01BQ1osb0JBQW9CLDRJQUVwQixxQkFBcUIsOEhBR3JCLG1CQUFtQixzWUFDbkIseUJBQXlCLGdFQUN6QixZQUFZLDRiQUNaLG1CQUFtQiwyS0FDbkIsZUFBZSxtREFDZixTQUFTOzsyRkFHQSxzQkFBc0I7a0JBdEJsQyxTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFNBQVM7cUJBQ1Y7d0RBTVEsUUFBUTtzQkFBaEIsS0FBSztnQkFNSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ3VCLG1CQUFtQjtzQkFBaEQsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBQ25CLFVBQVU7c0JBQWxCLEtBQUs7Z0JBb0JHLElBQUk7c0JBQVosS0FBSztnQkFFOEMsV0FBVztzQkFBOUQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFHekIsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBsYXN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBPcHRpb25MYWJlbFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0U3ViVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50IH0gZnJvbSAnLi4vcmljaC10ZXh0LWVkaXRvci1yZi9yaWNoLXRleHQtZWRpdG9yLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi9mb3JtLWdlbmVyYXRvci5iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogRm9ybSBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgdGhlIGZvcm1TY2hlbWFcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1nZW5lcmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfT4gZXh0ZW5kcyBCYXNlRm9ybUdlbmVyYXRvcjxcbiAgVEZvcm1Hcm91cCxcbiAgSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5cbj4ge1xuICBASW5wdXQoKSBrZXlGaWVsZDogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuICBwcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbiA9IGlucHV0KGZhbHNlKTtcbiAgaXNDcmVhdGUgPSBpbnB1dDxib29sZWFuPigpO1xuICBzdWJtaXRPbkVudGVyS2V5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBmb3JtVGFnUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50Pj4oJ2Zvcm1UYWcnKTtcblxuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgnc3VibWlzc2lvblJlc3BvbnNlJykgX3N1Ym1pc3Npb25SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICBzaG93U3VibWl0QnRuID0gaW5wdXQodHJ1ZSk7XG5cbiAgZ3JpZFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICBncmlkTURTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgZ3JpZExHU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIGdyaWRYWExTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcblxuICBmb3JtR3JpZENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICB1c2VMb2FkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBfbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29tcHV0ZWRMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMudXNlTG9hZGVyKCkgPyB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLl9sb2FkaW5nKCkgOiBmYWxzZSkpO1xuXG4gIHN1Ym1pdEJ0blJlZiA9IHZpZXdDaGlsZDxCdG5Db21wb25lbnQ+KCdzdWJtaXRCdG4nKTtcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBzdWJtaXNzaW9uUmVzcG9uc2U6IGFueTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnZm9ybVNjaGVtYScgfSkgc2V0IF9mb3JtU2NoZW1hKHY6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pIHtcbiAgICB0aGlzLmluaXQoY2xvbmVEZWVwKHYuZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG4gIEBJbnB1dCgnaXNTaG93Jykgc2V0IF9pc1Nob3codjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmZvcm0/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtPy5lbmFibGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuZm9ybT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBlbHNlIHRoaXMuZm9ybT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICAvLyBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcblxuICBjb21wdXRlZEZvcm1TY2hlbWEgPSBjb21wdXRlZDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdLFxuICAgICAgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSB0aGlzLnByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uKCksXG4gICAgICBpc0NyZWF0ZSA9IHRoaXMuaXNDcmVhdGUoKSxcbiAgICAgIHJldDogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSA9IFtdO1xuICAgIGZvcm1TY2hlbWEuZm9yRWFjaCgoc2NoZW1lKSA9PiB7XG4gICAgICBpZiAoIXNjaGVtZS5oaWRkZW4pIHtcbiAgICAgICAgaWYgKGlzQ3JlYXRlKSBzY2hlbWUucHJlc2V0VmFsdWUgPSBzY2hlbWUucHJlc2V0VmFsdWUgPT0gbnVsbCA/IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uIDogc2NoZW1lLnByZXNldFZhbHVlO1xuICAgICAgICByZXQucHVzaChzY2hlbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZXQuc29tZSgoeCkgPT4gIXguZmllbGQpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuICBwdWJsaWMgZm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybUdlbmVyYXRvclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgbGlzdGVuVG9LZXk6IFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmdHIgPSB0aGlzLmZvcm1UYWdSZWYoKSxcbiAgICAgICAgc3VibWl0T25FbnRlcktleSA9IHRoaXMuc3VibWl0T25FbnRlcktleSgpO1xuICAgICAgLy8gZGVidWdnZXI7XG5cbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgICAgaWYgKGZ0cj8ubmF0aXZlRWxlbWVudCAmJiBzdWJtaXRPbkVudGVyS2V5KVxuICAgICAgICBsaXN0ZW5Ub0tleSA9IGZyb21FdmVudChmdHIubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHI6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdrZXlkb3duJywgcik7XG4gICAgICAgICAgICBpZiAoci5jb2RlID09PSAnRW50ZXInIHx8IHIua2V5Q29kZSA9PT0gMTMpIHRoaXMuc3VibWl0KHRoaXMuc3VibWl0QnRuUmVmKCkpO1xuICAgICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdChzY2hlbWE6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSB8fCBbXSk7XG4gICAgaWYgKHNjaGVtYSkgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKSB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICBpZiAoc2NoZW1hKVxuICAgICAgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKVxuICAgICAgICBpZiAoc2NoZW1lLnRyaWdnZXJPbkNoYW5nZU9uSW5pdCkgc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSwgdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXSwgdGhpcyk7XG4gIH1cblxuICBoYW5kbGVGb3JtU2NoZW1lKHNjaGVtZTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpO1xuICAgIGlmIChzY2hlbWUuc3RhY2tlZCA9PSBudWxsKSBzY2hlbWUuc3RhY2tlZCA9IHRydWU7XG4gICAgaWYgKHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9PSBudWxsKSBzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPSB0cnVlO1xuICAgIGlmICh0aGlzLmZvcm1TZXJ2aWNlLmNvbmZpZy5zaG93VmFsaWRhdGlvbk1lc3NhZ2VzQnlEZWZhdWx0KVxuICAgICAgaWYgKHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPT0gbnVsbCAmJiAoIXNjaGVtZS52YWx1ZUZpZWxkIHx8ICFzY2hlbWUubGFiZWxGaWVsZCkpIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzW3NjaGVtZS5maWVsZCBhcyBhbnldKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCBzY2hlbWUpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jKTtcbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpIHRoaXMuaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lLCBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpKTtcbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICB0aGlzLnN1YnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXSA9IHRoaXMuZm9ybT8uY29udHJvbHNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDApKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSwgciwgdGhpcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPiwgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55W10+KSB7XG4gICAgb3B0aW9ucyQuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAvLyBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCB7IG9wdGlvbnM6IHIgfSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZT86IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLnN1YnNbZmllbGROYW1lIGFzIHN0cmluZ10/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgZ2V0Rm9ybVNjaGVtZSA9IChmaWVsZE5hbWU6IGtleW9mIFRGb3JtR3JvdXApID0+IHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gdGhpcy5mb3JtU2NoZW1hTWFwKClbZmllbGROYW1lIGFzIHN0cmluZ107XG4gIH07XG5cbiAgYWRkVG9Gb3JtU2NoZW1hKGZvcm1TY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgdGhpcy5yZW1vdmVGcm9tRm9ybVNjaGVtYShmb3JtU2NoZW1lLmZpZWxkKTtcbiAgICB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoZm9ybVNjaGVtZSk7XG4gIH1cblxuICB1cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCwgc2NoZW1lOiBQYXJ0aWFsPElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+Pikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlRm9ybVNjaGVtYShmaWVsZE5hbWUgYXMgc3RyaW5nLCBzY2hlbWUpO1xuICB9XG4gIHVwZGF0ZUFsbEZvcm1TY2hlbWEobWFwOiAoZm9ybUZpZWxkOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikgPT4gSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICByZXR1cm4gc3VwZXIuX3VwZGF0ZUFsbEZvcm1TY2hlbWEobWFwKTtcbiAgfVxuXG4gIHJlbW92ZUZyb21Gb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMuZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWUpO1xuICAgIGNvbnN0IG9uUmVtb3ZlID0gdGhpcy5mb3JtU2NoZW1hTWFwKClbZmllbGROYW1lIGFzIHN0cmluZ10/Lm9uUmVtb3ZlRnVuYztcbiAgICBpZiAob25SZW1vdmUpIG9uUmVtb3ZlKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIGFueSwgdGhpcy5mb3JtLmNvbnRyb2xzW2ZpZWxkTmFtZSBhcyBhbnldLCB0aGlzKTtcbiAgICB0aGlzLl9yZW1vdmVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE9wdGlvbkxhYmVsKCRldmVudDogYW55LCBzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgc2NoZW1lLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSAkZXZlbnQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoYnRuPzogQnRuQ29tcG9uZW50KSB7XG4gICAgaWYgKHRoaXMuc3VibWl0RnVuYykge1xuICAgICAgYnRuPy5zZXRMb2FkZXIodHJ1ZSk7XG4gICAgICB0aGlzLl9sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1WYWwgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdChmb3JtVmFsKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdWJtaXRGdW5jKGZvcm1WYWwpO1xuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmluZm8odGhpcy5zdWJtaXRTdWNjZXNzVGV4dCgpLCAxKTtcbiAgICAgICAgdGhpcy5fc3VibWlzc2lvblJlc3BvbnNlLmVtaXQodGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5pbmZvKGVycm9yLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIGJ0bj8uc2V0TG9hZGVyKGZhbHNlKTtcbiAgICB9IGVsc2UgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2NoZW1hPFxuICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgIFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICB9ID0gYW55LFxuPiBleHRlbmRzIElCYXNlRm9ybVNjaGVtYTxURm9ybUdyb3VwLCBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFRGb3JtR3JvdXA+PiB7XG4gIGNoaWxkcmVuPzogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXTtcbiAgbGFiZWxUeXBlPzogT3B0aW9uTGFiZWxUeXBlO1xuICBmaWVsZDoga2V5b2YgVEZvcm1Hcm91cDtcbiAgc3ViVHlwZT86IElucHV0U3ViVHlwZTtcbiAgcHJlc2V0VmFsdWU/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTI8VFN0cnVjdCA9IGFueT5cbiAgZXh0ZW5kcyBJRm9ybVNjaGVtYTx7XG4gICAgW0sgaW4ga2V5b2YgVFN0cnVjdF0/OiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+O1xuICB9PiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtT3B0aW9ucyB7XG4gIFtmaWVsZDogc3RyaW5nXTogYW55O1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJjb21wdXRlZExvYWRpbmcoKVwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAjZm9ybVRhZyA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMte3sgZ3JpZFN0eWxlKCkgfX0gcm93LWNvbHMtbWQte3sgZ3JpZE1EU3R5bGUoKSB9fSByb3ctY29scy1sZy17eyBncmlkTEdTdHlsZSgpIH19IHJvdy1jb2xzLXh4bC17e1xuICAgICAgICBncmlkWFhMU3R5bGUoKVxuICAgICAgfX0gYWxpZ24taXRlbXMtY2VudGVyIHt7IGZvcm1HcmlkQ2xhc3MoKSB9fVwiPlxuICAgICAgQGZvciAoc2NoZW1lIG9mIGNvbXB1dGVkRm9ybVNjaGVtYSgpOyB0cmFjayBzY2hlbWUuaWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB7eyBzY2hlbWUuY2xzIH19IFwiPlxuICAgICAgICAgIEBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuICAgICAgICAgICAgICA8YXBwLXBob25lLW51bWJlclxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm1cIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgPGFwcC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuY1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwKClbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3JpY2h0ZXh0Jykge1xuICAgICAgICAgICAgICA8cmljaC10ZXh0LWVkaXRvci1yZlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm1cIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWwhXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlIVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdCFcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICAobVNlbGVjdGVkT3B0aW9uTGFiZWwpPVwic2V0T3B0aW9uTGFiZWwoJGV2ZW50LCBzY2hlbWUpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWchXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWchXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXIhXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zRnVuY109XCJzY2hlbWUub3B0aW9uc0Z1bmMhXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQhXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwKClbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludCFcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWQgfHwgKHNjaGVtZS5kaXNhYmxlZElmISB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpY1xuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybVwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtwcmVzZXRWYWx1ZV09XCJzY2hlbWUucHJlc2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRTaWduYWxdPVwic2NoZW1lLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtkZWNpbWFsUG9pbnRzXT1cInNjaGVtZS5kZWNpbWFsUG9pbnRzXCJcbiAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCJcbiAgICAgICAgICAgICAgICBbbWluXT1cInNjaGVtZS5taW5cIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWQgfHwgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy1hdXRvIGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgQGlmIChzaG93U3VibWl0QnRuKCkpIHtcbiAgICAgICAgICA8YXBwLWJ0biBbdGV4dF09XCJzdWJtaXRCdG5UZXh0KClcIiAgZ3JvdXA9XCJzdWJtaXRcIiBbZm9ybV09XCJmb3JtXCIgKG1jbGljayk9XCJzdWJtaXQoc3VibWl0QnRuKVwiICNzdWJtaXRCdG4gLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHN1Ym1pdEJ0blRlbXBsYXRlKCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VibWl0QnRuVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9sb2FkZXI+XG4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBOEIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBbUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFP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c0JBQWhCLEtBQUs7Z0JBTUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUN1QixtQkFBbUI7c0JBQWhELE1BQU07dUJBQUMsb0JBQW9CO2dCQUNuQixVQUFVO3NCQUFsQixLQUFLO2dCQW9CRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRThDLFdBQVc7c0JBQTlELEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBR3pCLE9BQU87c0JBQTNCLEtBQUs7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBsYXN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBPcHRpb25MYWJlbFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0U3ViVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50IH0gZnJvbSAnLi4vcmljaC10ZXh0LWVkaXRvci1yZi9yaWNoLXRleHQtZWRpdG9yLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi9mb3JtLWdlbmVyYXRvci5iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogRm9ybSBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgdGhlIGZvcm1TY2hlbWFcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1nZW5lcmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfT4gZXh0ZW5kcyBCYXNlRm9ybUdlbmVyYXRvcjxcbiAgVEZvcm1Hcm91cCxcbiAgSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5cbj4ge1xuICBASW5wdXQoKSBrZXlGaWVsZDogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuICBwcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbiA9IGlucHV0KGZhbHNlKTtcbiAgaXNDcmVhdGUgPSBpbnB1dDxib29sZWFuPigpO1xuICBzdWJtaXRPbkVudGVyS2V5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBmb3JtVGFnUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50Pj4oJ2Zvcm1UYWcnKTtcblxuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgnc3VibWlzc2lvblJlc3BvbnNlJykgX3N1Ym1pc3Npb25SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICBzdWJtaXRCdG5UZXh0ID0gaW5wdXQoJ1N1Ym1pdCcpO1xuICBzdWJtaXRCdG5UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHN1Ym1pdFN1Y2Nlc3NUZXh0ID0gaW5wdXQoJ1NhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICBzaG93U3VibWl0QnRuID0gaW5wdXQodHJ1ZSk7XG5cbiAgZ3JpZFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICBncmlkTURTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgZ3JpZExHU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIGdyaWRYWExTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcblxuICBmb3JtR3JpZENsYXNzID0gaW5wdXQ8c3RyaW5nPigpO1xuICB1c2VMb2FkZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBfbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29tcHV0ZWRMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMudXNlTG9hZGVyKCkgPyB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLl9sb2FkaW5nKCkgOiBmYWxzZSkpO1xuXG4gIHN1Ym1pdEJ0blJlZiA9IHZpZXdDaGlsZDxCdG5Db21wb25lbnQ+KCdzdWJtaXRCdG4nKTtcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwPFRGb3JtR3JvdXA+O1xuICBzdWJtaXNzaW9uUmVzcG9uc2U6IGFueTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnZm9ybVNjaGVtYScgfSkgc2V0IF9mb3JtU2NoZW1hKHY6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pIHtcbiAgICB0aGlzLmluaXQoY2xvbmVEZWVwKHYuZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG4gIEBJbnB1dCgnaXNTaG93Jykgc2V0IF9pc1Nob3codjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmZvcm0/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGVsc2UgdGhpcy5mb3JtPy5lbmFibGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuZm9ybT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBlbHNlIHRoaXMuZm9ybT8uZW5hYmxlKCk7XG4gICAgfSwgNTAwKTtcbiAgfVxuICBvcHRpb25zTWFwID0gc2lnbmFsPElGb3JtT3B0aW9ucz4oe30pO1xuICAvLyBmb3JtVmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtPy5nZXRSYXdWYWx1ZSgpKTtcblxuICBjb21wdXRlZEZvcm1TY2hlbWEgPSBjb21wdXRlZDxJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdPigoKSA9PiB7XG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuZm9ybVNjaGVtYSgpIHx8IFtdLFxuICAgICAgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSB0aGlzLnByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uKCksXG4gICAgICBpc0NyZWF0ZSA9IHRoaXMuaXNDcmVhdGUoKSxcbiAgICAgIHJldDogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSA9IFtdO1xuICAgIGZvcm1TY2hlbWEuZm9yRWFjaCgoc2NoZW1lKSA9PiB7XG4gICAgICBpZiAoIXNjaGVtZS5oaWRkZW4pIHtcbiAgICAgICAgaWYgKGlzQ3JlYXRlKSBzY2hlbWUucHJlc2V0VmFsdWUgPSBzY2hlbWUucHJlc2V0VmFsdWUgPT0gbnVsbCA/IHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uIDogc2NoZW1lLnByZXNldFZhbHVlO1xuICAgICAgICByZXQucHVzaChzY2hlbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZXQuc29tZSgoeCkgPT4gIXguZmllbGQpKSBkZWJ1Z2dlcjtcbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgLy8gbWlzY0luZGV4OiBUTWlzY0luZGV4O1xuICBwdWJsaWMgZm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybUdlbmVyYXRvclNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBsZXQgbGlzdGVuVG9LZXk6IFN1YnNjcmlwdGlvbjtcbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmdHIgPSB0aGlzLmZvcm1UYWdSZWYoKSxcbiAgICAgICAgc3VibWl0T25FbnRlcktleSA9IHRoaXMuc3VibWl0T25FbnRlcktleSgpO1xuICAgICAgLy8gZGVidWdnZXI7XG5cbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgICAgaWYgKGZ0cj8ubmF0aXZlRWxlbWVudCAmJiBzdWJtaXRPbkVudGVyS2V5KVxuICAgICAgICBsaXN0ZW5Ub0tleSA9IGZyb21FdmVudChmdHIubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgICBmaWx0ZXIoKHI6IEtleWJvYXJkRXZlbnQpID0+IChyLmNvZGUgPT09ICdFbnRlcicgfHwgci5rZXlDb2RlID09PSAxMykgJiYgdGhpcy5mb3JtLnZhbGlkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocjogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQodGhpcy5zdWJtaXRCdG5SZWYoKSk7XG4gICAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0KHNjaGVtYTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHRoaXMub25EZXN0cm95KCk7XG4gICAgdGhpcy5fc2V0Rm9ybVNjaGVtYXMoc2NoZW1hIHx8IFtdKTtcbiAgICBpZiAoc2NoZW1hKSBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpXG4gICAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KSBzY2hlbWUub25DaGFuZ2VGdW5jKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVtzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2VuZXJhdGVVVUlEKCk7XG4gICAgaWYgKHNjaGVtZS5zdGFja2VkID09IG51bGwpIHNjaGVtZS5zdGFja2VkID0gdHJ1ZTtcbiAgICBpZiAoc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwpIHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuZm9ybVNlcnZpY2UuY29uZmlnLnNob3dWYWxpZGF0aW9uTWVzc2FnZXNCeURlZmF1bHQpXG4gICAgICBpZiAoc2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCA9PSBudWxsICYmICghc2NoZW1lLnZhbHVlRmllbGQgfHwgIXNjaGVtZS5sYWJlbEZpZWxkKSkgc2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmZvcm0uY29udHJvbHNbc2NoZW1lLmZpZWxkIGFzIGFueV0pIGRlYnVnZ2VyO1xuICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHNjaGVtZSk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYykgdGhpcy5oYW5kbGVPcHRpb25zRmV0Y2hlZChzY2hlbWUsIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpO1xuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jMikgdGhpcy5oYW5kbGVPcHRpb25zRmV0Y2hlZChzY2hlbWUsIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMyKCkpO1xuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBpZiAoc2NoZW1lLmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgIHRoaXMuc3Vic1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldID0gdGhpcy5mb3JtPy5jb250cm9sc1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldPy52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub25DaGFuZ2VGdW5jKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCByLCB0aGlzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVPcHRpb25zRmV0Y2hlZChzY2hlbWU6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+LCBvcHRpb25zJDogT2JzZXJ2YWJsZTxhbnlbXT4pIHtcbiAgICBvcHRpb25zJC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHsgb3B0aW9uczogciB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRldGFjaEZvcm1TY2hlbWUoZmllbGROYW1lPzoga2V5b2YgVEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc3Vic1tmaWVsZE5hbWUgYXMgc3RyaW5nXT8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtY2hhbmdlRW1pdHRlcigpIHtcbiAgICB0aGlzLm1jaGFuZ2UuZW1pdCh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBnZXRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXTtcbiAgfTtcblxuICBhZGRUb0Zvcm1TY2hlbWEoZm9ybVNjaGVtZTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICB0aGlzLnJlbW92ZUZyb21Gb3JtU2NoZW1hKGZvcm1TY2hlbWUuZmllbGQpO1xuICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShmb3JtU2NoZW1lKTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwLCBzY2hlbWU6IFBhcnRpYWw8SUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcsIHNjaGVtZSk7XG4gIH1cbiAgdXBkYXRlQWxsRm9ybVNjaGVtYShtYXA6IChmb3JtRmllbGQ6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSA9PiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlQWxsRm9ybVNjaGVtYShtYXApO1xuICB9XG5cbiAgcmVtb3ZlRnJvbUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwKSB7XG4gICAgdGhpcy5kZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZSk7XG4gICAgY29uc3Qgb25SZW1vdmUgPSB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXT8ub25SZW1vdmVGdW5jO1xuICAgIGlmIChvblJlbW92ZSkgb25SZW1vdmUodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkgYXMgYW55LCB0aGlzLmZvcm0uY29udHJvbHNbZmllbGROYW1lIGFzIGFueV0sIHRoaXMpO1xuICAgIHRoaXMuX3JlbW92ZUZvcm1TY2hlbWEoZmllbGROYW1lIGFzIHN0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0T3B0aW9uTGFiZWwoJGV2ZW50OiBhbnksIHNjaGVtZTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICBzY2hlbWUuc2VsZWN0ZWRPcHRpb25MYWJlbCA9ICRldmVudDtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdChidG4/OiBCdG5Db21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5zdWJtaXRGdW5jKSB7XG4gICAgICBidG4/LnNldExvYWRlcih0cnVlKTtcbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KGZvcm1WYWwpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmMoZm9ybVZhbCk7XG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuaW5mbyh0aGlzLnN1Ym1pdFN1Y2Nlc3NUZXh0KCksIDEpO1xuICAgICAgICB0aGlzLl9zdWJtaXNzaW9uUmVzcG9uc2UuZW1pdCh0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmluZm8oZXJyb3IsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgYnRuPy5zZXRMb2FkZXIoZmFsc2UpO1xuICAgIH0gZWxzZSB0aGlzLm9uU3VibWl0LmVtaXQodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWE8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFRGb3JtR3JvdXAsIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD4+IHtcbiAgY2hpbGRyZW4/OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdO1xuICBsYWJlbFR5cGU/OiBPcHRpb25MYWJlbFR5cGU7XG4gIGZpZWxkOiBrZXlvZiBURm9ybUdyb3VwO1xuICBzdWJUeXBlPzogSW5wdXRTdWJUeXBlO1xuICBwcmVzZXRWYWx1ZT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2NoZW1hMjxUU3RydWN0ID0gYW55PlxuICBleHRlbmRzIElGb3JtU2NoZW1hPHtcbiAgICBbSyBpbiBrZXlvZiBUU3RydWN0XT86IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1PcHRpb25zIHtcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImNvbXB1dGVkTG9hZGluZygpXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICNmb3JtVGFnID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdyByb3ctY29scy17eyBncmlkU3R5bGUoKSB9fSByb3ctY29scy1tZC17eyBncmlkTURTdHlsZSgpIH19IHJvdy1jb2xzLWxnLXt7IGdyaWRMR1N0eWxlKCkgfX0gcm93LWNvbHMteHhsLXt7XG4gICAgICAgIGdyaWRYWExTdHlsZSgpXG4gICAgICB9fSBhbGlnbi1pdGVtcy1jZW50ZXIge3sgZm9ybUdyaWRDbGFzcygpIH19XCI+XG4gICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRGb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZS5pZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHNjaGVtZS5jbHMgfX0gXCI+XG4gICAgICAgICAgQHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICd0ZWwnKSB7XG4gICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkIHx8IChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm1cIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbcHJlc2V0VmFsdWVdPVwic2NoZW1lLnByZXNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkIHx8IChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAncmljaHRleHQnKSB7XG4gICAgICAgICAgICAgIDxyaWNoLXRleHQtZWRpdG9yLXJmXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbCFcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGUhXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGQhXCJcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0IVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1ZyFcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZyFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlciFcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuYyFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50IVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYhIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzY2hlbWUudHlwZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwic2NoZW1lLnN0YWNrZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZFNpZ25hbF09XCJzY2hlbWUuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm1jaGFuZ2VFbWl0dGVyKClcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICBAaWYgKHNob3dTdWJtaXRCdG4oKSkge1xuICAgICAgICAgIDxhcHAtYnRuIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHQoKVwiICBncm91cD1cInN1Ym1pdFwiIFtmb3JtXT1cImZvcm1cIiAobWNsaWNrKT1cInN1Ym1pdChzdWJtaXRCdG4pXCIgI3N1Ym1pdEJ0biAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc3VibWl0QnRuVGVtcGxhdGUoKSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJtaXRCdG5UZW1wbGF0ZSgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj5cbiJdfQ==
|
|
@@ -11978,11 +11978,9 @@ class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
11978
11978
|
listenToKey?.unsubscribe();
|
|
11979
11979
|
if (ftr?.nativeElement && submitOnEnterKey)
|
|
11980
11980
|
listenToKey = fromEvent(ftr.nativeElement, 'keydown')
|
|
11981
|
-
.pipe(debounceTime$1(100))
|
|
11981
|
+
.pipe(debounceTime$1(100), filter$1((r) => (r.code === 'Enter' || r.keyCode === 13) && this.form.valid))
|
|
11982
11982
|
.subscribe((r) => {
|
|
11983
|
-
|
|
11984
|
-
if (r.code === 'Enter' || r.keyCode === 13)
|
|
11985
|
-
this.submit(this.submitBtnRef());
|
|
11983
|
+
this.submit(this.submitBtnRef());
|
|
11986
11984
|
});
|
|
11987
11985
|
});
|
|
11988
11986
|
}
|