ngx-tethys 18.2.10 → 18.2.13

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/date-picker/abstract-picker.component.d.ts +6 -1
  3. package/date-picker/base-picker.component.d.ts +1 -1
  4. package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
  5. package/date-picker/lib/calendar/calendar-table.component.d.ts +4 -3
  6. package/date-picker/lib/popups/date-popup.component.d.ts +2 -1
  7. package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
  8. package/date-picker/picker.component.d.ts +2 -1
  9. package/date-picker/picker.util.d.ts +5 -5
  10. package/esm2022/cascader/cascader.component.mjs +2 -2
  11. package/esm2022/date-picker/abstract-picker.component.mjs +16 -28
  12. package/esm2022/date-picker/base-picker.component.mjs +17 -13
  13. package/esm2022/date-picker/date-picker.component.mjs +3 -3
  14. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +7 -5
  15. package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +6 -4
  16. package/esm2022/date-picker/lib/date/date-table.component.mjs +2 -2
  17. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +29 -45
  18. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +7 -5
  19. package/esm2022/date-picker/month-picker.component.mjs +3 -3
  20. package/esm2022/date-picker/picker.component.mjs +9 -4
  21. package/esm2022/date-picker/picker.util.mjs +21 -15
  22. package/esm2022/date-picker/quarter-picker.component.mjs +3 -3
  23. package/esm2022/date-picker/range-picker.component.mjs +3 -3
  24. package/esm2022/date-picker/week-picker.component.mjs +3 -3
  25. package/esm2022/date-picker/year-picker.component.mjs +3 -3
  26. package/esm2022/i18n/i18n.service.mjs +3 -6
  27. package/esm2022/i18n/locale.mjs +17 -2
  28. package/esm2022/message/message-container.component.mjs +3 -3
  29. package/esm2022/notify/notify-container.component.mjs +3 -3
  30. package/esm2022/select/custom-select/custom-select.component.mjs +2 -2
  31. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +13 -11
  32. package/esm2022/time-picker/inner/inner-time-picker.store.mjs +16 -16
  33. package/esm2022/time-picker/time-picker.utils.mjs +14 -14
  34. package/esm2022/util/date/tiny-date.mjs +23 -11
  35. package/esm2022/util/helpers/helpers.mjs +13 -1
  36. package/esm2022/version.mjs +2 -2
  37. package/fesm2022/ngx-tethys-cascader.mjs +1 -1
  38. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  39. package/fesm2022/ngx-tethys-date-picker.mjs +114 -121
  40. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  41. package/fesm2022/ngx-tethys-i18n.mjs +17 -5
  42. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  43. package/fesm2022/ngx-tethys-message.mjs +2 -2
  44. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  45. package/fesm2022/ngx-tethys-notify.mjs +2 -2
  46. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  47. package/fesm2022/ngx-tethys-select.mjs +1 -1
  48. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  49. package/fesm2022/ngx-tethys-time-picker.mjs +40 -38
  50. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  51. package/fesm2022/ngx-tethys-util.mjs +422 -398
  52. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  53. package/fesm2022/ngx-tethys.mjs +1 -1
  54. package/fesm2022/ngx-tethys.mjs.map +1 -1
  55. package/i18n/locale.d.ts +7 -1
  56. package/package.json +2 -1
  57. package/schematics/version.d.ts +1 -1
  58. package/schematics/version.js +1 -1
  59. package/table/styles/table.scss +9 -1
  60. package/time-picker/inner/inner-time-picker.component.d.ts +3 -1
  61. package/time-picker/inner/inner-time-picker.store.d.ts +5 -5
  62. package/time-picker/time-picker.utils.d.ts +5 -5
  63. package/util/helpers/helpers.d.ts +1 -0
@@ -41,7 +41,7 @@ export class ThyInnerTimePicker {
41
41
  // update UI values if date changed
42
42
  this._renderTime(value);
43
43
  this.onChange(value);
44
- this._store.updateControls(getControlsValue(this));
44
+ this._store.updateControls(getControlsValue(this), this.timeZone);
45
45
  }));
46
46
  this.timerPickerSubscription.add(_store
47
47
  .select(state => state.controls)
@@ -66,19 +66,19 @@ export class ThyInnerTimePicker {
66
66
  return Math.sign($event.deltaY) * -1;
67
67
  }
68
68
  ngOnChanges(changes) {
69
- this._store.updateControls(getControlsValue(this));
69
+ this._store.updateControls(getControlsValue(this), this.timeZone);
70
70
  }
71
71
  changeHours(step, source = '') {
72
72
  this.resetValidation();
73
- this._store.changeHours({ step, source });
73
+ this._store.changeHours({ step, source }, this.timeZone);
74
74
  }
75
75
  changeMinutes(step, source = '') {
76
76
  this.resetValidation();
77
- this._store.changeMinutes({ step, source });
77
+ this._store.changeMinutes({ step, source }, this.timeZone);
78
78
  }
79
79
  changeSeconds(step, source = '') {
80
80
  this.resetValidation();
81
- this._store.changeSeconds({ step, source });
81
+ this._store.changeSeconds({ step, source }, this.timeZone);
82
82
  }
83
83
  updateHours(hours) {
84
84
  this.resetValidation();
@@ -122,7 +122,7 @@ export class ThyInnerTimePicker {
122
122
  minute: this.minutes,
123
123
  seconds: this.seconds,
124
124
  isPM: this.isPM()
125
- }, this.max, this.min);
125
+ }, this.max, this.min, this.timeZone);
126
126
  }
127
127
  _updateTime() {
128
128
  const _seconds = this.showSeconds ? this.seconds : void 0;
@@ -137,7 +137,7 @@ export class ThyInnerTimePicker {
137
137
  minute: this.minutes,
138
138
  seconds: this.seconds,
139
139
  isPM: this.isPM()
140
- });
140
+ }, this.timeZone);
141
141
  }
142
142
  toggleMeridian() {
143
143
  if (!this.showMeridian || !this.isEditable) {
@@ -151,7 +151,7 @@ export class ThyInnerTimePicker {
151
151
  }
152
152
  writeValue(obj) {
153
153
  if (isValidDate(obj)) {
154
- this._store.writeValue(parseTime(obj));
154
+ this._store.writeValue(parseTime(obj, this.timeZone));
155
155
  }
156
156
  else if (obj == null) {
157
157
  this._store.writeValue(null);
@@ -178,7 +178,7 @@ export class ThyInnerTimePicker {
178
178
  this.meridian = this.meridians[0];
179
179
  return;
180
180
  }
181
- const _value = parseTime(value);
181
+ const _value = parseTime(value, this.timeZone);
182
182
  const _hoursPerDayHalf = 12;
183
183
  let _hours = _value.getHours();
184
184
  if (this.showMeridian) {
@@ -194,7 +194,7 @@ export class ThyInnerTimePicker {
194
194
  this.seconds = padNumber(_value.getUTCSeconds());
195
195
  }
196
196
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyInnerTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThyInnerTimePicker, isStandalone: true, selector: "thy-inner-time-picker", inputs: { hourStep: "hourStep", minuteStep: "minuteStep", secondsStep: "secondsStep", readonlyInput: "readonlyInput", disabled: "disabled", mousewheel: "mousewheel", arrowKeys: "arrowKeys", showSpinners: "showSpinners", showMeridian: "showMeridian", showMinutes: "showMinutes", showSeconds: "showSeconds", meridians: "meridians", min: "min", max: "max", hoursPlaceholder: "hoursPlaceholder", minutesPlaceholder: "minutesPlaceholder", secondsPlaceholder: "secondsPlaceholder" }, outputs: { isValid: "isValid" }, providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, ThyTimePickerStore], usesOnChanges: true, ngImport: i0, template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\" (click)=\"changeHours(hourStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- increment minutes button -->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\" (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- increment seconds button -->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\" (click)=\"changeSeconds(secondsStep)\">\n <span class=\"thy-chevron thy-chevron-up\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"hoursPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event); changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"\n />\n </td>\n\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- minutes -->\n @if (showMinutes) {\n <td class=\"form-group\" [class.has-error]=\"invalidMinutes\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"minutesPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event); changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\"\n />\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- seconds -->\n @if (showSeconds) {\n <td class=\"form-group\" [class.has-error]=\"invalidSeconds\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"secondsPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event); changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\"\n />\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian -->\n @if (showMeridian) {\n <td>\n <button\n type=\"button\"\n class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >\n {{ meridian }}\n </button>\n </td>\n }\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\" (click)=\"changeHours(-hourStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- decrement minutes button-->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\" (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- decrement seconds button-->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\" (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n </tbody>\n</table>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ThyInnerTimePicker, isStandalone: true, selector: "thy-inner-time-picker", inputs: { hourStep: "hourStep", minuteStep: "minuteStep", secondsStep: "secondsStep", readonlyInput: "readonlyInput", disabled: "disabled", mousewheel: "mousewheel", arrowKeys: "arrowKeys", showSpinners: "showSpinners", showMeridian: "showMeridian", showMinutes: "showMinutes", showSeconds: "showSeconds", meridians: "meridians", min: "min", max: "max", hoursPlaceholder: "hoursPlaceholder", minutesPlaceholder: "minutesPlaceholder", secondsPlaceholder: "secondsPlaceholder", timeZone: "timeZone" }, outputs: { isValid: "isValid" }, providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, ThyTimePickerStore], usesOnChanges: true, ngImport: i0, template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\" (click)=\"changeHours(hourStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- increment minutes button -->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\" (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- increment seconds button -->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\" (click)=\"changeSeconds(secondsStep)\">\n <span class=\"thy-chevron thy-chevron-up\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"hoursPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event); changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"\n />\n </td>\n\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- minutes -->\n @if (showMinutes) {\n <td class=\"form-group\" [class.has-error]=\"invalidMinutes\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"minutesPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event); changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\"\n />\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- seconds -->\n @if (showSeconds) {\n <td class=\"form-group\" [class.has-error]=\"invalidSeconds\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"secondsPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event); changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\"\n />\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian -->\n @if (showMeridian) {\n <td>\n <button\n type=\"button\"\n class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >\n {{ meridian }}\n </button>\n </td>\n }\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\" (click)=\"changeHours(-hourStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- decrement minutes button-->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\" (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- decrement seconds button-->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\" (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n </tbody>\n</table>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
198
198
  }
