mis-crystal-design-system 18.1.3 → 18.1.4-test-1

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.
@@ -99,11 +99,14 @@ export class TimePickerComponent {
99
99
  this._isInitializing = false;
100
100
  // Signal-based output with backward compatibility
101
101
  this.timeEmitter = output();
102
- // Effect to handle triggerChange from parent component (timerangepicker)
102
+ // Effect to handle triggerChange toggles (explicit reset requests from parent)
103
+ // This effect ONLY resets chosenTime when triggerChange is toggled
104
+ // It does NOT watch firstInterval to avoid resetting time when dropdown intervals are updated
103
105
  effect(() => {
104
106
  const triggerValue = this.triggerChange();
105
- const firstIntervalValue = this.firstInterval();
106
- // Only update if not during user input and firstInterval is provided
107
+ const firstIntervalValue = untracked(() => this.firstInterval()); // Use untracked to not create dependency
108
+ // Only reset when triggerChange is toggled AND firstInterval is provided
109
+ // This handles cases where parent explicitly wants to reset the time (e.g., conflict resolution)
107
110
  if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {
108
111
  const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);
109
112
  // Only update if the time actually changed
@@ -112,7 +115,7 @@ export class TimePickerComponent {
112
115
  setTimeout(() => {
113
116
  this.chosenTime.set(newTime);
114
117
  this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));
115
- // CRITICAL FIX: Repopulate dropdown when firstInterval changes
118
+ // Repopulate dropdown when time is reset
116
119
  this.populateDropdown();
117
120
  // Recalculate closest interval
118
121
  this.calculateClosestInterval(newTime);
@@ -127,6 +130,24 @@ export class TimePickerComponent {
127
130
  }
128
131
  }
129
132
  });
133
+ // Separate effect to handle firstInterval changes (only update dropdown, NOT chosenTime)
134
+ // This allows updating dropdown intervals without resetting the selected time
135
+ effect(() => {
136
+ const firstIntervalValue = this.firstInterval();
137
+ // Only update dropdown when firstInterval changes, don't reset chosenTime
138
+ // This is crucial: when timerangepicker updates firstInterval to fix dropdown options,
139
+ // we don't want to reset the user's selected time
140
+ if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {
141
+ // Just repopulate dropdown with new intervals, preserve current chosenTime
142
+ setTimeout(() => {
143
+ this.populateDropdown();
144
+ // Recalculate closest interval for current chosenTime (preserve it)
145
+ if (untracked(() => this.chosenTime())) {
146
+ this.calculateClosestInterval(untracked(() => this.chosenTime()));
147
+ }
148
+ }, 0);
149
+ }
150
+ });
130
151
  }
131
152
  ngOnInit() {
132
153
  this._isInitializing = true;
@@ -456,4 +477,4 @@ export class TimePickerComponent {
456
477
  args: ["timeInterval"]
457
478
  }] }); })();
