@acorex/components 16.18.6 → 16.18.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,5 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';
2
- import { AXDateTime, AXDateTimeRange, AXTranslator } from '@acorex/core';
3
- import { AXConfig } from '@acorex/core';
1
+ import { AXConfig, AXDateTime, AXDateTimeRange, AXTranslator, } from '@acorex/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@angular/common";
6
5
  import * as i2 from "../../button/button.component";
@@ -13,21 +12,43 @@ export class AXCalendarBoxComponent {
13
12
  jalali: {
14
13
  locale: AXConfig.get('dateTime.jalali.locale') || 'fa',
15
14
  dir: 'rtl',
16
- number: 1
15
+ number: 1,
17
16
  },
18
17
  gregorian: {
19
18
  locale: AXConfig.get('dateTime.gregorian.locale') || 'en',
20
19
  dir: 'ltr',
21
- number: 0
22
- }
20
+ number: 0,
21
+ },
23
22
  };
24
23
  numRotate;
25
24
  size = 'md';
26
25
  type;
27
26
  locale;
28
27
  dir;
29
- min;
30
- max;
28
+ _min;
29
+ set min(v) {
30
+ if (v) {
31
+ this._min = v;
32
+ this.focusedValue = this.today;
33
+ this.viewRange = this.today.month.range;
34
+ this.navigate(0);
35
+ }
36
+ }
37
+ get min() {
38
+ return this._min;
39
+ }
40
+ _max;
41
+ set max(v) {
42
+ if (v) {
43
+ this._max = v;
44
+ this.focusedValue = this.today;
45
+ this.viewRange = this.today.month.range;
46
+ this.navigate(0);
47
+ }
48
+ }
49
+ get max() {
50
+ return this._max;
51
+ }
31
52
  selectableHoliday = true;
32
53
  dayStyle = [];
33
54
  dayMinMaxResoan = '';
@@ -68,7 +89,7 @@ export class AXCalendarBoxComponent {
68
89
  vv = AXDateTime.convert(v);
69
90
  }
70
91
  let unValidDate = false;