199
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyInnerTimePicker, decorators: [{
200
200
  type: Component,
@@ -233,7 +233,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
233
233
  type: Input
234
234
  }], secondsPlaceholder: [{
235
235
  type: Input
236
+ }], timeZone: [{
237
+ type: Input
236
238
  }], isValid: [{
237
239
  type: Output
238
240
  }] } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL2lubmVyL2lubmVyLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci9pbm5lci9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJOUQsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUUvRCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBbUI7SUFDN0QsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGOztHQUVHO0FBU0gsTUFBTSxPQUFPLGtCQUFrQjtJQWdEM0IsSUFBSSxVQUFV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QUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFN0YXRpY1Byb3ZpZGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGdldENvbnRyb2xzVmFsdWUgfSBmcm9tICcuLi90aW1lLXBpY2tlci1jb250cm9scy51dGlsJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb25maWcgfSBmcm9tICcuL2lubmVyLXRpbWUtcGlja2VyLmNvbmZpZyc7XG5cbmltcG9ydCB7IFRpbWVDaGFuZ2VTb3VyY2UsIFRpbWVQaWNrZXJDb21wb25lbnRTdGF0ZSwgVGltZVBpY2tlckNvbnRyb2xzIH0gZnJvbSAnLi9pbm5lci10aW1lLXBpY2tlci5jbGFzcyc7XG5cbmltcG9ydCB7XG4gICAgaXNIb3VySW5wdXRWYWxpZCxcbiAgICBpc0lucHV0TGltaXRWYWxpZCxcbiAgICBpc0lucHV0VmFsaWQsXG4gICAgaXNNaW51dGVJbnB1dFZhbGlkLFxuICAgIGlzU2Vjb25kSW5wdXRWYWxpZCxcbiAgICBpc1ZhbGlkRGF0ZSxcbiAgICBwYWROdW1iZXIsXG4gICAgcGFyc2VUaW1lXG59IGZyb20gJy4uL3RpbWUtcGlja2VyLnV0aWxzJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRoeVRpbWVQaWNrZXJTdG9yZSB9IGZyb20gJy4vaW5uZXItdGltZS1waWNrZXIuc3RvcmUnO1xuXG5leHBvcnQgY29uc3QgVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBTdGF0aWNQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlJbm5lclRpbWVQaWNrZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1pbm5lci10aW1lLXBpY2tlcicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLCBUaHlUaW1lUGlja2VyU3RvcmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbm5lclRpbWVQaWNrZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVGltZVBpY2tlckNvbXBvbmVudFN0YXRlLCBUaW1lUGlja2VyQ29udHJvbHMsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBfc3RvcmUgPSBpbmplY3QoVGh5VGltZVBpY2tlclN0b3JlKTtcblxuICAgIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICAgIEBJbnB1dCgpIGhvdXJTdGVwOiBudW1iZXI7XG4gICAgLyoqIGhvdXJzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgbWludXRlU3RlcDogbnVtYmVyO1xuICAgIC8qKiBzZWNvbmRzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgc2Vjb25kc1N0ZXA6IG51bWJlcjtcbiAgICAvKiogaWYgdHJ1ZSBob3VycyBhbmQgbWludXRlcyBmaWVsZHMgd2lsbCBiZSByZWFkb25seSAqL1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXQ6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSBzY3JvbGwgaW5zaWRlIGhvdXJzIGFuZCBtaW51dGVzIGlucHV0cyB3aWxsIGNoYW5nZSB0aW1lICovXG4gICAgQElucHV0KCkgbW91c2V3aGVlbDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSB0aGUgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSB1cC9kb3duIGFycm93IGtleXMgb24gdGhlIGtleWJvYXJkICovXG4gICAgQElucHV0KCkgYXJyb3dLZXlzOiBib29sZWFuO1xuICAgIC8qKiBpZiB0cnVlIHNwaW5uZXIgYXJyb3dzIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5wdXRzIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93U3Bpbm5lcnM6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgbWVyaWRpYW4gYnV0dG9uIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93TWVyaWRpYW46IGJvb2xlYW47XG4gICAgLyoqIHNob3cgbWludXRlcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd01pbnV0ZXM6IGJvb2xlYW47XG4gICAgLyoqIHNob3cgc2Vjb25kcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd1NlY29uZHM6IGJvb2xlYW47XG4gICAgLyoqIG1lcmlkaWFuIGxhYmVscyBiYXNlZCBvbiBsb2NhbGUgKi9cbiAgICBASW5wdXQoKSBtZXJpZGlhbnM6IHN0cmluZ1tdO1xuICAgIC8qKiBtaW5pbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWluOiBEYXRlO1xuICAgIC8qKiBtYXhpbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWF4OiBEYXRlO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3IgaG91cnMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIGhvdXJzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIG1pbnV0ZXMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIG1pbnV0ZXNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3Igc2Vjb25kcyBmaWVsZCBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2Vjb25kc1BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogZW1pdHMgdHJ1ZSBpZiB2YWx1ZSBpcyBhIHZhbGlkIGRhdGUgKi9cbiAgICBAT3V0cHV0KCkgaXNWYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vIHVpIHZhcmlhYmxlc1xuICAgIGhvdXJzOiBzdHJpbmc7XG4gICAgbWludXRlczogc3RyaW5nO1xuICAgIHNlY29uZHM6IHN0cmluZztcbiAgICBtZXJpZGlhbjogc3RyaW5nO1xuXG4gICAgZ2V0IGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHlJbnB1dCB8fCB0aGlzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICAvLyBtaW4vbWF4IHZhbGlkYXRpb24gZm9yIGlucHV0IGZpZWxkc1xuICAgIGludmFsaWRIb3VycyA9IGZhbHNlO1xuICAgIGludmFsaWRNaW51dGVzID0gZmFsc2U7XG4gICAgaW52YWxpZFNlY29uZHMgPSBmYWxzZTtcblxuICAgIC8vIHRpbWUgcGlja2VyIGNvbnRyb2xzIHN0YXRlXG4gICAgY2FuSW5jcmVtZW50SG91cnM6IGJvb2xlYW47XG4gICAgY2FuSW5jcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgICBjYW5JbmNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgY2FuRGVjcmVtZW50SG91cnM6IGJvb2xlYW47XG4gICAgY2FuRGVjcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgICBjYW5EZWNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgY2FuVG9nZ2xlTWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yIG1ldGhvZHNcbiAgICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgICBvblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcml2YXRlIHRpbWVyUGlja2VyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IF9jb25maWcgPSBpbmplY3QoVGltZVBpY2tlckNvbmZpZyk7XG4gICAgICAgIGNvbnN0IF9jZCA9IHRoaXMuX2NkO1xuICAgICAgICBjb25zdCBfc3RvcmUgPSB0aGlzLl9zdG9yZTtcblxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIF9jb25maWcpO1xuXG4gICAgICAgIHRoaXMudGltZXJQaWNrZXJTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgX3N0b3JlXG4gICAgICAgICAgICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgVUkgdmFsdWVzIGlmIGRhdGUgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUaW1lKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy50aW1lclBpY2tlclN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBfc3RvcmVcbiAgICAgICAgICAgICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmNvbnRyb2xzKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNvbnRyb2xzU3RhdGU6IFRpbWVQaWNrZXJDb250cm9scykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChpc0lucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMsIHRoaXMuaXNQTSgpKSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgY29udHJvbHNTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIF9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlc2V0VmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkSG91cnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnZhbGlkTWludXRlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNQTSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd01lcmlkaWFuICYmIHRoaXMubWVyaWRpYW4gPT09IHRoaXMubWVyaWRpYW5zWzFdO1xuICAgIH1cblxuICAgIHByZXZEZWYoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB3aGVlbFNpZ24oJGV2ZW50OiBXaGVlbEV2ZW50SW5pdCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLnNpZ24oJGV2ZW50LmRlbHRhWSkgKiAtMTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0b3JlLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpO1xuICAgIH1cblxuICAgIGNoYW5nZUhvdXJzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlTWludXRlcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N0b3JlLmNoYW5nZU1pbnV0ZXMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlU2Vjb25kcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N0b3JlLmNoYW5nZVNlY29uZHMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlSG91cnMoaG91cnM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgICAgICB0aGlzLmhvdXJzID0gaG91cnM7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzSG91cklucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5pc1BNKCkpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRIb3VycyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTWludXRlcyhtaW51dGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5taW51dGVzID0gbWludXRlcztcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gaXNNaW51dGVJbnB1dFZhbGlkKHRoaXMubWludXRlcykgJiYgdGhpcy5pc1ZhbGlkTGltaXQoKTtcblxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZE1pbnV0ZXMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlY29uZHMoc2Vjb25kczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHNlY29uZHM7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzU2Vjb25kSW5wdXRWYWxpZCh0aGlzLnNlY29uZHMpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkTGltaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0lucHV0TGltaXRWYWxpZChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5taW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgICAgICAgICAgICBpc1BNOiB0aGlzLmlzUE0oKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgdGhpcy5taW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlVGltZSgpIHtcbiAgICAgICAgY29uc3QgX3NlY29uZHMgPSB0aGlzLnNob3dTZWNvbmRzID8gdGhpcy5zZWNvbmRzIDogdm9pZCAwO1xuICAgICAgICBjb25zdCBfbWludXRlcyA9IHRoaXMuc2hvd01pbnV0ZXMgPyB0aGlzLm1pbnV0ZXMgOiB2b2lkIDA7XG4gICAgICAgIGlmICghaXNJbnB1dFZhbGlkKHRoaXMuaG91cnMsIF9taW51dGVzLCBfc2Vjb25kcywgdGhpcy5pc1BNKCkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9yZS5zZXRUaW1lKHtcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMubWludXRlcyxcbiAgICAgICAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgICAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lcmlkaWFuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd01lcmlkaWFuIHx8ICF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9ob3Vyc1BlckRheUhhbGYgPSAxMjtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoe1xuICAgICAgICAgICAgc3RlcDogX2hvdXJzUGVyRGF5SGFsZixcbiAgICAgICAgICAgIHNvdXJjZTogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZShvYmopKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yZS53cml0ZVZhbHVlKHBhcnNlVGltZShvYmopKTtcbiAgICAgICAgfSBlbHNlIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmUud3JpdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbWVyUGlja2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVuZGVyVGltZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5ob3VycyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5taW51dGVzID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlY29uZHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWVyaWRpYW4gPSB0aGlzLm1lcmlkaWFuc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgX3ZhbHVlID0gcGFyc2VUaW1lKHZhbHVlKTtcbiAgICAgICAgY29uc3QgX2hvdXJzUGVyRGF5SGFsZiA9IDEyO1xuICAgICAgICBsZXQgX2hvdXJzID0gX3ZhbHVlLmdldEhvdXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd01lcmlkaWFuKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuID0gdGhpcy5tZXJpZGlhbnNbX2hvdXJzID49IF9ob3Vyc1BlckRheUhhbGYgPyAxIDogMF07XG4gICAgICAgICAgICBfaG91cnMgPSBfaG91cnMgJSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgLy8gc2hvdWxkIGJlIDEyIFBNLCBub3QgMDAgUE1cbiAgICAgICAgICAgIGlmIChfaG91cnMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBfaG91cnMgPSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3VycyA9IHBhZE51bWJlcihfaG91cnMpO1xuICAgICAgICB0aGlzLm1pbnV0ZXMgPSBwYWROdW1iZXIoX3ZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHBhZE51bWJlcihfdmFsdWUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICB9XG59XG4iLCI8dGFibGU+XG4gIDx0Ym9keT5cbiAgICA8dHIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtoaWRkZW5dPVwiIXNob3dTcGlubmVyc1wiPlxuICAgICAgPCEtLSBpbmNyZW1lbnQgaG91cnMgYnV0dG9uLS0+XG4gICAgICA8dGQ+XG4gICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5JbmNyZW1lbnRIb3VycyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VIb3Vycyhob3VyU3RlcClcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInRoeS1jaGV2cm9uIHRoeS1jaGV2cm9uLXVwXCI+PC9zcGFuXG4gICAgICAgID48L2E+XG4gICAgICA8L3RkPlxuICAgICAgPCEtLSBkaXZpZGVyIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gaW5jcmVtZW50IG1pbnV0ZXMgYnV0dG9uIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwKVwiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3BhblxuICAgICAgICAgID48L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBpbmNyZW1lbnQgc2Vjb25kcyBidXR0b24gLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50U2Vjb25kcyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VTZWNvbmRzKHNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIHNwYWNlIGJldHdlZW4gLS0+XG4gICAgICBAaWYgKHNob3dNZXJpZGlhbikge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gbWVyaWRpYW4gcGxhY2Vob2xkZXItLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD48L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyPlxuICAgICAgPCEtLSBob3VycyAtLT5cbiAgICAgIDx0ZCBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbY2xhc3MuaGFzLWVycm9yXT1cImludmFsaWRIb3Vyc1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZEhvdXJzXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LWNlbnRlciB0aHktdGltZS1waWNrZXItZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJob3Vyc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaG91cnNcIlxuICAgICAgICAgICh3aGVlbCk9XCJwcmV2RGVmKCRldmVudCk7IGNoYW5nZUhvdXJzKGhvdXJTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZUhvdXJzKGhvdXJTdGVwLCAna2V5JylcIlxuICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VIb3VycygtaG91clN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVIb3VycygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgIDwvdGQ+XG5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtaW51dGVzIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkTWludXRlc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZE1pbnV0ZXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW51dGVzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlTWludXRlcyhtaW51dGVTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwLCAna2V5JylcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZU1pbnV0ZXMoLW1pbnV0ZVN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZU1pbnV0ZXMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBzZWNvbmRzIC0tPlxuICAgICAgQGlmIChzaG93U2Vjb25kcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkU2Vjb25kc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFNlY29uZHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWNvbmRzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNlY29uZHNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlU2Vjb25kcyhzZWNvbmRzU3RlcCAqIHdoZWVsU2lnbigkZXZlbnQpLCAnd2hlZWwnKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZVNlY29uZHMoc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlU2Vjb25kcygtc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlY29uZHMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFZGl0YWJsZSB8fCAhY2FuVG9nZ2xlTWVyaWRpYW5cIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VkaXRhYmxlIHx8ICFjYW5Ub2dnbGVNZXJpZGlhblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVyaWRpYW4oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBtZXJpZGlhbiB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbaGlkZGVuXT1cIiFzaG93U3Bpbm5lcnNcIj5cbiAgICAgIDwhLS0gZGVjcmVtZW50IGhvdXJzIGJ1dHRvbi0tPlxuICAgICAgPHRkPlxuICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50SG91cnMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlSG91cnMoLWhvdXJTdGVwKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRlY3JlbWVudCBtaW51dGVzIGJ1dHRvbi0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcygtbWludXRlU3RlcClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBkZWNyZW1lbnQgc2Vjb25kcyBidXR0b24tLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5EZWNyZW1lbnRTZWNvbmRzIHx8ICFpc0VkaXRhYmxlXCIgKGNsaWNrKT1cImNoYW5nZVNlY29uZHMoLXNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiBwbGFjZWhvbGRlci0tPlxuICAgICAgQGlmIChzaG93TWVyaWRpYW4pIHtcbiAgICAgICAgPHRkPjwvdGQ+XG4gICAgICB9XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL2lubmVyL2lubmVyLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci9pbm5lci9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJOUQsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUUvRCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBbUI7SUFDN0QsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGOztHQUVHO0FBU0gsTUFBTSxPQUFPLGtCQUFrQjtJQWtEM0IsSUFBSSxVQUFV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aUMsRUFBRSxrQkFBa0IsQ0FBQyxjQUV0RCxJQUFJLFdBQ1AsRUFBRTt3REFPRixRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFN0YXRpY1Byb3ZpZGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGdldENvbnRyb2xzVmFsdWUgfSBmcm9tICcuLi90aW1lLXBpY2tlci1jb250cm9scy51dGlsJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb25maWcgfSBmcm9tICcuL2lubmVyLXRpbWUtcGlja2VyLmNvbmZpZyc7XG5cbmltcG9ydCB7IFRpbWVDaGFuZ2VTb3VyY2UsIFRpbWVQaWNrZXJDb21wb25lbnRTdGF0ZSwgVGltZVBpY2tlckNvbnRyb2xzIH0gZnJvbSAnLi9pbm5lci10aW1lLXBpY2tlci5jbGFzcyc7XG5cbmltcG9ydCB7XG4gICAgaXNIb3VySW5wdXRWYWxpZCxcbiAgICBpc0lucHV0TGltaXRWYWxpZCxcbiAgICBpc0lucHV0VmFsaWQsXG4gICAgaXNNaW51dGVJbnB1dFZhbGlkLFxuICAgIGlzU2Vjb25kSW5wdXRWYWxpZCxcbiAgICBpc1ZhbGlkRGF0ZSxcbiAgICBwYWROdW1iZXIsXG4gICAgcGFyc2VUaW1lXG59IGZyb20gJy4uL3RpbWUtcGlja2VyLnV0aWxzJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRoeVRpbWVQaWNrZXJTdG9yZSB9IGZyb20gJy4vaW5uZXItdGltZS1waWNrZXIuc3RvcmUnO1xuXG5leHBvcnQgY29uc3QgVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBTdGF0aWNQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlJbm5lclRpbWVQaWNrZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1pbm5lci10aW1lLXBpY2tlcicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLCBUaHlUaW1lUGlja2VyU3RvcmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbm5lclRpbWVQaWNrZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVGltZVBpY2tlckNvbXBvbmVudFN0YXRlLCBUaW1lUGlja2VyQ29udHJvbHMsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBfc3RvcmUgPSBpbmplY3QoVGh5VGltZVBpY2tlclN0b3JlKTtcblxuICAgIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICAgIEBJbnB1dCgpIGhvdXJTdGVwOiBudW1iZXI7XG4gICAgLyoqIGhvdXJzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgbWludXRlU3RlcDogbnVtYmVyO1xuICAgIC8qKiBzZWNvbmRzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgc2Vjb25kc1N0ZXA6IG51bWJlcjtcbiAgICAvKiogaWYgdHJ1ZSBob3VycyBhbmQgbWludXRlcyBmaWVsZHMgd2lsbCBiZSByZWFkb25seSAqL1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXQ6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSBzY3JvbGwgaW5zaWRlIGhvdXJzIGFuZCBtaW51dGVzIGlucHV0cyB3aWxsIGNoYW5nZSB0aW1lICovXG4gICAgQElucHV0KCkgbW91c2V3aGVlbDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSB0aGUgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSB1cC9kb3duIGFycm93IGtleXMgb24gdGhlIGtleWJvYXJkICovXG4gICAgQElucHV0KCkgYXJyb3dLZXlzOiBib29sZWFuO1xuICAgIC8qKiBpZiB0cnVlIHNwaW5uZXIgYXJyb3dzIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5wdXRzIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93U3Bpbm5lcnM6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgbWVyaWRpYW4gYnV0dG9uIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93TWVyaWRpYW46IGJvb2xlYW47XG4gICAgLyoqIHNob3cgbWludXRlcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd01pbnV0ZXM6IGJvb2xlYW47XG4gICAgLyoqIHNob3cgc2Vjb25kcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd1NlY29uZHM6IGJvb2xlYW47XG4gICAgLyoqIG1lcmlkaWFuIGxhYmVscyBiYXNlZCBvbiBsb2NhbGUgKi9cbiAgICBASW5wdXQoKSBtZXJpZGlhbnM6IHN0cmluZ1tdO1xuICAgIC8qKiBtaW5pbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWluOiBEYXRlO1xuICAgIC8qKiBtYXhpbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWF4OiBEYXRlO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3IgaG91cnMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIGhvdXJzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIG1pbnV0ZXMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIG1pbnV0ZXNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3Igc2Vjb25kcyBmaWVsZCBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2Vjb25kc1BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgLyoqIHRpbWV6b25lICovXG4gICAgQElucHV0KCkgdGltZVpvbmU6IHN0cmluZztcblxuICAgIC8qKiBlbWl0cyB0cnVlIGlmIHZhbHVlIGlzIGEgdmFsaWQgZGF0ZSAqL1xuICAgIEBPdXRwdXQoKSBpc1ZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLy8gdWkgdmFyaWFibGVzXG4gICAgaG91cnM6IHN0cmluZztcbiAgICBtaW51dGVzOiBzdHJpbmc7XG4gICAgc2Vjb25kczogc3RyaW5nO1xuICAgIG1lcmlkaWFuOiBzdHJpbmc7XG5cbiAgICBnZXQgaXNFZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5yZWFkb25seUlucHV0IHx8IHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIC8vIG1pbi9tYXggdmFsaWRhdGlvbiBmb3IgaW5wdXQgZmllbGRzXG4gICAgaW52YWxpZEhvdXJzID0gZmFsc2U7XG4gICAgaW52YWxpZE1pbnV0ZXMgPSBmYWxzZTtcbiAgICBpbnZhbGlkU2Vjb25kcyA9IGZhbHNlO1xuXG4gICAgLy8gdGltZSBwaWNrZXIgY29udHJvbHMgc3RhdGVcbiAgICBjYW5JbmNyZW1lbnRIb3VyczogYm9vbGVhbjtcbiAgICBjYW5JbmNyZW1lbnRNaW51dGVzOiBib29sZWFuO1xuICAgIGNhbkluY3JlbWVudFNlY29uZHM6IGJvb2xlYW47XG5cbiAgICBjYW5EZWNyZW1lbnRIb3VyczogYm9vbGVhbjtcbiAgICBjYW5EZWNyZW1lbnRNaW51dGVzOiBib29sZWFuO1xuICAgIGNhbkRlY3JlbWVudFNlY29uZHM6IGJvb2xlYW47XG5cbiAgICBjYW5Ub2dnbGVNZXJpZGlhbjogYm9vbGVhbjtcblxuICAgIC8vIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IgbWV0aG9kc1xuICAgIG9uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICAgIG9uVG91Y2hlZCA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuICAgIHByaXZhdGUgdGltZXJQaWNrZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgX2NvbmZpZyA9IGluamVjdChUaW1lUGlja2VyQ29uZmlnKTtcbiAgICAgICAgY29uc3QgX2NkID0gdGhpcy5fY2Q7XG4gICAgICAgIGNvbnN0IF9zdG9yZSA9IHRoaXMuX3N0b3JlO1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgX2NvbmZpZyk7XG5cbiAgICAgICAgdGhpcy50aW1lclBpY2tlclN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBfc3RvcmVcbiAgICAgICAgICAgICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnZhbHVlKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBVSSB2YWx1ZXMgaWYgZGF0ZSBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlclRpbWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RvcmUudXBkYXRlQ29udHJvbHMoZ2V0Q29udHJvbHNWYWx1ZSh0aGlzKSwgdGhpcy50aW1lWm9uZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRpbWVyUGlja2VyU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIF9zdG9yZVxuICAgICAgICAgICAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuY29udHJvbHMpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoY29udHJvbHNTdGF0ZTogVGltZVBpY2tlckNvbnRyb2xzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGlzSW5wdXRWYWxpZCh0aGlzLmhvdXJzLCB0aGlzLm1pbnV0ZXMsIHRoaXMuc2Vjb25kcywgdGhpcy5pc1BNKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjb250cm9sc1N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzZXRWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmludmFsaWRIb3VycyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmludmFsaWRNaW51dGVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW52YWxpZFNlY29uZHMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1BNKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93TWVyaWRpYW4gJiYgdGhpcy5tZXJpZGlhbiA9PT0gdGhpcy5tZXJpZGlhbnNbMV07XG4gICAgfVxuXG4gICAgcHJldkRlZigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHdoZWVsU2lnbigkZXZlbnQ6IFdoZWVsRXZlbnRJbml0KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguc2lnbigkZXZlbnQuZGVsdGFZKSAqIC0xO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RvcmUudXBkYXRlQ29udHJvbHMoZ2V0Q29udHJvbHNWYWx1ZSh0aGlzKSwgdGhpcy50aW1lWm9uZSk7XG4gICAgfVxuXG4gICAgY2hhbmdlSG91cnMoc3RlcDogbnVtYmVyLCBzb3VyY2U6IFRpbWVDaGFuZ2VTb3VyY2UgPSAnJyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgICAgICB0aGlzLl9zdG9yZS5jaGFuZ2VIb3Vycyh7IHN0ZXAsIHNvdXJjZSB9LCB0aGlzLnRpbWVab25lKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VNaW51dGVzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlTWludXRlcyh7IHN0ZXAsIHNvdXJjZSB9LCB0aGlzLnRpbWVab25lKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VTZWNvbmRzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlU2Vjb25kcyh7IHN0ZXAsIHNvdXJjZSB9LCB0aGlzLnRpbWVab25lKTtcbiAgICB9XG5cbiAgICB1cGRhdGVIb3Vycyhob3Vyczogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuaG91cnMgPSBob3VycztcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gaXNIb3VySW5wdXRWYWxpZCh0aGlzLmhvdXJzLCB0aGlzLmlzUE0oKSkgJiYgdGhpcy5pc1ZhbGlkTGltaXQoKTtcblxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZEhvdXJzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVNaW51dGVzKG1pbnV0ZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgICAgICB0aGlzLm1pbnV0ZXMgPSBtaW51dGVzO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSBpc01pbnV0ZUlucHV0VmFsaWQodGhpcy5taW51dGVzKSAmJiB0aGlzLmlzVmFsaWRMaW1pdCgpO1xuXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5pbnZhbGlkTWludXRlcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlU2Vjb25kcyhzZWNvbmRzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZWNvbmRzID0gc2Vjb25kcztcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gaXNTZWNvbmRJbnB1dFZhbGlkKHRoaXMuc2Vjb25kcykgJiYgdGhpcy5pc1ZhbGlkTGltaXQoKTtcblxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFNlY29uZHMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZSgpO1xuICAgIH1cblxuICAgIGlzVmFsaWRMaW1pdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzSW5wdXRMaW1pdFZhbGlkKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLm1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kczogdGhpcy5zZWNvbmRzLFxuICAgICAgICAgICAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5tYXgsXG4gICAgICAgICAgICB0aGlzLm1pbixcbiAgICAgICAgICAgIHRoaXMudGltZVpvbmVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlVGltZSgpIHtcbiAgICAgICAgY29uc3QgX3NlY29uZHMgPSB0aGlzLnNob3dTZWNvbmRzID8gdGhpcy5zZWNvbmRzIDogdm9pZCAwO1xuICAgICAgICBjb25zdCBfbWludXRlcyA9IHRoaXMuc2hvd01pbnV0ZXMgPyB0aGlzLm1pbnV0ZXMgOiB2b2lkIDA7XG4gICAgICAgIGlmICghaXNJbnB1dFZhbGlkKHRoaXMuaG91cnMsIF9taW51dGVzLCBfc2Vjb25kcywgdGhpcy5pc1BNKCkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9yZS5zZXRUaW1lKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLm1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kczogdGhpcy5zZWNvbmRzLFxuICAgICAgICAgICAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy50aW1lWm9uZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lcmlkaWFuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd01lcmlkaWFuIHx8ICF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9ob3Vyc1BlckRheUhhbGYgPSAxMjtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoe1xuICAgICAgICAgICAgc3RlcDogX2hvdXJzUGVyRGF5SGFsZixcbiAgICAgICAgICAgIHNvdXJjZTogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZShvYmopKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yZS53cml0ZVZhbHVlKHBhcnNlVGltZShvYmosIHRoaXMudGltZVpvbmUpKTtcbiAgICAgICAgfSBlbHNlIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmUud3JpdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbWVyUGlja2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVuZGVyVGltZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5ob3VycyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5taW51dGVzID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlY29uZHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWVyaWRpYW4gPSB0aGlzLm1lcmlkaWFuc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgX3ZhbHVlID0gcGFyc2VUaW1lKHZhbHVlLCB0aGlzLnRpbWVab25lKTtcbiAgICAgICAgY29uc3QgX2hvdXJzUGVyRGF5SGFsZiA9IDEyO1xuICAgICAgICBsZXQgX2hvdXJzID0gX3ZhbHVlLmdldEhvdXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd01lcmlkaWFuKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuID0gdGhpcy5tZXJpZGlhbnNbX2hvdXJzID49IF9ob3Vyc1BlckRheUhhbGYgPyAxIDogMF07XG4gICAgICAgICAgICBfaG91cnMgPSBfaG91cnMgJSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgLy8gc2hvdWxkIGJlIDEyIFBNLCBub3QgMDAgUE1cbiAgICAgICAgICAgIGlmIChfaG91cnMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBfaG91cnMgPSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3VycyA9IHBhZE51bWJlcihfaG91cnMpO1xuICAgICAgICB0aGlzLm1pbnV0ZXMgPSBwYWROdW1iZXIoX3ZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHBhZE51bWJlcihfdmFsdWUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICB9XG59XG4iLCI8dGFibGU+XG4gIDx0Ym9keT5cbiAgICA8dHIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtoaWRkZW5dPVwiIXNob3dTcGlubmVyc1wiPlxuICAgICAgPCEtLSBpbmNyZW1lbnQgaG91cnMgYnV0dG9uLS0+XG4gICAgICA8dGQ+XG4gICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5JbmNyZW1lbnRIb3VycyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VIb3Vycyhob3VyU3RlcClcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInRoeS1jaGV2cm9uIHRoeS1jaGV2cm9uLXVwXCI+PC9zcGFuXG4gICAgICAgID48L2E+XG4gICAgICA8L3RkPlxuICAgICAgPCEtLSBkaXZpZGVyIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gaW5jcmVtZW50IG1pbnV0ZXMgYnV0dG9uIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwKVwiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3BhblxuICAgICAgICAgID48L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBpbmNyZW1lbnQgc2Vjb25kcyBidXR0b24gLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50U2Vjb25kcyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VTZWNvbmRzKHNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIHNwYWNlIGJldHdlZW4gLS0+XG4gICAgICBAaWYgKHNob3dNZXJpZGlhbikge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gbWVyaWRpYW4gcGxhY2Vob2xkZXItLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD48L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyPlxuICAgICAgPCEtLSBob3VycyAtLT5cbiAgICAgIDx0ZCBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbY2xhc3MuaGFzLWVycm9yXT1cImludmFsaWRIb3Vyc1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZEhvdXJzXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LWNlbnRlciB0aHktdGltZS1waWNrZXItZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJob3Vyc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaG91cnNcIlxuICAgICAgICAgICh3aGVlbCk9XCJwcmV2RGVmKCRldmVudCk7IGNoYW5nZUhvdXJzKGhvdXJTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZUhvdXJzKGhvdXJTdGVwLCAna2V5JylcIlxuICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VIb3VycygtaG91clN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVIb3VycygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgIDwvdGQ+XG5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtaW51dGVzIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkTWludXRlc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZE1pbnV0ZXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW51dGVzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlTWludXRlcyhtaW51dGVTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwLCAna2V5JylcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZU1pbnV0ZXMoLW1pbnV0ZVN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZU1pbnV0ZXMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBzZWNvbmRzIC0tPlxuICAgICAgQGlmIChzaG93U2Vjb25kcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkU2Vjb25kc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFNlY29uZHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWNvbmRzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNlY29uZHNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlU2Vjb25kcyhzZWNvbmRzU3RlcCAqIHdoZWVsU2lnbigkZXZlbnQpLCAnd2hlZWwnKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZVNlY29uZHMoc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlU2Vjb25kcygtc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlY29uZHMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFZGl0YWJsZSB8fCAhY2FuVG9nZ2xlTWVyaWRpYW5cIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VkaXRhYmxlIHx8ICFjYW5Ub2dnbGVNZXJpZGlhblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVyaWRpYW4oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBtZXJpZGlhbiB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbaGlkZGVuXT1cIiFzaG93U3Bpbm5lcnNcIj5cbiAgICAgIDwhLS0gZGVjcmVtZW50IGhvdXJzIGJ1dHRvbi0tPlxuICAgICAgPHRkPlxuICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50SG91cnMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlSG91cnMoLWhvdXJTdGVwKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRlY3JlbWVudCBtaW51dGVzIGJ1dHRvbi0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcygtbWludXRlU3RlcClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBkZWNyZW1lbnQgc2Vjb25kcyBidXR0b24tLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5EZWNyZW1lbnRTZWNvbmRzIHx8ICFpc0VkaXRhYmxlXCIgKGNsaWNrKT1cImNoYW5nZVNlY29uZHMoLXNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiBwbGFjZWhvbGRlci0tPlxuICAgICAgQGlmIChzaG93TWVyaWRpYW4pIHtcbiAgICAgICAgPHRkPjwvdGQ+XG4gICAgICB9XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