458
479
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimePickerComponent, { className: "TimePickerComponent" }); })();
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90aW1lcGlja2VyL3RpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXBpY2tlci90aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQThELFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVksTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuTCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0lDZXBELDBCQUFrRjs7OztJQUZwRixpQ0FBeUo7SUFBdkksNk5BQVMsZ0NBQXNCLEtBQUM7SUFDaEQsWUFDQTtJQUFBLDhGQUE0RTtJQUM5RSxpQkFBSzs7Ozs7SUFIbUcscUZBQWdEO0lBQ3RKLGVBQ0E7SUFEQSw0Q0FDQTtJQUEyQyxjQUErQjtJQUEvQiwwREFBK0I7OztJQUg5RSxBQURGLDhCQUE2RyxrQkFDN0Y7SUFDWixzRkFBeUo7SUFLN0osQUFERSxpQkFBSyxFQUNEOzs7SUFQZ0QsbUdBQXNEO0lBRWhDLGVBQW9CO0lBQXBCLGdEQUFvQjs7O0lBRmhHLGtGQUE2Rzs7O0lBQXZHLDBDQUFrQjs7QURUNUIsS0FBSyxDQUFDLE1BQU0sQ0FB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QUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqRSxDQUFDO29IQTlaVSxtQkFBbUI7b0VBQW5CLG1CQUFtQjs7MkJBcUNuQixtQkFBbUI7MkJBQ25CLGdCQUFnQjs7Ozs7Ozs7OztZQ3pEM0IsQUFERiw4QkFBc0csa0JBZ0JsRztZQVRBLEFBSEEsMkpBQWlCLHdCQUFvQixLQUFDLHdIQUc3QixrQkFBYyxLQUFDO1lBTjFCLGlCQWVFO1lBRUYsa0hBQStIO1lBQWxDLDJKQUFpQixtQkFBZSxLQUFDO1lBVWhJLGlCQUFNOzs7WUE1QjZELEFBQWpDLG1FQUFnQyx1REFBbUM7WUFHakcsY0FBd0I7WUFTeEIsQUFEQSxBQURBLEFBREEsQUFIQSxBQURBLEFBRkEsMENBQXdCLGlGQUVnQywwREFDckIsb0dBR2dELHdCQUM1RCxtQkFDTCxzQkFDRztZQU11QixlQUFrQjtZQUFDLEFBQW5CLG1DQUFrQixnQ0FBNEI7OztpRkRFakYsbUJBQW1CO2NBTC9CLFNBQVM7MkJBQ0UsZ0JBQWdCO29CQXdDWSxLQUFLO2tCQUExQyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDSixtQkFBbUI7a0JBQWxELFNBQVM7bUJBQUMsbUJBQW1CO1lBQ0QsZ0JBQWdCO2tCQUE1QyxTQUFTO21CQUFDLGdCQUFnQjtZQUdPLGdCQUFnQjtrQkFBakQsWUFBWTttQkFBQyxjQUFjOztrRkF6Q2pCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgdW50cmFja2VkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElUaW1lIH0gZnJvbSBcIi4vdGltZS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IFRpbWVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi90aW1lcGlja2VyLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgVG9vbFRpcERpcmVjdGl2ZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3Rvb2x0aXBcIjtcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10aW1lcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGltZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyBDb252ZXJ0IHRvIHNpZ25hbHMgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgY2hhbmdlIGRldGVjdGlvblxuICBjdXJyVGltZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgY2hvc2VuVGltZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgb3BlblN0YXR1cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGlzSGlnaGxpZ2h0ZWQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgaXNJbnZhbGlkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdGltZUludGVydmFscyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICBzaG91bGRTY3JvbGwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICB1c2VySW5wdXRGbGFnID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgZ2l2ZW5UaW1lRmxhZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgLy8gU2lnbmFsLWJhc2VkIGlucHV0cyB3aXRoIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgY2xvY2tGb3JtYXQgPSBpbnB1dDxudW1iZXI+KDEyKTtcbiAgdGltZUZvcm1hdCE6IHN0cmluZztcbiAgXG4gIHRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcIkFzaWEvS29sa2F0YVwiKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPihcIm1heC1jb250ZW50XCIpO1xuICBpbnB1dFdpZHRoID0gaW5wdXQ8c3RyaW5nPihcIjEwMHB4XCIpO1xuICBkcm9wZG93bldpZHRoID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBpbnRlcnZhbCA9IGlucHV0PG51bWJlcj4oMTUpO1xuICBkYXRlQXNFcG9jaCA9IGlucHV0PG51bWJlcj4oZGF5anMudHooZGF5anMoKSwgXCJBc2lhL0tvbGthdGFcIikudmFsdWVPZigpKTtcbiAgZmlyc3RJbnRlcnZhbCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmFuZ2VWYWxpZGl0eSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBzaG93VG9vbHRpcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBkaXNwYXlUb29sVGlwOiBib29sZWFuID0gdGhpcy5zaG93VG9vbHRpcCgpO1xuICBnaXZlblRpbWUgPSBpbnB1dDxudW1iZXI+KCk7XG4gIG1pblRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRyaWdnZXJDaGFuZ2UgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgZGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgXG4gIC8vIEludGVybmFsIHN0YXRlIGZvciBjb21wdXRlZCBmaXJzdCBpbnRlcnZhbFxuICBwcml2YXRlIGNvbXB1dGVkRmlyc3RJbnRlcnZhbDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2lzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gIFxuICAvLyBTaWduYWwtYmFzZWQgb3V0cHV0IHdpdGggYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICB0aW1lRW1pdHRlciA9IG91dHB1dDxJVGltZT4oKTtcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFRpbWVwaWNrZXJEaXJlY3RpdmUpIHRpbWVwaWNrZXJEaXJlY3RpdmU6IFRpbWVwaWNrZXJEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoVG9vbFRpcERpcmVjdGl2ZSkgdG9vbHRpcERpcmVjdGl2ZTogVG9vbFRpcERpcmVjdGl2ZTtcblxuICAvLyBnZXRzIGFsbCB0aGUgbGkgZWxlbWVudHMgZnJvbSB0aGUgZHJvcGRvd24gYW5kIHNjcm9sbHMgdG8gdGhlIGhpZ2hsaWdodGVkIGVsZW1lbnRcbiAgQFZpZXdDaGlsZHJlbihcInRpbWVJbnRlcnZhbFwiKSBzZXQgdGltZUludGVydmFsUmVmcyhpbnRlcnZhbHMpIHtcbiAgICBpbnRlcnZhbHMuZm9yRWFjaChpbnRlcnZhbCA9PiB7XG4gICAgICBpZiAoaW50ZXJ2YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3RbMF0gPT09IFwiaGlnaGxpZ2h0XCIpIHtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBpbnRlcnZhbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGhpZ2hsaWdodGVkLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKXtcbiAgICAvLyBFZmZlY3QgdG8gaGFuZGxlIHRyaWdnZXJDaGFuZ2UgZnJvbSBwYXJlbnQgY29tcG9uZW50ICh0aW1lcmFuZ2VwaWNrZXIpXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRyaWdnZXJWYWx1ZSA9IHRoaXMudHJpZ2dlckNoYW5nZSgpO1xuICAgICAgY29uc3QgZmlyc3RJbnRlcnZhbFZhbHVlID0gdGhpcy5maXJzdEludGVydmFsKCk7XG4gICAgICBcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGlmIG5vdCBkdXJpbmcgdXNlciBpbnB1dCBhbmQgZmlyc3RJbnRlcnZhbCBpcyBwcm92aWRlZFxuICAgICAgaWYgKCF1bnRyYWNrZWQoKCkgPT4gdGhpcy51c2VySW5wdXRGbGFnKCkpICYmIGZpcnN0SW50ZXJ2YWxWYWx1ZSAmJiAhdGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgICAgY29uc3QgbmV3VGltZSA9IGRheWpzLnR6KGZpcnN0SW50ZXJ2YWxWYWx1ZSwgdW50cmFja2VkKCgpID0+IHRoaXMudGltZXpvbmUoKSkpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgICBcbiAgICAgICAgLy8gT25seSB1cGRhdGUgaWYgdGhlIHRpbWUgYWN0dWFsbHkgY2hhbmdlZFxuICAgICAgICBpZiAodW50cmFja2VkKCgpID0+IHRoaXMuY2hvc2VuVGltZSgpKSAhPT0gbmV3VGltZSkge1xuICAgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIGRlZmVyIHNpZ25hbCB3cml0ZXMgYW5kIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaG9zZW5UaW1lLnNldChuZXdUaW1lKTtcbiAgICAgICAgICAgIHRoaXMuaXNJbnZhbGlkLnNldCghdGhpcy5jaGVja1RpbWVWYWxpZGl0eShuZXdUaW1lLnRyaW0oKSkpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBDUklUSUNBTCBGSVg6IFJlcG9wdWxhdGUgZHJvcGRvd24gd2hlbiBmaXJzdEludGVydmFsIGNoYW5nZXNcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVEcm9wZG93bigpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBSZWNhbGN1bGF0ZSBjbG9zZXN0IGludGVydmFsXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbChuZXdUaW1lKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gRW1pdCB0aGUgdXBkYXRlZCB0aW1lXG4gICAgICAgICAgICBjb25zdCB0aW1lZGF5anMgPSB0aGlzLmdldGRheWpzKG5ld1RpbWUpO1xuICAgICAgICAgICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICAgICAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQoKSxcbiAgICAgICAgICAgICAgdGltZTogbmV3VGltZSxcbiAgICAgICAgICAgICAgZXBvY2g6IHRpbWVkYXlqcy52YWx1ZU9mKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gdHJ1ZTtcbiAgICAvLyBFbnN1cmUgdGltZUZvcm1hdCBpcyBzZXQgYmVmb3JlIGluaXRpYWxpemF0aW9uXG4gICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICAgIFxuICAgIC8vIEluaXRpYWxpemUgY2hvc2VuVGltZSAtIHVzZSBmaXJzdEludGVydmFsIGZyb20gcGFyZW50IGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNhbGN1bGF0ZVxuICAgIGlmICghdGhpcy5naXZlblRpbWUoKSAmJiAhdGhpcy5taW5UaW1lKCkpIHtcbiAgICAgIGxldCBpbml0aWFsVGltZTtcbiAgICAgIFxuICAgICAgLy8gSWYgZmlyc3RJbnRlcnZhbCBpcyBwcm92aWRlZCBieSBwYXJlbnQgKHRpbWVyYW5nZXBpY2tlciksIHVzZSBpdFxuICAgICAgaWYgKHRoaXMuZmlyc3RJbnRlcnZhbCgpKSB7XG4gICAgICAgIGluaXRpYWxUaW1lID0gZGF5anMudHoodGhpcy5maXJzdEludGVydmFsKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBHZXQgY3VycmVudCB0aW1lIGFuZCByb3VuZCB0byBuZWFyZXN0IGludGVydmFsIHVzaW5nIG9yaWdpbmFsIGxvZ2ljXG4gICAgICAgIGNvbnN0IG5vdyA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5pbnRlcnZhbCgpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gbm93Lm1pbnV0ZSgpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBpbnRlcnZhbCAtIChtaW51dGVzICUgaW50ZXJ2YWwpO1xuICAgICAgICBcbiAgICAgICAgLy8gUm91bmQgdG8gbmV4dCBpbnRlcnZhbCBpZiB3ZSdyZSBwYXN0IGhhbGZ3YXkgcG9pbnRcbiAgICAgICAgY29uc3Qgcm91bmRlZFRpbWUgPSBvZmZzZXQgPj0gaW50ZXJ2YWwgLyAyIFxuICAgICAgICAgID8gbm93LmFkZChvZmZzZXQsIFwibVwiKS5zZWNvbmQoMCkubWlsbGlzZWNvbmQoMClcbiAgICAgICAgICA6IG5vdy5zdWJ0cmFjdChpbnRlcnZhbCAtIG9mZnNldCwgXCJtXCIpLnNlY29uZCgwKS5taWxsaXNlY29uZCgwKTtcbiAgICAgICAgXG4gICAgICAgIGluaXRpYWxUaW1lID0gcm91bmRlZFRpbWUuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuY2hvc2VuVGltZS5zZXQoaW5pdGlhbFRpbWUpO1xuICAgICAgXG4gICAgICAvLyBTZXQgdXNlcklucHV0RmxhZyB0byBmYWxzZSB0byBhdm9pZCB2YWxpZGF0aW9uIGlzc3VlcyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIHRoaXMudXNlcklucHV0RmxhZy5zZXQoZmFsc2UpO1xuICAgICAgXG4gICAgICAvLyBQb3B1bGF0ZSBkcm9wZG93biBmaXJzdCB0byBjb21wdXRlIHRoZSBmaXJzdCBpbnRlcnZhbFxuICAgICAgdGhpcy5wb3B1bGF0ZURyb3Bkb3duKCk7XG4gICAgICBcbiAgICAgIC8vIE5vdyB2YWxpZGF0ZSB3aXRoIHRoZSBjb21wdXRlZCBmaXJzdCBpbnRlcnZhbFxuICAgICAgdGhpcy5pc0ludmFsaWQuc2V0KCF0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuY2hvc2VuVGltZSgpLnRyaW0oKSkpO1xuICAgICAgXG4gICAgICBsZXQgY2hvc2VuVGltZWRheWpzID0gdGhpcy5nZXRkYXlqcyh0aGlzLmNob3NlblRpbWUoKSk7XG4gICAgICAvLyBEZWZlciBlbWlzc2lvbiB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICAgICAgdmFsaWQ6ICF0aGlzLmlzSW52YWxpZCgpLFxuICAgICAgICAgIHRpbWU6IHRoaXMuY2hvc2VuVGltZSgpLFxuICAgICAgICAgIGVwb2NoOiBjaG9zZW5UaW1lZGF5anMudmFsdWVPZigpXG4gICAgICAgIH0pO1xuICAgICAgfSwgMCk7XG4gICAgICBcbiAgICAgIC8vIENhbGN1bGF0ZSBjbG9zZXN0IGludGVydmFsXG4gICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbCh0aGlzLmNob3NlblRpbWUoKSk7XG4gICAgICBcbiAgICAgIHRoaXMuX2lzSW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdpdmVuVGltZSgpKSB7XG4gICAgICAvLyBXaGVuIGdpdmVuVGltZSBpcyBwcmVzZW50LCB1c2UgdGhlIGdpdmVuIHRpbWUgYXMgdGhlIGluaXRpYWwgdmFsdWVcbiAgICAgIC8vIGJ1dCB0aGUgZHJvcGRvd24gd2lsbCBzdGFydCBmcm9tIDEyOjAwIEFNXG4gICAgICB0aGlzLmNob3NlblRpbWUuc2V0KGRheWpzLnR6KHRoaXMuZ2l2ZW5UaW1lKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCkpO1xuICAgICAgdGhpcy51c2VySW5wdXRGbGFnLnNldChmYWxzZSk7XG4gICAgICBcbiAgICAgIC8vIFBvcHVsYXRlIGRyb3Bkb3duIGZpcnN0IHRvIGNvbXB1dGUgdGhlIGZpcnN0IGludGVydmFsXG4gICAgICB0aGlzLnBvcHVsYXRlRHJvcGRvd24oKTtcbiAgICAgIFxuICAgICAgLy8gTm93IHZhbGlkYXRlIHdpdGggdGhlIGNvbXB1dGVkIGZpcnN0IGludGVydmFsXG4gICAgICB0aGlzLmlzSW52YWxpZC5zZXQoIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5jaG9zZW5UaW1lKCkudHJpbSgpKSk7XG4gICAgICBcbiAgICAgIGxldCBjaG9zZW5UaW1lZGF5anMgPSB0aGlzLmdldGRheWpzKHRoaXMuY2hvc2VuVGltZSgpKTtcbiAgICAgIC8vIERlZmVyIGVtaXNzaW9uIHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmVtaXRUaW1lKHtcbiAgICAgICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkKCksXG4gICAgICAgICAgdGltZTogdGhpcy5jaG9zZW5UaW1lKCksXG4gICAgICAgICAgZXBvY2g6IGNob3NlblRpbWVkYXlqcy52YWx1ZU9mKClcbiAgICAgICAgfSk7XG4gICAgICB9LCAwKTtcbiAgICAgIFxuICAgICAgLy8gQ2FsY3VsYXRlIGNsb3Nlc3QgaW50ZXJ2YWxcbiAgICAgIHRoaXMuY2FsY3VsYXRlQ2xvc2VzdEludGVydmFsKHRoaXMuY2hvc2VuVGltZSgpKTtcbiAgICAgIFxuICAgICAgdGhpcy5faXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWluVGltZSgpKSB7XG4gICAgICAvLyBVc2UgbWluIHRpbWUgZGlyZWN0bHkgLSB0aGlzIG1hdGNoZXMgb3JpZ2luYWwgYmVoYXZpb3JcbiAgICAgIHRoaXMuY2hvc2VuVGltZS5zZXQoZGF5anMudHoodGhpcy5taW5UaW1lKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCkpO1xuICAgICAgdGhpcy51c2VySW5wdXRGbGFnLnNldChmYWxzZSk7XG4gICAgICBcbiAgICAgIC8vIFBvcHVsYXRlIGRyb3Bkb3duIGZpcnN0IHRvIGNvbXB1dGUgdGhlIGZpcnN0IGludGVydmFsXG4gICAgICB0aGlzLnBvcHVsYXRlRHJvcGRvd24oKTtcbiAgICAgIFxuICAgICAgLy8gRm9yIG1pblRpbWUsIHZhbGlkYXRpb24gc2hvdWxkIG9ubHkgY2hlY2sgZm9ybWF0LCBub3QgdGltZSBjb21wYXJpc29uXG4gICAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIG9yaWdpbmFsIGxvZ2ljIHdoZXJlIG1pblRpbWUgYnlwYXNzZXMgdGltZSB2YWxpZGF0aW9uXG4gICAgICB0aGlzLmlzSW52YWxpZC5zZXQoIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5jaG9zZW5UaW1lKCkudHJpbSgpKSk7XG4gICAgICBcbiAgICAgIGxldCBjaG9zZW5UaW1lZGF5anMgPSB0aGlzLmdldGRheWpzKHRoaXMuY2hvc2VuVGltZSgpKTtcbiAgICAgIC8vIERlZmVyIGVtaXNzaW9uIHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmVtaXRUaW1lKHtcbiAgICAgICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkKCksXG4gICAgICAgICAgdGltZTogdGhpcy5jaG9zZW5UaW1lKCksXG4gICAgICAgICAgZXBvY2g6IGNob3NlblRpbWVkYXlqcy52YWx1ZU9mKClcbiAgICAgICAgfSk7XG4gICAgICB9LCAwKTtcbiAgICAgIFxuICAgICAgLy8gQ2FsY3VsYXRlIGNsb3Nlc3QgaW50ZXJ2YWxcbiAgICAgIHRoaXMuY2FsY3VsYXRlQ2xvc2VzdEludGVydmFsKHRoaXMuY2hvc2VuVGltZSgpKTtcbiAgICAgIFxuICAgICAgdGhpcy5faXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuXG4gIGVtaXRUaW1lKGRhdGE6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy50aW1lRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgLy8gZnVuY3Rpb24gdG8gZ2V0IGRheWpzIG9iamVjdCB3aGVuIHRpbWUgaXMgZ2l2ZW4gaW4gc3RyaW5nXG4gIGdldGRheWpzKHRpbWU6IHN0cmluZyA9ICcwMDowMCcpe1xuICAgIGlmKCF0aW1lIHx8IHR5cGVvZiB0aW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaW1lIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBsZXQgaG91cnM6IG51bWJlcjtcbiAgICBsZXQgbWludXRlczogbnVtYmVyO1xuXG4gICAgaWYodGhpcy5jbG9ja0Zvcm1hdCgpID09PSAyNCkge1xuICAgICAgaG91cnMgPSBwYXJzZUludCh0aW1lLnNwbGl0KCc6JylbMF0pO1xuICAgICAgbWludXRlcyA9IHBhcnNlSW50KHRpbWUuc3BsaXQoJzonKVsxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRpbWVQYXJ0cyA9IHRpbWUuc3BsaXQoJyAnKTtcbiAgICAgIGNvbnN0IEFNX1BNID0gdGltZVBhcnRzPy5bMV07XG4gICAgICBob3VycyA9ICBwYXJzZUludCh0aW1lUGFydHM/LlswXT8uc3BsaXQoJzonKT8uWzBdKTtcbiAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lUGFydHM/LlswXT8uc3BsaXQoJzonKT8uWzFdKTtcblxuICAgICAgaWYoQU1fUE0/LnRvVXBwZXJDYXNlKCkgPT09ICdQTScgJiYgaG91cnMgIT09IDEyKSB7XG4gICAgICAgIGhvdXJzICs9IDEyO1xuICAgICAgfSBlbHNlIGlmKEFNX1BNPy50b1VwcGVyQ2FzZSgpID09PSAnQU0nICYmIGhvdXJzID09PSAxMikge1xuICAgICAgICBob3VycyA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXNlIHRoZSBkYXRlIGZyb20gZGF0ZUFzRXBvY2ggYnV0IHNldCB0aGUgdGltZSB0byB0aGUgcGFyc2VkIGhvdXJzIGFuZCBtaW51dGVzXG4gICAgY29uc3QgYmFzZURhdGUgPSBkYXlqcy50eih0aGlzLmRhdGVBc0Vwb2NoKCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYmFzZURhdGUuaG91cihob3VycykubWludXRlKG1pbnV0ZXMpLnNlY29uZCgwKS5taWxsaXNlY29uZCgwKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLmRpc3BheVRvb2xUaXAgPSBmYWxzZTtcbiAgICB0aGlzLnVzZXJJbnB1dEZsYWcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9wZW5TdGF0dXMuc2V0KGZhbHNlKTtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyRGlyZWN0aXZlKSB0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUuZGVzdHJveU92ZXJsYXkoKTtcbiAgfVxuXG4gIC8vIHRvZ2dsZSB0aW1lcGlja2VyIGRyb3Bkb3duXG4gIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BheVRvb2xUaXAgPSB0cnVlO1xuICAgIHRoaXMub3BlblN0YXR1cy5zZXQodHJ1ZSk7XG4gIH1cblxuICBjaGVja1RpbWVWYWxpZGl0eSh0aW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBSRTEyID0gL14oKFswXVsxLTldfDFbMC0yXSk6KFswLTVdWzAtOV0pKCApPyhhbXxwbXxBTXxQTSkpJC9pO1xuICAgIGNvbnN0IFJFMjQgPSAvXihbMDFdWzAtOV18MlswLTNdKTpbMC01XVswLTldJC87XG4gICAgY29uc3QgUkUgPSB0aGlzLmNsb2NrRm9ybWF0KCkgPT09IDEyID8gUkUxMiA6IFJFMjQ7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgdGltZSBmb3JtYXQgaXMgdmFsaWQgZmlyc3RcbiAgICBpZiAoIXRpbWUubWF0Y2goUkUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUmVzdG9yZSBwcm9wZXIgdmFsaWRhdGlvbiBsb2dpY1xuICAgIGNvbnN0IHRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGltZSk7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIE9yaWdpbmFsIGxvZ2ljOiBpZiBtaW5UaW1lLCBnaXZlblRpbWUsIG9yIGZpcnN0SW50ZXJ2YWwgaXMgc3RhcnQgb2YgZGF5LCBvbmx5IGNoZWNrIGZvcm1hdFxuICAgIGlmIChcbiAgICAgIHRoaXMubWluVGltZSgpIHx8IFxuICAgICAgdGhpcy5naXZlblRpbWUoKSB8fFxuICAgICAgKHRoaXMuZmlyc3RJbnRlcnZhbCgpICYmXG4gICAgICBkYXlqcy50eih0aGlzLmZpcnN0SW50ZXJ2YWwoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KS52YWx1ZU9mKCkgPT09IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRheVwiKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KS52YWx1ZU9mKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICkge1xuICAgICAgLy8gT25seSBjaGVjayBmb3JtYXQgdmFsaWRhdGlvbiwgbm90IHRpbWUgY29tcGFyaXNvblxuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBhZ2FpbnN0IGN1cnJlbnQgdGltZSBmb3Igbm9ybWFsIGNhc2VzXG4gICAgICBjb25zdCBjdXJyZW50VGltZSA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICBjb25zdCB0aW1lRGlmZiA9IHRpbWVkYXlqcy5kaWZmKGN1cnJlbnRUaW1lLCBcIm1cIik7XG4gICAgICBmbGFnID0gdGltZURpZmYgPj0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhZztcbiAgfVxuXG4gIC8vIHVwZGF0ZSBjaG9zZW4gdGltZSBhcyBzb29uIGFzIHRoZSB1c2VyIGNsaWNrcyBvbiBhbiBpbnRlcnZhbFxuICBvblRpbWVTZWxlY3QodGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pc0ludmFsaWQuc2V0KCF0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRpbWUudHJpbSgpKSk7XG4gICAgaWYgKCF0aGlzLmlzSW52YWxpZCgpKSB7XG4gICAgICB0aGlzLmNob3NlblRpbWUuc2V0KHRpbWUpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGhpcy5jaG9zZW5UaW1lKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGltZSk7XG4gICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkKCksXG4gICAgICB0aW1lOiB0aW1lLFxuICAgICAgZXBvY2g6IHRpbWVkYXlqcy52YWx1ZU9mKCkgXG4gICAgfSk7XG4gICAgdGhpcy5vcGVuU3RhdHVzLnNldChmYWxzZSk7XG4gICAgaWYgKHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZSkgdGhpcy50aW1lcGlja2VyRGlyZWN0aXZlLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICAvLyBjaGVja3MgdmFsaWRpdHkgb2YgdGltZSBvbiBpbnB1dCBjaGFuZ2UgYW5kIGNhbGN1bGF0ZXMgdGhlIGNsb3Nlc3QgaW50ZXJ2YWxcbiAgb25UaW1lQ2hhbmdlKHRpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFNldCB1c2VyIGlucHV0IGZsYWcgdG8gcHJldmVudCBlZmZlY3RzIGZyb20gb3ZlcnJpZGluZ1xuICAgIHRoaXMudXNlcklucHV0RmxhZy5zZXQodHJ1ZSk7XG4gICAgXG4gICAgLy8gVXBkYXRlIHRoZSBjaG9zZW5UaW1lIHNpZ25hbFxuICAgIHRoaXMuY2hvc2VuVGltZS5zZXQodGltZSk7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGltZS50cmltKCkpO1xuICAgIHRoaXMuaXNJbnZhbGlkLnNldCghaXNWYWxpZCk7XG5cbiAgICAvLyBDbGVhciB1c2VyIGlucHV0IGZsYWcgYWZ0ZXIgYSBkZWxheSB0byBhbGxvdyBlZmZlY3RzIHRvIHdvcmsgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXNlcklucHV0RmxhZy5zZXQoZmFsc2UpO1xuICAgIH0sIDEwMDApOyAvLyAxIHNlY29uZCBkZWxheVxuXG4gICAgaWYgKCF0aGlzLmlzSW52YWxpZCgpKSB7XG4gICAgICB0aGlzLm9wZW5TdGF0dXMuc2V0KGZhbHNlKTtcbiAgICAgIGlmICh0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUpIHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZS5kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGltZSk7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGltZSk7XG4gICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkKCksXG4gICAgICB0aW1lOiB0aW1lLFxuICAgICAgZXBvY2g6IHRpbWVkYXlqcy52YWx1ZU9mKCkgXG4gICAgfSk7XG4gIH1cblxuICBjYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHJvdW5kZWRFcG9jaDogbnVtYmVyO1xuICAgIC8vIENvbnZlcnRpbmcgdGltZSBhbmQgZGF0ZSB0byBhIGRheWpzIG9iamVjdCBcbiAgICBjb25zdCBjaG9zZW5EYXRlID0gZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7IC8vIDA1LTAxLTIwMjRcbiAgICBjb25zdCBwYXJzZWRUaW1lV2l0aERhdGUgPSBkYXlqcy50eihgJHtjaG9zZW5EYXRlfSAke3RpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAvLyBDb252ZXJ0aW5nIGRheWpzIG9iamVjdCB0byBlcG9jaFxuICAgIGNvbnN0IGNob3NlblRpbWVFcG9jaCA9IHBhcnNlZFRpbWVXaXRoRGF0ZS52YWx1ZU9mKCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCgpIC0gKGRheWpzLnR6KGNob3NlblRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5taW51dGUoKSAlIHRoaXMuaW50ZXJ2YWwoKSk7XG5cbiAgICBpZiAodGhpcy5taW5UaW1lKCkgJiYgIXRoaXMuZ2l2ZW5UaW1lKCkpIHtcbiAgICAgIHRoaXMuaXNIaWdobGlnaHRlZC5zZXQoMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJvdW5kZWRFcG9jaCA9IG9mZnNldCA+PSB0aGlzLmludGVydmFsKCkgLyAyID8gKGRheWpzLnR6KGNob3NlblRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCkgLSBvZmZzZXQsIFwibVwiKSkudmFsdWVPZigpIDogKGRheWpzLnR6KGNob3NlblRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQoIG9mZnNldCwgXCJtXCIpKS52YWx1ZU9mKCk7XG5cbiAgICAvLyBmaW5kaW5nIHRoZSBpbmRleCBvZiBlbGVtZW50IHRoYXQgbmVlZHMgdG8gYmUgaGlnaGxpZ2h0ZWRcbiAgICBpZiAoIGNob3NlblRpbWVFcG9jaCA+IGRheWpzLnR6KHRoaXMuZGF0ZUFzRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRheVwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCksIFwibVwiKS52YWx1ZU9mKCkpIHtcbiAgICAgIHRoaXMuaXNIaWdobGlnaHRlZC5zZXQodGhpcy50aW1lSW50ZXJ2YWxzKCkubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJvdW5kZWRFcG9jaGRheWpzID0gZGF5anMudHoocm91bmRlZEVwb2NoLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgdGhpcy5pc0hpZ2hsaWdodGVkLnNldCh0aGlzLnRpbWVJbnRlcnZhbHMoKS5maW5kSW5kZXgoaW50ZXJ2YWwgPT4ge1xuICAgICAgICBjb25zdCBpbnRlcnZhbE9iaiA9IGRheWpzLnR6KGAke2Nob3NlbkRhdGV9ICR7aW50ZXJ2YWx9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgICAgcmV0dXJuIGludGVydmFsT2JqLmlzU2FtZShyb3VuZGVkRXBvY2hkYXlqcyk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cblxuICAvLyBwb3B1bGF0ZXMgdGhlIGRyb3Bkb3duIGFjY29yZGluZyB0byB0aGUgZmlyc3QgaW50ZXJ2YWwgcmVjZWl2ZWRcbiAgcG9wdWxhdGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbHMuc2V0KFtdKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIGVmZmVjdGl2ZSBmaXJzdCBpbnRlcnZhbFxuICAgIGxldCBlZmZlY3RpdmVGaXJzdEludGVydmFsID0gdGhpcy5maXJzdEludGVydmFsKCk7XG5cbiAgICAvLyBpZiBwaWNrZXIgaXMgdXNlZCBhcyBhbiBpbmRpdmlkdWFsIGNvbXBvbmVudFxuICAgIGlmICghZWZmZWN0aXZlRmlyc3RJbnRlcnZhbCkge1xuICAgICAgLy8gZmlyc3RJbnRlcnZhbCBpcyBpbml0aWFsaXNlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgdGltZVxuICAgICAgLy8gaWYgdGhlIGRhdGUgaXMgc2FtZSBhcyB0aGUgY3VycmVudCBkYXRlXG4gICAgICBpZiAoZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIikgPT09IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSAmJiAhdGhpcy5taW5UaW1lKCkpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCgpIC0gKGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkubWludXRlKCkgJSB0aGlzLmludGVydmFsKCkpO1xuICAgICAgICBlZmZlY3RpdmVGaXJzdEludGVydmFsID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfVxuICAgICAgLy8gaWYgbWluaW11bSB0aW1lIHRvIHNob3cgaXMgcHJvdmlkZWRcbiAgICAgIGVsc2UgaWYodGhpcy5taW5UaW1lKCkpe1xuICAgICAgICBjb25zdCBtaW5UaW1lRGF5anMgPSBkYXlqcy50eih0aGlzLm1pblRpbWUoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCgpIC0gKG1pblRpbWVEYXlqcy5taW51dGUoKSAlIHRoaXMuaW50ZXJ2YWwoKSk7XG4gICAgICAgIGVmZmVjdGl2ZUZpcnN0SW50ZXJ2YWwgPSBtaW5UaW1lRGF5anMuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICAgIC8vIGVsc2UgdGhlIGZpcnN0SW50ZXJ2YWwgaXMgaW5pdGlhbGlzZWQgYXMgc3RhcnQgb2YgZGF5XG4gICAgICBlbHNlIHtcbiAgICAgICAgZWZmZWN0aXZlRmlyc3RJbnRlcnZhbCA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRheVwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYodGhpcy5naXZlblRpbWUoKSl7XG4gICAgICAvLyBXaGVuIGdpdmVuVGltZSBpcyBwcmVzZW50LCBhbHdheXMgc3RhcnQgZnJvbSAxMjowMCBBTSAoc3RhcnQgb2YgZGF5KVxuICAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB0aW1lIGhhcyBwYXNzZWQgb3Igbm90XG4gICAgICBlZmZlY3RpdmVGaXJzdEludGVydmFsID0gZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTtcbiAgICAgIHRoaXMuZ2l2ZW5UaW1lRmxhZy5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSBjb21wdXRlZCBmaXJzdCBpbnRlcnZhbCBmb3IgbGF0ZXIgdXNlXG4gICAgdGhpcy5jb21wdXRlZEZpcnN0SW50ZXJ2YWwgPSBlZmZlY3RpdmVGaXJzdEludGVydmFsO1xuXG4gICAgY29uc3QgZGF0ZUFzU3RyaW5nID0gZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xuICAgIGNvbnN0IGludGVydmFsQXNTdHJpbmcgPSBkYXlqcy50eihlZmZlY3RpdmVGaXJzdEludGVydmFsLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgIGxldCBzdGFydCA9IGRheWpzLnR6KGAke2RhdGVBc1N0cmluZ30gJHtpbnRlcnZhbEFzU3RyaW5nfWAsIGBERC1NTS1ZWVlZICR7dGhpcy50aW1lRm9ybWF0fWAsIHRoaXMudGltZXpvbmUoKSk7XG4gICAgY29uc3QgZW5kID0gZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKCdkJyk7XG4gICAgXG4gICAgd2hpbGUgKHN0YXJ0LnZhbHVlT2YoKSA8IGVuZC52YWx1ZU9mKCkpIHtcbiAgICAgIHRoaXMudGltZUludGVydmFscy51cGRhdGUoaW50ZXJ2YWxzID0+IFsuLi5pbnRlcnZhbHMsIHN0YXJ0LmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpXSk7XG4gICAgICBzdGFydCA9IHN0YXJ0LmFkZCh0aGlzLmludGVydmFsKCksIFwibVwiKTtcbiAgICB9XG5cbiAgICAvLyBORVc6IEhhbmRsZSBlbmQtb2YtZGF5IGNhc2UgLSBpZiBmaXJzdEludGVydmFsIGlzIGF0IG9yIHZlcnkgY2xvc2UgdG8gZW5kIG9mIGRheVxuICAgIC8vIGFuZCB3ZSdyZSBvbiB0aGUgc2FtZSBkYXRlLCBzaG93IG9ubHkgMTE6NTkgUE1cbiAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuZGF0ZUFzRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIik7XG4gICAgY29uc3QgZmlyc3RJbnRlcnZhbERheWpzID0gZGF5anMudHooZWZmZWN0aXZlRmlyc3RJbnRlcnZhbCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICBcbiAgICAvLyBDaGVjayBpZiBmaXJzdEludGVydmFsIGlzIGF0IG9yIHZlcnkgY2xvc2UgdG8gZW5kIG9mIGRheSAod2l0aGluIDEgbWludXRlKVxuICAgIGNvbnN0IGlzQXRFbmRPZkRheSA9IGZpcnN0SW50ZXJ2YWxEYXlqcy5pc1NhbWUoZW5kT2ZEYXksICdkYXknKSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW50ZXJ2YWxEYXlqcy5kaWZmKGVuZE9mRGF5LCAnbWludXRlJykgPj0gLTE7XG4gICAgXG4gICAgaWYgKGlzQXRFbmRPZkRheSB8fCB0aGlzLnRpbWVJbnRlcnZhbHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIENsZWFyIGV4aXN0aW5nIGludGVydmFscyBhbmQgYWRkIG9ubHkgMTE6NTkgUE1cbiAgICAgIHRoaXMudGltZUludGVydmFscy5zZXQoW10pO1xuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxzLnVwZGF0ZShpbnRlcnZhbHMgPT4gWy4uLmludGVydmFscywgZW5kT2ZEYXkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCldKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50b29sdGlwRGlyZWN0aXZlKSB0aGlzLnRvb2x0aXBEaXJlY3RpdmUuaGlkZVRvb2xUaXAoKTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwidGltZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0KCkgfVwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZSc6IGRpc2FibGUoKX1cIj5cbiAgPGlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtuZ01vZGVsXT1cImNob3NlblRpbWUoKVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UaW1lQ2hhbmdlKCRldmVudClcIlxuICAgIFtuZ0NsYXNzXT1cInsgaW52YWxpZDogaXNJbnZhbGlkKCkgfHwgIXJhbmdlVmFsaWRpdHkoKSB9XCJcbiAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBpbnB1dFdpZHRoKCkgfVwiXG4gICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigpXCJcbiAgICBtaXNUb29sVGlwXG4gICAgW3Nob3dUb29sVGlwXT1cInNob3dUb29sdGlwKCkgJiYgKGlzSW52YWxpZCgpIHx8ICFyYW5nZVZhbGlkaXR5KCkpICYmIGRpc3BheVRvb2xUaXBcIlxuICAgIFt0ZXh0XT1cIidJbnZhbGlkIFRpbWUnXCJcbiAgICBbcG9zaXRpb25dPVwiJ3RvcCdcIlxuICAgIFtzaG93T25Ib3Zlcl09XCJmYWxzZVwiXG4gICAgI2lucHV0XG4gICAgY2RrT3ZlcmxheU9yaWdpblxuICAgIGNsYXNzPVwiaDdcIlxuICAvPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25Db250YWluZXIgbGliVGltZXBpY2tlciBbb3JpZ2luRWxdPVwiaW5wdXRcIiBbb3BlblN0YXR1c109XCJvcGVuU3RhdHVzKClcIiAoc3RhdHVzRW1pdHRlcik9XCJjbG9zZURyb3Bkb3duKClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwib3BlblN0YXR1cygpXCIgY2xhc3M9XCJ0aW1lcGlja2VyLWRyb3Bkb3duXCIgW25nU3R5bGVdPVwieyB3aWR0aDogZHJvcGRvd25XaWR0aCgpIHx8IGlucHV0V2lkdGgoKSB9XCI+XG4gICAgICA8dWwgI2Ryb3Bkb3duPlxuICAgICAgICA8bGkgI3RpbWVJbnRlcnZhbCAoY2xpY2spPVwib25UaW1lU2VsZWN0KGludGVydmFsKVwiICpuZ0Zvcj1cImxldCBpbnRlcnZhbCBvZiB0aW1lSW50ZXJ2YWxzKCk7IGluZGV4IGFzIGlcIiBbbmdDbGFzc109XCJ7IGhpZ2hsaWdodDogaSA9PT0gaXNIaWdobGlnaHRlZCgpIH1cIj5cbiAgICAgICAgICB7eyBpbnRlcnZhbCB9fVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpYy11aS1jaGVjay0yNCBzZWxlY3RlZC1pY29uXCIgKm5nSWY9XCJpbnRlcnZhbCA9PT0gY2hvc2VuVGltZSgpXCI+PC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
480
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90aW1lcGlja2VyL3RpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXBpY2tlci90aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQThELFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVksTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuTCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0lDZXBELDBCQUFrRjs7OztJQUZwRixpQ0FBeUo7SUFBdkksNk5BQVMsZ0NBQXNCLEtBQUM7SUFDaEQsWUFDQTtJQUFBLDhGQUE0RTtJQUM5RSxpQkFBSzs7Ozs7SUFIbUcscUZBQWdEO0lBQ3RKLGVBQ0E7SUFEQSw0Q0FDQTtJQUEyQyxjQUErQjtJQUEvQiwwREFBK0I7OztJQUg5RSxBQURGLDhCQUE2RyxrQkFDN0Y7SUFDWixzRkFBeUo7SUFLN0osQUFERSxpQkFBSyxFQUNEOzs7SUFQZ0QsbUdBQXNEO0lBRWhDLGVBQW9CO0lBQXBCLGdEQUFvQjs7O0lBRmhHLGtGQUE2Rzs7O0lBQXZHLDBDQUFrQjs7QURUNUIsS0FBSyxDQUFDLE1BQU0sQ0FB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aUJBQU07OztZQTVCNkQsQUFBakMsbUVBQWdDLHVEQUFtQztZQUdqRyxjQUF3QjtZQVN4QixBQURBLEFBREEsQUFEQSxBQUhBLEFBREEsQUFGQSwwQ0FBd0IsaUZBRWdDLDBEQUNyQixvR0FHZ0Qsd0JBQzVELG1CQUNMLHNCQUNHO1lBTXVCLGVBQWtCO1lBQUMsQUFBbkIsbUNBQWtCLGdDQUE0Qjs7O2lGREVqRixtQkFBbUI7Y0FML0IsU0FBUzsyQkFDRSxnQkFBZ0I7b0JBd0NZLEtBQUs7a0JBQTFDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNKLG1CQUFtQjtrQkFBbEQsU0FBUzttQkFBQyxtQkFBbUI7WUFDRCxnQkFBZ0I7a0JBQTVDLFNBQVM7bUJBQUMsZ0JBQWdCO1lBR08sZ0JBQWdCO2tCQUFqRCxZQUFZO21CQUFDLGNBQWM7O2tGQXpDakIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCB1bnRyYWNrZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWUgfSBmcm9tIFwiLi90aW1lLm5hbWVzcGFjZVwiO1xuaW1wb3J0IHsgVGltZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gXCIuL3RpbWVwaWNrZXIuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBUb29sVGlwRGlyZWN0aXZlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9vbHRpcFwiO1xuXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCdcblxuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRpbWVwaWNrZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90aW1lcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIENvbnZlcnQgdG8gc2lnbmFscyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjaGFuZ2UgZGV0ZWN0aW9uXG4gIGN1cnJUaW1lID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBjaG9zZW5UaW1lID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBvcGVuU3RhdHVzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNIaWdobGlnaHRlZCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBpc0ludmFsaWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICB0aW1lSW50ZXJ2YWxzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHNob3VsZFNjcm9sbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHVzZXJJbnB1dEZsYWcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBnaXZlblRpbWVGbGFnID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICAvLyBTaWduYWwtYmFzZWQgaW5wdXRzIHdpdGggYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICBjbG9ja0Zvcm1hdCA9IGlucHV0PG51bWJlcj4oMTIpO1xuICB0aW1lRm9ybWF0ITogc3RyaW5nO1xuICBcbiAgdGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KFwiQXNpYS9Lb2xrYXRhXCIpO1xuICBoZWlnaHQgPSBpbnB1dDxzdHJpbmc+KFwibWF4LWNvbnRlbnRcIik7XG4gIGlucHV0V2lkdGggPSBpbnB1dDxzdHJpbmc+KFwiMTAwcHhcIik7XG4gIGRyb3Bkb3duV2lkdGggPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGludGVydmFsID0gaW5wdXQ8bnVtYmVyPigxNSk7XG4gIGRhdGVBc0Vwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCBcIkFzaWEvS29sa2F0YVwiKS52YWx1ZU9mKCkpO1xuICBmaXJzdEludGVydmFsID0gaW5wdXQ8bnVtYmVyPigpO1xuICByYW5nZVZhbGlkaXR5ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHNob3dUb29sdGlwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRpc3BheVRvb2xUaXA6IGJvb2xlYW4gPSB0aGlzLnNob3dUb29sdGlwKCk7XG4gIGdpdmVuVGltZSA9IGlucHV0PG51bWJlcj4oKTtcbiAgbWluVGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdHJpZ2dlckNoYW5nZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBcbiAgLy8gSW50ZXJuYWwgc3RhdGUgZm9yIGNvbXB1dGVkIGZpcnN0IGludGVydmFsXG4gIHByaXZhdGUgY29tcHV0ZWRGaXJzdEludGVydmFsOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgXG4gIC8vIFNpZ25hbC1iYXNlZCBvdXRwdXQgd2l0aCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIHRpbWVFbWl0dGVyID0gb3V0cHV0PElUaW1lPigpO1xuICBAVmlld0NoaWxkKFwiaW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoVGltZXBpY2tlckRpcmVjdGl2ZSkgdGltZXBpY2tlckRpcmVjdGl2ZTogVGltZXBpY2tlckRpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZChUb29sVGlwRGlyZWN0aXZlKSB0b29sdGlwRGlyZWN0aXZlOiBUb29sVGlwRGlyZWN0aXZlO1xuXG4gIC8vIGdldHMgYWxsIHRoZSBsaSBlbGVtZW50cyBmcm9tIHRoZSBkcm9wZG93biBhbmQgc2Nyb2xscyB0byB0aGUgaGlnaGxpZ2h0ZWQgZWxlbWVudFxuICBAVmlld0NoaWxkcmVuKFwidGltZUludGVydmFsXCIpIHNldCB0aW1lSW50ZXJ2YWxSZWZzKGludGVydmFscykge1xuICAgIGludGVydmFscy5mb3JFYWNoKGludGVydmFsID0+IHtcbiAgICAgIGlmIChpbnRlcnZhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdFswXSA9PT0gXCJoaWdobGlnaHRcIikge1xuICAgICAgICBjb25zdCBoaWdobGlnaHRlZCA9IGludGVydmFsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gaGlnaGxpZ2h0ZWQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJjZW50ZXJcIiB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcigpe1xuICAgIC8vIEVmZmVjdCB0byBoYW5kbGUgdHJpZ2dlckNoYW5nZSB0b2dnbGVzIChleHBsaWNpdCByZXNldCByZXF1ZXN0cyBmcm9tIHBhcmVudClcbiAgICAvLyBUaGlzIGVmZmVjdCBPTkxZIHJlc2V0cyBjaG9zZW5UaW1lIHdoZW4gdHJpZ2dlckNoYW5nZSBpcyB0b2dnbGVkXG4gICAgLy8gSXQgZG9lcyBOT1Qgd2F0Y2ggZmlyc3RJbnRlcnZhbCB0byBhdm9pZCByZXNldHRpbmcgdGltZSB3aGVuIGRyb3Bkb3duIGludGVydmFscyBhcmUgdXBkYXRlZFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0cmlnZ2VyVmFsdWUgPSB0aGlzLnRyaWdnZXJDaGFuZ2UoKTtcbiAgICAgIGNvbnN0IGZpcnN0SW50ZXJ2YWxWYWx1ZSA9IHVudHJhY2tlZCgoKSA9PiB0aGlzLmZpcnN0SW50ZXJ2YWwoKSk7IC8vIFVzZSB1bnRyYWNrZWQgdG8gbm90IGNyZWF0ZSBkZXBlbmRlbmN5XG4gICAgICBcbiAgICAgIC8vIE9ubHkgcmVzZXQgd2hlbiB0cmlnZ2VyQ2hhbmdlIGlzIHRvZ2dsZWQgQU5EIGZpcnN0SW50ZXJ2YWwgaXMgcHJvdmlkZWRcbiAgICAgIC8vIFRoaXMgaGFuZGxlcyBjYXNlcyB3aGVyZSBwYXJlbnQgZXhwbGljaXRseSB3YW50cyB0byByZXNldCB0aGUgdGltZSAoZS5nLiwgY29uZmxpY3QgcmVzb2x1dGlvbilcbiAgICAgIGlmICghdW50cmFja2VkKCgpID0+IHRoaXMudXNlcklucHV0RmxhZygpKSAmJiBmaXJzdEludGVydmFsVmFsdWUgJiYgIXRoaXMuX2lzSW5pdGlhbGl6aW5nKSB7XG4gICAgICAgIGNvbnN0IG5ld1RpbWUgPSBkYXlqcy50eihmaXJzdEludGVydmFsVmFsdWUsIHVudHJhY2tlZCgoKSA9PiB0aGlzLnRpbWV6b25lKCkpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgICAgXG4gICAgICAgIC8vIE9ubHkgdXBkYXRlIGlmIHRoZSB0aW1lIGFjdHVhbGx5IGNoYW5nZWRcbiAgICAgICAgaWYgKHVudHJhY2tlZCgoKSA9PiB0aGlzLmNob3NlblRpbWUoKSkgIT09IG5ld1RpbWUpIHtcbiAgICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBkZWZlciBzaWduYWwgd3JpdGVzIGFuZCBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXNcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hvc2VuVGltZS5zZXQobmV3VGltZSk7XG4gICAgICAgICAgICB0aGlzLmlzSW52YWxpZC5zZXQoIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkobmV3VGltZS50cmltKCkpKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gUmVwb3B1bGF0ZSBkcm9wZG93biB3aGVuIHRpbWUgaXMgcmVzZXRcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVEcm9wZG93bigpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBSZWNhbGN1bGF0ZSBjbG9zZXN0IGludGVydmFsXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbChuZXdUaW1lKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gRW1pdCB0aGUgdXBkYXRlZCB0aW1lXG4gICAgICAgICAgICBjb25zdCB0aW1lZGF5anMgPSB0aGlzLmdldGRheWpzKG5ld1RpbWUpO1xuICAgICAgICAgICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICAgICAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQoKSxcbiAgICAgICAgICAgICAgdGltZTogbmV3VGltZSxcbiAgICAgICAgICAgICAgZXBvY2g6IHRpbWVkYXlqcy52YWx1ZU9mKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgLy8gU2VwYXJhdGUgZWZmZWN0IHRvIGhhbmRsZSBmaXJzdEludGVydmFsIGNoYW5nZXMgKG9ubHkgdXBkYXRlIGRyb3Bkb3duLCBOT1QgY2hvc2VuVGltZSlcbiAgICAvLyBUaGlzIGFsbG93cyB1cGRhdGluZyBkcm9wZG93biBpbnRlcnZhbHMgd2l0aG91dCByZXNldHRpbmcgdGhlIHNlbGVjdGVkIHRpbWVcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZmlyc3RJbnRlcnZhbFZhbHVlID0gdGhpcy5maXJzdEludGVydmFsKCk7XG4gICAgICBcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGRyb3Bkb3duIHdoZW4gZmlyc3RJbnRlcnZhbCBjaGFuZ2VzLCBkb24ndCByZXNldCBjaG9zZW5UaW1lXG4gICAgICAvLyBUaGlzIGlzIGNydWNpYWw6IHdoZW4gdGltZXJhbmdlcGlja2VyIHVwZGF0ZXMgZmlyc3RJbnRlcnZhbCB0byBmaXggZHJvcGRvd24gb3B0aW9ucyxcbiAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gcmVzZXQgdGhlIHVzZXIncyBzZWxlY3RlZCB0aW1lXG4gICAgICBpZiAoIXVudHJhY2tlZCgoKSA9PiB0aGlzLnVzZXJJbnB1dEZsYWcoKSkgJiYgZmlyc3RJbnRlcnZhbFZhbHVlICYmICF0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgICAvLyBKdXN0IHJlcG9wdWxhdGUgZHJvcGRvd24gd2l0aCBuZXcgaW50ZXJ2YWxzLCBwcmVzZXJ2ZSBjdXJyZW50IGNob3NlblRpbWVcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZURyb3Bkb3duKCk7XG4gICAgICAgICAgLy8gUmVjYWxjdWxhdGUgY2xvc2VzdCBpbnRlcnZhbCBmb3IgY3VycmVudCBjaG9zZW5UaW1lIChwcmVzZXJ2ZSBpdClcbiAgICAgICAgICBpZiAodW50cmFja2VkKCgpID0+IHRoaXMuY2hvc2VuVGltZSgpKSkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodW50cmFja2VkKCgpID0+IHRoaXMuY2hvc2VuVGltZSgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbml0aWFsaXppbmcgPSB0cnVlO1xuICAgIC8vIEVuc3VyZSB0aW1lRm9ybWF0IGlzIHNldCBiZWZvcmUgaW5pdGlhbGl6YXRpb25cbiAgICB0aGlzLnRpbWVGb3JtYXQgPSB0aGlzLmNsb2NrRm9ybWF0KCkgPT09IDEyID8gXCJoaDptbSBhXCIgOiBcIkhIOm1tXCI7XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSBjaG9zZW5UaW1lIC0gdXNlIGZpcnN0SW50ZXJ2YWwgZnJvbSBwYXJlbnQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY2FsY3VsYXRlXG4gICAgaWYgKCF0aGlzLmdpdmVuVGltZSgpICYmICF0aGlzLm1pblRpbWUoKSkge1xuICAgICAgbGV0IGluaXRpYWxUaW1lO1xuICAgICAgXG4gICAgICAvLyBJZiBmaXJzdEludGVydmFsIGlzIHByb3ZpZGVkIGJ5IHBhcmVudCAodGltZXJhbmdlcGlja2VyKSwgdXNlIGl0XG4gICAgICBpZiAodGhpcy5maXJzdEludGVydmFsKCkpIHtcbiAgICAgICAgaW5pdGlhbFRpbWUgPSBkYXlqcy50eih0aGlzLmZpcnN0SW50ZXJ2YWwoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEdldCBjdXJyZW50IHRpbWUgYW5kIHJvdW5kIHRvIG5lYXJlc3QgaW50ZXJ2YWwgdXNpbmcgb3JpZ2luYWwgbG9naWNcbiAgICAgICAgY29uc3Qgbm93ID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLmludGVydmFsKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBub3cubWludXRlKCk7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGludGVydmFsIC0gKG1pbnV0ZXMgJSBpbnRlcnZhbCk7XG4gICAgICAgIFxuICAgICAgICAvLyBSb3VuZCB0byBuZXh0IGludGVydmFsIGlmIHdlJ3JlIHBhc3QgaGFsZndheSBwb2ludFxuICAgICAgICBjb25zdCByb3VuZGVkVGltZSA9IG9mZnNldCA+PSBpbnRlcnZhbCAvIDIgXG4gICAgICAgICAgPyBub3cuYWRkKG9mZnNldCwgXCJtXCIpLnNlY29uZCgwKS5taWxsaXNlY29uZCgwKVxuICAgICAgICAgIDogbm93LnN1YnRyYWN0KGludGVydmFsIC0gb2Zmc2V0LCBcIm1cIikuc2Vjb25kKDApLm1pbGxpc2Vjb25kKDApO1xuICAgICAgICBcbiAgICAgICAgaW5pdGlhbFRpbWUgPSByb3VuZGVkVGltZS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5jaG9zZW5UaW1lLnNldChpbml0aWFsVGltZSk7XG4gICAgICBcbiAgICAgIC8vIFNldCB1c2VySW5wdXRGbGFnIHRvIGZhbHNlIHRvIGF2b2lkIHZhbGlkYXRpb24gaXNzdWVzIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgdGhpcy51c2VySW5wdXRGbGFnLnNldChmYWxzZSk7XG4gICAgICBcbiAgICAgIC8vIFBvcHVsYXRlIGRyb3Bkb3duIGZpcnN0IHRvIGNvbXB1dGUgdGhlIGZpcnN0IGludGVydmFsXG4gICAgICB0aGlzLnBvcHVsYXRlRHJvcGRvd24oKTtcbiAgICAgIFxuICAgICAgLy8gTm93IHZhbGlkYXRlIHdpdGggdGhlIGNvbXB1dGVkIGZpcnN0IGludGVydmFsXG4gICAgICB0aGlzLmlzSW52YWxpZC5zZXQoIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5jaG9zZW5UaW1lKCkudHJpbSgpKSk7XG4gICAgICBcbiAgICAgIGxldCBjaG9zZW5UaW1lZGF5anMgPSB0aGlzLmdldGRheWpzKHRoaXMuY2hvc2VuVGltZSgpKTtcbiAgICAgIC8vIERlZmVyIGVtaXNzaW9uIHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmVtaXRUaW1lKHtcbiAgICAgICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkKCksXG4gICAgICAgICAgdGltZTogdGhpcy5jaG9zZW5UaW1lKCksXG4gICAgICAgICAgZXBvY2g6IGNob3NlblRpbWVkYXlqcy52YWx1ZU9mKClcbiAgICAgICAgfSk7XG4gICAgICB9LCAwKTtcbiAgICAgIFxuICAgICAgLy8gQ2FsY3VsYXRlIGNsb3Nlc3QgaW50ZXJ2YWxcbiAgICAgIHRoaXMuY2FsY3VsYXRlQ2xvc2VzdEludGVydmFsKHRoaXMuY2hvc2VuVGltZSgpKTtcbiAgICAgIFxuICAgICAgdGhpcy5faXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2l2ZW5UaW1lKCkpIHtcbiAgICAgIC8vIFdoZW4gZ2l2ZW5UaW1lIGlzIHByZXNlbnQsIHVzZSB0aGUgZ2l2ZW4gdGltZSBhcyB0aGUgaW5pdGlhbCB2YWx1ZVxuICAgICAgLy8gYnV0IHRoZSBkcm9wZG93biB3aWxsIHN0YXJ0IGZyb20gMTI6MDAgQU1cbiAgICAgIHRoaXMuY2hvc2VuVGltZS5zZXQoZGF5anMudHoodGhpcy5naXZlblRpbWUoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSk7XG4gICAgICB0aGlzLnVzZXJJbnB1dEZsYWcuc2V0KGZhbHNlKTtcbiAgICAgIFxuICAgICAgLy8gUG9wdWxhdGUgZHJvcGRvd24gZmlyc3QgdG8gY29tcHV0ZSB0aGUgZmlyc3QgaW50ZXJ2YWxcbiAgICAgIHRoaXMucG9wdWxhdGVEcm9wZG93bigpO1xuICAgICAgXG4gICAgICAvLyBOb3cgdmFsaWRhdGUgd2l0aCB0aGUgY29tcHV0ZWQgZmlyc3QgaW50ZXJ2YWxcbiAgICAgIHRoaXMuaXNJbnZhbGlkLnNldCghdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmNob3NlblRpbWUoKS50cmltKCkpKTtcbiAgICAgIFxuICAgICAgbGV0IGNob3NlblRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGhpcy5jaG9zZW5UaW1lKCkpO1xuICAgICAgLy8gRGVmZXIgZW1pc3Npb24gdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQoKSxcbiAgICAgICAgICB0aW1lOiB0aGlzLmNob3NlblRpbWUoKSxcbiAgICAgICAgICBlcG9jaDogY2hvc2VuVGltZWRheWpzLnZhbHVlT2YoKVxuICAgICAgICB9KTtcbiAgICAgIH0sIDApO1xuICAgICAgXG4gICAgICAvLyBDYWxjdWxhdGUgY2xvc2VzdCBpbnRlcnZhbFxuICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGhpcy5jaG9zZW5UaW1lKCkpO1xuICAgICAgXG4gICAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5taW5UaW1lKCkpIHtcbiAgICAgIC8vIFVzZSBtaW4gdGltZSBkaXJlY3RseSAtIHRoaXMgbWF0Y2hlcyBvcmlnaW5hbCBiZWhhdmlvclxuICAgICAgdGhpcy5jaG9zZW5UaW1lLnNldChkYXlqcy50eih0aGlzLm1pblRpbWUoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSk7XG4gICAgICB0aGlzLnVzZXJJbnB1dEZsYWcuc2V0KGZhbHNlKTtcbiAgICAgIFxuICAgICAgLy8gUG9wdWxhdGUgZHJvcGRvd24gZmlyc3QgdG8gY29tcHV0ZSB0aGUgZmlyc3QgaW50ZXJ2YWxcbiAgICAgIHRoaXMucG9wdWxhdGVEcm9wZG93bigpO1xuICAgICAgXG4gICAgICAvLyBGb3IgbWluVGltZSwgdmFsaWRhdGlvbiBzaG91bGQgb25seSBjaGVjayBmb3JtYXQsIG5vdCB0aW1lIGNvbXBhcmlzb25cbiAgICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgbG9naWMgd2hlcmUgbWluVGltZSBieXBhc3NlcyB0aW1lIHZhbGlkYXRpb25cbiAgICAgIHRoaXMuaXNJbnZhbGlkLnNldCghdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmNob3NlblRpbWUoKS50cmltKCkpKTtcbiAgICAgIFxuICAgICAgbGV0IGNob3NlblRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGhpcy5jaG9zZW5UaW1lKCkpO1xuICAgICAgLy8gRGVmZXIgZW1pc3Npb24gdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQoKSxcbiAgICAgICAgICB0aW1lOiB0aGlzLmNob3NlblRpbWUoKSxcbiAgICAgICAgICBlcG9jaDogY2hvc2VuVGltZWRheWpzLnZhbHVlT2YoKVxuICAgICAgICB9KTtcbiAgICAgIH0sIDApO1xuICAgICAgXG4gICAgICAvLyBDYWxjdWxhdGUgY2xvc2VzdCBpbnRlcnZhbFxuICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGhpcy5jaG9zZW5UaW1lKCkpO1xuICAgICAgXG4gICAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG5cbiAgZW1pdFRpbWUoZGF0YTogSVRpbWUpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVFbWl0dGVyLmVtaXQoZGF0YSk7XG4gIH1cblxuICAvLyBmdW5jdGlvbiB0byBnZXQgZGF5anMgb2JqZWN0IHdoZW4gdGltZSBpcyBnaXZlbiBpbiBzdHJpbmdcbiAgZ2V0ZGF5anModGltZTogc3RyaW5nID0gJzAwOjAwJyl7XG4gICAgaWYoIXRpbWUgfHwgdHlwZW9mIHRpbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RpbWUgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIH1cblxuICAgIGxldCBob3VyczogbnVtYmVyO1xuICAgIGxldCBtaW51dGVzOiBudW1iZXI7XG5cbiAgICBpZih0aGlzLmNsb2NrRm9ybWF0KCkgPT09IDI0KSB7XG4gICAgICBob3VycyA9IHBhcnNlSW50KHRpbWUuc3BsaXQoJzonKVswXSk7XG4gICAgICBtaW51dGVzID0gcGFyc2VJbnQodGltZS5zcGxpdCgnOicpWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGltZVBhcnRzID0gdGltZS5zcGxpdCgnICcpO1xuICAgICAgY29uc3QgQU1fUE0gPSB0aW1lUGFydHM/LlsxXTtcbiAgICAgIGhvdXJzID0gIHBhcnNlSW50KHRpbWVQYXJ0cz8uWzBdPy5zcGxpdCgnOicpPy5bMF0pO1xuICAgICAgbWludXRlcyA9IHBhcnNlSW50KHRpbWVQYXJ0cz8uWzBdPy5zcGxpdCgnOicpPy5bMV0pO1xuXG4gICAgICBpZihBTV9QTT8udG9VcHBlckNhc2UoKSA9PT0gJ1BNJyAmJiBob3VycyAhPT0gMTIpIHtcbiAgICAgICAgaG91cnMgKz0gMTI7XG4gICAgICB9IGVsc2UgaWYoQU1fUE0/LnRvVXBwZXJDYXNlKCkgPT09ICdBTScgJiYgaG91cnMgPT09IDEyKSB7XG4gICAgICAgIGhvdXJzID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIGRhdGUgZnJvbSBkYXRlQXNFcG9jaCBidXQgc2V0IHRoZSB0aW1lIHRvIHRoZSBwYXJzZWQgaG91cnMgYW5kIG1pbnV0ZXNcbiAgICBjb25zdCBiYXNlRGF0ZSA9IGRheWpzLnR6KHRoaXMuZGF0ZUFzRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICBjb25zdCByZXN1bHQgPSBiYXNlRGF0ZS5ob3VyKGhvdXJzKS5taW51dGUobWludXRlcykuc2Vjb25kKDApLm1pbGxpc2Vjb25kKDApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBjbG9zZURyb3Bkb3duKCkge1xuICAgIHRoaXMuZGlzcGF5VG9vbFRpcCA9IGZhbHNlO1xuICAgIHRoaXMudXNlcklucHV0RmxhZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMub3BlblN0YXR1cy5zZXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUpIHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZS5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgLy8gdG9nZ2xlIHRpbWVwaWNrZXIgZHJvcGRvd25cbiAgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGF5VG9vbFRpcCA9IHRydWU7XG4gICAgdGhpcy5vcGVuU3RhdHVzLnNldCh0cnVlKTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFJFMTIgPSAvXigoWzBdWzEtOV18MVswLTJdKTooWzAtNV1bMC05XSkoICk/KGFtfHBtfEFNfFBNKSkkL2k7XG4gICAgY29uc3QgUkUyNCA9IC9eKFswMV1bMC05XXwyWzAtM10pOlswLTVdWzAtOV0kLztcbiAgICBjb25zdCBSRSA9IHRoaXMuY2xvY2tGb3JtYXQoKSA9PT0gMTIgPyBSRTEyIDogUkUyNDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSB0aW1lIGZvcm1hdCBpcyB2YWxpZCBmaXJzdFxuICAgIGlmICghdGltZS5tYXRjaChSRSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBSZXN0b3JlIHByb3BlciB2YWxpZGF0aW9uIGxvZ2ljXG4gICAgY29uc3QgdGltZWRheWpzID0gdGhpcy5nZXRkYXlqcyh0aW1lKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gT3JpZ2luYWwgbG9naWM6IGlmIG1pblRpbWUsIGdpdmVuVGltZSwgb3IgZmlyc3RJbnRlcnZhbCBpcyBzdGFydCBvZiBkYXksIG9ubHkgY2hlY2sgZm9ybWF0XG4gICAgaWYgKFxuICAgICAgdGhpcy5taW5UaW1lKCkgfHwgXG4gICAgICB0aGlzLmdpdmVuVGltZSgpIHx8XG4gICAgICAodGhpcy5maXJzdEludGVydmFsKCkgJiZcbiAgICAgIGRheWpzLnR6KHRoaXMuZmlyc3RJbnRlcnZhbCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLnZhbHVlT2YoKSA9PT0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZGF5XCIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLnZhbHVlT2YoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgKSB7XG4gICAgICAvLyBPbmx5IGNoZWNrIGZvcm1hdCB2YWxpZGF0aW9uLCBub3QgdGltZSBjb21wYXJpc29uXG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENoZWNrIGFnYWluc3QgY3VycmVudCB0aW1lIGZvciBub3JtYWwgY2FzZXNcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgIGNvbnN0IHRpbWVEaWZmID0gdGltZWRheWpzLmRpZmYoY3VycmVudFRpbWUsIFwibVwiKTtcbiAgICAgIGZsYWcgPSB0aW1lRGlmZiA+PSAwO1xuICAgIH1cblxuICAgIHJldHVybiBmbGFnO1xuICB9XG5cbiAgLy8gdXBkYXRlIGNob3NlbiB0aW1lIGFzIHNvb24gYXMgdGhlIHVzZXIgY2xpY2tzIG9uIGFuIGludGVydmFsXG4gIG9uVGltZVNlbGVjdCh0aW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW52YWxpZC5zZXQoIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGltZS50cmltKCkpKTtcbiAgICBpZiAoIXRoaXMuaXNJbnZhbGlkKCkpIHtcbiAgICAgIHRoaXMuY2hvc2VuVGltZS5zZXQodGltZSk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbCh0aGlzLmNob3NlblRpbWUoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZWRheWpzID0gdGhpcy5nZXRkYXlqcyh0aW1lKTtcbiAgICB0aGlzLmVtaXRUaW1lKHtcbiAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQoKSxcbiAgICAgIHRpbWU6IHRpbWUsXG4gICAgICBlcG9jaDogdGltZWRheWpzLnZhbHVlT2YoKSBcbiAgICB9KTtcbiAgICB0aGlzLm9wZW5TdGF0dXMuc2V0KGZhbHNlKTtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyRGlyZWN0aXZlKSB0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUuZGVzdHJveU92ZXJsYXkoKTtcbiAgfVxuXG4gIC8vIGNoZWNrcyB2YWxpZGl0eSBvZiB0aW1lIG9uIGlucHV0IGNoYW5nZSBhbmQgY2FsY3VsYXRlcyB0aGUgY2xvc2VzdCBpbnRlcnZhbFxuICBvblRpbWVDaGFuZ2UodGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gU2V0IHVzZXIgaW5wdXQgZmxhZyB0byBwcmV2ZW50IGVmZmVjdHMgZnJvbSBvdmVycmlkaW5nXG4gICAgdGhpcy51c2VySW5wdXRGbGFnLnNldCh0cnVlKTtcbiAgICBcbiAgICAvLyBVcGRhdGUgdGhlIGNob3NlblRpbWUgc2lnbmFsXG4gICAgdGhpcy5jaG9zZW5UaW1lLnNldCh0aW1lKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aW1lLnRyaW0oKSk7XG4gICAgdGhpcy5pc0ludmFsaWQuc2V0KCFpc1ZhbGlkKTtcblxuICAgIC8vIENsZWFyIHVzZXIgaW5wdXQgZmxhZyBhZnRlciBhIGRlbGF5IHRvIGFsbG93IGVmZmVjdHMgdG8gd29yayBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy51c2VySW5wdXRGbGFnLnNldChmYWxzZSk7XG4gICAgfSwgMTAwMCk7IC8vIDEgc2Vjb25kIGRlbGF5XG5cbiAgICBpZiAoIXRoaXMuaXNJbnZhbGlkKCkpIHtcbiAgICAgIHRoaXMub3BlblN0YXR1cy5zZXQoZmFsc2UpO1xuICAgICAgaWYgKHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZSkgdGhpcy50aW1lcGlja2VyRGlyZWN0aXZlLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbCh0aW1lKTtcbiAgICB9XG4gICAgY29uc3QgdGltZWRheWpzID0gdGhpcy5nZXRkYXlqcyh0aW1lKTtcbiAgICB0aGlzLmVtaXRUaW1lKHtcbiAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQoKSxcbiAgICAgIHRpbWU6IHRpbWUsXG4gICAgICBlcG9jaDogdGltZWRheWpzLnZhbHVlT2YoKSBcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbCh0aW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgcm91bmRlZEVwb2NoOiBudW1iZXI7XG4gICAgLy8gQ29udmVydGluZyB0aW1lIGFuZCBkYXRlIHRvIGEgZGF5anMgb2JqZWN0IFxuICAgIGNvbnN0IGNob3NlbkRhdGUgPSBkYXlqcy50eih0aGlzLmRhdGVBc0Vwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTsgLy8gMDUtMDEtMjAyNFxuICAgIGNvbnN0IHBhcnNlZFRpbWVXaXRoRGF0ZSA9IGRheWpzLnR6KGAke2Nob3NlbkRhdGV9ICR7dGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgIC8vIENvbnZlcnRpbmcgZGF5anMgb2JqZWN0IHRvIGVwb2NoXG4gICAgY29uc3QgY2hvc2VuVGltZUVwb2NoID0gcGFyc2VkVGltZVdpdGhEYXRlLnZhbHVlT2YoKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAoZGF5anMudHooY2hvc2VuVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLm1pbnV0ZSgpICUgdGhpcy5pbnRlcnZhbCgpKTtcblxuICAgIGlmICh0aGlzLm1pblRpbWUoKSAmJiAhdGhpcy5naXZlblRpbWUoKSkge1xuICAgICAgdGhpcy5pc0hpZ2hsaWdodGVkLnNldCgwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcm91bmRlZEVwb2NoID0gb2Zmc2V0ID49IHRoaXMuaW50ZXJ2YWwoKSAvIDIgPyAoZGF5anMudHooY2hvc2VuVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSAtIG9mZnNldCwgXCJtXCIpKS52YWx1ZU9mKCkgOiAoZGF5anMudHooY2hvc2VuVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmFkZCggb2Zmc2V0LCBcIm1cIikpLnZhbHVlT2YoKTtcblxuICAgIC8vIGZpbmRpbmcgdGhlIGluZGV4IG9mIGVsZW1lbnQgdGhhdCBuZWVkcyB0byBiZSBoaWdobGlnaHRlZFxuICAgIGlmICggY2hvc2VuVGltZUVwb2NoID4gZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZGF5XCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKSkge1xuICAgICAgdGhpcy5pc0hpZ2hsaWdodGVkLnNldCh0aGlzLnRpbWVJbnRlcnZhbHMoKS5sZW5ndGggLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgcm91bmRlZEVwb2NoZGF5anMgPSBkYXlqcy50eihyb3VuZGVkRXBvY2gsIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICB0aGlzLmlzSGlnaGxpZ2h0ZWQuc2V0KHRoaXMudGltZUludGVydmFscygpLmZpbmRJbmRleChpbnRlcnZhbCA9PiB7XG4gICAgICAgIGNvbnN0IGludGVydmFsT2JqID0gZGF5anMudHooYCR7Y2hvc2VuRGF0ZX0gJHtpbnRlcnZhbH1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgICByZXR1cm4gaW50ZXJ2YWxPYmouaXNTYW1lKHJvdW5kZWRFcG9jaGRheWpzKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vIHBvcHVsYXRlcyB0aGUgZHJvcGRvd24gYWNjb3JkaW5nIHRvIHRoZSBmaXJzdCBpbnRlcnZhbCByZWNlaXZlZFxuICBwb3B1bGF0ZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMudGltZUludGVydmFscy5zZXQoW10pO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgZWZmZWN0aXZlIGZpcnN0IGludGVydmFsXG4gICAgbGV0IGVmZmVjdGl2ZUZpcnN0SW50ZXJ2YWwgPSB0aGlzLmZpcnN0SW50ZXJ2YWwoKTtcblxuICAgIC8vIGlmIHBpY2tlciBpcyB1c2VkIGFzIGFuIGluZGl2aWR1YWwgY29tcG9uZW50XG4gICAgaWYgKCFlZmZlY3RpdmVGaXJzdEludGVydmFsKSB7XG4gICAgICAvLyBmaXJzdEludGVydmFsIGlzIGluaXRpYWxpc2VkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCB0aW1lXG4gICAgICAvLyBpZiB0aGUgZGF0ZSBpcyBzYW1lIGFzIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgIGlmIChkYXlqcy50eih0aGlzLmRhdGVBc0Vwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSA9PT0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpICYmICF0aGlzLm1pblRpbWUoKSkge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAoZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5taW51dGUoKSAlIHRoaXMuaW50ZXJ2YWwoKSk7XG4gICAgICAgIGVmZmVjdGl2ZUZpcnN0SW50ZXJ2YWwgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgICAvLyBpZiBtaW5pbXVtIHRpbWUgdG8gc2hvdyBpcyBwcm92aWRlZFxuICAgICAgZWxzZSBpZih0aGlzLm1pblRpbWUoKSl7XG4gICAgICAgIGNvbnN0IG1pblRpbWVEYXlqcyA9IGRheWpzLnR6KHRoaXMubWluVGltZSgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAobWluVGltZURheWpzLm1pbnV0ZSgpICUgdGhpcy5pbnRlcnZhbCgpKTtcbiAgICAgICAgZWZmZWN0aXZlRmlyc3RJbnRlcnZhbCA9IG1pblRpbWVEYXlqcy5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgfVxuICAgICAgLy8gZWxzZSB0aGUgZmlyc3RJbnRlcnZhbCBpcyBpbml0aWFsaXNlZCBhcyBzdGFydCBvZiBkYXlcbiAgICAgIGVsc2Uge1xuICAgICAgICBlZmZlY3RpdmVGaXJzdEludGVydmFsID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZGF5XCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuVGltZSgpKXtcbiAgICAgIC8vIFdoZW4gZ2l2ZW5UaW1lIGlzIHByZXNlbnQsIGFsd2F5cyBzdGFydCBmcm9tIDEyOjAwIEFNIChzdGFydCBvZiBkYXkpXG4gICAgICAvLyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHRpbWUgaGFzIHBhc3NlZCBvciBub3RcbiAgICAgIGVmZmVjdGl2ZUZpcnN0SW50ZXJ2YWwgPSBkYXlqcy50eih0aGlzLmRhdGVBc0Vwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICAgICAgdGhpcy5naXZlblRpbWVGbGFnLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIGNvbXB1dGVkIGZpcnN0IGludGVydmFsIGZvciBsYXRlciB1c2VcbiAgICB0aGlzLmNvbXB1dGVkRmlyc3RJbnRlcnZhbCA9IGVmZmVjdGl2ZUZpcnN0SW50ZXJ2YWw7XG5cbiAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBkYXlqcy50eih0aGlzLmRhdGVBc0Vwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KCdERC1NTS1ZWVlZJyk7XG4gICAgY29uc3QgaW50ZXJ2YWxBc1N0cmluZyA9IGRheWpzLnR6KGVmZmVjdGl2ZUZpcnN0SW50ZXJ2YWwsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgbGV0IHN0YXJ0ID0gZGF5anMudHooYCR7ZGF0ZUFzU3RyaW5nfSAke2ludGVydmFsQXNTdHJpbmd9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICBjb25zdCBlbmQgPSBkYXlqcy50eih0aGlzLmRhdGVBc0Vwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoJ2QnKTtcbiAgICBcbiAgICB3aGlsZSAoc3RhcnQudmFsdWVPZigpIDwgZW5kLnZhbHVlT2YoKSkge1xuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxzLnVwZGF0ZShpbnRlcnZhbHMgPT4gWy4uLmludGVydmFscywgc3RhcnQuZm9ybWF0KHRoaXMudGltZUZvcm1hdCldKTtcbiAgICAgIHN0YXJ0ID0gc3RhcnQuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpO1xuICAgIH1cblxuICAgIC8vIE5FVzogSGFuZGxlIGVuZC1vZi1kYXkgY2FzZSAtIGlmIGZpcnN0SW50ZXJ2YWwgaXMgYXQgb3IgdmVyeSBjbG9zZSB0byBlbmQgb2YgZGF5XG4gICAgLy8gYW5kIHdlJ3JlIG9uIHRoZSBzYW1lIGRhdGUsIHNob3cgb25seSAxMTo1OSBQTVxuICAgIGNvbnN0IGVuZE9mRGF5ID0gZGF5anMudHoodGhpcy5kYXRlQXNFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKTtcbiAgICBjb25zdCBmaXJzdEludGVydmFsRGF5anMgPSBkYXlqcy50eihlZmZlY3RpdmVGaXJzdEludGVydmFsLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGZpcnN0SW50ZXJ2YWwgaXMgYXQgb3IgdmVyeSBjbG9zZSB0byBlbmQgb2YgZGF5ICh3aXRoaW4gMSBtaW51dGUpXG4gICAgY29uc3QgaXNBdEVuZE9mRGF5ID0gZmlyc3RJbnRlcnZhbERheWpzLmlzU2FtZShlbmRPZkRheSwgJ2RheScpICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbnRlcnZhbERheWpzLmRpZmYoZW5kT2ZEYXksICdtaW51dGUnKSA+PSAtMTtcbiAgICBcbiAgICBpZiAoaXNBdEVuZE9mRGF5IHx8IHRoaXMudGltZUludGVydmFscygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgaW50ZXJ2YWxzIGFuZCBhZGQgb25seSAxMTo1OSBQTVxuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxzLnNldChbXSk7XG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbHMudXBkYXRlKGludGVydmFscyA9PiBbLi4uaW50ZXJ2YWxzLCBlbmRPZkRheS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KV0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBEaXJlY3RpdmUpIHRoaXMudG9vbHRpcERpcmVjdGl2ZS5oaWRlVG9vbFRpcCgpO1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJ0aW1lcGlja2VyLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQoKSB9XCIgW25nQ2xhc3NdPVwieydkaXNhYmxlJzogZGlzYWJsZSgpfVwiPlxuICA8aW5wdXRcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW25nTW9kZWxdPVwiY2hvc2VuVGltZSgpXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvblRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyBpbnZhbGlkOiBpc0ludmFsaWQoKSB8fCAhcmFuZ2VWYWxpZGl0eSgpIH1cIlxuICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGlucHV0V2lkdGgoKSB9XCJcbiAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKClcIlxuICAgIG1pc1Rvb2xUaXBcbiAgICBbc2hvd1Rvb2xUaXBdPVwic2hvd1Rvb2x0aXAoKSAmJiAoaXNJbnZhbGlkKCkgfHwgIXJhbmdlVmFsaWRpdHkoKSkgJiYgZGlzcGF5VG9vbFRpcFwiXG4gICAgW3RleHRdPVwiJ0ludmFsaWQgVGltZSdcIlxuICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXG4gICAgW3Nob3dPbkhvdmVyXT1cImZhbHNlXCJcbiAgICAjaW5wdXRcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgY2xhc3M9XCJoN1wiXG4gIC8+XG5cbiAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRhaW5lciBsaWJUaW1lcGlja2VyIFtvcmlnaW5FbF09XCJpbnB1dFwiIFtvcGVuU3RhdHVzXT1cIm9wZW5TdGF0dXMoKVwiIChzdGF0dXNFbWl0dGVyKT1cImNsb3NlRHJvcGRvd24oKVwiPlxuICAgIDxkaXYgKm5nSWY9XCJvcGVuU3RhdHVzKClcIiBjbGFzcz1cInRpbWVwaWNrZXItZHJvcGRvd25cIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiBkcm9wZG93bldpZHRoKCkgfHwgaW5wdXRXaWR0aCgpIH1cIj5cbiAgICAgIDx1bCAjZHJvcGRvd24+XG4gICAgICAgIDxsaSAjdGltZUludGVydmFsIChjbGljayk9XCJvblRpbWVTZWxlY3QoaW50ZXJ2YWwpXCIgKm5nRm9yPVwibGV0IGludGVydmFsIG9mIHRpbWVJbnRlcnZhbHMoKTsgaW5kZXggYXMgaVwiIFtuZ0NsYXNzXT1cInsgaGlnaGxpZ2h0OiBpID09PSBpc0hpZ2hsaWdodGVkKCkgfVwiPlxuICAgICAgICAgIHt7IGludGVydmFsIH19XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljLXVpLWNoZWNrLTI0IHNlbGVjdGVkLWljb25cIiAqbmdJZj1cImludGVydmFsID09PSBjaG9zZW5UaW1lKClcIj48L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -151,15 +151,16 @@ export class TimeRangePickerComponent {
151
151
  // Calculate start time epoch for comparison
152
152
  const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
153
153
  const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
154
- // Auto-adjust end time if start time >= end time (for both same and different dates)
155
- if (startTimeEpoch >= endTimeEpoch) {
154
+ // Auto-adjust end time if start time > end time (for both same and different dates)
155
+ // This ensures end time is always after start time
156
+ if (startTimeEpoch > endTimeEpoch) {
156
157
  // Calculate new end time as start time + interval
157
158
  let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), "m").valueOf();
158
159
  // If same date, check if the new end time would go beyond end of day
159
160
  if (this.getStartDate() === this.getEndDate()) {
160
161
  const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf("d").valueOf();
161
162
  if (newEndTimeEpoch > endOfDay) {
162
- // NEW: Set end time to 11:59 PM (end of day) when start time is last interval
163
+ // Set end time to 11:59 PM (end of day) when start time is last interval
163
164
  newEndTimeEpoch = endOfDay;
164
165
  }
165
166
  }
@@ -174,26 +175,37 @@ export class TimeRangePickerComponent {
174
175
  start: this._firstIntervals().start,
175
176
  end: newEndTimeEpoch
176
177
  });