71
- if (this.max || this.min) {
92
+ if (this._max || this._min) {
72
93
  unValidDate = this.isInMInMaxRange(vv);
73
94
  }
74
95
  if (!unValidDate) {
@@ -80,7 +101,7 @@ export class AXCalendarBoxComponent {
80
101
  this.onValueChanged.emit({
81
102
  component: this,
82
103
  value: this._value?.date,
83
- htmlElement: this.ref.nativeElement
104
+ htmlElement: this.ref.nativeElement,
84
105
  });
85
106
  }
86
107
  if (v == undefined) {
@@ -92,7 +113,7 @@ export class AXCalendarBoxComponent {
92
113
  this.onClick.emit({
93
114
  component: this,
94
115
  value: this._value?.date,
95
- htmlElement: this.ref.nativeElement
116
+ htmlElement: this.ref.nativeElement,
96
117
  });
97
118
  }
98
119
  }
@@ -128,8 +149,10 @@ export class AXCalendarBoxComponent {
128
149
  return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).text;
129
150
  }
130
151
  else {
131
- if ((this.min && this.max && date.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1) ||
132
- date.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1) {
152
+ if ((this._min &&
153
+ this._max &&
154
+ date.compaireNew(new AXDateTime(this._min, this.type), 'YMD', this.type) === -1) ||
155
+ date.compaireNew(new AXDateTime(this._max, this.type), 'YMD', this.type) === 1) {
133
156
  return this.dayMinMaxResoan;
134
157
  }
135
158
  else {
@@ -183,7 +206,7 @@ export class AXCalendarBoxComponent {
183
206
  AXTranslator.get(`${path}.wed`, this.locale),
184
207
  AXTranslator.get(`${path}.thu`, this.locale),
185
208
  AXTranslator.get(`${path}.fri`, this.locale),
186
- AXTranslator.get(`${path}.sat`, this.locale)
209
+ AXTranslator.get(`${path}.sat`, this.locale),
187
210
  ];
188
211
  }
189
212
  getTodayName() {
@@ -197,7 +220,11 @@ export class AXCalendarBoxComponent {
197
220
  }
198
221
  rotate(array, n) {
199
222
  const len = array.length;
200
- return !(n % len) ? array : n > 0 ? array.map((e, i, a) => a[(i + n) % len]) : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);
223
+ return !(n % len)
224
+ ? array
225
+ : n > 0
226
+ ? array.map((e, i, a) => a[(i + n) % len])
227
+ : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);
201
228
  }
202
229
  navigate(value) {
203
230
  let start;
@@ -208,7 +235,10 @@ export class AXCalendarBoxComponent {
208
235
  fd = value.startOf('month');
209
236
  }
210
237
  else {
211
- fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');
238
+ fd = this.viewRange.startTime
239
+ .add('day', 15)
240
+ .add('month', value)
241
+ .startOf('month');
212
242
  }
213
243
  start = fd.firstDayOfWeek;
214
244
  end = fd.endOf('month').endDayOfWeek;
@@ -231,7 +261,10 @@ export class AXCalendarBoxComponent {
231
261
  fd = value.startOf('year');
232
262
  }
233
263
  else {
234
- fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');
264
+ fd = this.viewRange.startTime
265
+ .add('day', 15)
266
+ .add('year', value)
267
+ .startOf('year');
235
268
  }
236
269
  start = fd;
237
270
  end = fd.endOf('year');
@@ -261,7 +294,8 @@ export class AXCalendarBoxComponent {
261
294
  //
262
295
  if (this.view === 'day') {
263
296
  this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);
264
- if (this.matrix.length > 0 && this.matrix[0].find((c) => c.nextMonth === false) === undefined) {
297
+ if (this.matrix.length > 0 &&
298
+ this.matrix[0].find((c) => c.nextMonth === false) === undefined) {
265
299
  this.matrix.splice(0, 1);
266
300
  }
267
301
  if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {
@@ -281,12 +315,17 @@ export class AXCalendarBoxComponent {
281
315
  dates.forEach((d, i, j) => {
282
316
  const item = {};
283
317
  item.date = d;
284
- item.selected = d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;
285
- item.focused = d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;
286
- item.today = this.today && d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;
318
+ item.selected =
319
+ d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;
320
+ item.focused =
321
+ d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;
322
+ item.today =
323
+ this.today &&
324
+ d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;
287
325
  if (this.view === 'day') {
288
326
  // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;
289
- item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;
327
+ item.nextMonth =
328
+ d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;
290
329
  item.unselect = this.isInMInMaxRange(d);
291
330
  this.holidays.forEach((h) => {
292
331
  const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);
@@ -338,16 +377,18 @@ export class AXCalendarBoxComponent {
338
377
  isInMInMaxRange(d) {
339
378
  let r = false;
340
379
  if (d !== undefined) {
341
- if (this.min && !this.max) {
342
- r = d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1;
380
+ if (this._min && !this._max) {
381
+ r =
382
+ d.compaireNew(new AXDateTime(this._min, this.type), this.getViewCompaire(this.view), this.type) === -1;
343
383
  }
344
- if (this.max && !this.min) {
345
- r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;
384
+ if (this._max && !this._min) {
385
+ r =
386
+ d.compaireNew(new AXDateTime(this._max, this.type), this.getViewCompaire(this.view), this.type) === 1;
346
387
  }
347
- if (this.min && this.max) {
388
+ if (this._min && this._max) {
348
389
  r =
349
- d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||
350
- d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;
390
+ d.compaireNew(new AXDateTime(this._min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||
391
+ d.compaireNew(new AXDateTime(this._max, this.type), this.getViewCompaire(this.view), this.type) === 1;
351
392
  }
352
393
  }
353
394
  return r;
@@ -358,7 +399,9 @@ export class AXCalendarBoxComponent {
358
399
  }
359
400
  else {
360
401
  this.view = 'day';
361
- this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year).set('month', date.monthOfYear));
402
+ this.setFocus(new AXDateTime(this.value, this.type)
403
+ .set('year', date.year)
404
+ .set('month', date.monthOfYear));
362
405
  }
363
406
  event.stopPropagation();
364
407
  }
@@ -423,4 +466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
423
466
  }], value: [{
424
467
  type: Input
425
468
  }] } });
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItYm94L2NhbGVuZGFyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBa0IsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBeUJ4QyxNQUFNLE9BQU8sc0JBQXNCO0lBcUliO0lBQWdDO0lBcElwRCxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBRWhCLENBQUMsR0FBRztRQUNWLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLElBQUksSUFBSTtZQUN0RCxHQUFHLEVBQUUsS0FBSztZQUNWLE1BQU0sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxTQUFTLEVBQUU7WUFDVCxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLElBQUk7WUFDekQsR0FBRyxFQUFFLEtBQUs7WUFDVixNQUFNLEVBQUUsQ0FBQztTQUNWO0tBQ0YsQ0FBQztJQUVGLFNBQVMsQ0FBUztJQUdsQixJQUFJLEdBQWtCLElBQUksQ0FBQztJQUczQixJQUFJLENBQWlCO0lB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Q04sT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFnQjtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25HLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFnQjtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMs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QixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBUUMsZUFBZTtzQkFEckIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBT2IsSUFBSTtzQkFEZCxLQUFLO2dCQVlLLEtBQUs7c0JBRGYsS0FBSztnQkFjTixjQUFjO3NCQURiLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFLSSxLQUFLO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlLCBBWENhbGVuZGFyVHlwZSwgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYRWxlbWVudFNpemUgfSBmcm9tICcuLi8uLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyVmlld1R5cGUgPSAneWVhcicgfCAnbW9udGgnIHwgJ2RheSc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5cyA9IEFYQ2FsZW5kYXJIb2xpZGF5W107XG5leHBvcnQgdHlwZSBBWENhbGVuZGFySG9saWRheXNGdW5jID0gKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUsIHR5cGU6IEFYQ2FsZW5kYXJUeXBlKSA9PiBBWENhbGVuZGFySG9saWRheVtdO1xuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFySG9saWRheSB7XG4gIGRhdGU6IERhdGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyV2Vla2VuZHMgPSBBWENhbGVuZGFyV2Vla2VuZFtdO1xuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzRnVuYyA9IChzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCB0eXBlOiBBWENhbGVuZGFyVHlwZSkgPT4gQVhDYWxlbmRhcldlZWtlbmRbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyV2Vla2VuZCB7XG4gIGluZGV4RGF5OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQm94Q29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XG4gIHdlZWtkYXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgZCA9IHtcbiAgICBqYWxhbGk6IHtcbiAgICAgIGxvY2FsZTogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5qYWxhbGkubG9jYWxlJykgfHwgJ2ZhJyxcbiAgICAgIGRpcjogJ3J0bCcsXG4gICAgICBudW1iZXI6IDFcbiAgICB9LFxuICAgIGdyZWdvcmlhbjoge1xuICAgICAgbG9jYWxlOiBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmdyZWdvcmlhbi5sb2NhbGUnKSB8fCAnZW4nLFxuICAgICAgZGlyOiAnbHRyJyxcbiAgICAgIG51bWJlcjogMFxuICAgIH1cbiAgfTtcblxuICBudW1Sb3RhdGU6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBzaXplOiBBWEVsZW1lbnRTaXplID0gJ21kJztcblxuICBASW5wdXQoKVxuICB0eXBlOiBBWENhbGVuZGFyVHlwZTtcblxuICBASW5wdXQoKVxuICBsb2NhbGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkaXI6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtaW46IERhdGU7XG5cbiAgQElucHV0KClcbiAgbWF4OiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVIb2xpZGF5OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBkYXlTdHlsZSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGRheU1pbk1heFJlc29hbiA9ICcnO1xuXG4gIHByaXZhdGUgZ2V0SG9saWRheTogQVhDYWxlbmRhckhvbGlkYXlzIHwgQVhDYWxlbmRhckhvbGlkYXlzRnVuYztcblxuICBwcml2YXRlIGdldFdlZWtlbmQ6IEFYQ2FsZW5kYXJXZWVrZW5kcyB8IEFYQ2FsZW5kYXJXZWVrZW5kc0Z1bmM7XG5cbiAgQElucHV0KCdzaG93VG9kYXlCdXR0b24nKVxuICBwdWJsaWMgc2hvd1RvZGF5QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbWF0cml4OiBhbnlbXSA9IFtdO1xuICByb3RhdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICdkYXknO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZpZXcoKTogQVhDYWxlbmRhclZpZXdUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldztcbiAgfVxuICBwdWJsaWMgc2V0IHZpZXcodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fdmlldyA9IHY7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlcHRoOiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRlcHRoKCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcHRoO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVwdGgodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fZGVwdGggPSB2O1xuICAgIHRoaXMudmlldyA9IHY7XG4gIH1cblxuICB2aWV3UmFuZ2U6IEFYRGF0ZVRpbWVSYW5nZTtcbiAgcHJpdmF0ZSBob2xpZGF5czogQVhDYWxlbmRhckhvbGlkYXlbXSA9IFtdO1xuICBwcml2YXRlIHdlZWtlbmRzOiBBWENhbGVuZGFyV2Vla2VuZFtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PigpO1xuXG4gIEBPdXRwdXQoKVxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IERhdGUpIHtcbiAgICBsZXQgdnY6IEFYRGF0ZVRpbWU7XG4gICAgaWYgKHYpIHtcbiAgICAgIHZ2ID0gQVhEYXRlVGltZS5jb252ZXJ0KHYpO1xuICAgIH1cbiAgICBsZXQgdW5WYWxpZERhdGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5tYXggfHwgdGhpcy5taW4pIHtcbiAgICAgIHVuVmFsaWREYXRlID0gdGhpcy5pc0luTUluTWF4UmFuZ2UodnYpO1xuICAgIH1cbiAgICBpZiAoIXVuVmFsaWREYXRlKSB7XG4gICAgICBpZiAodnYgJiYgIXZ2LmVxdWFsKHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZ2O1xuICAgICAgICB0aGlzLl92YWx1ZS50eXBlID0gdGhpcy50eXBlO1xuICAgICAgICB0aGlzLnNldEZvY3VzKHRoaXMuX3ZhbHVlLmNsb25lKCkpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodnYuZGF0ZSk7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZT8uZGF0ZSxcbiAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xuICAgICAgICB0aGlzLm5hdmlnYXRlKDApO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzZWRWYWx1ZTogQVhEYXRlVGltZTtcbiAgZ2V0IHRvZGF5KCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xuICAgIC8vIHNldCBkZWZhdWx0c1xuICAgIHRoaXMuZ2V0SG9saWRheSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuaG9saWRheXMnKTtcbiAgICB0aGlzLmdldFdlZWtlbmQgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLndlZWtlbmRzJyk7XG4gIH1cbiAgZmluZERheShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXRTdHlsZShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSkuc3R5bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBnZXRUaXRsZShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSkudGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5taW4gJiYgdGhpcy5tYXggJiYgZGF0ZS5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IC0xKSB8fFxuICAgICAgICBkYXRlLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKSA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheU1pbk1heFJlc29hbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgICAvL1xuICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zZXRGb2N1cyhuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGb2N1cyh0aGlzLnRvZGF5KTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIGdldFZpZXdDb21wYWlyZSh2aWV3OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcbiAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHJldHVybiAnWU1EJztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuICdZTSc7XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuICdZJztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdExheW91dCgpIHtcbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbic7XG4gICAgfVxuICAgIGlmICghdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5kW3RoaXMudHlwZV0/LmxvY2FsZSB8fCB0aGlzLmxvY2FsZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpcikge1xuICAgICAgdGhpcy5kaXIgPSB0aGlzLmRbdGhpcy50eXBlXT8uZGlyIHx8ICdsdHInO1xuICAgIH1cbiAgICB0aGlzLm51bVJvdGF0ZSA9IHRoaXMuZFt0aGlzLnR5cGVdPy5udW1iZXIgfHwgMDtcbiAgICBjb25zdCBwYXRoID0gJ2RhdGVUaW1lLndlZWtkYXlzU2hvcnQnO1xuICAgIHRoaXMud2Vla2RheXMgPSBbXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnN1bmAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ubW9uYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS50dWVgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LndlZGAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0udGh1YCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5mcmlgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnNhdGAsIHRoaXMubG9jYWxlKVxuICAgIF07XG4gIH1cblxuICBnZXRUb2RheU5hbWUoKSB7XG4gICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQoJ2RhdGVUaW1lLnRvZGF5JywgdGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICB0aGlzLm5hdmlnYXRlKC0xKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgxKTtcbiAgfVxuXG4gIHJvdGF0ZShhcnJheSwgbikge1xuICAgIGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gIShuICUgbGVuKSA/IGFycmF5IDogbiA+IDAgPyBhcnJheS5tYXAoKGUsIGksIGEpID0+IGFbKGkgKyBuKSAlIGxlbl0pIDogYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhsZW4gLSAoKGxlbiAtIGkgLSBuKSAlIGxlbikpICUgbGVuXSk7XG4gIH1cblxuICBuYXZpZ2F0ZSh2YWx1ZTogbnVtYmVyIHwgQVhEYXRlVGltZSkge1xuICAgIGxldCBzdGFydDogQVhEYXRlVGltZTtcbiAgICBsZXQgZW5kOiBBWERhdGVUaW1lO1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZignbW9udGgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTUpLmFkZCgnbW9udGgnLCB2YWx1ZSkuc3RhcnRPZignbW9udGgnKTtcbiAgICAgIH1cblxuICAgICAgc3RhcnQgPSBmZC5maXJzdERheU9mV2VlaztcbiAgICAgIGVuZCA9IGZkLmVuZE9mKCdtb250aCcpLmVuZERheU9mV2VlaztcblxuICAgICAgc3RhcnQgPSBzdGFydC5hZGQoJ2RheScsIC10aGlzLm51bVJvdGF0ZSk7XG4gICAgICBlbmQgPSBlbmQuYWRkKCdkYXknLCA3KS5hZGQoJ2RheScsIC10aGlzLm51bVJvdGF0ZSk7XG5cbiAgICAgIC8vIFRPRE86IGFwcGx5IHN0YXJ0IG9mIHdlZWtcbiAgICAgIGlmICghdGhpcy5yb3RhdGVkICYmIHRoaXMud2Vla2RheXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnamFsYWxpJykge1xuICAgICAgICAgIHRoaXMud2Vla2RheXMgPSB0aGlzLnJvdGF0ZSh0aGlzLndlZWtkYXlzLCAtdGhpcy5udW1Sb3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMud2Vla2RheXMgPSB0aGlzLnJvdGF0ZSh0aGlzLndlZWtkYXlzLCB0aGlzLm51bVJvdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJvdGF0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZigneWVhcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxNSkuYWRkKCd5ZWFyJywgdmFsdWUpLnN0YXJ0T2YoJ3llYXInKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gZmQ7XG4gICAgICBlbmQgPSBmZC5lbmRPZigneWVhcicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAneWVhcicpIHtcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZVxuICAgICAgICAgIC5hZGQoJ2RheScsIDE1KVxuICAgICAgICAgIC5hZGQoJ3llYXInLCB2YWx1ZSAqIDEwKVxuICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IGZkLmFkZCgneWVhcicsIC00KTtcbiAgICAgIGVuZCA9IHN0YXJ0LmFkZCgneWVhcicsIDgpLmVuZE9mKCd5ZWFyJyk7XG4gICAgfVxuICAgIHRoaXMudmlld1JhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShzdGFydCwgZW5kKTtcbiAgICAvL1xuICAgIGlmICh0aGlzLmdldEhvbGlkYXkgJiYgdHlwZW9mIHRoaXMuZ2V0SG9saWRheSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5ob2xpZGF5cyA9IHRoaXMuZ2V0SG9saWRheShzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRXZWVrZW5kICYmIHR5cGVvZiB0aGlzLmdldFdlZWtlbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMud2Vla2VuZHMgPSB0aGlzLmdldFdlZWtlbmQoc3RhcnQuZGF0ZSwgZW5kLmRhdGUsIHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgLy9cbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeSh0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCdkYXknLCB0aGlzLnR5cGUpKSwgNyk7XG4gICAgICBpZiAodGhpcy5tYXRyaXgubGVuZ3RoID4gMCAmJiB0aGlzLm1hdHJpeFswXS5maW5kKChjKSA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5tYXRyaXguc3BsaWNlKDAsIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWF0cml4W3RoaXMubWF0cml4Lmxlbmd0aCAtIDFdLmZpbmQoKGMpID0+IGMubmV4dE1vbnRoID09PSBmYWxzZSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UodGhpcy5tYXRyaXgubGVuZ3RoIC0gMSwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkodGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgnbW9udGgnLCB0aGlzLnR5cGUpKSwgMyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeSh0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCd5ZWFyJywgdGhpcy50eXBlKSksIDMpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGUoZGF0ZXM6IEFYRGF0ZVRpbWVbXSk6IGFueVtdIHtcbiAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICBkYXRlcy5mb3JFYWNoKChkLCBpLCBqKSA9PiB7XG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcbiAgICAgIGl0ZW0uZGF0ZSA9IGQ7XG5cbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDA7XG4gICAgICBpdGVtLmZvY3VzZWQgPSBkLmNvbXBhaXJlTmV3KHRoaXMuZm9jdXNlZFZhbHVlLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAwO1xuICAgICAgaXRlbS50b2RheSA9IHRoaXMudG9kYXkgJiYgZC5jb21wYWlyZU5ldyh0aGlzLnRvZGF5LCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAwO1xuICAgICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgICAgLy8gIGl0ZW0ubmV4dE1vbnRoID0gZC5jb21wYWlyZU5ldyh0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxMCksICdZTScpICE9PSAwO1xuICAgICAgICBpdGVtLm5leHRNb250aCA9IGQuY29tcGFpcmVOZXcodGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTApLCAnWU0nLCB0aGlzLnR5cGUpICE9PSAwO1xuXG4gICAgICAgIGl0ZW0udW5zZWxlY3QgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZShkKTtcbiAgICAgICAgdGhpcy5ob2xpZGF5cy5mb3JFYWNoKChoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcCA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUoaC5kYXRlLCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKTtcbiAgICAgICAgICBpZiAoY29tcCA9PT0gMCkge1xuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGluZGV4RGF5ID0gaSAtIE1hdGguZmxvb3IoaSAvIDcpICogNztcbiAgICAgICAgdGhpcy53ZWVrZW5kcy5mb3JFYWNoKChjYykgPT4ge1xuICAgICAgICAgIGlmIChOdW1iZXIoY2MpID09PSBpbmRleERheSkge1xuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBjaGFuZ2VWaWV3KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZpZXcgPSAneWVhcic7XG4gICAgfVxuICB9XG5cbiAgbWF0cml4aWZ5KGFycjogYW55W10sIGNvbHMpIHtcbiAgICBjb25zdCByb3dzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBjb2xzKTtcbiAgICBjb25zdCBtYXRyaXggPSBbXTtcbiAgICBpZiAocm93cyAqIGNvbHMgPT09IGFyci5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjb2xzKSB7XG4gICAgICAgIG1hdHJpeC5wdXNoKGFyci5zbGljZShpLCBjb2xzICsgaSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc2V0RGF5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAoaXRlbS51bnNlbGVjdCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0uZGF0ZS5kYXRlO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcbiAgICBsZXQgciA9IGZhbHNlO1xuICAgIGlmIChkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcbiAgICAgICAgciA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5taW4sIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IC0xO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWF4ICYmICF0aGlzLm1pbikge1xuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1heCwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1heCkge1xuICAgICAgICByID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWluLCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAtMSB8fFxuICAgICAgICAgIGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgc2V0TW9udGhDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZGF0ZS5kYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKS5zZXQoJ3llYXInLCBkYXRlLnllYXIpLnNldCgnbW9udGgnLCBkYXRlLm1vbnRoT2ZZZWFyKSk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2V0WWVhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGVwdGggPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKS5zZXQoJ3llYXInLCBkYXRlLnllYXIpKTtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzZXRGb2N1cyhkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBkYXRlO1xuICAgIHRoaXMubmF2aWdhdGUodGhpcy5mb2N1c2VkVmFsdWUpO1xuICB9XG5cbiAgc2V0VG9kYXkoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudG9kYXkuZGF0ZTtcbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0uZGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWNvbnRhaW5lciB7e3NpemV9fVwiIFtuZ0NsYXNzXT1cInR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5uZXh0JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW5hdi1idXR0b25cIiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwibGlnaHQgYmxhbmtcIiAoY2xpY2spPVwiY2hhbmdlVmlldygpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RheSdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywxMCkgfCBkdDpcIk1NTSBZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fSAtIHt7dmlld1JhbmdlLmVuZFRpbWUgfCBkdDpcIllZWVlcIn19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cInByZXYoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5wcmV2JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF5J1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tb250aC1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHcgb2Ygd2Vla2RheXMnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWl0ZW1cIj57e3d9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW0gYXgtc3RhdGUtZXZlbnRcIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW3RpdGxlXT1cImdldFRpdGxlKGQuZGF0ZSlcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheSwnbmV4dC1tb250aCc6ZC5uZXh0TW9udGggLCAnaG9saWRheSc6ZC5ob2xpZGF5ICwgJ3Vuc2VsZWN0JzpkLnVuc2VsZWN0fVwiIFtuZ1N0eWxlXT1cIihmaW5kRGF5KGQuZGF0ZSkpID8gZ2V0U3R5bGUoZC5kYXRlKTonJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERheUNsaWNrKCRldmVudCxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZC5kYXRlLmRheUluTW9udGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtY29udGFpbmVyXCIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtaXRlbVwiICpuZ0Zvcj1cImxldCBkIG9mIHI7dHJhY2tCeTp0cmFja0J5Rm5cIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheX1cIiAoY2xpY2spPVwic2V0TW9udGhDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2QuZGF0ZXwgZHQ6XCJNTU1cIn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCIneWVhcidcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiY2FsZW5kYXItcm93XCIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXl9XCIgKGNsaWNrKT1cInNldFllYXJDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57e2QuZGF0ZSB8IGR0OlwiWVlZWVwifX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInNldFRvZGF5KClcIiAqbmdJZj1cInNob3dUb2RheUJ1dHRvblwiIHR5cGU9XCJkYXJrXCI+XG4gICAgICAgICAgICB7e2dldFRvZGF5TmFtZSgpfX1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItYm94L2NhbGVuZGFyLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUNSLFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7OztBQXNDdkIsTUFBTSxPQUFPLHNCQUFzQjtJQW1LYjtJQUFnQztJQWxLcEQsUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUVoQixDQUFDLEdBQUc7UUFDVixNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLElBQUk7WUFDdEQsR0FBRyxFQUFFLEtBQUs7WUFDVixNQUFNLEVBQUUsQ0FBQztTQUNWO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsSUFBSSxJQUFJO1lBQ3pELEdBQUcsRUFBRSxLQUFLO1lBQ1YsTUFBTSxFQUFFLENBQUM7U0FDVjtLQUNGLENBQUM7SUFFRixTQUFTLENBQVM7SUFHbEIsSUFBSSxHQUFrQixJQUFJLENBQUM7SUFHM0IsSUFBSSxDQUFpQjtJQUdyQixNQUFNLENBQVM7SUFHZixHQUFHLENBQVM7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ZW5kYXJUeXBlLFxuICBBWENvbmZpZyxcbiAgQVhEYXRlVGltZSxcbiAgQVhEYXRlVGltZVJhbmdlLFxuICBBWFRyYW5zbGF0b3IsXG59IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWEJhc2VTaXphYmxlQ29tcG9uZW50LFxuICBBWEVsZW1lbnRTaXplLFxufSBmcm9tICcuLi8uLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyVmlld1R5cGUgPSAneWVhcicgfCAnbW9udGgnIHwgJ2RheSc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5cyA9IEFYQ2FsZW5kYXJIb2xpZGF5W107XG5leHBvcnQgdHlwZSBBWENhbGVuZGFySG9saWRheXNGdW5jID0gKFxuICBzdGFydDogRGF0ZSxcbiAgZW5kOiBEYXRlLFxuICB0eXBlOiBBWENhbGVuZGFyVHlwZVxuKSA9PiBBWENhbGVuZGFySG9saWRheVtdO1xuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFySG9saWRheSB7XG4gIGRhdGU6IERhdGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyV2Vla2VuZHMgPSBBWENhbGVuZGFyV2Vla2VuZFtdO1xuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzRnVuYyA9IChcbiAgc3RhcnQ6IERhdGUsXG4gIGVuZDogRGF0ZSxcbiAgdHlwZTogQVhDYWxlbmRhclR5cGVcbikgPT4gQVhDYWxlbmRhcldlZWtlbmRbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyV2Vla2VuZCB7XG4gIGluZGV4RGF5OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhckJveENvbXBvbmVudCBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnQge1xuICB3ZWVrZGF5czogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIGQgPSB7XG4gICAgamFsYWxpOiB7XG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuamFsYWxpLmxvY2FsZScpIHx8ICdmYScsXG4gICAgICBkaXI6ICdydGwnLFxuICAgICAgbnVtYmVyOiAxLFxuICAgIH0sXG4gICAgZ3JlZ29yaWFuOiB7XG4gICAgICBsb2NhbGU6IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuZ3JlZ29yaWFuLmxvY2FsZScpIHx8ICdlbicsXG4gICAgICBkaXI6ICdsdHInLFxuICAgICAgbnVtYmVyOiAwLFxuICAgIH0sXG4gIH07XG5cbiAgbnVtUm90YXRlOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XG5cbiAgQElucHV0KClcbiAgdHlwZTogQVhDYWxlbmRhclR5cGU7XG5cbiAgQElucHV0KClcbiAgbG9jYWxlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGlyOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbWluOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluKHYpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fbWluID0gdjtcbiAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBtaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuXG4gIHByaXZhdGUgX21heDogRGF0ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heCh2KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuX21heCA9IHY7XG4gICAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IHRoaXMudG9kYXk7XG4gICAgICB0aGlzLnZpZXdSYW5nZSA9IHRoaXMudG9kYXkubW9udGgucmFuZ2U7XG4gICAgICB0aGlzLm5hdmlnYXRlKDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4KCkge1xuICAgIHJldHVybiB0aGlzLl9tYXg7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZWxlY3RhYmxlSG9saWRheTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZGF5U3R5bGUgPSBbXTtcblxuICBASW5wdXQoKVxuICBkYXlNaW5NYXhSZXNvYW4gPSAnJztcblxuICBwcml2YXRlIGdldEhvbGlkYXk6IEFYQ2FsZW5kYXJIb2xpZGF5cyB8IEFYQ2FsZW5kYXJIb2xpZGF5c0Z1bmM7XG5cbiAgcHJpdmF0ZSBnZXRXZWVrZW5kOiBBWENhbGVuZGFyV2Vla2VuZHMgfCBBWENhbGVuZGFyV2Vla2VuZHNGdW5jO1xuXG4gIEBJbnB1dCgnc2hvd1RvZGF5QnV0dG9uJylcbiAgcHVibGljIHNob3dUb2RheUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG1hdHJpeDogYW55W10gPSBbXTtcbiAgcm90YXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92aWV3OiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2aWV3KCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXc7XG4gIH1cbiAgcHVibGljIHNldCB2aWV3KHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX3ZpZXcgPSB2O1xuICAgIHRoaXMubmF2aWdhdGUoMCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXB0aDogQVhDYWxlbmRhclZpZXdUeXBlID0gJ2RheSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkZXB0aCgpOiBBWENhbGVuZGFyVmlld1R5cGUge1xuICAgIHJldHVybiB0aGlzLl9kZXB0aDtcbiAgfVxuICBwdWJsaWMgc2V0IGRlcHRoKHY6IEFYQ2FsZW5kYXJWaWV3VHlwZSkge1xuICAgIHRoaXMuX2RlcHRoID0gdjtcbiAgICB0aGlzLnZpZXcgPSB2O1xuICB9XG5cbiAgdmlld1JhbmdlOiBBWERhdGVUaW1lUmFuZ2U7XG4gIHByaXZhdGUgaG9saWRheXM6IEFYQ2FsZW5kYXJIb2xpZGF5W10gPSBbXTtcbiAgcHJpdmF0ZSB3ZWVrZW5kczogQVhDYWxlbmRhcldlZWtlbmRbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVmFsdWVFdmVudDxEYXRlPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFYVmFsdWVFdmVudDxEYXRlPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWFZhbHVlRXZlbnQ8RGF0ZT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBBWFZhbHVlRXZlbnQ8RGF0ZT5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IERhdGUpIHtcbiAgICBsZXQgdnY6IEFYRGF0ZVRpbWU7XG4gICAgaWYgKHYpIHtcbiAgICAgIHZ2ID0gQVhEYXRlVGltZS5jb252ZXJ0KHYpO1xuICAgIH1cbiAgICBsZXQgdW5WYWxpZERhdGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5fbWF4IHx8IHRoaXMuX21pbikge1xuICAgICAgdW5WYWxpZERhdGUgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZSh2dik7XG4gICAgfVxuICAgIGlmICghdW5WYWxpZERhdGUpIHtcbiAgICAgIGlmICh2diAmJiAhdnYuZXF1YWwodGhpcy5fdmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdnY7XG4gICAgICAgIHRoaXMuX3ZhbHVlLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXModGhpcy5fdmFsdWUuY2xvbmUoKSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2di5kYXRlKTtcbiAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlPy5kYXRlLFxuICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xuICAgICAgICB0aGlzLm5hdmlnYXRlKDApO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb2N1c2VkVmFsdWU6IEFYRGF0ZVRpbWU7XG4gIGdldCB0b2RheSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdGhpcy50eXBlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAvLyBzZXQgZGVmYXVsdHNcbiAgICB0aGlzLmdldEhvbGlkYXkgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmhvbGlkYXlzJyk7XG4gICAgdGhpcy5nZXRXZWVrZW5kID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS53ZWVrZW5kcycpO1xuICB9XG4gIGZpbmREYXkoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGF5U3R5bGUuZmluZChcbiAgICAgICAgKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXRTdHlsZShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5kYXlTdHlsZS5maW5kKFxuICAgICAgICAoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmRheVN0eWxlLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXVxuICAgICAgKS5zdHlsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIGdldFRpdGxlKGRhdGU6IEFYRGF0ZVRpbWUpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRheVN0eWxlLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXVxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF5U3R5bGUuZmluZChcbiAgICAgICAgKGMpID0+IGMuZGF0ZS5zcGxpdCgnVCcpWzBdID09IGRhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgICApLnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuX21pbiAmJlxuICAgICAgICAgIHRoaXMuX21heCAmJlxuICAgICAgICAgIGRhdGUuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9taW4sIHRoaXMudHlwZSksXG4gICAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IC0xKSB8fFxuICAgICAgICBkYXRlLmNvbXBhaXJlTmV3KFxuICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMuX21heCwgdGhpcy50eXBlKSxcbiAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgKSA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheU1pbk1heFJlc29hbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgICAvL1xuICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zZXRGb2N1cyhuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGb2N1cyh0aGlzLnRvZGF5KTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIGdldFZpZXdDb21wYWlyZSh2aWV3OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcbiAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHJldHVybiAnWU1EJztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuICdZTSc7XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuICdZJztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdExheW91dCgpIHtcbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbic7XG4gICAgfVxuICAgIGlmICghdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5kW3RoaXMudHlwZV0/LmxvY2FsZSB8fCB0aGlzLmxvY2FsZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpcikge1xuICAgICAgdGhpcy5kaXIgPSB0aGlzLmRbdGhpcy50eXBlXT8uZGlyIHx8ICdsdHInO1xuICAgIH1cbiAgICB0aGlzLm51bVJvdGF0ZSA9IHRoaXMuZFt0aGlzLnR5cGVdPy5udW1iZXIgfHwgMDtcbiAgICBjb25zdCBwYXRoID0gJ2RhdGVUaW1lLndlZWtkYXlzU2hvcnQnO1xuICAgIHRoaXMud2Vla2RheXMgPSBbXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnN1bmAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ubW9uYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS50dWVgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LndlZGAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0udGh1YCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5mcmlgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnNhdGAsIHRoaXMubG9jYWxlKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0VG9kYXlOYW1lKCkge1xuICAgIHJldHVybiBBWFRyYW5zbGF0b3IuZ2V0KCdkYXRlVGltZS50b2RheScsIHRoaXMubG9jYWxlKTtcbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgtMSk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMubmF2aWdhdGUoMSk7XG4gIH1cblxuICByb3RhdGUoYXJyYXksIG4pIHtcbiAgICBjb25zdCBsZW4gPSBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEobiAlIGxlbilcbiAgICAgID8gYXJyYXlcbiAgICAgIDogbiA+IDBcbiAgICAgID8gYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhpICsgbikgJSBsZW5dKVxuICAgICAgOiBhcnJheS5tYXAoKGUsIGksIGEpID0+IGFbKGxlbiAtICgobGVuIC0gaSAtIG4pICUgbGVuKSkgJSBsZW5dKTtcbiAgfVxuXG4gIG5hdmlnYXRlKHZhbHVlOiBudW1iZXIgfCBBWERhdGVUaW1lKSB7XG4gICAgbGV0IHN0YXJ0OiBBWERhdGVUaW1lO1xuICAgIGxldCBlbmQ6IEFYRGF0ZVRpbWU7XG4gICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCdtb250aCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWVcbiAgICAgICAgICAuYWRkKCdkYXknLCAxNSlcbiAgICAgICAgICAuYWRkKCdtb250aCcsIHZhbHVlKVxuICAgICAgICAgIC5zdGFydE9mKCdtb250aCcpO1xuICAgICAgfVxuXG4gICAgICBzdGFydCA9IGZkLmZpcnN0RGF5T2ZXZWVrO1xuICAgICAgZW5kID0gZmQuZW5kT2YoJ21vbnRoJykuZW5kRGF5T2ZXZWVrO1xuXG4gICAgICBzdGFydCA9IHN0YXJ0LmFkZCgnZGF5JywgLXRoaXMubnVtUm90YXRlKTtcbiAgICAgIGVuZCA9IGVuZC5hZGQoJ2RheScsIDcpLmFkZCgnZGF5JywgLXRoaXMubnVtUm90YXRlKTtcblxuICAgICAgLy8gVE9ETzogYXBwbHkgc3RhcnQgb2Ygd2Vla1xuICAgICAgaWYgKCF0aGlzLnJvdGF0ZWQgJiYgdGhpcy53ZWVrZGF5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdqYWxhbGknKSB7XG4gICAgICAgICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMucm90YXRlKHRoaXMud2Vla2RheXMsIC10aGlzLm51bVJvdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy53ZWVrZGF5cyA9IHRoaXMucm90YXRlKHRoaXMud2Vla2RheXMsIHRoaXMubnVtUm90YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm90YXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZVxuICAgICAgICAgIC5hZGQoJ2RheScsIDE1KVxuICAgICAgICAgIC5hZGQoJ3llYXInLCB2YWx1ZSlcbiAgICAgICAgICAuc3RhcnRPZigneWVhcicpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBmZDtcbiAgICAgIGVuZCA9IGZkLmVuZE9mKCd5ZWFyJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgbGV0IGZkOiBBWERhdGVUaW1lO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICBmZCA9IHZhbHVlLnN0YXJ0T2YoJ3llYXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lXG4gICAgICAgICAgLmFkZCgnZGF5JywgMTUpXG4gICAgICAgICAgLmFkZCgneWVhcicsIHZhbHVlICogMTApXG4gICAgICAgICAgLnN0YXJ0T2YoJ3llYXInKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gZmQuYWRkKCd5ZWFyJywgLTQpO1xuICAgICAgZW5kID0gc3RhcnQuYWRkKCd5ZWFyJywgOCkuZW5kT2YoJ3llYXInKTtcbiAgICB9XG4gICAgdGhpcy52aWV3UmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIC8vXG4gICAgaWYgKHRoaXMuZ2V0SG9saWRheSAmJiB0eXBlb2YgdGhpcy5nZXRIb2xpZGF5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmhvbGlkYXlzID0gdGhpcy5nZXRIb2xpZGF5KHN0YXJ0LmRhdGUsIGVuZC5kYXRlLCB0aGlzLnR5cGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldFdlZWtlbmQgJiYgdHlwZW9mIHRoaXMuZ2V0V2Vla2VuZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy53ZWVrZW5kcyA9IHRoaXMuZ2V0V2Vla2VuZChzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcbiAgICB9XG5cbiAgICAvL1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLm1hdHJpeCA9IHRoaXMubWF0cml4aWZ5KFxuICAgICAgICB0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCdkYXknLCB0aGlzLnR5cGUpKSxcbiAgICAgICAgN1xuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tYXRyaXgubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLm1hdHJpeFswXS5maW5kKChjKSA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UoMCwgMSk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubWF0cml4W3RoaXMubWF0cml4Lmxlbmd0aCAtIDFdLmZpbmQoXG4gICAgICAgICAgKGMpID0+IGMubmV4dE1vbnRoID09PSBmYWxzZVxuICAgICAgICApID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UodGhpcy5tYXRyaXgubGVuZ3RoIC0gMSwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkoXG4gICAgICAgIHRoaXMuYXBwbHlTdHlsZSh0aGlzLnZpZXdSYW5nZS5lbnVtdXJhdGUoJ21vbnRoJywgdGhpcy50eXBlKSksXG4gICAgICAgIDNcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeShcbiAgICAgICAgdGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgneWVhcicsIHRoaXMudHlwZSkpLFxuICAgICAgICAzXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGUoZGF0ZXM6IEFYRGF0ZVRpbWVbXSk6IGFueVtdIHtcbiAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICBkYXRlcy5mb3JFYWNoKChkLCBpLCBqKSA9PiB7XG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcbiAgICAgIGl0ZW0uZGF0ZSA9IGQ7XG5cbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPVxuICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSksXG4gICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgKSA9PT0gMDtcbiAgICAgIGl0ZW0uZm9jdXNlZCA9XG4gICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgdGhpcy5mb2N1c2VkVmFsdWUsXG4gICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgKSA9PT0gMDtcbiAgICAgIGl0ZW0udG9kYXkgPVxuICAgICAgICB0aGlzLnRvZGF5ICYmXG4gICAgICAgIGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgdGhpcy50b2RheSxcbiAgICAgICAgICB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLFxuICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICApID09PSAwO1xuICAgICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgICAgLy8gIGl0ZW0ubmV4dE1vbnRoID0gZC5jb21wYWlyZU5ldyh0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxMCksICdZTScpICE9PSAwO1xuICAgICAgICBpdGVtLm5leHRNb250aCA9XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsIDEwKSxcbiAgICAgICAgICAgICdZTScsXG4gICAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgICApICE9PSAwO1xuXG4gICAgICAgIGl0ZW0udW5zZWxlY3QgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZShkKTtcbiAgICAgICAgdGhpcy5ob2xpZGF5cy5mb3JFYWNoKChoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcCA9IGQuY29tcGFpcmVOZXcoXG4gICAgICAgICAgICBuZXcgQVhEYXRlVGltZShoLmRhdGUsIHRoaXMudHlwZSksXG4gICAgICAgICAgICAnWU1EJyxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGNvbXAgPT09IDApIHtcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbmRleERheSA9IGkgLSBNYXRoLmZsb29yKGkgLyA3KSAqIDc7XG4gICAgICAgIHRoaXMud2Vla2VuZHMuZm9yRWFjaCgoY2MpID0+IHtcbiAgICAgICAgICBpZiAoTnVtYmVyKGNjKSA9PT0gaW5kZXhEYXkpIHtcbiAgICAgICAgICAgIGl0ZW0uaG9saWRheSA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlSG9saWRheSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaXRlbS51bnNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgY2hhbmdlVmlldygpIHtcbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlldyA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy52aWV3ID0gJ3llYXInO1xuICAgIH1cbiAgfVxuXG4gIG1hdHJpeGlmeShhcnI6IGFueVtdLCBjb2xzKSB7XG4gICAgY29uc3Qgcm93cyA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gY29scyk7XG4gICAgY29uc3QgbWF0cml4ID0gW107XG4gICAgaWYgKHJvd3MgKiBjb2xzID09PSBhcnIubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gY29scykge1xuICAgICAgICBtYXRyaXgucHVzaChhcnIuc2xpY2UoaSwgY29scyArIGkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHNldERheUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtKSB7XG4gICAgaWYgKGl0ZW0udW5zZWxlY3QgIT09IHRydWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBpdGVtLmRhdGUuZGF0ZTtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGlzSW5NSW5NYXhSYW5nZShkKSB7XG4gICAgbGV0IHIgPSBmYWxzZTtcbiAgICBpZiAoZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5fbWluICYmICF0aGlzLl9tYXgpIHtcbiAgICAgICAgciA9XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMuX21pbiwgdGhpcy50eXBlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksXG4gICAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgICApID09PSAtMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9tYXggJiYgIXRoaXMuX21pbikge1xuICAgICAgICByID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWF4LCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IDE7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fbWluICYmIHRoaXMuX21heCkge1xuICAgICAgICByID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KFxuICAgICAgICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbWluLCB0aGlzLnR5cGUpLFxuICAgICAgICAgICAgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSxcbiAgICAgICAgICAgIHRoaXMudHlwZVxuICAgICAgICAgICkgPT09IC0xIHx8XG4gICAgICAgICAgZC5jb21wYWlyZU5ldyhcbiAgICAgICAgICAgIG5ldyBBWERhdGVUaW1lKHRoaXMuX21heCwgdGhpcy50eXBlKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksXG4gICAgICAgICAgICB0aGlzLnR5cGVcbiAgICAgICAgICApID09PSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIHNldE1vbnRoQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGU6IEFYRGF0ZVRpbWUpIHtcbiAgICBpZiAodGhpcy5kZXB0aCA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3ID0gJ2RheSc7XG4gICAgICB0aGlzLnNldEZvY3VzKFxuICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpXG4gICAgICAgICAgLnNldCgneWVhcicsIGRhdGUueWVhcilcbiAgICAgICAgICAuc2V0KCdtb250aCcsIGRhdGUubW9udGhPZlllYXIpXG4gICAgICApO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHNldFllYXJDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRlLmRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlldyA9ICdtb250aCc7XG4gICAgICB0aGlzLnNldEZvY3VzKFxuICAgICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpLnNldCgneWVhcicsIGRhdGUueWVhcilcbiAgICAgICk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2V0Rm9jdXMoZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLm5hdmlnYXRlKHRoaXMuZm9jdXNlZFZhbHVlKTtcbiAgfVxuXG4gIHNldFRvZGF5KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnRvZGF5LmRhdGU7XG4gICAgdGhpcy52aWV3ID0gJ2RheSc7XG4gIH1cblxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtLmRhdGUuZGF0ZS5nZXRUaW1lKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1jYWxlbmRhci1jb250YWluZXIge3tzaXplfX1cIiBbbmdDbGFzc109XCJ0eXBlXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udHJvbGwtYnV0dG9uXCI+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIHR5cGU9XCJsaWdodCBibGFua1wiIChjbGljayk9XCJuZXh0KClcIj5cbiAgICAgICAgICAgICAgICB7eydjb21tb24ubmV4dCcgfCB0cmFuc319XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1uYXYtYnV0dG9uXCIgW25nU3dpdGNoXT1cInZpZXdcIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cImNoYW5nZVZpZXcoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXknXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7dmlld1JhbmdlLnN0YXJ0VGltZS5hZGQoJ2RheScsMTApIHwgZHQ6XCJNTU0gWVlZWVwifX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7dmlld1JhbmdlLnN0YXJ0VGltZSB8IGR0OlwiWVlZWVwifX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgICAgICAgIHt7dmlld1JhbmdlLnN0YXJ0VGltZSB8IGR0OlwiWVlZWVwifX0gLSB7e3ZpZXdSYW5nZS5lbmRUaW1lIHwgZHQ6XCJZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udHJvbGwtYnV0dG9uXCI+XG4gICAgICAgICAgICA8YXgtYnV0dG9uIHR5cGU9XCJsaWdodCBibGFua1wiIChjbGljayk9XCJwcmV2KClcIj5cbiAgICAgICAgICAgICAgICB7eydjb21tb24ucHJldicgfCB0cmFuc319XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWJvZHlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RheSdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9J2xldCB3IG9mIHdlZWtkYXlzJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tb250aC1pdGVtXCI+e3t3fX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRheS1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRheS1pdGVtIGF4LXN0YXRlLWV2ZW50XCIgKm5nRm9yPVwibGV0IGQgb2Ygcjt0cmFja0J5OnRyYWNrQnlGblwiIFt0aXRsZV09XCJnZXRUaXRsZShkLmRhdGUpXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXksJ25leHQtbW9udGgnOmQubmV4dE1vbnRoICwgJ2hvbGlkYXknOmQuaG9saWRheSAsICd1bnNlbGVjdCc6ZC51bnNlbGVjdH1cIiBbbmdTdHlsZV09XCIoZmluZERheShkLmRhdGUpKSA/IGdldFN0eWxlKGQuZGF0ZSk6JydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREYXlDbGljaygkZXZlbnQsZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2QuZGF0ZS5kYXlJbk1vbnRofX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCInbW9udGgnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgciBvZiBtYXRyaXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXl9XCIgKGNsaWNrKT1cInNldE1vbnRoQ2xpY2soJGV2ZW50LGQuZGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkLmRhdGV8IGR0OlwiTU1NXCJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgteWVhci1jb250YWluZXJcIiAqbmdTd2l0Y2hDYXNlPVwiJ3llYXInXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cImNhbGVuZGFyLXJvd1wiICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgteWVhci1pdGVtXCIgKm5nRm9yPVwibGV0IGQgb2Ygcjt0cmFja0J5OnRyYWNrQnlGblwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBkLnNlbGVjdGVkLCdmb2N1c2VkJzpkLmZvY3VzZWQsJ3RvZGF5JzpkLnRvZGF5fVwiIChjbGljayk9XCJzZXRZZWFyQ2xpY2soJGV2ZW50LGQuZGF0ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3tkLmRhdGUgfCBkdDpcIllZWVlcIn19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWZvb3RlclwiPlxuICAgICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJzZXRUb2RheSgpXCIgKm5nSWY9XCJzaG93VG9kYXlCdXR0b25cIiB0eXBlPVwiZGFya1wiPlxuICAgICAgICAgICAge3tnZXRUb2RheU5hbWUoKX19XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -1,6 +1,6 @@
1
- import { Component, ChangeDetectorRef, ViewChild } from '@angular/core';
2
- import { AXProperyEditorComponent } from '../../property-editor.class';
1
+ import { ChangeDetectorRef, Component, ViewChild } from '@angular/core';
3
2
  import { AXSelectBoxComponent } from '../../../selectbox/selectbox.component';
3
+ import { AXProperyEditorComponent } from '../../property-editor.class';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../../selectbox/selectbox.component";
6
6
  import * as i2 from "../../../data-source/datasource.component";
@@ -12,7 +12,7 @@ export class AXSelectBoxPropertyEditorComponent extends AXProperyEditorComponent
12
12
  selectionMode = 'single';
13
13
  selectionDataMode = 'value';
14
14
  allowSearch = true;
15
- allowNull = false;
15
+ allowNull = true;
16
16
  disabled = false;
17
17
  items = [];
18
18
  remoteOperation = false;
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
72
72
  type: ViewChild,
73
73
  args: [AXSelectBoxComponent, { static: true }]
74
74
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9lZGl0b3JzL3NlbGVjdGJveC1lZGl0b3Ivc2VsZWN0Ym94LmVkaXRvci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9lZGl0b3JzL3NlbGVjdGJveC1lZGl0b3Ivc2VsZWN0Ym94LmVkaXRvci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7OztBQUs5RSxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsd0JBQTZCO0lBaUMzRDtJQTlCdEIsVUFBVSxHQUFXLElBQUksQ0FBQztJQUMxQixTQUFTLEdBQVcsTUFBTSxDQUFDO0lBQzNCLGFBQWEsR0FBVyxRQUFRLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsT0FBTyxDQUFDO0lBQ3BDLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDaEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixVQUFVLENBQWU7SUFHekIsU0FBUyxDQUF1QjtJQUl4QixPQUFPLENBQU07SUFDckIsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFXLE1BQU0sQ0FBQyxDQUFNO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUdELFlBQXNCLEdBQXNCO1FBQ3hDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRTVDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFNO1FBQ3BCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFnQixFQUFFO1FBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO3FCQUNJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUN4QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO29CQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO3FCQUNJLENBQUM7b0JBQ0YsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLElBQUksRUFBRSxDQUFDO29CQUNQLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNMLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBO3VHQW5FUSxrQ0FBa0M7MkZBQWxDLGtDQUFrQywrRkFlaEMsb0JBQW9CLHFGQ3ZCbkMsMGVBT2dCOzsyRkRDSCxrQ0FBa0M7a0JBSDlDLFNBQVM7O3NGQW1CTixTQUFTO3NCQURSLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Byb3BlcnR5LWVkaXRvci5jbGFzcyc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VsZWN0Ym94L3NlbGVjdGJveC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0Ym94LmVkaXRvci5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhTZWxlY3RCb3hQcm9wZXJ0eUVkaXRvckNvbXBvbmVudCBleHRlbmRzIEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudDxhbnk+ICB7XG5cblxuICAgIHZhbHVlRmllbGQ6IHN0cmluZyA9ICdpZCc7XG4gICAgdGV4dEZpZWxkOiBzdHJpbmcgPSAndGV4dCc7XG4gICAgc2VsZWN0aW9uTW9kZTogc3RyaW5nID0gJ3NpbmdsZSc7XG4gICAgc2VsZWN0aW9uRGF0YU1vZGU6IHN0cmluZyA9ICd2YWx1ZSc7XG4gICAgYWxsb3dTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuICAgIGFsbG93TnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgaXRlbXM6IGFueSA9IFtdO1xuICAgIHJlbW90ZU9wZXJhdGlvbiA9IGZhbHNlO1xuXG4gICAgdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xuXG4gICAgQFZpZXdDaGlsZChBWFNlbGVjdEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBzZWxlY3RCb3g6IEFYU2VsZWN0Qm94Q29tcG9uZW50O1xuXG5cblxuICAgIHByaXZhdGUgX2ZpbHRlcjogYW55O1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgZmlsdGVyKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9maWx0ZXIgPSB2O1xuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmluaXRpYXRlZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEJveD8ucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGU6IGFueSkge1xuICAgICAgICBzdXBlci5oYW5kbGVWYWx1ZUNoYW5nZShlLnNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJGb3JWYWxpZGF0aW9uRm9ybSh0aGlzLnNlbGVjdEJveCk7XG4gICAgICAgIHRoaXMub25SZW5kZXJDb21wbGV0ZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3ZpZGVEYXRhID0gKGUpOiBQcm9taXNlPGFueT4gPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLml0ZW1zLnNsaWNlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy5pdGVtcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gT2JqZWN0LmFzc2lnbihlLCB7IHNlbmRlcjogdGhpcyB9KVxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuaXRlbXMoYSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGludFZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0aWF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZnVuYygpO1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludFZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSw1MCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxheC1zZWxlY3QtYm94IFttb2RlXT1cInNlbGVjdGlvbk1vZGVcIiBbdGV4dEZpZWxkXT1cInRleHRGaWVsZFwiIFt2YWx1ZUZpZWxkXT1cInZhbHVlRmllbGRcIiBbc2VsZWN0ZWRWYWx1ZXNdPVwidmFsdWVcIlxuICAgIFtyZW1vdGVPcGVyYXRpb25dPVwicmVtb3RlT3BlcmF0aW9uXCIgW2FsbG93U2VhcmNoXT1cImFsbG93U2VhcmNoXCIgW2FsbG93TnVsbF09XCJhbGxvd051bGxcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChzZWxlY3Rpb25DaGFuZ2VkKT1cImhhbmRsZVZhbHVlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8YXgtZGF0YS1zb3VyY2UgW3Byb3ZpZGVEYXRhXT1cInByb3ZpZGVEYXRhXCI+XG4gICAgPC9heC1kYXRhLXNvdXJjZT5cbiAgICA8YXgtdmFsaWRhdGlvbiBbcnVsZXNdPVwidmFsaWRhdGlvbj8ucnVsZXNcIj5cbiAgICA8L2F4LXZhbGlkYXRpb24+XG48L2F4LXNlbGVjdC1ib3g+Il19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9lZGl0b3JzL3NlbGVjdGJveC1lZGl0b3Ivc2VsZWN0Ym94LmVkaXRvci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3Byb3BlcnR5LWVkaXRvci9lZGl0b3JzL3NlbGVjdGJveC1lZGl0b3Ivc2VsZWN0Ym94LmVkaXRvci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQUt2RSxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsd0JBQTZCO0lBNEI3RDtJQTNCdEIsVUFBVSxHQUFXLElBQUksQ0FBQztJQUMxQixTQUFTLEdBQVcsTUFBTSxDQUFDO0lBQzNCLGFBQWEsR0FBVyxRQUFRLENBQUM7SUFDakMsaUJBQWlCLEdBQVcsT0FBTyxDQUFDO0lBQ3BDLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsU0FBUyxHQUFZLElBQUksQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDaEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixVQUFVLENBQWU7SUFHekIsU0FBUyxDQUF1QjtJQUV4QixPQUFPLENBQU07SUFDckIsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQXNCLEdBQXNCO1FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURTLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRTVDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFNO1FBQ3RCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFnQixFQUFFO1FBQ2hDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7Z0JBQ2hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDNUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ25CLElBQUksRUFBRSxDQUFDO29CQUNQLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO3VHQTVEUyxrQ0FBa0M7MkZBQWxDLGtDQUFrQywrRkFhbEMsb0JBQW9CLHFGQ3JCakMsMGVBT2dCOzsyRkRDSCxrQ0FBa0M7a0JBSDlDLFNBQVM7O3NGQWlCUixTQUFTO3NCQURSLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NlbGVjdGJveC9zZWxlY3Rib3guY29tcG9uZW50JztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQcm9wZXJ5RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcHJvcGVydHktZWRpdG9yLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rib3guZWRpdG9yLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFNlbGVjdEJveFByb3BlcnR5RWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgQVhQcm9wZXJ5RWRpdG9yQ29tcG9uZW50PGFueT4ge1xuICB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuICB0ZXh0RmllbGQ6IHN0cmluZyA9ICd0ZXh0JztcbiAgc2VsZWN0aW9uTW9kZTogc3RyaW5nID0gJ3NpbmdsZSc7XG4gIHNlbGVjdGlvbkRhdGFNb2RlOiBzdHJpbmcgPSAndmFsdWUnO1xuICBhbGxvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XG4gIGFsbG93TnVsbDogYm9vbGVhbiA9IHRydWU7XG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGl0ZW1zOiBhbnkgPSBbXTtcbiAgcmVtb3RlT3BlcmF0aW9uID0gZmFsc2U7XG5cbiAgdmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoQVhTZWxlY3RCb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNlbGVjdEJveDogQVhTZWxlY3RCb3hDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBfZmlsdGVyOiBhbnk7XG4gIHB1YmxpYyBnZXQgZmlsdGVyKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgfVxuICBwdWJsaWMgc2V0IGZpbHRlcih2OiBhbnkpIHtcbiAgICB0aGlzLl9maWx0ZXIgPSB2O1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuaW5pdGlhdGVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuc2VsZWN0Qm94Py5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihjZHIpO1xuICB9XG5cbiAgaGFuZGxlVmFsdWVDaGFuZ2UoZTogYW55KSB7XG4gICAgc3VwZXIuaGFuZGxlVmFsdWVDaGFuZ2UoZS5zZWxlY3RlZFZhbHVlcyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWdpc3RlckZvclZhbGlkYXRpb25Gb3JtKHRoaXMuc2VsZWN0Qm94KTtcbiAgICB0aGlzLm9uUmVuZGVyQ29tcGxldGVkLmVtaXQoKTtcbiAgfVxuXG4gIHByb3ZpZGVEYXRhID0gKGUpOiBQcm9taXNlPGFueT4gPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgZnVuYyA9ICgpID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykpIHtcbiAgICAgICAgICByZXNvbHZlKHRoaXMuaXRlbXMuc2xpY2UoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaXRlbXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb25zdCBhID0gT2JqZWN0LmFzc2lnbihlLCB7IHNlbmRlcjogdGhpcyB9KTtcbiAgICAgICAgICByZXNvbHZlKHRoaXMuaXRlbXMoYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgaW50VmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pbml0aWF0ZWQpIHtcbiAgICAgICAgICBmdW5jKCk7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRWYWwpO1xuICAgICAgICB9XG4gICAgICB9LCA1MCk7XG4gICAgfSk7XG4gIH07XG59XG4iLCI8YXgtc2VsZWN0LWJveCBbbW9kZV09XCJzZWxlY3Rpb25Nb2RlXCIgW3RleHRGaWVsZF09XCJ0ZXh0RmllbGRcIiBbdmFsdWVGaWVsZF09XCJ2YWx1ZUZpZWxkXCIgW3NlbGVjdGVkVmFsdWVzXT1cInZhbHVlXCJcbiAgICBbcmVtb3RlT3BlcmF0aW9uXT1cInJlbW90ZU9wZXJhdGlvblwiIFthbGxvd1NlYXJjaF09XCJhbGxvd1NlYXJjaFwiIFthbGxvd051bGxdPVwiYWxsb3dOdWxsXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJoYW5kbGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPGF4LWRhdGEtc291cmNlIFtwcm92aWRlRGF0YV09XCJwcm92aWRlRGF0YVwiPlxuICAgIDwvYXgtZGF0YS1zb3VyY2U+XG4gICAgPGF4LXZhbGlkYXRpb24gW3J1bGVzXT1cInZhbGlkYXRpb24/LnJ1bGVzXCI+XG4gICAgPC9heC12YWxpZGF0aW9uPlxuPC9heC1zZWxlY3QtYm94PiJdfQ==