@kirbydesign/designsystem 8.1.2 → 8.1.4
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/calendar/calendar.component.d.ts +2 -3
- package/esm2020/calendar/calendar.component.mjs +6 -4
- package/esm2020/item/item.component.mjs +6 -3
- package/esm2020/page/page.component.mjs +4 -2
- package/esm2020/progress-circle/progress-circle-ring.component.mjs +2 -3
- package/esm2020/progress-circle/progress-circle.component.mjs +4 -3
- package/fesm2015/kirbydesign-designsystem-calendar.mjs +5 -3
- package/fesm2015/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-item.mjs +6 -3
- package/fesm2015/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-page.mjs +3 -1
- package/fesm2015/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-progress-circle.mjs +3 -3
- package/fesm2015/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-calendar.mjs +5 -3
- package/fesm2020/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-item.mjs +6 -3
- package/fesm2020/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-page.mjs +3 -1
- package/fesm2020/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-progress-circle.mjs +3 -3
- package/fesm2020/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/header-actions/src/README.md +5 -0
- package/icon/src/README.md +16 -0
- package/package.json +2 -2
- package/README.md +0 -7
|
@@ -18,9 +18,9 @@ export declare class CalendarComponent implements OnInit, AfterViewInit, OnChang
|
|
|
18
18
|
disablePastDates: boolean;
|
|
19
19
|
disableFutureDates: boolean;
|
|
20
20
|
alwaysEnableToday: boolean;
|
|
21
|
-
locales: {
|
|
21
|
+
set locales(locales: {
|
|
22
22
|
[key: string]: Locale;
|
|
23
|
-
};
|
|
23
|
+
});
|
|
24
24
|
customLocales: {
|
|
25
25
|
[key: string]: Locale;
|
|
26
26
|
};
|
|
@@ -45,7 +45,6 @@ export declare class CalendarComponent implements OnInit, AfterViewInit, OnChang
|
|
|
45
45
|
private _maxDate;
|
|
46
46
|
private locale;
|
|
47
47
|
private timeZoneName;
|
|
48
|
-
private injectedLocale;
|
|
49
48
|
private includedLocales;
|
|
50
49
|
get selectedDate(): Date;
|
|
51
50
|
set selectedDate(valueLocalOrUTC: Date);
|
|
@@ -37,7 +37,6 @@ export class CalendarComponent {
|
|
|
37
37
|
this.disablePastDates = false;
|
|
38
38
|
this.disableFutureDates = false;
|
|
39
39
|
this.alwaysEnableToday = false;
|
|
40
|
-
this.locales = {};
|
|
41
40
|
this.customLocales = {};
|
|
42
41
|
/*
|
|
43
42
|
Experimental: Input property not documented on purpose.
|
|
@@ -47,9 +46,13 @@ export class CalendarComponent {
|
|
|
47
46
|
this._disabledDates = [];
|
|
48
47
|
this._enabledDates = [];
|
|
49
48
|
this.includedLocales = { da, enGB, enUS };
|
|
50
|
-
this.
|
|
49
|
+
this.locale = this.mapLocale(locale);
|
|
51
50
|
this.timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
52
51
|
}
|
|
52
|
+
set locales(locales) {
|
|
53
|
+
console.warn(`Supplying additional locales to the Kirby Calendar Component via an input property is deprecated and should not be used.
|
|
54
|
+
A future update will allow injecting additional locales via a provider instead.`);
|
|
55
|
+
}
|
|
53
56
|
get selectedDate() {
|
|
54
57
|
return this._selectedDate;
|
|
55
58
|
}
|
|
@@ -131,7 +134,6 @@ export class CalendarComponent {
|
|
|
131
134
|
return availableLocales[locale] || this.includedLocales.enGB; // Default to enGB if injected locale doesnt exist
|
|
132
135
|
}
|
|
133
136
|
ngOnInit() {
|
|
134
|
-
this.locale = this.mapLocale(this.injectedLocale);
|
|
135
137
|
this._weekDays = this.getWeekDays();
|
|
136
138
|
this.setActiveMonth(this.selectedDate);
|
|
137
139
|
}
|
|
@@ -439,4 +441,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
439
441
|
type: HostBinding,
|
|
440
442
|
args: ['class.has-year-navigator']
|
|
441
443
|
}] } });
|
|
442
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQWEzRCxJQUFLLFFBU0o7QUFURCxXQUFLLFFBQVE7SUFDWCwyQkFBZSxDQUFBO0lBQ2YsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7SUFDYiwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUNBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQVRJLFFBQVEsS0FBUixRQUFRLFFBU1o7QUFVRCxNQUFNLE9BQU8saUJBQWlCO0lBd0k1QixZQUFvQixjQUE4QixFQUFxQixNQUFjO1FBQWpFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXRJeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDdEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzdDLGFBQVEsR0FBb0IsT0FBTyxDQUFDO1FBQ3BDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBOEIsRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQThCLEVBQUUsQ0FBQztRQUN2RDs7O1VBR0U7UUFDTyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBa0JwQixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQU8zQixvQkFBZSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQTZGM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ3ZFLENBQUM7SUE3RkQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFhLFlBQVksQ0FBQyxlQUFxQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsS0FBYTtRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsWUFBWSxDQUFDLEtBQWE7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLFNBQVMsQ0FBQyxLQUFXO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxLQUFXO1FBQzlCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxLQUFXO1FBQzlCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsTUFBTSx3QkFBd0IsR0FDNUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhGLE1BQU0sdUJBQXVCLEdBQzNCLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5RSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFDSSxpQkFBaUI7UUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFPTyxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUsWUFBb0I7UUFDdkQsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUFjO1FBQzlCLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsaUVBQWlFO1NBQ25GO1FBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdGLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxrREFBa0Q7SUFDbEgsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUM5QixJQUNFLE9BQU8sQ0FBQyxlQUFlO1lBQ3ZCLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDeEIsT0FBTyxDQUFDLGtCQUFrQjtZQUMxQixPQUFPLENBQUMsYUFBYTtZQUNyQixPQUFPLENBQUMsWUFBWTtZQUNwQixPQUFPLENBQUMsT0FBTztZQUNmLE9BQU8sQ0FBQyxPQUFPO1lBQ2YsT0FBTyxDQUFDLFNBQVM7WUFDakIsT0FBTyxDQUFDLFFBQVEsRUFDaEI7WUFDQSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFhLElBQUksSUFBSSxFQUFFO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxzRkFBc0Y7SUFDdEYseUZBQXlGO0lBQ3pGLDZEQUE2RDtJQUM3RCxpRkFBaUY7SUFDakYsbUNBQW1DO0lBQzNCLGFBQWEsQ0FBQyxjQUFvQjtRQUN4QyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFNUIsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JFLGtDQUFrQztZQUNsQyxPQUFPLGNBQWMsQ0FBQztTQUN2QjtRQUNELElBQ0UsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ3ZFLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUMzRDtZQUNBLGlGQUFpRjtZQUNqRixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVFLE9BQU8saUJBQWlCLENBQUM7U0FDMUI7UUFDRCwyQ0FBMkM7UUFDM0MsT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQztZQUM3QixLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEQsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzdDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLGtDQUFrQyxDQUFDLElBQVU7UUFDbkQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBYSxFQUFFLFlBQWtCO1FBQ3RELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksT0FBTyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFVO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVU7UUFDOUIsT0FBTyxDQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDdEUsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUU5QixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbkYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUxRCxNQUFNLElBQUksR0FBbUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRTdELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELE1BQU0sSUFBSSxHQUFHO2dCQUNYLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUN4QixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7Z0JBQ2xDLFlBQVk7Z0JBQ1osVUFBVTtnQkFDVixVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQzthQUM5RCxDQUFDO1lBQ0YsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVUsRUFBRSxLQUFXLEVBQUUsVUFBZ0I7UUFDOUQsT0FBTztZQUNMLE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUMvQixNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7WUFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQzlCLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzFCLGNBQWMsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztZQUM3QyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQWdCLEVBQUUsSUFBVTtRQUMvQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN2QyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVU7Z0JBQ2QsR0FBRyxDQUFDLGNBQWM7Z0JBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFnQixFQUFFLFlBQXFCLEVBQUUsVUFBbUI7UUFDaEYsTUFBTSxVQUFVLEdBQUc7WUFDakIsZUFBZSxFQUFFLEdBQUcsQ0FBQyxjQUFjO1lBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUztZQUN0QixLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDbEIsVUFBVSxFQUFFLFlBQVk7WUFDeEIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVTtTQUN6QixDQUFDO1FBQ0YsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNCLEtBQUssTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO1lBQzVCLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixjQUFjLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFZLEVBQUUsSUFBWTtRQUN0QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxPQUFhO1FBQ3hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FDckM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQW9CO1FBQ2xDLElBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3RDLElBQUksT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO2dCQUMzQixPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkY7WUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7WUFFM0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLFNBQWlCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsS0FBSyxHQUFHLENBQUM7WUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVk7UUFDdEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWEsRUFBRSxJQUFjO1FBQ3BELElBQUksS0FBSyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE1BQU0scUJBQXFCLEdBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekUsTUFBTSx3QkFBd0IsR0FDNUIsSUFBSSxDQUFDLE9BQU87WUFDWixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUU1RixPQUFPLENBQUMscUJBQXFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsTUFBTSx1QkFBdUIsR0FDM0IsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRSxNQUFNLHdCQUF3QixHQUM1QixJQUFJLENBQUMsT0FBTztZQUNaLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTNGLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDO0lBQy9ELENBQUM7SUFFTyxPQUFPLENBQUMsSUFBVTtRQUN4QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLEVBQUU7WUFDUixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQzlCLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzNCLE9BQU8sR0FBRyxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxRQUFRLEVBQUU7b0JBQ1osTUFBTTtpQkFDUDthQUNGO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE9BQU87WUFDTCxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN0QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQzVDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDL0IsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQVU7UUFDdkMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLHdCQUF3QixDQUFDLGFBQTRCO1FBQzNELElBQUksYUFBYSxZQUFZLElBQUk7WUFBRSxPQUFPLGFBQWEsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0MsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsU0FBZSxFQUFFLE9BQWE7UUFDekQsaUVBQWlFO1FBQ2pFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckYsTUFBTSxhQUFhLEdBQUcsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUMxQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDOztpSUE5Y1UsaUJBQWlCLGdEQXdJZ0MsU0FBUztxSEF4STFELGlCQUFpQixreEJBRmpCLENBQUMsY0FBYyxDQUFDLHVLQzNFN0IsMHJEQTZEQSxxMEZEVVksY0FBYywwVEFBRSxlQUFlLCtLQUFFLFVBQVUsNklBQUUsWUFBWTsyRkFNeEQsaUJBQWlCO2tCQVI3QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxZQUMxRCxnQkFBZ0IsYUFHZixDQUFDLGNBQWMsQ0FBQzs7MEJBMEkwQixNQUFNOzJCQUFDLFNBQVM7NENBdklsQixpQkFBaUI7c0JBQW5FLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN2QyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQVFHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkF3Qk8sWUFBWTtzQkFBeEIsS0FBSztnQkFjTyxhQUFhO3NCQUF6QixLQUFLO2dCQVFPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBUU8sU0FBUztzQkFBckIsS0FBSztnQkFRTyxPQUFPO3NCQUFuQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBaUNGLGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZCxcbiAgZGlmZmVyZW5jZUluRGF5cyxcbiAgZWFjaERheU9mSW50ZXJ2YWwsXG4gIGVuZE9mTW9udGgsXG4gIGVuZE9mV2VlayxcbiAgZm9ybWF0LFxuICBnZXRZZWFyLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNTYW1lRGF5LFxuICBpc1NhbWVNb250aCxcbiAgaXNXZWVrZW5kLFxuICBMb2NhbGUgYXMgTG9jYWxlRGF0ZUZucyxcbiAgc3RhcnRPZkRheSxcbiAgc3RhcnRPZk1vbnRoLFxuICBzdGFydE9mV2Vlayxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUsIHpvbmVkVGltZVRvVXRjIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xuaW1wb3J0IHsgZGEsIGVuR0IsIGVuVVMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcblxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2Ryb3Bkb3duJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ2VsbCB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1jZWxsLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2NhbGVuZGFyLmhlbHBlcic7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJOYXZpZ2F0b3JDb25maWcgfSBmcm9tICcuL29wdGlvbnMvY2FsZW5kYXIteWVhci1uYXZpZ2F0b3ItY29uZmlnJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gTG9jYWxlRGF0ZUZucztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc1dlZWtlbmQ6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmVudW0gVGltZVVuaXQge1xuICB5ZWFycyA9ICd5ZWFycycsXG4gIG1vbnRocyA9ICdtb250aHMnLFxuICB3ZWVrcyA9ICd3ZWVrcycsXG4gIGRheXMgPSAnZGF5cycsXG4gIGhvdXJzID0gJ2hvdXJzJyxcbiAgbWludXRlcyA9ICdtaW51dGVzJyxcbiAgc2Vjb25kcyA9ICdzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzID0gJ21pbGxpc2Vjb25kcycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRHJvcGRvd25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdraXJieS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NhbGVuZGFySGVscGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbGVuZGFyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSB5ZWFyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwcmV2aW91c01vbnRoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIG5leHRNb250aENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBJbnB1dCgpIHRpbWV6b25lOiAnbG9jYWwnIHwgJ1VUQycgPSAnbG9jYWwnO1xuICBASW5wdXQoKSBkaXNhYmxlV2Vla2VuZHMgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlRnV0dXJlRGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgYWx3YXlzRW5hYmxlVG9kYXkgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9jYWxlczogeyBba2V5OiBzdHJpbmddOiBMb2NhbGUgfSA9IHt9O1xuICBASW5wdXQoKSBjdXN0b21Mb2NhbGVzOiB7IFtrZXk6IHN0cmluZ106IExvY2FsZSB9ID0ge307XG4gIC8qIFxuICAgIEV4cGVyaW1lbnRhbDogSW5wdXQgcHJvcGVydHkgbm90IGRvY3VtZW50ZWQgb24gcHVycG9zZS4gXG4gICAgRm9yIGNvbnRleHQgc2VlOiBodHRwczovL2dpdGh1Yi5jb20va2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2lzc3Vlcy8yMDg3XG4gICovXG4gIEBJbnB1dCgpIHVzZVBvcG92ZXIgPSBmYWxzZTtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB5ZWFyIG5hdmlnYXRvci5cbiAgICpcbiAgICogSW50ZXJuYWxseSwgY2FsZW5kYXIgY29tcG9uZW50OlxuICAgKiAtIGJhc2VzIHllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20gYW5kIHllYXJOYXZpZ2F0b3JPcHRpb25zLnRvIG9uIHRvZGF5RGF0ZSBpZiBhIG51bWJlciBpcyBwcm92aWRlZFxuICAgKiAtIHByaW9yaXRpemVzIG1pbkRhdGUgYW5kIG1heERhdGUgb3ZlciB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5mcm9tIGFuZCB5ZWFyTmF2aWdhdG9yT3B0aW9ucy50b1xuICAgKi9cbiAgQElucHV0KCkgeWVhck5hdmlnYXRvck9wdGlvbnM6IENhbGVuZGFyWWVhck5hdmlnYXRvckNvbmZpZztcblxuICBfbW9udGg6IENhbGVuZGFyQ2VsbFtdW107XG4gIF93ZWVrRGF5czogc3RyaW5nW107XG4gIHByaXZhdGUgc2VsZWN0ZWREYXk6IENhbGVuZGFyQ2VsbDtcbiAgLy8gTk9URTogSW50ZXJuYWxseSwgYWxsIERhdGVzXG4gIC8vIGFyZSBub3JtYWxpemVkIHRvIHBvaW50IHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0LCByZWdhcmRsZXNzIG9mIHRoZSB0aW1lem9uZVxuICAvLyBzZXR0aW5nLlxuICBwcml2YXRlIGFjdGl2ZU1vbnRoOiBEYXRlO1xuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XG4gIHByaXZhdGUgX2Rpc2FibGVkRGF0ZXM6IERhdGVbXSA9IFtdO1xuICBwcml2YXRlIF9lbmFibGVkRGF0ZXM6IERhdGVbXSA9IFtdO1xuICBwcml2YXRlIF90b2RheURhdGU6IERhdGU7XG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGU7XG4gIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gIHByaXZhdGUgbG9jYWxlOiBMb2NhbGU7XG4gIHByaXZhdGUgdGltZVpvbmVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgaW5qZWN0ZWRMb2NhbGU6IHN0cmluZztcbiAgcHJpdmF0ZSBpbmNsdWRlZExvY2FsZXMgPSB7IGRhLCBlbkdCLCBlblVTIH07XG5cbiAgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZUxvY2FsT3JVVEM6IERhdGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZUxvY2FsT3JVVEMpO1xuICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuaGFzRGF0ZUNoYW5nZWQodmFsdWUsIHRoaXMuX3NlbGVjdGVkRGF0ZSkpIHtcbiAgICAgIHRoaXMub25TZWxlY3RlZERhdGVDaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXRlcztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10pIHtcbiAgICB0aGlzLl9kaXNhYmxlZERhdGVzID0gKHZhbHVlIHx8IFtdKS5tYXAoKGRhdGUpID0+IHRoaXMubm9ybWFsaXplRGF0ZShkYXRlKSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWREYXRlcztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBlbmFibGVkRGF0ZXModmFsdWU6IERhdGVbXSkge1xuICAgIHRoaXMuX2VuYWJsZWREYXRlcyA9ICh2YWx1ZSB8fCBbXSkubWFwKChkYXRlKSA9PiB0aGlzLm5vcm1hbGl6ZURhdGUoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0IHRvZGF5RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdG9kYXlEYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRvZGF5RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuX3RvZGF5RGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNCZWZvcmUodGhpcy5hY3RpdmVNb250aCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNBZnRlcih0aGlzLmFjdGl2ZU1vbnRoLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVNb250aE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAnTU1NTScpKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVZZWFyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAneXl5eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgbmF2aWdhYmxlIHllYXJzIGZvciB5ZWFyIG5hdmlnYXRvciBiYXNlZCBvbiB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5cbiAgICovXG4gIGdldCBuYXZpZ2FibGVZZWFycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyID1cbiAgICAgIHRoaXMubWluRGF0ZSB8fCB0aGlzLmdldERhdGVGcm9tTmF2aWdhYmxlWWVhcih0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20pO1xuXG4gICAgY29uc3QgZGF0ZU9mTGFzdE5hdmlnYWJsZVllYXIgPVxuICAgICAgdGhpcy5tYXhEYXRlIHx8IHRoaXMuZ2V0RGF0ZUZyb21OYXZpZ2FibGVZZWFyKHRoaXMueWVhck5hdmlnYXRvck9wdGlvbnMudG8pO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyLCBkYXRlT2ZMYXN0TmF2aWdhYmxlWWVhcik7XG4gIH1cblxuICBnZXQgbmF2aWdhdGVkWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYWJsZVllYXJzLmluZGV4T2YodGhpcy5hY3RpdmVZZWFyKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLXllYXItbmF2aWdhdG9yJylcbiAgZ2V0IF9oYXNZZWFyTmF2aWdhdG9yKCkge1xuICAgIHJldHVybiAhIXRoaXMueWVhck5hdmlnYXRvck9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFySGVscGVyOiBDYWxlbmRhckhlbHBlciwgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmplY3RlZExvY2FsZSA9IGxvY2FsZTtcbiAgICB0aGlzLnRpbWVab25lTmFtZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0V2l0aExvY2FsZShkYXRlOiBEYXRlLCBmb3JtYXRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCBmb3JtYXRTdHJpbmcsIHtcbiAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcExvY2FsZShsb2NhbGU6IHN0cmluZyk6IExvY2FsZSB7XG4gICAgaWYgKGxvY2FsZSA9PT0gJ2VuJykge1xuICAgICAgbG9jYWxlID0gJ2VuR0InOyAvLyBpZiBlbmdsaXNoIGxvY2FsZSBpcyBwcm92aWRlZCB3aXRob3V0IHJlZ2lvbiwgd2UgZGVmYXVsdCB0byBHQlxuICAgIH1cbiAgICBsb2NhbGUgPSBsb2NhbGUucmVwbGFjZSgnLScsICcnKTtcbiAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0geyAuLi50aGlzLmluY2x1ZGVkTG9jYWxlcywgLi4udGhpcy5sb2NhbGVzLCAuLi50aGlzLmN1c3RvbUxvY2FsZXMgfTtcbiAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlc1tsb2NhbGVdIHx8IHRoaXMuaW5jbHVkZWRMb2NhbGVzLmVuR0I7IC8vIERlZmF1bHQgdG8gZW5HQiBpZiBpbmplY3RlZCBsb2NhbGUgZG9lc250IGV4aXN0XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvY2FsZSA9IHRoaXMubWFwTG9jYWxlKHRoaXMuaW5qZWN0ZWRMb2NhbGUpO1xuICAgIHRoaXMuX3dlZWtEYXlzID0gdGhpcy5nZXRXZWVrRGF5cygpO1xuICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodGhpcy5zZWxlY3RlZERhdGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIuaW5pdChcbiAgICAgIHRoaXMuY2FsZW5kYXJDb250YWluZXIsXG4gICAgICB0aGlzLmdldEhlbHBlck9wdGlvbnMoKSxcbiAgICAgIHRoaXMuX29uRGF0ZVNlbGVjdGVkLmJpbmQodGhpcyksXG4gICAgICB0aGlzLm9uQ2hhbmdlTW9udGguYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU1vbnRoKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5kaXNhYmxlV2Vla2VuZHMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZVBhc3REYXRlcyB8fFxuICAgICAgY2hhbmdlcy5kaXNhYmxlRnV0dXJlRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZWREYXRlcyB8fFxuICAgICAgY2hhbmdlcy5lbmFibGVkRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMubWluRGF0ZSB8fFxuICAgICAgY2hhbmdlcy5tYXhEYXRlIHx8XG4gICAgICBjaGFuZ2VzLnRvZGF5RGF0ZSB8fFxuICAgICAgY2hhbmdlcy50aW1lem9uZVxuICAgICkge1xuICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlTW9udGgoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZU1vbnRoKGRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU1vbnRoIHx8ICFpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCBkYXRlKSkge1xuICAgICAgdGhpcy5hY3RpdmVNb250aCA9IHN0YXJ0T2ZNb250aChkYXRlKTtcbiAgICAgIHRoaXMucmVmcmVzaEFjdGl2ZU1vbnRoKCk7XG4gICAgICB0aGlzLmNhbGVuZGFySGVscGVyLnVwZGF0ZSh0aGlzLmdldEhlbHBlck9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIGxlbmllbmN5LCB0aGUgY29tcG9uZW50IHdpbGwgYWNjZXB0IGFueSBEYXRlIHRoYXQgcG9pbnRzIHRvIGVpdGhlciBVVEMgbWlkbmlnaHRcbiAgLy8gb3IgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQgYWx0aG91Z2ggd2Ugd2lsbCBpbnRlcm5hbGx5IG5vcm1hbGl6ZSB0aGUgcmVwcmVzZW50YXRpb25cbiAgLy8gb2YgYWxsIHJlY2VpdmVkIGRhdGVzIHRvIHBvaW50IHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0LlxuICAvLyBXZSBjdXJyZW50bHkgbG9nIG5vIHdhcm5pbmdzIGlmIHRoZSBkYXRlIGRvZXNuJ3QgbWF0Y2ggdGhlIHRpbWV6b25lIHNldHRpbmcgb3JcbiAgLy8gaWYgaXQgZG9lc24ndCBwb2ludCB0byBtaWRuaWdodC5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlKGRhdGVMb2NhbE9yVVRDOiBEYXRlKSB7XG4gICAgaWYgKCFkYXRlTG9jYWxPclVUQykgcmV0dXJuO1xuXG4gICAgaWYgKHN0YXJ0T2ZEYXkoZGF0ZUxvY2FsT3JVVEMpLmdldFRpbWUoKSA9PT0gZGF0ZUxvY2FsT3JVVEMuZ2V0VGltZSgpKSB7XG4gICAgICAvLyBkYXRlIGlzIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0XG4gICAgICByZXR1cm4gZGF0ZUxvY2FsT3JVVEM7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHN0YXJ0T2ZEYXkodXRjVG9ab25lZFRpbWUoZGF0ZUxvY2FsT3JVVEMsIHRoaXMudGltZVpvbmVOYW1lKSkuZ2V0VGltZSgpID09PVxuICAgICAgdXRjVG9ab25lZFRpbWUoZGF0ZUxvY2FsT3JVVEMsIHRoaXMudGltZVpvbmVOYW1lKS5nZXRUaW1lKClcbiAgICApIHtcbiAgICAgIC8vIHRoZSBkYXRlIGlzIGEgVVRDIG1pZG5pZ2h0OyBjcmVhdGUgdGhlIGVxdWl2YWxlbnQgbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQgZGF0ZVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFVUQ2RhdGUgPSB1dGNUb1pvbmVkVGltZShkYXRlTG9jYWxPclVUQywgdGhpcy50aW1lWm9uZU5hbWUpO1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRVVENkYXRlO1xuICAgIH1cbiAgICAvLyBkb2VzIG5vdCBwb2ludCB0byBtaWRuaWdodCBzbyB3ZSBtYWtlIGl0XG4gICAgcmV0dXJuIHN0YXJ0T2ZEYXkoZGF0ZUxvY2FsT3JVVEMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXZWVrRGF5cygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB3ZWVrID0gZWFjaERheU9mSW50ZXJ2YWwoe1xuICAgICAgc3RhcnQ6IHN0YXJ0T2ZXZWVrKG5vdywgeyBsb2NhbGU6IHRoaXMubG9jYWxlIH0pLFxuICAgICAgZW5kOiBlbmRPZldlZWsobm93LCB7IGxvY2FsZTogdGhpcy5sb2NhbGUgfSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2Vlay5tYXAoKGRhdGUpID0+IHRoaXMuZ2V0Rmlyc3RMZXR0ZXJPZldlZWtEYXlDYXBpdGFsaXplZChkYXRlKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpcnN0TGV0dGVyT2ZXZWVrRGF5Q2FwaXRhbGl6ZWQoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhMb2NhbGUoZGF0ZSwgJ0VFRUVFJyk7XG4gIH1cblxuICBwcml2YXRlIGhhc0RhdGVDaGFuZ2VkKG5ld0RhdGU6IERhdGUsIHByZXZpb3VzRGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghbmV3RGF0ZSAmJiAhcHJldmlvdXNEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChuZXdEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhcHJldmlvdXNEYXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICFpc1NhbWVEYXkobmV3RGF0ZSwgcHJldmlvdXNEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNhYmxlZERhdGUoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZSgoZGlzYWJsZWREYXRlKSA9PiBpc1NhbWVEYXkoZGlzYWJsZWREYXRlLCBkYXRlKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRW5hYmxlZERhdGUoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9lbmFibGVkRGF0ZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLmVuYWJsZWREYXRlcy5zb21lKChlbmFibGVkRGF0ZSkgPT4gaXNTYW1lRGF5KGVuYWJsZWREYXRlLCBkYXRlKSlcbiAgICApO1xuICB9XG5cbiAgcmVmcmVzaEFjdGl2ZU1vbnRoKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbW9udGhTdGFydCA9IHN0YXJ0T2ZNb250aCh0aGlzLmFjdGl2ZU1vbnRoKTtcbiAgICBjb25zdCBtb250aEVuZCA9IGVuZE9mTW9udGgodGhpcy5hY3RpdmVNb250aCk7XG4gICAgY29uc3Qgc3RhcnRPZkZpcnN0V2VlayA9IHN0YXJ0T2ZXZWVrKG1vbnRoU3RhcnQsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBjb25zdCBlbmRPZkxhc3RXZWVrID0gZW5kT2ZXZWVrKG1vbnRoRW5kLCB7IGxvY2FsZTogdGhpcy5sb2NhbGUgfSk7XG4gICAgY29uc3QgdG90YWxEYXlDb3VudCA9IGRpZmZlcmVuY2VJbkRheXMoZW5kT2ZMYXN0V2Vlaywgc3RhcnRPZkZpcnN0V2VlaykgKyAxO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50b2RheURhdGUgPyBzdGFydE9mRGF5KHRoaXMudG9kYXlEYXRlKSA6IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XG5cbiAgICBjb25zdCBkYXlzQXJyYXkgPSBBcnJheS5mcm9tKEFycmF5KHRvdGFsRGF5Q291bnQpLmtleXMoKSk7XG5cbiAgICBjb25zdCBkYXlzOiBDYWxlbmRhckNlbGxbXSA9IGRheXNBcnJheS5tYXAoKG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2VsbERhdGUgPSBhZGQoc3RhcnRPZkZpcnN0V2VlaywgeyBbVGltZVVuaXQuZGF5c106IG51bWJlciB9KTtcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuZ2V0Q2FsZW5kYXJEYXkoY2VsbERhdGUsIHRvZGF5LCBtb250aFN0YXJ0KTtcblxuICAgICAgY29uc3QgaXNTZWxlY3RhYmxlID0gdGhpcy5pc1NlbGVjdGFibGUoZGF5LCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlLCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBjZWxsID0ge1xuICAgICAgICBkYXRlOiBjZWxsRGF0ZS5nZXREYXRlKCksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICAgIGlzU2VsZWN0YWJsZSxcbiAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgY3NzQ2xhc3NlczogdGhpcy5nZXRDc3NDbGFzc2VzKGRheSwgaXNTZWxlY3RhYmxlLCBpc1NlbGVjdGVkKSxcbiAgICAgIH07XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gY2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5jaHVuayhkYXlzLCA3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJEYXkoZGF0ZTogRGF0ZSwgdG9kYXk6IERhdGUsIG1vbnRoU3RhcnQ6IERhdGUpOiBDYWxlbmRhckRheSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVG9kYXk6IGlzU2FtZURheSh0b2RheSwgZGF0ZSksXG4gICAgICBpc1Bhc3Q6IGlzQmVmb3JlKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzRnV0dXJlOiBpc0FmdGVyKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzV2Vla2VuZDogaXNXZWVrZW5kKGRhdGUpLFxuICAgICAgaXNDdXJyZW50TW9udGg6IGlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoU3RhcnQpLFxuICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkRGF0ZShkYXRlKSB8fCAhdGhpcy5pc0VuYWJsZWREYXRlKGRhdGUpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0YWJsZShkYXk6IENhbGVuZGFyRGF5LCBkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmFsd2F5c0VuYWJsZVRvZGF5ICYmIGRheS5pc1RvZGF5KSB8fFxuICAgICAgKCFkYXkuaXNEaXNhYmxlZCAmJlxuICAgICAgICBkYXkuaXNDdXJyZW50TW9udGggJiZcbiAgICAgICAgISh0aGlzLmRpc2FibGVXZWVrZW5kcyAmJiBkYXkuaXNXZWVrZW5kKSAmJlxuICAgICAgICAhKHRoaXMuZGlzYWJsZVBhc3REYXRlcyAmJiBkYXkuaXNQYXN0KSAmJlxuICAgICAgICAhKHRoaXMuZGlzYWJsZUZ1dHVyZURhdGVzICYmIGRheS5pc0Z1dHVyZSkgJiZcbiAgICAgICAgISh0aGlzLm1pbkRhdGUgJiYgaXNCZWZvcmUoZGF0ZSwgdGhpcy5taW5EYXRlKSkgJiZcbiAgICAgICAgISh0aGlzLm1heERhdGUgJiYgaXNBZnRlcihkYXRlLCB0aGlzLm1heERhdGUpKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDc3NDbGFzc2VzKGRheTogQ2FsZW5kYXJEYXksIGlzU2VsZWN0YWJsZTogYm9vbGVhbiwgaXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGNzc0NsYXNzZXMgPSB7XG4gICAgICAnY3VycmVudC1tb250aCc6IGRheS5pc0N1cnJlbnRNb250aCxcbiAgICAgIHdlZWtlbmQ6IGRheS5pc1dlZWtlbmQsXG4gICAgICB0b2RheTogZGF5LmlzVG9kYXksXG4gICAgICBzZWxlY3RhYmxlOiBpc1NlbGVjdGFibGUsXG4gICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgIHBhc3Q6IGRheS5pc1Bhc3QsXG4gICAgICBkaXNhYmxlZDogZGF5LmlzRGlzYWJsZWQsXG4gICAgfTtcbiAgICBsZXQgY3NzQ2xhc3NTdHJpbmcgPSAnZGF5JztcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjc3NDbGFzc2VzKSB7XG4gICAgICBpZiAoY3NzQ2xhc3Nlc1trZXldKSB7XG4gICAgICAgIGNzc0NsYXNzU3RyaW5nICs9ICcgJyArIGtleTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNzc0NsYXNzU3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBjaHVuayhhcnJheTogYW55W10sIHNpemU6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICB3aGlsZSAoYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXJyYXkuc3BsaWNlKDAsIHNpemUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICBwcml2YXRlIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKG5ld0RhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RGF5ID0gdGhpcy5nZXRDZWxsKG5ld0RhdGUpO1xuICAgIGlmIChuZXdEYXkpIHtcbiAgICAgIG5ld0RheS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBuZXdEYXk7XG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIuc2V0U2VsZWN0ZWREYXkobmV3RGF0ZS5nZXREYXRlKCkpO1xuICB9XG5cbiAgX29uRGF0ZVNlbGVjdGVkKG5ld0RheTogQ2FsZW5kYXJDZWxsKSB7XG4gICAgaWYgKG5ld0RheS5pc1NlbGVjdGFibGUgJiYgbmV3RGF5LmRhdGUpIHtcbiAgICAgIGxldCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy5hY3RpdmVNb250aCk7XG4gICAgICBuZXdEYXRlLnNldERhdGUobmV3RGF5LmRhdGUpO1xuXG4gICAgICBpZiAodGhpcy50aW1lem9uZSA9PT0gJ1VUQycpIHtcbiAgICAgICAgbmV3RGF0ZSA9IHpvbmVkVGltZVRvVXRjKHRoaXMuc3VidHJhY3RUaW1lem9uZU9mZnNldChuZXdEYXRlKSwgdGhpcy50aW1lWm9uZU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRlVG9FbWl0ID0gbmV3RGF0ZTtcblxuICAgICAgaWYgKHRoaXMuaGFzRGF0ZUNoYW5nZWQobmV3RGF0ZSwgdGhpcy5fc2VsZWN0ZWREYXRlKSkge1xuICAgICAgICB0aGlzLm9uU2VsZWN0ZWREYXRlQ2hhbmdlKG5ld0RhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXdEYXRlO1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlVG9FbWl0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGRhdGVUb0VtaXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VNb250aChkaXJlY3Rpb246IG51bWJlcikge1xuICAgIHRoaXMuX2NoYW5nZU1vbnRoKGRpcmVjdGlvbik7XG4gICAgdGhpcy5jYWxlbmRhckhlbHBlci51cGRhdGUodGhpcy5nZXRIZWxwZXJPcHRpb25zKCkpO1xuICB9XG5cbiAgX2NoYW5nZU1vbnRoKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZVZpZXcoaW5kZXgsIFRpbWVVbml0Lm1vbnRocyk7XG4gICAgaW5kZXggPiAwXG4gICAgICA/IHRoaXMubmV4dE1vbnRoQ2xpY2tlZC5lbWl0KHRoaXMuYWN0aXZlTW9udGgpXG4gICAgICA6IHRoaXMucHJldmlvdXNNb250aENsaWNrZWQuZW1pdCh0aGlzLmFjdGl2ZU1vbnRoKTtcbiAgfVxuXG4gIF9jaGFuZ2VZZWFyKHllYXI6IHN0cmluZykge1xuICAgIGNvbnN0IHllYXJOdW1lcmljID0gTnVtYmVyKHllYXIpO1xuICAgIHRoaXMuY2hhbmdlQWN0aXZlVmlldyh5ZWFyTnVtZXJpYyAtIGdldFllYXIodGhpcy5hY3RpdmVNb250aCksIFRpbWVVbml0LnllYXJzKTtcbiAgICB0aGlzLnllYXJTZWxlY3QuZW1pdCh5ZWFyTnVtZXJpYyk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUFjdGl2ZVZpZXcoaW5kZXg6IG51bWJlciwgdW5pdDogVGltZVVuaXQpIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZU1vbnRoID0gYWRkKHRoaXMuYWN0aXZlTW9udGgsIHsgW3VuaXRdOiBpbmRleCB9KTtcblxuICAgIHRoaXMucmVmcmVzaEFjdGl2ZU1vbnRoKCk7XG4gIH1cblxuICBnZXQgX2Nhbk5hdmlnYXRlQmFjaygpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWFjaGVkUGFzdERhdGVzTGltaXQgPVxuICAgICAgdGhpcy5kaXNhYmxlUGFzdERhdGVzICYmIGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMudG9kYXlEYXRlKTtcblxuICAgIGNvbnN0IHJlYWNoZWRPckV4Y2VlZGVkTWluRGF0ZSA9XG4gICAgICB0aGlzLm1pbkRhdGUgJiZcbiAgICAgIChpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1pbkRhdGUpIHx8IGlzQmVmb3JlKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWluRGF0ZSkpO1xuXG4gICAgcmV0dXJuICFyZWFjaGVkUGFzdERhdGVzTGltaXQgJiYgIXJlYWNoZWRPckV4Y2VlZGVkTWluRGF0ZTtcbiAgfVxuXG4gIGdldCBfY2FuTmF2aWdhdGVGb3J3YXJkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlYWNoZWRGdXR1cmVEYXRlc0xpbWl0ID1cbiAgICAgIHRoaXMuZGlzYWJsZUZ1dHVyZURhdGVzICYmIGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMudG9kYXlEYXRlKTtcblxuICAgIGNvbnN0IHJlYWNoZWRPckV4Y2VlZGVkTWF4RGF0ZSA9XG4gICAgICB0aGlzLm1heERhdGUgJiZcbiAgICAgIChpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1heERhdGUpIHx8IGlzQWZ0ZXIodGhpcy5hY3RpdmVNb250aCwgdGhpcy5tYXhEYXRlKSk7XG5cbiAgICByZXR1cm4gIXJlYWNoZWRGdXR1cmVEYXRlc0xpbWl0ICYmICFyZWFjaGVkT3JFeGNlZWRlZE1heERhdGU7XG4gIH1cblxuICBwcml2YXRlIGdldENlbGwoZGF0ZTogRGF0ZSkge1xuICAgIGxldCBmb3VuZERheSA9IG51bGw7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGZvciAoY29uc3Qgd2VlayBvZiB0aGlzLl9tb250aCkge1xuICAgICAgICBmb3VuZERheSA9IHdlZWsuZmluZCgoZGF5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRheS5pc0N1cnJlbnRNb250aCAmJiBkYXkuZGF0ZSA9PT0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmREYXkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmREYXk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBlck9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FuTmF2aWdhdGVCYWNrOiB0aGlzLl9jYW5OYXZpZ2F0ZUJhY2ssXG4gICAgICBjYW5OYXZpZ2F0ZUZvcndhcmQ6IHRoaXMuX2Nhbk5hdmlnYXRlRm9yd2FyZCxcbiAgICAgIHllYXI6IHRoaXMuYWN0aXZlWWVhcixcbiAgICAgIG1vbnRoTmFtZTogdGhpcy5hY3RpdmVNb250aE5hbWUsXG4gICAgICB3ZWVrRGF5czogdGhpcy5fd2Vla0RheXMsXG4gICAgICBtb250aDogdGhpcy5fbW9udGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3VidHJhY3RUaW1lem9uZU9mZnNldChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbk1zID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0SW5Ncyk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVGcm9tTmF2aWdhYmxlWWVhcihuYXZpZ2FibGVZZWFyOiBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKG5hdmlnYWJsZVllYXIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmF2aWdhYmxlWWVhcjtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyBuYXZpZ2FibGVZZWFyLCAwLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nW10ge1xuICAgIC8vIEVuc3VyZSB5ZWFycyBhcmUgb3JkZXJlZCBjb3JyZWN0bHkgaWYgcGFyYW1ldGVycyBhcmUgc3dpdGNoZWQ6XG4gICAgY29uc3QgW3N0YXJ0WWVhciwgZW5kWWVhcl0gPSBbc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIGVuZERhdGUuZ2V0RnVsbFllYXIoKV0uc29ydCgpO1xuICAgIGNvbnN0IG51bWJlck9mWWVhcnMgPSBlbmRZZWFyIC0gc3RhcnRZZWFyO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1iZXJPZlllYXJzICsgMSB9LCAoXywgaSkgPT4gKHN0YXJ0WWVhciArIGkpLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtb250aC1uYXZpZ2F0b3JcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiIV9jYW5OYXZpZ2F0ZUJhY2tcIlxuICAgICAgKGNsaWNrKT1cIl9jaGFuZ2VNb250aCgtMSlcIlxuICAgICAga2lyYnktYnV0dG9uXG4gICAgICBbbm9EZWNvcmF0aW9uXT1cInRydWVcIlxuICAgICAgY2xhc3M9XCJuby1tYXJnaW5cIlxuICAgID5cbiAgICAgIDxraXJieS1pY29uIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9raXJieS1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vbnRoLWFuZC15ZWFyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1vbnRoXCI+e3sgYWN0aXZlTW9udGhOYW1lIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhX2hhc1llYXJOYXZpZ2F0b3JcIiBjbGFzcz1cInllYXJcIj57eyBhY3RpdmVZZWFyIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cIiFfY2FuTmF2aWdhdGVGb3J3YXJkXCJcbiAgICAgIChjbGljayk9XCJfY2hhbmdlTW9udGgoMSlcIlxuICAgICAga2lyYnktYnV0dG9uXG4gICAgICBbbm9EZWNvcmF0aW9uXT1cInRydWVcIlxuICAgICAgY2xhc3M9XCJuby1tYXJnaW5cIlxuICAgID5cbiAgICAgIDxraXJieS1pY29uIG5hbWU9XCJhcnJvdy1tb3JlXCI+PC9raXJieS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGtpcmJ5LWRyb3Bkb3duXG4gICAgKm5nSWY9XCJfaGFzWWVhck5hdmlnYXRvclwiXG4gICAgW3VzZVBvcG92ZXJdPVwidXNlUG9wb3ZlclwiXG4gICAgW3NlbGVjdGVkSW5kZXhdPVwibmF2aWdhdGVkWWVhclwiXG4gICAgW2l0ZW1zXT1cIm5hdmlnYWJsZVllYXJzXCJcbiAgICBwb3BvdXQ9XCJsZWZ0XCJcbiAgICAoY2hhbmdlKT1cIl9jaGFuZ2VZZWFyKCRldmVudClcIlxuICA+PC9raXJieS1kcm9wZG93bj5cbjwvZGl2PlxuXG48dGFibGU+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICA8dGggKm5nRm9yPVwibGV0IHdlZWtEYXkgb2YgX3dlZWtEYXlzXCI+e3sgd2Vla0RheSB9fTwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cblxuICA8dGJvZHk+XG4gICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIF9tb250aFwiPlxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKGNsaWNrKT1cIl9vbkRhdGVTZWxlY3RlZChkYXkpXCJcbiAgICAgICAgICBjbGFzcz1cInt7IGRheS5jc3NDbGFzc2VzIH19IGNvbnRhaW4tc3RhdGUtbGF5ZXJcIlxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuaXNTZWxlY3RlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXRlLWxheWVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudC1sYXllclwiPnt7IGRheS5kYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbjwhLS0gPGlmcmFtZSBzcmM9XCJraXJieS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLndlYnZpZXcuaHRtbFwiICNjYWxlbmRhckNvbnRhaW5lciBzdHlsZT1cIndpZHRoOiAzMjBweDsgaGVpZ2h0OiAzMDRweDsgYm9yZGVyOiAwXCI+IC0tPlxuIl19
|
|
444
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vY2FsZW5kYXIvc3JjL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2NhbGVuZGFyL3NyYy9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsY0FBYyxFQUFF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QUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQVFHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkF1Qk8sWUFBWTtzQkFBeEIsS0FBSztnQkFjTyxhQUFhO3NCQUF6QixLQUFLO2dCQVFPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBUU8sU0FBUztzQkFBckIsS0FBSztnQkFRTyxPQUFPO3NCQUFuQixLQUFLO2dCQVdPLE9BQU87c0JBQW5CLEtBQUs7Z0JBaUNGLGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZCxcbiAgZGlmZmVyZW5jZUluRGF5cyxcbiAgZWFjaERheU9mSW50ZXJ2YWwsXG4gIGVuZE9mTW9udGgsXG4gIGVuZE9mV2VlayxcbiAgZm9ybWF0LFxuICBnZXRZZWFyLFxuICBpc0FmdGVyLFxuICBpc0JlZm9yZSxcbiAgaXNTYW1lRGF5LFxuICBpc1NhbWVNb250aCxcbiAgaXNXZWVrZW5kLFxuICBMb2NhbGUgYXMgTG9jYWxlRGF0ZUZucyxcbiAgc3RhcnRPZkRheSxcbiAgc3RhcnRPZk1vbnRoLFxuICBzdGFydE9mV2Vlayxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUsIHpvbmVkVGltZVRvVXRjIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xuaW1wb3J0IHsgZGEsIGVuR0IsIGVuVVMgfSBmcm9tICdkYXRlLWZucy9sb2NhbGUnO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9pY29uJztcblxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2Ryb3Bkb3duJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQ2VsbCB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1jZWxsLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFyT3B0aW9ucyB9IGZyb20gJy4vaGVscGVycy9jYWxlbmRhci1vcHRpb25zLm1vZGVsJztcbmltcG9ydCB7IENhbGVuZGFySGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2NhbGVuZGFyLmhlbHBlcic7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJOYXZpZ2F0b3JDb25maWcgfSBmcm9tICcuL29wdGlvbnMvY2FsZW5kYXIteWVhci1uYXZpZ2F0b3ItY29uZmlnJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlID0gTG9jYWxlRGF0ZUZucztcbmludGVyZmFjZSBDYWxlbmRhckRheSB7XG4gIGlzQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc1dlZWtlbmQ6IGJvb2xlYW47XG4gIGlzUGFzdDogYm9vbGVhbjtcbiAgaXNGdXR1cmU6IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmVudW0gVGltZVVuaXQge1xuICB5ZWFycyA9ICd5ZWFycycsXG4gIG1vbnRocyA9ICdtb250aHMnLFxuICB3ZWVrcyA9ICd3ZWVrcycsXG4gIGRheXMgPSAnZGF5cycsXG4gIGhvdXJzID0gJ2hvdXJzJyxcbiAgbWludXRlcyA9ICdtaW51dGVzJyxcbiAgc2Vjb25kcyA9ICdzZWNvbmRzJyxcbiAgbWlsbGlzZWNvbmRzID0gJ21pbGxpc2Vjb25kcycsXG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRHJvcGRvd25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbk1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdraXJieS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NhbGVuZGFySGVscGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyQ29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbGVuZGFyQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBPdXRwdXQoKSB5ZWFyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwcmV2aW91c01vbnRoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIG5leHRNb250aENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIEBJbnB1dCgpIHRpbWV6b25lOiAnbG9jYWwnIHwgJ1VUQycgPSAnbG9jYWwnO1xuICBASW5wdXQoKSBkaXNhYmxlV2Vla2VuZHMgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlRnV0dXJlRGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgYWx3YXlzRW5hYmxlVG9kYXkgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgbG9jYWxlcyhsb2NhbGVzOiB7IFtrZXk6IHN0cmluZ106IExvY2FsZSB9KSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFN1cHBseWluZyBhZGRpdGlvbmFsIGxvY2FsZXMgdG8gdGhlIEtpcmJ5IENhbGVuZGFyIENvbXBvbmVudCB2aWEgYW4gaW5wdXQgcHJvcGVydHkgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBcbiAgICAgICAgQSBmdXR1cmUgdXBkYXRlIHdpbGwgYWxsb3cgaW5qZWN0aW5nIGFkZGl0aW9uYWwgbG9jYWxlcyB2aWEgYSBwcm92aWRlciBpbnN0ZWFkLmBcbiAgICApO1xuICB9XG4gIEBJbnB1dCgpIGN1c3RvbUxvY2FsZXM6IHsgW2tleTogc3RyaW5nXTogTG9jYWxlIH0gPSB7fTtcbiAgLyogXG4gICAgRXhwZXJpbWVudGFsOiBJbnB1dCBwcm9wZXJ0eSBub3QgZG9jdW1lbnRlZCBvbiBwdXJwb3NlLiBcbiAgICBGb3IgY29udGV4dCBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzIwODdcbiAgKi9cbiAgQElucHV0KCkgdXNlUG9wb3ZlciA9IGZhbHNlO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHllYXIgbmF2aWdhdG9yLlxuICAgKlxuICAgKiBJbnRlcm5hbGx5LCBjYWxlbmRhciBjb21wb25lbnQ6XG4gICAqIC0gYmFzZXMgeWVhck5hdmlnYXRvck9wdGlvbnMuZnJvbSBhbmQgeWVhck5hdmlnYXRvck9wdGlvbnMudG8gb24gdG9kYXlEYXRlIGlmIGEgbnVtYmVyIGlzIHByb3ZpZGVkXG4gICAqIC0gcHJpb3JpdGl6ZXMgbWluRGF0ZSBhbmQgbWF4RGF0ZSBvdmVyIHllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20gYW5kIHllYXJOYXZpZ2F0b3JPcHRpb25zLnRvXG4gICAqL1xuICBASW5wdXQoKSB5ZWFyTmF2aWdhdG9yT3B0aW9uczogQ2FsZW5kYXJZZWFyTmF2aWdhdG9yQ29uZmlnO1xuXG4gIF9tb250aDogQ2FsZW5kYXJDZWxsW11bXTtcbiAgX3dlZWtEYXlzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBzZWxlY3RlZERheTogQ2FsZW5kYXJDZWxsO1xuICAvLyBOT1RFOiBJbnRlcm5hbGx5LCBhbGwgRGF0ZXNcbiAgLy8gYXJlIG5vcm1hbGl6ZWQgdG8gcG9pbnQgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHRpbWV6b25lXG4gIC8vIHNldHRpbmcuXG4gIHByaXZhdGUgYWN0aXZlTW9udGg6IERhdGU7XG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIHByaXZhdGUgX2VuYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIHByaXZhdGUgX3RvZGF5RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWF4RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBsb2NhbGU6IExvY2FsZTtcbiAgcHJpdmF0ZSB0aW1lWm9uZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBpbmNsdWRlZExvY2FsZXMgPSB7IGRhLCBlbkdCLCBlblVTIH07XG5cbiAgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZUxvY2FsT3JVVEM6IERhdGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZUxvY2FsT3JVVEMpO1xuICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuaGFzRGF0ZUNoYW5nZWQodmFsdWUsIHRoaXMuX3NlbGVjdGVkRGF0ZSkpIHtcbiAgICAgIHRoaXMub25TZWxlY3RlZERhdGVDaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWREYXRlcztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZERhdGVzKHZhbHVlOiBEYXRlW10pIHtcbiAgICB0aGlzLl9kaXNhYmxlZERhdGVzID0gKHZhbHVlIHx8IFtdKS5tYXAoKGRhdGUpID0+IHRoaXMubm9ybWFsaXplRGF0ZShkYXRlKSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZERhdGVzKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWREYXRlcztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBlbmFibGVkRGF0ZXModmFsdWU6IERhdGVbXSkge1xuICAgIHRoaXMuX2VuYWJsZWREYXRlcyA9ICh2YWx1ZSB8fCBbXSkubWFwKChkYXRlKSA9PiB0aGlzLm5vcm1hbGl6ZURhdGUoZGF0ZSkpO1xuICB9XG5cbiAgZ2V0IHRvZGF5RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdG9kYXlEYXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRvZGF5RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuX3RvZGF5RGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtaW5EYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNCZWZvcmUodGhpcy5hY3RpdmVNb250aCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZU1vbnRoKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuYWN0aXZlTW9udGggJiYgaXNBZnRlcih0aGlzLmFjdGl2ZU1vbnRoLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVNb250aE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAnTU1NTScpKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVZZWFyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aExvY2FsZSh0aGlzLmFjdGl2ZU1vbnRoLCAneXl5eScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgbmF2aWdhYmxlIHllYXJzIGZvciB5ZWFyIG5hdmlnYXRvciBiYXNlZCBvbiB5ZWFyTmF2aWdhdG9yT3B0aW9ucy5cbiAgICovXG4gIGdldCBuYXZpZ2FibGVZZWFycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyID1cbiAgICAgIHRoaXMubWluRGF0ZSB8fCB0aGlzLmdldERhdGVGcm9tTmF2aWdhYmxlWWVhcih0aGlzLnllYXJOYXZpZ2F0b3JPcHRpb25zLmZyb20pO1xuXG4gICAgY29uc3QgZGF0ZU9mTGFzdE5hdmlnYWJsZVllYXIgPVxuICAgICAgdGhpcy5tYXhEYXRlIHx8IHRoaXMuZ2V0RGF0ZUZyb21OYXZpZ2FibGVZZWFyKHRoaXMueWVhck5hdmlnYXRvck9wdGlvbnMudG8pO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoZGF0ZU9mRmlyc3ROYXZpZ2FibGVZZWFyLCBkYXRlT2ZMYXN0TmF2aWdhYmxlWWVhcik7XG4gIH1cblxuICBnZXQgbmF2aWdhdGVkWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYWJsZVllYXJzLmluZGV4T2YodGhpcy5hY3RpdmVZZWFyKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLXllYXItbmF2aWdhdG9yJylcbiAgZ2V0IF9oYXNZZWFyTmF2aWdhdG9yKCkge1xuICAgIHJldHVybiAhIXRoaXMueWVhck5hdmlnYXRvck9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhbGVuZGFySGVscGVyOiBDYWxlbmRhckhlbHBlciwgQEluamVjdChMT0NBTEVfSUQpIGxvY2FsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLm1hcExvY2FsZShsb2NhbGUpO1xuICAgIHRoaXMudGltZVpvbmVOYW1lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRXaXRoTG9jYWxlKGRhdGU6IERhdGUsIGZvcm1hdFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGZvcm1hdFN0cmluZywge1xuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwTG9jYWxlKGxvY2FsZTogc3RyaW5nKTogTG9jYWxlIHtcbiAgICBpZiAobG9jYWxlID09PSAnZW4nKSB7XG4gICAgICBsb2NhbGUgPSAnZW5HQic7IC8vIGlmIGVuZ2xpc2ggbG9jYWxlIGlzIHByb3ZpZGVkIHdpdGhvdXQgcmVnaW9uLCB3ZSBkZWZhdWx0IHRvIEdCXG4gICAgfVxuICAgIGxvY2FsZSA9IGxvY2FsZS5yZXBsYWNlKCctJywgJycpO1xuICAgIGNvbnN0IGF2YWlsYWJsZUxvY2FsZXMgPSB7IC4uLnRoaXMuaW5jbHVkZWRMb2NhbGVzLCAuLi50aGlzLmxvY2FsZXMsIC4uLnRoaXMuY3VzdG9tTG9jYWxlcyB9O1xuICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzW2xvY2FsZV0gfHwgdGhpcy5pbmNsdWRlZExvY2FsZXMuZW5HQjsgLy8gRGVmYXVsdCB0byBlbkdCIGlmIGluamVjdGVkIGxvY2FsZSBkb2VzbnQgZXhpc3RcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3dlZWtEYXlzID0gdGhpcy5nZXRXZWVrRGF5cygpO1xuICAgIHRoaXMuc2V0QWN0aXZlTW9udGgodGhpcy5zZWxlY3RlZERhdGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIuaW5pdChcbiAgICAgIHRoaXMuY2FsZW5kYXJDb250YWluZXIsXG4gICAgICB0aGlzLmdldEhlbHBlck9wdGlvbnMoKSxcbiAgICAgIHRoaXMuX29uRGF0ZVNlbGVjdGVkLmJpbmQodGhpcyksXG4gICAgICB0aGlzLm9uQ2hhbmdlTW9udGguYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU1vbnRoKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5kaXNhYmxlV2Vla2VuZHMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZVBhc3REYXRlcyB8fFxuICAgICAgY2hhbmdlcy5kaXNhYmxlRnV0dXJlRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMuZGlzYWJsZWREYXRlcyB8fFxuICAgICAgY2hhbmdlcy5lbmFibGVkRGF0ZXMgfHxcbiAgICAgIGNoYW5nZXMubWluRGF0ZSB8fFxuICAgICAgY2hhbmdlcy5tYXhEYXRlIHx8XG4gICAgICBjaGFuZ2VzLnRvZGF5RGF0ZSB8fFxuICAgICAgY2hhbmdlcy50aW1lem9uZVxuICAgICkge1xuICAgICAgdGhpcy5yZWZyZXNoQWN0aXZlTW9udGgoKTtcbiAgICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIudXBkYXRlKHRoaXMuZ2V0SGVscGVyT3B0aW9ucygpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZU1vbnRoKGRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU1vbnRoIHx8ICFpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCBkYXRlKSkge1xuICAgICAgdGhpcy5hY3RpdmVNb250aCA9IHN0YXJ0T2ZNb250aChkYXRlKTtcbiAgICAgIHRoaXMucmVmcmVzaEFjdGl2ZU1vbnRoKCk7XG4gICAgICB0aGlzLmNhbGVuZGFySGVscGVyLnVwZGF0ZSh0aGlzLmdldEhlbHBlck9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIGxlbmllbmN5LCB0aGUgY29tcG9uZW50IHdpbGwgYWNjZXB0IGFueSBEYXRlIHRoYXQgcG9pbnRzIHRvIGVpdGhlciBVVEMgbWlkbmlnaHRcbiAgLy8gb3IgdG8gbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQgYWx0aG91Z2ggd2Ugd2lsbCBpbnRlcm5hbGx5IG5vcm1hbGl6ZSB0aGUgcmVwcmVzZW50YXRpb25cbiAgLy8gb2YgYWxsIHJlY2VpdmVkIGRhdGVzIHRvIHBvaW50IHRvIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0LlxuICAvLyBXZSBjdXJyZW50bHkgbG9nIG5vIHdhcm5pbmdzIGlmIHRoZSBkYXRlIGRvZXNuJ3QgbWF0Y2ggdGhlIHRpbWV6b25lIHNldHRpbmcgb3JcbiAgLy8gaWYgaXQgZG9lc24ndCBwb2ludCB0byBtaWRuaWdodC5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlKGRhdGVMb2NhbE9yVVRDOiBEYXRlKSB7XG4gICAgaWYgKCFkYXRlTG9jYWxPclVUQykgcmV0dXJuO1xuXG4gICAgaWYgKHN0YXJ0T2ZEYXkoZGF0ZUxvY2FsT3JVVEMpLmdldFRpbWUoKSA9PT0gZGF0ZUxvY2FsT3JVVEMuZ2V0VGltZSgpKSB7XG4gICAgICAvLyBkYXRlIGlzIGxvY2FsIHRpbWV6b25lIG1pZG5pZ2h0XG4gICAgICByZXR1cm4gZGF0ZUxvY2FsT3JVVEM7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHN0YXJ0T2ZEYXkodXRjVG9ab25lZFRpbWUoZGF0ZUxvY2FsT3JVVEMsIHRoaXMudGltZVpvbmVOYW1lKSkuZ2V0VGltZSgpID09PVxuICAgICAgdXRjVG9ab25lZFRpbWUoZGF0ZUxvY2FsT3JVVEMsIHRoaXMudGltZVpvbmVOYW1lKS5nZXRUaW1lKClcbiAgICApIHtcbiAgICAgIC8vIHRoZSBkYXRlIGlzIGEgVVRDIG1pZG5pZ2h0OyBjcmVhdGUgdGhlIGVxdWl2YWxlbnQgbG9jYWwgdGltZXpvbmUgbWlkbmlnaHQgZGF0ZVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFVUQ2RhdGUgPSB1dGNUb1pvbmVkVGltZShkYXRlTG9jYWxPclVUQywgdGhpcy50aW1lWm9uZU5hbWUpO1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRVVENkYXRlO1xuICAgIH1cbiAgICAvLyBkb2VzIG5vdCBwb2ludCB0byBtaWRuaWdodCBzbyB3ZSBtYWtlIGl0XG4gICAgcmV0dXJuIHN0YXJ0T2ZEYXkoZGF0ZUxvY2FsT3JVVEMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXZWVrRGF5cygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB3ZWVrID0gZWFjaERheU9mSW50ZXJ2YWwoe1xuICAgICAgc3RhcnQ6IHN0YXJ0T2ZXZWVrKG5vdywgeyBsb2NhbGU6IHRoaXMubG9jYWxlIH0pLFxuICAgICAgZW5kOiBlbmRPZldlZWsobm93LCB7IGxvY2FsZTogdGhpcy5sb2NhbGUgfSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2Vlay5tYXAoKGRhdGUpID0+IHRoaXMuZ2V0Rmlyc3RMZXR0ZXJPZldlZWtEYXlDYXBpdGFsaXplZChkYXRlKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpcnN0TGV0dGVyT2ZXZWVrRGF5Q2FwaXRhbGl6ZWQoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhMb2NhbGUoZGF0ZSwgJ0VFRUVFJyk7XG4gIH1cblxuICBwcml2YXRlIGhhc0RhdGVDaGFuZ2VkKG5ld0RhdGU6IERhdGUsIHByZXZpb3VzRGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghbmV3RGF0ZSAmJiAhcHJldmlvdXNEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChuZXdEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhcHJldmlvdXNEYXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuICFpc1NhbWVEYXkobmV3RGF0ZSwgcHJldmlvdXNEYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNhYmxlZERhdGUoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZSgoZGlzYWJsZWREYXRlKSA9PiBpc1NhbWVEYXkoZGlzYWJsZWREYXRlLCBkYXRlKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRW5hYmxlZERhdGUoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9lbmFibGVkRGF0ZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLmVuYWJsZWREYXRlcy5zb21lKChlbmFibGVkRGF0ZSkgPT4gaXNTYW1lRGF5KGVuYWJsZWREYXRlLCBkYXRlKSlcbiAgICApO1xuICB9XG5cbiAgcmVmcmVzaEFjdGl2ZU1vbnRoKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmVNb250aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbW9udGhTdGFydCA9IHN0YXJ0T2ZNb250aCh0aGlzLmFjdGl2ZU1vbnRoKTtcbiAgICBjb25zdCBtb250aEVuZCA9IGVuZE9mTW9udGgodGhpcy5hY3RpdmVNb250aCk7XG4gICAgY29uc3Qgc3RhcnRPZkZpcnN0V2VlayA9IHN0YXJ0T2ZXZWVrKG1vbnRoU3RhcnQsIHsgbG9jYWxlOiB0aGlzLmxvY2FsZSB9KTtcbiAgICBjb25zdCBlbmRPZkxhc3RXZWVrID0gZW5kT2ZXZWVrKG1vbnRoRW5kLCB7IGxvY2FsZTogdGhpcy5sb2NhbGUgfSk7XG4gICAgY29uc3QgdG90YWxEYXlDb3VudCA9IGRpZmZlcmVuY2VJbkRheXMoZW5kT2ZMYXN0V2Vlaywgc3RhcnRPZkZpcnN0V2VlaykgKyAxO1xuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy50b2RheURhdGUgPyBzdGFydE9mRGF5KHRoaXMudG9kYXlEYXRlKSA6IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XG5cbiAgICBjb25zdCBkYXlzQXJyYXkgPSBBcnJheS5mcm9tKEFycmF5KHRvdGFsRGF5Q291bnQpLmtleXMoKSk7XG5cbiAgICBjb25zdCBkYXlzOiBDYWxlbmRhckNlbGxbXSA9IGRheXNBcnJheS5tYXAoKG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2VsbERhdGUgPSBhZGQoc3RhcnRPZkZpcnN0V2VlaywgeyBbVGltZVVuaXQuZGF5c106IG51bWJlciB9KTtcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuZ2V0Q2FsZW5kYXJEYXkoY2VsbERhdGUsIHRvZGF5LCBtb250aFN0YXJ0KTtcblxuICAgICAgY29uc3QgaXNTZWxlY3RhYmxlID0gdGhpcy5pc1NlbGVjdGFibGUoZGF5LCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlLCBjZWxsRGF0ZSk7XG4gICAgICBjb25zdCBjZWxsID0ge1xuICAgICAgICBkYXRlOiBjZWxsRGF0ZS5nZXREYXRlKCksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXkuaXNDdXJyZW50TW9udGgsXG4gICAgICAgIGlzU2VsZWN0YWJsZSxcbiAgICAgICAgaXNTZWxlY3RlZCxcbiAgICAgICAgY3NzQ2xhc3NlczogdGhpcy5nZXRDc3NDbGFzc2VzKGRheSwgaXNTZWxlY3RhYmxlLCBpc1NlbGVjdGVkKSxcbiAgICAgIH07XG4gICAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gY2VsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjZWxsO1xuICAgIH0pO1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5jaHVuayhkYXlzLCA3KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJEYXkoZGF0ZTogRGF0ZSwgdG9kYXk6IERhdGUsIG1vbnRoU3RhcnQ6IERhdGUpOiBDYWxlbmRhckRheSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVG9kYXk6IGlzU2FtZURheSh0b2RheSwgZGF0ZSksXG4gICAgICBpc1Bhc3Q6IGlzQmVmb3JlKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzRnV0dXJlOiBpc0FmdGVyKGRhdGUsIHRvZGF5KSxcbiAgICAgIGlzV2Vla2VuZDogaXNXZWVrZW5kKGRhdGUpLFxuICAgICAgaXNDdXJyZW50TW9udGg6IGlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoU3RhcnQpLFxuICAgICAgaXNEaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkRGF0ZShkYXRlKSB8fCAhdGhpcy5pc0VuYWJsZWREYXRlKGRhdGUpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0YWJsZShkYXk6IENhbGVuZGFyRGF5LCBkYXRlOiBEYXRlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmFsd2F5c0VuYWJsZVRvZGF5ICYmIGRheS5pc1RvZGF5KSB8fFxuICAgICAgKCFkYXkuaXNEaXNhYmxlZCAmJlxuICAgICAgICBkYXkuaXNDdXJyZW50TW9udGggJiZcbiAgICAgICAgISh0aGlzLmRpc2FibGVXZWVrZW5kcyAmJiBkYXkuaXNXZWVrZW5kKSAmJlxuICAgICAgICAhKHRoaXMuZGlzYWJsZVBhc3REYXRlcyAmJiBkYXkuaXNQYXN0KSAmJlxuICAgICAgICAhKHRoaXMuZGlzYWJsZUZ1dHVyZURhdGVzICYmIGRheS5pc0Z1dHVyZSkgJiZcbiAgICAgICAgISh0aGlzLm1pbkRhdGUgJiYgaXNCZWZvcmUoZGF0ZSwgdGhpcy5taW5EYXRlKSkgJiZcbiAgICAgICAgISh0aGlzLm1heERhdGUgJiYgaXNBZnRlcihkYXRlLCB0aGlzLm1heERhdGUpKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDc3NDbGFzc2VzKGRheTogQ2FsZW5kYXJEYXksIGlzU2VsZWN0YWJsZTogYm9vbGVhbiwgaXNTZWxlY3RlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IGNzc0NsYXNzZXMgPSB7XG4gICAgICAnY3VycmVudC1tb250aCc6IGRheS5pc0N1cnJlbnRNb250aCxcbiAgICAgIHdlZWtlbmQ6IGRheS5pc1dlZWtlbmQsXG4gICAgICB0b2RheTogZGF5LmlzVG9kYXksXG4gICAgICBzZWxlY3RhYmxlOiBpc1NlbGVjdGFibGUsXG4gICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgIHBhc3Q6IGRheS5pc1Bhc3QsXG4gICAgICBkaXNhYmxlZDogZGF5LmlzRGlzYWJsZWQsXG4gICAgfTtcbiAgICBsZXQgY3NzQ2xhc3NTdHJpbmcgPSAnZGF5JztcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjc3NDbGFzc2VzKSB7XG4gICAgICBpZiAoY3NzQ2xhc3Nlc1trZXldKSB7XG4gICAgICAgIGNzc0NsYXNzU3RyaW5nICs9ICcgJyArIGtleTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNzc0NsYXNzU3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBjaHVuayhhcnJheTogYW55W10sIHNpemU6IG51bWJlcikge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICB3aGlsZSAoYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXN1bHRzLnB1c2goYXJyYXkuc3BsaWNlKDAsIHNpemUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICBwcml2YXRlIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKG5ld0RhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RGF5ID0gdGhpcy5nZXRDZWxsKG5ld0RhdGUpO1xuICAgIGlmIChuZXdEYXkpIHtcbiAgICAgIG5ld0RheS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBuZXdEYXk7XG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJIZWxwZXIuc2V0U2VsZWN0ZWREYXkobmV3RGF0ZS5nZXREYXRlKCkpO1xuICB9XG5cbiAgX29uRGF0ZVNlbGVjdGVkKG5ld0RheTogQ2FsZW5kYXJDZWxsKSB7XG4gICAgaWYgKG5ld0RheS5pc1NlbGVjdGFibGUgJiYgbmV3RGF5LmRhdGUpIHtcbiAgICAgIGxldCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy5hY3RpdmVNb250aCk7XG4gICAgICBuZXdEYXRlLnNldERhdGUobmV3RGF5LmRhdGUpO1xuXG4gICAgICBpZiAodGhpcy50aW1lem9uZSA9PT0gJ1VUQycpIHtcbiAgICAgICAgbmV3RGF0ZSA9IHpvbmVkVGltZVRvVXRjKHRoaXMuc3VidHJhY3RUaW1lem9uZU9mZnNldChuZXdEYXRlKSwgdGhpcy50aW1lWm9uZU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRlVG9FbWl0ID0gbmV3RGF0ZTtcblxuICAgICAgaWYgKHRoaXMuaGFzRGF0ZUNoYW5nZWQobmV3RGF0ZSwgdGhpcy5fc2VsZWN0ZWREYXRlKSkge1xuICAgICAgICB0aGlzLm9uU2VsZWN0ZWREYXRlQ2hhbmdlKG5ld0RhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXdEYXRlO1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlVG9FbWl0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0ZVNlbGVjdC5lbWl0KGRhdGVUb0VtaXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VNb250aChkaXJlY3Rpb246IG51bWJlcikge1xuICAgIHRoaXMuX2NoYW5nZU1vbnRoKGRpcmVjdGlvbik7XG4gICAgdGhpcy5jYWxlbmRhckhlbHBlci51cGRhdGUodGhpcy5nZXRIZWxwZXJPcHRpb25zKCkpO1xuICB9XG5cbiAgX2NoYW5nZU1vbnRoKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZVZpZXcoaW5kZXgsIFRpbWVVbml0Lm1vbnRocyk7XG4gICAgaW5kZXggPiAwXG4gICAgICA/IHRoaXMubmV4dE1vbnRoQ2xpY2tlZC5lbWl0KHRoaXMuYWN0aXZlTW9udGgpXG4gICAgICA6IHRoaXMucHJldmlvdXNNb250aENsaWNrZWQuZW1pdCh0aGlzLmFjdGl2ZU1vbnRoKTtcbiAgfVxuXG4gIF9jaGFuZ2VZZWFyKHllYXI6IHN0cmluZykge1xuICAgIGNvbnN0IHllYXJOdW1lcmljID0gTnVtYmVyKHllYXIpO1xuICAgIHRoaXMuY2hhbmdlQWN0aXZlVmlldyh5ZWFyTnVtZXJpYyAtIGdldFllYXIodGhpcy5hY3RpdmVNb250aCksIFRpbWVVbml0LnllYXJzKTtcbiAgICB0aGlzLnllYXJTZWxlY3QuZW1pdCh5ZWFyTnVtZXJpYyk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUFjdGl2ZVZpZXcoaW5kZXg6IG51bWJlciwgdW5pdDogVGltZVVuaXQpIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZU1vbnRoID0gYWRkKHRoaXMuYWN0aXZlTW9udGgsIHsgW3VuaXRdOiBpbmRleCB9KTtcblxuICAgIHRoaXMucmVmcmVzaEFjdGl2ZU1vbnRoKCk7XG4gIH1cblxuICBnZXQgX2Nhbk5hdmlnYXRlQmFjaygpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWFjaGVkUGFzdERhdGVzTGltaXQgPVxuICAgICAgdGhpcy5kaXNhYmxlUGFzdERhdGVzICYmIGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMudG9kYXlEYXRlKTtcblxuICAgIGNvbnN0IHJlYWNoZWRPckV4Y2VlZGVkTWluRGF0ZSA9XG4gICAgICB0aGlzLm1pbkRhdGUgJiZcbiAgICAgIChpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1pbkRhdGUpIHx8IGlzQmVmb3JlKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMubWluRGF0ZSkpO1xuXG4gICAgcmV0dXJuICFyZWFjaGVkUGFzdERhdGVzTGltaXQgJiYgIXJlYWNoZWRPckV4Y2VlZGVkTWluRGF0ZTtcbiAgfVxuXG4gIGdldCBfY2FuTmF2aWdhdGVGb3J3YXJkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlYWNoZWRGdXR1cmVEYXRlc0xpbWl0ID1cbiAgICAgIHRoaXMuZGlzYWJsZUZ1dHVyZURhdGVzICYmIGlzU2FtZU1vbnRoKHRoaXMuYWN0aXZlTW9udGgsIHRoaXMudG9kYXlEYXRlKTtcblxuICAgIGNvbnN0IHJlYWNoZWRPckV4Y2VlZGVkTWF4RGF0ZSA9XG4gICAgICB0aGlzLm1heERhdGUgJiZcbiAgICAgIChpc1NhbWVNb250aCh0aGlzLmFjdGl2ZU1vbnRoLCB0aGlzLm1heERhdGUpIHx8IGlzQWZ0ZXIodGhpcy5hY3RpdmVNb250aCwgdGhpcy5tYXhEYXRlKSk7XG5cbiAgICByZXR1cm4gIXJlYWNoZWRGdXR1cmVEYXRlc0xpbWl0ICYmICFyZWFjaGVkT3JFeGNlZWRlZE1heERhdGU7XG4gIH1cblxuICBwcml2YXRlIGdldENlbGwoZGF0ZTogRGF0ZSkge1xuICAgIGxldCBmb3VuZERheSA9IG51bGw7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIGZvciAoY29uc3Qgd2VlayBvZiB0aGlzLl9tb250aCkge1xuICAgICAgICBmb3VuZERheSA9IHdlZWsuZmluZCgoZGF5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRheS5pc0N1cnJlbnRNb250aCAmJiBkYXkuZGF0ZSA9PT0gZGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZm91bmREYXkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmREYXk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBlck9wdGlvbnMoKTogQ2FsZW5kYXJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FuTmF2aWdhdGVCYWNrOiB0aGlzLl9jYW5OYXZpZ2F0ZUJhY2ssXG4gICAgICBjYW5OYXZpZ2F0ZUZvcndhcmQ6IHRoaXMuX2Nhbk5hdmlnYXRlRm9yd2FyZCxcbiAgICAgIHllYXI6IHRoaXMuYWN0aXZlWWVhcixcbiAgICAgIG1vbnRoTmFtZTogdGhpcy5hY3RpdmVNb250aE5hbWUsXG4gICAgICB3ZWVrRGF5czogdGhpcy5fd2Vla0RheXMsXG4gICAgICBtb250aDogdGhpcy5fbW9udGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3VidHJhY3RUaW1lem9uZU9mZnNldChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbk1zID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHRpbWV6b25lT2Zmc2V0SW5Ncyk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVGcm9tTmF2aWdhYmxlWWVhcihuYXZpZ2FibGVZZWFyOiBudW1iZXIgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKG5hdmlnYWJsZVllYXIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gbmF2aWdhYmxlWWVhcjtcbiAgICBjb25zdCB0b2RheSA9IHRoaXMudG9kYXlEYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCkgKyBuYXZpZ2FibGVZZWFyLCAwLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnNCZXR3ZWVuRGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nW10ge1xuICAgIC8vIEVuc3VyZSB5ZWFycyBhcmUgb3JkZXJlZCBjb3JyZWN0bHkgaWYgcGFyYW1ldGVycyBhcmUgc3dpdGNoZWQ6XG4gICAgY29uc3QgW3N0YXJ0WWVhciwgZW5kWWVhcl0gPSBbc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIGVuZERhdGUuZ2V0RnVsbFllYXIoKV0uc29ydCgpO1xuICAgIGNvbnN0IG51bWJlck9mWWVhcnMgPSBlbmRZZWFyIC0gc3RhcnRZZWFyO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBudW1iZXJPZlllYXJzICsgMSB9LCAoXywgaSkgPT4gKHN0YXJ0WWVhciArIGkpLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtb250aC1uYXZpZ2F0b3JcIj5cbiAgICA8YnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPVwiIV9jYW5OYXZpZ2F0ZUJhY2tcIlxuICAgICAgKGNsaWNrKT1cIl9jaGFuZ2VNb250aCgtMSlcIlxuICAgICAga2lyYnktYnV0dG9uXG4gICAgICBbbm9EZWNvcmF0aW9uXT1cInRydWVcIlxuICAgICAgY2xhc3M9XCJuby1tYXJnaW5cIlxuICAgID5cbiAgICAgIDxraXJieS1pY29uIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9raXJieS1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vbnRoLWFuZC15ZWFyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1vbnRoXCI+e3sgYWN0aXZlTW9udGhOYW1lIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhX2hhc1llYXJOYXZpZ2F0b3JcIiBjbGFzcz1cInllYXJcIj57eyBhY3RpdmVZZWFyIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cIiFfY2FuTmF2aWdhdGVGb3J3YXJkXCJcbiAgICAgIChjbGljayk9XCJfY2hhbmdlTW9udGgoMSlcIlxuICAgICAga2lyYnktYnV0dG9uXG4gICAgICBbbm9EZWNvcmF0aW9uXT1cInRydWVcIlxuICAgICAgY2xhc3M9XCJuby1tYXJnaW5cIlxuICAgID5cbiAgICAgIDxraXJieS1pY29uIG5hbWU9XCJhcnJvdy1tb3JlXCI+PC9raXJieS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGtpcmJ5LWRyb3Bkb3duXG4gICAgKm5nSWY9XCJfaGFzWWVhck5hdmlnYXRvclwiXG4gICAgW3VzZVBvcG92ZXJdPVwidXNlUG9wb3ZlclwiXG4gICAgW3NlbGVjdGVkSW5kZXhdPVwibmF2aWdhdGVkWWVhclwiXG4gICAgW2l0ZW1zXT1cIm5hdmlnYWJsZVllYXJzXCJcbiAgICBwb3BvdXQ9XCJsZWZ0XCJcbiAgICAoY2hhbmdlKT1cIl9jaGFuZ2VZZWFyKCRldmVudClcIlxuICA+PC9raXJieS1kcm9wZG93bj5cbjwvZGl2PlxuXG48dGFibGU+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICA8dGggKm5nRm9yPVwibGV0IHdlZWtEYXkgb2YgX3dlZWtEYXlzXCI+e3sgd2Vla0RheSB9fTwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cblxuICA8dGJvZHk+XG4gICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIF9tb250aFwiPlxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKGNsaWNrKT1cIl9vbkRhdGVTZWxlY3RlZChkYXkpXCJcbiAgICAgICAgICBjbGFzcz1cInt7IGRheS5jc3NDbGFzc2VzIH19IGNvbnRhaW4tc3RhdGUtbGF5ZXJcIlxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuaXNTZWxlY3RlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXRlLWxheWVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudC1sYXllclwiPnt7IGRheS5kYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbjwhLS0gPGlmcmFtZSBzcmM9XCJraXJieS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLndlYnZpZXcuaHRtbFwiICNjYWxlbmRhckNvbnRhaW5lciBzdHlsZT1cIndpZHRoOiAzMjBweDsgaGVpZ2h0OiAzMDRweDsgYm9yZGVyOiAwXCI+IC0tPlxuIl19
|
|
@@ -22,11 +22,14 @@ export class ItemComponent {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
/** @nocollapse */ ItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
/** @nocollapse */ ItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ItemComponent, selector: "kirby-item", inputs: { disabled: "disabled", selected: "selected", disclosure: "disclosure", selectable: "selectable", reorderable: "reorderable", size: "size" }, host: { properties: { "class.selected": "this.selected", "class.disclosure": "this.disclosure", "class": "this.size" } }, ngImport: i0, template: "<ion-item\n lines=\"none\"\n [attr.disabled]=\"disabled\"\n [attr.button]=\"selectable ? true : null\"\n [attr.tabindex]=\"selectable ? null : 0\"\n detail=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <div class=\"outside\" slot=\"start\">\n <ng-content select=\"[slot='outside']\"></ng-content>\n </div>\n <ng-content></ng-content>\n <ion-reorder slot=\"end\" *ngIf=\"reorderable\">\n <kirby-icon name=\"reorder\"></kirby-icon>\n </ion-reorder>\n\n <kirby-icon *ngIf=\"disclosure\" class=\"disclosure\" slot=\"end\" name=\"{{ disclosure }}\"></kirby-icon>\n</ion-item>\n", styles: [":host{display:block;position:relative}:host ion-item{--padding-top: var(--item-padding-top, 0px);--padding-bottom: var(--item-padding-bottom, 0px);--min-height: 56px;--padding-start: 16px;--inner-padding-top: 8px;--inner-padding-bottom: 8px;--inner-padding-end: 16px;--background: var(--kirby-item-background, var(--kirby-white));--background-activated-opacity: .99;--background-focused: var( --kirby-item-background-focused, var(--kirby-background-color) );--background-focused-opacity: 1;font-size:16px;--transition: background-color 80ms linear 0ms}@media (hover: hover) and (pointer: fine){:host ion-item:focus-visible{box-shadow:none;--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){:host ion-item:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}:host ion-item:active,:host ion-item.ion-activated{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}@media screen and (orientation: landscape){:host ion-item{--ion-safe-area-left: 0px;--ion-safe-area-right: 0px}}:host ion-item ::ng-deep>[slot=end]{margin-inline-start:0;margin-inline-end:0;text-align:right}:host ion-item ::ng-deep>time[slot=end]{margin-inline-start:12px}:host ion-item ::ng-deep>data[slot=end],:host ion-item ::ng-deep>[detail][slot=end],:host ion-item ::ng-deep>ion-reorder[slot=end]{margin-inline-start:16px}:host ion-item ::ng-deep>h1,:host ion-item ::ng-deep>h2,:host ion-item ::ng-deep>h3,:host ion-item ::ng-deep>h4,:host ion-item ::ng-deep>h5,:host ion-item ::ng-deep>h6,:host ion-item ::ng-deep>p,:host ion-item ::ng-deep>data{font-size:16px;line-height:24px;color:var(--kirby-text-color-black);display:block;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:400}:host ion-item ::ng-deep>h1.kirby-text-bold,:host ion-item ::ng-deep>h2.kirby-text-bold,:host ion-item ::ng-deep>h3.kirby-text-bold,:host ion-item ::ng-deep>h4.kirby-text-bold,:host ion-item ::ng-deep>h5.kirby-text-bold,:host ion-item ::ng-deep>h6.kirby-text-bold,:host ion-item ::ng-deep>p.kirby-text-bold,:host ion-item ::ng-deep>data.kirby-text-bold{font-weight:700}:host ion-item ::ng-deep>p{font-size:14px}:host ion-item ::ng-deep>[subtitle],:host ion-item ::ng-deep>[detail]{font-size:12px;line-height:16px}:host ion-item ::ng-deep>[subtitle]:not(:last-child){margin-bottom:4px}:host ion-item ::ng-deep>[detail]{color:var(--kirby-text-color-semi-dark)}:host ion-item ::ng-deep>:not([slot]){width:100%}:host ion-item ::ng-deep>input[slot=end],:host ion-item ::ng-deep>kirby-form-field[slot=end] input{margin-inline-start:16px;width:auto;text-align:right}:host.sm ion-item{--min-height: 44px}:host.xs ion-item{--min-height: 32px;--inner-padding-top: 4px;--inner-padding-bottom: 4px}:host .outside{left:4px;margin:0;position:absolute;width:16px;z-index:1}.disclosure{padding-left:4px;color:var(--kirby-semi-dark)}:host-context(kirby-dropdown) ion-item,:host-context(kirby-popover) ion-item{--min-height: 44px}:host-context(kirby-dropdown .focused) ion-item{--background: whitesmoke}:host(.selected) ion-item ::ng-deep>h1,:host(.selected) ion-item ::ng-deep>h2,:host(.selected) ion-item ::ng-deep>h3,:host(.selected) ion-item ::ng-deep>h4,:host(.selected) ion-item ::ng-deep>h5,:host(.selected) ion-item ::ng-deep>h6,:host(.selected) ion-item ::ng-deep>p,:host(.selected) ion-item ::ng-deep>data,:host-context(kirby-list .selected) ion-item ::ng-deep>h1,:host-context(kirby-list .selected) ion-item ::ng-deep>h2,:host-context(kirby-list .selected) ion-item ::ng-deep>h3,:host-context(kirby-list .selected) ion-item ::ng-deep>h4,:host-context(kirby-list .selected) ion-item ::ng-deep>h5,:host-context(kirby-list .selected) ion-item ::ng-deep>h6,:host-context(kirby-list .selected) ion-item ::ng-deep>p,:host-context(kirby-list .selected) ion-item ::ng-deep>data{font-weight:700}:host(.disclosure) ion-item{--inner-padding-end: 8px}:host-context(.shape-rounded .is-single) ion-item{--border-radius: 16px}:host-context(.has-header .is-single) ion-item::part(native){border-top-left-radius:0;border-top-right-radius:0}:host-context(.has-footer .is-single) ion-item::part(native){border-bottom-left-radius:0;border-bottom-right-radius:0}:host-context(.shape-rounded.has-sections .list-items kirby-list-item:first-of-type) ion-item::part(native){border-top-left-radius:16px;border-top-right-radius:16px}\n"], dependencies: [{ kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25
|
+
/** @nocollapse */ ItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ItemComponent, selector: "kirby-item", inputs: { disabled: "disabled", selected: "selected", disclosure: "disclosure", selectable: "selectable", reorderable: "reorderable", size: "size" }, host: { properties: { "class.disabled": "this.disabled", "class.selected": "this.selected", "class.disclosure": "this.disclosure", "class": "this.size" } }, ngImport: i0, template: "<ion-item\n lines=\"none\"\n [attr.disabled]=\"disabled\"\n [attr.button]=\"selectable ? true : null\"\n [attr.tabindex]=\"selectable ? null : 0\"\n detail=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <div class=\"outside\" slot=\"start\">\n <ng-content select=\"[slot='outside']\"></ng-content>\n </div>\n <ng-content></ng-content>\n <ion-reorder slot=\"end\" *ngIf=\"reorderable\">\n <kirby-icon name=\"reorder\"></kirby-icon>\n </ion-reorder>\n\n <kirby-icon *ngIf=\"disclosure\" class=\"disclosure\" slot=\"end\" name=\"{{ disclosure }}\"></kirby-icon>\n</ion-item>\n", styles: [":host{display:block;position:relative}:host ion-item{--padding-top: var(--item-padding-top, 0px);--padding-bottom: var(--item-padding-bottom, 0px);--min-height: 56px;--padding-start: 16px;--inner-padding-top: 8px;--inner-padding-bottom: 8px;--inner-padding-end: 16px;--background: var(--kirby-item-background, var(--kirby-white));--background-activated-opacity: .99;--background-focused: var( --kirby-item-background-focused, var(--kirby-background-color) );--background-focused-opacity: 1;font-size:16px;--transition: background-color 80ms linear 0ms}@media (hover: hover) and (pointer: fine){:host ion-item:focus-visible{box-shadow:none;--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){:host ion-item:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}:host ion-item:active,:host ion-item.ion-activated{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}@media screen and (orientation: landscape){:host ion-item{--ion-safe-area-left: 0px;--ion-safe-area-right: 0px}}:host ion-item ::ng-deep>[slot=end]{margin-inline-start:0;margin-inline-end:0;text-align:right}:host ion-item ::ng-deep>time[slot=end]{margin-inline-start:12px}:host ion-item ::ng-deep>data[slot=end],:host ion-item ::ng-deep>[detail][slot=end],:host ion-item ::ng-deep>ion-reorder[slot=end]{margin-inline-start:16px}:host ion-item ::ng-deep>h1,:host ion-item ::ng-deep>h2,:host ion-item ::ng-deep>h3,:host ion-item ::ng-deep>h4,:host ion-item ::ng-deep>h5,:host ion-item ::ng-deep>h6,:host ion-item ::ng-deep>p,:host ion-item ::ng-deep>data{font-size:16px;line-height:24px;color:var(--kirby-text-color-black);display:block;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:400}:host ion-item ::ng-deep>h1.kirby-text-bold,:host ion-item ::ng-deep>h2.kirby-text-bold,:host ion-item ::ng-deep>h3.kirby-text-bold,:host ion-item ::ng-deep>h4.kirby-text-bold,:host ion-item ::ng-deep>h5.kirby-text-bold,:host ion-item ::ng-deep>h6.kirby-text-bold,:host ion-item ::ng-deep>p.kirby-text-bold,:host ion-item ::ng-deep>data.kirby-text-bold{font-weight:700}:host ion-item ::ng-deep>p{font-size:14px}:host ion-item ::ng-deep>[subtitle],:host ion-item ::ng-deep>[detail]{font-size:12px;line-height:16px}:host ion-item ::ng-deep>[subtitle]:not(:last-child){margin-bottom:4px}:host ion-item ::ng-deep>[detail]{color:var(--kirby-text-color-semi-dark)}:host ion-item ::ng-deep>:not([slot]){width:100%}:host ion-item ::ng-deep>input[slot=end],:host ion-item ::ng-deep>kirby-form-field[slot=end] input{margin-inline-start:16px;width:auto;text-align:right}:host.sm ion-item{--min-height: 44px}:host.xs ion-item{--min-height: 32px;--inner-padding-top: 4px;--inner-padding-bottom: 4px}:host .outside{left:4px;margin:0;position:absolute;width:16px;z-index:1}.disclosure{padding-left:4px;color:var(--kirby-semi-dark)}:host-context(kirby-dropdown) ion-item,:host-context(kirby-popover) ion-item{--min-height: 44px}:host-context(kirby-dropdown .focused) ion-item{--background: whitesmoke}:host(.disabled),:host([disabled]){pointer-events:none}:host(.selected) ion-item ::ng-deep>h1,:host(.selected) ion-item ::ng-deep>h2,:host(.selected) ion-item ::ng-deep>h3,:host(.selected) ion-item ::ng-deep>h4,:host(.selected) ion-item ::ng-deep>h5,:host(.selected) ion-item ::ng-deep>h6,:host(.selected) ion-item ::ng-deep>p,:host(.selected) ion-item ::ng-deep>data,:host-context(kirby-list .selected) ion-item ::ng-deep>h1,:host-context(kirby-list .selected) ion-item ::ng-deep>h2,:host-context(kirby-list .selected) ion-item ::ng-deep>h3,:host-context(kirby-list .selected) ion-item ::ng-deep>h4,:host-context(kirby-list .selected) ion-item ::ng-deep>h5,:host-context(kirby-list .selected) ion-item ::ng-deep>h6,:host-context(kirby-list .selected) ion-item ::ng-deep>p,:host-context(kirby-list .selected) ion-item ::ng-deep>data{font-weight:700}:host(.disclosure) ion-item{--inner-padding-end: 8px}:host-context(.shape-rounded .is-single) ion-item{--border-radius: 16px}:host-context(.has-header .is-single) ion-item::part(native){border-top-left-radius:0;border-top-right-radius:0}:host-context(.has-footer .is-single) ion-item::part(native){border-bottom-left-radius:0;border-bottom-right-radius:0}:host-context(.shape-rounded.has-sections .list-items kirby-list-item:first-of-type) ion-item::part(native){border-top-left-radius:16px;border-top-right-radius:16px}\n"], dependencies: [{ kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ItemComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'kirby-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-item\n lines=\"none\"\n [attr.disabled]=\"disabled\"\n [attr.button]=\"selectable ? true : null\"\n [attr.tabindex]=\"selectable ? null : 0\"\n detail=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <div class=\"outside\" slot=\"start\">\n <ng-content select=\"[slot='outside']\"></ng-content>\n </div>\n <ng-content></ng-content>\n <ion-reorder slot=\"end\" *ngIf=\"reorderable\">\n <kirby-icon name=\"reorder\"></kirby-icon>\n </ion-reorder>\n\n <kirby-icon *ngIf=\"disclosure\" class=\"disclosure\" slot=\"end\" name=\"{{ disclosure }}\"></kirby-icon>\n</ion-item>\n", styles: [":host{display:block;position:relative}:host ion-item{--padding-top: var(--item-padding-top, 0px);--padding-bottom: var(--item-padding-bottom, 0px);--min-height: 56px;--padding-start: 16px;--inner-padding-top: 8px;--inner-padding-bottom: 8px;--inner-padding-end: 16px;--background: var(--kirby-item-background, var(--kirby-white));--background-activated-opacity: .99;--background-focused: var( --kirby-item-background-focused, var(--kirby-background-color) );--background-focused-opacity: 1;font-size:16px;--transition: background-color 80ms linear 0ms}@media (hover: hover) and (pointer: fine){:host ion-item:focus-visible{box-shadow:none;--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){:host ion-item:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}:host ion-item:active,:host ion-item.ion-activated{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}@media screen and (orientation: landscape){:host ion-item{--ion-safe-area-left: 0px;--ion-safe-area-right: 0px}}:host ion-item ::ng-deep>[slot=end]{margin-inline-start:0;margin-inline-end:0;text-align:right}:host ion-item ::ng-deep>time[slot=end]{margin-inline-start:12px}:host ion-item ::ng-deep>data[slot=end],:host ion-item ::ng-deep>[detail][slot=end],:host ion-item ::ng-deep>ion-reorder[slot=end]{margin-inline-start:16px}:host ion-item ::ng-deep>h1,:host ion-item ::ng-deep>h2,:host ion-item ::ng-deep>h3,:host ion-item ::ng-deep>h4,:host ion-item ::ng-deep>h5,:host ion-item ::ng-deep>h6,:host ion-item ::ng-deep>p,:host ion-item ::ng-deep>data{font-size:16px;line-height:24px;color:var(--kirby-text-color-black);display:block;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:400}:host ion-item ::ng-deep>h1.kirby-text-bold,:host ion-item ::ng-deep>h2.kirby-text-bold,:host ion-item ::ng-deep>h3.kirby-text-bold,:host ion-item ::ng-deep>h4.kirby-text-bold,:host ion-item ::ng-deep>h5.kirby-text-bold,:host ion-item ::ng-deep>h6.kirby-text-bold,:host ion-item ::ng-deep>p.kirby-text-bold,:host ion-item ::ng-deep>data.kirby-text-bold{font-weight:700}:host ion-item ::ng-deep>p{font-size:14px}:host ion-item ::ng-deep>[subtitle],:host ion-item ::ng-deep>[detail]{font-size:12px;line-height:16px}:host ion-item ::ng-deep>[subtitle]:not(:last-child){margin-bottom:4px}:host ion-item ::ng-deep>[detail]{color:var(--kirby-text-color-semi-dark)}:host ion-item ::ng-deep>:not([slot]){width:100%}:host ion-item ::ng-deep>input[slot=end],:host ion-item ::ng-deep>kirby-form-field[slot=end] input{margin-inline-start:16px;width:auto;text-align:right}:host.sm ion-item{--min-height: 44px}:host.xs ion-item{--min-height: 32px;--inner-padding-top: 4px;--inner-padding-bottom: 4px}:host .outside{left:4px;margin:0;position:absolute;width:16px;z-index:1}.disclosure{padding-left:4px;color:var(--kirby-semi-dark)}:host-context(kirby-dropdown) ion-item,:host-context(kirby-popover) ion-item{--min-height: 44px}:host-context(kirby-dropdown .focused) ion-item{--background: whitesmoke}:host(.selected) ion-item ::ng-deep>h1,:host(.selected) ion-item ::ng-deep>h2,:host(.selected) ion-item ::ng-deep>h3,:host(.selected) ion-item ::ng-deep>h4,:host(.selected) ion-item ::ng-deep>h5,:host(.selected) ion-item ::ng-deep>h6,:host(.selected) ion-item ::ng-deep>p,:host(.selected) ion-item ::ng-deep>data,:host-context(kirby-list .selected) ion-item ::ng-deep>h1,:host-context(kirby-list .selected) ion-item ::ng-deep>h2,:host-context(kirby-list .selected) ion-item ::ng-deep>h3,:host-context(kirby-list .selected) ion-item ::ng-deep>h4,:host-context(kirby-list .selected) ion-item ::ng-deep>h5,:host-context(kirby-list .selected) ion-item ::ng-deep>h6,:host-context(kirby-list .selected) ion-item ::ng-deep>p,:host-context(kirby-list .selected) ion-item ::ng-deep>data{font-weight:700}:host(.disclosure) ion-item{--inner-padding-end: 8px}:host-context(.shape-rounded .is-single) ion-item{--border-radius: 16px}:host-context(.has-header .is-single) ion-item::part(native){border-top-left-radius:0;border-top-right-radius:0}:host-context(.has-footer .is-single) ion-item::part(native){border-bottom-left-radius:0;border-bottom-right-radius:0}:host-context(.shape-rounded.has-sections .list-items kirby-list-item:first-of-type) ion-item::part(native){border-top-left-radius:16px;border-top-right-radius:16px}\n"] }]
|
|
28
|
+
args: [{ selector: 'kirby-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-item\n lines=\"none\"\n [attr.disabled]=\"disabled\"\n [attr.button]=\"selectable ? true : null\"\n [attr.tabindex]=\"selectable ? null : 0\"\n detail=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <div class=\"outside\" slot=\"start\">\n <ng-content select=\"[slot='outside']\"></ng-content>\n </div>\n <ng-content></ng-content>\n <ion-reorder slot=\"end\" *ngIf=\"reorderable\">\n <kirby-icon name=\"reorder\"></kirby-icon>\n </ion-reorder>\n\n <kirby-icon *ngIf=\"disclosure\" class=\"disclosure\" slot=\"end\" name=\"{{ disclosure }}\"></kirby-icon>\n</ion-item>\n", styles: [":host{display:block;position:relative}:host ion-item{--padding-top: var(--item-padding-top, 0px);--padding-bottom: var(--item-padding-bottom, 0px);--min-height: 56px;--padding-start: 16px;--inner-padding-top: 8px;--inner-padding-bottom: 8px;--inner-padding-end: 16px;--background: var(--kirby-item-background, var(--kirby-white));--background-activated-opacity: .99;--background-focused: var( --kirby-item-background-focused, var(--kirby-background-color) );--background-focused-opacity: 1;font-size:16px;--transition: background-color 80ms linear 0ms}@media (hover: hover) and (pointer: fine){:host ion-item:focus-visible{box-shadow:none;--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black)}}@media (hover: hover){:host ion-item:hover{--state-layer-opacity: .04;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}:host ion-item:active,:host ion-item.ion-activated{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}@media screen and (orientation: landscape){:host ion-item{--ion-safe-area-left: 0px;--ion-safe-area-right: 0px}}:host ion-item ::ng-deep>[slot=end]{margin-inline-start:0;margin-inline-end:0;text-align:right}:host ion-item ::ng-deep>time[slot=end]{margin-inline-start:12px}:host ion-item ::ng-deep>data[slot=end],:host ion-item ::ng-deep>[detail][slot=end],:host ion-item ::ng-deep>ion-reorder[slot=end]{margin-inline-start:16px}:host ion-item ::ng-deep>h1,:host ion-item ::ng-deep>h2,:host ion-item ::ng-deep>h3,:host ion-item ::ng-deep>h4,:host ion-item ::ng-deep>h5,:host ion-item ::ng-deep>h6,:host ion-item ::ng-deep>p,:host ion-item ::ng-deep>data{font-size:16px;line-height:24px;color:var(--kirby-text-color-black);display:block;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:400}:host ion-item ::ng-deep>h1.kirby-text-bold,:host ion-item ::ng-deep>h2.kirby-text-bold,:host ion-item ::ng-deep>h3.kirby-text-bold,:host ion-item ::ng-deep>h4.kirby-text-bold,:host ion-item ::ng-deep>h5.kirby-text-bold,:host ion-item ::ng-deep>h6.kirby-text-bold,:host ion-item ::ng-deep>p.kirby-text-bold,:host ion-item ::ng-deep>data.kirby-text-bold{font-weight:700}:host ion-item ::ng-deep>p{font-size:14px}:host ion-item ::ng-deep>[subtitle],:host ion-item ::ng-deep>[detail]{font-size:12px;line-height:16px}:host ion-item ::ng-deep>[subtitle]:not(:last-child){margin-bottom:4px}:host ion-item ::ng-deep>[detail]{color:var(--kirby-text-color-semi-dark)}:host ion-item ::ng-deep>:not([slot]){width:100%}:host ion-item ::ng-deep>input[slot=end],:host ion-item ::ng-deep>kirby-form-field[slot=end] input{margin-inline-start:16px;width:auto;text-align:right}:host.sm ion-item{--min-height: 44px}:host.xs ion-item{--min-height: 32px;--inner-padding-top: 4px;--inner-padding-bottom: 4px}:host .outside{left:4px;margin:0;position:absolute;width:16px;z-index:1}.disclosure{padding-left:4px;color:var(--kirby-semi-dark)}:host-context(kirby-dropdown) ion-item,:host-context(kirby-popover) ion-item{--min-height: 44px}:host-context(kirby-dropdown .focused) ion-item{--background: whitesmoke}:host(.disabled),:host([disabled]){pointer-events:none}:host(.selected) ion-item ::ng-deep>h1,:host(.selected) ion-item ::ng-deep>h2,:host(.selected) ion-item ::ng-deep>h3,:host(.selected) ion-item ::ng-deep>h4,:host(.selected) ion-item ::ng-deep>h5,:host(.selected) ion-item ::ng-deep>h6,:host(.selected) ion-item ::ng-deep>p,:host(.selected) ion-item ::ng-deep>data,:host-context(kirby-list .selected) ion-item ::ng-deep>h1,:host-context(kirby-list .selected) ion-item ::ng-deep>h2,:host-context(kirby-list .selected) ion-item ::ng-deep>h3,:host-context(kirby-list .selected) ion-item ::ng-deep>h4,:host-context(kirby-list .selected) ion-item ::ng-deep>h5,:host-context(kirby-list .selected) ion-item ::ng-deep>h6,:host-context(kirby-list .selected) ion-item ::ng-deep>p,:host-context(kirby-list .selected) ion-item ::ng-deep>data{font-weight:700}:host(.disclosure) ion-item{--inner-padding-end: 8px}:host-context(.shape-rounded .is-single) ion-item{--border-radius: 16px}:host-context(.has-header .is-single) ion-item::part(native){border-top-left-radius:0;border-top-right-radius:0}:host-context(.has-footer .is-single) ion-item::part(native){border-bottom-left-radius:0;border-bottom-right-radius:0}:host-context(.shape-rounded.has-sections .list-items kirby-list-item:first-of-type) ion-item::part(native){border-top-left-radius:16px;border-top-right-radius:16px}\n"] }]
|
|
29
29
|
}], propDecorators: { disabled: [{
|
|
30
|
+
type: HostBinding,
|
|
31
|
+
args: ['class.disabled']
|
|
32
|
+
}, {
|
|
30
33
|
type: Input
|
|
31
34
|
}], selected: [{
|
|
32
35
|
type: HostBinding,
|
|
@@ -48,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
48
51
|
}, {
|
|
49
52
|
type: Input
|
|
50
53
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9pdGVtL3NyYy9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL2l0ZW0vc3JjL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUV2RixNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2xCLHFCQUFTLENBQUE7SUFDVCxxQkFBUyxDQUFBO0lBQ1QscUJBQVMsQ0FBQTtBQUNYLENBQUMsRUFKVyxRQUFRLEtBQVIsUUFBUSxRQUluQjtBQVFELE1BQU0sT0FBTyxhQUFhO0lBTjFCO1FBc0JFLFNBQUksR0FBNkIsUUFBUSxDQUFDLEVBQUUsQ0FBQztLQVc5QztJQVRDLHlFQUF5RTtJQUN6RSxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFDRSxLQUFLLENBQUMsYUFBYSxZQUFZLFdBQVc7WUFDMUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFDN0M7WUFDQSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOzs2SEExQlUsYUFBYTtpSEFBYixhQUFhLHFXQ2QxQix1bEJBa0JBOzJGREphLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUsvQyxRQUFRO3NCQUZQLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFDNUIsS0FBSztnQkFJTixRQUFRO3NCQUZQLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFDNUIsS0FBSztnQkFJTixVQUFVO3NCQUZULFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixJQUFJO3NCQUZILFdBQVc7dUJBQUMsT0FBTzs7c0JBQ25CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGVudW0gSXRlbVNpemUge1xuICBYUyA9ICd4cycsXG4gIFNNID0gJ3NtJyxcbiAgTUQgPSAnbWQnLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJdGVtQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJylcbiAgQElucHV0KClcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzY2xvc3VyZScpXG4gIEBJbnB1dCgpXG4gIGRpc2Nsb3N1cmU6ICdsaW5rJyB8ICdhcnJvdy1tb3JlJyB8ICdhcnJvdy1kb3duJyB8ICdhcnJvdy11cCc7XG4gIEBJbnB1dCgpIHNlbGVjdGFibGU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcmVvcmRlcmFibGU6IGJvb2xlYW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBASW5wdXQoKVxuICBzaXplOiBJdGVtU2l6ZSB8IGAke0l0ZW1TaXplfWAgPSBJdGVtU2l6ZS5NRDtcblxuICAvLyBQcmV2ZW50IGRlZmF1bHQgd2hlbiBpbnNpZGUga2lyYnktZHJvcGRvd24gdG8gYXZvaWQgYmx1cnJpbmcgZHJvcGRvd246XG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmNsb3Nlc3QoJ2tpcmJ5LWRyb3Bkb3duJylcbiAgICApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8aW9uLWl0ZW1cbiAgbGluZXM9XCJub25lXCJcbiAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbYXR0ci5idXR0b25dPVwic2VsZWN0YWJsZSA/IHRydWUgOiBudWxsXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwic2VsZWN0YWJsZSA/IG51bGwgOiAwXCJcbiAgZGV0YWlsPVwiZmFsc2VcIlxuICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuPlxuICA8ZGl2IGNsYXNzPVwib3V0c2lkZVwiIHNsb3Q9XCJzdGFydFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PSdvdXRzaWRlJ11cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDxpb24tcmVvcmRlciBzbG90PVwiZW5kXCIgKm5nSWY9XCJyZW9yZGVyYWJsZVwiPlxuICAgIDxraXJieS1pY29uIG5hbWU9XCJyZW9yZGVyXCI+PC9raXJieS1pY29uPlxuICA8L2lvbi1yZW9yZGVyPlxuXG4gIDxraXJieS1pY29uICpuZ0lmPVwiZGlzY2xvc3VyZVwiIGNsYXNzPVwiZGlzY2xvc3VyZVwiIHNsb3Q9XCJlbmRcIiBuYW1lPVwie3sgZGlzY2xvc3VyZSB9fVwiPjwva2lyYnktaWNvbj5cbjwvaW9uLWl0ZW0+XG4iXX0=
|
|
@@ -330,11 +330,13 @@ export class PageComponent {
|
|
|
330
330
|
}
|
|
331
331
|
}
|
|
332
332
|
initializeTitle() {
|
|
333
|
+
// Ensures initializeTitle() won't run, if already initialized
|
|
334
|
+
if (this.hasPageTitle)
|
|
335
|
+
return;
|
|
333
336
|
this.hasPageTitle = this.title !== undefined || !!this.customTitleTemplate;
|
|
334
337
|
this.toolbarTitleVisible = !this.hasPageTitle;
|
|
335
338
|
this.hasPageSubtitle = this.subtitle !== undefined || !!this.customSubtitleTemplate;
|
|
336
339
|
if (this.hasPageTitle) {
|
|
337
|
-
this.pageTitleIntersectionObserverRef.disconnect();
|
|
338
340
|
setTimeout(() => {
|
|
339
341
|
this.pageTitleIntersectionObserverRef.observe(this.pageTitle.nativeElement);
|
|
340
342
|
});
|
|
@@ -507,4 +509,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
507
509
|
type: HostListener,
|
|
508
510
|
args: [`window:${selectedTabClickEvent}`]
|
|
509
511
|
}] } });
|
|
510
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9wYWdlL3NyYy9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3BhZ2Uvc3JjL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBR3pDOztHQUVH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QUU7Z0JBR3RFLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHekUsYUFBYTtzQkFEWixlQUFlO3VCQUFDLG9CQUFvQjtnQkFHN0IsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBRzdCLGdCQUFnQjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkErUTlFLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkQsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHlCQUF5QjtnQkFNdkMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLFVBQVUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CYWNrQnV0dG9uRGVsZWdhdGUsIElvbkNvbnRlbnQsIElvbkZvb3RlciwgSW9uSGVhZGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU2Nyb2xsRGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCBUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90YWJzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTW9kYWxFbGVtZW50Q29tcG9uZW50LFxuICBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcixcbiAgTW9kYWxFbGVtZW50VHlwZSxcbiAgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxufSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL21vZGFsJztcbmltcG9ydCB7IEZpdEhlYWRpbmdDb25maWcgfSBmcm9tICcuL2ZpdC1oZWFkaW5nL2ZpdC1oZWFkaW5nLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogU3BlY2lmeSBzY3JvbGwgZXZlbnQgZGVib3VuY2UgdGltZSBpbiBtcyBhbmQgc2Nyb2xsZWQgb2Zmc2V0IGZyb20gdG9wIGluIHBpeGVsc1xuICovXG5jb25zdCBjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyA9IDEwO1xuY29uc3QgY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHMgPSA0O1xuXG50eXBlIHN0aWNreUNvbmZpZyA9IHsgc3RpY2t5OiBib29sZWFuIH07XG50eXBlIGZpeGVkQ29uZmlnID0geyBmaXhlZDogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcInB1bGwtdG8tcmVmcmVzaFwiIGJlZ2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsVG9SZWZyZXNoRXZlbnQge1xuICAvKipcbiAgICogSW52b2tlIHRoaXMgY2FsbGJhY2stbWV0aG9kIHdoZW4gYWN0aW9uIHRvIHBlcmZvcm0gdXBvbiBcInB1bGwtdG8tcmVmcmVzaFwiIGNvbXBsZXRlcy5cbiAgICovXG4gIGNvbXBsZXRlKCk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VTdGlja3lDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdGlja3lDb250ZW50RGlyZWN0aXZlIHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbJzpob3N0IHtkaXNwbGF5OiBmbGV4fSddLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlUHJvZ3Jlc3NDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBUT0RPOiBGaW5kIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmdXR1cmUgcGFnZSBjb25maWd1cmF0aW9uIC8gY29uc3VtcHRpb25cbiAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3YXMgY2hvc2VuIG92ZXIgZXhwYW5kaW5nIGBtb3ZlQ2hpbGRgIG1ldGhvZCBpbiBjb21wb25lbnQgd3JhcHBlciB3aXRoIHlldCBhbm90aGVyIHNjZW5hcmlvXG4gIEBIb3N0QmluZGluZygnYXR0ci5zbG90Jykgc2xvdCA9ICdzdGFydCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBtb2RhbFdyYXBwZXI6IE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcjogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgc3VwZXIoTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTLCBlbGVtZW50UmVmLCBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RhbFdyYXBwZXIgJiYgdGhpcy5tb2RhbFdyYXBwZXIuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicpIHtcbiAgICAgIHRoaXMuc2xvdCA9ICdlbmQnO1xuICAgIH1cbiAgfVxufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcjogTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbiAgKSB7XG4gICAgc3VwZXIoTW9kYWxFbGVtZW50VHlwZS5USVRMRSwgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtY29udGVudCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudENvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltraXJieS1idXR0b25dXCI+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCYWNrQnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZU1heExpbmVzOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heFdpZHRoOiAnZGVmYXVsdCcgfCAnc3RhbmRhcmQnIHwgJ29wdGltaXplZCcgfCAnZnVsbCcgPSAnZGVmYXVsdCc7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuICBAT3V0cHV0KCkgYmFja0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudD86IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uRm9vdGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkZvb3RlckVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbkRlbGVnYXRlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSBiYWNrQnV0dG9uRGVsZWdhdGU6IElvbkJhY2tCdXR0b25EZWxlZ2F0ZTtcbiAgQFZpZXdDaGlsZCgncGFnZVRpdGxlJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgcGFnZVRpdGxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGlja3lDb250ZW50Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgc3RpY2t5Q29udGVudENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzaW1wbGVUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVN1YnRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVN1YnRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUFjdGlvbnNEaXJlY3RpdmUpXG4gIGN1c3RvbUFjdGlvbnM6IFF1ZXJ5TGlzdDxQYWdlQWN0aW9uc0RpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUNvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PFBhZ2VDb250ZW50RGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZChQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHN0aWNreUNvbnRlbnRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaGFzUGFnZVRpdGxlOiBib29sZWFuO1xuICBoYXNQYWdlU3VidGl0bGU6IGJvb2xlYW47XG4gIHRvb2xiYXJUaXRsZVZpc2libGU6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuICBpc1N0aWNreUNvbnRlbnRQaW5uZWQ6IGJvb2xlYW47XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZT47XG5cbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPVxuICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgcHJpdmF0ZSBzdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYgPSB0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuXG4gIHByaXZhdGUgdXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgaXNBY3RpdmU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBuZ09uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNvbnRlbnRTY3JvbGxlZCQ6IE9ic2VydmFibGU8U2Nyb2xsRGV0YWlsPjtcblxuICBwcml2YXRlIG5hdmlnYXRpb25TdGFydCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHRhYnNDb21wb25lbnQ6IFRhYnNDb21wb25lbnRcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlV3JhcHBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnRpdGxlTWF4TGluZXMpIHtcbiAgICAgIHRoaXMuZml0SGVhZGluZ0NvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5maXRIZWFkaW5nQ29uZmlnLFxuICAgICAgICBtYXhMaW5lczogY2hhbmdlcy50aXRsZU1heExpbmVzLmN1cnJlbnRWYWx1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnN1YnRpdGxlICYmICFjaGFuZ2VzLnN1YnRpdGxlLmlzRmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc3VidGl0bGUgPSBjaGFuZ2VzLnRpdGxlLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRTY3JvbGxlZCQgPSB0aGlzLmNvbnRlbnQuaW9uU2Nyb2xsLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMpLFxuICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nT25EZXN0cm95JClcbiAgICApO1xuXG4gICAgdGhpcy5jb250ZW50U2Nyb2xsZWQkLnN1YnNjcmliZSgoc2Nyb2xsSW5mbzogU2Nyb2xsRGV0YWlsKSA9PiB7XG4gICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gc2Nyb2xsSW5mby5zY3JvbGxUb3AgPiBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscztcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhpcyBpbnN0YW5jZSBoYXMgb2JzZXJ2ZWQgYSBwYWdlIGVudGVyIHNvIHJlZ2lzdGVyIHRoZSBjb3JyZWN0IHVybCBmb3IgdGhpcyBpbnN0YW5jZVxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMub25FbnRlcigpO1xuXG4gICAgLy8gV2F0Y2ggbmF2aWdhdGlvbiBldmVudHMgZm9yIHBhZ2UgZW50ZXIgYW5kIGxlYXZlXG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybCkgIT09IHRoaXMuZ2V0UGF0aG5hbWUodGhpcy51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKHRoaXMudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZShldmVudC51cmwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA9PT0gdGhpcy5nZXRQYXRobmFtZSh0aGlzLnVybCkpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgZGVsZWdhdGVSZWZyZXNoRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgIGNvbXBsZXRlOiBldmVudC50YXJnZXQuY29tcGxldGUuYmluZChldmVudC50YXJnZXQpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWF4V2lkdGhDbGFzc2VzKCkge1xuICAgIGlmICghdGhpcy5tYXhXaWR0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXhXaWR0aCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBgbWF4LXdpZHRoLSR7dGhpcy5tYXhXaWR0aH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVXcmFwcGVyKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICAgIGlmICh0aGlzLnBhZ2VUaXRsZSkge1xuICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25MZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICB0aGlzLmxlYXZlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYudW5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYkJhckJvdHRvbUhpZGRlbiAmJiB0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpIHtcbiAgICAvLyBJbnRlcmNlcHQgYmFjay1idXR0b24gY2xpY2sgZXZlbnRzLCBkZWZhdWx0aW5nIHRvIHRoZSBidWlsdC1pbiBjbGljay1oYW5kbGVyLlxuICAgIGlmICh0aGlzLmJhY2tCdXR0b25DbGljay5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b25DbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuYmFja0J1dHRvbkRlbGVnYXRlLm9uQ2xpY2suYmluZCh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGlmICh0aGlzLnN0aWNreUNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgLy8gU3RpY2t5IGNvbnRlbnQgcHJlc2VudCAtIHN0YXJ0IG9ic2VydmluZyBmb3Igc3RpY2tpbmVzc1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyUmVmLm9ic2VydmUoXG4gICAgICAgICAgdGhpcy5zdGlja3lDb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRpdGxlKCkge1xuICAgIHRoaXMuaGFzUGFnZVRpdGxlID0gdGhpcy50aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlO1xuICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICF0aGlzLmhhc1BhZ2VUaXRsZTtcbiAgICB0aGlzLmhhc1BhZ2VTdWJ0aXRsZSA9IHRoaXMuc3VidGl0bGUgIT09IHVuZGVmaW5lZCB8fCAhIXRoaXMuY3VzdG9tU3VidGl0bGVUZW1wbGF0ZTtcblxuICAgIGlmICh0aGlzLmhhc1BhZ2VUaXRsZSkge1xuICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMuZm9yRWFjaCgocGFnZUFjdGlvbikgPT4ge1xuICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZUFjdGlvbi5pc1N0aWNreSkge1xuICAgICAgICB0aGlzLnN0aWNreUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKSB7XG4gICAgdGhpcy5zdGlja3lDb250ZW50VGVtcGxhdGUgPSB0aGlzLnN0aWNreUNvbnRlbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIHBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICB9O1xuXG4gICAgbGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBjb25zdCBjYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICAvLyBUaGUgc3RpY2t5IGNvbnRlbnQgaXMgcGlubmVkIHdoZW4gaXQgZG9lc24ndCBmdWxseSBpbnRlcnNlY3QgdGhlIHZpZXdwb3J0XG4gICAgICB0aGlzLmlzU3RpY2t5Q29udGVudFBpbm5lZCA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGhuYW1lKHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHVybC5zcGxpdCgnPycpWzBdO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbFNob3cnLCBbJyRldmVudCddKVxuICBfb25LZXlib2FyZFdpbGxTaG93KGluZm8/OiB7IGtleWJvYXJkSGVpZ2h0OiBudW1iZXIgfSkge1xuICAgIGlmIChpbmZvICYmIGluZm8ua2V5Ym9hcmRIZWlnaHQpIHtcbiAgICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgJy0ta2V5Ym9hcmQtb2Zmc2V0JyxcbiAgICAgICAgYCR7aW5mby5rZXlib2FyZEhlaWdodH1weGBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZFdpbGxIaWRlKCkge1xuICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1rZXlib2FyZC1vZmZzZXQnLCAnMHB4Jyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKGB3aW5kb3c6JHtzZWxlY3RlZFRhYkNsaWNrRXZlbnR9YClcbiAgX29uU2VsZWN0ZWRUYWJDbGljaygpIHtcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfVxuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIFtjbGFzcy5jb250ZW50LXNjcm9sbGVkXT1cIiFzdGlja3lDb250ZW50VGVtcGxhdGUgJiYgaXNDb250ZW50U2Nyb2xsZWRcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uXG4gICAgICAgIHRleHQ9XCJcIlxuICAgICAgICBbZGVmYXVsdEhyZWZdPVwiZGVmYXVsdEJhY2tIcmVmXCJcbiAgICAgICAgaWNvbj1cImFzc2V0cy9raXJieS9pY29ucy9zdmcvYXJyb3ctYmFjay5zdmdcIlxuICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlQmFja0J1dHRvbiA/ICdoaWRkZW4nIDogbnVsbFwiXG4gICAgICA+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlIFtjbGFzcy5zbGlkZS1hbmQtZmFkZS1pbl09XCJ0b29sYmFyVGl0bGVWaXNpYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci10aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBjbGFzcz1cImhpZGVcIiBzbG90PVwicHJpbWFyeVwiIFtjbGFzcy5mYWRlLWluXT1cIiEhc3RpY2t5QWN0aW9uc1RlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5QWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnMgY2xhc3M9XCJoaWRlXCIgc2xvdD1cInNlY29uZGFyeVwiIFtjbGFzcy5mYWRlLWluXT1cIiEhZml4ZWRBY3Rpb25zVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBzY3JvbGxFdmVudHM9XCJ0cnVlXCIgZm9yY2VPdmVyc2Nyb2xsPVwiZmFsc2VcIiBbY2xhc3NdPVwiZ2V0TWF4V2lkdGhDbGFzc2VzKClcIj5cbiAgPGlvbi1yZWZyZXNoZXJcbiAgICAqbmdJZj1cInJlZnJlc2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcIlxuICAgIChpb25SZWZyZXNoKT1cImRlbGVnYXRlUmVmcmVzaEV2ZW50KCRldmVudClcIlxuICAgIHNsb3Q9XCJmaXhlZFwiXG4gID5cbiAgICA8a2lyYnktc3Bpbm5lcj48L2tpcmJ5LXNwaW5uZXI+XG4gIDwvaW9uLXJlZnJlc2hlcj5cblxuICA8IS0tIFBhZ2UgaGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwicGFnZS1oZWFkZXItY29udGFpbmVyXCIgKm5nSWY9XCJoYXNQYWdlVGl0bGVcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2UtaGVhZGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtY2VudGVyJzogdGl0bGVBbGlnbm1lbnQgPT09ICdjZW50ZXInLFxuICAgICAgICAndGV4dC1yaWdodCc6IHRpdGxlQWxpZ25tZW50ID09PSAncmlnaHQnXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICNwYWdlVGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgW2NsYXNzLmhhcy1hY3Rpb25zXT1cIiEhcGFnZUFjdGlvbnNUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc1BhZ2VTdWJ0aXRsZVwiIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TdWJ0aXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tICBTdGlja3kgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0aWNreUNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgIDxkaXZcbiAgICAgICNzdGlja3lDb250ZW50Q29udGFpbmVyXG4gICAgICBjbGFzcz1cInN0aWNreS1jb250ZW50LWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGVudC1waW5uZWRdPVwiaXNTdGlja3lDb250ZW50UGlubmVkXCJcbiAgICA+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFRlbXBsYXRlIHx8IGRlZmF1bHRDb250ZW50VGVtcGxhdGVcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzbG90PVwiZml4ZWRcIiBjbGFzcz1cImZpeGVkLWNvbnRlbnRcIiAqbmdJZj1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGU+XG4gIDxoMSBba2lyYnlGaXRIZWFkaW5nXT1cImZpdEhlYWRpbmdDb25maWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2gxPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlU3VidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVUaXRsZVRlbXBsYXRlPnt7IHRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlU3VidGl0bGVUZW1wbGF0ZT57eyBzdWJ0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlPnt7IHRvb2xiYXJUaXRsZSB9fTwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9wYWdlL3NyYy9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3BhZ2Uvc3JjL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBR3pDOztHQUVH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QUFXLEVBQUU7Z0JBR3RFLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHekUsYUFBYTtzQkFEWixlQUFlO3VCQUFDLG9CQUFvQjtnQkFHN0IsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBRzdCLGdCQUFnQjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFnUjlFLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkQsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHlCQUF5QjtnQkFNdkMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLFVBQVUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CYWNrQnV0dG9uRGVsZWdhdGUsIElvbkNvbnRlbnQsIElvbkZvb3RlciwgSW9uSGVhZGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU2Nyb2xsRGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCBUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90YWJzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTW9kYWxFbGVtZW50Q29tcG9uZW50LFxuICBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcixcbiAgTW9kYWxFbGVtZW50VHlwZSxcbiAgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxufSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL21vZGFsJztcbmltcG9ydCB7IEZpdEhlYWRpbmdDb25maWcgfSBmcm9tICcuL2ZpdC1oZWFkaW5nL2ZpdC1oZWFkaW5nLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogU3BlY2lmeSBzY3JvbGwgZXZlbnQgZGVib3VuY2UgdGltZSBpbiBtcyBhbmQgc2Nyb2xsZWQgb2Zmc2V0IGZyb20gdG9wIGluIHBpeGVsc1xuICovXG5jb25zdCBjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyA9IDEwO1xuY29uc3QgY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHMgPSA0O1xuXG50eXBlIHN0aWNreUNvbmZpZyA9IHsgc3RpY2t5OiBib29sZWFuIH07XG50eXBlIGZpeGVkQ29uZmlnID0geyBmaXhlZDogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcInB1bGwtdG8tcmVmcmVzaFwiIGJlZ2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsVG9SZWZyZXNoRXZlbnQge1xuICAvKipcbiAgICogSW52b2tlIHRoaXMgY2FsbGJhY2stbWV0aG9kIHdoZW4gYWN0aW9uIHRvIHBlcmZvcm0gdXBvbiBcInB1bGwtdG8tcmVmcmVzaFwiIGNvbXBsZXRlcy5cbiAgICovXG4gIGNvbXBsZXRlKCk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VTdGlja3lDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdGlja3lDb250ZW50RGlyZWN0aXZlIHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbJzpob3N0IHtkaXNwbGF5OiBmbGV4fSddLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlUHJvZ3Jlc3NDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBUT0RPOiBGaW5kIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmdXR1cmUgcGFnZSBjb25maWd1cmF0aW9uIC8gY29uc3VtcHRpb25cbiAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3YXMgY2hvc2VuIG92ZXIgZXhwYW5kaW5nIGBtb3ZlQ2hpbGRgIG1ldGhvZCBpbiBjb21wb25lbnQgd3JhcHBlciB3aXRoIHlldCBhbm90aGVyIHNjZW5hcmlvXG4gIEBIb3N0QmluZGluZygnYXR0ci5zbG90Jykgc2xvdCA9ICdzdGFydCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBtb2RhbFdyYXBwZXI6IE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcjogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgc3VwZXIoTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTLCBlbGVtZW50UmVmLCBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RhbFdyYXBwZXIgJiYgdGhpcy5tb2RhbFdyYXBwZXIuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicpIHtcbiAgICAgIHRoaXMuc2xvdCA9ICdlbmQnO1xuICAgIH1cbiAgfVxufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcjogTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbiAgKSB7XG4gICAgc3VwZXIoTW9kYWxFbGVtZW50VHlwZS5USVRMRSwgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtY29udGVudCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudENvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltraXJieS1idXR0b25dXCI+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCYWNrQnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZU1heExpbmVzOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heFdpZHRoOiAnZGVmYXVsdCcgfCAnc3RhbmRhcmQnIHwgJ29wdGltaXplZCcgfCAnZnVsbCcgPSAnZGVmYXVsdCc7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuICBAT3V0cHV0KCkgYmFja0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudD86IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uRm9vdGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkZvb3RlckVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbkRlbGVnYXRlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSBiYWNrQnV0dG9uRGVsZWdhdGU6IElvbkJhY2tCdXR0b25EZWxlZ2F0ZTtcbiAgQFZpZXdDaGlsZCgncGFnZVRpdGxlJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgcGFnZVRpdGxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGlja3lDb250ZW50Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgc3RpY2t5Q29udGVudENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzaW1wbGVUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVN1YnRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVN1YnRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUFjdGlvbnNEaXJlY3RpdmUpXG4gIGN1c3RvbUFjdGlvbnM6IFF1ZXJ5TGlzdDxQYWdlQWN0aW9uc0RpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUNvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PFBhZ2VDb250ZW50RGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZChQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHN0aWNreUNvbnRlbnRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaGFzUGFnZVRpdGxlOiBib29sZWFuO1xuICBoYXNQYWdlU3VidGl0bGU6IGJvb2xlYW47XG4gIHRvb2xiYXJUaXRsZVZpc2libGU6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuICBpc1N0aWNreUNvbnRlbnRQaW5uZWQ6IGJvb2xlYW47XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZT47XG5cbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPVxuICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgcHJpdmF0ZSBzdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYgPSB0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuXG4gIHByaXZhdGUgdXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgaXNBY3RpdmU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBuZ09uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNvbnRlbnRTY3JvbGxlZCQ6IE9ic2VydmFibGU8U2Nyb2xsRGV0YWlsPjtcblxuICBwcml2YXRlIG5hdmlnYXRpb25TdGFydCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbW9kYWxOYXZpZ2F0aW9uU2VydmljZTogTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHRhYnNDb21wb25lbnQ6IFRhYnNDb21wb25lbnRcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlV3JhcHBlcigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnRpdGxlTWF4TGluZXMpIHtcbiAgICAgIHRoaXMuZml0SGVhZGluZ0NvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5maXRIZWFkaW5nQ29uZmlnLFxuICAgICAgICBtYXhMaW5lczogY2hhbmdlcy50aXRsZU1heExpbmVzLmN1cnJlbnRWYWx1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnN1YnRpdGxlICYmICFjaGFuZ2VzLnN1YnRpdGxlLmlzRmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc3VidGl0bGUgPSBjaGFuZ2VzLnRpdGxlLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRTY3JvbGxlZCQgPSB0aGlzLmNvbnRlbnQuaW9uU2Nyb2xsLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMpLFxuICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLm5nT25EZXN0cm95JClcbiAgICApO1xuXG4gICAgdGhpcy5jb250ZW50U2Nyb2xsZWQkLnN1YnNjcmliZSgoc2Nyb2xsSW5mbzogU2Nyb2xsRGV0YWlsKSA9PiB7XG4gICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gc2Nyb2xsSW5mby5zY3JvbGxUb3AgPiBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscztcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhpcyBpbnN0YW5jZSBoYXMgb2JzZXJ2ZWQgYSBwYWdlIGVudGVyIHNvIHJlZ2lzdGVyIHRoZSBjb3JyZWN0IHVybCBmb3IgdGhpcyBpbnN0YW5jZVxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMub25FbnRlcigpO1xuXG4gICAgLy8gV2F0Y2ggbmF2aWdhdGlvbiBldmVudHMgZm9yIHBhZ2UgZW50ZXIgYW5kIGxlYXZlXG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybCkgIT09IHRoaXMuZ2V0UGF0aG5hbWUodGhpcy51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKHRoaXMudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZShldmVudC51cmwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA9PT0gdGhpcy5nZXRQYXRobmFtZSh0aGlzLnVybCkpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgZGVsZWdhdGVSZWZyZXNoRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgIGNvbXBsZXRlOiBldmVudC50YXJnZXQuY29tcGxldGUuYmluZChldmVudC50YXJnZXQpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWF4V2lkdGhDbGFzc2VzKCkge1xuICAgIGlmICghdGhpcy5tYXhXaWR0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXhXaWR0aCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBgbWF4LXdpZHRoLSR7dGhpcy5tYXhXaWR0aH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVXcmFwcGVyKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICAgIGlmICh0aGlzLnBhZ2VUaXRsZSkge1xuICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25MZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICB0aGlzLmxlYXZlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYudW5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYkJhckJvdHRvbUhpZGRlbiAmJiB0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpIHtcbiAgICAvLyBJbnRlcmNlcHQgYmFjay1idXR0b24gY2xpY2sgZXZlbnRzLCBkZWZhdWx0aW5nIHRvIHRoZSBidWlsdC1pbiBjbGljay1oYW5kbGVyLlxuICAgIGlmICh0aGlzLmJhY2tCdXR0b25DbGljay5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b25DbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuYmFja0J1dHRvbkRlbGVnYXRlLm9uQ2xpY2suYmluZCh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGlmICh0aGlzLnN0aWNreUNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgLy8gU3RpY2t5IGNvbnRlbnQgcHJlc2VudCAtIHN0YXJ0IG9ic2VydmluZyBmb3Igc3RpY2tpbmVzc1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyUmVmLm9ic2VydmUoXG4gICAgICAgICAgdGhpcy5zdGlja3lDb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRpdGxlKCkge1xuICAgIC8vIEVuc3VyZXMgaW5pdGlhbGl6ZVRpdGxlKCkgd29uJ3QgcnVuLCBpZiBhbHJlYWR5IGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSByZXR1cm47XG4gICAgdGhpcy5oYXNQYWdlVGl0bGUgPSB0aGlzLnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGU7XG4gICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIXRoaXMuaGFzUGFnZVRpdGxlO1xuICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21TdWJ0aXRsZVRlbXBsYXRlO1xuXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMuZm9yRWFjaCgocGFnZUFjdGlvbikgPT4ge1xuICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZUFjdGlvbi5pc1N0aWNreSkge1xuICAgICAgICB0aGlzLnN0aWNreUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKSB7XG4gICAgdGhpcy5zdGlja3lDb250ZW50VGVtcGxhdGUgPSB0aGlzLnN0aWNreUNvbnRlbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIHBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICB9O1xuXG4gICAgbGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBjb25zdCBjYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICAvLyBUaGUgc3RpY2t5IGNvbnRlbnQgaXMgcGlubmVkIHdoZW4gaXQgZG9lc24ndCBmdWxseSBpbnRlcnNlY3QgdGhlIHZpZXdwb3J0XG4gICAgICB0aGlzLmlzU3RpY2t5Q29udGVudFBpbm5lZCA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGhuYW1lKHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHVybC5zcGxpdCgnPycpWzBdO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbFNob3cnLCBbJyRldmVudCddKVxuICBfb25LZXlib2FyZFdpbGxTaG93KGluZm8/OiB7IGtleWJvYXJkSGVpZ2h0OiBudW1iZXIgfSkge1xuICAgIGlmIChpbmZvICYmIGluZm8ua2V5Ym9hcmRIZWlnaHQpIHtcbiAgICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgJy0ta2V5Ym9hcmQtb2Zmc2V0JyxcbiAgICAgICAgYCR7aW5mby5rZXlib2FyZEhlaWdodH1weGBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZFdpbGxIaWRlKCkge1xuICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1rZXlib2FyZC1vZmZzZXQnLCAnMHB4Jyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKGB3aW5kb3c6JHtzZWxlY3RlZFRhYkNsaWNrRXZlbnR9YClcbiAgX29uU2VsZWN0ZWRUYWJDbGljaygpIHtcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfVxuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIFtjbGFzcy5jb250ZW50LXNjcm9sbGVkXT1cIiFzdGlja3lDb250ZW50VGVtcGxhdGUgJiYgaXNDb250ZW50U2Nyb2xsZWRcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uXG4gICAgICAgIHRleHQ9XCJcIlxuICAgICAgICBbZGVmYXVsdEhyZWZdPVwiZGVmYXVsdEJhY2tIcmVmXCJcbiAgICAgICAgaWNvbj1cImFzc2V0cy9raXJieS9pY29ucy9zdmcvYXJyb3ctYmFjay5zdmdcIlxuICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJoaWRlQmFja0J1dHRvbiA/ICdoaWRkZW4nIDogbnVsbFwiXG4gICAgICA+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlIFtjbGFzcy5zbGlkZS1hbmQtZmFkZS1pbl09XCJ0b29sYmFyVGl0bGVWaXNpYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci10aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBjbGFzcz1cImhpZGVcIiBzbG90PVwicHJpbWFyeVwiIFtjbGFzcy5mYWRlLWluXT1cIiEhc3RpY2t5QWN0aW9uc1RlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5QWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnMgY2xhc3M9XCJoaWRlXCIgc2xvdD1cInNlY29uZGFyeVwiIFtjbGFzcy5mYWRlLWluXT1cIiEhZml4ZWRBY3Rpb25zVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBzY3JvbGxFdmVudHM9XCJ0cnVlXCIgZm9yY2VPdmVyc2Nyb2xsPVwiZmFsc2VcIiBbY2xhc3NdPVwiZ2V0TWF4V2lkdGhDbGFzc2VzKClcIj5cbiAgPGlvbi1yZWZyZXNoZXJcbiAgICAqbmdJZj1cInJlZnJlc2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcIlxuICAgIChpb25SZWZyZXNoKT1cImRlbGVnYXRlUmVmcmVzaEV2ZW50KCRldmVudClcIlxuICAgIHNsb3Q9XCJmaXhlZFwiXG4gID5cbiAgICA8a2lyYnktc3Bpbm5lcj48L2tpcmJ5LXNwaW5uZXI+XG4gIDwvaW9uLXJlZnJlc2hlcj5cblxuICA8IS0tIFBhZ2UgaGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwicGFnZS1oZWFkZXItY29udGFpbmVyXCIgKm5nSWY9XCJoYXNQYWdlVGl0bGVcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2UtaGVhZGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtY2VudGVyJzogdGl0bGVBbGlnbm1lbnQgPT09ICdjZW50ZXInLFxuICAgICAgICAndGV4dC1yaWdodCc6IHRpdGxlQWxpZ25tZW50ID09PSAncmlnaHQnXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICNwYWdlVGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgW2NsYXNzLmhhcy1hY3Rpb25zXT1cIiEhcGFnZUFjdGlvbnNUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc1BhZ2VTdWJ0aXRsZVwiIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TdWJ0aXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tICBTdGlja3kgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0aWNreUNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgIDxkaXZcbiAgICAgICNzdGlja3lDb250ZW50Q29udGFpbmVyXG4gICAgICBjbGFzcz1cInN0aWNreS1jb250ZW50LWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGVudC1waW5uZWRdPVwiaXNTdGlja3lDb250ZW50UGlubmVkXCJcbiAgICA+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFRlbXBsYXRlIHx8IGRlZmF1bHRDb250ZW50VGVtcGxhdGVcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzbG90PVwiZml4ZWRcIiBjbGFzcz1cImZpeGVkLWNvbnRlbnRcIiAqbmdJZj1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGU+XG4gIDxoMSBba2lyYnlGaXRIZWFkaW5nXT1cImZpdEhlYWRpbmdDb25maWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2gxPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlU3VidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVUaXRsZVRlbXBsYXRlPnt7IHRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlU3VidGl0bGVUZW1wbGF0ZT57eyBzdWJ0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlPnt7IHRvb2xiYXJUaXRsZSB9fTwvbmctdGVtcGxhdGU+XG4iXX0=
|