178
+ // Trigger change to force end timepicker to update its display with the new end time
179
+ // This is necessary when we reset the end time due to conflict
180
+ this.triggerChange.update(value => !value);
177
181
  }
178
- // NEW: Update end timepicker's firstInterval when both timepickers are on the same day
179
- // BUT only if there was a conflict (start >= end) or if we need to adjust for end of day
182
+ // Update end timepicker's firstInterval when both timepickers are on the same day
183
+ // ALWAYS update to ensure dropdown starts from next interval after start time
184
+ // This fixes the bug where selecting an earlier start time doesn't update end picker intervals
185
+ // NOTE: We only update firstInterval (dropdown options), NOT the selected end time value
186
+ // The timepicker component now handles firstInterval changes separately and won't reset chosenTime
180
187
  if (this.getStartDate() === this.getEndDate()) {
181
- // Only update firstInterval if there was a conflict or if we're at end of day
182
- if (startTimeEpoch >= endTimeEpoch) {
188
+ // Only update firstInterval if there's no conflict (start < end)
189
+ // If there's a conflict, it's already handled above and firstInterval was updated there
190
+ if (startTimeEpoch < endTimeEpoch) {
183
191
  // Calculate the next interval after the selected start time
184
192
  let nextIntervalAfterStart = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), "m").valueOf();
185
- // NEW: If next interval would go beyond end of day, use end of day instead
193
+ // If next interval would go beyond end of day, use end of day instead
186
194
  const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf("d").valueOf();
187
195
  if (nextIntervalAfterStart > endOfDay) {
188
196
  nextIntervalAfterStart = endOfDay;
189
197
  }
190
198
  // Update the firstIntervals to make end timepicker dropdown start from next interval after start time
199
+ // This ensures users can always select times between the new start time and the current end time
200
+ // The timepicker component will update the dropdown but preserve the selected end time value
191
201
  this._firstIntervals.set({
192
202
  start: this._firstIntervals().start,
193
203
  end: nextIntervalAfterStart
194
204
  });
205
+ // NOTE: We don't call triggerChange here because we only want to update the dropdown,
206
+ // not reset the selected end time. The timepicker's separate effect for firstInterval
207
+ // will handle updating the dropdown without resetting chosenTime.
195
208
  }
