@eui/components 17.3.7-snapshot-1719498644614 → 17.3.7-snapshot-1719589694390
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/dependencies.html +3 -3
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-datepicker/eui-datepicker.component.mjs +7 -3
- package/eui-datepicker/eui-datepicker.component.d.ts +1 -0
- package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-datepicker.mjs +6 -2
- package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
- package/package.json +3 -3
@@ -1,7 +1,7 @@
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
-
import { Component, EventEmitter, Inject, Injector, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, Directive, forwardRef, HostBinding, ContentChild,
|
2
|
+
import { Component, EventEmitter, Inject, Injector, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, Directive, forwardRef, HostBinding, ContentChild, booleanAttribute, signal, inject, } from '@angular/core';
|
3
3
|
import { FormControl, Validators } from '@angular/forms';
|
4
|
-
import { MAT_DATE_FORMATS } from '@angular/material/core';
|
4
|
+
import { MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
|
5
5
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
6
6
|
import { ComponentPortal, DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
|
7
7
|
import { fromEvent, Subject, takeUntil } from 'rxjs';
|
@@ -98,6 +98,7 @@ export class EuiDatepickerComponent {
|
|
98
98
|
this.destroy$ = new Subject();
|
99
99
|
this.format = inject(MAT_DATE_FORMATS, { optional: true });
|
100
100
|
this.isNull = false;
|
101
|
+
this._locale = signal(inject(MAT_DATE_LOCALE));
|
101
102
|
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
|
102
103
|
this.propagateChange = (_) => { };
|
103
104
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
@@ -113,7 +114,10 @@ export class EuiDatepickerComponent {
|
|
113
114
|
.getState()
|
114
115
|
.pipe(takeUntil(this.destroy$))
|
115
116
|
.subscribe((state) => {
|
117
|
+
this._locale.set(state.id);
|
116
118
|
this.adapter.setLocale(state.id);
|
119
|
+
console.log('locale', state.id);
|
120
|
+
console.log('format', this.format.display.dateInput);
|
117
121
|
});
|
118
122
|
if (this.isDatetimepicker && (this.minDate || this.maxDate)) {
|
119
123
|
this.inputFormControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
|
@@ -765,4 +769,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
765
769
|
type: HostBinding,
|
766
770
|
args: ['class']
|
767
771
|
}] } });
|
768
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGVwaWNrZXIvZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGVwaWNrZXIvZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUtMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUdKLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUtaLE1BQU0sRUFDTixnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUErQixnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQXFDLE1BQU0sV0FBVyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3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Q3BFOztBQU9ELE1BQU0sT0FBTywyQkFBMkI7aUlBQTNCLDJCQUEyQjtxSEFBM0IsMkJBQTJCLCtDQUZ6QixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDOzsyRkFFOUQsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxRTs7QUFHRCxvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLHlCQUF5QjtJQUR0QztRQUUwQixVQUFLLEdBQUcsZ0NBQWdDLENBQUM7S0FDakU7aUlBRlcseUJBQXlCO3FIQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7OEJBRW5CLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gICAgQXBwbGljYXRpb25SZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRG9DaGVjayxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgRGlyZWN0aXZlLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTWF0RGF0ZUZvcm1hdHMsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb24sIE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgX21vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBfcm9sbHVwTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5cbmltcG9ydCB7IEV1aVRpbWVwaWNrZXJDb21wb25lbnQsIEV1aURhdGVUaW1lUGlja2VyQ29uZmlnIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS10aW1lcGlja2VyJztcbmltcG9ydCB7IERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRywgTG9jYWxlU2VydmljZSwgRXVpQXBwU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEJhc2VTdGF0ZXNEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcblxuY29uc3QgbW9tZW50ID0gX3JvbGx1cE1vbWVudCB8fCBfbW9tZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1kYXRlcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgJ2V1aVN1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICdldWlJbmZvJyxcbiAgICAgICAgICAgICAgICAnZXVpV2FybmluZycsXG4gICAgICAgICAgICAgICAgJ2V1aURhbmdlcicsXG4gICAgICAgICAgICAgICAgJ2V1aVZhcmlhbnQnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkNoYW5nZXMsIERvQ2hlY2sge1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmJhc2VTdGF0ZXNEaXJlY3RpdmUuZ2V0Q3NzQ2xhc3NlcygnZXVpLWRhdGVwaWNrZXInKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5wdXRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHB1YmxpYyBicmVha3BvaW50c1ZhbHVlOiBhbnkgPSB7XG4gICAgICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICAgICAgaXNUYWJsZXQ6IGZhbHNlLFxuICAgICAgICBpc0x0RGVza3RvcDogZmFsc2UsXG4gICAgICAgIGlzRGVza3RvcDogZmFsc2UsXG4gICAgICAgIGlzWEw6IGZhbHNlLFxuICAgICAgICBpc1hYTDogZmFsc2UsXG4gICAgfTtcbiAgICBzaG93RGF0ZUJ1dHRvbiA9IHRydWU7XG4gICAgdGltZVBpY2tlckluc3RhbmNlOiBFdWlUaW1lcGlja2VyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJywgeyBzdGF0aWM6IHRydWUgfSkgY2FsZW5kYXI6IE1hdERhdGVwaWNrZXI8YW55PjtcbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZVBvcnRhbFJlZicpIHRlbXBsYXRlUG9ydGFsUmVmOiBUZW1wbGF0ZVJlZjxFdWlBY3Rpb25CdXR0b25zRGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlBY3Rpb25CdXR0b25zRGlyZWN0aXZlKSkgZXVpQWN0aW9uQnV0dG9uczogRXVpQWN0aW9uQnV0dG9uc0RpcmVjdGl2ZTtcblxuICAgIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBkYXRlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzID0gJyc7XG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSB0b2dnbGVySWNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRvZ2dsZXJJY29uU3ZnID0gJ2V1aS1jYWxlbmRhci1vdXRsaW5lJztcbiAgICBASW5wdXQoKSB0b2dnbGVyTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHR5cGU6ICd5ZWFyJyB8ICdtb250aCcgfCAncmVndWxhcicgPSAncmVndWxhcic7XG4gICAgQElucHV0KCkgc3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInO1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRhdGVwaWNrZXInO1xuICAgIEBJbnB1dCgpIG1pbkRhdGU6IGFueTtcbiAgICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7XG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckZpbHRlcjogKGQ6IGFueSkgPT4gYm9vbGVhbiA9IHRoaXMuZGF0ZXBpY2tlckZpbHRlcmluZztcbiAgICBASW5wdXQoKSBkYXRlT3V0cHV0Rm9ybWF0OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY3VzdG9tSGVhZGVyOiBhbnk7XG4gICAgQElucHV0KCkgZGF0ZUNsYXNzOiBNYXRDYWxlbmRhckNlbGxDbGFzc0Z1bmN0aW9uPGFueT47XG4gICAgQElucHV0KCkgc3RlcEhvdXJzID0gMTtcbiAgICBASW5wdXQoKSBzdGVwTWludXRlcyA9IDE7XG4gICAgQElucHV0KCkgc3RlcFNlY29uZHMgPSAxO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0RhdGV0aW1lcGlja2VyID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1NlY29uZHMgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNPbmVJbnB1dEZpZWxkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc05vQnV0dG9uID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRGF0ZXBpY2tlckJsb2NrID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzUmVhZE9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0lucHV0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1BpY2tlckRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDbGVhcmFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NsZWFyYWJsZSAmJiAhdGhpcy5pc1JlYWRPbmx5O1xuICAgIH1cbiAgICBzZXQgaXNDbGVhcmFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NsZWFyYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2xlYXJhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgcmVzdHJpY3RUb1JlZ2V4KCk6IFJlZ0V4cCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN0cmljdFRvUmVnZXg7XG4gICAgfVxuICAgIHNldCByZXN0cmljdFRvUmVnZXgodmFsdWU6IHN0cmluZyB8IFJlZ0V4cCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdHJpY3RUb1JlZ2V4ID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXN0cmljdFRvUmVnZXggPSBuZXcgUmVnRXhwKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXN0cmljdFRvUmVnZXggY2FuIG9ubHkgYmUgc3RyaW5nIG9yIFJlZ0V4cCwgaXQgY2Fubm90IGJlICR7dHlwZW9mIHZhbHVlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3Jlc3RyaWN0VG9SZWdleDogUmVnRXhwO1xuXG4gICAgcHJvdGVjdGVkIGhhc0FyaWFSZXF1aXJlZEF0dHJpYnV0ZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGZvcm1hdDogTWF0RGF0ZUZvcm1hdHMgPSBpbmplY3QoTUFUX0RBVEVfRk9STUFUUywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHBvcnRhbEhvc3Q6IERvbVBvcnRhbE91dGxldDtcbiAgICBwcml2YXRlIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPEV1aVRpbWVwaWNrZXJDb21wb25lbnQ+O1xuICAgIHByaXZhdGUgdGVtcGxhdGVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsPEV1aUFjdGlvbkJ1dHRvbnNEaXJlY3RpdmU+O1xuICAgIHByaXZhdGUgaXNOdWxsID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbG9jYWxlU2VydmljZTogTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBFdWlBcHBTaGVsbFNlcnZpY2U6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwdWJsaWMgYmFzZVN0YXRlc0RpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IEV1aUxldHRlckZvcm1hdERpcmVjdGl2ZSkpIHB1YmxpYyBldWlMZXR0ZXJGb3JtYXQ6IEV1aUxldHRlckZvcm1hdERpcmVjdGl2ZSxcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5pc0lucHV0RGlzYWJsZWQgPyB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpIDogdGhpcy5pbnB1dEZvcm1Db250cm9sLmVuYWJsZSgpO1xuXG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZVxuICAgICAgICAgICAgLmdldFN0YXRlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGFwdGVyLnNldExvY2FsZShzdGF0ZS5pZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZXRpbWVwaWNrZXIgJiYgKHRoaXMubWluRGF0ZSB8fCB0aGlzLm1heERhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1RpbWVQaWNrZXJWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdyZWd1bGFyJyAmJiAhdGhpcy5pc0RhdGV0aW1lcGlja2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcGlja2VyLlBMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3JlZ3VsYXInICYmIHRoaXMuaXNEYXRldGltZXBpY2tlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXBpY2tlci5JU0RBVEVUSU1FUElDS0VSJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcGlja2VyLllFQVItUExBQ0VIT0xERVInKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcGlja2VyLk1PTlRILVBMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLkV1aUFwcFNoZWxsU2VydmljZS5icmVha3BvaW50cyQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoYmtwcykgPT4gKHRoaXMuYnJlYWtwb2ludHNWYWx1ZSA9IGJrcHMpKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0QXJpYVJlcXVpcmVkQXR0cmlidXRlKHRoaXMuY29udHJvbCk7XG4gICAgICAgIHRoaXMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dEFyaWFSZXF1aXJlZEF0dHJpYnV0ZSh0aGlzLmNvbnRyb2wpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZVBvcnRhbFJlZiwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZXRpbWVwaWNrZXIgfHwgdGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyWydjbG9zZUNhbGVuZGFyJ10gPSB0aGlzLmNhbGVuZGFyLmNsb3NlO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5jbG9zZSA9ICgpOiBib29sZWFuID0+IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICAvLyBtYXJrcyB0aGUgaW5wdXQgY29udHJvbCBhcyB0b3VjaGVkL2ludmFsaWQgaWYgdGhlIGZvcm0gY29udHJvbCBpcyB0b3VjaGVkL2ludmFsaWRcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8udG91Y2hlZCA/IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCkgOiB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LmludmFsaWQgPyB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKHRoaXMuY29udHJvbC5lcnJvcnMpIDogdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1snaXNSZWFkT25seSddKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1JlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0ZUJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dEYXRlQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2lzRGlzYWJsZWQnXSkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMuaXNEaXNhYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWyd2YWx1ZSddKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0ICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1snaXNDbGVhcmFibGUnXSkge1xuICAgICAgICAgICAgLy8gd2hlbiBpcyBjbGVhcmFibGUgaXMgdXNlZCBsaXN0ZW4gaWYgb25jbGVhciBpcyBmaXJlZCBhbmQgdXBkYXRlIHRoZSB2YWx1ZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbGVhcmFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVJbmplY3RvcihkYXRhOiBhbnkpOiBJbmplY3RvciB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zOiBTdGF0aWNQcm92aWRlciA9IFt7IHByb3ZpZGU6IERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRywgdXNlVmFsdWU6IGRhdGEgfV07XG4gICAgICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBpbmplY3RvclRva2VucyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlbkNhbGVuZGFyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5vcGVuKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRGF0ZXRpbWVwaWNrZXIgfHwgdGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5vcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIGxpc3RlbnMgdG8gdGhlIGtleWRvd24gZXZlbnQgb25jZSB0aGUgY2FsZW5kYXIgb3BlbmVkXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzogLy9jbG9zZXMgdGhlIGNhbGVuZGFyIG9uIEVzY2FwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xvc2VzIHRoZSBjYWxlbmRhciBpZiBwcmVzc2luZyBFbnRlciBvbiB0aGUgY2xvc2UgY2FsZW5kYXIgYnV0dG9uIG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRFdmVudFBhdGgoZXZlbnQpLmZvckVhY2goKHA6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuY2xhc3NOYW1lICYmIHAuY2xhc3NOYW1lLmluZGV4T2YoJ21hdC1kYXRlcGlja2VyLWNsb3NlLWJ1dHRvbicpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEYXRldGltZXBpY2tlcikge1xuICAgICAgICAgICAgICAgIHRoaXMucG9ydGFsSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21hdC1jYWxlbmRhcicpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgLy8gVE9ETzogY2hlY2sgYWdhaW4gaWYgdGhlcmUgaXMgYW4gdXBkYXRlIG9uIGZyYW1ld29yayBzaWRlIEVVSS02MjA3XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwUmVmLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZUNvbmZpZzogRXVpRGF0ZVRpbWVQaWNrZXJDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhvdXJzOiB0aGlzLnZhbHVlICYmIG1vbWVudCh0aGlzLnZhbHVlKS5ob3VycygpLFxuICAgICAgICAgICAgICAgICAgICBtaW5zOiB0aGlzLnZhbHVlICYmIG1vbWVudCh0aGlzLnZhbHVlKS5taW51dGVzKCksXG4gICAgICAgICAgICAgICAgICAgIHNlY3M6IHRoaXMudmFsdWUgJiYgbW9tZW50KHRoaXMudmFsdWUpLnNlY29uZHMoKSxcbiAgICAgICAgICAgICAgICAgICAgaXNEYXRldGltZXBpY2tlcjogdGhpcy5pc0RhdGV0aW1lcGlja2VyLFxuICAgICAgICAgICAgICAgICAgICBoYXNTZWNvbmRzOiB0aGlzLmhhc1NlY29uZHMsXG4gICAgICAgICAgICAgICAgICAgIGlzT25lSW5wdXRGaWVsZDogdGhpcy5pc09uZUlucHV0RmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHN0ZXBIb3VyczogdGhpcy5zdGVwSG91cnMsXG4gICAgICAgICAgICAgICAgICAgIHN0ZXBNaW51dGVzOiB0aGlzLnN0ZXBNaW51dGVzLFxuICAgICAgICAgICAgICAgICAgICBzdGVwU2Vjb25kczogdGhpcy5zdGVwU2Vjb25kcyxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tGbjogKGhvdXJzOiBudW1iZXIsIG1pbnM6IG51bWJlciwgc2VjczogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtb21lbnQodGhpcy52YWx1ZSwgbW9tZW50LklTT184NjAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1vbWVudCh0aGlzLnZhbHVlLCB0aGlzLmZvcm1hdC5wYXJzZS5kYXRlSW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXI6IGhvdXJzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlOiBtaW5zIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBzZWNzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRXVpVGltZXBpY2tlckNvbXBvbmVudCwgbnVsbCwgdGhpcy5jcmVhdGVJbmplY3Rvcih0aW1lQ29uZmlnKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RXVpVGltZXBpY2tlckNvbXBvbmVudD4gPSB0aGlzLnBvcnRhbEhvc3QuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHRoaXMucG9ydGFsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLnBvcnRhbEhvc3Q/LmRldGFjaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gY2FsZW5kYXIgb3BlbnMgYW5kIGlzRGF0ZXRpbWVwaWNrZXIgb3IgZXVpLWFjdGlvbi1idXR0b25zIGRpcmVjdGl2ZSB1c2VkLCBpdCBjbG9zZXMgdGhlIGNhbGVuZGFyIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGVcbiAgICAgKiBvdmVybGF5LiBJZiBldWktYWN0aW9uLWJ1dHRvbnMgZGlyZWN0aXZlIGlzIHVzZWQgaXQgcmVnaXN0ZXJzIHRoZSB0ZW1wbGF0ZSBwb3J0YWwgd2hlcmUgdGhlIHVzZXIgY2FuIGFkZCBwcm9qZWN0ZWQgY29udGVudCBhcyBhXG4gICAgICogZm9vdGVyLlxuICAgICAqL1xuICAgIG9uT3BlbmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0RhdGV0aW1lcGlja2VyIHx8IHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIucmVnaXN0ZXJBY3Rpb25zKHRoaXMudGVtcGxhdGVQb3J0YWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyWydfb3ZlcmxheVJlZiddWydfYmFja2Ryb3BDbGljayddLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFdmVudFBhdGgoZXZlbnQpOiBhbnkge1xuICAgICAgICBpZiAoZXZlbnQucGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGV2ZW50LnBhdGg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXRoID0gW107XG4gICAgICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cbiAgICAgICAgd2hpbGUgKHRhcmdldC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBwYXRoLnB1c2godGFyZ2V0KTtcbiAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcGF0aC5wdXNoKGRvY3VtZW50LCB3aW5kb3cpO1xuXG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIGNob3NlbkRhdGVIYW5kbGVyKG5vcm1hbGl6ZWREYXRlOiBhbnksIGNhbGVuZGFyOiBNYXREYXRlcGlja2VyPGFueT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBtb21lbnQobm9ybWFsaXplZERhdGUsIHRoaXMuZGF0ZU91dHB1dEZvcm1hdCk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShmb3JtYXR0ZWRWYWx1ZS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoZm9ybWF0dGVkVmFsdWUuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoZm9ybWF0dGVkVmFsdWUuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5vcm1hbGl6ZWREYXRlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogbnVsbCk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxlbmRhci5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkYXRlcGlja2VyRmlsdGVyaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EYXRlSW5wdXQoZTogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8TW9tZW50IHwgRGF0ZSB8IHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZXRpbWVwaWNrZXIpIHtcbiAgICAgICAgICAgIGlmIChlLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KGUudmFsdWUsIHRoaXMuZGF0ZU91dHB1dEZvcm1hdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMudmFsdWUuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoZT8udmFsdWUgPyBlLnZhbHVlIDogbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkRhdGVDaGFuZ2UoZTogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8TW9tZW50IHwgRGF0ZSB8IHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmlzTnVsbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzTnVsbCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNEYXRldGltZXBpY2tlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy52YWx1ZSAmJiBtb21lbnQodGhpcy52YWx1ZSkuaG91cnMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5zID0gdGhpcy52YWx1ZSAmJiBtb21lbnQodGhpcy52YWx1ZSkubWludXRlcygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3MgPSB0aGlzLnZhbHVlICYmIG1vbWVudCh0aGlzLnZhbHVlKS5zZWNvbmRzKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KGUudmFsdWUsIHRoaXMuZm9ybWF0LnBhcnNlLmRhdGVJbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQoe1xuICAgICAgICAgICAgICAgICAgICBob3VyOiBob3VycyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6IG1pbnMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBzZWNzIHx8IDAsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYWxlbmRhci5vcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQgJiYgdGhpcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudChlLnZhbHVlLCB0aGlzLmRhdGVPdXRwdXRGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdCh0aGlzLnZhbHVlLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChlPy52YWx1ZSA/IGUudmFsdWUgOiBudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VkSW5wdXQoZTogc3RyaW5nIHwgRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgZSA9PT0gJ3N0cmluZycgPyBlIDogKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuaXNOdWxsKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KHZhbHVlLCB0aGlzLmZvcm1hdC5wYXJzZS5kYXRlSW5wdXQpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCAmJiB0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XG4gICAgfVxuXG4gICAgb25LZXlwcmVzcyhlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuQ2FsZW5kYXIoKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9yZXN0cmljdFRvUmVnZXgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fcmVzdHJpY3RUb1JlZ2V4LnRlc3QoZS5rZXkpKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0b2RheSdzIGRhdGVcbiAgICAgKi9cbiAgICBzZWxlY3RUb2RheSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKG1vbWVudCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGNhbGVuZGFyIHdoZW4gaXNEYXRldGltZXBpY2tlciBvciBldWktYWN0aW9uLWJ1dHRvbnMgdXNlZCBhbmQgcmVtb3ZlcyB0aGUgYXBwbGllZCBmb290ZXIgd2hlbiBldWktYWN0aW9uLWJ1dHRvbnMgdXNlZFxuICAgICAqL1xuICAgIGNsb3NlQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJbJ2Nsb3NlQ2FsZW5kYXInXSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIucmVtb3ZlQWN0aW9ucyh0aGlzLnRlbXBsYXRlUG9ydGFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gZXVpLWFjdGlvbi1idXR0b25zIHVzZWQsIGl0IGFwcGxpZXMgdGhlIGRhdGUgc2VsZWN0aW9uIGFuZCBjbG9zZXMgdGhlIGNhbGVuZGFyXG4gICAgICovXG4gICAgb25EYXRlU2VsZWN0QXBwbHkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIuX2FwcGx5UGVuZGluZ1NlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgY29udlR5cGVUb1N0YXJ0Vmlldyh0eXBlOiBzdHJpbmcpOiAneWVhcicgfCAnbW9udGgnIHwgJ211bHRpLXllYXInIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd5ZWFyJztcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XG4gICAgICAgICAgICBjYXNlICdyZWd1bGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21vbnRoJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAvLyBkaXNhYmxlcyBvbmx5IHRoZSBpbnB1dCB0aHJvdWdoIHJlYWN0aXZlIGZvcm1zXG4gICAgICAgICAgICBpZiAodGhpcy5pc0lucHV0RGlzYWJsZWQgJiYgIXRoaXMuaXNQaWNrZXJEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSB0aGlzLmlzUGlja2VyRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBkaXNhYmxlcyBvbmx5IHRoZSBidXR0b24gdGhyb3VnaCByZWFjdGl2ZSBmb3Jtc1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQnV0dG9uRGlzYWJsZWQgJiYgIXRoaXMuaXNJbnB1dERpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0lucHV0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSB0aGlzLmlzUGlja2VyRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5wdXREaXNhYmxlZCA9IHRoaXMuaXNQaWNrZXJEaXNhYmxlZCA9IHRoaXMuaXNCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5wdXREaXNhYmxlZCA9IHRoaXMuaXNQaWNrZXJEaXNhYmxlZCA9IHRoaXMuaXNCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0lucHV0RGlzYWJsZWQgPyB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpIDogdGhpcy5pbnB1dEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoZSBmb3JtIGZpZWxkIGFzIHRvdWNoZWQgd2hlbiBmb2N1c2luZyBvdXQgdG8gdHJpZ2dlciB2YWxpZGF0aW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uRm9jdXNPdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUaW1lUGlja2VyVmFsaWRpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgKCFtb21lbnQodGhpcy5taW5EYXRlKS5pc0JlZm9yZSh0aGlzLnZhbHVlKSB8fCB0aGlzLmFyZVNhbWVEYXRlcyhtb21lbnQodGhpcy52YWx1ZSkudG9EYXRlKCksIHRoaXMubWluRGF0ZSkpKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3Vyc0Rvd25EaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWludXRlc0Rvd25EaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2Vjb25kc0Rvd25EaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoIW1vbWVudCh0aGlzLm1pbkRhdGUpLmlzQmVmb3JlKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLm1pbkRhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gdGhpcy5taW5EYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5taW5EYXRlLmdldFNlY29uZHMoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3VycyA9IGhvdXJzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW5zID0gbWludXRlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2VjcyA9IHNlY29uZHM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJyA/IG1vbWVudCh0aGlzLnZhbHVlLCBtb21lbnQuSVNPXzg2MDEpIDogbW9tZW50KHRoaXMudmFsdWUsIHRoaXMuZm9ybWF0LnBhcnNlLmRhdGVJbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQoe1xuICAgICAgICAgICAgICAgICAgICBob3VyOiBob3VycyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6IG1pbnV0ZXMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBzZWNvbmRzIHx8IDAsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3Vyc0Rvd25EaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnV0ZXNEb3duRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNvbmRzRG93bkRpc2FibGUoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4RGF0ZSAmJiAoIW1vbWVudCh0aGlzLm1heERhdGUpLmlzQWZ0ZXIodGhpcy52YWx1ZSkgfHwgdGhpcy5hcmVTYW1lRGF0ZXMobW9tZW50KHRoaXMudmFsdWUpLnRvRGF0ZSgpLCB0aGlzLm1heERhdGUpKSkge1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnNVcERpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW51dGVzVXBEaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2Vjb25kc1VwRGlzYWJsZSh0cnVlKTtcblxuICAgICAgICAgICAgaWYgKCFtb21lbnQodGhpcy5tYXhEYXRlKS5pc0FmdGVyKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLm1heERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gdGhpcy5tYXhEYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5tYXhEYXRlLmdldFNlY29uZHMoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3VycyA9IGhvdXJzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW5zID0gbWludXRlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2VjcyA9IHNlY29uZHM7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnID8gbW9tZW50KHRoaXMudmFsdWUsIG1vbWVudC5JU09fODYwMSkgOiBtb21lbnQodGhpcy52YWx1ZSwgdGhpcy5mb3JtYXQucGFyc2UuZGF0ZUlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNldCh7XG4gICAgICAgICAgICAgICAgICAgIGhvdXI6IGhvdXJzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogbWludXRlcyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHNlY29uZHMgfHwgMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUuaG91cigpID09PSAwICYmIHRoaXMudmFsdWUubWludXRlKCkgPT09IDAgJiYgdGhpcy52YWx1ZS5zZWNvbmQoKSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIG1vbWVudCh0aGlzLm1heERhdGUpLmhvdXIoKSA9PT0gMCAmJiBtb21lbnQodGhpcy5tYXhEYXRlKS5taW51dGUoKSA9PT0gMCAmJiBtb21lbnQodGhpcy5tYXhEYXRlKS5zZWNvbmQoKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3Vyc0Rvd25EaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW51dGVzRG93bkRpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY29uZHNEb3duRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3Vyc0Rvd25EaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWludXRlc0Rvd25EaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2Vjb25kc0Rvd25EaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3Vyc1VwRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW51dGVzVXBEaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY29uZHNVcERpc2FibGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcmVTYW1lRGF0ZXMoZGF0ZTE6IERhdGUsIGRhdGUyOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBkYXRlMS5nZXRGdWxsWWVhcigpID09PSBkYXRlMi5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgICAgICBkYXRlMS5nZXRNb250aCgpID09PSBkYXRlMi5nZXRNb250aCgpICYmXG4gICAgICAgICAgICBkYXRlMS5nZXREYXRlKCkgPT09IGRhdGUyLmdldERhdGUoKSAmJlxuICAgICAgICAgICAgZGF0ZTEuZ2V0SG91cnMoKSA9PT0gZGF0ZTIuZ2V0SG91cnMoKSAmJlxuICAgICAgICAgICAgZGF0ZTEuZ2V0TWludXRlcygpID09PSBkYXRlMi5nZXRNaW51dGVzKCkgJiZcbiAgICAgICAgICAgIGRhdGUxLmdldFNlY29uZHMoKSA9PT0gZGF0ZTIuZ2V0U2Vjb25kcygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGBhcmlhLXJlcXVpcmVkYCBhdHRyaWJ1dGUgb24gdGhlIGlucHV0IGVsZW1lbnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUlucHV0QXJpYVJlcXVpcmVkQXR0cmlidXRlKGNvbnRyb2w6IE5nQ29udHJvbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0FyaWFSZXF1aXJlZEF0dHJpYnV0ZSA9IGNvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBMRVRURVJfRk9STUFUID0ge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ0xMJyxcbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnTEwnLFxuICAgICAgICBtb250aFllYXJMYWJlbDogJ0xMJyxcbiAgICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFlFQVJfRk9STUFUID0ge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ1lZWVknLFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdZWVlZJyxcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6ICdZWVlZJyxcbiAgICAgICAgZGF0ZUExMXlMYWJlbDogJ1lZWVknLFxuICAgICAgICBtb250aFllYXJBMTF5TGFiZWw6ICdZWVlZJyxcbiAgICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IE1PTlRIX1lFQVJfRk9STUFUID0ge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ01NL1lZWVknLFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdNTS9ZWVlZJyxcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6ICdNTU0gWVlZWScsXG4gICAgICAgIGRhdGVBMTF5TGFiZWw6ICdMTCcsXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXG4gICAgfSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2V1aUxldHRlckZvcm1hdF0nLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IExFVFRFUl9GT1JNQVQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aUxldHRlckZvcm1hdERpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tldWlZZWFyRm9ybWF0XScsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogWUVBUl9GT1JNQVQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aVllYXJGb3JtYXREaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXVpTW9udGhZZWFyRm9ybWF0XScsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTU9OVEhfWUVBUl9GT1JNQVQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aU1vbnRoWWVhckZvcm1hdERpcmVjdGl2ZSB7fVxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpLWFjdGlvbi1idXR0b25zJyB9KVxuZXhwb3J0IGNsYXNzIEV1aUFjdGlvbkJ1dHRvbnNEaXJlY3RpdmUge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdldWktZGF0ZXBpY2tlcl9fYWN0aW9uLWJ1dHRvbnMnO1xuIH1cbiIsIjxkaXYgY2xhc3M9XCJldWktZGF0ZXBpY2tlcl9fd3JhcHBlciB7eyBzdHlsZUNsYXNzIH19XCIgW2NsYXNzLmV1aS1kYXRlcGlja2VyX193cmFwcGVyLS1yZXNwb25zaXZlXT1cImlzRGF0ZXBpY2tlckJsb2NrXCI+XG4gICAgPGRpdiBldWlJbnB1dEdyb3VwPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLWlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgICAgICBldWlJbnB1dFRleHRcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICAgICAgW2V1aUNsZWFyYWJsZV09XCJpc0NsZWFyYWJsZVwiXG4gICAgICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXIoKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1kYXRlcGlja2VyLS1uby1idXR0b25dPVwiaGFzTm9CdXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktZGF0ZXBpY2tlci0tbG9uZy1mb3JtYXRdPVwiIWlzRGF0ZXBpY2tlckJsb2NrICYmIChpc0RhdGV0aW1lcGlja2VyIHx8IGV1aUxldHRlckZvcm1hdClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktZGF0ZXBpY2tlci0tYmxvY2tdPVwiaXNEYXRlcGlja2VyQmxvY2tcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiaGFzQXJpYVJlcXVpcmVkQXR0cmlidXRlID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImlucHV0Rm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICAoZGF0ZUlucHV0KT1cIm9uRGF0ZUlucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZXBpY2tlckZpbHRlclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXRlIElucHV0IEZpZWxkXCJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib25LZXlwcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImlzRGF0ZXRpbWVwaWNrZXIgPyBjaGFuZ2VkSW5wdXQoJGV2ZW50KSA6IG51bGxcIiAvPlxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgI2NhbGVuZGFyXG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzcz1cIm1hdC1jYWxlbmRhci17eyB0eXBlIH19XCJcbiAgICAgICAgICAgICAgICBbc3RhcnRWaWV3XT1cInR5cGUgPT09ICdyZWd1bGFyJyA/IChzdGFydFZpZXcgPyBzdGFydFZpZXcgOiBjb252VHlwZVRvU3RhcnRWaWV3KHR5cGUpKSA6IGNvbnZUeXBlVG9TdGFydFZpZXcodHlwZSlcIlxuICAgICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwidHlwZSA9PT0gJ3llYXInID8gY2hvc2VuRGF0ZUhhbmRsZXIoJGV2ZW50LCBjYWxlbmRhcikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJ0eXBlID09PSAnbW9udGgnID8gY2hvc2VuRGF0ZUhhbmRsZXIoJGV2ZW50LCBjYWxlbmRhcikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbdG91Y2hVaV09XCJicmVha3BvaW50c1ZhbHVlLmlzVGFibGV0IHx8IGJyZWFrcG9pbnRzVmFsdWUuaXNNb2JpbGVcIlxuICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cImlzRGF0ZXRpbWVwaWNrZXIgPyAnZXVpLWRhdGVwaWNrZXItLWNvbnRhaW5lci1oZWlnaHQtbGFyZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUGlja2VyRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAgICAgICAgIFtkYXRlQ2xhc3NdPVwiZGF0ZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAob3BlbmVkKT1cIm9uT3BlbmVkKClcIj5cbiAgICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGFzTm9CdXR0b24gJiYgc2hvd0RhdGVCdXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FsZW5kYXIoKVwiXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgW2V1aUljb25CdXR0b25dPVwiIXRvZ2dsZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cImlzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiF0b2dnbGVyTGFiZWwgJiYgdG9nZ2xlckljb25cIiBldWlJY29uIGFyaWEtbGFiZWw9XCJPcGVuIENhbGVuZGFyXCIgaWNvbkNsYXNzPVwie3sgdG9nZ2xlckljb24gfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0b2dnbGVyTGFiZWwgJiYgIXRvZ2dsZXJJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cInt7IHRvZ2dsZXJJY29uU3ZnIH19XCIgYXJpYS1sYWJlbD1cIk9wZW4gQ2FsZW5kYXJcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvZ2dsZXJMYWJlbFwiPnt7IHRvZ2dsZXJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlUG9ydGFsUmVmPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1hY3Rpb24tYnV0dG9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
772
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGVwaWNrZXIvZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGVwaWNrZXIvZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUtMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUdKLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUtaLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHbEQsT0FBTyxFQUFFLHNCQUFzQixFQUEyQixNQUFNLGdDQUFnQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBcUMsTUFBTSxXQUFXLENBQUM7QUFDeEYsT0FBTyxFQUFFLG1C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QVEsRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDdEU7O0FBT0QsTUFBTSxPQUFPLHNCQUFzQjtpSUFBdEIsc0JBQXNCO3FIQUF0QixzQkFBc0IsMENBRnBCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOzsyRkFFeEQsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztpQkFDcEU7O0FBT0QsTUFBTSxPQUFPLDJCQUEyQjtpSUFBM0IsMkJBQTJCO3FIQUEzQiwyQkFBMkIsK0NBRnpCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7OzJGQUU5RCwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFFOztBQUdELG9CQUFvQjtBQUVwQixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRTBCLFVBQUssR0FBRyxnQ0FBZ0MsQ0FBQztLQUNqRTtpSUFGVyx5QkFBeUI7cUhBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTs4QkFFbkIsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBEb0NoZWNrLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFN0YXRpY1Byb3ZpZGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBEaXJlY3RpdmUsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIENvbXBvbmVudFJlZixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIHNpZ25hbCxcbiAgICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTWF0RGF0ZUZvcm1hdHMsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbiwgTWF0RGF0ZXBpY2tlciwgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgRG9tUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCBfbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIF9yb2xsdXBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuaW1wb3J0IHsgRXVpVGltZXBpY2tlckNvbXBvbmVudCwgRXVpRGF0ZVRpbWVQaWNrZXJDb25maWcgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLXRpbWVwaWNrZXInO1xuaW1wb3J0IHsgRFlOQU1JQ19DT01QT05FTlRfQ09ORklHLCBMb2NhbGVTZXJ2aWNlLCBFdWlBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVN0YXRlc0RpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuXG5jb25zdCBtb21lbnQgPSBfcm9sbHVwTW9tZW50IHx8IF9tb21lbnQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWRhdGVwaWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICAnZXVpU3VjY2VzcycsXG4gICAgICAgICAgICAgICAgJ2V1aUluZm8nLFxuICAgICAgICAgICAgICAgICdldWlXYXJuaW5nJyxcbiAgICAgICAgICAgICAgICAnZXVpRGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAnZXVpVmFyaWFudCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aURhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3RoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZS5nZXRDc3NDbGFzc2VzKCdldWktZGF0ZXBpY2tlcicpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnB1dEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgcHVibGljIGJyZWFrcG9pbnRzVmFsdWU6IGFueSA9IHtcbiAgICAgICAgaXNNb2JpbGU6IGZhbHNlLFxuICAgICAgICBpc1RhYmxldDogZmFsc2UsXG4gICAgICAgIGlzTHREZXNrdG9wOiBmYWxzZSxcbiAgICAgICAgaXNEZXNrdG9wOiBmYWxzZSxcbiAgICAgICAgaXNYTDogZmFsc2UsXG4gICAgICAgIGlzWFhMOiBmYWxzZSxcbiAgICB9O1xuICAgIHNob3dEYXRlQnV0dG9uID0gdHJ1ZTtcbiAgICB0aW1lUGlja2VySW5zdGFuY2U6IEV1aVRpbWVwaWNrZXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnY2FsZW5kYXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjYWxlbmRhcjogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlUG9ydGFsUmVmJykgdGVtcGxhdGVQb3J0YWxSZWY6IFRlbXBsYXRlUmVmPEV1aUFjdGlvbkJ1dHRvbnNEaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEV1aUFjdGlvbkJ1dHRvbnNEaXJlY3RpdmUpKSBldWlBY3Rpb25CdXR0b25zOiBFdWlBY3Rpb25CdXR0b25zRGlyZWN0aXZlO1xuXG4gICAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xuICAgIEBJbnB1dCgpIHRvZ2dsZXJJY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9nZ2xlckljb25TdmcgPSAnZXVpLWNhbGVuZGFyLW91dGxpbmUnO1xuICAgIEBJbnB1dCgpIHRvZ2dsZXJMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHlwZTogJ3llYXInIHwgJ21vbnRoJyB8ICdyZWd1bGFyJyA9ICdyZWd1bGFyJztcbiAgICBASW5wdXQoKSBzdGFydFZpZXc6ICdtb250aCcgfCAneWVhcicgfCAnbXVsdGkteWVhcic7XG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICdldWktZGF0ZXBpY2tlcic7XG4gICAgQElucHV0KCkgbWluRGF0ZTogYW55O1xuICAgIEBJbnB1dCgpIG1heERhdGU6IGFueTtcbiAgICBASW5wdXQoKSBkYXRlcGlja2VyRmlsdGVyOiAoZDogYW55KSA9PiBib29sZWFuID0gdGhpcy5kYXRlcGlja2VyRmlsdGVyaW5nO1xuICAgIEBJbnB1dCgpIGRhdGVPdXRwdXRGb3JtYXQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXN0b21IZWFkZXI6IGFueTtcbiAgICBASW5wdXQoKSBkYXRlQ2xhc3M6IE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb248YW55PjtcbiAgICBASW5wdXQoKSBzdGVwSG91cnMgPSAxO1xuICAgIEBJbnB1dCgpIHN0ZXBNaW51dGVzID0gMTtcbiAgICBASW5wdXQoKSBzdGVwU2Vjb25kcyA9IDE7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRGF0ZXRpbWVwaWNrZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU2Vjb25kcyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc09uZUlucHV0RmllbGQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzTm9CdXR0b24gPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNEYXRlcGlja2VyQmxvY2sgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNSZWFkT25seSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzSW5wdXREaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzUGlja2VyRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NsZWFyYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xlYXJhYmxlICYmICF0aGlzLmlzUmVhZE9ubHk7XG4gICAgfVxuICAgIHNldCBpc0NsZWFyYWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2xlYXJhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDbGVhcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCByZXN0cmljdFRvUmVnZXgoKTogUmVnRXhwIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3RyaWN0VG9SZWdleDtcbiAgICB9XG4gICAgc2V0IHJlc3RyaWN0VG9SZWdleCh2YWx1ZTogc3RyaW5nIHwgUmVnRXhwKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXN0cmljdFRvUmVnZXggPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RyaWN0VG9SZWdleCA9IG5ldyBSZWdFeHAodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlc3RyaWN0VG9SZWdleCBjYW4gb25seSBiZSBzdHJpbmcgb3IgUmVnRXhwLCBpdCBjYW5ub3QgYmUgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVzdHJpY3RUb1JlZ2V4OiBSZWdFeHA7XG5cbiAgICBwcm90ZWN0ZWQgaGFzQXJpYVJlcXVpcmVkQXR0cmlidXRlOiBib29sZWFuO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgZm9ybWF0OiBNYXREYXRlRm9ybWF0cyA9IGluamVjdChNQVRfREFURV9GT1JNQVRTLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0O1xuICAgIHByaXZhdGUgcG9ydGFsOiBDb21wb25lbnRQb3J0YWw8RXVpVGltZXBpY2tlckNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVBvcnRhbDogVGVtcGxhdGVQb3J0YWw8RXVpQWN0aW9uQnV0dG9uc0RpcmVjdGl2ZT47XG4gICAgcHJpdmF0ZSBpc051bGwgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGUgPSBzaWduYWwoaW5qZWN0PHVua25vd24+KE1BVF9EQVRFX0xPQ0FMRSkpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgRXVpQXBwU2hlbGxTZXJ2aWNlOiBFdWlBcHBTaGVsbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGJhc2VTdGF0ZXNEaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBFdWlMZXR0ZXJGb3JtYXREaXJlY3RpdmUpKSBwdWJsaWMgZXVpTGV0dGVyRm9ybWF0OiBFdWlMZXR0ZXJGb3JtYXREaXJlY3RpdmUsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID8gdGhpcy5pbnB1dEZvcm1Db250cm9sLmRpc2FibGUoKSA6IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5lbmFibGUoKTtcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvY2FsZS5zZXQoc3RhdGUuaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoc3RhdGUuaWQpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2NhbGUnLCBzdGF0ZS5pZCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Zvcm1hdCcsIHRoaXMuZm9ybWF0LmRpc3BsYXkuZGF0ZUlucHV0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRldGltZXBpY2tlciAmJiAodGhpcy5taW5EYXRlIHx8IHRoaXMubWF4RGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrVGltZVBpY2tlclZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3JlZ3VsYXInICYmICF0aGlzLmlzRGF0ZXRpbWVwaWNrZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVwaWNrZXIuUExBQ0VIT0xERVInKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncmVndWxhcicgJiYgdGhpcy5pc0RhdGV0aW1lcGlja2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcGlja2VyLklTREFURVRJTUVQSUNLRVInKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAneWVhcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVwaWNrZXIuWUVBUi1QTEFDRUhPTERFUicpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVwaWNrZXIuTU9OVEgtUExBQ0VIT0xERVInKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuRXVpQXBwU2hlbGxTZXJ2aWNlLmJyZWFrcG9pbnRzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChia3BzKSA9PiAodGhpcy5icmVha3BvaW50c1ZhbHVlID0gYmtwcykpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRBcmlhUmVxdWlyZWRBdHRyaWJ1dGUodGhpcy5jb250cm9sKTtcbiAgICAgICAgdGhpcy5jb250cm9sPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlucHV0QXJpYVJlcXVpcmVkQXR0cmlidXRlKHRoaXMuY29udHJvbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlUG9ydGFsUmVmLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEYXRldGltZXBpY2tlciB8fCB0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJbJ2Nsb3NlQ2FsZW5kYXInXSA9IHRoaXMuY2FsZW5kYXIuY2xvc2U7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyLmNsb3NlID0gKCk6IGJvb2xlYW4gPT4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIG1hcmtzIHRoZSBpbnB1dCBjb250cm9sIGFzIHRvdWNoZWQvaW52YWxpZCBpZiB0aGUgZm9ybSBjb250cm9sIGlzIHRvdWNoZWQvaW52YWxpZFxuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5pbnB1dEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycykgOiB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydpc1JlYWRPbmx5J10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dEYXRlQnV0dG9uID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVCdXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1snaXNEaXNhYmxlZCddKSB7XG4gICAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5pc0Rpc2FibGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ3ZhbHVlJ10pIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydpc0NsZWFyYWJsZSddKSB7XG4gICAgICAgICAgICAvLyB3aGVuIGlzIGNsZWFyYWJsZSBpcyB1c2VkIGxpc3RlbiBpZiBvbmNsZWFyIGlzIGZpcmVkIGFuZCB1cGRhdGUgdGhlIHZhbHVlXG4gICAgICAgICAgICBpZiAodGhpcy5pc0NsZWFyYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUluamVjdG9yKGRhdGE6IGFueSk6IEluamVjdG9yIHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3JUb2tlbnM6IFN0YXRpY1Byb3ZpZGVyID0gW3sgcHJvdmlkZTogRFlOQU1JQ19DT01QT05FTlRfQ09ORklHLCB1c2VWYWx1ZTogZGF0YSB9XTtcbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICBwcm92aWRlcnM6IGluamVjdG9yVG9rZW5zLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1JlYWRPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyLm9wZW4oKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEYXRldGltZXBpY2tlciB8fCB0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyLm9wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgLy8gbGlzdGVucyB0byB0aGUga2V5ZG93biBldmVudCBvbmNlIHRoZSBjYWxlbmRhciBvcGVuZWRcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFc2NhcGUnOiAvL2Nsb3NlcyB0aGUgY2FsZW5kYXIgb24gRXNjYXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdFbnRlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jbG9zZXMgdGhlIGNhbGVuZGFyIGlmIHByZXNzaW5nIEVudGVyIG9uIHRoZSBjbG9zZSBjYWxlbmRhciBidXR0b24gb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEV2ZW50UGF0aChldmVudCkuZm9yRWFjaCgocDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5jbGFzc05hbWUgJiYgcC5jbGFzc05hbWUuaW5kZXhPZignbWF0LWRhdGVwaWNrZXItY2xvc2UtYnV0dG9uJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0RhdGV0aW1lcGlja2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWF0LWNhbGVuZGFyJyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCAvLyBUT0RPOiBjaGVjayBhZ2FpbiBpZiB0aGVyZSBpcyBhbiB1cGRhdGUgb24gZnJhbWV3b3JrIHNpZGUgRVVJLTYyMDdcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lQ29uZmlnOiBFdWlEYXRlVGltZVBpY2tlckNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaG91cnM6IHRoaXMudmFsdWUgJiYgbW9tZW50KHRoaXMudmFsdWUpLmhvdXJzKCksXG4gICAgICAgICAgICAgICAgICAgIG1pbnM6IHRoaXMudmFsdWUgJiYgbW9tZW50KHRoaXMudmFsdWUpLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgc2VjczogdGhpcy52YWx1ZSAmJiBtb21lbnQodGhpcy52YWx1ZSkuc2Vjb25kcygpLFxuICAgICAgICAgICAgICAgICAgICBpc0RhdGV0aW1lcGlja2VyOiB0aGlzLmlzRGF0ZXRpbWVwaWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIGhhc1NlY29uZHM6IHRoaXMuaGFzU2Vjb25kcyxcbiAgICAgICAgICAgICAgICAgICAgaXNPbmVJbnB1dEZpZWxkOiB0aGlzLmlzT25lSW5wdXRGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgc3RlcEhvdXJzOiB0aGlzLnN0ZXBIb3VycyxcbiAgICAgICAgICAgICAgICAgICAgc3RlcE1pbnV0ZXM6IHRoaXMuc3RlcE1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgICAgIHN0ZXBTZWNvbmRzOiB0aGlzLnN0ZXBTZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0ZuOiAoaG91cnM6IG51bWJlciwgbWluczogbnVtYmVyLCBzZWNzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1vbWVudCh0aGlzLnZhbHVlLCBtb21lbnQuSVNPXzg2MDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbW9tZW50KHRoaXMudmFsdWUsIHRoaXMuZm9ybWF0LnBhcnNlLmRhdGVJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNldCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cjogaG91cnMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGU6IG1pbnMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHNlY3MgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChFdWlUaW1lcGlja2VyQ29tcG9uZW50LCBudWxsLCB0aGlzLmNyZWF0ZUluamVjdG9yKHRpbWVDb25maWcpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxFdWlUaW1lcGlja2VyQ29tcG9uZW50PiA9IHRoaXMucG9ydGFsSG9zdC5hdHRhY2hDb21wb25lbnRQb3J0YWwodGhpcy5wb3J0YWwpO1xuICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMucG9ydGFsSG9zdD8uZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBjYWxlbmRhciBvcGVucyBhbmQgaXNEYXRldGltZXBpY2tlciBvciBldWktYWN0aW9uLWJ1dHRvbnMgZGlyZWN0aXZlIHVzZWQsIGl0IGNsb3NlcyB0aGUgY2FsZW5kYXIgd2hlbiBjbGlja2luZyBvdXRzaWRlIG9mIHRoZVxuICAgICAqIG92ZXJsYXkuIElmIGV1aS1hY3Rpb24tYnV0dG9ucyBkaXJlY3RpdmUgaXMgdXNlZCBpdCByZWdpc3RlcnMgdGhlIHRlbXBsYXRlIHBvcnRhbCB3aGVyZSB0aGUgdXNlciBjYW4gYWRkIHByb2plY3RlZCBjb250ZW50IGFzIGFcbiAgICAgKiBmb290ZXIuXG4gICAgICovXG4gICAgb25PcGVuZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZXRpbWVwaWNrZXIgfHwgdGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5yZWdpc3RlckFjdGlvbnModGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJbJ19vdmVybGF5UmVmJ11bJ19iYWNrZHJvcENsaWNrJ10ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEV2ZW50UGF0aChldmVudCk6IGFueSB7XG4gICAgICAgIGlmIChldmVudC5wYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucGF0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhdGggPSBbXTtcbiAgICAgICAgbGV0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgICAgICB3aGlsZSAodGFyZ2V0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHBhdGgucHVzaCh0YXJnZXQpO1xuICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBwYXRoLnB1c2goZG9jdW1lbnQsIHdpbmRvdyk7XG5cbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgY2hvc2VuRGF0ZUhhbmRsZXIobm9ybWFsaXplZERhdGU6IGFueSwgY2FsZW5kYXI6IE1hdERhdGVwaWNrZXI8YW55Pik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IG1vbWVudChub3JtYWxpemVkRGF0ZSwgdGhpcy5kYXRlT3V0cHV0Rm9ybWF0KTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGZvcm1hdHRlZFZhbHVlLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChmb3JtYXR0ZWRWYWx1ZS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChmb3JtYXR0ZWRWYWx1ZS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbm9ybWFsaXplZERhdGU7XG4gICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG5cbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQodGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGVuZGFyLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRhdGVwaWNrZXJGaWx0ZXJpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRhdGVJbnB1dChlOiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxNb21lbnQgfCBEYXRlIHwgc3RyaW5nPik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRldGltZXBpY2tlcikge1xuICAgICAgICAgICAgaWYgKGUudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQoZS52YWx1ZSwgdGhpcy5kYXRlT3V0cHV0Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodGhpcy52YWx1ZS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChlPy52YWx1ZSA/IGUudmFsdWUgOiBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGF0ZUNoYW5nZShlOiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxNb21lbnQgfCBEYXRlIHwgc3RyaW5nPik6IHZvaWQge1xuICAgICAgICBpZiAoZS52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuaXNOdWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNOdWxsID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RhdGV0aW1lcGlja2VyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLnZhbHVlICYmIG1vbWVudCh0aGlzLnZhbHVlKS5ob3VycygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbnMgPSB0aGlzLnZhbHVlICYmIG1vbWVudCh0aGlzLnZhbHVlKS5taW51dGVzKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VjcyA9IHRoaXMudmFsdWUgJiYgbW9tZW50KHRoaXMudmFsdWUpLnNlY29uZHMoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQoZS52YWx1ZSwgdGhpcy5mb3JtYXQucGFyc2UuZGF0ZUlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNldCh7XG4gICAgICAgICAgICAgICAgICAgIGhvdXI6IGhvdXJzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogbWlucyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHNlY3MgfHwgMCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGVuZGFyLm9wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCAmJiB0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50KGUudmFsdWUsIHRoaXMuZGF0ZU91dHB1dEZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KHRoaXMudmFsdWUuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGU/LnZhbHVlID8gZS52YWx1ZSA6IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZWRJbnB1dChlOiBzdHJpbmcgfCBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBlID09PSAnc3RyaW5nJyA/IGUgOiAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIGlmICghdGhpcy5pc051bGwpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQodmFsdWUsIHRoaXMuZm9ybWF0LnBhcnNlLmRhdGVJbnB1dCk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0ICYmIHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcbiAgICB9XG5cbiAgICBvbktleXByZXNzKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5DYWxlbmRhcigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3Jlc3RyaWN0VG9SZWdleCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9yZXN0cmljdFRvUmVnZXgudGVzdChlLmtleSkpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRvZGF5J3MgZGF0ZVxuICAgICAqL1xuICAgIHNlbGVjdFRvZGF5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUobW9tZW50KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgY2FsZW5kYXIgd2hlbiBpc0RhdGV0aW1lcGlja2VyIG9yIGV1aS1hY3Rpb24tYnV0dG9ucyB1c2VkIGFuZCByZW1vdmVzIHRoZSBhcHBsaWVkIGZvb3RlciB3aGVuIGV1aS1hY3Rpb24tYnV0dG9ucyB1c2VkXG4gICAgICovXG4gICAgY2xvc2VDYWxlbmRhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhclsnY2xvc2VDYWxlbmRhciddKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhci5yZW1vdmVBY3Rpb25zKHRoaXMudGVtcGxhdGVQb3J0YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBldWktYWN0aW9uLWJ1dHRvbnMgdXNlZCwgaXQgYXBwbGllcyB0aGUgZGF0ZSBzZWxlY3Rpb24gYW5kIGNsb3NlcyB0aGUgY2FsZW5kYXJcbiAgICAgKi9cbiAgICBvbkRhdGVTZWxlY3RBcHBseSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhci5fYXBwbHlQZW5kaW5nU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgJyc7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBjb252VHlwZVRvU3RhcnRWaWV3KHR5cGU6IHN0cmluZyk6ICd5ZWFyJyB8ICdtb250aCcgfCAnbXVsdGkteWVhcicge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3llYXInO1xuICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtdWx0aS15ZWFyJztcbiAgICAgICAgICAgIGNhc2UgJ3JlZ3VsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbW9udGgnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIGRpc2FibGVzIG9ubHkgdGhlIGlucHV0IHRocm91Z2ggcmVhY3RpdmUgZm9ybXNcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSW5wdXREaXNhYmxlZCAmJiAhdGhpcy5pc1BpY2tlckRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0lucHV0RGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNCdXR0b25EaXNhYmxlZCA9IHRoaXMuaXNQaWNrZXJEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIGRpc2FibGVzIG9ubHkgdGhlIGJ1dHRvbiB0aHJvdWdoIHJlYWN0aXZlIGZvcm1zXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNCdXR0b25EaXNhYmxlZCAmJiAhdGhpcy5pc0lucHV0RGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5wdXREaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNCdXR0b25EaXNhYmxlZCA9IHRoaXMuaXNQaWNrZXJEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID0gdGhpcy5pc1BpY2tlckRpc2FibGVkID0gdGhpcy5pc0J1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID0gdGhpcy5pc1BpY2tlckRpc2FibGVkID0gdGhpcy5pc0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzSW5wdXREaXNhYmxlZCA/IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFya3MgdGhlIGZvcm0gZmllbGQgYXMgdG91Y2hlZCB3aGVuIGZvY3VzaW5nIG91dCB0byB0cmlnZ2VyIHZhbGlkYXRpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1RpbWVQaWNrZXJWYWxpZGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiAoIW1vbWVudCh0aGlzLm1pbkRhdGUpLmlzQmVmb3JlKHRoaXMudmFsdWUpIHx8IHRoaXMuYXJlU2FtZURhdGVzKG1vbWVudCh0aGlzLnZhbHVlKS50b0RhdGUoKSwgdGhpcy5taW5EYXRlKSkpIHtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzRG93bkRpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW51dGVzRG93bkRpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNvbmRzRG93bkRpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICghbW9tZW50KHRoaXMubWluRGF0ZSkuaXNCZWZvcmUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBob3VycyA9IHRoaXMubWluRGF0ZS5nZXRIb3VycygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLm1pbkRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLm1pbkRhdGUuZ2V0U2Vjb25kcygpO1xuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzID0gaG91cnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnMgPSBtaW51dGVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNzID0gc2Vjb25kcztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnID8gbW9tZW50KHRoaXMudmFsdWUsIG1vbWVudC5JU09fODYwMSkgOiBtb21lbnQodGhpcy52YWx1ZSwgdGhpcy5mb3JtYXQucGFyc2UuZGF0ZUlucHV0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNldCh7XG4gICAgICAgICAgICAgICAgICAgIGhvdXI6IGhvdXJzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogbWludXRlcyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmQ6IHNlY29uZHMgfHwgMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzRG93bkRpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWludXRlc0Rvd25EaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY29uZHNEb3duRGlzYWJsZShmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXhEYXRlICYmICghbW9tZW50KHRoaXMubWF4RGF0ZSkuaXNBZnRlcih0aGlzLnZhbHVlKSB8fCB0aGlzLmFyZVNhbWVEYXRlcyhtb21lbnQodGhpcy52YWx1ZSkudG9EYXRlKCksIHRoaXMubWF4RGF0ZSkpKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5ob3Vyc1VwRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnV0ZXNVcERpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNvbmRzVXBEaXNhYmxlKHRydWUpO1xuXG4gICAgICAgICAgICBpZiAoIW1vbWVudCh0aGlzLm1heERhdGUpLmlzQWZ0ZXIodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBob3VycyA9IHRoaXMubWF4RGF0ZS5nZXRIb3VycygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLm1heERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLm1heERhdGUuZ2V0U2Vjb25kcygpO1xuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzID0gaG91cnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnMgPSBtaW51dGVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNzID0gc2Vjb25kcztcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgPyBtb21lbnQodGhpcy52YWx1ZSwgbW9tZW50LklTT184NjAxKSA6IG1vbWVudCh0aGlzLnZhbHVlLCB0aGlzLmZvcm1hdC5wYXJzZS5kYXRlSW5wdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgaG91cjogaG91cnMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiBtaW51dGVzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIHNlY29uZDogc2Vjb25kcyB8fCAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5ob3VyKCkgPT09IDAgJiYgdGhpcy52YWx1ZS5taW51dGUoKSA9PT0gMCAmJiB0aGlzLnZhbHVlLnNlY29uZCgpID09PSAwICYmXG4gICAgICAgICAgICAgICAgbW9tZW50KHRoaXMubWF4RGF0ZSkuaG91cigpID09PSAwICYmIG1vbWVudCh0aGlzLm1heERhdGUpLm1pbnV0ZSgpID09PSAwICYmIG1vbWVudCh0aGlzLm1heERhdGUpLnNlY29uZCgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzRG93bkRpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnV0ZXNEb3duRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2Vjb25kc0Rvd25EaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzRG93bkRpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW51dGVzRG93bkRpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNvbmRzRG93bkRpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzVXBEaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnV0ZXNVcERpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2Vjb25kc1VwRGlzYWJsZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFyZVNhbWVEYXRlcyhkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRhdGUxLmdldEZ1bGxZZWFyKCkgPT09IGRhdGUyLmdldEZ1bGxZZWFyKCkgJiZcbiAgICAgICAgICAgIGRhdGUxLmdldE1vbnRoKCkgPT09IGRhdGUyLmdldE1vbnRoKCkgJiZcbiAgICAgICAgICAgIGRhdGUxLmdldERhdGUoKSA9PT0gZGF0ZTIuZ2V0RGF0ZSgpICYmXG4gICAgICAgICAgICBkYXRlMS5nZXRIb3VycygpID09PSBkYXRlMi5nZXRIb3VycygpICYmXG4gICAgICAgICAgICBkYXRlMS5nZXRNaW51dGVzKCkgPT09IGRhdGUyLmdldE1pbnV0ZXMoKSAmJlxuICAgICAgICAgICAgZGF0ZTEuZ2V0U2Vjb25kcygpID09PSBkYXRlMi5nZXRTZWNvbmRzKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgcHJvcGFnYXRlVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgYGFyaWEtcmVxdWlyZWRgIGF0dHJpYnV0ZSBvbiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlSW5wdXRBcmlhUmVxdWlyZWRBdHRyaWJ1dGUoY29udHJvbDogTmdDb250cm9sKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFzQXJpYVJlcXVpcmVkQXR0cmlidXRlID0gY29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IExFVFRFUl9GT1JNQVQgPSB7XG4gICAgcGFyc2U6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnTEwnLFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdMTCcsXG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiAnTEwnLFxuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgWUVBUl9GT1JNQVQgPSB7XG4gICAgcGFyc2U6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnWVlZWScsXG4gICAgfSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ1lZWVknLFxuICAgICAgICBtb250aFllYXJMYWJlbDogJ1lZWVknLFxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnWVlZWScsXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ1lZWVknLFxuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgTU9OVEhfWUVBUl9GT1JNQVQgPSB7XG4gICAgcGFyc2U6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnTU0vWVlZWScsXG4gICAgfSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ01NL1lZWVknLFxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcbiAgICAgICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcbiAgICAgICAgbW9udGhZZWFyQTExeUxhYmVsOiAnTU1NTSBZWVlZJyxcbiAgICB9LFxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXVpTGV0dGVyRm9ybWF0XScsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTEVUVEVSX0ZPUk1BVCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpTGV0dGVyRm9ybWF0RGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2V1aVllYXJGb3JtYXRdJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBZRUFSX0ZPUk1BVCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpWWVhckZvcm1hdERpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tldWlNb250aFllYXJGb3JtYXRdJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNT05USF9ZRUFSX0ZPUk1BVCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpTW9udGhZZWFyRm9ybWF0RGlyZWN0aXZlIHt9XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktYWN0aW9uLWJ1dHRvbnMnIH0pXG5leHBvcnQgY2xhc3MgRXVpQWN0aW9uQnV0dG9uc0RpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2V1aS1kYXRlcGlja2VyX19hY3Rpb24tYnV0dG9ucyc7XG4gfVxuIiwiPGRpdiBjbGFzcz1cImV1aS1kYXRlcGlja2VyX193cmFwcGVyIHt7IHN0eWxlQ2xhc3MgfX1cIiBbY2xhc3MuZXVpLWRhdGVwaWNrZXJfX3dyYXBwZXItLXJlc3BvbnNpdmVdPVwiaXNEYXRlcGlja2VyQmxvY2tcIj5cbiAgICA8ZGl2IGV1aUlucHV0R3JvdXA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAoY2xlYXIpPVwib25DbGVhcigpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLWRhdGVwaWNrZXItLW5vLWJ1dHRvbl09XCJoYXNOb0J1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1kYXRlcGlja2VyLS1sb25nLWZvcm1hdF09XCIhaXNEYXRlcGlja2VyQmxvY2sgJiYgKGlzRGF0ZXRpbWVwaWNrZXIgfHwgZXVpTGV0dGVyRm9ybWF0KVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1kYXRlcGlja2VyLS1ibG9ja109XCJpc0RhdGVwaWNrZXJCbG9ja1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJoYXNBcmlhUmVxdWlyZWRBdHRyaWJ1dGUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiY2FsZW5kYXJcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgICAgIChkYXRlSW5wdXQpPVwib25EYXRlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlcGlja2VyRmlsdGVyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRhdGUgSW5wdXQgRmllbGRcIlxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleXByZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KClcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaXNEYXRldGltZXBpY2tlciA/IGNoYW5nZWRJbnB1dCgkZXZlbnQpIDogbnVsbFwiIC8+XG4gICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICAjY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwibWF0LWNhbGVuZGFyLXt7IHR5cGUgfX1cIlxuICAgICAgICAgICAgICAgIFtzdGFydFZpZXddPVwidHlwZSA9PT0gJ3JlZ3VsYXInID8gKHN0YXJ0VmlldyA/IHN0YXJ0VmlldyA6IGNvbnZUeXBlVG9TdGFydFZpZXcodHlwZSkpIDogY29udlR5cGVUb1N0YXJ0Vmlldyh0eXBlKVwiXG4gICAgICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ0eXBlID09PSAneWVhcicgPyBjaG9zZW5EYXRlSGFuZGxlcigkZXZlbnQsIGNhbGVuZGFyKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIChtb250aFNlbGVjdGVkKT1cInR5cGUgPT09ICdtb250aCcgPyBjaG9zZW5EYXRlSGFuZGxlcigkZXZlbnQsIGNhbGVuZGFyKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFt0b3VjaFVpXT1cImJyZWFrcG9pbnRzVmFsdWUuaXNUYWJsZXQgfHwgYnJlYWtwb2ludHNWYWx1ZS5pc01vYmlsZVwiXG4gICAgICAgICAgICAgICAgW3BhbmVsQ2xhc3NdPVwiaXNEYXRldGltZXBpY2tlciA/ICdldWktZGF0ZXBpY2tlci0tY29udGFpbmVyLWhlaWdodC1sYXJnZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNQaWNrZXJEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICAgICAgICAgW2RhdGVDbGFzc109XCJkYXRlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIChvcGVuZWQpPVwib25PcGVuZWQoKVwiPlxuICAgICAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFoYXNOb0J1dHRvbiAmJiBzaG93RGF0ZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCJcbiAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBldWlTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICBbZXVpSWNvbkJ1dHRvbl09XCIhdG9nZ2xlckxhYmVsXCJcbiAgICAgICAgICAgICAgICBbZXVpRGlzYWJsZWRdPVwiaXNCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXRvZ2dsZXJMYWJlbCAmJiB0b2dnbGVySWNvblwiIGV1aUljb24gYXJpYS1sYWJlbD1cIk9wZW4gQ2FsZW5kYXJcIiBpY29uQ2xhc3M9XCJ7eyB0b2dnbGVySWNvbiB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRvZ2dsZXJMYWJlbCAmJiAhdG9nZ2xlckljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwie3sgdG9nZ2xlckljb25TdmcgfX1cIiBhcmlhLWxhYmVsPVwiT3BlbiBDYWxlbmRhclwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidG9nZ2xlckxhYmVsXCI+e3sgdG9nZ2xlckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVQb3J0YWxSZWY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLWFjdGlvbi1idXR0b25zXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
@@ -73,6 +73,7 @@ export declare class EuiDatepickerComponent implements OnInit, AfterViewInit, Co
|
|
73
73
|
private portal;
|
74
74
|
private templatePortal;
|
75
75
|
private isNull;
|
76
|
+
private readonly _locale;
|
76
77
|
constructor(adapter: DateAdapter<any>, translateService: TranslateService, localeService: LocaleService, EuiAppShellService: EuiAppShellService, componentFactoryResolver: ComponentFactoryResolver, injector: Injector, appRef: ApplicationRef, viewContainerRef: ViewContainerRef, baseStatesDirective: BaseStatesDirective, euiLetterFormat: EuiLetterFormatDirective, control: NgControl);
|
77
78
|
ngOnInit(): void;
|
78
79
|
ngAfterViewInit(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-datepicker.component.d.ts","sourceRoot":"","sources":["../../eui-datepicker/eui-datepicker.component.ts"],"names":[],"mappings":"AACA,OAAO,EACH,cAAc,EAEd,wBAAwB,EACxB,YAAY,EAEZ,QAAQ,EAER,SAAS,EACT,SAAS,EACT,OAAO,EACP,MAAM,EAIN,aAAa,EAQb,aAAa,EACb,WAAW,EACX,gBAAgB,
|
1
|
+
{"version":3,"file":"eui-datepicker.component.d.ts","sourceRoot":"","sources":["../../eui-datepicker/eui-datepicker.component.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { EventEmitter, inject, Injector, forwardRef, booleanAttribute, Component, ViewEncapsulation, Optional, Inject, Self, HostBinding, ViewChild, ContentChild, Output, Input, Directive, NgModule } from '@angular/core';
|
2
|
+
import { EventEmitter, inject, signal, Injector, forwardRef, booleanAttribute, Component, ViewEncapsulation, Optional, Inject, Self, HostBinding, ViewChild, ContentChild, Output, Input, Directive, NgModule } from '@angular/core';
|
3
3
|
import * as i6 from '@angular/common';
|
4
4
|
import { CommonModule } from '@angular/common';
|
5
5
|
import * as i7 from '@angular/material/datepicker';
|
@@ -10,7 +10,7 @@ import * as i2 from '@ngx-translate/core';
|
|
10
10
|
import { TranslateModule } from '@ngx-translate/core';
|
11
11
|
import { MatMomentDateModule, provideMomentDateAdapter } from '@angular/material-moment-adapter';
|
12
12
|
import * as i1 from '@angular/material/core';
|
13
|
-
import { MAT_DATE_FORMATS } from '@angular/material/core';
|
13
|
+
import { MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
|
14
14
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
15
15
|
import { TemplatePortal, DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
|
16
16
|
import { Subject, takeUntil, fromEvent } from 'rxjs';
|
@@ -106,6 +106,7 @@ class EuiDatepickerComponent {
|
|
106
106
|
this.destroy$ = new Subject();
|
107
107
|
this.format = inject(MAT_DATE_FORMATS, { optional: true });
|
108
108
|
this.isNull = false;
|
109
|
+
this._locale = signal(inject(MAT_DATE_LOCALE));
|
109
110
|
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
|
110
111
|
this.propagateChange = (_) => { };
|
111
112
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
@@ -121,7 +122,10 @@ class EuiDatepickerComponent {
|
|
121
122
|
.getState()
|
122
123
|
.pipe(takeUntil(this.destroy$))
|
123
124
|
.subscribe((state) => {
|
125
|
+
this._locale.set(state.id);
|
124
126
|
this.adapter.setLocale(state.id);
|
127
|
+
console.log('locale', state.id);
|
128
|
+
console.log('format', this.format.display.dateInput);
|
125
129
|
});
|
126
130
|
if (this.isDatetimepicker && (this.minDate || this.maxDate)) {
|
127
131
|
this.inputFormControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
|