mis-crystal-design-system 18.1.8 → 18.1.9
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/esm2022/filter/filter-panel/filter-panel.component.mjs +207 -103
- package/esm2022/timerangepicker/timerangepicker.component.mjs +3 -3
- package/fesm2022/mis-crystal-design-system-filter.mjs +205 -101
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +30 -13
- package/package.json +7 -7
|
@@ -212,9 +212,9 @@ export class TimeRangePickerComponent {
|
|
|
212
212
|
// Calculate start time epoch for comparison
|
|
213
213
|
const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
214
214
|
const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
|
|
215
|
-
// Auto-adjust end time if start time
|
|
215
|
+
// Auto-adjust end time if start time >= end time (for both same and different dates)
|
|
216
216
|
// This ensures end time is always after start time
|
|
217
|
-
if (startTimeEpoch
|
|
217
|
+
if (startTimeEpoch >= endTimeEpoch) {
|
|
218
218
|
// Calculate new end time as start time + interval
|
|
219
219
|
let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), "m").valueOf();
|
|
220
220
|
// If same date, check if the new end time would go beyond end of day
|
|
@@ -342,4 +342,4 @@ export class TimeRangePickerComponent {
|
|
|
342
342
|
args: [{ selector: "mis-timerangepicker", template: "<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n</div>\n\n", styles: [".rangepicker-container{display:flex;gap:1rem;align-items:center}p{margin:0;display:inline-flex;align-items:center}\n"] }]
|
|
343
343
|
}], () => [], null); })();
|
|
344
344
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeRangePickerComponent, { className: "TimeRangePickerComponent" }); })();
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0lDYWpDLHlCQUFpQztJQUFBLGlCQUFDO0lBQUEsaUJBQUk7O0FEWHhDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU92QixNQUFNLE9BQU8sd0JBQXdCO0lBb0NuQyw2RUFBNkU7SUFDckUsYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEO1FBcERBLG9DQUFvQztRQUNwQyxlQUFVLEdBQUcsS0FBSyxDQUFTLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUNyRCxXQUFNLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLGFBQVEsR0FBRyxLQUFLLENBQVMsY0FBYyxDQUFDLENBQUM7UUFDekMsbUJBQWMsR0FBRyxLQUFLLENBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLGlCQUFZLEdBQUcsS0FBSyxDQUFTLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzRSxtQkFBYyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDbkMsY0FBUyxHQUFHLEtBQUssQ0FBYSxLQUFLLENBQUMsQ0FBQztRQUNyQyxRQUFHLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN2QyxhQUFRLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUV6Qyx3QkFBd0I7UUFDeEIscUJBQWdCLEdBQUcsTUFBTSxFQUFjLENBQUM7UUFFeEMsb0NBQW9DO1FBQ3BDLGNBQVMsR0FBRyxNQUFNLENBQWUsSUFBSSxDQUFDLENBQUM7UUFDdkMsWUFBTyxHQUFHLE1BQU0sQ0FBZSxJQUFJLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUM5QixvQkFBZSxHQUFHLE1BQU0sQ0FBaUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLDRCQUF1QixHQUFrQixJQUFJLENBQUM7UUFDOUMsMEJBQXFCLEdBQWtCLElBQUksQ0FBQztRQUVwRCwyQ0FBMkM7UUFDM0MsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7UUFvQjdHLGlFQUFpRTtRQUNqRSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsaUZBQWlGO1lBQ2pGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUUzQyxnRUFBZ0U7WUFDaEUsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixvQ0FBb0M7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN6QixPQUFPO2dCQUNULENBQUM7Z0JBRUQsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ3pDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCx1RUFBdUU7Z0JBQ3ZFLElBQUksSUFBSSxDQUFDLHVCQUF1QixLQUFLLGdCQUFnQjtvQkFDakQsSUFBSSxDQUFDLHFCQUFxQixLQUFLLGNBQWMsRUFBRSxDQUFDO29CQUNsRCxPQUFPO2dCQUNULENBQUM7Z0JBRUQseUJBQXlCO2dCQUN6QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxjQUFjLENBQUM7Z0JBRTVDLDREQUE0RDtnQkFDNUQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSSxDQUFDO2dCQUN0RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBRWxELHVEQUF1RDtnQkFDdkQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxzQkFBc0IsRUFBRSxFQUFFLGNBQWMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BKLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksb0JBQW9CLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUU5SSw4REFBOEQ7Z0JBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUNqQixLQUFLLEVBQUUsSUFBSTtvQkFDWCxJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixLQUFLLEVBQUUsYUFBYTtpQkFDckIsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO29CQUNmLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLEtBQUssRUFBRSxXQUFXO2lCQUNuQixDQUFDLENBQUM7Z0JBRUgsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFFekIsZ0VBQWdFO2dCQUNoRSxNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBRTNFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ2pCLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDdkMsU0FBUyxFQUFFLHNCQUFzQjtvQkFDakMsT0FBTyxFQUFFLG9CQUFvQjtvQkFDN0IsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLFFBQVEsRUFBRSxXQUFXO2lCQUN0QixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0Isb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsRixLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtTQUNqRSxDQUFDLENBQUM7UUFFSCw2Q0FBNkM7UUFDN0MsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBRTVDLHlFQUF5RTtRQUN6RSxJQUFJLFlBQVksSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUU3Riw2REFBNkQ7WUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3ZCLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSztnQkFDM0IsR0FBRyxFQUFFLFlBQVk7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2YsS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxRSxLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsNkNBQTZDO0lBQ3JDLGlCQUFpQjtRQUN2QixJQUFJLDJCQUFtQyxDQUFDO1FBQ3hDLElBQUkseUJBQWlDLENBQUM7UUFFdEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVqRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxJQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUMsQ0FBQztnQkFDNUMsSUFBRyxXQUFXLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQztvQkFDckgsMkJBQTJCLEdBQUcsV0FBVyxDQUFDO29CQUMxQyx5QkFBeUIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xHLENBQUM7cUJBQU0sQ0FBQztvQkFDTiwyQkFBMkIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVGLDBGQUEwRjtvQkFDMUYseUJBQXlCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwRyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUcsV0FBVyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUM7b0JBQ3JILDJCQUEyQixHQUFHLFdBQVcsQ0FBQztvQkFDMUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNsRyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1Rix5QkFBeUIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BHLENBQUM7WUFDSCxDQUFDO1FBQ0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUMsQ0FBQztnQkFDOUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0Ryx5QkFBeUIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pILENBQUM7aUJBQU0sQ0FBQztnQkFDTiwyQkFBMkIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RHLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwRyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDekIsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLHlCQUF5QixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUcsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsR0FBRyxFQUFFLHlCQUF5QixFQUFFLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLGFBQWEsQ0FBQyxJQUFnQjtRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFXO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLG1DQUFtQztRQUNuQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JKLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLElBQUksRUFBRSxFQUFFLGNBQWMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0ksb0ZBQW9GO1FBQ3BGLG1EQUFtRDtRQUNuRCxJQUFJLGNBQWMsR0FBRyxZQUFZLEVBQUUsQ0FBQztZQUNsQyxrREFBa0Q7WUFDbEQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVwRyxxRUFBcUU7WUFDckUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkYsSUFBSSxlQUFlLEdBQUcsUUFBUSxFQUFFLENBQUM7b0JBQy9CLHlFQUF5RTtvQkFDekUsZUFBZSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFFRCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdFLEtBQUssRUFBRSxlQUFlO2FBQ3ZCLENBQUMsQ0FBQztZQUVILHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLO2dCQUNuQyxHQUFHLEVBQUUsZUFBZTthQUNyQixDQUFDLENBQUM7WUFFSCxxRkFBcUY7WUFDckYsK0RBQStEO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsa0ZBQWtGO1FBQ2xGLDhFQUE4RTtRQUM5RSwrRkFBK0Y7UUFDL0YseUZBQXlGO1FBQ3pGLG1HQUFtRztRQUNuRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM5QyxpRUFBaUU7WUFDakUsd0ZBQXdGO1lBQ3hGLElBQUksY0FBYyxHQUFHLFlBQVksRUFBRSxDQUFDO2dCQUNsQyw0REFBNEQ7Z0JBQzVELElBQUksc0JBQXNCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFM0csc0VBQXNFO2dCQUN0RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZGLElBQUksc0JBQXNCLEdBQUcsUUFBUSxFQUFFLENBQUM7b0JBQ3RDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQztnQkFDcEMsQ0FBQztnQkFFRCxzR0FBc0c7Z0JBQ3RHLGlHQUFpRztnQkFDakcsNkZBQTZGO2dCQUM3RixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztvQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLO29CQUNuQyxHQUFHLEVBQUUsc0JBQXNCO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsc0ZBQXNGO2dCQUN0RixzRkFBc0Y7Z0JBQ3RGLGtFQUFrRTtZQUNwRSxDQUFDO1FBQ0gsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLElBQUk7WUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJO1lBQzdCLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN6SSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7U0FDcEksQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVc7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNqQixLQUFLLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJO1lBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUMsSUFBSTtZQUM3QixVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDekksUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLElBQUksRUFBRSxFQUFFLGNBQWMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO1NBQ3BJLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUMxQyxNQUFNLElBQUksR0FBRyxzREFBc0QsQ0FBQztRQUNwRSxNQUFNLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVuRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLGdCQUFnQixJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2SixJQUFJLElBQUksR0FBWSxLQUFLLENBQUM7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEosSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkcsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFpQjtRQUMvQixJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDMUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO3lIQXRXVSx3QkFBd0I7b0VBQXhCLHdCQUF3QjtZQ2JuQyxBQURGLDhCQUE0Rix3QkFnQnpGO1lBVkMsK0hBQWUsOEJBQTBCLElBQUM7WUFVM0MsaUJBQWlCO1lBQ2xCLHFFQUFpQztZQUNqQyx5Q0FpQkM7WUFaQywrSEFBZSw0QkFBd0IsSUFBQztZQWE1QyxBQURHLGlCQUFpQixFQUNkOztZQXBDNkIsaUZBQXdEO1lBRXZGLGNBQTZCO1lBYTdCLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQUZBLEFBREEsQUFEQSxBQURBLCtDQUE2Qiw0QkFDTixxQ0FDUyw2Q0FDUSw0QkFFakIsd0JBQ0osZ0NBQ1Esc0NBQ00sa0NBQ0osbUNBQ0MsbUNBQ0EsNENBQ1MsNEJBQ2hCO1lBRXJCLGNBQTJCO1lBQTNCLGdEQUEyQjtZQUU3QixjQUE2QjtZQWU3QixBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBRkEsQUFEQSxBQURBLEFBREEsK0NBQTZCLDRCQUNOLG1DQUNPLDJDQUNRLHNDQUVMLDRCQUNWLHdCQUNKLGdDQUNRLHNDQUNNLGtDQUNKLGlDQUNELHNDQUNLLGlDQUNMLDRDQUNXLDRCQUNoQjs7O2lGRHBCZCx3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSxxQkFBcUI7O2tGQUlwQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgdW50cmFja2VkLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWVSYW5nZSwgSVRpbWUsIFREaXJlY3Rpb24gfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuXG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGltZXJhbmdlcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sXCIsIC8vIENvcnJlY3RlZCBmaWxlIG5hbWVcbiAgc3R5bGVVcmxzOiBbXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAtLS0gSW5wdXQgU2lnbmFscyAocmVhZC1vbmx5KSAtLS1cbiAgaW5wdXRXaWR0aCA9IGlucHV0PHN0cmluZz4oXCIxMDBweFwiKTtcbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPihcIjQ2cHhcIik7XG4gIHRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcIkFzaWEvS29sa2F0YVwiKTtcbiAgc3RhcnREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZW5kRGF0ZUVwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSk7XG4gIGdpdmVuU3RhcnRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBnaXZlbkVuZFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNsb2NrRm9ybWF0ID0gaW5wdXQ8bnVtYmVyPigxMik7XG4gIGludGVydmFsID0gaW5wdXQ8bnVtYmVyPigxNSk7XG4gIHNob3dUb29sdGlwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRpcmVjdGlvbiA9IGlucHV0PFREaXJlY3Rpb24+KCdyb3cnKTtcbiAgZ2FwID0gaW5wdXQ8c3RyaW5nPignMXJlbScpO1xuICBkaXNhYmxlU3RhcnRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlRW5kVGltZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZm9udFNpemUgPSBpbnB1dDxzdHJpbmc+KFwiMTRweFwiKTtcbiAgZGlzYWJsZVVzZXJJbnB1dCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyAtLS0gT3V0cHV0IFNpZ25hbCAtLS1cbiAgdGltZVJhbmdlRW1pdHRlciA9IG91dHB1dDxJVGltZVJhbmdlPigpO1xuXG4gIC8vIC0tLSBJbnRlcm5hbCBXcml0YWJsZSBTaWduYWxzIC0tLVxuICBzdGFydFRpbWUgPSBzaWduYWw8SVRpbWUgfCBudWxsPihudWxsKTtcbiAgZW5kVGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICByYW5nZVZhbGlkaXR5ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICB0cmlnZ2VyQ2hhbmdlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIF9maXJzdEludGVydmFscyA9IHNpZ25hbDx7IHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyIH0+KHsgc3RhcnQ6IDAsIGVuZDogMCB9KTtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTdGFydERhdGVFcG9jaDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3ByZXZpb3VzRW5kRGF0ZUVwb2NoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvLyAtLS0gQ29tcHV0ZWQgU2lnbmFscyAoRGVyaXZlZCBTdGF0ZSkgLS0tXG4gIGZpcnN0SW50ZXJ2YWxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKSk7IC8vIEEgcHVibGljIGNvbXB1dGVkIHNpZ25hbCB0byBhY2Nlc3MgdGhlIHdyaXRhYmxlIG9uZVxuICBcbiAgLy8gSGVscGVyIG1ldGhvZHMgaW5zdGVhZCBvZiBjb21wdXRlZCBzaWduYWxzIHRvIGF2b2lkIHNpZ25hbCB3cml0ZSBjb25mbGljdHNcbiAgcHJpdmF0ZSBnZXRUaW1lRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2xvY2tGb3JtYXQoKSA9PT0gMTIgPyBcImhoOm1tIGFcIiA6IFwiSEg6bW1cIjtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRTdGFydERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0RW5kRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0Q3VyckRhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICB9XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBFZmZlY3QgdG8gd2F0Y2ggZm9yIGNoYW5nZXMgaW4gc3RhcnREYXRlRXBvY2ggYW5kIGVuZERhdGVFcG9jaFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBPTkxZIHRyYWNrIHRoZXNlIHR3byBzaWduYWxzIC0gdGhpcyBpcyB0aGUgb25seSBsaW5lIHRoYXQgY3JlYXRlcyBkZXBlbmRlbmNpZXNcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCk7XG4gICAgICBjb25zdCBjdXJyZW50RW5kRGF0ZSA9IHRoaXMuZW5kRGF0ZUVwb2NoKCk7XG4gICAgICBcbiAgICAgIC8vIFVzZSB1bnRyYWNrZWQoKSBmb3IgZXZlcnl0aGluZyBlbHNlIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHNcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIC8vIFNraXAgaWYgY29tcG9uZW50IGlzIGluaXRpYWxpemluZ1xuICAgICAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFNraXAgaWYgY29tcG9uZW50IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgICAgICBpZiAoIXRoaXMuc3RhcnRUaW1lKCkgfHwgIXRoaXMuZW5kVGltZSgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBTa2lwIGlmIGRhdGVzIGhhdmVuJ3QgYWN0dWFsbHkgY2hhbmdlZCAocHJldmVudHMgaW5pdGlhbCBkb3VibGUtcnVuKVxuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGFydERhdGVFcG9jaCA9PT0gY3VycmVudFN0YXJ0RGF0ZSAmJiBcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzRW5kRGF0ZUVwb2NoID09PSBjdXJyZW50RW5kRGF0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHByZXZpb3VzIHZhbHVlc1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXJ0RGF0ZUVwb2NoID0gY3VycmVudFN0YXJ0RGF0ZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPSBjdXJyZW50RW5kRGF0ZTtcbiAgICAgICAgXG4gICAgICAgIC8vIFBSRVNFUlZFIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGltZXMgKGRvbid0IHJlc2V0IHRoZW0hKVxuICAgICAgICBjb25zdCBjdXJyZW50U3RhcnRUaW1lU3RyaW5nID0gdGhpcy5zdGFydFRpbWUoKSEudGltZTtcbiAgICAgICAgY29uc3QgY3VycmVudEVuZFRpbWVTdHJpbmcgPSB0aGlzLmVuZFRpbWUoKSEudGltZTtcbiAgICAgICAgXG4gICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgZXBvY2hzIHdpdGggdGhlIG5ldyBkYXRlIGJ1dCBTQU1FIHRpbWVcbiAgICAgICAgY29uc3QgbmV3U3RhcnRFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7Y3VycmVudFN0YXJ0VGltZVN0cmluZ31gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuICAgICAgICBjb25zdCBuZXdFbmRFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke2N1cnJlbnRFbmRUaW1lU3RyaW5nfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWUgc2lnbmFscyB3aXRoIHByZXNlcnZlZCB0aW1lcyBidXQgbmV3IGVwb2Noc1xuICAgICAgICB0aGlzLnN0YXJ0VGltZS5zZXQoe1xuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgIHRpbWU6IGN1cnJlbnRTdGFydFRpbWVTdHJpbmcsXG4gICAgICAgICAgZXBvY2g6IG5ld1N0YXJ0RXBvY2hcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmVuZFRpbWUuc2V0KHtcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICB0aW1lOiBjdXJyZW50RW5kVGltZVN0cmluZyxcbiAgICAgICAgICBlcG9jaDogbmV3RW5kRXBvY2hcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZmlyc3RJbnRlcnZhbHMgZm9yIHRoZSBkcm9wZG93biBvcHRpb25zIGJhc2VkIG9uIG5ldyBkYXRlXG4gICAgICAgIHRoaXMuc2V0Rmlyc3RJbnRlcnZhbHMoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgdGltZSByYW5nZSB3aXRoIHByZXNlcnZlZCB0aW1lcyBidXQgbmV3IGRhdGVcbiAgICAgICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkoY3VycmVudFN0YXJ0VGltZVN0cmluZy50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiZcbiAgICAgICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KGN1cnJlbnRFbmRUaW1lU3RyaW5nLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICAgICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgICAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgICAgICBzdGFydFRpbWU6IGN1cnJlbnRTdGFydFRpbWVTdHJpbmcsXG4gICAgICAgICAgZW5kVGltZTogY3VycmVudEVuZFRpbWVTdHJpbmcsXG4gICAgICAgICAgc3RhcnRFcG9jaDogbmV3U3RhcnRFcG9jaCxcbiAgICAgICAgICBlbmRFcG9jaDogbmV3RW5kRXBvY2hcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IG9uY2VcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICBcbiAgICAvLyBTdG9yZSBpbml0aWFsIHZhbHVlcyB0byBwcmV2ZW50IGVmZmVjdCBmcm9tIHJ1bm5pbmcgb24gZmlyc3QgbG9hZFxuICAgIHRoaXMuX3ByZXZpb3VzU3RhcnREYXRlRXBvY2ggPSB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCk7XG4gICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPSB0aGlzLmVuZERhdGVFcG9jaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICBcbiAgICB0aGlzLnNldEZpcnN0SW50ZXJ2YWxzKCk7XG4gICAgY29uc3QgZmlyc3RJbnRlcnZhbHMgPSB0aGlzLl9maXJzdEludGVydmFscygpO1xuXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdGltZTogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBkYXlqcy50eihmaXJzdEludGVydmFscy5zdGFydCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgICBcbiAgICAvLyBFbnN1cmUgZW5kIHRpbWUgaXMgYWx3YXlzIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICBsZXQgZW5kVGltZUVwb2NoID0gZmlyc3RJbnRlcnZhbHMuZW5kO1xuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZmlyc3RJbnRlcnZhbHMuc3RhcnQ7XG4gICAgXG4gICAgLy8gSWYgZW5kIHRpbWUgaXMgc2FtZSBvciBiZWZvcmUgc3RhcnQgdGltZSwgYWRkIG9uZSBpbnRlcnZhbCB0byBlbmQgdGltZVxuICAgIGlmIChlbmRUaW1lRXBvY2ggPD0gc3RhcnRUaW1lRXBvY2gpIHtcbiAgICAgIGVuZFRpbWVFcG9jaCA9IGRheWpzLnR6KHN0YXJ0VGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksICdtJykudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIGFkanVzdGVkIGVuZCB0aW1lXG4gICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoe1xuICAgICAgICBzdGFydDogZmlyc3RJbnRlcnZhbHMuc3RhcnQsXG4gICAgICAgIGVuZDogZW5kVGltZUVwb2NoXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5lbmRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGVuZFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy5nZXRUaW1lRm9ybWF0KCkpLFxuICAgICAgZXBvY2g6IGVuZFRpbWVFcG9jaFxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBjYWxjdWxhdGUgdGhlIGZpcnN0IGludGVydmFsIG9mIHRoZSBwaWNrZXJcbiAgcHJpdmF0ZSBzZXRGaXJzdEludGVydmFscygpOiB2b2lkIHtcbiAgICBsZXQgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyOiBudW1iZXI7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXI6IG51bWJlcjtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLm1pbnV0ZSgpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwoKSAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCgpKTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuXG4gICAgaWYoIHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0Q3VyckRhdGUoKSApe1xuICAgICAgaWYodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpe1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICAvLyBGb3Igc2FtZSBkYXRlLCBlbmQgcGlja2VyIHNob3VsZCBzdGFydCBmcm9tIGJlZ2lubmluZyBvZiBkYXkgdG8gYXZvaWQgdmFsaWRhdGlvbiBpc3N1ZXNcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGN1cnJlbnRUaW1lID49IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikuc3VidHJhY3QodGhpcy5pbnRlcnZhbCgpLFwibVwiKS52YWx1ZU9mKCkpe1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGN1cnJlbnRUaW1lO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpe1xuICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSkge1xuICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gdGhpcy5naXZlblN0YXJ0VGltZSgpITtcbiAgICB9XG4gICAgXG4gICAgaWYodGhpcy5naXZlbkVuZFRpbWUoKSkge1xuICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IHRoaXMuZ2l2ZW5FbmRUaW1lKCkhO1xuICAgIH1cbiAgICAgIFxuICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IHN0YXJ0OiBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIsIGVuZDogZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciB9KTtcbiAgfVxuXG4gIC8vIC0tLSBQdWJsaWMgTWV0aG9kcyAtLS1cbiAgZW1pdFRpbWVSYW5nZShkYXRhOiBJVGltZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy50aW1lUmFuZ2VFbWl0dGVyLmVtaXQoZGF0YSk7XG4gIH1cblxuICBzdGFydFBpY2tlckhhbmRsZXIodGltZTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQodGltZSk7XG4gICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldCh0cnVlKTtcbiAgICBcbiAgICAvLyBEb24ndCBlbWl0IGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSBzdGFydCB0aW1lIGVwb2NoIGZvciBjb21wYXJpc29uXG4gICAgY29uc3Qgc3RhcnRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcbiAgICBjb25zdCBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuXG4gICAgLy8gQXV0by1hZGp1c3QgZW5kIHRpbWUgaWYgc3RhcnQgdGltZSA+IGVuZCB0aW1lIChmb3IgYm90aCBzYW1lIGFuZCBkaWZmZXJlbnQgZGF0ZXMpXG4gICAgLy8gVGhpcyBlbnN1cmVzIGVuZCB0aW1lIGlzIGFsd2F5cyBhZnRlciBzdGFydCB0aW1lXG4gICAgaWYgKHN0YXJ0VGltZUVwb2NoID4gZW5kVGltZUVwb2NoKSB7XG4gICAgICAvLyBDYWxjdWxhdGUgbmV3IGVuZCB0aW1lIGFzIHN0YXJ0IHRpbWUgKyBpbnRlcnZhbFxuICAgICAgbGV0IG5ld0VuZFRpbWVFcG9jaCA9IGRheWpzLnR6KHN0YXJ0VGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICBcbiAgICAgIC8vIElmIHNhbWUgZGF0ZSwgY2hlY2sgaWYgdGhlIG5ldyBlbmQgdGltZSB3b3VsZCBnbyBiZXlvbmQgZW5kIG9mIGRheVxuICAgICAgaWYgKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKSB7XG4gICAgICAgIGNvbnN0IGVuZE9mRGF5ID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGlmIChuZXdFbmRUaW1lRXBvY2ggPiBlbmRPZkRheSkge1xuICAgICAgICAgIC8vIFNldCBlbmQgdGltZSB0byAxMTo1OSBQTSAoZW5kIG9mIGRheSkgd2hlbiBzdGFydCB0aW1lIGlzIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgICBuZXdFbmRUaW1lRXBvY2ggPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGVuZCB0aW1lIHNpZ25hbFxuICAgICAgdGhpcy5lbmRUaW1lLnNldCh7XG4gICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB0aW1lOiBkYXlqcy50eihuZXdFbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgICAgZXBvY2g6IG5ld0VuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZmlyc3RJbnRlcnZhbHMgdG8gcmVmbGVjdCB0aGUgbmV3IGVuZCB0aW1lXG4gICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBcbiAgICAgICAgc3RhcnQ6IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCkuc3RhcnQsIFxuICAgICAgICBlbmQ6IG5ld0VuZFRpbWVFcG9jaCBcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBUcmlnZ2VyIGNoYW5nZSB0byBmb3JjZSBlbmQgdGltZXBpY2tlciB0byB1cGRhdGUgaXRzIGRpc3BsYXkgd2l0aCB0aGUgbmV3IGVuZCB0aW1lXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB3aGVuIHdlIHJlc2V0IHRoZSBlbmQgdGltZSBkdWUgdG8gY29uZmxpY3RcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5nZS51cGRhdGUodmFsdWUgPT4gIXZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgZW5kIHRpbWVwaWNrZXIncyBmaXJzdEludGVydmFsIHdoZW4gYm90aCB0aW1lcGlja2VycyBhcmUgb24gdGhlIHNhbWUgZGF5XG4gICAgLy8gQUxXQVlTIHVwZGF0ZSB0byBlbnN1cmUgZHJvcGRvd24gc3RhcnRzIGZyb20gbmV4dCBpbnRlcnZhbCBhZnRlciBzdGFydCB0aW1lXG4gICAgLy8gVGhpcyBmaXhlcyB0aGUgYnVnIHdoZXJlIHNlbGVjdGluZyBhbiBlYXJsaWVyIHN0YXJ0IHRpbWUgZG9lc24ndCB1cGRhdGUgZW5kIHBpY2tlciBpbnRlcnZhbHNcbiAgICAvLyBOT1RFOiBXZSBvbmx5IHVwZGF0ZSBmaXJzdEludGVydmFsIChkcm9wZG93biBvcHRpb25zKSwgTk9UIHRoZSBzZWxlY3RlZCBlbmQgdGltZSB2YWx1ZVxuICAgIC8vIFRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCBub3cgaGFuZGxlcyBmaXJzdEludGVydmFsIGNoYW5nZXMgc2VwYXJhdGVseSBhbmQgd29uJ3QgcmVzZXQgY2hvc2VuVGltZVxuICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgLy8gT25seSB1cGRhdGUgZmlyc3RJbnRlcnZhbCBpZiB0aGVyZSdzIG5vIGNvbmZsaWN0IChzdGFydCA8IGVuZClcbiAgICAgIC8vIElmIHRoZXJlJ3MgYSBjb25mbGljdCwgaXQncyBhbHJlYWR5IGhhbmRsZWQgYWJvdmUgYW5kIGZpcnN0SW50ZXJ2YWwgd2FzIHVwZGF0ZWQgdGhlcmVcbiAgICAgIGlmIChzdGFydFRpbWVFcG9jaCA8IGVuZFRpbWVFcG9jaCkge1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgdGhlIHNlbGVjdGVkIHN0YXJ0IHRpbWVcbiAgICAgICAgbGV0IG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICBcbiAgICAgICAgLy8gSWYgbmV4dCBpbnRlcnZhbCB3b3VsZCBnbyBiZXlvbmQgZW5kIG9mIGRheSwgdXNlIGVuZCBvZiBkYXkgaW5zdGVhZFxuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV4dEludGVydmFsQWZ0ZXJTdGFydCA+IGVuZE9mRGF5KSB7XG4gICAgICAgICAgbmV4dEludGVydmFsQWZ0ZXJTdGFydCA9IGVuZE9mRGF5O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIG1ha2UgZW5kIHRpbWVwaWNrZXIgZHJvcGRvd24gc3RhcnQgZnJvbSBuZXh0IGludGVydmFsIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHVzZXJzIGNhbiBhbHdheXMgc2VsZWN0IHRpbWVzIGJldHdlZW4gdGhlIG5ldyBzdGFydCB0aW1lIGFuZCB0aGUgY3VycmVudCBlbmQgdGltZVxuICAgICAgICAvLyBUaGUgdGltZXBpY2tlciBjb21wb25lbnQgd2lsbCB1cGRhdGUgdGhlIGRyb3Bkb3duIGJ1dCBwcmVzZXJ2ZSB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUgdmFsdWVcbiAgICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgICAgc3RhcnQ6IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCkuc3RhcnQsIFxuICAgICAgICAgIGVuZDogbmV4dEludGVydmFsQWZ0ZXJTdGFydCBcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIE5PVEU6IFdlIGRvbid0IGNhbGwgdHJpZ2dlckNoYW5nZSBoZXJlIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIHVwZGF0ZSB0aGUgZHJvcGRvd24sXG4gICAgICAgIC8vIG5vdCByZXNldCB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUuIFRoZSB0aW1lcGlja2VyJ3Mgc2VwYXJhdGUgZWZmZWN0IGZvciBmaXJzdEludGVydmFsXG4gICAgICAgIC8vIHdpbGwgaGFuZGxlIHVwZGF0aW5nIHRoZSBkcm9wZG93biB3aXRob3V0IHJlc2V0dGluZyBjaG9zZW5UaW1lLlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsd2F5cyB2YWxpZGF0ZSBhbmQgZW1pdCB0aGUgdGltZSByYW5nZVxuICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiZcbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5lbmRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLmVuZERhdGVFcG9jaCgpKTtcblxuICAgIHRoaXMucmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5KTtcbiAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSgpLFxuICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpIS50aW1lLFxuICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lKCkhLnRpbWUsXG4gICAgICBzdGFydEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSxcbiAgICAgIGVuZEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gIH1cblxuICBlbmRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5lbmRUaW1lLnNldCh0aW1lKTtcbiAgICBcbiAgICAvLyBEb24ndCBlbWl0IGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiYgXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgY2hlY2tUaW1lVmFsaWRpdHkodGltZTogc3RyaW5nLCBkYXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBSRTEyID0gL14oKFswXVsxLTldfDFbMC0yXSk6KFswLTVdWzAtOV0pKCApPyhhbXxwbXxBTXxQTSkpJC9pO1xuICAgIGNvbnN0IFJFMjQgPSAvXihbMDFdWzAtOV18MlswLTNdKTpbMC01XVswLTldJC87XG4gICAgY29uc3QgUkUgPSB0aGlzLmNsb2NrRm9ybWF0KCkgPT09IDEyID8gUkUxMiA6IFJFMjQ7XG5cbiAgICBjb25zdCB0aW1lZGF5anMgPSBkYXlqcy50eihgJHtkYXlqcy50eihkYXRlLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIil9ICR7dGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLmdpdmVuU3RhcnRUaW1lKCkgJiYgdGhpcy5naXZlbkVuZFRpbWUoKSkgfHwgKHRoaXMuZ2V0U3RhcnREYXRlKCkgIT09IHRoaXMuZ2V0RW5kRGF0ZSgpICYmIHRoaXMuZ2V0U3RhcnREYXRlKCkgIT09IHRoaXMuZ2V0Q3VyckRhdGUoKSkpIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVkYXlqcy5kaWZmKGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSksIFwibVwiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmxhZztcbiAgfVxuXG4gIHJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eTogYm9vbGVhbikge1xuICAgIGlmICh2YWxpZGl0eSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgY29uc3Qgc3RhcnRkYXlqcyA9IGRheWpzLnR6KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgY29uc3QgZW5kZGF5anMgPSBkYXlqcy50eih0aGlzLmVuZFRpbWUoKSEudGltZSwgdGhpcy5nZXRUaW1lRm9ybWF0KCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICB0aGlzLnJhbmdlVmFsaWRpdHkuc2V0KGVuZGRheWpzLmRpZmYoc3RhcnRkYXlqcywgXCJtXCIpID49IDEpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJyYW5nZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2ZsZXhEaXJlY3Rpb24nOiBkaXJlY3Rpb24oKSwgJ2dhcCc6IGdhcCgpfVwiPlxuICA8bWlzLXRpbWVwaWNrZXJcbiAgICBbY2xvY2tGb3JtYXRdPVwiY2xvY2tGb3JtYXQoKVwiXG4gICAgW2ludGVydmFsXT1cImludGVydmFsKClcIlxuICAgIFtkYXRlQXNFcG9jaF09XCJzdGFydERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLnN0YXJ0XCJcbiAgICAodGltZUVtaXR0ZXIpPVwic3RhcnRQaWNrZXJIYW5kbGVyKCRldmVudClcIlxuICAgIFt0aW1lem9uZV09XCJ0aW1lem9uZSgpXCJcbiAgICBbaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICBbaW5wdXRXaWR0aF09XCJpbnB1dFdpZHRoKClcIlxuICAgIFtkcm9wZG93bldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4gICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwKClcIlxuICAgIFtnaXZlblRpbWVdPVwiZ2l2ZW5TdGFydFRpbWUoKVwiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZVN0YXJ0VGltZSgpXCJcbiAgICBbZGlzYWJsZVVzZXJJbnB1dF09XCJkaXNhYmxlVXNlcklucHV0KClcIlxuICAgIFtmb250U2l6ZV09XCJmb250U2l6ZSgpXCJcbiAgPjwvbWlzLXRpbWVwaWNrZXI+XG4gIDxwICpuZ0lmPVwiZGlyZWN0aW9uKCkgPT09ICdyb3cnXCI+LTwvcD5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwiZW5kRGF0ZUVwb2NoKClcIlxuICAgIFtmaXJzdEludGVydmFsXT1cImZpcnN0SW50ZXJ2YWxzKCkuZW5kXCJcbiAgICAodGltZUVtaXR0ZXIpPVwiZW5kUGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbcmFuZ2VWYWxpZGl0eV09XCJyYW5nZVZhbGlkaXR5KClcIlxuICAgIFt0aW1lem9uZV09XCJ0aW1lem9uZSgpXCJcbiAgICBbaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICBbaW5wdXRXaWR0aF09XCJpbnB1dFdpZHRoKClcIlxuICAgIFtkcm9wZG93bldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4gICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwKClcIlxuICAgIFtnaXZlblRpbWVdPVwiZ2l2ZW5FbmRUaW1lKClcIlxuICAgIFt0cmlnZ2VyQ2hhbmdlXT1cInRyaWdnZXJDaGFuZ2UoKVwiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZUVuZFRpbWUoKVwiXG4gICAgW2Rpc2FibGVVc2VySW5wdXRdPVwiZGlzYWJsZVVzZXJJbnB1dCgpXCJcbiAgICBbZm9udFNpemVdPVwiZm9udFNpemUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuPC9kaXY+XG5cbiJdfQ==
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0lDYWpDLHlCQUFpQztJQUFBLGlCQUFDO0lBQUEsaUJBQUk7O0FEWHhDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQU92QixNQUFNLE9BQU8sd0JBQXdCO0lBb0NuQyw2RUFBNkU7SUFDckUsYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3pELENBQUM7SUFFTyxZQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEVB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QSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQUZBLEFBREEsQUFEQSxBQURBLCtDQUE2Qiw0QkFDTixxQ0FDUyw2Q0FDUSw0QkFFakIsd0JBQ0osZ0NBQ1Esc0NBQ00sa0NBQ0osbUNBQ0MsbUNBQ0EsNENBQ1MsNEJBQ2hCO1lBRXJCLGNBQTJCO1lBQTNCLGdEQUEyQjtZQUU3QixjQUE2QjtZQWU3QixBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBRkEsQUFEQSxBQURBLEFBREEsK0NBQTZCLDRCQUNOLG1DQUNPLDJDQUNRLHNDQUVMLDRCQUNWLHdCQUNKLGdDQUNRLHNDQUNNLGtDQUNKLGlDQUNELHNDQUNLLGlDQUNMLDRDQUNXLDRCQUNoQjs7O2lGRHBCZCx3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSxxQkFBcUI7O2tGQUlwQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgdW50cmFja2VkLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWVSYW5nZSwgSVRpbWUsIFREaXJlY3Rpb24gfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuXG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGltZXJhbmdlcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sXCIsIC8vIENvcnJlY3RlZCBmaWxlIG5hbWVcbiAgc3R5bGVVcmxzOiBbXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAtLS0gSW5wdXQgU2lnbmFscyAocmVhZC1vbmx5KSAtLS1cbiAgaW5wdXRXaWR0aCA9IGlucHV0PHN0cmluZz4oXCIxMDBweFwiKTtcbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPihcIjQ2cHhcIik7XG4gIHRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcIkFzaWEvS29sa2F0YVwiKTtcbiAgc3RhcnREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZW5kRGF0ZUVwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSk7XG4gIGdpdmVuU3RhcnRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBnaXZlbkVuZFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNsb2NrRm9ybWF0ID0gaW5wdXQ8bnVtYmVyPigxMik7XG4gIGludGVydmFsID0gaW5wdXQ8bnVtYmVyPigxNSk7XG4gIHNob3dUb29sdGlwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRpcmVjdGlvbiA9IGlucHV0PFREaXJlY3Rpb24+KCdyb3cnKTtcbiAgZ2FwID0gaW5wdXQ8c3RyaW5nPignMXJlbScpO1xuICBkaXNhYmxlU3RhcnRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlRW5kVGltZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZm9udFNpemUgPSBpbnB1dDxzdHJpbmc+KFwiMTRweFwiKTtcbiAgZGlzYWJsZVVzZXJJbnB1dCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyAtLS0gT3V0cHV0IFNpZ25hbCAtLS1cbiAgdGltZVJhbmdlRW1pdHRlciA9IG91dHB1dDxJVGltZVJhbmdlPigpO1xuXG4gIC8vIC0tLSBJbnRlcm5hbCBXcml0YWJsZSBTaWduYWxzIC0tLVxuICBzdGFydFRpbWUgPSBzaWduYWw8SVRpbWUgfCBudWxsPihudWxsKTtcbiAgZW5kVGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICByYW5nZVZhbGlkaXR5ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICB0cmlnZ2VyQ2hhbmdlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIF9maXJzdEludGVydmFscyA9IHNpZ25hbDx7IHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyIH0+KHsgc3RhcnQ6IDAsIGVuZDogMCB9KTtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTdGFydERhdGVFcG9jaDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3ByZXZpb3VzRW5kRGF0ZUVwb2NoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvLyAtLS0gQ29tcHV0ZWQgU2lnbmFscyAoRGVyaXZlZCBTdGF0ZSkgLS0tXG4gIGZpcnN0SW50ZXJ2YWxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKSk7IC8vIEEgcHVibGljIGNvbXB1dGVkIHNpZ25hbCB0byBhY2Nlc3MgdGhlIHdyaXRhYmxlIG9uZVxuICBcbiAgLy8gSGVscGVyIG1ldGhvZHMgaW5zdGVhZCBvZiBjb21wdXRlZCBzaWduYWxzIHRvIGF2b2lkIHNpZ25hbCB3cml0ZSBjb25mbGljdHNcbiAgcHJpdmF0ZSBnZXRUaW1lRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2xvY2tGb3JtYXQoKSA9PT0gMTIgPyBcImhoOm1tIGFcIiA6IFwiSEg6bW1cIjtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRTdGFydERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0RW5kRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0Q3VyckRhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICB9XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBFZmZlY3QgdG8gd2F0Y2ggZm9yIGNoYW5nZXMgaW4gc3RhcnREYXRlRXBvY2ggYW5kIGVuZERhdGVFcG9jaFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBPTkxZIHRyYWNrIHRoZXNlIHR3byBzaWduYWxzIC0gdGhpcyBpcyB0aGUgb25seSBsaW5lIHRoYXQgY3JlYXRlcyBkZXBlbmRlbmNpZXNcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCk7XG4gICAgICBjb25zdCBjdXJyZW50RW5kRGF0ZSA9IHRoaXMuZW5kRGF0ZUVwb2NoKCk7XG4gICAgICBcbiAgICAgIC8vIFVzZSB1bnRyYWNrZWQoKSBmb3IgZXZlcnl0aGluZyBlbHNlIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHNcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIC8vIFNraXAgaWYgY29tcG9uZW50IGlzIGluaXRpYWxpemluZ1xuICAgICAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFNraXAgaWYgY29tcG9uZW50IGhhc24ndCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgICAgICBpZiAoIXRoaXMuc3RhcnRUaW1lKCkgfHwgIXRoaXMuZW5kVGltZSgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBTa2lwIGlmIGRhdGVzIGhhdmVuJ3QgYWN0dWFsbHkgY2hhbmdlZCAocHJldmVudHMgaW5pdGlhbCBkb3VibGUtcnVuKVxuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGFydERhdGVFcG9jaCA9PT0gY3VycmVudFN0YXJ0RGF0ZSAmJiBcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzRW5kRGF0ZUVwb2NoID09PSBjdXJyZW50RW5kRGF0ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHByZXZpb3VzIHZhbHVlc1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXJ0RGF0ZUVwb2NoID0gY3VycmVudFN0YXJ0RGF0ZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPSBjdXJyZW50RW5kRGF0ZTtcbiAgICAgICAgXG4gICAgICAgIC8vIFBSRVNFUlZFIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGltZXMgKGRvbid0IHJlc2V0IHRoZW0hKVxuICAgICAgICBjb25zdCBjdXJyZW50U3RhcnRUaW1lU3RyaW5nID0gdGhpcy5zdGFydFRpbWUoKSEudGltZTtcbiAgICAgICAgY29uc3QgY3VycmVudEVuZFRpbWVTdHJpbmcgPSB0aGlzLmVuZFRpbWUoKSEudGltZTtcbiAgICAgICAgXG4gICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgZXBvY2hzIHdpdGggdGhlIG5ldyBkYXRlIGJ1dCBTQU1FIHRpbWVcbiAgICAgICAgY29uc3QgbmV3U3RhcnRFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7Y3VycmVudFN0YXJ0VGltZVN0cmluZ31gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuICAgICAgICBjb25zdCBuZXdFbmRFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke2N1cnJlbnRFbmRUaW1lU3RyaW5nfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWUgc2lnbmFscyB3aXRoIHByZXNlcnZlZCB0aW1lcyBidXQgbmV3IGVwb2Noc1xuICAgICAgICB0aGlzLnN0YXJ0VGltZS5zZXQoe1xuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgIHRpbWU6IGN1cnJlbnRTdGFydFRpbWVTdHJpbmcsXG4gICAgICAgICAgZXBvY2g6IG5ld1N0YXJ0RXBvY2hcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmVuZFRpbWUuc2V0KHtcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICB0aW1lOiBjdXJyZW50RW5kVGltZVN0cmluZyxcbiAgICAgICAgICBlcG9jaDogbmV3RW5kRXBvY2hcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZmlyc3RJbnRlcnZhbHMgZm9yIHRoZSBkcm9wZG93biBvcHRpb25zIGJhc2VkIG9uIG5ldyBkYXRlXG4gICAgICAgIHRoaXMuc2V0Rmlyc3RJbnRlcnZhbHMoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgdGltZSByYW5nZSB3aXRoIHByZXNlcnZlZCB0aW1lcyBidXQgbmV3IGRhdGVcbiAgICAgICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkoY3VycmVudFN0YXJ0VGltZVN0cmluZy50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiZcbiAgICAgICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KGN1cnJlbnRFbmRUaW1lU3RyaW5nLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICAgICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgICAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgICAgICBzdGFydFRpbWU6IGN1cnJlbnRTdGFydFRpbWVTdHJpbmcsXG4gICAgICAgICAgZW5kVGltZTogY3VycmVudEVuZFRpbWVTdHJpbmcsXG4gICAgICAgICAgc3RhcnRFcG9jaDogbmV3U3RhcnRFcG9jaCxcbiAgICAgICAgICBlbmRFcG9jaDogbmV3RW5kRXBvY2hcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IG9uY2VcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICBcbiAgICAvLyBTdG9yZSBpbml0aWFsIHZhbHVlcyB0byBwcmV2ZW50IGVmZmVjdCBmcm9tIHJ1bm5pbmcgb24gZmlyc3QgbG9hZFxuICAgIHRoaXMuX3ByZXZpb3VzU3RhcnREYXRlRXBvY2ggPSB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCk7XG4gICAgdGhpcy5fcHJldmlvdXNFbmREYXRlRXBvY2ggPSB0aGlzLmVuZERhdGVFcG9jaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICBcbiAgICB0aGlzLnNldEZpcnN0SW50ZXJ2YWxzKCk7XG4gICAgY29uc3QgZmlyc3RJbnRlcnZhbHMgPSB0aGlzLl9maXJzdEludGVydmFscygpO1xuXG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdGltZTogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBkYXlqcy50eihmaXJzdEludGVydmFscy5zdGFydCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgICBcbiAgICAvLyBFbnN1cmUgZW5kIHRpbWUgaXMgYWx3YXlzIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICBsZXQgZW5kVGltZUVwb2NoID0gZmlyc3RJbnRlcnZhbHMuZW5kO1xuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZmlyc3RJbnRlcnZhbHMuc3RhcnQ7XG4gICAgXG4gICAgLy8gSWYgZW5kIHRpbWUgaXMgc2FtZSBvciBiZWZvcmUgc3RhcnQgdGltZSwgYWRkIG9uZSBpbnRlcnZhbCB0byBlbmQgdGltZVxuICAgIGlmIChlbmRUaW1lRXBvY2ggPD0gc3RhcnRUaW1lRXBvY2gpIHtcbiAgICAgIGVuZFRpbWVFcG9jaCA9IGRheWpzLnR6KHN0YXJ0VGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksICdtJykudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIGFkanVzdGVkIGVuZCB0aW1lXG4gICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoe1xuICAgICAgICBzdGFydDogZmlyc3RJbnRlcnZhbHMuc3RhcnQsXG4gICAgICAgIGVuZDogZW5kVGltZUVwb2NoXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5lbmRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGVuZFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy5nZXRUaW1lRm9ybWF0KCkpLFxuICAgICAgZXBvY2g6IGVuZFRpbWVFcG9jaFxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBjYWxjdWxhdGUgdGhlIGZpcnN0IGludGVydmFsIG9mIHRoZSBwaWNrZXJcbiAgcHJpdmF0ZSBzZXRGaXJzdEludGVydmFscygpOiB2b2lkIHtcbiAgICBsZXQgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyOiBudW1iZXI7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXI6IG51bWJlcjtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLm1pbnV0ZSgpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwoKSAtIChtaW51dGVzICUgdGhpcy5pbnRlcnZhbCgpKTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuXG4gICAgaWYoIHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0Q3VyckRhdGUoKSApe1xuICAgICAgaWYodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpe1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICAvLyBGb3Igc2FtZSBkYXRlLCBlbmQgcGlja2VyIHNob3VsZCBzdGFydCBmcm9tIGJlZ2lubmluZyBvZiBkYXkgdG8gYXZvaWQgdmFsaWRhdGlvbiBpc3N1ZXNcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGN1cnJlbnRUaW1lID49IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikuc3VidHJhY3QodGhpcy5pbnRlcnZhbCgpLFwibVwiKS52YWx1ZU9mKCkpe1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGN1cnJlbnRUaW1lO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpe1xuICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSkge1xuICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gdGhpcy5naXZlblN0YXJ0VGltZSgpITtcbiAgICB9XG4gICAgXG4gICAgaWYodGhpcy5naXZlbkVuZFRpbWUoKSkge1xuICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IHRoaXMuZ2l2ZW5FbmRUaW1lKCkhO1xuICAgIH1cbiAgICAgIFxuICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IHN0YXJ0OiBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIsIGVuZDogZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciB9KTtcbiAgfVxuXG4gIC8vIC0tLSBQdWJsaWMgTWV0aG9kcyAtLS1cbiAgZW1pdFRpbWVSYW5nZShkYXRhOiBJVGltZVJhbmdlKTogdm9pZCB7XG4gICAgdGhpcy50aW1lUmFuZ2VFbWl0dGVyLmVtaXQoZGF0YSk7XG4gIH1cblxuICBzdGFydFBpY2tlckhhbmRsZXIodGltZTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQodGltZSk7XG4gICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldCh0cnVlKTtcbiAgICBcbiAgICAvLyBEb24ndCBlbWl0IGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSBzdGFydCB0aW1lIGVwb2NoIGZvciBjb21wYXJpc29uXG4gICAgY29uc3Qgc3RhcnRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcbiAgICBjb25zdCBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuXG4gICAgLy8gQXV0by1hZGp1c3QgZW5kIHRpbWUgaWYgc3RhcnQgdGltZSA+PSBlbmQgdGltZSAoZm9yIGJvdGggc2FtZSBhbmQgZGlmZmVyZW50IGRhdGVzKVxuICAgIC8vIFRoaXMgZW5zdXJlcyBlbmQgdGltZSBpcyBhbHdheXMgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIGlmIChzdGFydFRpbWVFcG9jaCA+PSBlbmRUaW1lRXBvY2gpIHtcbiAgICAgIC8vIENhbGN1bGF0ZSBuZXcgZW5kIHRpbWUgYXMgc3RhcnQgdGltZSArIGludGVydmFsXG4gICAgICBsZXQgbmV3RW5kVGltZUVwb2NoID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIFxuICAgICAgLy8gSWYgc2FtZSBkYXRlLCBjaGVjayBpZiB0aGUgbmV3IGVuZCB0aW1lIHdvdWxkIGdvIGJleW9uZCBlbmQgb2YgZGF5XG4gICAgICBpZiAodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgICAgY29uc3QgZW5kT2ZEYXkgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKG5ld0VuZFRpbWVFcG9jaCA+IGVuZE9mRGF5KSB7XG4gICAgICAgICAgLy8gU2V0IGVuZCB0aW1lIHRvIDExOjU5IFBNIChlbmQgb2YgZGF5KSB3aGVuIHN0YXJ0IHRpbWUgaXMgbGFzdCBpbnRlcnZhbFxuICAgICAgICAgIG5ld0VuZFRpbWVFcG9jaCA9IGVuZE9mRGF5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIHRpbWUgc2lnbmFsXG4gICAgICB0aGlzLmVuZFRpbWUuc2V0KHtcbiAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIHRpbWU6IGRheWpzLnR6KG5ld0VuZFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy5nZXRUaW1lRm9ybWF0KCkpLFxuICAgICAgICBlcG9jaDogbmV3RW5kVGltZUVwb2NoXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byByZWZsZWN0IHRoZSBuZXcgZW5kIHRpbWVcbiAgICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IFxuICAgICAgICBzdGFydDogdGhpcy5fZmlyc3RJbnRlcnZhbHMoKS5zdGFydCwgXG4gICAgICAgIGVuZDogbmV3RW5kVGltZUVwb2NoIFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIHRvIGZvcmNlIGVuZCB0aW1lcGlja2VyIHRvIHVwZGF0ZSBpdHMgZGlzcGxheSB3aXRoIHRoZSBuZXcgZW5kIHRpbWVcbiAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHdoZW4gd2UgcmVzZXQgdGhlIGVuZCB0aW1lIGR1ZSB0byBjb25mbGljdFxuICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlLnVwZGF0ZSh2YWx1ZSA9PiAhdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBlbmQgdGltZXBpY2tlcidzIGZpcnN0SW50ZXJ2YWwgd2hlbiBib3RoIHRpbWVwaWNrZXJzIGFyZSBvbiB0aGUgc2FtZSBkYXlcbiAgICAvLyBBTFdBWVMgdXBkYXRlIHRvIGVuc3VyZSBkcm9wZG93biBzdGFydHMgZnJvbSBuZXh0IGludGVydmFsIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICAvLyBUaGlzIGZpeGVzIHRoZSBidWcgd2hlcmUgc2VsZWN0aW5nIGFuIGVhcmxpZXIgc3RhcnQgdGltZSBkb2Vzbid0IHVwZGF0ZSBlbmQgcGlja2VyIGludGVydmFsc1xuICAgIC8vIE5PVEU6IFdlIG9ubHkgdXBkYXRlIGZpcnN0SW50ZXJ2YWwgKGRyb3Bkb3duIG9wdGlvbnMpLCBOT1QgdGhlIHNlbGVjdGVkIGVuZCB0aW1lIHZhbHVlXG4gICAgLy8gVGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IG5vdyBoYW5kbGVzIGZpcnN0SW50ZXJ2YWwgY2hhbmdlcyBzZXBhcmF0ZWx5IGFuZCB3b24ndCByZXNldCBjaG9zZW5UaW1lXG4gICAgaWYgKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKSB7XG4gICAgICAvLyBPbmx5IHVwZGF0ZSBmaXJzdEludGVydmFsIGlmIHRoZXJlJ3Mgbm8gY29uZmxpY3QgKHN0YXJ0IDwgZW5kKVxuICAgICAgLy8gSWYgdGhlcmUncyBhIGNvbmZsaWN0LCBpdCdzIGFscmVhZHkgaGFuZGxlZCBhYm92ZSBhbmQgZmlyc3RJbnRlcnZhbCB3YXMgdXBkYXRlZCB0aGVyZVxuICAgICAgaWYgKHN0YXJ0VGltZUVwb2NoIDwgZW5kVGltZUVwb2NoKSB7XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV4dCBpbnRlcnZhbCBhZnRlciB0aGUgc2VsZWN0ZWQgc3RhcnQgdGltZVxuICAgICAgICBsZXQgbmV4dEludGVydmFsQWZ0ZXJTdGFydCA9IGRheWpzLnR6KHN0YXJ0VGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBJZiBuZXh0IGludGVydmFsIHdvdWxkIGdvIGJleW9uZCBlbmQgb2YgZGF5LCB1c2UgZW5kIG9mIGRheSBpbnN0ZWFkXG4gICAgICAgIGNvbnN0IGVuZE9mRGF5ID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGlmIChuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID4gZW5kT2ZEYXkpIHtcbiAgICAgICAgICBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID0gZW5kT2ZEYXk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgZmlyc3RJbnRlcnZhbHMgdG8gbWFrZSBlbmQgdGltZXBpY2tlciBkcm9wZG93biBzdGFydCBmcm9tIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgc3RhcnQgdGltZVxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdXNlcnMgY2FuIGFsd2F5cyBzZWxlY3QgdGltZXMgYmV0d2VlbiB0aGUgbmV3IHN0YXJ0IHRpbWUgYW5kIHRoZSBjdXJyZW50IGVuZCB0aW1lXG4gICAgICAgIC8vIFRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCB3aWxsIHVwZGF0ZSB0aGUgZHJvcGRvd24gYnV0IHByZXNlcnZlIHRoZSBzZWxlY3RlZCBlbmQgdGltZSB2YWx1ZVxuICAgICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBcbiAgICAgICAgICBzdGFydDogdGhpcy5fZmlyc3RJbnRlcnZhbHMoKS5zdGFydCwgXG4gICAgICAgICAgZW5kOiBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0IFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gTk9URTogV2UgZG9uJ3QgY2FsbCB0cmlnZ2VyQ2hhbmdlIGhlcmUgYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gdXBkYXRlIHRoZSBkcm9wZG93bixcbiAgICAgICAgLy8gbm90IHJlc2V0IHRoZSBzZWxlY3RlZCBlbmQgdGltZS4gVGhlIHRpbWVwaWNrZXIncyBzZXBhcmF0ZSBlZmZlY3QgZm9yIGZpcnN0SW50ZXJ2YWxcbiAgICAgICAgLy8gd2lsbCBoYW5kbGUgdXBkYXRpbmcgdGhlIGRyb3Bkb3duIHdpdGhvdXQgcmVzZXR0aW5nIGNob3NlblRpbWUuXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIHZhbGlkYXRlIGFuZCBlbWl0IHRoZSB0aW1lIHJhbmdlXG4gICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCgpKSAmJlxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsXG4gICAgICBlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSEudGltZSxcbiAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGVuZFBpY2tlckhhbmRsZXIodGltZTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFRpbWUuc2V0KHRpbWUpO1xuICAgIFxuICAgIC8vIERvbid0IGVtaXQgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCgpKSAmJiBcbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5lbmRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLmVuZERhdGVFcG9jaCgpKTtcblxuICAgIHRoaXMucmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5KTtcbiAgICB0aGlzLmVtaXRUaW1lUmFuZ2Uoe1xuICAgICAgdmFsaWQ6IHZhbGlkaXR5ICYmIHRoaXMucmFuZ2VWYWxpZGl0eSgpLFxuICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSgpIS50aW1lLFxuICAgICAgZW5kVGltZTogdGhpcy5lbmRUaW1lKCkhLnRpbWUsXG4gICAgICBzdGFydEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSxcbiAgICAgIGVuZEVwb2NoOiBkYXlqcy50eihgJHt0aGlzLmdldEVuZERhdGUoKX0gJHt0aGlzLmVuZFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gIH1cblxuICBjaGVja1RpbWVWYWxpZGl0eSh0aW1lOiBzdHJpbmcsIGRhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFJFMTIgPSAvXigoWzBdWzEtOV18MVswLTJdKTooWzAtNV1bMC05XSkoICk/KGFtfHBtfEFNfFBNKSkkL2k7XG4gICAgY29uc3QgUkUyNCA9IC9eKFswMV1bMC05XXwyWzAtM10pOlswLTVdWzAtOV0kLztcbiAgICBjb25zdCBSRSA9IHRoaXMuY2xvY2tGb3JtYXQoKSA9PT0gMTIgPyBSRTEyIDogUkUyNDtcblxuICAgIGNvbnN0IHRpbWVkYXlqcyA9IGRheWpzLnR6KGAke2RheWpzLnR6KGRhdGUsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKX0gJHt0aW1lfWAsIGAnREQtTU0tWVlZWScgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgIGxldCBmbGFnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpZiAoKHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSAmJiB0aGlzLmdpdmVuRW5kVGltZSgpKSB8fCAodGhpcy5nZXRTdGFydERhdGUoKSAhPT0gdGhpcy5nZXRFbmREYXRlKCkgJiYgdGhpcy5nZXRTdGFydERhdGUoKSAhPT0gdGhpcy5nZXRDdXJyRGF0ZSgpKSkge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgJiYgdGltZWRheWpzLmRpZmYoZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKSwgXCJtXCIpID49IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgcmFuZ2VWYWxpZGF0aW9uKHZhbGlkaXR5OiBib29sZWFuKSB7XG4gICAgaWYgKHZhbGlkaXR5ICYmIHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKSB7XG4gICAgICBjb25zdCBzdGFydGRheWpzID0gZGF5anMudHoodGhpcy5zdGFydFRpbWUoKSEudGltZSwgdGhpcy5nZXRUaW1lRm9ybWF0KCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICBjb25zdCBlbmRkYXlqcyA9IGRheWpzLnR6KHRoaXMuZW5kVGltZSgpIS50aW1lLCB0aGlzLmdldFRpbWVGb3JtYXQoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgIHRoaXMucmFuZ2VWYWxpZGl0eS5zZXQoZW5kZGF5anMuZGlmZihzdGFydGRheWpzLCBcIm1cIikgPj0gMSk7XG4gICAgfVxuICB9XG59XG5cblxuIiwiPGRpdiBjbGFzcz1cInJhbmdlcGlja2VyLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnZmxleERpcmVjdGlvbic6IGRpcmVjdGlvbigpLCAnZ2FwJzogZ2FwKCl9XCI+XG4gIDxtaXMtdGltZXBpY2tlclxuICAgIFtjbG9ja0Zvcm1hdF09XCJjbG9ja0Zvcm1hdCgpXCJcbiAgICBbaW50ZXJ2YWxdPVwiaW50ZXJ2YWwoKVwiXG4gICAgW2RhdGVBc0Vwb2NoXT1cInN0YXJ0RGF0ZUVwb2NoKClcIlxuICAgIFtmaXJzdEludGVydmFsXT1cImZpcnN0SW50ZXJ2YWxzKCkuc3RhcnRcIlxuICAgICh0aW1lRW1pdHRlcik9XCJzdGFydFBpY2tlckhhbmRsZXIoJGV2ZW50KVwiXG4gICAgW3RpbWV6b25lXT1cInRpbWV6b25lKClcIlxuICAgIFtoZWlnaHRdPVwiaGVpZ2h0KClcIlxuICAgIFtpbnB1dFdpZHRoXT1cImlucHV0V2lkdGgoKVwiXG4gICAgW2Ryb3Bkb3duV2lkdGhdPVwiZHJvcGRvd25XaWR0aCgpXCJcbiAgICBbc2hvd1Rvb2x0aXBdPVwic2hvd1Rvb2x0aXAoKVwiXG4gICAgW2dpdmVuVGltZV09XCJnaXZlblN0YXJ0VGltZSgpXCJcbiAgICBbZGlzYWJsZV09XCJkaXNhYmxlU3RhcnRUaW1lKClcIlxuICAgIFtkaXNhYmxlVXNlcklucHV0XT1cImRpc2FibGVVc2VySW5wdXQoKVwiXG4gICAgW2ZvbnRTaXplXT1cImZvbnRTaXplKClcIlxuICA+PC9taXMtdGltZXBpY2tlcj5cbiAgPHAgKm5nSWY9XCJkaXJlY3Rpb24oKSA9PT0gJ3JvdydcIj4tPC9wPlxuICA8bWlzLXRpbWVwaWNrZXJcbiAgICBbY2xvY2tGb3JtYXRdPVwiY2xvY2tGb3JtYXQoKVwiXG4gICAgW2ludGVydmFsXT1cImludGVydmFsKClcIlxuICAgIFtkYXRlQXNFcG9jaF09XCJlbmREYXRlRXBvY2goKVwiXG4gICAgW2ZpcnN0SW50ZXJ2YWxdPVwiZmlyc3RJbnRlcnZhbHMoKS5lbmRcIlxuICAgICh0aW1lRW1pdHRlcik9XCJlbmRQaWNrZXJIYW5kbGVyKCRldmVudClcIlxuICAgIFtyYW5nZVZhbGlkaXR5XT1cInJhbmdlVmFsaWRpdHkoKVwiXG4gICAgW3RpbWV6b25lXT1cInRpbWV6b25lKClcIlxuICAgIFtoZWlnaHRdPVwiaGVpZ2h0KClcIlxuICAgIFtpbnB1dFdpZHRoXT1cImlucHV0V2lkdGgoKVwiXG4gICAgW2Ryb3Bkb3duV2lkdGhdPVwiZHJvcGRvd25XaWR0aCgpXCJcbiAgICBbc2hvd1Rvb2x0aXBdPVwic2hvd1Rvb2x0aXAoKVwiXG4gICAgW2dpdmVuVGltZV09XCJnaXZlbkVuZFRpbWUoKVwiXG4gICAgW3RyaWdnZXJDaGFuZ2VdPVwidHJpZ2dlckNoYW5nZSgpXCJcbiAgICBbZGlzYWJsZV09XCJkaXNhYmxlRW5kVGltZSgpXCJcbiAgICBbZGlzYWJsZVVzZXJJbnB1dF09XCJkaXNhYmxlVXNlcklucHV0KClcIlxuICAgIFtmb250U2l6ZV09XCJmb250U2l6ZSgpXCJcbiAgPjwvbWlzLXRpbWVwaWNrZXI+XG48L2Rpdj5cblxuIl19
|