@eui/components 17.3.7-snapshot-1719589694390 → 17.3.7-snapshot-1719835160949
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/menu-wc.js +3 -3
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-date-range-selector/eui-date-range-selector.module.mjs +4 -8
- package/esm2022/eui-datepicker/eui-datepicker.component.mjs +3 -7
- package/eui-date-range-selector/eui-date-range-selector.module.d.ts.map +1 -1
- package/eui-datepicker/eui-datepicker.component.d.ts +0 -1
- package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-date-range-selector.mjs +4 -8
- package/fesm2022/eui-components-eui-date-range-selector.mjs.map +1 -1
- package/fesm2022/eui-components-eui-datepicker.mjs +2 -6
- package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
- package/package.json +9 -9
@@ -3,13 +3,11 @@ import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
5
5
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
6
|
-
import {
|
7
|
-
import { MatMomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';
|
6
|
+
import { MatMomentDateModule, provideMomentDateAdapter } from '@angular/material-moment-adapter';
|
8
7
|
import { EuiDateRangeSelectorComponent } from './eui-date-range-selector.component';
|
9
8
|
import { EuiButtonModule } from '@eui/components/eui-button';
|
10
9
|
import { EuiIconModule } from '@eui/components/eui-icon';
|
11
10
|
import { EuiInputTextModule } from '@eui/components/eui-input-text';
|
12
|
-
import { DEFAULT_FORMATS } from '@eui/components/eui-datepicker';
|
13
11
|
import * as i0 from "@angular/core";
|
14
12
|
export class EuiDateRangeSelectorModule {
|
15
13
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiDateRangeSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
@@ -23,8 +21,7 @@ export class EuiDateRangeSelectorModule {
|
|
23
21
|
EuiIconModule,
|
24
22
|
EuiInputTextModule], exports: [EuiDateRangeSelectorComponent] }); }
|
25
23
|
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiDateRangeSelectorModule, providers: [
|
26
|
-
|
27
|
-
{ provide: MAT_DATE_FORMATS, useValue: DEFAULT_FORMATS },
|
24
|
+
provideMomentDateAdapter(),
|
28
25
|
], imports: [CommonModule,
|
29
26
|
FormsModule,
|
30
27
|
ReactiveFormsModule,
|
@@ -52,9 +49,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
52
49
|
exports: [EuiDateRangeSelectorComponent],
|
53
50
|
declarations: [EuiDateRangeSelectorComponent],
|
54
51
|
providers: [
|
55
|
-
|
56
|
-
{ provide: MAT_DATE_FORMATS, useValue: DEFAULT_FORMATS },
|
52
|
+
provideMomentDateAdapter(),
|
57
53
|
],
|
58
54
|
}]
|
59
55
|
}] });
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFvQnBFLE1BQU0sT0FBTywwQkFBMEI7aUlBQTFCLDBCQUEwQjtrSUFBMUIsMEJBQTBCLGlCQUxwQiw2QkFBNkIsYUFYeEMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7WUFDYixrQkFBa0IsYUFFWiw2QkFBNkI7a0lBTTlCLDBCQUEwQixhQUp4QjtZQUNQLHdCQUF3QixFQUFFO1NBQzdCLFlBZEcsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7WUFDYixrQkFBa0I7OzJGQVFiLDBCQUEwQjtrQkFsQnRDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO29CQUN4QyxZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsU0FBUyxFQUFFO3dCQUNQLHdCQUF3QixFQUFFO3FCQUM3QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdE1vbWVudERhdGVNb2R1bGUsIHByb3ZpZGVNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcblxuaW1wb3J0IHsgRXVpRGF0ZVJhbmdlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdWlCdXR0b25Nb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWJ1dHRvbic7XG5pbXBvcnQgeyBFdWlJY29uTW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1pY29uJztcbmltcG9ydCB7IEV1aUlucHV0VGV4dE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktaW5wdXQtdGV4dCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgICAgIE1hdE1vbWVudERhdGVNb2R1bGUsXG4gICAgICAgIEV1aUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgRXVpSWNvbk1vZHVsZSxcbiAgICAgICAgRXVpSW5wdXRUZXh0TW9kdWxlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW0V1aURhdGVSYW5nZVNlbGVjdG9yQ29tcG9uZW50XSxcbiAgICBkZWNsYXJhdGlvbnM6IFtFdWlEYXRlUmFuZ2VTZWxlY3RvckNvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVNb21lbnREYXRlQWRhcHRlcigpLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEV1aURhdGVSYW5nZVNlbGVjdG9yTW9kdWxlIHt9XG4iXX0=
|
@@ -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, booleanAttribute,
|
2
|
+
import { Component, EventEmitter, Inject, Injector, Input, Optional, Output, Self, ViewChild, ViewEncapsulation, Directive, forwardRef, HostBinding, ContentChild, booleanAttribute, inject, } from '@angular/core';
|
3
3
|
import { FormControl, Validators } from '@angular/forms';
|
4
|
-
import { MAT_DATE_FORMATS
|
4
|
+
import { MAT_DATE_FORMATS } 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,7 +98,6 @@ 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));
|
102
101
|
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
|
103
102
|
this.propagateChange = (_) => { };
|
104
103
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
@@ -114,10 +113,7 @@ export class EuiDatepickerComponent {
|
|
114
113
|
.getState()
|
115
114
|
.pipe(takeUntil(this.destroy$))
|
116
115
|
.subscribe((state) => {
|
117
|
-
this._locale.set(state.id);
|
118
116
|
this.adapter.setLocale(state.id);
|
119
|
-
console.log('locale', state.id);
|
120
|
-
console.log('format', this.format.display.dateInput);
|
121
117
|
});
|
122
118
|
if (this.isDatetimepicker && (this.minDate || this.maxDate)) {
|
123
119
|
this.inputFormControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
|
@@ -769,4 +765,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
769
765
|
type: HostBinding,
|
770
766
|
args: ['class']
|
771
767
|
}] } });
|
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==
|
768
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGVwaWNrZXIvZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGVwaWNrZXIvZXVpLWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUtMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUdKLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUtaLGdCQUFnQixFQUVoQixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUErQixnQkFBZ0IsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RyxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUM3QixPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUdsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sZ0NBQWdDLENBQUM7QUFDakcsT0FBTyxFQUFFLHdCQUF3QixFQUFxQyxNQUFNLFdBQVcsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFB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QUNwRTs7QUFPRCxNQUFNLE9BQU8sMkJBQTJCO2lJQUEzQiwyQkFBMkI7cUhBQTNCLDJCQUEyQiwrQ0FGekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQzs7MkZBRTlELDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDMUU7O0FBR0Qsb0JBQW9CO0FBRXBCLE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFMEIsVUFBSyxHQUFHLGdDQUFnQyxDQUFDO0tBQ2pFO2lJQUZXLHlCQUF5QjtxSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFOzhCQUVuQixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIERvQ2hlY2ssXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU3RhdGljUHJvdmlkZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIERpcmVjdGl2ZSxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgc2lnbmFsLFxuICAgIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNYXREYXRlRm9ybWF0cywgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDYWxlbmRhckNlbGxDbGFzc0Z1bmN0aW9uLCBNYXREYXRlcGlja2VyLCBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBEb21Qb3J0YWxPdXRsZXQsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IF9tb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgX3JvbGx1cE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG5pbXBvcnQgeyBFdWlUaW1lcGlja2VyQ29tcG9uZW50LCBFdWlEYXRlVGltZVBpY2tlckNvbmZpZyB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktdGltZXBpY2tlcic7XG5pbXBvcnQgeyBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcsIExvY2FsZVNlcnZpY2UsIEV1aUFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBCYXNlU3RhdGVzRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5cbmNvbnN0IG1vbWVudCA9IF9yb2xsdXBNb21lbnQgfHwgX21vbWVudDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZGF0ZXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgICdldWlTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnZXVpSW5mbycsXG4gICAgICAgICAgICAgICAgJ2V1aVdhcm5pbmcnLFxuICAgICAgICAgICAgICAgICdldWlEYW5nZXInLFxuICAgICAgICAgICAgICAgICdldWlWYXJpYW50JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBEb0NoZWNrIHtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS1kYXRlcGlja2VyJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlucHV0Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgYnJlYWtwb2ludHNWYWx1ZTogYW55ID0ge1xuICAgICAgICBpc01vYmlsZTogZmFsc2UsXG4gICAgICAgIGlzVGFibGV0OiBmYWxzZSxcbiAgICAgICAgaXNMdERlc2t0b3A6IGZhbHNlLFxuICAgICAgICBpc0Rlc2t0b3A6IGZhbHNlLFxuICAgICAgICBpc1hMOiBmYWxzZSxcbiAgICAgICAgaXNYWEw6IGZhbHNlLFxuICAgIH07XG4gICAgc2hvd0RhdGVCdXR0b24gPSB0cnVlO1xuICAgIHRpbWVQaWNrZXJJbnN0YW5jZTogRXVpVGltZXBpY2tlckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiB0cnVlIH0pIGNhbGVuZGFyOiBNYXREYXRlcGlja2VyPGFueT47XG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVQb3J0YWxSZWYnKSB0ZW1wbGF0ZVBvcnRhbFJlZjogVGVtcGxhdGVSZWY8RXVpQWN0aW9uQnV0dG9uc0RpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpQWN0aW9uQnV0dG9uc0RpcmVjdGl2ZSkpIGV1aUFjdGlvbkJ1dHRvbnM6IEV1aUFjdGlvbkJ1dHRvbnNEaXJlY3RpdmU7XG5cbiAgICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgZGF0ZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgdG9nZ2xlckljb246IHN0cmluZztcbiAgICBASW5wdXQoKSB0b2dnbGVySWNvblN2ZyA9ICdldWktY2FsZW5kYXItb3V0bGluZSc7XG4gICAgQElucHV0KCkgdG9nZ2xlckxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBASW5wdXQoKSB0eXBlOiAneWVhcicgfCAnbW9udGgnIHwgJ3JlZ3VsYXInID0gJ3JlZ3VsYXInO1xuICAgIEBJbnB1dCgpIHN0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJztcbiAgICBASW5wdXQoKSBlMmVBdHRyID0gJ2V1aS1kYXRlcGlja2VyJztcbiAgICBASW5wdXQoKSBtaW5EYXRlOiBhbnk7XG4gICAgQElucHV0KCkgbWF4RGF0ZTogYW55O1xuICAgIEBJbnB1dCgpIGRhdGVwaWNrZXJGaWx0ZXI6IChkOiBhbnkpID0+IGJvb2xlYW4gPSB0aGlzLmRhdGVwaWNrZXJGaWx0ZXJpbmc7XG4gICAgQElucHV0KCkgZGF0ZU91dHB1dEZvcm1hdDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGN1c3RvbUhlYWRlcjogYW55O1xuICAgIEBJbnB1dCgpIGRhdGVDbGFzczogTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbjxhbnk+O1xuICAgIEBJbnB1dCgpIHN0ZXBIb3VycyA9IDE7XG4gICAgQElucHV0KCkgc3RlcE1pbnV0ZXMgPSAxO1xuICAgIEBJbnB1dCgpIHN0ZXBTZWNvbmRzID0gMTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNEYXRldGltZXBpY2tlciA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNTZWNvbmRzID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzT25lSW5wdXRGaWVsZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNOb0J1dHRvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0RhdGVwaWNrZXJCbG9jayA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1JlYWRPbmx5ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNJbnB1dERpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNQaWNrZXJEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2xlYXJhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDbGVhcmFibGUgJiYgIXRoaXMuaXNSZWFkT25seTtcbiAgICB9XG4gICAgc2V0IGlzQ2xlYXJhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDbGVhcmFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NsZWFyYWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlc3RyaWN0VG9SZWdleCgpOiBSZWdFeHAge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdHJpY3RUb1JlZ2V4O1xuICAgIH1cbiAgICBzZXQgcmVzdHJpY3RUb1JlZ2V4KHZhbHVlOiBzdHJpbmcgfCBSZWdFeHApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RyaWN0VG9SZWdleCA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzdHJpY3RUb1JlZ2V4ID0gbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmVzdHJpY3RUb1JlZ2V4IGNhbiBvbmx5IGJlIHN0cmluZyBvciBSZWdFeHAsIGl0IGNhbm5vdCBiZSAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9yZXN0cmljdFRvUmVnZXg6IFJlZ0V4cDtcblxuICAgIHByb3RlY3RlZCBoYXNBcmlhUmVxdWlyZWRBdHRyaWJ1dGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBmb3JtYXQ6IE1hdERhdGVGb3JtYXRzID0gaW5qZWN0KE1BVF9EQVRFX0ZPUk1BVFMsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSBwb3J0YWxIb3N0OiBEb21Qb3J0YWxPdXRsZXQ7XG4gICAgcHJpdmF0ZSBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxFdWlUaW1lcGlja2VyQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIHRlbXBsYXRlUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxFdWlBY3Rpb25CdXR0b25zRGlyZWN0aXZlPjtcbiAgICBwcml2YXRlIGlzTnVsbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgRXVpQXBwU2hlbGxTZXJ2aWNlOiBFdWlBcHBTaGVsbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGJhc2VTdGF0ZXNEaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBFdWlMZXR0ZXJGb3JtYXREaXJlY3RpdmUpKSBwdWJsaWMgZXVpTGV0dGVyRm9ybWF0OiBFdWlMZXR0ZXJGb3JtYXREaXJlY3RpdmUsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID8gdGhpcy5pbnB1dEZvcm1Db250cm9sLmRpc2FibGUoKSA6IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5lbmFibGUoKTtcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoc3RhdGUuaWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5pc0RhdGV0aW1lcGlja2VyICYmICh0aGlzLm1pbkRhdGUgfHwgdGhpcy5tYXhEYXRlKSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tUaW1lUGlja2VyVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAncmVndWxhcicgJiYgIXRoaXMuaXNEYXRldGltZXBpY2tlcikge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXBpY2tlci5QTEFDRUhPTERFUicpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdyZWd1bGFyJyAmJiB0aGlzLmlzRGF0ZXRpbWVwaWNrZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVwaWNrZXIuSVNEQVRFVElNRVBJQ0tFUicpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXBpY2tlci5ZRUFSLVBMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXBpY2tlci5NT05USC1QTEFDRUhPTERFUicpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5FdWlBcHBTaGVsbFNlcnZpY2UuYnJlYWtwb2ludHMkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGJrcHMpID0+ICh0aGlzLmJyZWFrcG9pbnRzVmFsdWUgPSBia3BzKSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dEFyaWFSZXF1aXJlZEF0dHJpYnV0ZSh0aGlzLmNvbnRyb2wpO1xuICAgICAgICB0aGlzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRBcmlhUmVxdWlyZWRBdHRyaWJ1dGUodGhpcy5jb250cm9sKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVQb3J0YWxSZWYsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RhdGV0aW1lcGlja2VyIHx8IHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclsnY2xvc2VDYWxlbmRhciddID0gdGhpcy5jYWxlbmRhci5jbG9zZTtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIuY2xvc2UgPSAoKTogYm9vbGVhbiA9PiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgLy8gbWFya3MgdGhlIGlucHV0IGNvbnRyb2wgYXMgdG91Y2hlZC9pbnZhbGlkIGlmIHRoZSBmb3JtIGNvbnRyb2wgaXMgdG91Y2hlZC9pbnZhbGlkXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnRvdWNoZWQgPyB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpIDogdGhpcy5pbnB1dEZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy5pbnZhbGlkID8gdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKSA6IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2lzUmVhZE9ubHknXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkT25seSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0ZUJ1dHRvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydpc0Rpc2FibGVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmlzRGlzYWJsZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1sndmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZU91dHB1dEZvcm1hdCAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2lzQ2xlYXJhYmxlJ10pIHtcbiAgICAgICAgICAgIC8vIHdoZW4gaXMgY2xlYXJhYmxlIGlzIHVzZWQgbGlzdGVuIGlmIG9uY2xlYXIgaXMgZmlyZWQgYW5kIHVwZGF0ZSB0aGUgdmFsdWVcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlSW5qZWN0b3IoZGF0YTogYW55KTogSW5qZWN0b3Ige1xuICAgICAgICBjb25zdCBpbmplY3RvclRva2VuczogU3RhdGljUHJvdmlkZXIgPSBbeyBwcm92aWRlOiBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcsIHVzZVZhbHVlOiBkYXRhIH1dO1xuICAgICAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogaW5qZWN0b3JUb2tlbnMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5DYWxlbmRhcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIub3BlbigpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0RhdGV0aW1lcGlja2VyIHx8IHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXIub3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBsaXN0ZW5zIHRvIHRoZSBrZXlkb3duIGV2ZW50IG9uY2UgdGhlIGNhbGVuZGFyIG9wZW5lZFxuICAgICAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6IC8vY2xvc2VzIHRoZSBjYWxlbmRhciBvbiBFc2NhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VudGVyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Nsb3NlcyB0aGUgY2FsZW5kYXIgaWYgcHJlc3NpbmcgRW50ZXIgb24gdGhlIGNsb3NlIGNhbGVuZGFyIGJ1dHRvbiBvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RXZlbnRQYXRoKGV2ZW50KS5mb3JFYWNoKChwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmNsYXNzTmFtZSAmJiBwLmNsYXNzTmFtZS5pbmRleE9mKCdtYXQtZGF0ZXBpY2tlci1jbG9zZS1idXR0b24nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRGF0ZXRpbWVwaWNrZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcnRhbEhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYXQtY2FsZW5kYXInKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIC8vIFRPRE86IGNoZWNrIGFnYWluIGlmIHRoZXJlIGlzIGFuIHVwZGF0ZSBvbiBmcmFtZXdvcmsgc2lkZSBFVUktNjIwN1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcFJlZixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVDb25maWc6IEV1aURhdGVUaW1lUGlja2VyQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBob3VyczogdGhpcy52YWx1ZSAmJiBtb21lbnQodGhpcy52YWx1ZSkuaG91cnMoKSxcbiAgICAgICAgICAgICAgICAgICAgbWluczogdGhpcy52YWx1ZSAmJiBtb21lbnQodGhpcy52YWx1ZSkubWludXRlcygpLFxuICAgICAgICAgICAgICAgICAgICBzZWNzOiB0aGlzLnZhbHVlICYmIG1vbWVudCh0aGlzLnZhbHVlKS5zZWNvbmRzKCksXG4gICAgICAgICAgICAgICAgICAgIGlzRGF0ZXRpbWVwaWNrZXI6IHRoaXMuaXNEYXRldGltZXBpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgaGFzU2Vjb25kczogdGhpcy5oYXNTZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICBpc09uZUlucHV0RmllbGQ6IHRoaXMuaXNPbmVJbnB1dEZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBzdGVwSG91cnM6IHRoaXMuc3RlcEhvdXJzLFxuICAgICAgICAgICAgICAgICAgICBzdGVwTWludXRlczogdGhpcy5zdGVwTWludXRlcyxcbiAgICAgICAgICAgICAgICAgICAgc3RlcFNlY29uZHM6IHRoaXMuc3RlcFNlY29uZHMsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRm46IChob3VyczogbnVtYmVyLCBtaW5zOiBudW1iZXIsIHNlY3M6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXVpQWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbW9tZW50KHRoaXMudmFsdWUsIG1vbWVudC5JU09fODYwMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtb21lbnQodGhpcy52YWx1ZSwgdGhpcy5mb3JtYXQucGFyc2UuZGF0ZUlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyOiBob3VycyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogbWlucyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZDogc2VjcyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKEV1aVRpbWVwaWNrZXJDb21wb25lbnQsIG51bGwsIHRoaXMuY3JlYXRlSW5qZWN0b3IodGltZUNvbmZpZykpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEV1aVRpbWVwaWNrZXJDb21wb25lbnQ+ID0gdGhpcy5wb3J0YWxIb3N0LmF0dGFjaENvbXBvbmVudFBvcnRhbCh0aGlzLnBvcnRhbCk7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5wb3J0YWxIb3N0Py5kZXRhY2goKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGNhbGVuZGFyIG9wZW5zIGFuZCBpc0RhdGV0aW1lcGlja2VyIG9yIGV1aS1hY3Rpb24tYnV0dG9ucyBkaXJlY3RpdmUgdXNlZCwgaXQgY2xvc2VzIHRoZSBjYWxlbmRhciB3aGVuIGNsaWNraW5nIG91dHNpZGUgb2YgdGhlXG4gICAgICogb3ZlcmxheS4gSWYgZXVpLWFjdGlvbi1idXR0b25zIGRpcmVjdGl2ZSBpcyB1c2VkIGl0IHJlZ2lzdGVycyB0aGUgdGVtcGxhdGUgcG9ydGFsIHdoZXJlIHRoZSB1c2VyIGNhbiBhZGQgcHJvamVjdGVkIGNvbnRlbnQgYXMgYVxuICAgICAqIGZvb3Rlci5cbiAgICAgKi9cbiAgICBvbk9wZW5lZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRldGltZXBpY2tlciB8fCB0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmV1aUFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyLnJlZ2lzdGVyQWN0aW9ucyh0aGlzLnRlbXBsYXRlUG9ydGFsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclsnX292ZXJsYXlSZWYnXVsnX2JhY2tkcm9wQ2xpY2snXS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RXZlbnRQYXRoKGV2ZW50KTogYW55IHtcbiAgICAgICAgaWYgKGV2ZW50LnBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudC5wYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF0aCA9IFtdO1xuICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICAgIHdoaWxlICh0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgcGF0aC5wdXNoKHRhcmdldCk7XG4gICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhdGgucHVzaChkb2N1bWVudCwgd2luZG93KTtcblxuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG5cbiAgICBjaG9zZW5EYXRlSGFuZGxlcihub3JtYWxpemVkRGF0ZTogYW55LCBjYWxlbmRhcjogTWF0RGF0ZXBpY2tlcjxhbnk+KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gbW9tZW50KG5vcm1hbGl6ZWREYXRlLCB0aGlzLmRhdGVPdXRwdXRGb3JtYXQpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZm9ybWF0dGVkVmFsdWUuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KGZvcm1hdHRlZFZhbHVlLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGZvcm1hdHRlZFZhbHVlLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBub3JtYWxpemVkRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdCh0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IG51bGwpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsZW5kYXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGF0ZXBpY2tlckZpbHRlcmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGF0ZUlucHV0KGU6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PE1vbWVudCB8IERhdGUgfCBzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0RhdGV0aW1lcGlja2VyKSB7XG4gICAgICAgICAgICBpZiAoZS52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudChlLnZhbHVlLCB0aGlzLmRhdGVPdXRwdXRGb3JtYXQpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KGU/LnZhbHVlID8gZS52YWx1ZSA6IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25EYXRlQ2hhbmdlKGU6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PE1vbWVudCB8IERhdGUgfCBzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmIChlLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5pc051bGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc051bGwgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRGF0ZXRpbWVwaWNrZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBob3VycyA9IHRoaXMudmFsdWUgJiYgbW9tZW50KHRoaXMudmFsdWUpLmhvdXJzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWlucyA9IHRoaXMudmFsdWUgJiYgbW9tZW50KHRoaXMudmFsdWUpLm1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNzID0gdGhpcy52YWx1ZSAmJiBtb21lbnQodGhpcy52YWx1ZSkuc2Vjb25kcygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudChlLnZhbHVlLCB0aGlzLmZvcm1hdC5wYXJzZS5kYXRlSW5wdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgaG91cjogaG91cnMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiBtaW5zIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIHNlY29uZDogc2VjcyB8fCAwLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXIub3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0ICYmIHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShtb21lbnQodGhpcy52YWx1ZSkuZm9ybWF0KHRoaXMuZGF0ZU91dHB1dEZvcm1hdCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG1vbWVudCh0aGlzLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBtb21lbnQoZS52YWx1ZSwgdGhpcy5kYXRlT3V0cHV0Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQodGhpcy52YWx1ZS5mb3JtYXQodGhpcy5kYXRlT3V0cHV0Rm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoZT8udmFsdWUgPyBlLnZhbHVlIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlZElucHV0KGU6IHN0cmluZyB8IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIGUgPT09ICdzdHJpbmcnID8gZSA6IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmlzTnVsbCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh2YWx1ZSwgdGhpcy5mb3JtYXQucGFyc2UuZGF0ZUlucHV0KTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVPdXRwdXRGb3JtYXQgJiYgdGhpcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpLmZvcm1hdCh0aGlzLmRhdGVPdXRwdXRGb3JtYXQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobW9tZW50KHRoaXMudmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xuICAgIH1cblxuICAgIG9uS2V5cHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fcmVzdHJpY3RUb1JlZ2V4KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Jlc3RyaWN0VG9SZWdleC50ZXN0KGUua2V5KSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdG9kYXkncyBkYXRlXG4gICAgICovXG4gICAgc2VsZWN0VG9kYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZShtb21lbnQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBjYWxlbmRhciB3aGVuIGlzRGF0ZXRpbWVwaWNrZXIgb3IgZXVpLWFjdGlvbi1idXR0b25zIHVzZWQgYW5kIHJlbW92ZXMgdGhlIGFwcGxpZWQgZm9vdGVyIHdoZW4gZXVpLWFjdGlvbi1idXR0b25zIHVzZWRcbiAgICAgKi9cbiAgICBjbG9zZUNhbGVuZGFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbGVuZGFyWydjbG9zZUNhbGVuZGFyJ10oKTtcblxuICAgICAgICBpZiAodGhpcy5ldWlBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyLnJlbW92ZUFjdGlvbnModGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGV1aS1hY3Rpb24tYnV0dG9ucyB1c2VkLCBpdCBhcHBsaWVzIHRoZSBkYXRlIHNlbGVjdGlvbiBhbmQgY2xvc2VzIHRoZSBjYWxlbmRhclxuICAgICAqL1xuICAgIG9uRGF0ZVNlbGVjdEFwcGx5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbGVuZGFyLl9hcHBseVBlbmRpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZSB8fCAnJztcbiAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIGNvbnZUeXBlVG9TdGFydFZpZXcodHlwZTogc3RyaW5nKTogJ3llYXInIHwgJ21vbnRoJyB8ICdtdWx0aS15ZWFyJyB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiAneWVhcic7XG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ211bHRpLXllYXInO1xuICAgICAgICAgICAgY2FzZSAncmVndWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtb250aCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgLy8gZGlzYWJsZXMgb25seSB0aGUgaW5wdXQgdGhyb3VnaCByZWFjdGl2ZSBmb3Jtc1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbnB1dERpc2FibGVkICYmICF0aGlzLmlzUGlja2VyRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5wdXREaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkRpc2FibGVkID0gdGhpcy5pc1BpY2tlckRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gZGlzYWJsZXMgb25seSB0aGUgYnV0dG9uIHRocm91Z2ggcmVhY3RpdmUgZm9ybXNcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0J1dHRvbkRpc2FibGVkICYmICF0aGlzLmlzSW5wdXREaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkRpc2FibGVkID0gdGhpcy5pc1BpY2tlckRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0lucHV0RGlzYWJsZWQgPSB0aGlzLmlzUGlja2VyRGlzYWJsZWQgPSB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0lucHV0RGlzYWJsZWQgPSB0aGlzLmlzUGlja2VyRGlzYWJsZWQgPSB0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNJbnB1dERpc2FibGVkID8gdGhpcy5pbnB1dEZvcm1Db250cm9sLmRpc2FibGUoKSA6IHRoaXMuaW5wdXRGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXJrcyB0aGUgZm9ybSBmaWVsZCBhcyB0b3VjaGVkIHdoZW4gZm9jdXNpbmcgb3V0IHRvIHRyaWdnZXIgdmFsaWRhdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvbkZvY3VzT3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrVGltZVBpY2tlclZhbGlkaXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5taW5EYXRlICYmICghbW9tZW50KHRoaXMubWluRGF0ZSkuaXNCZWZvcmUodGhpcy52YWx1ZSkgfHwgdGhpcy5hcmVTYW1lRGF0ZXMobW9tZW50KHRoaXMudmFsdWUpLnRvRGF0ZSgpLCB0aGlzLm1pbkRhdGUpKSkge1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnNEb3duRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnV0ZXNEb3duRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY29uZHNEb3duRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKCFtb21lbnQodGhpcy5taW5EYXRlKS5pc0JlZm9yZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy5taW5EYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IHRoaXMubWluRGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMubWluRGF0ZS5nZXRTZWNvbmRzKCk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnMgPSBob3VycztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWlucyA9IG1pbnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY3MgPSBzZWNvbmRzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgPyBtb21lbnQodGhpcy52YWx1ZSwgbW9tZW50LklTT184NjAxKSA6IG1vbWVudCh0aGlzLnZhbHVlLCB0aGlzLmZvcm1hdC5wYXJzZS5kYXRlSW5wdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgaG91cjogaG91cnMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiBtaW51dGVzIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIHNlY29uZDogc2Vjb25kcyB8fCAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnNEb3duRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5taW51dGVzRG93bkRpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2Uuc2Vjb25kc0Rvd25EaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heERhdGUgJiYgKCFtb21lbnQodGhpcy5tYXhEYXRlKS5pc0FmdGVyKHRoaXMudmFsdWUpIHx8IHRoaXMuYXJlU2FtZURhdGVzKG1vbWVudCh0aGlzLnZhbHVlKS50b0RhdGUoKSwgdGhpcy5tYXhEYXRlKSkpIHtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLmhvdXJzVXBEaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWludXRlc1VwRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY29uZHNVcERpc2FibGUodHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmICghbW9tZW50KHRoaXMubWF4RGF0ZSkuaXNBZnRlcih0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy5tYXhEYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IHRoaXMubWF4RGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMubWF4RGF0ZS5nZXRTZWNvbmRzKCk7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnMgPSBob3VycztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWlucyA9IG1pbnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY3MgPSBzZWNvbmRzO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJyA/IG1vbWVudCh0aGlzLnZhbHVlLCBtb21lbnQuSVNPXzg2MDEpIDogbW9tZW50KHRoaXMudmFsdWUsIHRoaXMuZm9ybWF0LnBhcnNlLmRhdGVJbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQoe1xuICAgICAgICAgICAgICAgICAgICBob3VyOiBob3VycyB8fCAwLFxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6IG1pbnV0ZXMgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgc2Vjb25kOiBzZWNvbmRzIHx8IDAsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmhvdXIoKSA9PT0gMCAmJiB0aGlzLnZhbHVlLm1pbnV0ZSgpID09PSAwICYmIHRoaXMudmFsdWUuc2Vjb25kKCkgPT09IDAgJiZcbiAgICAgICAgICAgICAgICBtb21lbnQodGhpcy5tYXhEYXRlKS5ob3VyKCkgPT09IDAgJiYgbW9tZW50KHRoaXMubWF4RGF0ZSkubWludXRlKCkgPT09IDAgJiYgbW9tZW50KHRoaXMubWF4RGF0ZSkuc2Vjb25kKCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnNEb3duRGlzYWJsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWludXRlc0Rvd25EaXNhYmxlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNvbmRzRG93bkRpc2FibGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnNEb3duRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLm1pbnV0ZXNEb3duRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZVBpY2tlckluc3RhbmNlLnNlY29uZHNEb3duRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UuaG91cnNVcERpc2FibGUoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy50aW1lUGlja2VySW5zdGFuY2UubWludXRlc1VwRGlzYWJsZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXJJbnN0YW5jZS5zZWNvbmRzVXBEaXNhYmxlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXJlU2FtZURhdGVzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGF0ZTEuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgICAgICAgZGF0ZTEuZ2V0TW9udGgoKSA9PT0gZGF0ZTIuZ2V0TW9udGgoKSAmJlxuICAgICAgICAgICAgZGF0ZTEuZ2V0RGF0ZSgpID09PSBkYXRlMi5nZXREYXRlKCkgJiZcbiAgICAgICAgICAgIGRhdGUxLmdldEhvdXJzKCkgPT09IGRhdGUyLmdldEhvdXJzKCkgJiZcbiAgICAgICAgICAgIGRhdGUxLmdldE1pbnV0ZXMoKSA9PT0gZGF0ZTIuZ2V0TWludXRlcygpICYmXG4gICAgICAgICAgICBkYXRlMS5nZXRTZWNvbmRzKCkgPT09IGRhdGUyLmdldFNlY29uZHMoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlIG9uIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnB1dEFyaWFSZXF1aXJlZEF0dHJpYnV0ZShjb250cm9sOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNBcmlhUmVxdWlyZWRBdHRyaWJ1dGUgPSBjb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgTEVUVEVSX0ZPUk1BVCA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdMTCcsXG4gICAgfSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ0xMJyxcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6ICdMTCcsXG4gICAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBZRUFSX0ZPUk1BVCA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdZWVlZJyxcbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnWVlZWScsXG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiAnWVlZWScsXG4gICAgICAgIGRhdGVBMTF5TGFiZWw6ICdZWVlZJyxcbiAgICAgICAgbW9udGhZZWFyQTExeUxhYmVsOiAnWVlZWScsXG4gICAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBNT05USF9ZRUFSX0ZPUk1BVCA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdNTS9ZWVlZJyxcbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnTU0vWVlZWScsXG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiAnTU1NIFlZWVknLFxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxuICAgICAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxuICAgIH0sXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tldWlMZXR0ZXJGb3JtYXRdJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBMRVRURVJfRk9STUFUIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlMZXR0ZXJGb3JtYXREaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZXVpWWVhckZvcm1hdF0nLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IFlFQVJfRk9STUFUIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlZZWFyRm9ybWF0RGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2V1aU1vbnRoWWVhckZvcm1hdF0nLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1PTlRIX1lFQVJfRk9STUFUIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlNb250aFllYXJGb3JtYXREaXJlY3RpdmUge31cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aS1hY3Rpb24tYnV0dG9ucycgfSlcbmV4cG9ydCBjbGFzcyBFdWlBY3Rpb25CdXR0b25zRGlyZWN0aXZlIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnZXVpLWRhdGVwaWNrZXJfX2FjdGlvbi1idXR0b25zJztcbiB9XG4iLCI8ZGl2IGNsYXNzPVwiZXVpLWRhdGVwaWNrZXJfX3dyYXBwZXIge3sgc3R5bGVDbGFzcyB9fVwiIFtjbGFzcy5ldWktZGF0ZXBpY2tlcl9fd3JhcHBlci0tcmVzcG9uc2l2ZV09XCJpc0RhdGVwaWNrZXJCbG9ja1wiPlxuICAgIDxkaXYgZXVpSW5wdXRHcm91cD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1pbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgZXVpSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgIFtldWlDbGVhcmFibGVdPVwiaXNDbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFyKClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktZGF0ZXBpY2tlci0tbm8tYnV0dG9uXT1cImhhc05vQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLWRhdGVwaWNrZXItLWxvbmctZm9ybWF0XT1cIiFpc0RhdGVwaWNrZXJCbG9jayAmJiAoaXNEYXRldGltZXBpY2tlciB8fCBldWlMZXR0ZXJGb3JtYXQpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLWRhdGVwaWNrZXItLWJsb2NrXT1cImlzRGF0ZXBpY2tlckJsb2NrXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImhhc0FyaWFSZXF1aXJlZEF0dHJpYnV0ZSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJjYWxlbmRhclwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkRhdGVJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGVcIlxuICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVwaWNrZXJGaWx0ZXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FsZW5kYXIoKVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGF0ZSBJbnB1dCBGaWVsZFwiXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5cHJlc3MoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJpc0RhdGV0aW1lcGlja2VyID8gY2hhbmdlZElucHV0KCRldmVudCkgOiBudWxsXCIgLz5cbiAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgICNjYWxlbmRhclxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M9XCJtYXQtY2FsZW5kYXIte3sgdHlwZSB9fVwiXG4gICAgICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJ0eXBlID09PSAncmVndWxhcicgPyAoc3RhcnRWaWV3ID8gc3RhcnRWaWV3IDogY29udlR5cGVUb1N0YXJ0Vmlldyh0eXBlKSkgOiBjb252VHlwZVRvU3RhcnRWaWV3KHR5cGUpXCJcbiAgICAgICAgICAgICAgICAoeWVhclNlbGVjdGVkKT1cInR5cGUgPT09ICd5ZWFyJyA/IGNob3NlbkRhdGVIYW5kbGVyKCRldmVudCwgY2FsZW5kYXIpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwidHlwZSA9PT0gJ21vbnRoJyA/IGNob3NlbkRhdGVIYW5kbGVyKCRldmVudCwgY2FsZW5kYXIpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3RvdWNoVWldPVwiYnJlYWtwb2ludHNWYWx1ZS5pc1RhYmxldCB8fCBicmVha3BvaW50c1ZhbHVlLmlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCJpc0RhdGV0aW1lcGlja2VyID8gJ2V1aS1kYXRlcGlja2VyLS1jb250YWluZXItaGVpZ2h0LWxhcmdlJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1BpY2tlckRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiY3VzdG9tSGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUNsYXNzXT1cImRhdGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW5lZCgpXCI+XG4gICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhhc05vQnV0dG9uICYmIHNob3dEYXRlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIlxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGV1aVNlY29uZGFyeVxuICAgICAgICAgICAgICAgIFtldWlJY29uQnV0dG9uXT1cIiF0b2dnbGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhdG9nZ2xlckxhYmVsICYmIHRvZ2dsZXJJY29uXCIgZXVpSWNvbiBhcmlhLWxhYmVsPVwiT3BlbiBDYWxlbmRhclwiIGljb25DbGFzcz1cInt7IHRvZ2dsZXJJY29uIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdG9nZ2xlckxhYmVsICYmICF0b2dnbGVySWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJ7eyB0b2dnbGVySWNvblN2ZyB9fVwiIGFyaWEtbGFiZWw9XCJPcGVuIENhbGVuZGFyXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2dnbGVyTGFiZWxcIj57eyB0b2dnbGVyTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVBvcnRhbFJlZj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktYWN0aW9uLWJ1dHRvbnNcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-date-range-selector.module.d.ts","sourceRoot":"","sources":["../../eui-date-range-selector/eui-date-range-selector.module.ts"],"names":[],"mappings":";;;;;;;;;;
|
1
|
+
{"version":3,"file":"eui-date-range-selector.module.d.ts","sourceRoot":"","sources":["../../eui-date-range-selector/eui-date-range-selector.module.ts"],"names":[],"mappings":";;;;;;;;;;AAYA,qBAkBa,0BAA0B;yCAA1B,0BAA0B;0CAA1B,0BAA0B;0CAA1B,0BAA0B;CAAG"}
|
@@ -73,7 +73,6 @@ export declare class EuiDatepickerComponent implements OnInit, AfterViewInit, Co
|
|
73
73
|
private portal;
|
74
74
|
private templatePortal;
|
75
75
|
private isNull;
|
76
|
-
private readonly _locale;
|
77
76
|
constructor(adapter: DateAdapter<any>, translateService: TranslateService, localeService: LocaleService, EuiAppShellService: EuiAppShellService, componentFactoryResolver: ComponentFactoryResolver, injector: Injector, appRef: ApplicationRef, viewContainerRef: ViewContainerRef, baseStatesDirective: BaseStatesDirective, euiLetterFormat: EuiLetterFormatDirective, control: NgControl);
|
78
77
|
ngOnInit(): void;
|
79
78
|
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,EAKnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAqD,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACpH,OAAO,EAAyB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAA2B,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAA4B,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;;;AAI7D,qBAkBa,sBAAuB,YAAW,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;
|
1
|
+
{"version":3,"file":"eui-datepicker.component.d.ts","sourceRoot":"","sources":["../../eui-datepicker/eui-datepicker.component.ts"],"names":[],"mappings":"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"}
|
@@ -8,19 +8,17 @@ import * as i1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateModule } from '@ngx-translate/core';
|
9
9
|
import * as i6 from '@angular/material/datepicker';
|
10
10
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
11
|
-
import
|
12
|
-
import { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';
|
13
|
-
import { MatMomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';
|
11
|
+
import { MatMomentDateModule, provideMomentDateAdapter } from '@angular/material-moment-adapter';
|
14
12
|
import { Subject } from 'rxjs';
|
15
13
|
import { takeUntil } from 'rxjs/operators';
|
16
14
|
import * as i2 from '@eui/core';
|
15
|
+
import * as i3 from '@angular/material/core';
|
17
16
|
import * as i7 from '@eui/components/eui-button';
|
18
17
|
import { EuiButtonModule } from '@eui/components/eui-button';
|
19
18
|
import * as i8 from '@eui/components/eui-icon';
|
20
19
|
import { EuiIconModule } from '@eui/components/eui-icon';
|
21
20
|
import * as i9 from '@eui/components/eui-input-text';
|
22
21
|
import { EuiInputTextModule } from '@eui/components/eui-input-text';
|
23
|
-
import { DEFAULT_FORMATS } from '@eui/components/eui-datepicker';
|
24
22
|
import moment from 'moment';
|
25
23
|
|
26
24
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
@@ -271,8 +269,7 @@ class EuiDateRangeSelectorModule {
|
|
271
269
|
EuiIconModule,
|
272
270
|
EuiInputTextModule], exports: [EuiDateRangeSelectorComponent] }); }
|
273
271
|
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiDateRangeSelectorModule, providers: [
|
274
|
-
|
275
|
-
{ provide: MAT_DATE_FORMATS, useValue: DEFAULT_FORMATS },
|
272
|
+
provideMomentDateAdapter(),
|
276
273
|
], imports: [CommonModule,
|
277
274
|
FormsModule,
|
278
275
|
ReactiveFormsModule,
|
@@ -300,8 +297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
300
297
|
exports: [EuiDateRangeSelectorComponent],
|
301
298
|
declarations: [EuiDateRangeSelectorComponent],
|
302
299
|
providers: [
|
303
|
-
|
304
|
-
{ provide: MAT_DATE_FORMATS, useValue: DEFAULT_FORMATS },
|
300
|
+
provideMomentDateAdapter(),
|
305
301
|
],
|
306
302
|
}]
|
307
303
|
}] });
|