@@ -31,50 +31,50 @@ export class ThyTimePickerStore extends MiniStore {
31
31
  this.setState({ value: value });
32
32
  }
33
33
  }
34
- changeHours(event) {
34
+ changeHours(event, timeZone) {
35
35
  const state = this.snapshot;
36
36
  if (!canChangeValue(state.config, event) || !canChangeHours(event, state.controls)) {
37
37
  return state;
38
38
  }
39
- const _newTime = changeTime(state.value, { hour: event.step });
39
+ const _newTime = changeTime(state.value, { hour: event.step }, timeZone);
40
40
  if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
41
41
  return state;
42
42
  }
43
43
  this.setState({ value: _newTime });
44
44
  }
45
- changeMinutes(event) {
45
+ changeMinutes(event, timeZone) {
46
46
  const state = this.snapshot;
47
47
  if (!canChangeValue(state.config, event) || !canChangeMinutes(event, state.controls)) {
48
48
  return state;
49
49
  }
50
- const _newTime = changeTime(state.value, { minute: event.step });
50
+ const _newTime = changeTime(state.value, { minute: event.step }, timeZone);
51
51
  if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
52
52
  return state;
53
53
  }
54
54
  this.setState({ value: _newTime });
55
55
  }
56
- changeSeconds(event) {
56
+ changeSeconds(event, timeZone) {
57
57
  const state = this.snapshot;
58
58
  if (!canChangeValue(state.config, event) || !canChangeSeconds(event, state.controls)) {
59
59
  return state;
60
60
  }
61
61
  const _newTime = changeTime(state.value, {
62
62
  seconds: event.step
63
- });
63
+ }, timeZone);
64
64
  if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