196
- // If start < end, don't update firstIntervals - let the end timepicker keep its current dropdown
197
209
  }
198
210
  // Always validate and emit the time range
199
211
  const validity = this.checkTimeValidity(this.startTime().time.trim(), this.startDateEpoch()) &&
@@ -206,12 +218,6 @@ export class TimeRangePickerComponent {
206
218
  startEpoch: dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),
207
219
  endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()
208
220
  });
209
- // FIXED: Only trigger change when there was a conflict (start >= end) that required end time update
210
- const currentStartTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
211
- const currentEndTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
212
- if (currentStartTimeEpoch >= currentEndTimeEpoch) {
213
- this.triggerChange.update(value => !value);
214
- }
215
221
  }
216
222
  endPickerHandler(time) {
217
223
  this.endTime.set(time);
@@ -275,4 +281,4 @@ export class TimeRangePickerComponent {
275
281
  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 ></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 ></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"] }]
276
282
  }], () => [], null); })();
277
283
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TimeRangePickerComponent, { className: "TimeRangePickerComponent" }); })();
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUNXakMseUJBQWlDO0lBQUEsaUJBQUM7SUFBQSxpQkFBSTs7QURUeEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBT3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFnQ25DLDZFQUE2RTtJQUNyRSxhQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLFdBQVc7UUFDakIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7UUFoREEsb0NBQW9DO1FBQ3BDLGVBQVUsR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELFdBQU0sR0FBRyxLQUFLLENBQVMsTUFBTSxDQUFDLENBQUM7UUFDL0IsYUFBUSxHQUFHLEtBQUssQ0FBUyxjQUFjLENBQUMsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLEtBQUssQ0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0UsaUJBQVksR0FBRyxLQUFLLENBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLG1CQUFjLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUN0RCxpQkFBWSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM3QixnQkFBVyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNuQyxjQUFTLEdBQUcsS0FBSyxDQUFhLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLFFBQUcsR0FBRyxLQUFLLENBQVMsTUFBTSxDQUFDLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXZDLHdCQUF3QjtRQUN4QixxQkFBZ0IsR0FBRyxNQUFNLEVBQWMsQ0FBQztRQUV4QyxvQ0FBb0M7UUFDcEMsY0FBUyxHQUFHLE1BQU0sQ0FBZSxJQUFJLENBQUMsQ0FBQztRQUN2QyxZQUFPLEdBQUcsTUFBTSxDQUFlLElBQUksQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsTUFBTSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzlCLG9CQUFlLEdBQUcsTUFBTSxDQUFpQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0Usb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFaEMsMkNBQTJDO1FBQzNDLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0RBQXNEO1FBb0I3Ryx1Q0FBdUM7SUFDekMsQ0FBQztJQUVELFFBQVE7UUFDTixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7WUFDakIsS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEYsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7U0FDakUsQ0FBQyxDQUFDO1FBRUgsNkNBQTZDO1FBQzdDLElBQUksWUFBWSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUU1Qyx5RUFBeUU7UUFDekUsSUFBSSxZQUFZLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkMsWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFN0YsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO2dCQUN2QixLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUs7Z0JBQzNCLEdBQUcsRUFBRSxZQUFZO2FBQ2xCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNmLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUUsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELDZDQUE2QztJQUNyQyxpQkFBaUI7UUFDdkIsSUFBSSwyQkFBbUMsQ0FBQztRQUN4QyxJQUFJLHlCQUFpQyxDQUFDO1FBRXRDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFakUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDL0MsSUFBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDLENBQUM7Z0JBQzVDLElBQUcsV0FBVyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUM7b0JBQ3JILDJCQUEyQixHQUFHLFdBQVcsQ0FBQztvQkFDMUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNsRyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1RiwwRkFBMEY7b0JBQzFGLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEcsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFHLFdBQVcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDO29CQUNySCwyQkFBMkIsR0FBRyxXQUFXLENBQUM7b0JBQzFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEcsQ0FBQztxQkFBTSxDQUFDO29CQUNOLDJCQUEyQixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDNUYseUJBQXlCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwRyxDQUFDO1lBQ0gsQ0FBQztRQUNELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDLENBQUM7Z0JBQzlDLDJCQUEyQixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEcseUJBQXlCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0Ryx5QkFBeUIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEcsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLDJCQUEyQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUcsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN2Qix5QkFBeUIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFHLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixhQUFhLENBQUMsSUFBZ0I7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBVztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNySixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRS9JLHFGQUFxRjtRQUNyRixJQUFJLGNBQWMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNuQyxrREFBa0Q7WUFDbEQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVwRyxxRUFBcUU7WUFDckUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkYsSUFBSSxlQUFlLEdBQUcsUUFBUSxFQUFFLENBQUM7b0JBQy9CLDhFQUE4RTtvQkFDOUUsZUFBZSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFFRCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ2YsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdFLEtBQUssRUFBRSxlQUFlO2FBQ3ZCLENBQUMsQ0FBQztZQUVILHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLO2dCQUNuQyxHQUFHLEVBQUUsZUFBZTthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsdUZBQXVGO1FBQ3ZGLHlGQUF5RjtRQUN6RixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUM5Qyw4RUFBOEU7WUFDOUUsSUFBSSxjQUFjLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ25DLDREQUE0RDtnQkFDNUQsSUFBSSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUUzRywyRUFBMkU7Z0JBQzNFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkYsSUFBSSxzQkFBc0IsR0FBRyxRQUFRLEVBQUUsQ0FBQztvQkFDdEMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDO2dCQUNwQyxDQUFDO2dCQUVELHNHQUFzRztnQkFDdEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7b0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSztvQkFDbkMsR0FBRyxFQUFFLHNCQUFzQjtpQkFDNUIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELGlHQUFpRztRQUNuRyxDQUFDO1FBRUQsMENBQTBDO1FBQzFDLE1BQU0sUUFBUSxHQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakIsS0FBSyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSTtZQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLElBQUk7WUFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLElBQUksRUFBRSxFQUFFLGNBQWMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ3pJLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtTQUNwSSxDQUFDLENBQUM7UUFFSCxvR0FBb0c7UUFDcEcsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVKLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV0SixJQUFJLHFCQUFxQixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBVztRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFM0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLElBQUk7WUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUcsQ0FBQyxJQUFJO1lBQzdCLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN6SSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7U0FDcEksQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVksRUFBRSxJQUFZO1FBQzFDLE1BQU0sSUFBSSxHQUFHLHNEQUFzRCxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLGlDQUFpQyxDQUFDO1FBQy9DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRW5ELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZKLElBQUksSUFBSSxHQUFZLEtBQUssQ0FBQztRQUUxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoSixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN2RyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWlCO1FBQy9CLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7eUhBdlJVLHdCQUF3QjtvRUFBeEIsd0JBQXdCO1lDYm5DLEFBREYsOEJBQTRGLHdCQWN6RjtZQVJDLCtIQUFlLDhCQUEwQixJQUFDO1lBUTNDLGlCQUFpQjtZQUNsQixxRUFBaUM7WUFDakMseUNBZUM7WUFWQywrSEFBZSw0QkFBd0IsSUFBQztZQVc1QyxBQURHLGlCQUFpQixFQUNkOztZQWhDNkIsaUZBQXdEO1lBRXZGLGNBQTZCO1lBVzdCLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBRkEsQUFEQSxBQURBLEFBREEsK0NBQTZCLDRCQUNOLHFDQUNTLDZDQUNRLDRCQUVqQix3QkFDSixnQ0FDUSxzQ0FDTSxrQ0FDSixtQ0FDQyxtQ0FDQTtZQUU1QixjQUEyQjtZQUEzQixnREFBMkI7WUFFN0IsY0FBNkI7WUFhN0IsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBRkEsQUFEQSxBQURBLEFBREEsK0NBQTZCLDRCQUNOLG1DQUNPLDJDQUNRLHNDQUVMLDRCQUNWLHdCQUNKLGdDQUNRLHNDQUNNLGtDQUNKLGlDQUNELHNDQUNLLGlDQUNMOzs7aUZEaEJuQix3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSxxQkFBcUI7O2tGQUlwQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElUaW1lUmFuZ2UsIElUaW1lLCBURGlyZWN0aW9uIH0gZnJvbSBcIi4vdGltZXJhbmdlLm5hbWVzcGFjZVwiO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcblxuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQodGltZXpvbmUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRpbWVyYW5nZXBpY2tlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbFwiLCAvLyBDb3JyZWN0ZWQgZmlsZSBuYW1lXG4gIHN0eWxlVXJsczogW1wiLi90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVJhbmdlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gLS0tIElucHV0IFNpZ25hbHMgKHJlYWQtb25seSkgLS0tXG4gIGlucHV0V2lkdGggPSBpbnB1dDxzdHJpbmc+KFwiMTAwcHhcIik7XG4gIGRyb3Bkb3duV2lkdGggPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGhlaWdodCA9IGlucHV0PHN0cmluZz4oXCI0NnB4XCIpO1xuICB0aW1lem9uZSA9IGlucHV0PHN0cmluZz4oXCJBc2lhL0tvbGthdGFcIik7XG4gIHN0YXJ0RGF0ZUVwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSk7XG4gIGVuZERhdGVFcG9jaCA9IGlucHV0PG51bWJlcj4oZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCkpO1xuICBnaXZlblN0YXJ0VGltZSA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgZ2l2ZW5FbmRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjbG9ja0Zvcm1hdCA9IGlucHV0PG51bWJlcj4oMTIpO1xuICBpbnRlcnZhbCA9IGlucHV0PG51bWJlcj4oMTUpO1xuICBzaG93VG9vbHRpcCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBkaXJlY3Rpb24gPSBpbnB1dDxURGlyZWN0aW9uPigncm93Jyk7XG4gIGdhcCA9IGlucHV0PHN0cmluZz4oJzFyZW0nKTtcbiAgZGlzYWJsZVN0YXJ0VGltZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZGlzYWJsZUVuZFRpbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyAtLS0gT3V0cHV0IFNpZ25hbCAtLS1cbiAgdGltZVJhbmdlRW1pdHRlciA9IG91dHB1dDxJVGltZVJhbmdlPigpO1xuXG4gIC8vIC0tLSBJbnRlcm5hbCBXcml0YWJsZSBTaWduYWxzIC0tLVxuICBzdGFydFRpbWUgPSBzaWduYWw8SVRpbWUgfCBudWxsPihudWxsKTtcbiAgZW5kVGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICByYW5nZVZhbGlkaXR5ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICB0cmlnZ2VyQ2hhbmdlID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIF9maXJzdEludGVydmFscyA9IHNpZ25hbDx7IHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyIH0+KHsgc3RhcnQ6IDAsIGVuZDogMCB9KTtcbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcblxuICAvLyAtLS0gQ29tcHV0ZWQgU2lnbmFscyAoRGVyaXZlZCBTdGF0ZSkgLS0tXG4gIGZpcnN0SW50ZXJ2YWxzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKSk7IC8vIEEgcHVibGljIGNvbXB1dGVkIHNpZ25hbCB0byBhY2Nlc3MgdGhlIHdyaXRhYmxlIG9uZVxuICBcbiAgLy8gSGVscGVyIG1ldGhvZHMgaW5zdGVhZCBvZiBjb21wdXRlZCBzaWduYWxzIHRvIGF2b2lkIHNpZ25hbCB3cml0ZSBjb25mbGljdHNcbiAgcHJpdmF0ZSBnZXRUaW1lRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2xvY2tGb3JtYXQoKSA9PT0gMTIgPyBcImhoOm1tIGFcIiA6IFwiSEg6bW1cIjtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRTdGFydERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0RW5kRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIHByaXZhdGUgZ2V0Q3VyckRhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpO1xuICB9XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBTaW1wbGUgY29uc3RydWN0b3IgLSBubyBlZmZlY3RzIGhlcmVcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudCBvbmNlXG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb21wb25lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbml0aWFsaXppbmcgPSB0cnVlO1xuICAgIFxuICAgIHRoaXMuc2V0Rmlyc3RJbnRlcnZhbHMoKTtcbiAgICBjb25zdCBmaXJzdEludGVydmFscyA9IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCk7XG5cbiAgICB0aGlzLnN0YXJ0VGltZS5zZXQoe1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBkYXlqcy50eihmaXJzdEludGVydmFscy5zdGFydCwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQodGhpcy5nZXRUaW1lRm9ybWF0KCkpLFxuICAgICAgZXBvY2g6IGRheWpzLnR6KGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICAgIFxuICAgIC8vIEVuc3VyZSBlbmQgdGltZSBpcyBhbHdheXMgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIGxldCBlbmRUaW1lRXBvY2ggPSBmaXJzdEludGVydmFscy5lbmQ7XG4gICAgY29uc3Qgc3RhcnRUaW1lRXBvY2ggPSBmaXJzdEludGVydmFscy5zdGFydDtcbiAgICBcbiAgICAvLyBJZiBlbmQgdGltZSBpcyBzYW1lIG9yIGJlZm9yZSBzdGFydCB0aW1lLCBhZGQgb25lIGludGVydmFsIHRvIGVuZCB0aW1lXG4gICAgaWYgKGVuZFRpbWVFcG9jaCA8PSBzdGFydFRpbWVFcG9jaCkge1xuICAgICAgZW5kVGltZUVwb2NoID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgJ20nKS52YWx1ZU9mKCk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZmlyc3RJbnRlcnZhbHMgdG8gcmVmbGVjdCB0aGUgYWRqdXN0ZWQgZW5kIHRpbWVcbiAgICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7XG4gICAgICAgIHN0YXJ0OiBmaXJzdEludGVydmFscy5zdGFydCxcbiAgICAgICAgZW5kOiBlbmRUaW1lRXBvY2hcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmVuZFRpbWUuc2V0KHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdGltZTogZGF5anMudHooZW5kVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICBlcG9jaDogZW5kVGltZUVwb2NoXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5faXNJbml0aWFsaXppbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIGNhbGN1bGF0ZSB0aGUgZmlyc3QgaW50ZXJ2YWwgb2YgdGhlIHBpY2tlclxuICBwcml2YXRlIHNldEZpcnN0SW50ZXJ2YWxzKCk6IHZvaWQge1xuICAgIGxldCBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXI6IG51bWJlcjtcbiAgICBsZXQgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlcjogbnVtYmVyO1xuXG4gICAgY29uc3QgbWludXRlcyA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkubWludXRlKCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCgpIC0gKG1pbnV0ZXMgJSB0aGlzLmludGVydmFsKCkpO1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG5cbiAgICBpZiggdGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRDdXJyRGF0ZSgpICl7XG4gICAgICBpZih0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSl7XG4gICAgICAgIGlmKGN1cnJlbnRUaW1lID49IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikuc3VidHJhY3QodGhpcy5pbnRlcnZhbCgpLFwibVwiKS52YWx1ZU9mKCkpe1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGN1cnJlbnRUaW1lO1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5hZGQob2Zmc2V0LCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgICAgIC8vIEZvciBzYW1lIGRhdGUsIGVuZCBwaWNrZXIgc2hvdWxkIHN0YXJ0IGZyb20gYmVnaW5uaW5nIG9mIGRheSB0byBhdm9pZCB2YWxpZGF0aW9uIGlzc3Vlc1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoY3VycmVudFRpbWUgPj0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCksXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gY3VycmVudFRpbWU7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZih0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSl7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmFkZCh0aGlzLmludGVydmFsKCksIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYodGhpcy5naXZlblN0YXJ0VGltZSgpKSB7XG4gICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSB0aGlzLmdpdmVuU3RhcnRUaW1lKCkhO1xuICAgIH1cbiAgICBcbiAgICBpZih0aGlzLmdpdmVuRW5kVGltZSgpKSB7XG4gICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gdGhpcy5naXZlbkVuZFRpbWUoKSE7XG4gICAgfVxuICAgICAgXG4gICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgc3RhcnQ6IGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciwgZW5kOiBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyIH0pO1xuICB9XG5cbiAgLy8gLS0tIFB1YmxpYyBNZXRob2RzIC0tLVxuICBlbWl0VGltZVJhbmdlKGRhdGE6IElUaW1lUmFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVSYW5nZUVtaXR0ZXIuZW1pdChkYXRhKTtcbiAgfVxuXG4gIHN0YXJ0UGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRUaW1lLnNldCh0aW1lKTtcbiAgICB0aGlzLnJhbmdlVmFsaWRpdHkuc2V0KHRydWUpO1xuICAgIFxuICAgIC8vIERvbid0IGVtaXQgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXRlIHN0YXJ0IHRpbWUgZXBvY2ggZm9yIGNvbXBhcmlzb25cbiAgICBjb25zdCBzdGFydFRpbWVFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpO1xuICAgIGNvbnN0IGVuZFRpbWVFcG9jaCA9IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG5cbiAgICAvLyBBdXRvLWFkanVzdCBlbmQgdGltZSBpZiBzdGFydCB0aW1lID49IGVuZCB0aW1lIChmb3IgYm90aCBzYW1lIGFuZCBkaWZmZXJlbnQgZGF0ZXMpXG4gICAgaWYgKHN0YXJ0VGltZUVwb2NoID49IGVuZFRpbWVFcG9jaCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBlbmQgdGltZSBhcyBzdGFydCB0aW1lICsgaW50ZXJ2YWxcbiAgICAgIGxldCBuZXdFbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBJZiBzYW1lIGRhdGUsIGNoZWNrIGlmIHRoZSBuZXcgZW5kIHRpbWUgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXlcbiAgICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV3RW5kVGltZUVwb2NoID4gZW5kT2ZEYXkpIHtcbiAgICAgICAgICAvLyBORVc6IFNldCBlbmQgdGltZSB0byAxMTo1OSBQTSAoZW5kIG9mIGRheSkgd2hlbiBzdGFydCB0aW1lIGlzIGxhc3QgaW50ZXJ2YWxcbiAgICAgICAgICBuZXdFbmRUaW1lRXBvY2ggPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGVuZCB0aW1lIHNpZ25hbFxuICAgICAgdGhpcy5lbmRUaW1lLnNldCh7XG4gICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB0aW1lOiBkYXlqcy50eihuZXdFbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgICAgZXBvY2g6IG5ld0VuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZmlyc3RJbnRlcnZhbHMgdG8gcmVmbGVjdCB0aGUgbmV3IGVuZCB0aW1lXG4gICAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBcbiAgICAgICAgc3RhcnQ6IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCkuc3RhcnQsIFxuICAgICAgICBlbmQ6IG5ld0VuZFRpbWVFcG9jaCBcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE5FVzogVXBkYXRlIGVuZCB0aW1lcGlja2VyJ3MgZmlyc3RJbnRlcnZhbCB3aGVuIGJvdGggdGltZXBpY2tlcnMgYXJlIG9uIHRoZSBzYW1lIGRheVxuICAgIC8vIEJVVCBvbmx5IGlmIHRoZXJlIHdhcyBhIGNvbmZsaWN0IChzdGFydCA+PSBlbmQpIG9yIGlmIHdlIG5lZWQgdG8gYWRqdXN0IGZvciBlbmQgb2YgZGF5XG4gICAgaWYgKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKSB7XG4gICAgICAvLyBPbmx5IHVwZGF0ZSBmaXJzdEludGVydmFsIGlmIHRoZXJlIHdhcyBhIGNvbmZsaWN0IG9yIGlmIHdlJ3JlIGF0IGVuZCBvZiBkYXlcbiAgICAgIGlmIChzdGFydFRpbWVFcG9jaCA+PSBlbmRUaW1lRXBvY2gpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXh0IGludGVydmFsIGFmdGVyIHRoZSBzZWxlY3RlZCBzdGFydCB0aW1lXG4gICAgICAgIGxldCBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIE5FVzogSWYgbmV4dCBpbnRlcnZhbCB3b3VsZCBnbyBiZXlvbmQgZW5kIG9mIGRheSwgdXNlIGVuZCBvZiBkYXkgaW5zdGVhZFxuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV4dEludGVydmFsQWZ0ZXJTdGFydCA+IGVuZE9mRGF5KSB7XG4gICAgICAgICAgbmV4dEludGVydmFsQWZ0ZXJTdGFydCA9IGVuZE9mRGF5O1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIG1ha2UgZW5kIHRpbWVwaWNrZXIgZHJvcGRvd24gc3RhcnQgZnJvbSBuZXh0IGludGVydmFsIGFmdGVyIHN0YXJ0IHRpbWVcbiAgICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgICAgc3RhcnQ6IHRoaXMuX2ZpcnN0SW50ZXJ2YWxzKCkuc3RhcnQsIFxuICAgICAgICAgIGVuZDogbmV4dEludGVydmFsQWZ0ZXJTdGFydCBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBJZiBzdGFydCA8IGVuZCwgZG9uJ3QgdXBkYXRlIGZpcnN0SW50ZXJ2YWxzIC0gbGV0IHRoZSBlbmQgdGltZXBpY2tlciBrZWVwIGl0cyBjdXJyZW50IGRyb3Bkb3duXG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIHZhbGlkYXRlIGFuZCBlbWl0IHRoZSB0aW1lIHJhbmdlXG4gICAgY29uc3QgdmFsaWRpdHkgPVxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLnN0YXJ0VGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5zdGFydERhdGVFcG9jaCgpKSAmJlxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsXG4gICAgICBlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSEudGltZSxcbiAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcblxuICAgIC8vIEZJWEVEOiBPbmx5IHRyaWdnZXIgY2hhbmdlIHdoZW4gdGhlcmUgd2FzIGEgY29uZmxpY3QgKHN0YXJ0ID49IGVuZCkgdGhhdCByZXF1aXJlZCBlbmQgdGltZSB1cGRhdGVcbiAgICBjb25zdCBjdXJyZW50U3RhcnRUaW1lRXBvY2ggPSBkYXlqcy50eihgJHt0aGlzLmdldFN0YXJ0RGF0ZSgpfSAke3RoaXMuc3RhcnRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcbiAgICBjb25zdCBjdXJyZW50RW5kVGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcbiAgICBcbiAgICBpZiAoY3VycmVudFN0YXJ0VGltZUVwb2NoID49IGN1cnJlbnRFbmRUaW1lRXBvY2gpIHtcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5nZS51cGRhdGUodmFsdWUgPT4gIXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBlbmRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5lbmRUaW1lLnNldCh0aW1lKTtcbiAgICBcbiAgICAvLyBEb24ndCBlbWl0IGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkaXR5ID1cbiAgICAgIHRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5zdGFydFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuc3RhcnREYXRlRXBvY2goKSkgJiYgXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgY2hlY2tUaW1lVmFsaWRpdHkodGltZTogc3RyaW5nLCBkYXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBSRTEyID0gL14oKFswXVsxLTldfDFbMC0yXSk6KFswLTVdWzAtOV0pKCApPyhhbXxwbXxBTXxQTSkpJC9pO1xuICAgIGNvbnN0IFJFMjQgPSAvXihbMDFdWzAtOV18MlswLTNdKTpbMC01XVswLTldJC87XG4gICAgY29uc3QgUkUgPSB0aGlzLmNsb2NrRm9ybWF0KCkgPT09IDEyID8gUkUxMiA6IFJFMjQ7XG5cbiAgICBjb25zdCB0aW1lZGF5anMgPSBkYXlqcy50eihgJHtkYXlqcy50eihkYXRlLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIil9ICR7dGltZX1gLCBgJ0RELU1NLVlZWVknICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaWYgKCh0aGlzLmdpdmVuU3RhcnRUaW1lKCkgJiYgdGhpcy5naXZlbkVuZFRpbWUoKSkgfHwgKHRoaXMuZ2V0U3RhcnREYXRlKCkgIT09IHRoaXMuZ2V0RW5kRGF0ZSgpICYmIHRoaXMuZ2V0U3RhcnREYXRlKCkgIT09IHRoaXMuZ2V0Q3VyckRhdGUoKSkpIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVkYXlqcy5kaWZmKGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSksIFwibVwiKSA+PSAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmxhZztcbiAgfVxuXG4gIHJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eTogYm9vbGVhbikge1xuICAgIGlmICh2YWxpZGl0eSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgY29uc3Qgc3RhcnRkYXlqcyA9IGRheWpzLnR6KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgY29uc3QgZW5kZGF5anMgPSBkYXlqcy50eih0aGlzLmVuZFRpbWUoKSEudGltZSwgdGhpcy5nZXRUaW1lRm9ybWF0KCksIHRoaXMudGltZXpvbmUoKSk7XG4gICAgICB0aGlzLnJhbmdlVmFsaWRpdHkuc2V0KGVuZGRheWpzLmRpZmYoc3RhcnRkYXlqcywgXCJtXCIpID49IDEpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJyYW5nZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2ZsZXhEaXJlY3Rpb24nOiBkaXJlY3Rpb24oKSwgJ2dhcCc6IGdhcCgpfVwiPlxuICA8bWlzLXRpbWVwaWNrZXJcbiAgICBbY2xvY2tGb3JtYXRdPVwiY2xvY2tGb3JtYXQoKVwiXG4gICAgW2ludGVydmFsXT1cImludGVydmFsKClcIlxuICAgIFtkYXRlQXNFcG9jaF09XCJzdGFydERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLnN0YXJ0XCJcbiAgICAodGltZUVtaXR0ZXIpPVwic3RhcnRQaWNrZXJIYW5kbGVyKCRldmVudClcIlxuICAgIFt0aW1lem9uZV09XCJ0aW1lem9uZSgpXCJcbiAgICBbaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICBbaW5wdXRXaWR0aF09XCJpbnB1dFdpZHRoKClcIlxuICAgIFtkcm9wZG93bldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4gICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwKClcIlxuICAgIFtnaXZlblRpbWVdPVwiZ2l2ZW5TdGFydFRpbWUoKVwiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZVN0YXJ0VGltZSgpXCJcbiAgPjwvbWlzLXRpbWVwaWNrZXI+XG4gIDxwICpuZ0lmPVwiZGlyZWN0aW9uKCkgPT09ICdyb3cnXCI+LTwvcD5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwiZW5kRGF0ZUVwb2NoKClcIlxuICAgIFtmaXJzdEludGVydmFsXT1cImZpcnN0SW50ZXJ2YWxzKCkuZW5kXCJcbiAgICAodGltZUVtaXR0ZXIpPVwiZW5kUGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbcmFuZ2VWYWxpZGl0eV09XCJyYW5nZVZhbGlkaXR5KClcIlxuICAgIFt0aW1lem9uZV09XCJ0aW1lem9uZSgpXCJcbiAgICBbaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICBbaW5wdXRXaWR0aF09XCJpbnB1dFdpZHRoKClcIlxuICAgIFtkcm9wZG93bldpZHRoXT1cImRyb3Bkb3duV2lkdGgoKVwiXG4gICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwKClcIlxuICAgIFtnaXZlblRpbWVdPVwiZ2l2ZW5FbmRUaW1lKClcIlxuICAgIFt0cmlnZ2VyQ2hhbmdlXT1cInRyaWdnZXJDaGFuZ2UoKVwiXG4gICAgW2Rpc2FibGVdPVwiZGlzYWJsZUVuZFRpbWUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuPC9kaXY+XG5cbiJdfQ==
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci90aW1lcmFuZ2VwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXJhbmdlcGlja2VyL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7SUNXakMseUJBQWlDO0lBQUEsaUJBQUM7SUFBQSxpQkFBSTs7QURUeEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBT3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFnQ25DLDZFQUE2RTtJQUNyRSxhQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZ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Qjs7a0ZBSXBCLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWVSYW5nZSwgSVRpbWUsIFREaXJlY3Rpb24gfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHRpbWV6b25lIGZyb20gJ2RheWpzL3BsdWdpbi90aW1lem9uZSc7XG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xuXG5kYXlqcy5leHRlbmQodXRjKTtcbmRheWpzLmV4dGVuZCh0aW1lem9uZSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGltZXJhbmdlcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sXCIsIC8vIENvcnJlY3RlZCBmaWxlIG5hbWVcbiAgc3R5bGVVcmxzOiBbXCIuL3RpbWVyYW5nZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAtLS0gSW5wdXQgU2lnbmFscyAocmVhZC1vbmx5KSAtLS1cbiAgaW5wdXRXaWR0aCA9IGlucHV0PHN0cmluZz4oXCIxMDBweFwiKTtcbiAgZHJvcGRvd25XaWR0aCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPihcIjQ2cHhcIik7XG4gIHRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcIkFzaWEvS29sa2F0YVwiKTtcbiAgc3RhcnREYXRlRXBvY2ggPSBpbnB1dDxudW1iZXI+KGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpKTtcbiAgZW5kRGF0ZUVwb2NoID0gaW5wdXQ8bnVtYmVyPihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKSk7XG4gIGdpdmVuU3RhcnRUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBnaXZlbkVuZFRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNsb2NrRm9ybWF0ID0gaW5wdXQ8bnVtYmVyPigxMik7XG4gIGludGVydmFsID0gaW5wdXQ8bnVtYmVyPigxNSk7XG4gIHNob3dUb29sdGlwID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGRpcmVjdGlvbiA9IGlucHV0PFREaXJlY3Rpb24+KCdyb3cnKTtcbiAgZ2FwID0gaW5wdXQ8c3RyaW5nPignMXJlbScpO1xuICBkaXNhYmxlU3RhcnRUaW1lID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBkaXNhYmxlRW5kVGltZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgXG4gIC8vIC0tLSBPdXRwdXQgU2lnbmFsIC0tLVxuICB0aW1lUmFuZ2VFbWl0dGVyID0gb3V0cHV0PElUaW1lUmFuZ2U+KCk7XG5cbiAgLy8gLS0tIEludGVybmFsIFdyaXRhYmxlIFNpZ25hbHMgLS0tXG4gIHN0YXJ0VGltZSA9IHNpZ25hbDxJVGltZSB8IG51bGw+KG51bGwpO1xuICBlbmRUaW1lID0gc2lnbmFsPElUaW1lIHwgbnVsbD4obnVsbCk7XG4gIHJhbmdlVmFsaWRpdHkgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHRyaWdnZXJDaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgX2ZpcnN0SW50ZXJ2YWxzID0gc2lnbmFsPHsgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgfT4oeyBzdGFydDogMCwgZW5kOiAwIH0pO1xuICBwcml2YXRlIF9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gIC8vIC0tLSBDb21wdXRlZCBTaWduYWxzIChEZXJpdmVkIFN0YXRlKSAtLS1cbiAgZmlyc3RJbnRlcnZhbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maXJzdEludGVydmFscygpKTsgLy8gQSBwdWJsaWMgY29tcHV0ZWQgc2lnbmFsIHRvIGFjY2VzcyB0aGUgd3JpdGFibGUgb25lXG4gIFxuICAvLyBIZWxwZXIgbWV0aG9kcyBpbnN0ZWFkIG9mIGNvbXB1dGVkIHNpZ25hbHMgdG8gYXZvaWQgc2lnbmFsIHdyaXRlIGNvbmZsaWN0c1xuICBwcml2YXRlIGdldFRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICB9XG4gIFxuICBwcml2YXRlIGdldFN0YXJ0RGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRFbmREYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBnZXRDdXJyRGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7XG4gIH1cbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFNpbXBsZSBjb25zdHJ1Y3RvciAtIG5vIGVmZmVjdHMgaGVyZVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50IG9uY2VcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IHRydWU7XG4gICAgXG4gICAgdGhpcy5zZXRGaXJzdEludGVydmFscygpO1xuICAgIGNvbnN0IGZpcnN0SW50ZXJ2YWxzID0gdGhpcy5fZmlyc3RJbnRlcnZhbHMoKTtcblxuICAgIHRoaXMuc3RhcnRUaW1lLnNldCh7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHRpbWU6IGRheWpzLnR6KGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICBlcG9jaDogZGF5anMudHooZmlyc3RJbnRlcnZhbHMuc3RhcnQsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRW5zdXJlIGVuZCB0aW1lIGlzIGFsd2F5cyBhZnRlciBzdGFydCB0aW1lXG4gICAgbGV0IGVuZFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLmVuZDtcbiAgICBjb25zdCBzdGFydFRpbWVFcG9jaCA9IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0O1xuICAgIFxuICAgIC8vIElmIGVuZCB0aW1lIGlzIHNhbWUgb3IgYmVmb3JlIHN0YXJ0IHRpbWUsIGFkZCBvbmUgaW50ZXJ2YWwgdG8gZW5kIHRpbWVcbiAgICBpZiAoZW5kVGltZUVwb2NoIDw9IHN0YXJ0VGltZUVwb2NoKSB7XG4gICAgICBlbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCAnbScpLnZhbHVlT2YoKTtcbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byByZWZsZWN0IHRoZSBhZGp1c3RlZCBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHtcbiAgICAgICAgc3RhcnQ6IGZpcnN0SW50ZXJ2YWxzLnN0YXJ0LFxuICAgICAgICBlbmQ6IGVuZFRpbWVFcG9jaFxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB0aW1lOiBkYXlqcy50eihlbmRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuZm9ybWF0KHRoaXMuZ2V0VGltZUZvcm1hdCgpKSxcbiAgICAgIGVwb2NoOiBlbmRUaW1lRXBvY2hcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLl9pc0luaXRpYWxpemluZyA9IGZhbHNlO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRoZSBmaXJzdCBpbnRlcnZhbCBvZiB0aGUgcGlja2VyXG4gIHByaXZhdGUgc2V0Rmlyc3RJbnRlcnZhbHMoKTogdm9pZCB7XG4gICAgbGV0IGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlcjogbnVtYmVyO1xuICAgIGxldCBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyOiBudW1iZXI7XG5cbiAgICBjb25zdCBtaW51dGVzID0gZGF5anMudHooZGF5anMoKSwgdGhpcy50aW1lem9uZSgpKS5taW51dGUoKTtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmludGVydmFsKCkgLSAobWludXRlcyAlIHRoaXMuaW50ZXJ2YWwoKSk7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIGlmKCB0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEN1cnJEYXRlKCkgKXtcbiAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgaWYoY3VycmVudFRpbWUgPj0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLmVuZE9mKFwiZFwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsKCksXCJtXCIpLnZhbHVlT2YoKSl7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gY3VycmVudFRpbWU7XG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICAgICAgLy8gRm9yIHNhbWUgZGF0ZSwgZW5kIHBpY2tlciBzaG91bGQgc3RhcnQgZnJvbSBiZWdpbm5pbmcgb2YgZGF5IHRvIGF2b2lkIHZhbGlkYXRpb24gaXNzdWVzXG4gICAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuc3RhcnRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihjdXJyZW50VGltZSA+PSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwoKSxcIm1cIikudmFsdWVPZigpKXtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yU3RhcnRQaWNrZXIgPSBjdXJyZW50VGltZTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KGRheWpzKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgICBmaXJzdEludGVydmFsRm9yRW5kUGlja2VyID0gZGF5anMudHoodGhpcy5lbmREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKHRoaXMuZ2V0U3RhcnREYXRlKCkgPT09IHRoaXMuZ2V0RW5kRGF0ZSgpKXtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyID0gZGF5anMudHoodGhpcy5zdGFydERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgZmlyc3RJbnRlcnZhbEZvckVuZFBpY2tlciA9IGRheWpzLnR6KHRoaXMuZW5kRGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5zdGFydE9mKFwiZFwiKS52YWx1ZU9mKCk7XG4gICAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSBkYXlqcy50eih0aGlzLmVuZERhdGVFcG9jaCgpLCB0aGlzLnRpbWV6b25lKCkpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuU3RhcnRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JTdGFydFBpY2tlciA9IHRoaXMuZ2l2ZW5TdGFydFRpbWUoKSE7XG4gICAgfVxuICAgIFxuICAgIGlmKHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHtcbiAgICAgIGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgPSB0aGlzLmdpdmVuRW5kVGltZSgpITtcbiAgICB9XG4gICAgICBcbiAgICB0aGlzLl9maXJzdEludGVydmFscy5zZXQoeyBzdGFydDogZmlyc3RJbnRlcnZhbEZvclN0YXJ0UGlja2VyLCBlbmQ6IGZpcnN0SW50ZXJ2YWxGb3JFbmRQaWNrZXIgfSk7XG4gIH1cblxuICAvLyAtLS0gUHVibGljIE1ldGhvZHMgLS0tXG4gIGVtaXRUaW1lUmFuZ2UoZGF0YTogSVRpbWVSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMudGltZVJhbmdlRW1pdHRlci5lbWl0KGRhdGEpO1xuICB9XG5cbiAgc3RhcnRQaWNrZXJIYW5kbGVyKHRpbWU6IElUaW1lKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydFRpbWUuc2V0KHRpbWUpO1xuICAgIHRoaXMucmFuZ2VWYWxpZGl0eS5zZXQodHJ1ZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgc3RhcnQgdGltZSBlcG9jaCBmb3IgY29tcGFyaXNvblxuICAgIGNvbnN0IHN0YXJ0VGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCk7XG4gICAgY29uc3QgZW5kVGltZUVwb2NoID0gZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKTtcblxuICAgIC8vIEF1dG8tYWRqdXN0IGVuZCB0aW1lIGlmIHN0YXJ0IHRpbWUgPiBlbmQgdGltZSAoZm9yIGJvdGggc2FtZSBhbmQgZGlmZmVyZW50IGRhdGVzKVxuICAgIC8vIFRoaXMgZW5zdXJlcyBlbmQgdGltZSBpcyBhbHdheXMgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIGlmIChzdGFydFRpbWVFcG9jaCA+IGVuZFRpbWVFcG9jaCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIG5ldyBlbmQgdGltZSBhcyBzdGFydCB0aW1lICsgaW50ZXJ2YWxcbiAgICAgIGxldCBuZXdFbmRUaW1lRXBvY2ggPSBkYXlqcy50eihzdGFydFRpbWVFcG9jaCwgdGhpcy50aW1lem9uZSgpKS5hZGQodGhpcy5pbnRlcnZhbCgpLCBcIm1cIikudmFsdWVPZigpO1xuICAgICAgXG4gICAgICAvLyBJZiBzYW1lIGRhdGUsIGNoZWNrIGlmIHRoZSBuZXcgZW5kIHRpbWUgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXlcbiAgICAgIGlmICh0aGlzLmdldFN0YXJ0RGF0ZSgpID09PSB0aGlzLmdldEVuZERhdGUoKSkge1xuICAgICAgICBjb25zdCBlbmRPZkRheSA9IGRheWpzLnR6KHRoaXMuc3RhcnREYXRlRXBvY2goKSwgdGhpcy50aW1lem9uZSgpKS5lbmRPZihcImRcIikudmFsdWVPZigpO1xuICAgICAgICBpZiAobmV3RW5kVGltZUVwb2NoID4gZW5kT2ZEYXkpIHtcbiAgICAgICAgICAvLyBTZXQgZW5kIHRpbWUgdG8gMTE6NTkgUE0gKGVuZCBvZiBkYXkpIHdoZW4gc3RhcnQgdGltZSBpcyBsYXN0IGludGVydmFsXG4gICAgICAgICAgbmV3RW5kVGltZUVwb2NoID0gZW5kT2ZEYXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSBzaWduYWxcbiAgICAgIHRoaXMuZW5kVGltZS5zZXQoe1xuICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgdGltZTogZGF5anMudHoobmV3RW5kVGltZUVwb2NoLCB0aGlzLnRpbWV6b25lKCkpLmZvcm1hdCh0aGlzLmdldFRpbWVGb3JtYXQoKSksXG4gICAgICAgIGVwb2NoOiBuZXdFbmRUaW1lRXBvY2hcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgdGhlIGZpcnN0SW50ZXJ2YWxzIHRvIHJlZmxlY3QgdGhlIG5ldyBlbmQgdGltZVxuICAgICAgdGhpcy5fZmlyc3RJbnRlcnZhbHMuc2V0KHsgXG4gICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgZW5kOiBuZXdFbmRUaW1lRXBvY2ggXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gVHJpZ2dlciBjaGFuZ2UgdG8gZm9yY2UgZW5kIHRpbWVwaWNrZXIgdG8gdXBkYXRlIGl0cyBkaXNwbGF5IHdpdGggdGhlIG5ldyBlbmQgdGltZVxuICAgICAgLy8gVGhpcyBpcyBuZWNlc3Nhcnkgd2hlbiB3ZSByZXNldCB0aGUgZW5kIHRpbWUgZHVlIHRvIGNvbmZsaWN0XG4gICAgICB0aGlzLnRyaWdnZXJDaGFuZ2UudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGVuZCB0aW1lcGlja2VyJ3MgZmlyc3RJbnRlcnZhbCB3aGVuIGJvdGggdGltZXBpY2tlcnMgYXJlIG9uIHRoZSBzYW1lIGRheVxuICAgIC8vIEFMV0FZUyB1cGRhdGUgdG8gZW5zdXJlIGRyb3Bkb3duIHN0YXJ0cyBmcm9tIG5leHQgaW50ZXJ2YWwgYWZ0ZXIgc3RhcnQgdGltZVxuICAgIC8vIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aGVyZSBzZWxlY3RpbmcgYW4gZWFybGllciBzdGFydCB0aW1lIGRvZXNuJ3QgdXBkYXRlIGVuZCBwaWNrZXIgaW50ZXJ2YWxzXG4gICAgLy8gTk9URTogV2Ugb25seSB1cGRhdGUgZmlyc3RJbnRlcnZhbCAoZHJvcGRvd24gb3B0aW9ucyksIE5PVCB0aGUgc2VsZWN0ZWQgZW5kIHRpbWUgdmFsdWVcbiAgICAvLyBUaGUgdGltZXBpY2tlciBjb21wb25lbnQgbm93IGhhbmRsZXMgZmlyc3RJbnRlcnZhbCBjaGFuZ2VzIHNlcGFyYXRlbHkgYW5kIHdvbid0IHJlc2V0IGNob3NlblRpbWVcbiAgICBpZiAodGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpcnN0SW50ZXJ2YWwgaWYgdGhlcmUncyBubyBjb25mbGljdCAoc3RhcnQgPCBlbmQpXG4gICAgICAvLyBJZiB0aGVyZSdzIGEgY29uZmxpY3QsIGl0J3MgYWxyZWFkeSBoYW5kbGVkIGFib3ZlIGFuZCBmaXJzdEludGVydmFsIHdhcyB1cGRhdGVkIHRoZXJlXG4gICAgICBpZiAoc3RhcnRUaW1lRXBvY2ggPCBlbmRUaW1lRXBvY2gpIHtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXh0IGludGVydmFsIGFmdGVyIHRoZSBzZWxlY3RlZCBzdGFydCB0aW1lXG4gICAgICAgIGxldCBuZXh0SW50ZXJ2YWxBZnRlclN0YXJ0ID0gZGF5anMudHooc3RhcnRUaW1lRXBvY2gsIHRoaXMudGltZXpvbmUoKSkuYWRkKHRoaXMuaW50ZXJ2YWwoKSwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIG5leHQgaW50ZXJ2YWwgd291bGQgZ28gYmV5b25kIGVuZCBvZiBkYXksIHVzZSBlbmQgb2YgZGF5IGluc3RlYWRcbiAgICAgICAgY29uc3QgZW5kT2ZEYXkgPSBkYXlqcy50eih0aGlzLnN0YXJ0RGF0ZUVwb2NoKCksIHRoaXMudGltZXpvbmUoKSkuZW5kT2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgICAgaWYgKG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPiBlbmRPZkRheSkge1xuICAgICAgICAgIG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgPSBlbmRPZkRheTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBmaXJzdEludGVydmFscyB0byBtYWtlIGVuZCB0aW1lcGlja2VyIGRyb3Bkb3duIHN0YXJ0IGZyb20gbmV4dCBpbnRlcnZhbCBhZnRlciBzdGFydCB0aW1lXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB1c2VycyBjYW4gYWx3YXlzIHNlbGVjdCB0aW1lcyBiZXR3ZWVuIHRoZSBuZXcgc3RhcnQgdGltZSBhbmQgdGhlIGN1cnJlbnQgZW5kIHRpbWVcbiAgICAgICAgLy8gVGhlIHRpbWVwaWNrZXIgY29tcG9uZW50IHdpbGwgdXBkYXRlIHRoZSBkcm9wZG93biBidXQgcHJlc2VydmUgdGhlIHNlbGVjdGVkIGVuZCB0aW1lIHZhbHVlXG4gICAgICAgIHRoaXMuX2ZpcnN0SW50ZXJ2YWxzLnNldCh7IFxuICAgICAgICAgIHN0YXJ0OiB0aGlzLl9maXJzdEludGVydmFscygpLnN0YXJ0LCBcbiAgICAgICAgICBlbmQ6IG5leHRJbnRlcnZhbEFmdGVyU3RhcnQgXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBOT1RFOiBXZSBkb24ndCBjYWxsIHRyaWdnZXJDaGFuZ2UgaGVyZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byB1cGRhdGUgdGhlIGRyb3Bkb3duLFxuICAgICAgICAvLyBub3QgcmVzZXQgdGhlIHNlbGVjdGVkIGVuZCB0aW1lLiBUaGUgdGltZXBpY2tlcidzIHNlcGFyYXRlIGVmZmVjdCBmb3IgZmlyc3RJbnRlcnZhbFxuICAgICAgICAvLyB3aWxsIGhhbmRsZSB1cGRhdGluZyB0aGUgZHJvcGRvd24gd2l0aG91dCByZXNldHRpbmcgY2hvc2VuVGltZS5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbHdheXMgdmFsaWRhdGUgYW5kIGVtaXQgdGhlIHRpbWUgcmFuZ2VcbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmXG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuZW5kVGltZSgpIS50aW1lLnRyaW0oKSwgdGhpcy5lbmREYXRlRXBvY2goKSk7XG5cbiAgICB0aGlzLnJhbmdlVmFsaWRhdGlvbih2YWxpZGl0eSk7XG4gICAgdGhpcy5lbWl0VGltZVJhbmdlKHtcbiAgICAgIHZhbGlkOiB2YWxpZGl0eSAmJiB0aGlzLnJhbmdlVmFsaWRpdHkoKSxcbiAgICAgIHN0YXJ0VGltZTogdGhpcy5zdGFydFRpbWUoKSEudGltZSxcbiAgICAgIGVuZFRpbWU6IHRoaXMuZW5kVGltZSgpIS50aW1lLFxuICAgICAgc3RhcnRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRTdGFydERhdGUoKX0gJHt0aGlzLnN0YXJ0VGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKCksXG4gICAgICBlbmRFcG9jaDogZGF5anMudHooYCR7dGhpcy5nZXRFbmREYXRlKCl9ICR7dGhpcy5lbmRUaW1lKCkhLnRpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLmdldFRpbWVGb3JtYXQoKX1gLCB0aGlzLnRpbWV6b25lKCkpLnZhbHVlT2YoKVxuICAgIH0pO1xuICB9XG5cbiAgZW5kUGlja2VySGFuZGxlcih0aW1lOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMuZW5kVGltZS5zZXQodGltZSk7XG4gICAgXG4gICAgLy8gRG9uJ3QgZW1pdCBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9XG4gICAgICB0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUudHJpbSgpLCB0aGlzLnN0YXJ0RGF0ZUVwb2NoKCkpICYmIFxuICAgICAgdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aGlzLmVuZFRpbWUoKSEudGltZS50cmltKCksIHRoaXMuZW5kRGF0ZUVwb2NoKCkpO1xuXG4gICAgdGhpcy5yYW5nZVZhbGlkYXRpb24odmFsaWRpdHkpO1xuICAgIHRoaXMuZW1pdFRpbWVSYW5nZSh7XG4gICAgICB2YWxpZDogdmFsaWRpdHkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5KCksXG4gICAgICBzdGFydFRpbWU6IHRoaXMuc3RhcnRUaW1lKCkhLnRpbWUsXG4gICAgICBlbmRUaW1lOiB0aGlzLmVuZFRpbWUoKSEudGltZSxcbiAgICAgIHN0YXJ0RXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0U3RhcnREYXRlKCl9ICR7dGhpcy5zdGFydFRpbWUoKSEudGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSkudmFsdWVPZigpLFxuICAgICAgZW5kRXBvY2g6IGRheWpzLnR6KGAke3RoaXMuZ2V0RW5kRGF0ZSgpfSAke3RoaXMuZW5kVGltZSgpIS50aW1lfWAsIGBERC1NTS1ZWVlZICR7dGhpcy5nZXRUaW1lRm9ybWF0KCl9YCwgdGhpcy50aW1lem9uZSgpKS52YWx1ZU9mKClcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVGltZVZhbGlkaXR5KHRpbWU6IHN0cmluZywgZGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCgpID09PSAxMiA/IFJFMTIgOiBSRTI0O1xuXG4gICAgY29uc3QgdGltZWRheWpzID0gZGF5anMudHooYCR7ZGF5anMudHooZGF0ZSwgdGhpcy50aW1lem9uZSgpKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpfSAke3RpbWV9YCwgYCdERC1NTS1ZWVlZJyAke3RoaXMuZ2V0VGltZUZvcm1hdCgpfWAsIHRoaXMudGltZXpvbmUoKSk7XG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICgodGhpcy5naXZlblN0YXJ0VGltZSgpICYmIHRoaXMuZ2l2ZW5FbmRUaW1lKCkpIHx8ICh0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEVuZERhdGUoKSAmJiB0aGlzLmdldFN0YXJ0RGF0ZSgpICE9PSB0aGlzLmdldEN1cnJEYXRlKCkpKSB7XG4gICAgICBmbGFnID0gdGltZS5tYXRjaChSRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSAmJiB0aW1lZGF5anMuZGlmZihkYXlqcy50eihkYXlqcygpLCB0aGlzLnRpbWV6b25lKCkpLCBcIm1cIikgPj0gMCA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICByYW5nZVZhbGlkYXRpb24odmFsaWRpdHk6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsaWRpdHkgJiYgdGhpcy5nZXRTdGFydERhdGUoKSA9PT0gdGhpcy5nZXRFbmREYXRlKCkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ZGF5anMgPSBkYXlqcy50eih0aGlzLnN0YXJ0VGltZSgpIS50aW1lLCB0aGlzLmdldFRpbWVGb3JtYXQoKSwgdGhpcy50aW1lem9uZSgpKTtcbiAgICAgIGNvbnN0IGVuZGRheWpzID0gZGF5anMudHoodGhpcy5lbmRUaW1lKCkhLnRpbWUsIHRoaXMuZ2V0VGltZUZvcm1hdCgpLCB0aGlzLnRpbWV6b25lKCkpO1xuICAgICAgdGhpcy5yYW5nZVZhbGlkaXR5LnNldChlbmRkYXlqcy5kaWZmKHN0YXJ0ZGF5anMsIFwibVwiKSA+PSAxKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwicmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydmbGV4RGlyZWN0aW9uJzogZGlyZWN0aW9uKCksICdnYXAnOiBnYXAoKX1cIj5cbiAgPG1pcy10aW1lcGlja2VyXG4gICAgW2Nsb2NrRm9ybWF0XT1cImNsb2NrRm9ybWF0KClcIlxuICAgIFtpbnRlcnZhbF09XCJpbnRlcnZhbCgpXCJcbiAgICBbZGF0ZUFzRXBvY2hdPVwic3RhcnREYXRlRXBvY2goKVwiXG4gICAgW2ZpcnN0SW50ZXJ2YWxdPVwiZmlyc3RJbnRlcnZhbHMoKS5zdGFydFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cInN0YXJ0UGlja2VySGFuZGxlcigkZXZlbnQpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuU3RhcnRUaW1lKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVTdGFydFRpbWUoKVwiXG4gID48L21pcy10aW1lcGlja2VyPlxuICA8cCAqbmdJZj1cImRpcmVjdGlvbigpID09PSAncm93J1wiPi08L3A+XG4gIDxtaXMtdGltZXBpY2tlclxuICAgIFtjbG9ja0Zvcm1hdF09XCJjbG9ja0Zvcm1hdCgpXCJcbiAgICBbaW50ZXJ2YWxdPVwiaW50ZXJ2YWwoKVwiXG4gICAgW2RhdGVBc0Vwb2NoXT1cImVuZERhdGVFcG9jaCgpXCJcbiAgICBbZmlyc3RJbnRlcnZhbF09XCJmaXJzdEludGVydmFscygpLmVuZFwiXG4gICAgKHRpbWVFbWl0dGVyKT1cImVuZFBpY2tlckhhbmRsZXIoJGV2ZW50KVwiXG4gICAgW3JhbmdlVmFsaWRpdHldPVwicmFuZ2VWYWxpZGl0eSgpXCJcbiAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKVwiXG4gICAgW2hlaWdodF09XCJoZWlnaHQoKVwiXG4gICAgW2lucHV0V2lkdGhdPVwiaW5wdXRXaWR0aCgpXCJcbiAgICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoKClcIlxuICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcCgpXCJcbiAgICBbZ2l2ZW5UaW1lXT1cImdpdmVuRW5kVGltZSgpXCJcbiAgICBbdHJpZ2dlckNoYW5nZV09XCJ0cmlnZ2VyQ2hhbmdlKClcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVFbmRUaW1lKClcIlxuICA+PC9taXMtdGltZXBpY2tlcj5cbjwvZGl2PlxuXG4iXX0=