mis-crystal-design-system 14.0.65 → 14.0.66-dayjs

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 (53) hide show
  1. package/async-search-dropdown/async-dropdown.component.d.ts +2 -0
  2. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +16 -1
  3. package/daterangepicker_v2/models/drp-config.model.d.ts +6 -1
  4. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +4 -2
  5. package/dynamic-form/dynamic-form.component.d.ts +0 -1
  6. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +9 -5
  7. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +265 -76
  8. package/esm2020/daterangepicker_v2/models/drp-config.model.mjs +1 -1
  9. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +3 -2
  10. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +194 -116
  11. package/esm2020/dynamic-form/dynamic-form.component.mjs +18 -6
  12. package/esm2020/radio-button/radio-button.component.mjs +5 -9
  13. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +55 -41
  14. package/esm2020/timepicker/timepicker.component.mjs +54 -48
  15. package/esm2020/timerangepicker/public_api.mjs +1 -1
  16. package/esm2020/timerangepicker/timerangepicker.component.mjs +46 -42
  17. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +8 -4
  18. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  19. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +289 -76
  20. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  21. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +202 -116
  22. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  23. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +20 -6
  24. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  25. package/fesm2015/mis-crystal-design-system-radio-button.mjs +4 -8
  26. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +1 -1
  27. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +54 -40
  28. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  29. package/fesm2015/mis-crystal-design-system-timepicker.mjs +53 -47
  30. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +1 -1
  31. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +45 -41
  32. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  33. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +8 -4
  34. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  35. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs +264 -75
  36. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  37. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +195 -115
  38. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  39. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs +17 -4
  40. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  41. package/fesm2020/mis-crystal-design-system-radio-button.mjs +4 -8
  42. package/fesm2020/mis-crystal-design-system-radio-button.mjs.map +1 -1
  43. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs +54 -40
  44. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  45. package/fesm2020/mis-crystal-design-system-timepicker.mjs +53 -47
  46. package/fesm2020/mis-crystal-design-system-timepicker.mjs.map +1 -1
  47. package/fesm2020/mis-crystal-design-system-timerangepicker.mjs +45 -41
  48. package/fesm2020/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  49. package/package.json +1 -1
  50. package/radio-button/radio-button.component.d.ts +1 -3
  51. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
  52. package/timepicker/timepicker.component.d.ts +2 -2
  53. package/timerangepicker/public_api.d.ts +1 -0
@@ -1,7 +1,10 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, ViewChildren } from "@angular/core";
2
- import moment from "moment-timezone";
3
2
  import { TimepickerDirective } from "./timepicker.directive";
4
3
  import { ToolTipDirective } from "mis-crystal-design-system/tooltip";
4
+ import dayjs from 'dayjs';
5
+ import timezone from 'dayjs/plugin/timezone';
6
+ import utc from 'dayjs/plugin/utc';
7
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
5
8
  import * as i0 from "@angular/core";
6
9
  import * as i1 from "@angular/common";
7
10
  import * as i2 from "@angular/forms";
@@ -51,6 +54,9 @@ function TimePickerComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
51
54
  const _c4 = function (a0) { return { height: a0 }; };
52
55
  const _c5 = function (a0) { return { "disable": a0 }; };
53
56
  const _c6 = function (a0) { return { invalid: a0 }; };