65
65
  return state;
66
66
  }
67
67
  this.setState({ value: _newTime });
68
68
  }
69
- setTime(value) {
69
+ setTime(value, timeZone) {
70
70
  const state = this.snapshot;
71
71
  if (!canChangeValue(state.config)) {
72
72
  return state;
73
73
  }
74
- const _newTime = setTime(state.value, value);
74
+ const _newTime = setTime(state.value, value, timeZone);
75
75
  this.setState({ value: _newTime });
76
76
  }
77
- updateControls(value) {
77
+ updateControls(value, timeZone) {
78
78
  const state = this.snapshot;
79
79
  const _newControlsState = timePickerControls(state.value, value);
80
80
  const _newState = {
@@ -84,7 +84,7 @@ export class ThyTimePickerStore extends MiniStore {
84
84
  };
85
85
  if (state.config.showMeridian !== _newState.config.showMeridian) {
86
86
  if (state.value) {
87
- _newState.value = new TinyDate(state.value)?.nativeDate;
87
+ _newState.value = new TinyDate(state.value, timeZone)?.nativeDate;
88
88
  }
89
89
  }
90
90
  this.setState(_newState);
@@ -101,34 +101,34 @@ __decorate([
101
101
  __decorate([
102
102
  MiniAction(),
103
103
  __metadata("design:type", Function),
104
- __metadata("design:paramtypes", [Object]),
104
+ __metadata("design:paramtypes", [Object, String]),
105
105
  __metadata("design:returntype", void 0)
106
106
  ], ThyTimePickerStore.prototype, "changeHours", null);
107
107
  __decorate([
108
108
  MiniAction(),
109
109
  __metadata("design:type", Function),
110
- __metadata("design:paramtypes", [Object]),
110
+ __metadata("design:paramtypes", [Object, String]),
111
111
  __metadata("design:returntype", void 0)
112
112
  ], ThyTimePickerStore.prototype, "changeMinutes", null);
113
113
  __decorate([
114
114
  MiniAction(),
115
115
  __metadata("design:type", Function),
116
- __metadata("design:paramtypes", [Object]),
116
+ __metadata("design:paramtypes", [Object, String]),
117
117
  __metadata("design:returntype", void 0)
118
118
  ], ThyTimePickerStore.prototype, "changeSeconds", null);
119
119
  __decorate([
120
120
  MiniAction(),
121
121
  __metadata("design:type", Function),
122
- __metadata("design:paramtypes", [Object]),
122
+ __metadata("design:paramtypes", [Object, String]),
123
123
  __metadata("design:returntype", void 0)
124
124
  ], ThyTimePickerStore.prototype, "setTime", null);
125
125
  __decorate([
126
126
  MiniAction(),
127
127
  __metadata("design:type", Function),
128
- __metadata("design:paramtypes", [Object]),
128
+ __metadata("design:paramtypes", [Object, String]),
129
129
  __metadata("design:returntype", void 0)
130
130
  ], ThyTimePickerStore.prototype, "updateControls", null);
131
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ThyTimePickerStore, decorators: [{
132
132
  type: Injectable
133
133
  }], ctorParameters: () => [], propDecorators: { writeValue: [], changeHours: [], changeMinutes: [], changeSeconds: [], setTime: [], updateControls: [] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdGltZS1waWNrZXIuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdGltZS1waWNrZXIvaW5uZXIvaW5uZXItdGltZS1waWNrZXIuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0SSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFROUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFvQjtJQUN6QyxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixFQUFFO0lBQzlCLFFBQVEsRUFBRTtRQUNOLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxJQUFJO1FBRXpCLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxJQUFJO1FBRXpCLGlCQUFpQixFQUFFLElBQUk7S0FDMUI7Q0FDSixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBMEI7SUFDOUQ7UUFDSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUdELFVBQVUsQ0FBQyxLQUFXO1FBQ2xCLElBQUks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REFjWjtBQUdEO0lBREMsVUFBVSxFQUFFOzs7O3VEQWdCWjtBQUdEO0lBREMsVUFBVSxFQUFFOzs7O2lEQVNaO0FBR0Q7SUFEQyxVQUFVLEVBQUU7Ozs7d0RBaUJaOzRGQTFGUSxrQkFBa0I7a0JBRDlCLFVBQVU7d0RBT1AsVUFBVSxNQU9WLFdBQVcsTUFnQlgsYUFBYSxNQWdCYixhQUFhLE1Ba0JiLE9BQU8sTUFXUCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWluaUFjdGlvbiwgTWluaVN0b3JlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRpbnlEYXRlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IGNhbkNoYW5nZUhvdXJzLCBjYW5DaGFuZ2VNaW51dGVzLCBjYW5DaGFuZ2VTZWNvbmRzLCBjYW5DaGFuZ2VWYWx1ZSwgdGltZVBpY2tlckNvbnRyb2xzIH0gZnJvbSAnLi4vdGltZS1waWNrZXItY29udHJvbHMudXRpbCc7XG5pbXBvcnQgeyBjaGFuZ2VUaW1lLCBpc1ZhbGlkTGltaXQsIHNldFRpbWUgfSBmcm9tICcuLi90aW1lLXBpY2tlci51dGlscyc7XG5pbXBvcnQgeyBUaW1lLCBUaW1lQ2hhbmdlRXZlbnQsIFRpbWVQaWNrZXJDb21wb25lbnRTdGF0ZSwgVGltZVBpY2tlckNvbnRyb2xzIH0gZnJvbSAnLi9pbm5lci10aW1lLXBpY2tlci5jbGFzcyc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9pbm5lci10aW1lLXBpY2tlci5jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVQaWNrZXJTdGF0ZSB7XG4gICAgdmFsdWU6IERhdGU7XG4gICAgY29uZmlnOiBUaW1lUGlja2VyQ29tcG9uZW50U3RhdGU7XG4gICAgY29udHJvbHM6IFRpbWVQaWNrZXJDb250cm9scztcbn1cblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogVGltZVBpY2tlclN0YXRlID0ge1xuICAgIHZhbHVlOiBudWxsLFxuICAgIGNvbmZpZzogbmV3IFRpbWVQaWNrZXJDb25maWcoKSxcbiAgICBjb250cm9sczoge1xuICAgICAgICBjYW5JbmNyZW1lbnRIb3VyczogdHJ1ZSxcbiAgICAgICAgY2FuSW5jcmVtZW50TWludXRlczogdHJ1ZSxcbiAgICAgICAgY2FuSW5jcmVtZW50U2Vjb25kczogdHJ1ZSxcblxuICAgICAgICBjYW5EZWNyZW1lbnRIb3VyczogdHJ1ZSxcbiAgICAgICAgY2FuRGVjcmVtZW50TWludXRlczogdHJ1ZSxcbiAgICAgICAgY2FuRGVjcmVtZW50U2Vjb25kczogdHJ1ZSxcblxuICAgICAgICBjYW5Ub2dnbGVNZXJpZGlhbjogdHJ1ZVxuICAgIH1cbn07XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUaHlUaW1lUGlja2VyU3RvcmUgZXh0ZW5kcyBNaW5pU3RvcmU8VGltZVBpY2tlclN0YXRlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKGluaXRpYWxTdGF0ZSk7XG4gICAgfVxuXG4gICAgQE1pbmlBY3Rpb24oKVxuICAgIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgaWYgKHZhbHVlPy5nZXRUaW1lKCkgIT09IHRoaXMuc25hcHNob3QudmFsdWU/LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBNaW5pQWN0aW9uKClcbiAgICBjaGFuZ2VIb3VycyhldmVudDogVGltZUNoYW5nZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zbmFwc2hvdDtcbiAgICAgICAgaWYgKCFjYW5DaGFuZ2VWYWx1ZShzdGF0ZS5jb25maWcsIGV2ZW50KSB8fCAhY2FuQ2hhbmdlSG91cnMoZXZlbnQsIHN0YXRlLmNvbnRyb2xzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgX25ld1RpbWUgPSBjaGFuZ2VUaW1lKHN0YXRlLnZhbHVlLCB7IGhvdXI6IGV2ZW50LnN0ZXAgfSk7XG5cbiAgICAgICAgaWYgKChzdGF0ZS5jb25maWcubWF4IHx8IHN0YXRlLmNvbmZpZy5taW4pICYmICFpc1ZhbGlkTGltaXQoc3RhdGUuY29uZmlnLCBfbmV3VGltZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgQE1pbmlBY3Rpb24oKVxuICAgIGNoYW5nZU1pbnV0ZXMoZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc25hcHNob3Q7XG4gICAgICAgIGlmICghY2FuQ2hhbmdlVmFsdWUoc3RhdGUuY29uZmlnLCBldmVudCkgfHwgIWNhbkNoYW5nZU1pbnV0ZXMoZXZlbnQsIHN0YXRlLmNvbnRyb2xzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgX25ld1RpbWUgPSBjaGFuZ2VUaW1lKHN0YXRlLnZhbHVlLCB7IG1pbnV0ZTogZXZlbnQuc3RlcCB9KTtcblxuICAgICAgICBpZiAoKHN0YXRlLmNvbmZpZy5tYXggfHwgc3RhdGUuY29uZmlnLm1pbikgJiYgIWlzVmFsaWRMaW1pdChzdGF0ZS5jb25maWcsIF9uZXdUaW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBfbmV3VGltZSB9KTtcbiAgICB9XG5cbiAgICBATWluaUFjdGlvbigpXG4gICAgY2hhbmdlU2Vjb25kcyhldmVudDogVGltZUNoYW5nZUV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zbmFwc2hvdDtcbiAgICAgICAgaWYgKCFjYW5DaGFuZ2VWYWx1ZShzdGF0ZS5jb25maWcsIGV2ZW50KSB8fCAhY2FuQ2hhbmdlU2Vjb25kcyhldmVudCwgc3RhdGUuY29udHJvbHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfbmV3VGltZSA9IGNoYW5nZVRpbWUoc3RhdGUudmFsdWUsIHtcbiAgICAgICAgICAgIHNlY29uZHM6IGV2ZW50LnN0ZXBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKChzdGF0ZS5jb25maWcubWF4IHx8IHN0YXRlLmNvbmZpZy5taW4pICYmICFpc1ZhbGlkTGltaXQoc3RhdGUuY29uZmlnLCBfbmV3VGltZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgQE1pbmlBY3Rpb24oKVxuICAgIHNldFRpbWUodmFsdWU6IFRpbWUpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNuYXBzaG90O1xuICAgICAgICBpZiAoIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9uZXdUaW1lID0gc2V0VGltZShzdGF0ZS52YWx1ZSwgdmFsdWUpO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IF9uZXdUaW1lIH0pO1xuICAgIH1cblxuICAgIEBNaW5pQWN0aW9uKClcbiAgICB1cGRhdGVDb250cm9scyh2YWx1ZTogVGltZVBpY2tlckNvbXBvbmVudFN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zbmFwc2hvdDtcbiAgICAgICAgY29uc3QgX25ld0NvbnRyb2xzU3RhdGUgPSB0aW1lUGlja2VyQ29udHJvbHMoc3RhdGUudmFsdWUsIHZhbHVlKTtcbiAgICAgICAgY29uc3QgX25ld1N0YXRlOiBUaW1lUGlja2VyU3RhdGUgPSB7XG4gICAgICAgICAgICB2YWx1ZTogc3RhdGUudmFsdWUsXG4gICAgICAgICAgICBjb25maWc6IHZhbHVlLFxuICAgICAgICAgICAgY29udHJvbHM6IF9uZXdDb250cm9sc1N0YXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHN0YXRlLmNvbmZpZy5zaG93TWVyaWRpYW4gIT09IF9uZXdTdGF0ZS5jb25maWcuc2hvd01lcmlkaWFuKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfbmV3U3RhdGUudmFsdWUgPSBuZXcgVGlueURhdGUoc3RhdGUudmFsdWUpPy5uYXRpdmVEYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZShfbmV3U3RhdGUpO1xuICAgIH1cbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdGltZS1waWNrZXIuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdGltZS1waWNrZXIvaW5uZXIvaW5uZXItdGltZS1waWNrZXIuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0SSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFROUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFvQjtJQUN6QyxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixFQUFFO0lBQzlCLFFBQVEsRUFBRTtRQUNOLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxJQUFJO1FBRXpCLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixtQkFBbUIsRUFBRSxJQUFJO1FBRXpCLGlCQUFpQixFQUFFLElBQUk7S0FDMUI7Q0FDSixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBMEI7SUFDOUQ7UUFDSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUdELFVBQVUsQ0FBQyxLQUFXO1FBQ2xCLElBQUks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QWxCLGtCQUFrQjs7QUFNM0I7SUFEQyxVQUFVLEVBQUU7O3FDQUNLLElBQUk7O29EQUlyQjtBQUdEO0lBREMsVUFBVSxFQUFFOzs7O3FEQWNaO0FBR0Q7SUFEQyxVQUFVLEVBQUU7Ozs7dURBY1o7QUFHRDtJQURDLFVBQVUsRUFBRTs7Ozt1REFvQlo7QUFHRDtJQURDLFVBQVUsRUFBRTs7OztpREFTWjtBQUdEO0lBREMsVUFBVSxFQUFFOzs7O3dEQWlCWjs0RkE5RlEsa0JBQWtCO2tCQUQ5QixVQUFVO3dEQU9QLFVBQVUsTUFPVixXQUFXLE1BZ0JYLGFBQWEsTUFnQmIsYUFBYSxNQXNCYixPQUFPLE1BV1AsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1pbmlBY3Rpb24sIE1pbmlTdG9yZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBjYW5DaGFuZ2VIb3VycywgY2FuQ2hhbmdlTWludXRlcywgY2FuQ2hhbmdlU2Vjb25kcywgY2FuQ2hhbmdlVmFsdWUsIHRpbWVQaWNrZXJDb250cm9scyB9IGZyb20gJy4uL3RpbWUtcGlja2VyLWNvbnRyb2xzLnV0aWwnO1xuaW1wb3J0IHsgY2hhbmdlVGltZSwgaXNWYWxpZExpbWl0LCBzZXRUaW1lIH0gZnJvbSAnLi4vdGltZS1waWNrZXIudXRpbHMnO1xuaW1wb3J0IHsgVGltZSwgVGltZUNoYW5nZUV2ZW50LCBUaW1lUGlja2VyQ29tcG9uZW50U3RhdGUsIFRpbWVQaWNrZXJDb250cm9scyB9IGZyb20gJy4vaW5uZXItdGltZS1waWNrZXIuY2xhc3MnO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbmZpZyB9IGZyb20gJy4vaW5uZXItdGltZS1waWNrZXIuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lUGlja2VyU3RhdGUge1xuICAgIHZhbHVlOiBEYXRlO1xuICAgIGNvbmZpZzogVGltZVBpY2tlckNvbXBvbmVudFN0YXRlO1xuICAgIGNvbnRyb2xzOiBUaW1lUGlja2VyQ29udHJvbHM7XG59XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsU3RhdGU6IFRpbWVQaWNrZXJTdGF0ZSA9IHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICBjb25maWc6IG5ldyBUaW1lUGlja2VyQ29uZmlnKCksXG4gICAgY29udHJvbHM6IHtcbiAgICAgICAgY2FuSW5jcmVtZW50SG91cnM6IHRydWUsXG4gICAgICAgIGNhbkluY3JlbWVudE1pbnV0ZXM6IHRydWUsXG4gICAgICAgIGNhbkluY3JlbWVudFNlY29uZHM6IHRydWUsXG5cbiAgICAgICAgY2FuRGVjcmVtZW50SG91cnM6IHRydWUsXG4gICAgICAgIGNhbkRlY3JlbWVudE1pbnV0ZXM6IHRydWUsXG4gICAgICAgIGNhbkRlY3JlbWVudFNlY29uZHM6IHRydWUsXG5cbiAgICAgICAgY2FuVG9nZ2xlTWVyaWRpYW46IHRydWVcbiAgICB9XG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGh5VGltZVBpY2tlclN0b3JlIGV4dGVuZHMgTWluaVN0b3JlPFRpbWVQaWNrZXJTdGF0ZT4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihpbml0aWFsU3RhdGUpO1xuICAgIH1cblxuICAgIEBNaW5pQWN0aW9uKClcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIGlmICh2YWx1ZT8uZ2V0VGltZSgpICE9PSB0aGlzLnNuYXBzaG90LnZhbHVlPy5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBATWluaUFjdGlvbigpXG4gICAgY2hhbmdlSG91cnMoZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCwgdGltZVpvbmU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNuYXBzaG90O1xuICAgICAgICBpZiAoIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZywgZXZlbnQpIHx8ICFjYW5DaGFuZ2VIb3VycyhldmVudCwgc3RhdGUuY29udHJvbHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfbmV3VGltZSA9IGNoYW5nZVRpbWUoc3RhdGUudmFsdWUsIHsgaG91cjogZXZlbnQuc3RlcCB9LCB0aW1lWm9uZSk7XG5cbiAgICAgICAgaWYgKChzdGF0ZS5jb25maWcubWF4IHx8IHN0YXRlLmNvbmZpZy5taW4pICYmICFpc1ZhbGlkTGltaXQoc3RhdGUuY29uZmlnLCBfbmV3VGltZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgQE1pbmlBY3Rpb24oKVxuICAgIGNoYW5nZU1pbnV0ZXMoZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCwgdGltZVpvbmU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNuYXBzaG90O1xuICAgICAgICBpZiAoIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZywgZXZlbnQpIHx8ICFjYW5DaGFuZ2VNaW51dGVzKGV2ZW50LCBzdGF0ZS5jb250cm9scykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9uZXdUaW1lID0gY2hhbmdlVGltZShzdGF0ZS52YWx1ZSwgeyBtaW51dGU6IGV2ZW50LnN0ZXAgfSwgdGltZVpvbmUpO1xuXG4gICAgICAgIGlmICgoc3RhdGUuY29uZmlnLm1heCB8fCBzdGF0ZS5jb25maWcubWluKSAmJiAhaXNWYWxpZExpbWl0KHN0YXRlLmNvbmZpZywgX25ld1RpbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IF9uZXdUaW1lIH0pO1xuICAgIH1cblxuICAgIEBNaW5pQWN0aW9uKClcbiAgICBjaGFuZ2VTZWNvbmRzKGV2ZW50OiBUaW1lQ2hhbmdlRXZlbnQsIHRpbWVab25lPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zbmFwc2hvdDtcbiAgICAgICAgaWYgKCFjYW5DaGFuZ2VWYWx1ZShzdGF0ZS5jb25maWcsIGV2ZW50KSB8fCAhY2FuQ2hhbmdlU2Vjb25kcyhldmVudCwgc3RhdGUuY29udHJvbHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfbmV3VGltZSA9IGNoYW5nZVRpbWUoXG4gICAgICAgICAgICBzdGF0ZS52YWx1ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWNvbmRzOiBldmVudC5zdGVwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGltZVpvbmVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoKHN0YXRlLmNvbmZpZy5tYXggfHwgc3RhdGUuY29uZmlnLm1pbikgJiYgIWlzVmFsaWRMaW1pdChzdGF0ZS5jb25maWcsIF9uZXdUaW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBfbmV3VGltZSB9KTtcbiAgICB9XG5cbiAgICBATWluaUFjdGlvbigpXG4gICAgc2V0VGltZSh2YWx1ZTogVGltZSwgdGltZVpvbmU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNuYXBzaG90O1xuICAgICAgICBpZiAoIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9uZXdUaW1lID0gc2V0VGltZShzdGF0ZS52YWx1ZSwgdmFsdWUsIHRpbWVab25lKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBfbmV3VGltZSB9KTtcbiAgICB9XG5cbiAgICBATWluaUFjdGlvbigpXG4gICAgdXBkYXRlQ29udHJvbHModmFsdWU6IFRpbWVQaWNrZXJDb21wb25lbnRTdGF0ZSwgdGltZVpvbmU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNuYXBzaG90O1xuICAgICAgICBjb25zdCBfbmV3Q29udHJvbHNTdGF0ZSA9IHRpbWVQaWNrZXJDb250cm9scyhzdGF0ZS52YWx1ZSwgdmFsdWUpO1xuICAgICAgICBjb25zdCBfbmV3U3RhdGU6IFRpbWVQaWNrZXJTdGF0ZSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiBzdGF0ZS52YWx1ZSxcbiAgICAgICAgICAgIGNvbmZpZzogdmFsdWUsXG4gICAgICAgICAgICBjb250cm9sczogX25ld0NvbnRyb2xzU3RhdGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoc3RhdGUuY29uZmlnLnNob3dNZXJpZGlhbiAhPT0gX25ld1N0YXRlLmNvbmZpZy5zaG93TWVyaWRpYW4pIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIF9uZXdTdGF0ZS52YWx1ZSA9IG5ldyBUaW55RGF0ZShzdGF0ZS52YWx1ZSwgdGltZVpvbmUpPy5uYXRpdmVEYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZShfbmV3U3RhdGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -46,20 +46,20 @@ export function parseSeconds(value) {
46
46
  }
47
47
  return seconds;
48
48
  }
49
- export function parseTime(value) {
49
+ export function parseTime(value, timeZone) {
50
50
  if (typeof value === 'string') {
51
- return new TinyDate(value)?.nativeDate;
51
+ return new TinyDate(value, timeZone)?.nativeDate;
52
52
  }
53
53
  else if (value instanceof TinyDate) {
54
54
  return value?.nativeDate;
55
55
  }
56
56
  else {
57
- return new TinyDate(value)?.nativeDate;
57
+ return new TinyDate(value, timeZone)?.nativeDate;
58
58
  }
59
59
  }
60
- export function changeTime(value, diff) {
60
+ export function changeTime(value, diff, timeZone) {
61
61
  if (!value) {
62
- return changeTime(createDate(new TinyDate()?.nativeDate, 0, 0, 0), diff);
62
+ return changeTime(createDate(new TinyDate(undefined, timeZone)?.nativeDate, 0, 0, 0), diff, timeZone);
63
63
  }
64
64
  let hour = value.getHours();
65
65
  let minutes = value.getMinutes();
@@ -76,9 +76,9 @@ export function changeTime(value, diff) {
76
76
  if (diff.seconds) {
77
77
  seconds = seconds + coerceNumberProperty(diff.seconds);
78
78
  }
79
- return createDate(value, hour, minutes, seconds);
79
+ return createDate(value, hour, minutes, seconds, timeZone);
80
80
  }
81
- export function setTime(value, opts) {
81
+ export function setTime(value, opts, timeZone) {
82
82
  let hour = parseHours(opts.hour);
83
83
  const minute = parseMinutes(opts.minute);
84
84
  const seconds = parseSeconds(opts.seconds) || 0;
@@ -87,17 +87,17 @@ export function setTime(value, opts) {
87
87
  }
88
88
  if (!value) {
89
89
  if (!isNaN(hour) && !isNaN(minute)) {
90
- return createDate(new TinyDate()?.nativeDate, hour, minute, seconds);
90
+ return createDate(new TinyDate(undefined, timeZone)?.nativeDate, hour, minute, seconds, timeZone);
91
91
  }
92
92
  return value;
93
93
  }
94
94
  if (isNaN(hour) || isNaN(minute)) {
95
95
  return value;
96
96
  }
97
- return createDate(value, hour, minute, seconds);
97
+ return createDate(value, hour, minute, seconds, timeZone);
98
98
  }
99
- export function createDate(value, hours, minutes, seconds) {
100
- return new TinyDate(value).setHours(hours).setMinutes(minutes).setSeconds(seconds).nativeDate;
99
+ export function createDate(value, hours, minutes, seconds, timeZone) {
100
+ return new TinyDate(value, timeZone).setHours(hours).setMinutes(minutes).setSeconds(seconds).nativeDate;
101
101
  }
102
102
  export function padNumber(value) {
103
103
  const _value = value.toString();
@@ -115,8 +115,8 @@ export function isMinuteInputValid(minutes) {
115
115
  export function isSecondInputValid(seconds) {
116
116
  return !isNaN(parseSeconds(seconds));
117
117
  }
118
- export function isInputLimitValid(diff, max, min) {
119
- const newDate = setTime(new TinyDate()?.nativeDate, diff);
118
+ export function isInputLimitValid(diff, max, min, timeZone) {
119
+ const newDate = setTime(new TinyDate(undefined, timeZone)?.nativeDate, diff, timeZone);
120
120
  if (max && newDate > max) {
121
121
  return false;
122
122
  }
@@ -128,4 +128,4 @@ export function isInputLimitValid(diff, max, min) {
128
128
  export function isInputValid(hours, minutes = '0', seconds = '0', isPM) {
129
129
  return isHourInputValid(hours, isPM) && isMinuteInputValid(minutes) && isSecondInputValid(seconds);
130
130
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGltZS1waWNrZXIvdGltZS1waWNrZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzNDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBRTVCLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBcUI7SUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsUUFBa0MsRUFBRSxPQUFhO0lBQzFFLElBQUksUUFBUSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFH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QztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYSxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxJQUFhO0lBQ25GLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBUaW1lLCBUaW1lUGlja2VyQ29tcG9uZW50U3RhdGUgfSBmcm9tICcuL2lubmVyL2lubmVyLXRpbWUtcGlja2VyLmNsYXNzJztcblxuY29uc3QgaG91cnNQZXJEYXkgPSAyNDtcbmNvbnN0IGhvdXJzUGVyRGF5SGFsZiA9IDEyO1xuY29uc3QgbWludXRlc1BlckhvdXIgPSA2MDtcbmNvbnN0IHNlY29uZHNQZXJNaW51dGUgPSA2MDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWREYXRlKHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgaXNOYU4odmFsdWUuZ2V0SG91cnMoKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkRGF0ZShuZXcgVGlueURhdGUodmFsdWUpPy5uYXRpdmVEYXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRMaW1pdChjb250cm9sczogVGltZVBpY2tlckNvbXBvbmVudFN0YXRlLCBuZXdEYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvbnRyb2xzLm1pbiAmJiBuZXdEYXRlIDwgY29udHJvbHMubWluKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY29udHJvbHMubWF4ICYmIG5ld0RhdGUgPiBjb250cm9scy5tYXgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIb3Vycyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBpc1BNID0gZmFsc2UpOiBudW1iZXIge1xuICAgIGNvbnN0IGhvdXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKGhvdXIpIHx8IGhvdXIgPCAwIHx8IGhvdXIgPiAoaXNQTSA/IGhvdXJzUGVyRGF5SGFsZiA6IGhvdXJzUGVyRGF5KSkge1xuICAgICAgICByZXR1cm4gTmFOO1xuICAgIH1cblxuICAgIHJldHVybiBob3VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNaW51dGVzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1pbnV0ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4obWludXRlKSB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IG1pbnV0ZXNQZXJIb3VyKSB7XG4gICAgICAgIHJldHVybiBOYU47XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pbnV0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2Vjb25kcyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzZWNvbmRzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChpc05hTihzZWNvbmRzKSB8fCBzZWNvbmRzIDwgMCB8fCBzZWNvbmRzID4gc2Vjb25kc1Blck1pbnV0ZSkge1xuICAgICAgICByZXR1cm4gTmFOO1xuICAgIH1cblxuICAgIHJldHVybiBzZWNvbmRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaW1lKHZhbHVlOiBzdHJpbmcgfCBEYXRlKTogRGF0ZSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaW55RGF0ZSh2YWx1ZSk/Lm5hdGl2ZURhdGU7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFRpbnlEYXRlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZT8ubmF0aXZlRGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IFRpbnlEYXRlKHZhbHVlKT8ubmF0aXZlRGF0ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VUaW1lKHZhbHVlOiBEYXRlLCBkaWZmOiBUaW1lKTogRGF0ZSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2hhbmdlVGltZShjcmVhdGVEYXRlKG5ldyBUaW55RGF0ZSgpPy5uYXRpdmVEYXRlLCAwLCAwLCAwKSwgZGlmZik7XG4gICAgfVxuXG4gICAgbGV0IGhvdXIgPSB2YWx1ZS5nZXRIb3VycygpO1xuICAgIGxldCBtaW51dGVzID0gdmFsdWUuZ2V0TWludXRlcygpO1xuICAgIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0U2Vjb25kcygpO1xuXG4gICAgaWYgKGRpZmYuaG91cikge1xuICAgICAgICBob3VyID0gKGhvdXIgKyBjb2VyY2VOdW1iZXJQcm9wZXJ0eShkaWZmLmhvdXIpKSAlIGhvdXJzUGVyRGF5O1xuICAgICAgICBpZiAoaG91ciA8IDApIHtcbiAgICAgICAgICAgIGhvdXIgKz0gaG91cnNQZXJEYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGlmZi5taW51dGUpIHtcbiAgICAgICAgbWludXRlcyA9IG1pbnV0ZXMgKyBjb2VyY2VOdW1iZXJQcm9wZXJ0eShkaWZmLm1pbnV0ZSk7XG4gICAgfVxuXG4gICAgaWYgKGRpZmYuc2Vjb25kcykge1xuICAgICAgICBzZWNvbmRzID0gc2Vjb25kcyArIGNvZXJjZU51bWJlclByb3BlcnR5KGRpZmYuc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZURhdGUodmFsdWUsIGhvdXIsIG1pbnV0ZXMsIHNlY29uZHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGltZSh2YWx1ZTogRGF0ZSwgb3B0czogVGltZSk6IERhdGUge1xuICAgIGxldCBob3VyID0gcGFyc2VIb3VycyhvcHRzLmhvdXIpO1xuICAgIGNvbnN0IG1pbnV0ZSA9IHBhcnNlTWludXRlcyhvcHRzLm1pbnV0ZSk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHBhcnNlU2Vjb25kcyhvcHRzLnNlY29uZHMpIHx8IDA7XG5cbiAgICBpZiAob3B0cy5pc1BNICYmIGhvdXIgIT09IDEyKSB7XG4gICAgICAgIGhvdXIgKz0gaG91cnNQZXJEYXlIYWxmO1xuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgaWYgKCFpc05hTihob3VyKSAmJiAhaXNOYU4obWludXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURhdGUobmV3IFRpbnlEYXRlKCk/Lm5hdGl2ZURhdGUsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKGhvdXIpIHx8IGlzTmFOKG1pbnV0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVEYXRlKHZhbHVlLCBob3VyLCBtaW51dGUsIHNlY29uZHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGF0ZSh2YWx1ZTogRGF0ZSwgaG91cnM6IG51bWJlciwgbWludXRlczogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IFRpbnlEYXRlKHZhbHVlKS5zZXRIb3Vycyhob3Vycykuc2V0TWludXRlcyhtaW51dGVzKS5zZXRTZWNvbmRzKHNlY29uZHMpLm5hdGl2ZURhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWROdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgX3ZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICBpZiAoX3ZhbHVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIF92YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYDAke192YWx1ZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIb3VySW5wdXRWYWxpZChob3Vyczogc3RyaW5nLCBpc1BNOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc05hTihwYXJzZUhvdXJzKGhvdXJzLCBpc1BNKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01pbnV0ZUlucHV0VmFsaWQobWludXRlczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc05hTihwYXJzZU1pbnV0ZXMobWludXRlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWNvbmRJbnB1dFZhbGlkKHNlY29uZHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNOYU4ocGFyc2VTZWNvbmRzKHNlY29uZHMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRMaW1pdFZhbGlkKGRpZmY6IFRpbWUsIG1heDogRGF0ZSwgbWluOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IHNldFRpbWUobmV3IFRpbnlEYXRlKCk/Lm5hdGl2ZURhdGUsIGRpZmYpO1xuXG4gICAgaWYgKG1heCAmJiBuZXdEYXRlID4gbWF4KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG5ld0RhdGUgPCBtaW4pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dFZhbGlkKGhvdXJzOiBzdHJpbmcsIG1pbnV0ZXMgPSAnMCcsIHNlY29uZHMgPSAnMCcsIGlzUE06IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNIb3VySW5wdXRWYWxpZChob3VycywgaXNQTSkgJiYgaXNNaW51dGVJbnB1dFZhbGlkKG1pbnV0ZXMpICYmIGlzU2Vjb25kSW5wdXRWYWxpZChzZWNvbmRzKTtcbn1cbiJdfQ==
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGltZS1waWNrZXIvdGltZS1waWNrZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzNDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN2QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBRTVCLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBcUI7SUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksS0FBSyxZQUFZLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsUUFBa0MsRUFBRSxPQUFhO0lBQzFFLElBQUksUUFBUSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFH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QUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV2RixJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksR0FBRyxJQUFJLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYSxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxJQUFhO0lBQ25GLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBUaW1lLCBUaW1lUGlja2VyQ29tcG9uZW50U3RhdGUgfSBmcm9tICcuL2lubmVyL2lubmVyLXRpbWUtcGlja2VyLmNsYXNzJztcblxuY29uc3QgaG91cnNQZXJEYXkgPSAyNDtcbmNvbnN0IGhvdXJzUGVyRGF5SGFsZiA9IDEyO1xuY29uc3QgbWludXRlc1BlckhvdXIgPSA2MDtcbmNvbnN0IHNlY29uZHNQZXJNaW51dGUgPSA2MDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWREYXRlKHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgaXNOYU4odmFsdWUuZ2V0SG91cnMoKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkRGF0ZShuZXcgVGlueURhdGUodmFsdWUpPy5uYXRpdmVEYXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRMaW1pdChjb250cm9sczogVGltZVBpY2tlckNvbXBvbmVudFN0YXRlLCBuZXdEYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvbnRyb2xzLm1pbiAmJiBuZXdEYXRlIDwgY29udHJvbHMubWluKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoY29udHJvbHMubWF4ICYmIG5ld0RhdGUgPiBjb250cm9scy5tYXgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIb3Vycyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBpc1BNID0gZmFsc2UpOiBudW1iZXIge1xuICAgIGNvbnN0IGhvdXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKGhvdXIpIHx8IGhvdXIgPCAwIHx8IGhvdXIgPiAoaXNQTSA/IGhvdXJzUGVyRGF5SGFsZiA6IGhvdXJzUGVyRGF5KSkge1xuICAgICAgICByZXR1cm4gTmFOO1xuICAgIH1cblxuICAgIHJldHVybiBob3VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNaW51dGVzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1pbnV0ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4obWludXRlKSB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IG1pbnV0ZXNQZXJIb3VyKSB7XG4gICAgICAgIHJldHVybiBOYU47XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pbnV0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2Vjb25kcyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzZWNvbmRzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChpc05hTihzZWNvbmRzKSB8fCBzZWNvbmRzIDwgMCB8fCBzZWNvbmRzID4gc2Vjb25kc1Blck1pbnV0ZSkge1xuICAgICAgICByZXR1cm4gTmFOO1xuICAgIH1cblxuICAgIHJldHVybiBzZWNvbmRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaW1lKHZhbHVlOiBzdHJpbmcgfCBEYXRlLCB0aW1lWm9uZT86IHN0cmluZyk6IERhdGUge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGlueURhdGUodmFsdWUsIHRpbWVab25lKT8ubmF0aXZlRGF0ZTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGlueURhdGUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlPy5uYXRpdmVEYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgVGlueURhdGUodmFsdWUsIHRpbWVab25lKT8ubmF0aXZlRGF0ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VUaW1lKHZhbHVlOiBEYXRlLCBkaWZmOiBUaW1lLCB0aW1lWm9uZT86IHN0cmluZyk6IERhdGUge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNoYW5nZVRpbWUoY3JlYXRlRGF0ZShuZXcgVGlueURhdGUodW5kZWZpbmVkLCB0aW1lWm9uZSk/Lm5hdGl2ZURhdGUsIDAsIDAsIDApLCBkaWZmLCB0aW1lWm9uZSk7XG4gICAgfVxuXG4gICAgbGV0IGhvdXIgPSB2YWx1ZS5nZXRIb3VycygpO1xuICAgIGxldCBtaW51dGVzID0gdmFsdWUuZ2V0TWludXRlcygpO1xuICAgIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0U2Vjb25kcygpO1xuXG4gICAgaWYgKGRpZmYuaG91cikge1xuICAgICAgICBob3VyID0gKGhvdXIgKyBjb2VyY2VOdW1iZXJQcm9wZXJ0eShkaWZmLmhvdXIpKSAlIGhvdXJzUGVyRGF5O1xuICAgICAgICBpZiAoaG91ciA8IDApIHtcbiAgICAgICAgICAgIGhvdXIgKz0gaG91cnNQZXJEYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGlmZi5taW51dGUpIHtcbiAgICAgICAgbWludXRlcyA9IG1pbnV0ZXMgKyBjb2VyY2VOdW1iZXJQcm9wZXJ0eShkaWZmLm1pbnV0ZSk7XG4gICAgfVxuXG4gICAgaWYgKGRpZmYuc2Vjb25kcykge1xuICAgICAgICBzZWNvbmRzID0gc2Vjb25kcyArIGNvZXJjZU51bWJlclByb3BlcnR5KGRpZmYuc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZURhdGUodmFsdWUsIGhvdXIsIG1pbnV0ZXMsIHNlY29uZHMsIHRpbWVab25lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRpbWUodmFsdWU6IERhdGUsIG9wdHM6IFRpbWUsIHRpbWVab25lPzogc3RyaW5nKTogRGF0ZSB7XG4gICAgbGV0IGhvdXIgPSBwYXJzZUhvdXJzKG9wdHMuaG91cik7XG4gICAgY29uc3QgbWludXRlID0gcGFyc2VNaW51dGVzKG9wdHMubWludXRlKTtcbiAgICBjb25zdCBzZWNvbmRzID0gcGFyc2VTZWNvbmRzKG9wdHMuc2Vjb25kcykgfHwgMDtcblxuICAgIGlmIChvcHRzLmlzUE0gJiYgaG91ciAhPT0gMTIpIHtcbiAgICAgICAgaG91ciArPSBob3Vyc1BlckRheUhhbGY7XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICBpZiAoIWlzTmFOKGhvdXIpICYmICFpc05hTihtaW51dGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRGF0ZShuZXcgVGlueURhdGUodW5kZWZpbmVkLCB0aW1lWm9uZSk/Lm5hdGl2ZURhdGUsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kcywgdGltZVpvbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmIChpc05hTihob3VyKSB8fCBpc05hTihtaW51dGUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlRGF0ZSh2YWx1ZSwgaG91ciwgbWludXRlLCBzZWNvbmRzLCB0aW1lWm9uZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEYXRlKHZhbHVlOiBEYXRlLCBob3VyczogbnVtYmVyLCBtaW51dGVzOiBudW1iZXIsIHNlY29uZHM6IG51bWJlciwgdGltZVpvbmU/OiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IFRpbnlEYXRlKHZhbHVlLCB0aW1lWm9uZSkuc2V0SG91cnMoaG91cnMpLnNldE1pbnV0ZXMobWludXRlcykuc2V0U2Vjb25kcyhzZWNvbmRzKS5uYXRpdmVEYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFkTnVtYmVyKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IF92YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKF92YWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiBfdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAwJHtfdmFsdWV9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG91cklucHV0VmFsaWQoaG91cnM6IHN0cmluZywgaXNQTTogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNOYU4ocGFyc2VIb3Vycyhob3VycywgaXNQTSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNaW51dGVJbnB1dFZhbGlkKG1pbnV0ZXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNOYU4ocGFyc2VNaW51dGVzKG1pbnV0ZXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2Vjb25kSW5wdXRWYWxpZChzZWNvbmRzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmFOKHBhcnNlU2Vjb25kcyhzZWNvbmRzKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0TGltaXRWYWxpZChkaWZmOiBUaW1lLCBtYXg6IERhdGUsIG1pbjogRGF0ZSwgdGltZVpvbmU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBuZXdEYXRlID0gc2V0VGltZShuZXcgVGlueURhdGUodW5kZWZpbmVkLCB0aW1lWm9uZSk/Lm5hdGl2ZURhdGUsIGRpZmYsIHRpbWVab25lKTtcblxuICAgIGlmIChtYXggJiYgbmV3RGF0ZSA+IG1heCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBuZXdEYXRlIDwgbWluKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5wdXRWYWxpZChob3Vyczogc3RyaW5nLCBtaW51dGVzID0gJzAnLCBzZWNvbmRzID0gJzAnLCBpc1BNOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSG91cklucHV0VmFsaWQoaG91cnMsIGlzUE0pICYmIGlzTWludXRlSW5wdXRWYWxpZChtaW51dGVzKSAmJiBpc1NlY29uZElucHV0VmFsaWQoc2Vjb25kcyk7XG59XG4iXX0=