57
+ dayjs.extend(utc);
58
+ dayjs.extend(timezone);
59
+ dayjs.extend(customParseFormat);
54
60
  export class TimePickerComponent {
55
61
  constructor() {
56
62
  this.openStatus = false;
@@ -65,7 +71,7 @@ export class TimePickerComponent {
65
71
  this.height = "max-content";
66
72
  this.inputWidth = "100px";
67
73
  this.interval = 15;
68
- this.dateAsEpoch = moment().valueOf();
74
+ this.dateAsEpoch = dayjs().valueOf();
69
75
  this.rangeValidity = true;
70
76
  this.showTooltip = true;
71
77
  this.dispayToolTip = this.showTooltip;
@@ -84,31 +90,31 @@ export class TimePickerComponent {
84
90
  }
85
91
  ngOnInit() {
86
92
  if (!this.givenTime && !this.minTime) {
87
- this.chosenTime = moment(this.firstInterval).format(this.timeFormat);
88
- let chosenTimeMoment = this.getMoment(this.chosenTime);
93
+ this.chosenTime = dayjs(this.firstInterval).format(this.timeFormat);
94
+ let chosenTimedayjs = this.getdayjs(this.chosenTime);
89
95
  this.emitTime({
90
96
  valid: !this.isInvalid,
91
97
  time: this.chosenTime,
92
- epoch: chosenTimeMoment.valueOf()
98
+ epoch: chosenTimedayjs.valueOf()
93
99
  });
94
100
  }
95
101
  }
96
102
  ngOnChanges() {
97
103
  this.timeFormat = this.clockFormat === 12 ? "hh:mm a" : "HH:mm";
98
- moment.tz.setDefault(this.timezone);
104
+ dayjs.tz.setDefault(this.timezone);
99
105
  if (this.timeFormat) {
100
- let chosenTimeMoment = this.getMoment(this.chosenTime);
106
+ let chosenTimedayjs = this.getdayjs(this.chosenTime);
101
107
  // if the first interval is >= the chosen time
102
108
  // then only update the value of chosen time
103
109
  // else it remains the same
104
- if (this.firstInterval >= chosenTimeMoment.valueOf() && this.rangeValidity && !this.userInputFlag) {
105
- this.chosenTime = moment(this.firstInterval).format(this.timeFormat);
106
- chosenTimeMoment = this.getMoment(this.chosenTime);
110
+ if (this.firstInterval >= chosenTimedayjs.valueOf() && this.rangeValidity && !this.userInputFlag) {
111
+ this.chosenTime = dayjs(this.firstInterval).format(this.timeFormat);
112
+ chosenTimedayjs = this.getdayjs(this.chosenTime);
107
113
  }
108
114
  if ((this.givenTimeFlag && this.givenTime) || this.minTime) {
109
- this.chosenTime = moment(this.minTime || this.givenTime).format(this.timeFormat);
115
+ this.chosenTime = dayjs(this.minTime || this.givenTime).format(this.timeFormat);
110
116
  }
111
- chosenTimeMoment = this.getMoment(this.chosenTime);
117
+ chosenTimedayjs = this.getdayjs(this.chosenTime);
112
118
  if (!this.userInputFlag)
113
119
  this.populateDropdown();
114
120
  this.userInputFlag = false;
@@ -117,7 +123,7 @@ export class TimePickerComponent {
117
123
  this.emitTime({
118
124
  valid: !this.isInvalid,
119
125
  time: this.chosenTime,
120
- epoch: chosenTimeMoment.valueOf()
126
+ epoch: chosenTimedayjs.valueOf()
121
127
  });
122
128
  this.calculateClosestInterval(this.chosenTime);
123
129
  }
@@ -126,9 +132,9 @@ export class TimePickerComponent {
126
132
  emitTime(data) {
127
133
  this.timeEmitter.emit(data);
128
134
  }
129
- // function to get moment object when time is given in string
130
- getMoment(time) {
131
- return moment(`${moment(this.dateAsEpoch).format("DD-MM-YYYY")} ${time}`, `'DD-MM-YYYY' ${this.timeFormat}`);
135
+ // function to get dayjs object when time is given in string
136
+ getdayjs(time = '00:00') {
137
+ return dayjs(`${dayjs(this.dateAsEpoch).format("DD-MM-YYYY")} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);
132
138
  }
133
139
  closeDropdown() {
134
140
  this.dispayToolTip = false;
@@ -146,7 +152,7 @@ export class TimePickerComponent {
146
152
  const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;
147
153
  const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;
148
154
  const RE = this.clockFormat === 12 ? RE12 : RE24;
149
- const timeMoment = this.getMoment(time);
155
+ const timedayjs = this.getdayjs(time);
150
156
  let flag = false;
151
157
  // if the first interval is set to the start of the day
152
158
  // or a time is already provided to the component to show
@@ -154,11 +160,11 @@ export class TimePickerComponent {
154
160
  if (this.minTime ||
155
161
  this.givenTime ||
156
162
  (this.firstInterval &&
157
- moment(this.firstInterval).format(this.timeFormat).valueOf() === moment().startOf("d").format(this.timeFormat).valueOf())) {
163
+ dayjs(this.firstInterval).format(this.timeFormat).valueOf() === dayjs().startOf("day").format(this.timeFormat).valueOf())) {
158
164
  flag = time.match(RE) ? true : false;
159
165
  }
160
166
  else {
161
- flag = time.match(RE) && timeMoment.diff(moment(), "m") >= 0 ? true : false;
167
+ flag = time.match(RE) && timedayjs.diff(dayjs(), "m") >= 0 ? true : false;
162
168
  }
163
169
  return flag;
164
170
  }
@@ -169,11 +175,11 @@ export class TimePickerComponent {
169
175
  this.chosenTime = time;
170
176
  this.calculateClosestInterval(this.chosenTime);
171
177
  }
172
- const timeMoment = this.getMoment(time);
178
+ const timedayjs = this.getdayjs(time);
173
179
  this.emitTime({
174
180
  valid: !this.isInvalid,
175
181
  time: time,
176
- epoch: timeMoment.valueOf()
182
+ epoch: timedayjs.valueOf()
177
183
  });
178
184
  this.openStatus = false;
179
185
  if (this.timepickerDirective)
@@ -189,35 +195,35 @@ export class TimePickerComponent {
189
195
  this.timepickerDirective.destroyOverlay();
190
196
  this.calculateClosestInterval(time);
191
197
  }
192
- const timeMoment = this.getMoment(time);
198
+ const timedayjs = this.getdayjs(time);
193
199
  this.emitTime({
194
200
  valid: !this.isInvalid,
195
201
  time: time,
196
- epoch: timeMoment.valueOf()
202
+ epoch: timedayjs.valueOf()
197
203
  });
198
204
  }
199
205
  calculateClosestInterval(time) {
200
206
  let roundedEpoch;
201
- // Converting time and date to a moment object
202
- const chosenDate = moment(this.dateAsEpoch).format("DD-MM-YYYY"); // 05-01-2024
203
- const parsedTimeWithDate = moment(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);
204
- // Converting moment object to epoch
207
+ // Converting time and date to a dayjs object
208
+ const chosenDate = dayjs(this.dateAsEpoch).format("DD-MM-YYYY"); // 05-01-2024
209
+ const parsedTimeWithDate = dayjs(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`);
210
+ // Converting dayjs object to epoch
205
211
  const chosenTimeEpoch = parsedTimeWithDate.valueOf();
206
- const offset = this.interval - (moment(chosenTimeEpoch).minutes() % this.interval);
212
+ const offset = this.interval - (dayjs(chosenTimeEpoch).minute() % this.interval);
207
213
  if (this.minTime && !this.givenTime) {
208
214
  this.isHighlighted = 0;
209
215
  return;
210
216
  }
211
- roundedEpoch = offset >= this.interval / 2 ? (moment(chosenTimeEpoch).subtract(this.interval - offset, "m")).valueOf() : (moment(chosenTimeEpoch).add(offset, "m")).valueOf();
217
+ roundedEpoch = offset >= this.interval / 2 ? (dayjs(chosenTimeEpoch).subtract(this.interval - offset, "m")).valueOf() : (dayjs(chosenTimeEpoch).add(offset, "m")).valueOf();
212
218
  // finding the index of element that needs to be highlighted
213
- if (chosenTimeEpoch > moment(this.dateAsEpoch).endOf("d").subtract(this.interval, "m").valueOf()) {
219
+ if (chosenTimeEpoch > dayjs(this.dateAsEpoch).endOf("day").subtract(this.interval, "m").valueOf()) {
214
220
  this.isHighlighted = this.timeIntervals.length - 1;
215
221
  }
216
222
  else {
217
- const roundedEpochMoment = moment(roundedEpoch);
223
+ const roundedEpochdayjs = dayjs(roundedEpoch);
218
224
  this.isHighlighted = this.timeIntervals.findIndex(interval => {
219
- const intervalObj = moment(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);
220
- return intervalObj.isSame(roundedEpochMoment);
225
+ const intervalObj = dayjs(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`);
226
+ return intervalObj.isSame(roundedEpochdayjs);
221
227
  });
222
228
  }
223
229
  }
@@ -228,38 +234,38 @@ export class TimePickerComponent {
228
234
  if (!this.firstInterval) {
229
235
  // firstInterval is initialised according to the current time
230
236
  // if the date is same as the current date
231
- if (moment(this.dateAsEpoch).format("DD-MM-YYYY") === moment().format("DD-MM-YYYY") && !this.minTime) {
232
- const offset = this.interval - (moment().minutes() % this.interval);
233
- this.firstInterval = moment().add(offset, "m").valueOf();
237
+ if (dayjs(this.dateAsEpoch).format("DD-MM-YYYY") === dayjs().format("DD-MM-YYYY") && !this.minTime) {
238
+ const offset = this.interval - (dayjs().minute() % this.interval);
239
+ this.firstInterval = dayjs().add(offset, "m").valueOf();
234
240
  }
235
241
  // if minimum time to show is provided
236
242
  else if (this.minTime) {
237
- const offset = this.interval - (moment(this.minTime).minutes() % this.interval);
238
- this.firstInterval = moment(this.minTime).add(offset, "m").valueOf();
243
+ const offset = this.interval - (dayjs(this.minTime).minute() % this.interval);
244
+ this.firstInterval = dayjs(this.minTime).add(offset, "m").valueOf();
239
245
  }
240
246
  // else the firstInterval is initialised as start of day
241
247
  else {
242
- this.firstInterval = moment().startOf("d").valueOf();
248
+ this.firstInterval = dayjs().startOf("day").valueOf();
243
249
  }
244
250
  }
245
251
  if (this.givenTime && this.givenTimeFlag) {
246
- this.firstInterval = moment(this.givenTime).startOf('d').valueOf();
252
+ this.firstInterval = dayjs(this.givenTime).startOf('d').valueOf();
247
253
  this.givenTimeFlag = false;
248
254
  }
249
- const dateAsString = moment(this.dateAsEpoch).format('DD-MM-YYYY');
250
- const intervalAsString = moment(this.firstInterval).format(this.timeFormat);
251
- const start = moment(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`);
252
- const end = moment(`${dateAsString}`, 'DD-MM-YYYY').endOf('d');
255
+ const dateAsString = dayjs(this.dateAsEpoch).format('DD-MM-YYYY');
256
+ const intervalAsString = dayjs(this.firstInterval).format(this.timeFormat);
257
+ let start = dayjs(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`);
258
+ const end = dayjs(this.dateAsEpoch).endOf('d');
253
259
  while (start.valueOf() < end.valueOf()) {
254
260
  this.timeIntervals.push(start.format(this.timeFormat));
255
- start.add(this.interval, "m");
261
+ start = start.add(this.interval, "m");
256
262
  }
257
263
  // if the start time is equal to the interval just before midnight
258
264
  // and the start date = end date
259
265
  // push 11:59pm only
260
266
  if (this.timeIntervals.length === 0) {
261
- this.chosenTime = moment().endOf("d").format(this.timeFormat);
262
- this.timeIntervals.push(moment().endOf("d").format(this.timeFormat));
267
+ this.chosenTime = dayjs().endOf("d").format(this.timeFormat);
268
+ this.timeIntervals.push(dayjs().endOf("d").format(this.timeFormat));
263
269
  }
264
270
  }
265
271
  ngOnDestroy() {
@@ -340,4 +346,4 @@ TimePickerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TimePic
340
346
  type: ViewChildren,
341
347
  args: ["timeInterval"]
342
348
  }] }); })();
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90aW1lcGlja2VyL3RpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXBpY2tlci90aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7SUNtQjNELDBCQUFnRjs7Ozs7SUFGbEYsaUNBQXFKO0lBQW5JLGlQQUFTLGVBQUEsaUNBQXNCLENBQUEsSUFBQztJQUNoRCxZQUNBO0lBQUEsOEZBQWdGO0lBQ2xGLGlCQUFLOzs7OztJQUhpRyxtRkFBOEM7SUFDbEosZUFDQTtJQURBLDRDQUNBO0lBQTJDLGVBQTZCO0lBQTdCLHdEQUE2Qjs7OztJQUo5RSw4QkFBdUcsa0JBQUE7SUFFbkcsc0ZBR0s7SUFDUCxpQkFBSyxFQUFBOzs7SUFONkMsK0ZBQWtEO0lBRTFCLGVBQWtCO0lBQWxCLDhDQUFrQjs7O0lBRjlGLGtGQU9NOzs7SUFQQSx3Q0FBZ0I7Ozs7O0FEUDFCLE1BQU0sT0FBTyxtQkFBbUI7SUEwQzlCO1FBdkNBLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUM3QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUNyQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUd6QixhQUFRLEdBQVcsY0FBYyxDQUFDO1FBQ2xDLFdBQU0sR0FBVyxhQUFhLENBQUM7UUFDL0IsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUU3QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFekMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFDckMsa0JBQWEsR0FBWSxJQUFJLENBQUMsV0FBVyxDQUFDO1FBR2pDLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBZXBDLENBQUM7SUFWZixvRkFBb0Y7SUFDcEYsSUFBa0MsZ0JBQWdCLENBQUMsU0FBUztRQUMxRCxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNCLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFO2dCQUN2RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUMzQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDWixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUNyQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO2FBQ2xDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNoRSxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFdkQsOENBQThDO1lBQzlDLDRDQUE0QztZQUM1QywyQkFBMkI7WUFDM0IsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNqRyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDckUsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7YUFDbkQ7WUFFRCxJQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRztnQkFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNsRjtZQUNELGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRWxELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUUzQixJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUNaLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTO29CQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7b0JBQ3JCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVc7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLGdCQUFnQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUM5RyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLFlBQVk7UUFDVixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixNQUFNLElBQUksR0FBRyxzREFBc0QsQ0FBQztRQUNwRSxNQUFNLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLElBQUksR0FBWSxLQUFLLENBQUM7UUFFMUIsdURBQXVEO1FBQ3ZELHlEQUF5RDtRQUN6RCw0REFBNEQ7UUFDNUQsSUFDRSxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ3pIO1lBQ0EsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDNUU7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDdEIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRTtTQUM1QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxtQkFBbUI7WUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQjtnQkFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDdEIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBWTtRQUNuQyxJQUFJLFlBQW9CLENBQUM7UUFDekIsK0NBQStDO1FBQy9DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUMvRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxHQUFHLFVBQVUsSUFBSSxJQUFJLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLG9DQUFvQztRQUNwQyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUNELFlBQVksR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0ssNERBQTREO1FBQzVELElBQUssZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMzRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxVQUFVLElBQUksUUFBUSxFQUFFLEVBQUUsY0FBYyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDekYsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFHRCxrRUFBa0U7SUFDbEUsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFFeEIsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLDZEQUE2RDtZQUM3RCwwQ0FBMEM7WUFDMUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNwRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDMUQ7WUFDRCxzQ0FBc0M7aUJBQ2pDLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBQztnQkFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN0RTtZQUNELHdEQUF3RDtpQkFDbkQ7Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdEQ7U0FDRjtRQUVELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDNUI7UUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxZQUFZLElBQUksZ0JBQWdCLEVBQUUsRUFBRSxjQUFjLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLFlBQVksRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUcvRCxPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN2RCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0I7UUFFRCxrRUFBa0U7UUFDbEUsZ0NBQWdDO1FBQ2hDLG9CQUFvQjtRQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqRSxDQUFDOztzRkEzUFUsbUJBQW1CO3NFQUFuQixtQkFBbUI7O3VCQTZCbkIsbUJBQW1CO3VCQUNuQixnQkFBZ0I7Ozs7Ozs7OztRQzFDN0IsOEJBQWtHLGtCQUFBO1FBRzlGLGdKQUF3QixrR0FDUCxnQ0FBd0IsSUFEakIsa0ZBSWYsa0JBQWMsSUFKQztRQUYxQixpQkFlRTtRQUVGLGtIQVNjO1FBVCtGLHFIQUFpQixtQkFBZSxJQUFDO1FBVWhKLGlCQUFNOzs7UUE1QjRCLGlFQUE4QixxREFBQTtRQUc1RCxlQUF3QjtRQUF4Qix3Q0FBd0IsNkVBQUEsd0RBQUEsOEZBQUEsd0JBQUEsbUJBQUEsc0JBQUE7UUFlc0MsZUFBa0I7UUFBbEIsOEJBQWtCLDhCQUFBOzt1RkROdkUsbUJBQW1CO2NBTC9CLFNBQVM7MkJBQ0UsZ0JBQWdCO3NDQWNqQixXQUFXO2tCQUFuQixLQUFLO1lBR0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFFRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFDK0IsS0FBSztrQkFBMUMsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0osbUJBQW1CO2tCQUFsRCxTQUFTO21CQUFDLG1CQUFtQjtZQUNELGdCQUFnQjtrQkFBNUMsU0FBUzttQkFBQyxnQkFBZ0I7WUFHTyxnQkFBZ0I7a0JBQWpELFlBQVk7bUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IElUaW1lIH0gZnJvbSBcIi4vdGltZS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IFRpbWVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi90aW1lcGlja2VyLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgVG9vbFRpcERpcmVjdGl2ZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3Rvb2x0aXBcIjtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRpbWVwaWNrZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90aW1lcGlja2VyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgY3VyclRpbWUhOiBzdHJpbmc7XG4gIGNob3NlblRpbWU6IHN0cmluZztcbiAgb3BlblN0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0hpZ2hsaWdodGVkOiBudW1iZXIgPSAwO1xuICBpc0ludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGltZUludGVydmFsczogc3RyaW5nW10gPSBbXTtcbiAgc2hvdWxkU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG4gIHVzZXJJbnB1dEZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZ2l2ZW5UaW1lRmxhZzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGNsb2NrRm9ybWF0OiBudW1iZXIgPSAxMjtcbiAgdGltZUZvcm1hdCE6IHN0cmluZztcbiAgXG4gIEBJbnB1dCgpIHRpbWV6b25lOiBzdHJpbmcgPSBcIkFzaWEvS29sa2F0YVwiO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9IFwibWF4LWNvbnRlbnRcIjtcbiAgQElucHV0KCkgaW5wdXRXaWR0aDogc3RyaW5nID0gXCIxMDBweFwiO1xuICBASW5wdXQoKSBkcm9wZG93bldpZHRoPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbnRlcnZhbDogbnVtYmVyID0gMTU7XG4gIEBJbnB1dCgpIGRhdGVBc0Vwb2NoOiBudW1iZXIgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gIEBJbnB1dCgpIGZpcnN0SW50ZXJ2YWwhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHJhbmdlVmFsaWRpdHk6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93VG9vbHRpcDogYm9vbGVhbiA9IHRydWU7XG4gIGRpc3BheVRvb2xUaXA6IGJvb2xlYW4gPSB0aGlzLnNob3dUb29sdGlwO1xuICBASW5wdXQoKSBnaXZlblRpbWU6IG51bWJlcjtcbiAgQElucHV0KCkgbWluVGltZT86IG51bWJlcjtcbiAgQElucHV0KCkgdHJpZ2dlckNoYW5nZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHRpbWVFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJVGltZT4oKTtcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFRpbWVwaWNrZXJEaXJlY3RpdmUpIHRpbWVwaWNrZXJEaXJlY3RpdmU6IFRpbWVwaWNrZXJEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoVG9vbFRpcERpcmVjdGl2ZSkgdG9vbHRpcERpcmVjdGl2ZTogVG9vbFRpcERpcmVjdGl2ZTtcblxuICAvLyBnZXRzIGFsbCB0aGUgbGkgZWxlbWVudHMgZnJvbSB0aGUgZHJvcGRvd24gYW5kIHNjcm9sbHMgdG8gdGhlIGhpZ2hsaWdodGVkIGVsZW1lbnRcbiAgQFZpZXdDaGlsZHJlbihcInRpbWVJbnRlcnZhbFwiKSBzZXQgdGltZUludGVydmFsUmVmcyhpbnRlcnZhbHMpIHtcbiAgICBpbnRlcnZhbHMuZm9yRWFjaChpbnRlcnZhbCA9PiB7XG4gICAgICBpZiAoaW50ZXJ2YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3RbMF0gPT09IFwiaGlnaGxpZ2h0XCIpIHtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBpbnRlcnZhbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGhpZ2hsaWdodGVkLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKXt9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKCF0aGlzLmdpdmVuVGltZSAmJiAhdGhpcy5taW5UaW1lKSB7XG4gICAgICB0aGlzLmNob3NlblRpbWUgPSBtb21lbnQodGhpcy5maXJzdEludGVydmFsKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICAgIGxldCBjaG9zZW5UaW1lTW9tZW50ID0gdGhpcy5nZXRNb21lbnQodGhpcy5jaG9zZW5UaW1lKTtcbiAgICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkLFxuICAgICAgICB0aW1lOiB0aGlzLmNob3NlblRpbWUsXG4gICAgICAgIGVwb2NoOiBjaG9zZW5UaW1lTW9tZW50LnZhbHVlT2YoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lRm9ybWF0ID0gdGhpcy5jbG9ja0Zvcm1hdCA9PT0gMTIgPyBcImhoOm1tIGFcIiA6IFwiSEg6bW1cIjtcbiAgICBtb21lbnQudHouc2V0RGVmYXVsdCh0aGlzLnRpbWV6b25lKTtcblxuICAgIGlmICh0aGlzLnRpbWVGb3JtYXQpIHtcbiAgICAgIGxldCBjaG9zZW5UaW1lTW9tZW50ID0gdGhpcy5nZXRNb21lbnQodGhpcy5jaG9zZW5UaW1lKTtcbiAgICBcbiAgICAgIC8vIGlmIHRoZSBmaXJzdCBpbnRlcnZhbCBpcyA+PSB0aGUgY2hvc2VuIHRpbWVcbiAgICAgIC8vIHRoZW4gb25seSB1cGRhdGUgdGhlIHZhbHVlIG9mIGNob3NlbiB0aW1lXG4gICAgICAvLyBlbHNlIGl0IHJlbWFpbnMgdGhlIHNhbWVcbiAgICAgIGlmICh0aGlzLmZpcnN0SW50ZXJ2YWwgPj0gY2hvc2VuVGltZU1vbWVudC52YWx1ZU9mKCkgJiYgdGhpcy5yYW5nZVZhbGlkaXR5ICYmICF0aGlzLnVzZXJJbnB1dEZsYWcpIHtcbiAgICAgICAgdGhpcy5jaG9zZW5UaW1lID0gbW9tZW50KHRoaXMuZmlyc3RJbnRlcnZhbCkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICAgIGNob3NlblRpbWVNb21lbnQgPSB0aGlzLmdldE1vbWVudCh0aGlzLmNob3NlblRpbWUpXG4gICAgICB9XG5cbiAgICAgIGlmKCh0aGlzLmdpdmVuVGltZUZsYWcgJiYgdGhpcy5naXZlblRpbWUpIHx8IHRoaXMubWluVGltZSApIHtcbiAgICAgICAgdGhpcy5jaG9zZW5UaW1lID0gbW9tZW50KHRoaXMubWluVGltZSB8fCB0aGlzLmdpdmVuVGltZSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB9XG4gICAgICBjaG9zZW5UaW1lTW9tZW50ID0gdGhpcy5nZXRNb21lbnQodGhpcy5jaG9zZW5UaW1lKVxuXG4gICAgICBpZiAoIXRoaXMudXNlcklucHV0RmxhZykgdGhpcy5wb3B1bGF0ZURyb3Bkb3duKCk7XG4gICAgICB0aGlzLnVzZXJJbnB1dEZsYWcgPSBmYWxzZTtcbiAgICAgIFxuICAgICAgaWYodGhpcy5jaG9zZW5UaW1lKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGhpcy5jaG9zZW5UaW1lLnRyaW0oKSk7XG4gICAgICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgICAgIHZhbGlkOiAhdGhpcy5pc0ludmFsaWQsXG4gICAgICAgICAgdGltZTogdGhpcy5jaG9zZW5UaW1lLFxuICAgICAgICAgIGVwb2NoOiBjaG9zZW5UaW1lTW9tZW50LnZhbHVlT2YoKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGhpcy5jaG9zZW5UaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbWl0VGltZShkYXRhOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMudGltZUVtaXR0ZXIuZW1pdChkYXRhKTtcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uIHRvIGdldCBtb21lbnQgb2JqZWN0IHdoZW4gdGltZSBpcyBnaXZlbiBpbiBzdHJpbmdcbiAgZ2V0TW9tZW50KHRpbWU6IHN0cmluZyl7XG4gICAgcmV0dXJuIG1vbWVudChgJHttb21lbnQodGhpcy5kYXRlQXNFcG9jaCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKX0gJHt0aW1lfWAsIGAnREQtTU0tWVlZWScgJHt0aGlzLnRpbWVGb3JtYXR9YClcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5kaXNwYXlUb29sVGlwID0gZmFsc2U7XG4gICAgdGhpcy51c2VySW5wdXRGbGFnID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuU3RhdHVzID0gZmFsc2U7XG4gICAgaWYgKHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZSkgdGhpcy50aW1lcGlja2VyRGlyZWN0aXZlLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICAvLyB0b2dnbGUgdGltZXBpY2tlciBkcm9wZG93blxuICBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXlUb29sVGlwID0gdHJ1ZTtcbiAgICB0aGlzLm9wZW5TdGF0dXMgPSB0cnVlO1xuICB9XG5cbiAgY2hlY2tUaW1lVmFsaWRpdHkodGltZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgUkUxMiA9IC9eKChbMF1bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSggKT8oYW18cG18QU18UE0pKSQvaTtcbiAgICBjb25zdCBSRTI0ID0gL14oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IFJFID0gdGhpcy5jbG9ja0Zvcm1hdCA9PT0gMTIgPyBSRTEyIDogUkUyNDtcblxuICAgIGNvbnN0IHRpbWVNb21lbnQgPSB0aGlzLmdldE1vbWVudCh0aW1lKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsIGlzIHNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGRheVxuICAgIC8vIG9yIGEgdGltZSBpcyBhbHJlYWR5IHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgdG8gc2hvd1xuICAgIC8vIHRoZW4gd2UgZG9uJ3QgY2hlY2sgaXRzIHZhbGlkaXR5IGFnYWluc3QgdGhlIGN1cnJlbnQgdGltZVxuICAgIGlmIChcbiAgICAgIHRoaXMubWluVGltZSB8fCBcbiAgICAgIHRoaXMuZ2l2ZW5UaW1lIHx8XG4gICAgICAodGhpcy5maXJzdEludGVydmFsICYmXG4gICAgICBtb21lbnQodGhpcy5maXJzdEludGVydmFsKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KS52YWx1ZU9mKCkgPT09IG1vbWVudCgpLnN0YXJ0T2YoXCJkXCIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLnZhbHVlT2YoKSlcbiAgICApIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVNb21lbnQuZGlmZihtb21lbnQoKSwgXCJtXCIpID49IDAgPyB0cnVlOiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhZztcbiAgfVxuXG4gIC8vIHVwZGF0ZSBjaG9zZW4gdGltZSBhcyBzb29uIGFzIHRoZSB1c2VyIGNsaWNrcyBvbiBhbiBpbnRlcnZhbFxuICBvblRpbWVTZWxlY3QodGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pc0ludmFsaWQgPSAhdGhpcy5jaGVja1RpbWVWYWxpZGl0eSh0aW1lLnRyaW0oKSk7XG4gICAgaWYgKCF0aGlzLmlzSW52YWxpZCkge1xuICAgICAgdGhpcy5jaG9zZW5UaW1lID0gdGltZTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlQ2xvc2VzdEludGVydmFsKHRoaXMuY2hvc2VuVGltZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZU1vbWVudCA9IHRoaXMuZ2V0TW9tZW50KHRpbWUpO1xuICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgdmFsaWQ6ICF0aGlzLmlzSW52YWxpZCxcbiAgICAgIHRpbWU6IHRpbWUsXG4gICAgICBlcG9jaDogdGltZU1vbWVudC52YWx1ZU9mKCkgXG4gICAgfSk7XG4gICAgdGhpcy5vcGVuU3RhdHVzID0gZmFsc2U7XG4gICAgaWYgKHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZSkgdGhpcy50aW1lcGlja2VyRGlyZWN0aXZlLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICAvLyBjaGVja3MgdmFsaWRpdHkgb2YgdGltZSBvbiBpbnB1dCBjaGFuZ2UgYW5kIGNhbGN1bGF0ZXMgdGhlIGNsb3Nlc3QgaW50ZXJ2YWxcbiAgb25UaW1lQ2hhbmdlKHRpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNJbnZhbGlkID0gIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGltZS50cmltKCkpO1xuXG4gICAgaWYgKCF0aGlzLmlzSW52YWxpZCkge1xuICAgICAgdGhpcy51c2VySW5wdXRGbGFnID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlblN0YXR1cyA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZSkgdGhpcy50aW1lcGlja2VyRGlyZWN0aXZlLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbCh0aW1lKTtcbiAgICB9XG4gICAgY29uc3QgdGltZU1vbWVudCA9IHRoaXMuZ2V0TW9tZW50KHRpbWUpO1xuICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgdmFsaWQ6ICF0aGlzLmlzSW52YWxpZCxcbiAgICAgIHRpbWU6IHRpbWUsXG4gICAgICBlcG9jaDogdGltZU1vbWVudC52YWx1ZU9mKCkgXG4gICAgfSk7XG4gIH1cblxuICBjYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IHJvdW5kZWRFcG9jaDogbnVtYmVyO1xuICAgIC8vIENvbnZlcnRpbmcgdGltZSBhbmQgZGF0ZSB0byBhIG1vbWVudCBvYmplY3QgXG4gICAgY29uc3QgY2hvc2VuRGF0ZSA9IG1vbWVudCh0aGlzLmRhdGVBc0Vwb2NoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpOyAvLyAwNS0wMS0yMDI0XG4gICAgY29uc3QgcGFyc2VkVGltZVdpdGhEYXRlID0gbW9tZW50KGAke2Nob3NlbkRhdGV9ICR7dGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKTtcbiAgICAvLyBDb252ZXJ0aW5nIG1vbWVudCBvYmplY3QgdG8gZXBvY2hcbiAgICBjb25zdCBjaG9zZW5UaW1lRXBvY2ggPSBwYXJzZWRUaW1lV2l0aERhdGUudmFsdWVPZigpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwgLSAobW9tZW50KGNob3NlblRpbWVFcG9jaCkubWludXRlcygpICUgdGhpcy5pbnRlcnZhbCk7XG5cbiAgICBpZiAodGhpcy5taW5UaW1lICYmICF0aGlzLmdpdmVuVGltZSkge1xuICAgICAgdGhpcy5pc0hpZ2hsaWdodGVkID0gMDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcm91bmRlZEVwb2NoID0gb2Zmc2V0ID49IHRoaXMuaW50ZXJ2YWwgLyAyID8gKG1vbWVudChjaG9zZW5UaW1lRXBvY2gpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwgLSBvZmZzZXQsIFwibVwiKSkudmFsdWVPZigpIDogKG1vbWVudChjaG9zZW5UaW1lRXBvY2gpLmFkZCggb2Zmc2V0LCBcIm1cIikpLnZhbHVlT2YoKTtcblxuICAgIC8vIGZpbmRpbmcgdGhlIGluZGV4IG9mIGVsZW1lbnQgdGhhdCBuZWVkcyB0byBiZSBoaWdobGlnaHRlZFxuICAgIGlmICggY2hvc2VuVGltZUVwb2NoID4gbW9tZW50KHRoaXMuZGF0ZUFzRXBvY2gpLmVuZE9mKFwiZFwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsLCBcIm1cIikudmFsdWVPZigpKSB7XG4gICAgICB0aGlzLmlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnRpbWVJbnRlcnZhbHMubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgcm91bmRlZEVwb2NoTW9tZW50ID0gbW9tZW50KHJvdW5kZWRFcG9jaCk7XG4gICAgICB0aGlzLmlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnRpbWVJbnRlcnZhbHMuZmluZEluZGV4KGludGVydmFsID0+IHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxPYmogPSBtb21lbnQoYCR7Y2hvc2VuRGF0ZX0gJHtpbnRlcnZhbH1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKTtcbiAgICAgICAgcmV0dXJuIGludGVydmFsT2JqLmlzU2FtZShyb3VuZGVkRXBvY2hNb21lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICAvLyBwb3B1bGF0ZXMgdGhlIGRyb3Bkb3duIGFjY29yZGluZyB0byB0aGUgZmlyc3QgaW50ZXJ2YWwgcmVjZWl2ZWRcbiAgcG9wdWxhdGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbHMgPSBbXTtcblxuICAgIC8vIGlmIHBpY2tlciBpcyB1c2VkIGFzIGFuIGluZGl2aWR1YWwgY29tcG9uZW50XG4gICAgaWYgKCF0aGlzLmZpcnN0SW50ZXJ2YWwpIHtcbiAgICAgIC8vIGZpcnN0SW50ZXJ2YWwgaXMgaW5pdGlhbGlzZWQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgIC8vIGlmIHRoZSBkYXRlIGlzIHNhbWUgYXMgdGhlIGN1cnJlbnQgZGF0ZVxuICAgICAgaWYgKG1vbWVudCh0aGlzLmRhdGVBc0Vwb2NoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpID09PSBtb21lbnQoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpICYmICF0aGlzLm1pblRpbWUpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCAtIChtb21lbnQoKS5taW51dGVzKCkgJSB0aGlzLmludGVydmFsKTtcbiAgICAgICAgdGhpcy5maXJzdEludGVydmFsID0gbW9tZW50KCkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIG1pbmltdW0gdGltZSB0byBzaG93IGlzIHByb3ZpZGVkXG4gICAgICBlbHNlIGlmKHRoaXMubWluVGltZSl7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwgLSAobW9tZW50KHRoaXMubWluVGltZSkubWludXRlcygpICUgdGhpcy5pbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbCA9IG1vbWVudCh0aGlzLm1pblRpbWUpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgICAvLyBlbHNlIHRoZSBmaXJzdEludGVydmFsIGlzIGluaXRpYWxpc2VkIGFzIHN0YXJ0IG9mIGRheVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbCA9IG1vbWVudCgpLnN0YXJ0T2YoXCJkXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZih0aGlzLmdpdmVuVGltZSAmJiB0aGlzLmdpdmVuVGltZUZsYWcpe1xuICAgICAgdGhpcy5maXJzdEludGVydmFsID0gbW9tZW50KHRoaXMuZ2l2ZW5UaW1lKS5zdGFydE9mKCdkJykudmFsdWVPZigpO1xuICAgICAgdGhpcy5naXZlblRpbWVGbGFnID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZUFzU3RyaW5nID0gbW9tZW50KHRoaXMuZGF0ZUFzRXBvY2gpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xuICAgIGNvbnN0IGludGVydmFsQXNTdHJpbmcgPSBtb21lbnQodGhpcy5maXJzdEludGVydmFsKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KTtcbiAgICBjb25zdCBzdGFydCA9IG1vbWVudChgJHtkYXRlQXNTdHJpbmd9ICR7aW50ZXJ2YWxBc1N0cmluZ31gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKTtcbiAgICBjb25zdCBlbmQgPSBtb21lbnQoYCR7ZGF0ZUFzU3RyaW5nfWAsICdERC1NTS1ZWVlZJykuZW5kT2YoJ2QnKTtcblxuICAgIFxuICAgIHdoaWxlIChzdGFydC52YWx1ZU9mKCkgPCBlbmQudmFsdWVPZigpKSB7XG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbHMucHVzaChzdGFydC5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSk7XG4gICAgICBzdGFydC5hZGQodGhpcy5pbnRlcnZhbCwgXCJtXCIpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBzdGFydCB0aW1lIGlzIGVxdWFsIHRvIHRoZSBpbnRlcnZhbCBqdXN0IGJlZm9yZSBtaWRuaWdodFxuICAgIC8vIGFuZCB0aGUgc3RhcnQgZGF0ZSA9IGVuZCBkYXRlXG4gICAgLy8gcHVzaCAxMTo1OXBtIG9ubHlcbiAgICBpZiAodGhpcy50aW1lSW50ZXJ2YWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jaG9zZW5UaW1lID0gbW9tZW50KCkuZW5kT2YoXCJkXCIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxzLnB1c2gobW9tZW50KCkuZW5kT2YoXCJkXCIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50b29sdGlwRGlyZWN0aXZlKSB0aGlzLnRvb2x0aXBEaXJlY3RpdmUuaGlkZVRvb2xUaXAoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRpbWVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhlaWdodCB9XCIgW25nQ2xhc3NdPVwieydkaXNhYmxlJzogZGlzYWJsZX1cIj5cbiAgPGlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFsobmdNb2RlbCldPVwiY2hvc2VuVGltZVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UaW1lQ2hhbmdlKGNob3NlblRpbWUpXCJcbiAgICBbbmdDbGFzc109XCJ7IGludmFsaWQ6IGlzSW52YWxpZCB8fCAhcmFuZ2VWYWxpZGl0eSB9XCJcbiAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBpbnB1dFdpZHRoIH1cIlxuICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oKVwiXG4gICAgbWlzVG9vbFRpcFxuICAgIFtzaG93VG9vbFRpcF09XCJzaG93VG9vbHRpcCAmJiAoaXNJbnZhbGlkIHx8ICFyYW5nZVZhbGlkaXR5KSAmJiBkaXNwYXlUb29sVGlwXCJcbiAgICBbdGV4dF09XCInSW52YWxpZCBUaW1lJ1wiXG4gICAgW3Bvc2l0aW9uXT1cIid0b3AnXCJcbiAgICBbc2hvd09uSG92ZXJdPVwiZmFsc2VcIlxuICAgICNpbnB1dFxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICBjbGFzcz1cImg3XCJcbiAgLz5cblxuICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGFpbmVyIGxpYkRyb3Bkb3duU2Nyb2xsIGxpYlRpbWVwaWNrZXIgW29yaWdpbkVsXT1cImlucHV0XCIgW29wZW5TdGF0dXNdPVwib3BlblN0YXR1c1wiIChzdGF0dXNFbWl0dGVyKT1cImNsb3NlRHJvcGRvd24oKVwiPlxuICAgIDxkaXYgKm5nSWY9XCJvcGVuU3RhdHVzXCIgY2xhc3M9XCJ0aW1lcGlja2VyLWRyb3Bkb3duXCIgW25nU3R5bGVdPVwieyB3aWR0aDogZHJvcGRvd25XaWR0aCB8fCBpbnB1dFdpZHRoIH1cIj5cbiAgICAgIDx1bCAjZHJvcGRvd24+XG4gICAgICAgIDxsaSAjdGltZUludGVydmFsIChjbGljayk9XCJvblRpbWVTZWxlY3QoaW50ZXJ2YWwpXCIgKm5nRm9yPVwibGV0IGludGVydmFsIG9mIHRpbWVJbnRlcnZhbHM7IGluZGV4IGFzIGlcIiBbbmdDbGFzc109XCJ7IGhpZ2hsaWdodDogaSA9PT0gaXNIaWdobGlnaHRlZCB9XCI+XG4gICAgICAgICAge3sgaW50ZXJ2YWwgfX1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWMtdWktY2hlY2stMjQgc2VsZWN0ZWQtaWNvblwiICpuZ0lmPVwiaW50ZXJ2YWwgPT09IGNob3NlblRpbWVcIj48L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90aW1lcGlja2VyL3RpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGltZXBpY2tlci90aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUE7Ozs7Ozs7Ozs7SUNlcEQsMEJBQWdGOzs7OztJQUZsRixpQ0FBcUo7SUFBbkksaVBBQVMsZUFBQSxpQ0FBc0IsQ0FBQSxJQUFDO0lBQ2hELFlBQ0E7SUFBQSw4RkFBZ0Y7SUFDbEYsaUJBQUs7Ozs7O0lBSGlHLG1GQUE4QztJQUNsSixlQUNBO0lBREEsNENBQ0E7SUFBMkMsZUFBNkI7SUFBN0Isd0RBQTZCOzs7O0lBSjlFLDhCQUF1RyxrQkFBQTtJQUVuRyxzRkFHSztJQUNQLGlCQUFLLEVBQUE7OztJQU42QywrRkFBa0Q7SUFFMUIsZUFBa0I7SUFBbEIsOENBQWtCOzs7SUFGOUYsa0ZBT007OztJQVBBLHdDQUFnQjs7Ozs7QURUMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQixL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RyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUVHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0ksV0FBVztrQkFBcEIsTUFBTTtZQUMrQixLQUFLO2tCQUExQyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDSixtQkFBbUI7a0JBQWxELFNBQVM7bUJBQUMsbUJBQW1CO1lBQ0QsZ0JBQWdCO2tCQUE1QyxTQUFTO21CQUFDLGdCQUFnQjtZQUdPLGdCQUFnQjtrQkFBakQsWUFBWTttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElUaW1lIH0gZnJvbSBcIi4vdGltZS5uYW1lc3BhY2VcIjtcbmltcG9ydCB7IFRpbWVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi90aW1lcGlja2VyLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgVG9vbFRpcERpcmVjdGl2ZSB9IGZyb20gXCJtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3Rvb2x0aXBcIjtcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10aW1lcGlja2VyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGltZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIGN1cnJUaW1lITogc3RyaW5nO1xuICBjaG9zZW5UaW1lOiBzdHJpbmc7XG4gIG9wZW5TdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNIaWdobGlnaHRlZDogbnVtYmVyID0gMDtcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIHRpbWVJbnRlcnZhbHM6IHN0cmluZ1tdID0gW107XG4gIHNob3VsZFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuICB1c2VySW5wdXRGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGdpdmVuVGltZUZsYWc6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjbG9ja0Zvcm1hdDogbnVtYmVyID0gMTI7XG4gIHRpbWVGb3JtYXQhOiBzdHJpbmc7XG4gIFxuICBASW5wdXQoKSB0aW1lem9uZTogc3RyaW5nID0gXCJBc2lhL0tvbGthdGFcIjtcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSBcIm1heC1jb250ZW50XCI7XG4gIEBJbnB1dCgpIGlucHV0V2lkdGg6IHN0cmluZyA9IFwiMTAwcHhcIjtcbiAgQElucHV0KCkgZHJvcGRvd25XaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgaW50ZXJ2YWw6IG51bWJlciA9IDE1O1xuICBASW5wdXQoKSBkYXRlQXNFcG9jaDogbnVtYmVyID0gZGF5anMoKS52YWx1ZU9mKCk7XG4gIEBJbnB1dCgpIGZpcnN0SW50ZXJ2YWwhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHJhbmdlVmFsaWRpdHk6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93VG9vbHRpcDogYm9vbGVhbiA9IHRydWU7XG4gIGRpc3BheVRvb2xUaXA6IGJvb2xlYW4gPSB0aGlzLnNob3dUb29sdGlwO1xuICBASW5wdXQoKSBnaXZlblRpbWU6IG51bWJlcjtcbiAgQElucHV0KCkgbWluVGltZT86IG51bWJlcjtcbiAgQElucHV0KCkgdHJpZ2dlckNoYW5nZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHRpbWVFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJVGltZT4oKTtcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFRpbWVwaWNrZXJEaXJlY3RpdmUpIHRpbWVwaWNrZXJEaXJlY3RpdmU6IFRpbWVwaWNrZXJEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoVG9vbFRpcERpcmVjdGl2ZSkgdG9vbHRpcERpcmVjdGl2ZTogVG9vbFRpcERpcmVjdGl2ZTtcblxuICAvLyBnZXRzIGFsbCB0aGUgbGkgZWxlbWVudHMgZnJvbSB0aGUgZHJvcGRvd24gYW5kIHNjcm9sbHMgdG8gdGhlIGhpZ2hsaWdodGVkIGVsZW1lbnRcbiAgQFZpZXdDaGlsZHJlbihcInRpbWVJbnRlcnZhbFwiKSBzZXQgdGltZUludGVydmFsUmVmcyhpbnRlcnZhbHMpIHtcbiAgICBpbnRlcnZhbHMuZm9yRWFjaChpbnRlcnZhbCA9PiB7XG4gICAgICBpZiAoaW50ZXJ2YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3RbMF0gPT09IFwiaGlnaGxpZ2h0XCIpIHtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBpbnRlcnZhbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGhpZ2hsaWdodGVkLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKXt9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKCF0aGlzLmdpdmVuVGltZSAmJiAhdGhpcy5taW5UaW1lKSB7XG4gICAgICB0aGlzLmNob3NlblRpbWUgPSBkYXlqcyh0aGlzLmZpcnN0SW50ZXJ2YWwpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgICAgbGV0IGNob3NlblRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGhpcy5jaG9zZW5UaW1lKTtcbiAgICAgIHRoaXMuZW1pdFRpbWUoe1xuICAgICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkLFxuICAgICAgICB0aW1lOiB0aGlzLmNob3NlblRpbWUsXG4gICAgICAgIGVwb2NoOiBjaG9zZW5UaW1lZGF5anMudmFsdWVPZigpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVGb3JtYXQgPSB0aGlzLmNsb2NrRm9ybWF0ID09PSAxMiA/IFwiaGg6bW0gYVwiIDogXCJISDptbVwiO1xuICAgIGRheWpzLnR6LnNldERlZmF1bHQodGhpcy50aW1lem9uZSk7XG5cbiAgICBpZiAodGhpcy50aW1lRm9ybWF0KSB7XG4gICAgICBsZXQgY2hvc2VuVGltZWRheWpzID0gdGhpcy5nZXRkYXlqcyh0aGlzLmNob3NlblRpbWUpO1xuICAgIFxuICAgICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsIGlzID49IHRoZSBjaG9zZW4gdGltZVxuICAgICAgLy8gdGhlbiBvbmx5IHVwZGF0ZSB0aGUgdmFsdWUgb2YgY2hvc2VuIHRpbWVcbiAgICAgIC8vIGVsc2UgaXQgcmVtYWlucyB0aGUgc2FtZVxuICAgICAgaWYgKHRoaXMuZmlyc3RJbnRlcnZhbCA+PSBjaG9zZW5UaW1lZGF5anMudmFsdWVPZigpICYmIHRoaXMucmFuZ2VWYWxpZGl0eSAmJiAhdGhpcy51c2VySW5wdXRGbGFnKSB7XG4gICAgICAgIHRoaXMuY2hvc2VuVGltZSA9IGRheWpzKHRoaXMuZmlyc3RJbnRlcnZhbCkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICAgIGNob3NlblRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGhpcy5jaG9zZW5UaW1lKVxuICAgICAgfVxuXG4gICAgICBpZigodGhpcy5naXZlblRpbWVGbGFnICYmIHRoaXMuZ2l2ZW5UaW1lKSB8fCB0aGlzLm1pblRpbWUgKSB7XG4gICAgICAgIHRoaXMuY2hvc2VuVGltZSA9IGRheWpzKHRoaXMubWluVGltZSB8fCB0aGlzLmdpdmVuVGltZSkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB9XG4gICAgICBjaG9zZW5UaW1lZGF5anMgPSB0aGlzLmdldGRheWpzKHRoaXMuY2hvc2VuVGltZSlcblxuICAgICAgaWYgKCF0aGlzLnVzZXJJbnB1dEZsYWcpIHRoaXMucG9wdWxhdGVEcm9wZG93bigpO1xuICAgICAgdGhpcy51c2VySW5wdXRGbGFnID0gZmFsc2U7XG4gICAgICBcbiAgICAgIGlmKHRoaXMuY2hvc2VuVGltZSkge1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9ICF0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRoaXMuY2hvc2VuVGltZS50cmltKCkpO1xuICAgICAgICB0aGlzLmVtaXRUaW1lKHtcbiAgICAgICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkLFxuICAgICAgICAgIHRpbWU6IHRoaXMuY2hvc2VuVGltZSxcbiAgICAgICAgICBlcG9jaDogY2hvc2VuVGltZWRheWpzLnZhbHVlT2YoKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGhpcy5jaG9zZW5UaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbWl0VGltZShkYXRhOiBJVGltZSk6IHZvaWQge1xuICAgIHRoaXMudGltZUVtaXR0ZXIuZW1pdChkYXRhKTtcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uIHRvIGdldCBkYXlqcyBvYmplY3Qgd2hlbiB0aW1lIGlzIGdpdmVuIGluIHN0cmluZ1xuICBnZXRkYXlqcyh0aW1lOiBzdHJpbmcgPSAnMDA6MDAnKXtcbiAgICByZXR1cm4gZGF5anMoIGAke2RheWpzKHRoaXMuZGF0ZUFzRXBvY2gpLmZvcm1hdChcIkRELU1NLVlZWVlcIil9ICR7dGltZX1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKVxuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLmRpc3BheVRvb2xUaXAgPSBmYWxzZTtcbiAgICB0aGlzLnVzZXJJbnB1dEZsYWcgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5TdGF0dXMgPSBmYWxzZTtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyRGlyZWN0aXZlKSB0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUuZGVzdHJveU92ZXJsYXkoKTtcbiAgfVxuXG4gIC8vIHRvZ2dsZSB0aW1lcGlja2VyIGRyb3Bkb3duXG4gIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BheVRvb2xUaXAgPSB0cnVlO1xuICAgIHRoaXMub3BlblN0YXR1cyA9IHRydWU7XG4gIH1cblxuICBjaGVja1RpbWVWYWxpZGl0eSh0aW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBSRTEyID0gL14oKFswXVsxLTldfDFbMC0yXSk6KFswLTVdWzAtOV0pKCApPyhhbXxwbXxBTXxQTSkpJC9pO1xuICAgIGNvbnN0IFJFMjQgPSAvXihbMDFdWzAtOV18MlswLTNdKTpbMC01XVswLTldJC87XG4gICAgY29uc3QgUkUgPSB0aGlzLmNsb2NrRm9ybWF0ID09PSAxMiA/IFJFMTIgOiBSRTI0O1xuXG4gICAgY29uc3QgdGltZWRheWpzID0gdGhpcy5nZXRkYXlqcyh0aW1lKTtcbiAgICBsZXQgZmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gaWYgdGhlIGZpcnN0IGludGVydmFsIGlzIHNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGRheVxuICAgIC8vIG9yIGEgdGltZSBpcyBhbHJlYWR5IHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgdG8gc2hvd1xuICAgIC8vIHRoZW4gd2UgZG9uJ3QgY2hlY2sgaXRzIHZhbGlkaXR5IGFnYWluc3QgdGhlIGN1cnJlbnQgdGltZVxuICAgIGlmIChcbiAgICAgIHRoaXMubWluVGltZSB8fCBcbiAgICAgIHRoaXMuZ2l2ZW5UaW1lIHx8XG4gICAgICAodGhpcy5maXJzdEludGVydmFsICYmXG4gICAgICBkYXlqcyh0aGlzLmZpcnN0SW50ZXJ2YWwpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLnZhbHVlT2YoKSA9PT0gZGF5anMoKS5zdGFydE9mKFwiZGF5XCIpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpLnZhbHVlT2YoKSlcbiAgICApIHtcbiAgICAgIGZsYWcgPSB0aW1lLm1hdGNoKFJFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IHRpbWUubWF0Y2goUkUpICYmIHRpbWVkYXlqcy5kaWZmKGRheWpzKCksIFwibVwiKSA+PSAwID8gdHJ1ZTogZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZsYWc7XG4gIH1cblxuICAvLyB1cGRhdGUgY2hvc2VuIHRpbWUgYXMgc29vbiBhcyB0aGUgdXNlciBjbGlja3Mgb24gYW4gaW50ZXJ2YWxcbiAgb25UaW1lU2VsZWN0KHRpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNJbnZhbGlkID0gIXRoaXMuY2hlY2tUaW1lVmFsaWRpdHkodGltZS50cmltKCkpO1xuICAgIGlmICghdGhpcy5pc0ludmFsaWQpIHtcbiAgICAgIHRoaXMuY2hvc2VuVGltZSA9IHRpbWU7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUNsb3Nlc3RJbnRlcnZhbCh0aGlzLmNob3NlblRpbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGltZSk7XG4gICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkLFxuICAgICAgdGltZTogdGltZSxcbiAgICAgIGVwb2NoOiB0aW1lZGF5anMudmFsdWVPZigpIFxuICAgIH0pO1xuICAgIHRoaXMub3BlblN0YXR1cyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUpIHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZS5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgLy8gY2hlY2tzIHZhbGlkaXR5IG9mIHRpbWUgb24gaW5wdXQgY2hhbmdlIGFuZCBjYWxjdWxhdGVzIHRoZSBjbG9zZXN0IGludGVydmFsXG4gIG9uVGltZUNoYW5nZSh0aW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW52YWxpZCA9ICF0aGlzLmNoZWNrVGltZVZhbGlkaXR5KHRpbWUudHJpbSgpKTtcblxuICAgIGlmICghdGhpcy5pc0ludmFsaWQpIHtcbiAgICAgIHRoaXMudXNlcklucHV0RmxhZyA9IHRydWU7XG4gICAgICB0aGlzLm9wZW5TdGF0dXMgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnRpbWVwaWNrZXJEaXJlY3RpdmUpIHRoaXMudGltZXBpY2tlckRpcmVjdGl2ZS5kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVDbG9zZXN0SW50ZXJ2YWwodGltZSk7XG4gICAgfVxuICAgIGNvbnN0IHRpbWVkYXlqcyA9IHRoaXMuZ2V0ZGF5anModGltZSk7XG4gICAgdGhpcy5lbWl0VGltZSh7XG4gICAgICB2YWxpZDogIXRoaXMuaXNJbnZhbGlkLFxuICAgICAgdGltZTogdGltZSxcbiAgICAgIGVwb2NoOiB0aW1lZGF5anMudmFsdWVPZigpIFxuICAgIH0pO1xuICB9XG5cbiAgY2FsY3VsYXRlQ2xvc2VzdEludGVydmFsKHRpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCByb3VuZGVkRXBvY2g6IG51bWJlcjtcbiAgICAvLyBDb252ZXJ0aW5nIHRpbWUgYW5kIGRhdGUgdG8gYSBkYXlqcyBvYmplY3QgXG4gICAgY29uc3QgY2hvc2VuRGF0ZSA9IGRheWpzKHRoaXMuZGF0ZUFzRXBvY2gpLmZvcm1hdChcIkRELU1NLVlZWVlcIik7IC8vIDA1LTAxLTIwMjRcbiAgICBjb25zdCBwYXJzZWRUaW1lV2l0aERhdGUgPSBkYXlqcyhgJHtjaG9zZW5EYXRlfSAke3RpbWV9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCk7XG4gICAgLy8gQ29udmVydGluZyBkYXlqcyBvYmplY3QgdG8gZXBvY2hcbiAgICBjb25zdCBjaG9zZW5UaW1lRXBvY2ggPSBwYXJzZWRUaW1lV2l0aERhdGUudmFsdWVPZigpO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwgLSAoZGF5anMoY2hvc2VuVGltZUVwb2NoKS5taW51dGUoKSAlIHRoaXMuaW50ZXJ2YWwpO1xuXG4gICAgaWYgKHRoaXMubWluVGltZSAmJiAhdGhpcy5naXZlblRpbWUpIHtcbiAgICAgIHRoaXMuaXNIaWdobGlnaHRlZCA9IDA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJvdW5kZWRFcG9jaCA9IG9mZnNldCA+PSB0aGlzLmludGVydmFsIC8gMiA/IChkYXlqcyhjaG9zZW5UaW1lRXBvY2gpLnN1YnRyYWN0KHRoaXMuaW50ZXJ2YWwgLSBvZmZzZXQsIFwibVwiKSkudmFsdWVPZigpIDogKGRheWpzKGNob3NlblRpbWVFcG9jaCkuYWRkKCBvZmZzZXQsIFwibVwiKSkudmFsdWVPZigpO1xuXG4gICAgLy8gZmluZGluZyB0aGUgaW5kZXggb2YgZWxlbWVudCB0aGF0IG5lZWRzIHRvIGJlIGhpZ2hsaWdodGVkXG4gICAgaWYgKCBjaG9zZW5UaW1lRXBvY2ggPiBkYXlqcyh0aGlzLmRhdGVBc0Vwb2NoKS5lbmRPZihcImRheVwiKS5zdWJ0cmFjdCh0aGlzLmludGVydmFsLCBcIm1cIikudmFsdWVPZigpKSB7XG4gICAgICB0aGlzLmlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnRpbWVJbnRlcnZhbHMubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgcm91bmRlZEVwb2NoZGF5anMgPSBkYXlqcyhyb3VuZGVkRXBvY2gpO1xuICAgICAgdGhpcy5pc0hpZ2hsaWdodGVkID0gdGhpcy50aW1lSW50ZXJ2YWxzLmZpbmRJbmRleChpbnRlcnZhbCA9PiB7XG4gICAgICAgIGNvbnN0IGludGVydmFsT2JqID0gZGF5anMoYCR7Y2hvc2VuRGF0ZX0gJHtpbnRlcnZhbH1gLCBgREQtTU0tWVlZWSAke3RoaXMudGltZUZvcm1hdH1gKTtcbiAgICAgICAgcmV0dXJuIGludGVydmFsT2JqLmlzU2FtZShyb3VuZGVkRXBvY2hkYXlqcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuXG4gIC8vIHBvcHVsYXRlcyB0aGUgZHJvcGRvd24gYWNjb3JkaW5nIHRvIHRoZSBmaXJzdCBpbnRlcnZhbCByZWNlaXZlZFxuICBwb3B1bGF0ZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMudGltZUludGVydmFscyA9IFtdO1xuXG4gICAgLy8gaWYgcGlja2VyIGlzIHVzZWQgYXMgYW4gaW5kaXZpZHVhbCBjb21wb25lbnRcbiAgICBpZiAoIXRoaXMuZmlyc3RJbnRlcnZhbCkge1xuICAgICAgLy8gZmlyc3RJbnRlcnZhbCBpcyBpbml0aWFsaXNlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgdGltZVxuICAgICAgLy8gaWYgdGhlIGRhdGUgaXMgc2FtZSBhcyB0aGUgY3VycmVudCBkYXRlXG4gICAgICBpZiAoZGF5anModGhpcy5kYXRlQXNFcG9jaCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSA9PT0gZGF5anMoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpICYmICF0aGlzLm1pblRpbWUpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5pbnRlcnZhbCAtIChkYXlqcygpLm1pbnV0ZSgpICUgdGhpcy5pbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbCA9IGRheWpzKCkuYWRkKG9mZnNldCwgXCJtXCIpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIG1pbmltdW0gdGltZSB0byBzaG93IGlzIHByb3ZpZGVkXG4gICAgICBlbHNlIGlmKHRoaXMubWluVGltZSl7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuaW50ZXJ2YWwgLSAoZGF5anModGhpcy5taW5UaW1lKS5taW51dGUoKSAlIHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgICB0aGlzLmZpcnN0SW50ZXJ2YWwgPSBkYXlqcyh0aGlzLm1pblRpbWUpLmFkZChvZmZzZXQsIFwibVwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgICAvLyBlbHNlIHRoZSBmaXJzdEludGVydmFsIGlzIGluaXRpYWxpc2VkIGFzIHN0YXJ0IG9mIGRheVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbCA9IGRheWpzKCkuc3RhcnRPZihcImRheVwiKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYodGhpcy5naXZlblRpbWUgJiYgdGhpcy5naXZlblRpbWVGbGFnKXtcbiAgICAgIHRoaXMuZmlyc3RJbnRlcnZhbCA9IGRheWpzKHRoaXMuZ2l2ZW5UaW1lKS5zdGFydE9mKCdkJykudmFsdWVPZigpO1xuICAgICAgdGhpcy5naXZlblRpbWVGbGFnID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZUFzU3RyaW5nID0gZGF5anModGhpcy5kYXRlQXNFcG9jaCkuZm9ybWF0KCdERC1NTS1ZWVlZJyk7XG4gICAgY29uc3QgaW50ZXJ2YWxBc1N0cmluZyA9IGRheWpzKHRoaXMuZmlyc3RJbnRlcnZhbCkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgbGV0IHN0YXJ0ID0gZGF5anMoYCR7ZGF0ZUFzU3RyaW5nfSAke2ludGVydmFsQXNTdHJpbmd9YCwgYERELU1NLVlZWVkgJHt0aGlzLnRpbWVGb3JtYXR9YCk7XG4gICAgY29uc3QgZW5kID0gZGF5anModGhpcy5kYXRlQXNFcG9jaCkuZW5kT2YoJ2QnKTtcbiAgICB3aGlsZSAoc3RhcnQudmFsdWVPZigpIDwgZW5kLnZhbHVlT2YoKSkge1xuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxzLnB1c2goc3RhcnQuZm9ybWF0KHRoaXMudGltZUZvcm1hdCkpO1xuICAgICAgc3RhcnQgPSBzdGFydC5hZGQodGhpcy5pbnRlcnZhbCwgXCJtXCIpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBzdGFydCB0aW1lIGlzIGVxdWFsIHRvIHRoZSBpbnRlcnZhbCBqdXN0IGJlZm9yZSBtaWRuaWdodFxuICAgIC8vIGFuZCB0aGUgc3RhcnQgZGF0ZSA9IGVuZCBkYXRlXG4gICAgLy8gcHVzaCAxMTo1OXBtIG9ubHlcbiAgICBpZiAodGhpcy50aW1lSW50ZXJ2YWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jaG9zZW5UaW1lID0gZGF5anMoKS5lbmRPZihcImRcIikuZm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbHMucHVzaChkYXlqcygpLmVuZE9mKFwiZFwiKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcERpcmVjdGl2ZSkgdGhpcy50b29sdGlwRGlyZWN0aXZlLmhpZGVUb29sVGlwKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0aW1lcGlja2VyLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgfVwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZSc6IGRpc2FibGV9XCI+XG4gIDxpbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbKG5nTW9kZWwpXT1cImNob3NlblRpbWVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGltZUNoYW5nZShjaG9zZW5UaW1lKVwiXG4gICAgW25nQ2xhc3NdPVwieyBpbnZhbGlkOiBpc0ludmFsaWQgfHwgIXJhbmdlVmFsaWRpdHkgfVwiXG4gICAgW25nU3R5bGVdPVwieyB3aWR0aDogaW5wdXRXaWR0aCB9XCJcbiAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKClcIlxuICAgIG1pc1Rvb2xUaXBcbiAgICBbc2hvd1Rvb2xUaXBdPVwic2hvd1Rvb2x0aXAgJiYgKGlzSW52YWxpZCB8fCAhcmFuZ2VWYWxpZGl0eSkgJiYgZGlzcGF5VG9vbFRpcFwiXG4gICAgW3RleHRdPVwiJ0ludmFsaWQgVGltZSdcIlxuICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXG4gICAgW3Nob3dPbkhvdmVyXT1cImZhbHNlXCJcbiAgICAjaW5wdXRcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgY2xhc3M9XCJoN1wiXG4gIC8+XG5cbiAgPG5nLXRlbXBsYXRlICNkcm9wZG93bkNvbnRhaW5lciBsaWJEcm9wZG93blNjcm9sbCBsaWJUaW1lcGlja2VyIFtvcmlnaW5FbF09XCJpbnB1dFwiIFtvcGVuU3RhdHVzXT1cIm9wZW5TdGF0dXNcIiAoc3RhdHVzRW1pdHRlcik9XCJjbG9zZURyb3Bkb3duKClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwib3BlblN0YXR1c1wiIGNsYXNzPVwidGltZXBpY2tlci1kcm9wZG93blwiIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGRyb3Bkb3duV2lkdGggfHwgaW5wdXRXaWR0aCB9XCI+XG4gICAgICA8dWwgI2Ryb3Bkb3duPlxuICAgICAgICA8bGkgI3RpbWVJbnRlcnZhbCAoY2xpY2spPVwib25UaW1lU2VsZWN0KGludGVydmFsKVwiICpuZ0Zvcj1cImxldCBpbnRlcnZhbCBvZiB0aW1lSW50ZXJ2YWxzOyBpbmRleCBhcyBpXCIgW25nQ2xhc3NdPVwieyBoaWdobGlnaHQ6IGkgPT09IGlzSGlnaGxpZ2h0ZWQgfVwiPlxuICAgICAgICAgIHt7IGludGVydmFsIH19XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljLXVpLWNoZWNrLTI0IHNlbGVjdGVkLWljb25cIiAqbmdJZj1cImludGVydmFsID09PSBjaG9zZW5UaW1lXCI+PC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export { TimeRangePickerComponent } from "./timerangepicker.component";
2
2
  export { TimeRangePickerModule } from "./timerangepicker.module";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGltZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGltZVJhbmdlUGlja2VyTW9kdWxlIH0gZnJvbSBcIi4vdGltZXJhbmdlcGlja2VyLm1vZHVsZVwiIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RpbWVyYW5nZXBpY2tlci9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGltZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vdGltZXJhbmdlcGlja2VyLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGltZVJhbmdlUGlja2VyTW9kdWxlIH0gZnJvbSBcIi4vdGltZXJhbmdlcGlja2VyLm1vZHVsZVwiO1xuZXhwb3J0IHsgVERpcmVjdGlvbiwgSVRpbWVSYW5nZSwgSVRpbWUgfSBmcm9tIFwiLi90aW1lcmFuZ2UubmFtZXNwYWNlXCI7XG4iXX0=