ca-components 0.0.17 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +174 -103
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +74 -65
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/config/ca-money-filter.config.mjs +1 -1
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/enums/money-filter-string.enum.mjs +18 -0
- package/esm2022/lib/components/ca-filters/components/ca-pm-filter/ca-pm-filter.component.mjs +11 -18
- package/esm2022/lib/components/ca-filters/components/ca-service-filter/ca-service-filter.component.mjs +7 -8
- package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +7 -11
- package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +6 -6
- package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +11 -15
- package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +7 -8
- package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +7 -8
- package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +7 -9
- package/esm2022/lib/components/ca-filters/components/ca-user-filter/config/ca-user-filter.config.mjs +1 -1
- package/esm2022/lib/components/ca-payroll-list-summary-overview-table/ca-payroll-list-summary-overview-table.component.mjs +6 -9
- package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +17 -5
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +14 -10
- package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +21 -14
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +10 -5
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +7 -5
- package/esm2022/lib/pipes/date-from-string.pipe.mjs +41 -0
- package/fesm2022/ca-components.mjs +976 -943
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/components/ca-filters/ca-filter.component.d.ts +7 -1
- package/lib/components/ca-filters/components/ca-money-filter/enums/money-filter-string.enum.d.ts +15 -0
- package/lib/components/ca-filters/components/ca-pm-filter/ca-pm-filter.component.d.ts +2 -2
- package/lib/components/ca-filters/components/ca-service-filter/ca-service-filter.component.d.ts +2 -2
- package/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.d.ts +2 -2
- package/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.d.ts +2 -2
- package/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.d.ts +2 -2
- package/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.d.ts +2 -2
- package/lib/components/ca-payroll-list-summary-overview-table/ca-payroll-list-summary-overview-table.component.d.ts +2 -12
- package/lib/components/ca-period-content/ca-period-content.component.d.ts +7 -2
- package/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.d.ts +3 -2
- package/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.d.ts +5 -4
- package/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.d.ts +1 -1
- package/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.d.ts +1 -1
- package/lib/pipes/date-from-string.pipe.d.ts +7 -0
- package/package.json +1 -1
- package/esm2022/assets/json/ca-table.json +0 -59
package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs
CHANGED
|
@@ -15,6 +15,7 @@ import { closeForm } from '../../../../animations/close-form.animation';
|
|
|
15
15
|
import { CaMoneyFilterSvgRoutes } from '../../utils/svg-routes/ca-money-filter-svg-routes';
|
|
16
16
|
// enums
|
|
17
17
|
import { ToolbarFilterStringEnum as ToolbarFilterString } from '../../../ca-map/enums/toolbar-filter-string.enum';
|
|
18
|
+
import { MoneyFilterStringEnum } from './enums/money-filter-string.enum';
|
|
18
19
|
// configs
|
|
19
20
|
import { CaMoneyFilterConfig } from './config/ca-money-filter.config';
|
|
20
21
|
// components
|
|
@@ -101,6 +102,7 @@ export class CaMoneyFilterComponent {
|
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
104
|
watchMoneyFormValueChanges() {
|
|
105
|
+
this.type = ToolbarFilterString.MONEY_FILTER;
|
|
104
106
|
this.moneyForm.valueChanges
|
|
105
107
|
.pipe(takeUntil(this.destroy$))
|
|
106
108
|
.subscribe((changes) => {
|
|
@@ -222,35 +224,41 @@ export class CaMoneyFilterComponent {
|
|
|
222
224
|
}
|
|
223
225
|
if (this.singleFormError) {
|
|
224
226
|
this.moneyForm
|
|
225
|
-
.get(
|
|
227
|
+
.get(MoneyFilterStringEnum.SINGLE_TO)
|
|
226
228
|
?.setErrors({ invalid: true });
|
|
227
229
|
}
|
|
228
230
|
else {
|
|
229
|
-
this.moneyForm.get(
|
|
231
|
+
this.moneyForm.get(MoneyFilterStringEnum.SINGLE_TO)?.setErrors(null);
|
|
230
232
|
}
|
|
231
233
|
if (this.multiFormFirstError) {
|
|
232
234
|
this.moneyForm
|
|
233
|
-
.get(
|
|
235
|
+
.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_TO)
|
|
234
236
|
?.setErrors({ invalid: true });
|
|
235
237
|
}
|
|
236
238
|
else {
|
|
237
|
-
this.moneyForm
|
|
239
|
+
this.moneyForm
|
|
240
|
+
.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_TO)
|
|
241
|
+
?.setErrors(null);
|
|
238
242
|
}
|
|
239
243
|
if (this.multiFormSecondError) {
|
|
240
244
|
this.moneyForm
|
|
241
|
-
.get(
|
|
245
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_TO)
|
|
242
246
|
?.setErrors({ invalid: true });
|
|
243
247
|
}
|
|
244
248
|
else {
|
|
245
|
-
this.moneyForm
|
|
249
|
+
this.moneyForm
|
|
250
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_TO)
|
|
251
|
+
?.setErrors(null);
|
|
246
252
|
}
|
|
247
253
|
if (this.multiFormThirdError) {
|
|
248
254
|
this.moneyForm
|
|
249
|
-
.get(
|
|
255
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_TO)
|
|
250
256
|
?.setErrors({ invalid: true });
|
|
251
257
|
}
|
|
252
258
|
else {
|
|
253
|
-
this.moneyForm
|
|
259
|
+
this.moneyForm
|
|
260
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_TO)
|
|
261
|
+
?.setErrors(null);
|
|
254
262
|
}
|
|
255
263
|
});
|
|
256
264
|
}
|
|
@@ -261,10 +269,10 @@ export class CaMoneyFilterComponent {
|
|
|
261
269
|
case ToolbarFilterString.MONEY_FILTER:
|
|
262
270
|
if (!this.isRepairFilter) {
|
|
263
271
|
if (this.subType !== ToolbarFilterString.ALL) {
|
|
264
|
-
this.clearForm(
|
|
272
|
+
this.clearForm(MoneyFilterStringEnum.SINGLE_FORM);
|
|
265
273
|
}
|
|
266
274
|
else {
|
|
267
|
-
this.clearForm(
|
|
275
|
+
this.clearForm(MoneyFilterStringEnum.CLEAR_ALL);
|
|
268
276
|
}
|
|
269
277
|
}
|
|
270
278
|
else {
|
|
@@ -316,12 +324,12 @@ export class CaMoneyFilterComponent {
|
|
|
316
324
|
clearForm(mod, event) {
|
|
317
325
|
event?.stopPropagation();
|
|
318
326
|
switch (mod) {
|
|
319
|
-
case
|
|
327
|
+
case MoneyFilterStringEnum.SINGLE_FORM:
|
|
320
328
|
this.moneyForm
|
|
321
|
-
.get(
|
|
329
|
+
.get(MoneyFilterStringEnum.SINGLE_FROM)
|
|
322
330
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
323
331
|
this.moneyForm
|
|
324
|
-
.get(
|
|
332
|
+
.get(MoneyFilterStringEnum.SINGLE_TO)
|
|
325
333
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
326
334
|
this.singleFormError = false;
|
|
327
335
|
this.moneyFilterStatus = false;
|
|
@@ -329,34 +337,34 @@ export class CaMoneyFilterComponent {
|
|
|
329
337
|
this.singleFromActive = 0;
|
|
330
338
|
this.isButtonAvailable = false;
|
|
331
339
|
break;
|
|
332
|
-
case
|
|
340
|
+
case MoneyFilterStringEnum.MULTI_FROM_FIRST:
|
|
333
341
|
this.moneyForm
|
|
334
|
-
.get(
|
|
342
|
+
.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_FROM)
|
|
335
343
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
336
344
|
this.moneyForm
|
|
337
|
-
.get(
|
|
345
|
+
.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_TO)
|
|
338
346
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
339
347
|
this.multiFormFirstError = false;
|
|
340
348
|
break;
|
|
341
|
-
case
|
|
349
|
+
case MoneyFilterStringEnum.MULTI_FORM_SECOND:
|
|
342
350
|
this.moneyForm
|
|
343
|
-
.get(
|
|
351
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_FROM)
|
|
344
352
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
345
353
|
this.moneyForm
|
|
346
|
-
.get(
|
|
354
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_TO)
|
|
347
355
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
348
356
|
this.multiFormSecondError = false;
|
|
349
357
|
break;
|
|
350
|
-
case
|
|
358
|
+
case MoneyFilterStringEnum.MULTI_FORM_THIRD:
|
|
351
359
|
this.moneyForm
|
|
352
|
-
.get(
|
|
360
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_FROM)
|
|
353
361
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
354
362
|
this.moneyForm
|
|
355
|
-
.get(
|
|
363
|
+
.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_TO)
|
|
356
364
|
?.setValue(ToolbarFilterString.EMPTY_STRING_PLACEHOLDER);
|
|
357
365
|
this.multiFormThirdError = false;
|
|
358
366
|
break;
|
|
359
|
-
case
|
|
367
|
+
case MoneyFilterStringEnum.CLEAR_ALL:
|
|
360
368
|
this.multiFromFirstFromActive = 0;
|
|
361
369
|
this.multiFromFirstToActive = 0;
|
|
362
370
|
this.multiFormSecondFromActive = 0;
|
|
@@ -381,52 +389,62 @@ export class CaMoneyFilterComponent {
|
|
|
381
389
|
else if (this.type === ToolbarFilterString.MONEY_FILTER &&
|
|
382
390
|
!this.isRepairFilter) {
|
|
383
391
|
if (this.subType === ToolbarFilterString.ALL) {
|
|
384
|
-
this.multiFromFirstFromActive = (' ' +
|
|
385
|
-
|
|
386
|
-
this.
|
|
387
|
-
|
|
388
|
-
this.
|
|
389
|
-
|
|
392
|
+
this.multiFromFirstFromActive = (' ' +
|
|
393
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_FROM)?.value).slice(1);
|
|
394
|
+
this.multiFromFirstToActive = (' ' +
|
|
395
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_TO)?.value).slice(1);
|
|
396
|
+
this.multiFormSecondFromActive = (' ' +
|
|
397
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_FROM)
|
|
398
|
+
?.value).slice(1);
|
|
399
|
+
this.multiFormSecondToActive = (' ' +
|
|
400
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_TO)?.value).slice(1);
|
|
401
|
+
this.multiFormThirdFromActive = (' ' +
|
|
402
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_FROM)?.value).slice(1);
|
|
403
|
+
this.multiFormThirdToActive = (' ' +
|
|
404
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_TO)?.value).slice(1);
|
|
390
405
|
queryParams = {
|
|
391
|
-
firstFormFrom: this.moneyForm.get(
|
|
392
|
-
firstFormTo: this.moneyForm.get(
|
|
393
|
-
secondFormFrom: this.moneyForm.get(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
thirdFormTo: this.moneyForm.get('multiFormThirdTo')?.value,
|
|
406
|
+
firstFormFrom: this.moneyForm.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_FROM)?.value,
|
|
407
|
+
firstFormTo: this.moneyForm.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_TO)?.value,
|
|
408
|
+
secondFormFrom: this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_FROM)?.value,
|
|
409
|
+
secondFormTo: this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_TO)?.value,
|
|
410
|
+
thirdFormFrom: this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_FROM)?.value,
|
|
411
|
+
thirdFormTo: this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_TO)?.value,
|
|
398
412
|
};
|
|
399
413
|
let formsActive = 0;
|
|
400
|
-
if (this.moneyForm.get(
|
|
401
|
-
|
|
414
|
+
if (this.moneyForm.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_FROM)
|
|
415
|
+
?.value ||
|
|
416
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FROM_FIRST_TO)?.value) {
|
|
402
417
|
formsActive = formsActive + 1;
|
|
403
418
|
}
|
|
404
|
-
if (this.moneyForm.get(
|
|
405
|
-
|
|
419
|
+
if (this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_FROM)
|
|
420
|
+
?.value ||
|
|
421
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_SECOND_TO)?.value) {
|
|
406
422
|
formsActive = formsActive + 1;
|
|
407
423
|
}
|
|
408
|
-
if (this.moneyForm.get(
|
|
409
|
-
|
|
424
|
+
if (this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_FROM)
|
|
425
|
+
?.value ||
|
|
426
|
+
this.moneyForm.get(MoneyFilterStringEnum.MULTI_FORM_THIRD_TO)?.value) {
|
|
410
427
|
formsActive = formsActive + 1;
|
|
411
428
|
}
|
|
412
429
|
this.activeFormNum = formsActive;
|
|
413
430
|
this.totalFiltersNum = formsActive;
|
|
414
431
|
}
|
|
415
432
|
else {
|
|
416
|
-
this.singleFromActive = (' ' + this.moneyForm.get(
|
|
417
|
-
this.singleToActive = (' ' + this.moneyForm.get(
|
|
418
|
-
if (!this.moneyForm.get(
|
|
419
|
-
!this.moneyForm.get(
|
|
433
|
+
this.singleFromActive = (' ' + this.moneyForm.get(MoneyFilterStringEnum.SINGLE_FROM)?.value).slice(1);
|
|
434
|
+
this.singleToActive = (' ' + this.moneyForm.get(MoneyFilterStringEnum.SINGLE_TO)?.value).slice(1);
|
|
435
|
+
if (!this.moneyForm.get(MoneyFilterStringEnum.SINGLE_FROM)?.value &&
|
|
436
|
+
!this.moneyForm.get(MoneyFilterStringEnum.SINGLE_TO)?.value) {
|
|
420
437
|
this.clearAll(event);
|
|
421
438
|
return;
|
|
422
439
|
}
|
|
423
440
|
this.isSingleFormActive = true;
|
|
424
441
|
queryParams = {
|
|
425
|
-
singleFrom: this.moneyForm.get(
|
|
426
|
-
|
|
442
|
+
singleFrom: this.moneyForm.get(MoneyFilterStringEnum.SINGLE_FROM)
|
|
443
|
+
?.value
|
|
444
|
+
? parseInt(this.moneyForm.get(MoneyFilterStringEnum.SINGLE_FROM)?.value)
|
|
427
445
|
: ToolbarFilterString.EMPTY_STRING_PLACEHOLDER,
|
|
428
|
-
singleTo: this.moneyForm.get(
|
|
429
|
-
? parseInt(this.moneyForm.get(
|
|
446
|
+
singleTo: this.moneyForm.get(MoneyFilterStringEnum.SINGLE_TO)?.value
|
|
447
|
+
? parseInt(this.moneyForm.get(MoneyFilterStringEnum.SINGLE_TO)?.value)
|
|
430
448
|
: ToolbarFilterString.EMPTY_STRING_PLACEHOLDER,
|
|
431
449
|
};
|
|
432
450
|
}
|
|
@@ -444,8 +462,7 @@ export class CaMoneyFilterComponent {
|
|
|
444
462
|
let firstFormChanged = 'none';
|
|
445
463
|
let secondFormChanged = 'none';
|
|
446
464
|
let thirdFormChanged = 'none';
|
|
447
|
-
const firstFromActive = this.multiFromFirstFromActive &&
|
|
448
|
-
this.multiFromFirstFromActive !== 'null'
|
|
465
|
+
const firstFromActive = this.multiFromFirstFromActive && this.multiFromFirstFromActive !== 'null'
|
|
449
466
|
? this.multiFromFirstFromActive
|
|
450
467
|
: 0;
|
|
451
468
|
const firstToActive = this.multiFromFirstToActive && this.multiFromFirstToActive != 'null'
|
|
@@ -455,16 +472,13 @@ export class CaMoneyFilterComponent {
|
|
|
455
472
|
this.multiFormSecondFromActive !== 'null'
|
|
456
473
|
? this.multiFormSecondFromActive
|
|
457
474
|
: 0;
|
|
458
|
-
const secToActive = this.multiFormSecondToActive &&
|
|
459
|
-
this.multiFormSecondToActive !== 'null'
|
|
475
|
+
const secToActive = this.multiFormSecondToActive && this.multiFormSecondToActive !== 'null'
|
|
460
476
|
? this.multiFormSecondToActive
|
|
461
477
|
: 0;
|
|
462
|
-
const thirdFromActive = this.multiFormThirdFromActive &&
|
|
463
|
-
this.multiFormThirdFromActive !== 'null'
|
|
478
|
+
const thirdFromActive = this.multiFormThirdFromActive && this.multiFormThirdFromActive !== 'null'
|
|
464
479
|
? this.multiFormThirdFromActive
|
|
465
480
|
: 0;
|
|
466
|
-
const thirdToActive = this.multiFormThirdToActive &&
|
|
467
|
-
this.multiFormThirdToActive !== 'null'
|
|
481
|
+
const thirdToActive = this.multiFormThirdToActive && this.multiFormThirdToActive !== 'null'
|
|
468
482
|
? this.multiFormThirdToActive
|
|
469
483
|
: 0;
|
|
470
484
|
const firstFrom = data.multiFromFirstFrom && data.multiFromFirstFrom !== 'null'
|
|
@@ -501,12 +515,7 @@ export class CaMoneyFilterComponent {
|
|
|
501
515
|
}
|
|
502
516
|
else {
|
|
503
517
|
this.isButtonAvailable = false;
|
|
504
|
-
if (firstFrom ||
|
|
505
|
-
firstTo ||
|
|
506
|
-
secFrom ||
|
|
507
|
-
secTo ||
|
|
508
|
-
thirdFrom ||
|
|
509
|
-
thirdTo) {
|
|
518
|
+
if (firstFrom || firstTo || secFrom || secTo || thirdFrom || thirdTo) {
|
|
510
519
|
this.moneyFilterStatus = true;
|
|
511
520
|
}
|
|
512
521
|
else {
|
|
@@ -553,4 +562,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
553
562
|
}], isFilterActive: [{
|
|
554
563
|
type: Input
|
|
555
564
|
}] } });
|
|
556
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUdYLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixJQUFJLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRSxRQUFRO0FBQ1IsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVuRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUUzRixRQUFRO0FBQ1IsT0FBTyxFQUFFLHVCQUF1QixJQUFJLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFPbEgsVUFBVTtBQUNWLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR3RFLGFBQWE7QUFDYixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7O0FBcUJ4RSxNQUFNLE9BQU8sc0JBQXNCO0lBNEMvQixZQUNZLFdBQStCO0lBRXZDLFFBQVE7SUFDQSxpQkFBb0M7UUFIcEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBRy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE5Q3ZDLFlBQU8sR0FBVyxtQkFBbUIsQ0FBQyxjQUFjLENBQUM7UUFDckQsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFDNUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWpDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWhDLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBTzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMscUJBQWdCLEdBQW9CLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFvQixDQUFDLENBQUM7UUFDcEMsNkJBQXdCLEdBQW9CLENBQUMsQ0FBQztRQUM5QywyQkFBc0IsR0FBb0IsQ0FBQyxDQUFDO1FBQzVDLDhCQUF5QixHQUFvQixDQUFDLENBQUM7UUFDL0MsNEJBQXVCLEdBQW9CLENBQUMsQ0FBQztRQUM3Qyw2QkFBd0IsR0FBb0IsQ0FBQyxDQUFDO1FBQzlDLDJCQUFzQixHQUFvQixDQUFDLENBQUM7UUFFNUMsa0JBQWEsR0FBVyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFDdEQsa0JBQWEsR0FBVyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFFdEQsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsZ0JBQVcsR0FBVyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFDcEQsZ0JBQVcsR0FBVyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFFcEQsc0JBQWlCLEdBQWtCLEVBQUUsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFDN0Isb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO0lBT3hDLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sbUJBQW1CLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sbUJBQW1CLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3BDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxJQUFJO1lBQ2Qsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLGdCQUFnQixFQUFFLElBQUk7U0FDekIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVk7YUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO3FCQUMvQjt5QkFBTTt3QkFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztxQkFDaEM7aUJBQ0o7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7aUJBQ2hDO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7YUFDaEM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3hELElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFO29CQUMxQixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQzlDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFFbEQsSUFBSSxJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7d0JBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7cUJBQ25DO3lCQUFNO3dCQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7cUJBQ3BDO2lCQUNKO3FCQUFNO29CQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7aUJBQ3BDO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQzthQUNwQztZQUVELElBQUksT0FBTyxDQUFDLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUQsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUU7b0JBQzNCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDL0MsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUVuRCxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztxQkFDcEM7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztxQkFDckM7aUJBQ0o7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztpQkFDckM7YUFDSjtZQUVELElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDeEQsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzFCLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDOUMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTt3QkFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztxQkFDbkM7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztxQkFDcEM7aUJBQ0o7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztpQkFDcEM7YUFDSjtZQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDMUIsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBRTVCLE1BQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksTUFBTTtvQkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7b0JBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osTUFBTSxRQUFRLEdBQ1YsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLE1BQU07b0JBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYztvQkFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFWixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUNsQixFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbkM7Z0JBRUQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtvQkFDcEIsSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZDO2dCQUVELElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRTtvQkFDakIsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDMUI7Z0JBRUQsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO29CQUNyQixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7aUJBQzVCO2dCQUVELElBQUksY0FBYyxJQUFJLGdCQUFnQixFQUFFO29CQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO29CQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2lCQUNqQztxQkFBTTtvQkFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO29CQUMvQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO3dCQUNkLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7cUJBQ2xDO2lCQUNKO2FBQ0o7aUJBQU07Z0JBQ0gsSUFDSSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7b0JBQ3pCLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtvQkFDMUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQzNCO29CQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDckM7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztpQkFDbEM7Z0JBRUQsSUFDSSxJQUFJLENBQUMsbUJBQW1CO29CQUN4QixJQUFJLENBQUMsb0JBQW9CO29CQUN6QixJQUFJLENBQUMsbUJBQW1CLEVBQzFCO29CQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7aUJBQ2xDO2FBQ0o7WUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ2hCLEVBQUUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25EO1lBRUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDeEIsRUFBRSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUN0QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMzRDtZQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUMzQixJQUFJLENBQUMsU0FBUztxQkFDVCxHQUFHLENBQUMsbUJBQW1CLENBQUM7b0JBQ3pCLEVBQUUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUQ7WUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFNBQVM7cUJBQ1QsR0FBRyxDQUFDLGtCQUFrQixDQUFDO29CQUN4QixFQUFFLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLO1lBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRW5DLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLEtBQUssbUJBQW1CLENBQUMsWUFBWTtnQkFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7d0JBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQ2hDO3lCQUFNO3dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQzlCO2lCQUNKO3FCQUFNO29CQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQzNDLElBQUksQ0FBQyxhQUFhLENBQ3JCLENBQUM7b0JBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDekM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixLQUFLLG1CQUFtQixDQUFDLFlBQVksQ0FBQztZQUN0QyxLQUFLLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztZQUNwQyxLQUFLLG1CQUFtQixDQUFDLFlBQVk7Z0JBQ2pDLElBQ0ksSUFBSSxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxZQUFZO29CQUM5QyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQ3RCO29CQUNFLE1BQU07aUJBQ1Q7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FDM0MsSUFBSSxDQUFDLGFBQWEsQ0FDckIsQ0FBQztnQkFFRixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUN0QyxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTTtTQUNiO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRztZQUNULE1BQU07WUFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDeEIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBVztRQUMzQixJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDcEM7YUFBTSxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDcEM7YUFBTTtZQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBa0I7UUFDNUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLFFBQVEsR0FBRyxFQUFFO1lBQ1QsS0FBSyxZQUFZO2dCQUNiLElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxZQUFZLENBQUM7b0JBQ2xCLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ2hCLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO2dCQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssZ0JBQWdCO2dCQUNqQixJQUFJLENBQUMsU0FBUztxQkFDVCxHQUFHLENBQUMsb0JBQW9CLENBQUM7b0JBQzFCLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDeEIsRUFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQkFDakMsTUFBTTtZQUNWLEtBQUssaUJBQWlCO2dCQUNsQixJQUFJLENBQUMsU0FBUztxQkFDVCxHQUFHLENBQUMscUJBQXFCLENBQUM7b0JBQzNCLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDekIsRUFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssZ0JBQWdCO2dCQUNqQixJQUFJLENBQUMsU0FBUztxQkFDVCxHQUFHLENBQUMsb0JBQW9CLENBQUM7b0JBQzFCLEVBQUUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxTQUFTO3FCQUNULEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDeEIsRUFBRSxRQUFRLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQkFDakMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTTtTQUNiO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FDakIsS0FBd0I7UUFFeEIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxHQUFHLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXRFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLFdBQVcsRUFBRTtTQUNsRDthQUFNLElBQ0gsSUFBSSxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxZQUFZO1lBQzlDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFDdEI7WUFDRSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssbUJBQW1CLENBQUMsR0FBRyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxDQUN4RCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FDMUIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxDQUN0RCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FDN0IsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsS0FBSyxDQUN6RCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FDM0IsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSyxDQUN2RCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FDNUIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxDQUN4RCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FDMUIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxDQUN0RCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFWCxXQUFXLEdBQUc7b0JBQ1YsYUFBYSxFQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSztvQkFDbkQsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSztvQkFDMUQsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO3dCQUNyRCxFQUFFLEtBQUs7b0JBQ1gsWUFBWSxFQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsS0FBSztvQkFDbEQsYUFBYSxFQUNULElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSztvQkFDbkQsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSztpQkFDN0QsQ0FBQztnQkFFRixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7Z0JBRXBCLElBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxLQUFLO29CQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFDL0M7b0JBQ0UsV0FBVyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7aUJBQ2pDO2dCQUVELElBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLO29CQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFDaEQ7b0JBQ0UsV0FBVyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7aUJBQ2pDO2dCQUVELElBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxLQUFLO29CQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFDL0M7b0JBQ0UsV0FBVyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7aUJBQ2pDO2dCQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQzthQUN0QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FDcEIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FDaEQsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUNsQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUM5QyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFWCxJQUNJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSztvQkFDeEMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQ3hDO29CQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JCLE9BQU87aUJBQ1Y7Z0JBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztnQkFDL0IsV0FBVyxHQUFHO29CQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLO3dCQUMvQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQzt3QkFDbkQsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QjtvQkFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7d0JBQzNDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDO3dCQUNqRCxDQUFDLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCO2lCQUNyRCxDQUFDO2FBQ0w7U0FDSjtRQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNyQixNQUFNLElBQUksR0FBMEM7WUFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3JCLE1BQU07WUFDTixXQUFXO1lBQ1gsT0FBTztTQUNWLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sbUJBQW1CLENBQUMsSUFTMUI7UUFDRyxJQUFJLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUM5QixJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUU5QixNQUFNLGVBQWUsR0FDakIsSUFBSSxDQUFDLHdCQUF3QjtZQUM3QixJQUFJLENBQUMsd0JBQXdCLEtBQUssTUFBTTtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QjtZQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1osTUFBTSxhQUFhLEdBQ2YsSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxNQUFNO1lBQ2hFLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCO1lBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFWixNQUFNLGFBQWEsR0FDZixJQUFJLENBQUMseUJBQXlCO1lBQzlCLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxNQUFNO1lBQ3JDLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCO1lBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWixNQUFNLFdBQVcsR0FDYixJQUFJLENBQUMsdUJBQXVCO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxNQUFNO1lBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCO1lBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFWixNQUFNLGVBQWUsR0FDakIsSUFBSSxDQUFDLHdCQUF3QjtZQUM3QixJQUFJLENBQUMsd0JBQXdCLEtBQUssTUFBTTtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QjtZQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1osTUFBTSxhQUFhLEdBQ2YsSUFBSSxDQUFDLHNCQUFzQjtZQUMzQixJQUFJLENBQUMsc0JBQXNCLEtBQUssTUFBTTtZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQjtZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRVosTUFBTSxTQUFTLEdBQ1gsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxNQUFNO1lBQ3pELENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWixNQUFNLE9BQU8sR0FDVCxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE1BQU07WUFDckQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVaLE1BQU0sT0FBTyxHQUNULElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssTUFBTTtZQUMzRCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1osTUFBTSxLQUFLLEdBQ1AsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxNQUFNO1lBQ3ZELENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFWixNQUFNLFNBQVMsR0FDWCxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLE1BQU07WUFDekQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNaLE1BQU0sT0FBTyxHQUNULElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssTUFBTTtZQUNyRCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRVosSUFBSSxTQUFTLEtBQUssZUFBZSxJQUFJLE9BQU8sS0FBSyxhQUFhLEVBQUU7WUFDNUQsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxPQUFPLEtBQUssYUFBYSxJQUFJLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFDcEQsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxTQUFTLEtBQUssZUFBZSxJQUFJLE9BQU8sS0FBSyxhQUFhLEVBQUU7WUFDNUQsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1NBQ2hDO1FBRUQsSUFDSSxnQkFBZ0IsS0FBSyxTQUFTO1lBQzlCLGlCQUFpQixLQUFLLFNBQVM7WUFDL0IsZ0JBQWdCLEtBQUssU0FBUyxFQUNoQztZQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDakM7YUFBTTtZQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFDSSxTQUFTO2dCQUNULE9BQU87Z0JBQ1AsT0FBTztnQkFDUCxLQUFLO2dCQUNMLFNBQVM7Z0JBQ1QsT0FBTyxFQUNUO2dCQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDakM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQzthQUNsQztTQUNKO0lBQ0wsQ0FBQztJQUVNLFVBQVUsQ0FDYixZQUFpRDtRQUVqRCxPQUFPLHNCQUFzQixDQUFDLFlBQVksQ0FBVyxDQUFDO0lBQzFELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7K0dBdm1CUSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw0UEFKcEIsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsMEJDNUQ1RCx3clNBK1FBO2dCRDlOUSxVQUFVO2dCQUNWLFlBQVksZ09BQ1osV0FBVyxrU0FDWCxtQkFBbUIsK1VBQ25CLFNBQVMsOEJBQ1QsZ0JBQWdCLDhCQUNoQixhQUFhLGlPQUNiLGdCQUFnQix3UUFNUixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7OzRGQUUzRCxzQkFBc0I7a0JBbkJsQyxTQUFTOytCQUNJLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ0wsVUFBVTt3QkFDVixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ25CLGFBR1UsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQ3pDLGlCQUFpQixDQUFDLElBQUksY0FDekIsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzZJQUczRCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSBhcyBTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bkNvbmZpZywgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgVGhvdXNhbmRTZXBhcmF0b3JQaXBlIGFzIFRob3VzYW5kU2VwYXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvdGhvdXNhbmQtc2VwYXJhdG9yLnBpcGUnO1xuaW1wb3J0IHsgQ2FTdmdQaXBlIGFzIENhU3ZnIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvY2Etc3ZnLnBpcGUnO1xuXG4vLyBhbmltYXRpb25zXG5pbXBvcnQgeyBzaG93QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9zaG93LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBjbG9zZUZvcm0gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL2Nsb3NlLWZvcm0uYW5pbWF0aW9uJztcbmltcG9ydCB7IENhTW9uZXlGaWx0ZXJTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9zdmctcm91dGVzL2NhLW1vbmV5LWZpbHRlci1zdmctcm91dGVzJztcblxuLy8gZW51bXNcbmltcG9ydCB7IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtIGFzIFRvb2xiYXJGaWx0ZXJTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi9jYS1tYXAvZW51bXMvdG9vbGJhci1maWx0ZXItc3RyaW5nLmVudW0nO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IEFycmF5U3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2FycmF5LXN0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLW91dHB1dC5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1vdXRwdXQtcGFyYW1zLm1vZGVsJztcblxuLy8gY29uZmlnc1xuaW1wb3J0IHsgQ2FNb25leUZpbHRlckNvbmZpZyB9IGZyb20gJy4vY29uZmlnL2NhLW1vbmV5LWZpbHRlci5jb25maWcnO1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLW1vbmV5LWZpbHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIG1vZHVsZXNcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgICAgICBTdmdJY29uTW9kdWxlLFxuICAgICAgICBDYUlucHV0Q29tcG9uZW50LFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLW1vbmV5LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbTmdiRHJvcGRvd25Db25maWcsIFRob3VzYW5kU2VwYXJhdG9yLCBDYVN2Z10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBhbmltYXRpb25zOiBbc2hvd0FuaW1hdGlvbignc2hvd0FuaW1hdGlvbicpLCBjbG9zZUZvcm0oJ2Nsb3NlRm9ybScpXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FNb25leUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0eXBlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YlR5cGU6IHN0cmluZyA9IFRvb2xiYXJGaWx0ZXJTdHJpbmcuUEVORElOR19TVEFUVVM7XG4gICAgQElucHV0KCkgbW9uZXlGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGZ1ZWxUeXBlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgbG9hZFR5cGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGlzUmVwYWlyRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIHNob3dQYXJ0MTogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIHNob3dQYXJ0MjogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIHNob3dQYXJ0MzogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIG1vbmV5Rm9ybSE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBwdWJsaWMgc2luZ2xlRm9ybUVycm9yITogc3RyaW5nIHwgYm9vbGVhbjtcbiAgICBwdWJsaWMgbXVsdGlGb3JtRmlyc3RFcnJvciE6IHN0cmluZyB8IGJvb2xlYW47XG4gICAgcHVibGljIG11bHRpRm9ybVNlY29uZEVycm9yITogc3RyaW5nIHwgYm9vbGVhbjtcbiAgICBwdWJsaWMgbXVsdGlGb3JtVGhpcmRFcnJvciE6IHN0cmluZyB8IGJvb2xlYW47XG4gICAgcHVibGljIG1vbmV5RmlsdGVyU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzQnV0dG9uQXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgc2luZ2xlRnJvbUFjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgICBwdWJsaWMgc2luZ2xlVG9BY3RpdmU6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gICAgcHVibGljIG11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgICBwdWJsaWMgbXVsdGlGcm9tRmlyc3RUb0FjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgICBwdWJsaWMgbXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgICBwdWJsaWMgbXVsdGlGb3JtU2Vjb25kVG9BY3RpdmU6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gICAgcHVibGljIG11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgICBwdWJsaWMgbXVsdGlGb3JtVGhpcmRUb0FjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcblxuICAgIHB1YmxpYyBtaW5WYWx1ZVJhbmdlOiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1JTl9WQUxVRTtcbiAgICBwdWJsaWMgbWF4VmFsdWVSYW5nZTogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZy5NQVhfVkFMVUU7XG5cbiAgICBwdWJsaWMgYWN0aXZlRm9ybU51bTogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgbWluVmFsdWVTZXQ6IHN0cmluZyA9IFRvb2xiYXJGaWx0ZXJTdHJpbmcuTUlOX1ZBTFVFO1xuICAgIHB1YmxpYyBtYXhWYWx1ZVNldDogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZy5NQVhfVkFMVUU7XG5cbiAgICBwdWJsaWMgZmlsdGVyQWN0aXZlQXJyYXk6IEFycmF5U3RhdHVzW10gPSBbXTtcbiAgICBwdWJsaWMgc3dpcGVBY3RpdmVSYW5nZTogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgdG90YWxGaWx0ZXJzTnVtOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBpc1NpbmdsZUZvcm1BY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG5cbiAgICAgICAgLy8gcGlwZXNcbiAgICAgICAgcHJpdmF0ZSB0aG91c2FuZFNlcGFyYXRvcjogVGhvdXNhbmRTZXBhcmF0b3JcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgICAgIHRoaXMud2F0Y2hNb25leUZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBnZXQgc2luZ2xlRm9ybUZyb20oKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRTaW5nbGVGb3JtRnJvbSgpO1xuICAgIH1cblxuICAgIGdldCBzaW5nbGVGb3JtVG8oKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRTaW5nbGVGb3JtVG8oKTtcbiAgICB9XG5cbiAgICBnZXQgbXVsdGlGb3JtRmlyc3RGcm9tKCk6IElDYUlucHV0IHtcbiAgICAgICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0TXVsdGlGb3JtRmlyc3RGcm9tKCk7XG4gICAgfVxuXG4gICAgZ2V0IG11bHRpRm9ybUZpcnN0VG8oKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1GaXJzdFRvKCk7XG4gICAgfVxuXG4gICAgZ2V0IG11bHRpRm9ybVNlY29uZEZyb20oKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1TZWNvbmRGcm9tKCk7XG4gICAgfVxuXG4gICAgZ2V0IG11bHRpRm9ybVNlY29uZFRvKCk6IElDYUlucHV0IHtcbiAgICAgICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0TXVsdGlGb3JtU2Vjb25kVG8oKTtcbiAgICB9XG5cbiAgICBnZXQgbXVsdGlGb3JtVGhpcmRGcm9tKCk6IElDYUlucHV0IHtcbiAgICAgICAgcmV0dXJuIENhTW9uZXlGaWx0ZXJDb25maWcuZ2V0TXVsdGlGb3JtVGhpcmRGcm9tKCk7XG4gICAgfVxuXG4gICAgZ2V0IG11bHRpRm9ybVRoaXJkVG8oKTogSUNhSW5wdXQge1xuICAgICAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1UaGlyZFRvKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbmV5Rm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgc2luZ2xlRnJvbTogbnVsbCxcbiAgICAgICAgICAgIHNpbmdsZVRvOiBudWxsLFxuICAgICAgICAgICAgbXVsdGlGcm9tRmlyc3RGcm9tOiBudWxsLFxuICAgICAgICAgICAgbXVsdGlGcm9tRmlyc3RUbzogbnVsbCxcbiAgICAgICAgICAgIG11bHRpRm9ybVNlY29uZEZyb206IG51bGwsXG4gICAgICAgICAgICBtdWx0aUZvcm1TZWNvbmRUbzogbnVsbCxcbiAgICAgICAgICAgIG11bHRpRm9ybVRoaXJkRnJvbTogbnVsbCxcbiAgICAgICAgICAgIG11bHRpRm9ybVRoaXJkVG86IG51bGwsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2F0Y2hNb25leUZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzLnNpbmdsZUZyb20gfHwgY2hhbmdlcy5zaW5nbGVUbykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hhbmdlcy5zaW5nbGVUbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG8gPSBwYXJzZUludChjaGFuZ2VzLnNpbmdsZVRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb20gPSBwYXJzZUludChjaGFuZ2VzLnNpbmdsZUZyb20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20gPiB0byB8fCBmcm9tID09PSB0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVGb3JtRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZUZvcm1FcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzLm11bHRpRnJvbUZpcnN0RnJvbSB8fCBjaGFuZ2VzLm11bHRpRnJvbUZpcnN0VG8pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlGcm9tRmlyc3RUbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG8gPSBwYXJzZUludChjaGFuZ2VzLm11bHRpRnJvbUZpcnN0VG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnJvbSA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGcm9tRmlyc3RGcm9tKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20gPiB0byB8fCBmcm9tID09PSB0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aUZvcm1TZWNvbmRGcm9tIHx8IGNoYW5nZXMubXVsdGlGb3JtU2Vjb25kVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlGb3JtU2Vjb25kVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZvcm1TZWNvbmRUbyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZvcm1TZWNvbmRGcm9tKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyb20gPiB0byB8fCBmcm9tID09PSB0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aUZvcm1UaGlyZEZyb20gfHwgY2hhbmdlcy5tdWx0aUZvcm1UaGlyZFRvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzLm11bHRpRm9ybVRoaXJkVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZvcm1UaGlyZFRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb20gPSBwYXJzZUludChjaGFuZ2VzLm11bHRpRm9ybVRoaXJkRnJvbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJvbSA+IHRvIHx8IGZyb20gPT09IHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1YlR5cGUgIT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuQUxMKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b1ZhbHVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmcm9tVmFsdWVDaGFuZ2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tQWN0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlRnJvbUFjdGl2ZSAmJiB0aGlzLnNpbmdsZUZyb21BY3RpdmUgIT0gJ251bGwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNpbmdsZUZyb21BY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvQWN0aXZlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlVG9BY3RpdmUgJiYgdGhpcy5zaW5nbGVUb0FjdGl2ZSAhPSAnbnVsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc2luZ2xlVG9BY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvID0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5nZXMuc2luZ2xlVG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvID0gcGFyc2VJbnQoY2hhbmdlcy5zaW5nbGVUbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsZXQgZnJvbSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VzLnNpbmdsZUZyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBwYXJzZUludChjaGFuZ2VzLnNpbmdsZUZyb20pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvQWN0aXZlID09PSB0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9WYWx1ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tQWN0aXZlID09PSBmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tVmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodG9WYWx1ZUNoYW5nZWQgfHwgZnJvbVZhbHVlQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG8gJiYgIWZyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMubXVsdGlGb3JtVGhpcmRFcnJvclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja01vbmV5TXVsdGlGb3JtKGNoYW5nZXMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaW5nbGVGb3JtRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpbmdsZVRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8uc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoJ3NpbmdsZVRvJyk/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdtdWx0aUZyb21GaXJzdFRvJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8uc2V0RXJyb3JzKHsgaW52YWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoJ211bHRpRnJvbUZpcnN0VG8nKT8uc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdtdWx0aUZvcm1TZWNvbmRUbycpXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZvcm1TZWNvbmRUbycpPy5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnbXVsdGlGb3JtVGhpcmRUbycpXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZvcm1UaGlyZFRvJyk/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBbGwoZXZlbnQ/OiBFdmVudCk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMge1xuICAgICAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRvb2xiYXJGaWx0ZXJTdHJpbmcuTU9ORVlfRklMVEVSOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1JlcGFpckZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJUeXBlICE9PSBUb29sYmFyRmlsdGVyU3RyaW5nLkFMTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckZvcm0oJ3NpbmdsZUZvcm0nKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJGb3JtKCdjbGVhckFsbCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4TnVtID0gdGhpcy50aG91c2FuZFNlcGFyYXRvci50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1heFZhbHVlUmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heFZhbHVlU2V0ID0gbWF4TnVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pblZhbHVlU2V0ID0gdGhpcy5taW5WYWx1ZVJhbmdlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUZvcm1OdW0gPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUb29sYmFyRmlsdGVyU3RyaW5nLk1JTEVTX0ZJTFRFUjpcbiAgICAgICAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZy5QQVlfRklMVEVSOlxuICAgICAgICAgICAgY2FzZSBUb29sYmFyRmlsdGVyU3RyaW5nLk1PTkVZX0ZJTFRFUjpcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVIgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXNSZXBhaXJGaWx0ZXJcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1heE51bSA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3IudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heFZhbHVlUmFuZ2VcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhWYWx1ZVNldCA9IG1heE51bTtcbiAgICAgICAgICAgICAgICB0aGlzLm1pblZhbHVlU2V0ID0gdGhpcy5taW5WYWx1ZVJhbmdlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXkgPSBbXTtcbiAgICAgICAgdGhpcy5zd2lwZUFjdGl2ZVJhbmdlID0gMDtcbiAgICAgICAgdGhpcy50b3RhbEZpbHRlcnNOdW0gPSAwO1xuICAgICAgICB0aGlzLmlzU2luZ2xlRm9ybUFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9ICdDbGVhcic7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlRm9ybVBhcnQobW9kOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1vZCA9PT0gJ3BhcnQxJykge1xuICAgICAgICAgICAgdGhpcy5zaG93UGFydDEgPSAhdGhpcy5zaG93UGFydDE7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kID09PSAncGFydDInKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dQYXJ0MiA9ICF0aGlzLnNob3dQYXJ0MjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1BhcnQzID0gIXRoaXMuc2hvd1BhcnQzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRm9ybShtb2Q6IHN0cmluZywgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgc3dpdGNoIChtb2QpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZUZvcm0nOlxuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpbmdsZUZyb20nKVxuICAgICAgICAgICAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybVxuICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaW5nbGVUbycpXG4gICAgICAgICAgICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5tb25leUZpbHRlclN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlVG9BY3RpdmUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlRnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbXVsdGlGcm9tRmlyc3QnOlxuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ211bHRpRnJvbUZpcnN0RnJvbScpXG4gICAgICAgICAgICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ211bHRpRnJvbUZpcnN0VG8nKVxuICAgICAgICAgICAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ211bHRpRm9ybVNlY29uZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAgICAgICAgICAgLmdldCgnbXVsdGlGb3JtU2Vjb25kRnJvbScpXG4gICAgICAgICAgICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ211bHRpRm9ybVNlY29uZFRvJylcbiAgICAgICAgICAgICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbXVsdGlGb3JtVGhpcmQnOlxuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ211bHRpRm9ybVRoaXJkRnJvbScpXG4gICAgICAgICAgICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAgICAgICAgIC5nZXQoJ211bHRpRm9ybVRoaXJkVG8nKVxuICAgICAgICAgICAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NsZWFyQWxsJzpcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZyb21GaXJzdFRvQWN0aXZlID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEZyb21BY3RpdmUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kVG9BY3RpdmUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRGcm9tQWN0aXZlID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkVG9BY3RpdmUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJWYWx1ZShcbiAgICAgICAgZXZlbnQ6IEV2ZW50IHwgdW5kZWZpbmVkXG4gICAgKTogZmlsdGVyT3V0cHV0IHwgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtcyA9IHt9O1xuICAgICAgICBsZXQgc3ViVHlwZSA9IFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuVElNRV9GSUxURVIpIHtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVIgJiZcbiAgICAgICAgICAgICF0aGlzLmlzUmVwYWlyRmlsdGVyXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3ViVHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZy5BTEwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZSA9IChcbiAgICAgICAgICAgICAgICAgICAgJyAnICsgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZyb21GaXJzdEZyb20nKT8udmFsdWVcbiAgICAgICAgICAgICAgICApLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RUb0FjdGl2ZSA9IChcbiAgICAgICAgICAgICAgICAgICAgJyAnICsgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZyb21GaXJzdFRvJyk/LnZhbHVlXG4gICAgICAgICAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEZyb21BY3RpdmUgPSAoXG4gICAgICAgICAgICAgICAgICAgICcgJyArIHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGb3JtU2Vjb25kRnJvbScpPy52YWx1ZVxuICAgICAgICAgICAgICAgICkuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZSA9IChcbiAgICAgICAgICAgICAgICAgICAgJyAnICsgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZvcm1TZWNvbmRUbycpPy52YWx1ZVxuICAgICAgICAgICAgICAgICkuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEZyb21BY3RpdmUgPSAoXG4gICAgICAgICAgICAgICAgICAgICcgJyArIHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGb3JtVGhpcmRGcm9tJyk/LnZhbHVlXG4gICAgICAgICAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkVG9BY3RpdmUgPSAoXG4gICAgICAgICAgICAgICAgICAgICcgJyArIHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGb3JtVGhpcmRUbycpPy52YWx1ZVxuICAgICAgICAgICAgICAgICkuc2xpY2UoMSk7XG5cbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RGb3JtRnJvbTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGcm9tRmlyc3RGcm9tJyk/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdEZvcm1UbzogdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZyb21GaXJzdFRvJyk/LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBzZWNvbmRGb3JtRnJvbTogdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZvcm1TZWNvbmRGcm9tJylcbiAgICAgICAgICAgICAgICAgICAgICAgID8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHNlY29uZEZvcm1UbzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGb3JtU2Vjb25kVG8nKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXJkRm9ybUZyb206XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoJ211bHRpRm9ybVRoaXJkRnJvbScpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcmRGb3JtVG86IHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGb3JtVGhpcmRUbycpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IGZvcm1zQWN0aXZlID0gMDtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZyb21GaXJzdEZyb20nKT8udmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZyb21GaXJzdFRvJyk/LnZhbHVlXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1zQWN0aXZlID0gZm9ybXNBY3RpdmUgKyAxO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KCdtdWx0aUZvcm1TZWNvbmRGcm9tJyk/LnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldCgnbXVsdGlGb3JtU2Vjb25kVG8nKT8udmFsdWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybXNBY3RpdmUgPSBmb3Jtc0FjdGl2ZSArIDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoJ211bHRpRm9ybVRoaXJkRnJvbScpPy52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoJ211bHRpRm9ybVRoaXJkVG8nKT8udmFsdWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybXNBY3RpdmUgPSBmb3Jtc0FjdGl2ZSArIDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVGb3JtTnVtID0gZm9ybXNBY3RpdmU7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbEZpbHRlcnNOdW0gPSBmb3Jtc0FjdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVGcm9tQWN0aXZlID0gKFxuICAgICAgICAgICAgICAgICAgICAnICcgKyB0aGlzLm1vbmV5Rm9ybS5nZXQoJ3NpbmdsZUZyb20nKT8udmFsdWVcbiAgICAgICAgICAgICAgICApLnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlVG9BY3RpdmUgPSAoXG4gICAgICAgICAgICAgICAgICAgICcgJyArIHRoaXMubW9uZXlGb3JtLmdldCgnc2luZ2xlVG8nKT8udmFsdWVcbiAgICAgICAgICAgICAgICApLnNsaWNlKDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5tb25leUZvcm0uZ2V0KCdzaW5nbGVGcm9tJyk/LnZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLm1vbmV5Rm9ybS5nZXQoJ3NpbmdsZVRvJyk/LnZhbHVlXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5pc1NpbmdsZUZvcm1BY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICBzaW5nbGVGcm9tOiB0aGlzLm1vbmV5Rm9ybS5nZXQoJ3NpbmdsZUZyb20nKT8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQodGhpcy5tb25leUZvcm0uZ2V0KCdzaW5nbGVGcm9tJyk/LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUixcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlVG86IHRoaXMubW9uZXlGb3JtLmdldCgnc2luZ2xlVG8nKT8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQodGhpcy5tb25leUZvcm0uZ2V0KCdzaW5nbGVUbycpPy52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9ICdTZXQnO1xuICAgICAgICBjb25zdCBkYXRhOiBmaWx0ZXJPdXRwdXQgfCBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zID0ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgICBzdWJUeXBlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tNb25leU11bHRpRm9ybShkYXRhOiB7XG4gICAgICAgIHNpbmdsZUZvcm06IHN0cmluZztcbiAgICAgICAgc2luZ2xlVG86IHN0cmluZztcbiAgICAgICAgbXVsdGlGcm9tRmlyc3RGcm9tOiBzdHJpbmc7XG4gICAgICAgIG11bHRpRnJvbUZpcnN0VG86IHN0cmluZztcbiAgICAgICAgbXVsdGlGb3JtU2Vjb25kRnJvbTogc3RyaW5nO1xuICAgICAgICBtdWx0aUZvcm1TZWNvbmRUbzogc3RyaW5nO1xuICAgICAgICBtdWx0aUZvcm1UaGlyZEZyb206IHN0cmluZztcbiAgICAgICAgbXVsdGlGb3JtVGhpcmRUbzogc3RyaW5nO1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgbGV0IGZpcnN0Rm9ybUNoYW5nZWQgPSAnbm9uZSc7XG4gICAgICAgIGxldCBzZWNvbmRGb3JtQ2hhbmdlZCA9ICdub25lJztcbiAgICAgICAgbGV0IHRoaXJkRm9ybUNoYW5nZWQgPSAnbm9uZSc7XG5cbiAgICAgICAgY29uc3QgZmlyc3RGcm9tQWN0aXZlID1cbiAgICAgICAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlICYmXG4gICAgICAgICAgICB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZSAhPT0gJ251bGwnXG4gICAgICAgICAgICAgICAgPyB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZVxuICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgZmlyc3RUb0FjdGl2ZSA9XG4gICAgICAgICAgICB0aGlzLm11bHRpRnJvbUZpcnN0VG9BY3RpdmUgJiYgdGhpcy5tdWx0aUZyb21GaXJzdFRvQWN0aXZlICE9ICdudWxsJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5tdWx0aUZyb21GaXJzdFRvQWN0aXZlXG4gICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgIGNvbnN0IHNlY0Zyb21BY3RpdmUgPVxuICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRGcm9tQWN0aXZlICYmXG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEZyb21BY3RpdmUgIT09ICdudWxsJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5tdWx0aUZvcm1TZWNvbmRGcm9tQWN0aXZlXG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBzZWNUb0FjdGl2ZSA9XG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZFRvQWN0aXZlICYmXG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZFRvQWN0aXZlICE9PSAnbnVsbCdcbiAgICAgICAgICAgICAgICA/IHRoaXMubXVsdGlGb3JtU2Vjb25kVG9BY3RpdmVcbiAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgY29uc3QgdGhpcmRGcm9tQWN0aXZlID1cbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRGcm9tQWN0aXZlICYmXG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZSAhPT0gJ251bGwnXG4gICAgICAgICAgICAgICAgPyB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZVxuICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgdGhpcmRUb0FjdGl2ZSA9XG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkVG9BY3RpdmUgJiZcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRUb0FjdGl2ZSAhPT0gJ251bGwnXG4gICAgICAgICAgICAgICAgPyB0aGlzLm11bHRpRm9ybVRoaXJkVG9BY3RpdmVcbiAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgY29uc3QgZmlyc3RGcm9tID1cbiAgICAgICAgICAgIGRhdGEubXVsdGlGcm9tRmlyc3RGcm9tICYmIGRhdGEubXVsdGlGcm9tRmlyc3RGcm9tICE9PSAnbnVsbCdcbiAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGRhdGEubXVsdGlGcm9tRmlyc3RGcm9tKVxuICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgZmlyc3RUbyA9XG4gICAgICAgICAgICBkYXRhLm11bHRpRnJvbUZpcnN0VG8gJiYgZGF0YS5tdWx0aUZyb21GaXJzdFRvICE9PSAnbnVsbCdcbiAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGRhdGEubXVsdGlGcm9tRmlyc3RUbylcbiAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgY29uc3Qgc2VjRnJvbSA9XG4gICAgICAgICAgICBkYXRhLm11bHRpRm9ybVNlY29uZEZyb20gJiYgZGF0YS5tdWx0aUZvcm1TZWNvbmRGcm9tICE9PSAnbnVsbCdcbiAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGRhdGEubXVsdGlGb3JtU2Vjb25kRnJvbSlcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IHNlY1RvID1cbiAgICAgICAgICAgIGRhdGEubXVsdGlGb3JtU2Vjb25kVG8gJiYgZGF0YS5tdWx0aUZvcm1TZWNvbmRUbyAhPT0gJ251bGwnXG4gICAgICAgICAgICAgICAgPyBwYXJzZUludChkYXRhLm11bHRpRm9ybVNlY29uZFRvKVxuICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICBjb25zdCB0aGlyZEZyb20gPVxuICAgICAgICAgICAgZGF0YS5tdWx0aUZvcm1UaGlyZEZyb20gJiYgZGF0YS5tdWx0aUZvcm1UaGlyZEZyb20gIT09ICdudWxsJ1xuICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoZGF0YS5tdWx0aUZvcm1UaGlyZEZyb20pXG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCB0aGlyZFRvID1cbiAgICAgICAgICAgIGRhdGEubXVsdGlGb3JtVGhpcmRUbyAmJiBkYXRhLm11bHRpRm9ybVRoaXJkVG8gIT09ICdudWxsJ1xuICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoZGF0YS5tdWx0aUZvcm1UaGlyZFRvKVxuICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICBpZiAoZmlyc3RGcm9tICE9PSBmaXJzdEZyb21BY3RpdmUgfHwgZmlyc3RUbyAhPT0gZmlyc3RUb0FjdGl2ZSkge1xuICAgICAgICAgICAgZmlyc3RGb3JtQ2hhbmdlZCA9ICdjaGFuZ2VkJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWNGcm9tICE9PSBzZWNGcm9tQWN0aXZlIHx8IHNlY1RvICE9PSBzZWNUb0FjdGl2ZSkge1xuICAgICAgICAgICAgc2Vjb25kRm9ybUNoYW5nZWQgPSAnY2hhbmdlZCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcmRGcm9tICE9PSB0aGlyZEZyb21BY3RpdmUgfHwgdGhpcmRUbyAhPT0gdGhpcmRUb0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcmRGb3JtQ2hhbmdlZCA9ICdjaGFuZ2VkJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpcnN0Rm9ybUNoYW5nZWQgPT09ICdjaGFuZ2VkJyB8fFxuICAgICAgICAgICAgc2Vjb25kRm9ybUNoYW5nZWQgPT09ICdjaGFuZ2VkJyB8fFxuICAgICAgICAgICAgdGhpcmRGb3JtQ2hhbmdlZCA9PT0gJ2NoYW5nZWQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmlyc3RGcm9tIHx8XG4gICAgICAgICAgICAgICAgZmlyc3RUbyB8fFxuICAgICAgICAgICAgICAgIHNlY0Zyb20gfHxcbiAgICAgICAgICAgICAgICBzZWNUbyB8fFxuICAgICAgICAgICAgICAgIHRoaXJkRnJvbSB8fFxuICAgICAgICAgICAgICAgIHRoaXJkVG9cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3ZnUGF0aChcbiAgICAgICAgcHJvcGVydHlOYW1lOiBrZXlvZiB0eXBlb2YgQ2FNb25leUZpbHRlclN2Z1JvdXRlc1xuICAgICk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDYU1vbmV5RmlsdGVyU3ZnUm91dGVzW3Byb3BlcnR5TmFtZV0gYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtb25leUZpbHRlciAmJiAhaXNSZXBhaXJGaWx0ZXJcIj5cbiAgPGRpdiBbY2xhc3MubXVsdGlNb25leUZvcm1dPVwic3ViVHlwZSA9PT0gJ2FsbCdcIiBbZm9ybUdyb3VwXT1cIm1vbmV5Rm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyIG1vbmV5LXRvcC1ib3JkZXItbWFnaW5cIj48L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViVHlwZSAhPT0gJ2FsbCc7IGVsc2Ugc2hvd0FsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1mb3JtLWhvbGRlclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtb25leS1tYWluLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHNpbmdsZS1tb25leS1tYWluXCJcbiAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmVycm9yRm9ybV09XCJzaW5nbGVGb3JtRXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2luZ2xlRnJvbVwiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJzaW5nbGVGb3JtRnJvbVwiXG4gICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtb25leS12YWx1ZS1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5lcnJvckZvcm1dPVwic2luZ2xlRm9ybUVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNpbmdsZVRvXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cInNpbmdsZUZvcm1Ub1wiXG4gICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNzaG93QWxsPlxuICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLWZvcm0taG9sZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZvcm0taGVhZGVyXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuRm9ybVRpdGxlXT1cIiFzaG93UGFydDFcIlxuICAgICAgICAgIChjbGljayk9XCJoaWRlRm9ybVBhcnQoJ3BhcnQxJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmdWVsVHlwZSAmJiAhbG9hZFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLW5hbWUgZnctYm9sZFwiIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCI+XG4gICAgICAgICAgICAgIEludm9pY2UgQWdlaW5nXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmdWVsVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgTGFzdCBQcmljZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLW5hbWUtZ3JheSB0ZXh0LXVwcGVyY2FzZSBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSYXRlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vbmV5Rm9ybS52YWx1ZS5tdWx0aUZyb21GaXJzdEZyb20gJiZcbiAgICAgICAgICAgICAgbW9uZXlGb3JtLnZhbHVlLm11bHRpRnJvbUZpcnN0VG9cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLW1vbmV5LWZvcm0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZ3LWJvbGRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGb3JtKCdtdWx0aUZyb21GaXJzdCcsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDTEVBUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImhpZGUtbW9uZXktZm9ybVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgIHN2Z19yb3RhdGU6ICFzaG93UGFydDEsXG4gICAgICAgICAgICAgIHJvdGF0ZV9iYWNrOiBzaG93UGFydDEsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdhcnJvd0xlZnRTdmdSb3V0ZScpXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vbmV5LW1haW4taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgc2luZ2xlLW1vbmV5LW1haW5cIlxuICAgICAgICAgIFtAY2xvc2VGb3JtXT1cInNob3dQYXJ0MVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZyb21GaXJzdEZyb21cIlxuICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwibXVsdGlGb3JtRmlyc3RGcm9tXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmVycm9yRm9ybV09XCJtdWx0aUZvcm1GaXJzdEVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibXVsdGlGcm9tRmlyc3RUb1wiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1GaXJzdFRvXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImJvcmRlci1maWx0ZXIgbW9uZXktYm90dG9tLWJvcmRlci1tYWdpbiBmb3JtLWJvcmRlclwiXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbkZvcm1Cb3JkZXJdPVwiIXNob3dQYXJ0MVwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy5oaWRkZW5Gb3JtVGl0bGVdPVwiIXNob3dQYXJ0MlwiXG4gICAgICAgICAgKGNsaWNrKT1cImhpZGVGb3JtUGFydCgncGFydDInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZ1ZWxUeXBlICYmICFsb2FkVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgQXZhaWxhYmxlIENyZWRpdFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZnVlbFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLW5hbWUgZnctYm9sZFwiIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCI+XG4gICAgICAgICAgICAgIFByaWNlIFBlciBHYWxsb25cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1uYW1lLWdyYXkgdGV4dC11cHBlcmNhc2UgZnctYm9sZFwiXG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUGFpZFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBtb25leUZvcm0udmFsdWUubXVsdGlGb3JtU2Vjb25kRnJvbSAmJlxuICAgICAgICAgICAgICBtb25leUZvcm0udmFsdWUubXVsdGlGb3JtU2Vjb25kVG9cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLW1vbmV5LWZvcm0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZ3LWJvbGRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGb3JtKCdtdWx0aUZvcm1TZWNvbmQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ0xFQVJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJoaWRlLW1vbmV5LWZvcm1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICBzdmdfcm90YXRlOiAhc2hvd1BhcnQyLFxuICAgICAgICAgICAgICByb3RhdGVfYmFjazogc2hvd1BhcnQyLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnYXJyb3dMZWZ0U3ZnUm91dGUnKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtb25leS1tYWluLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHNpbmdsZS1tb25leS1tYWluXCJcbiAgICAgICAgICBbQGNsb3NlRm9ybV09XCJzaG93UGFydDJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtb25leS12YWx1ZS1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibXVsdGlGb3JtU2Vjb25kRnJvbVwiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1TZWNvbmRGcm9tXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmVycm9yRm9ybV09XCJtdWx0aUZvcm1TZWNvbmRFcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm11bHRpRm9ybVNlY29uZFRvXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybVNlY29uZFRvXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImJvcmRlci1maWx0ZXIgbW9uZXktYm90dG9tLWJvcmRlci1tYWdpbiBmb3JtLWJvcmRlclwiXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbkZvcm1Cb3JkZXJdPVwiIXNob3dQYXJ0MlwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy5oaWRkZW5Gb3JtVGl0bGVdPVwiIXNob3dQYXJ0M1wiXG4gICAgICAgICAgKGNsaWNrKT1cImhpZGVGb3JtUGFydCgncGFydDMnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZ1ZWxUeXBlICYmICFsb2FkVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgUmV2ZW51ZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZnVlbFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLW5hbWUgZnctYm9sZFwiIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCI+XG4gICAgICAgICAgICAgIFRvdGFsIENvc3RcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1uYW1lLWdyYXkgdGV4dC11cHBlcmNhc2UgZnctYm9sZFwiXG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgRHVlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vbmV5Rm9ybS52YWx1ZS5tdWx0aUZvcm1UaGlyZEZyb20gJiZcbiAgICAgICAgICAgICAgbW9uZXlGb3JtLnZhbHVlLm11bHRpRm9ybVRoaXJkVG9cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLW1vbmV5LWZvcm0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZ3LWJvbGRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGb3JtKCdtdWx0aUZvcm1UaGlyZCcsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDTEVBUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImhpZGUtbW9uZXktZm9ybVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgIHN2Z19yb3RhdGU6ICFzaG93UGFydDMsXG4gICAgICAgICAgICAgIHJvdGF0ZV9iYWNrOiBzaG93UGFydDMsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdhcnJvd0xlZnRTdmdSb3V0ZScpXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vbmV5LW1haW4taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgc2luZ2xlLW1vbmV5LW1haW5cIlxuICAgICAgICAgIFtAY2xvc2VGb3JtXT1cInNob3dQYXJ0M1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZvcm1UaGlyZEZyb21cIlxuICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwibXVsdGlGb3JtVGhpcmRGcm9tXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmVycm9yRm9ybV09XCJtdWx0aUZvcm1UaGlyZEVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibXVsdGlGb3JtVGhpcmRUb1wiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1UaGlyZFRvXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJib3JkZXItZmlsdGVyIG1vbmV5LWJvdHRvbS1ib3JkZXItbWFnaW4gZm9ybS1ib3JkZXJcIlxuICAgICAgW2NsYXNzLmhpZGRlbkZvcm1Cb3JkZXJdPVwiIXNob3dQYXJ0M1wiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
565
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY2EtbW9uZXktZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUdYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixJQUFJLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRSxRQUFRO0FBQ1IsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVuRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGFB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QUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBcG5CVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw0UEFKdEIsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsMEJDN0QxRCx3clNBK1FBO2dCRDdOSSxVQUFVO2dCQUNWLFlBQVksZ09BQ1osV0FBVyxrU0FDWCxtQkFBbUIsK1VBQ25CLFNBQVMsOEJBQ1QsZ0JBQWdCLDhCQUNoQixhQUFhLGlPQUNiLGdCQUFnQix3UUFNTixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7OzRGQUV6RCxzQkFBc0I7a0JBbkJsQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCLGFBR1UsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQ3pDLGlCQUFpQixDQUFDLElBQUksY0FDekIsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzZJQUczRCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSBhcyBTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bkNvbmZpZywgTmdiTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgVGhvdXNhbmRTZXBhcmF0b3JQaXBlIGFzIFRob3VzYW5kU2VwYXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvdGhvdXNhbmQtc2VwYXJhdG9yLnBpcGUnO1xuaW1wb3J0IHsgQ2FTdmdQaXBlIGFzIENhU3ZnIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMvY2Etc3ZnLnBpcGUnO1xuXG4vLyBhbmltYXRpb25zXG5pbXBvcnQgeyBzaG93QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9zaG93LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBjbG9zZUZvcm0gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL2Nsb3NlLWZvcm0uYW5pbWF0aW9uJztcbmltcG9ydCB7IENhTW9uZXlGaWx0ZXJTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9zdmctcm91dGVzL2NhLW1vbmV5LWZpbHRlci1zdmctcm91dGVzJztcblxuLy8gZW51bXNcbmltcG9ydCB7IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtIGFzIFRvb2xiYXJGaWx0ZXJTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi9jYS1tYXAvZW51bXMvdG9vbGJhci1maWx0ZXItc3RyaW5nLmVudW0nO1xuaW1wb3J0IHsgTW9uZXlGaWx0ZXJTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcy9tb25leS1maWx0ZXItc3RyaW5nLmVudW0nO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IEFycmF5U3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2FycmF5LXN0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLW91dHB1dC5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1vdXRwdXQtcGFyYW1zLm1vZGVsJztcblxuLy8gY29uZmlnc1xuaW1wb3J0IHsgQ2FNb25leUZpbHRlckNvbmZpZyB9IGZyb20gJy4vY29uZmlnL2NhLW1vbmV5LWZpbHRlci5jb25maWcnO1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jb25maWcvY2EtaW5wdXQuY29uZmlnJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jYS1tb25leS1maWx0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gbW9kdWxlc1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIFN2Z0ljb25Nb2R1bGUsXG4gICAgQ2FJbnB1dENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLW1vbmV5LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhLW1vbmV5LWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtOZ2JEcm9wZG93bkNvbmZpZywgVGhvdXNhbmRTZXBhcmF0b3IsIENhU3ZnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW3Nob3dBbmltYXRpb24oJ3Nob3dBbmltYXRpb24nKSwgY2xvc2VGb3JtKCdjbG9zZUZvcm0nKV0sXG59KVxuZXhwb3J0IGNsYXNzIENhTW9uZXlGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YlR5cGU6IHN0cmluZyA9IFRvb2xiYXJGaWx0ZXJTdHJpbmcuUEVORElOR19TVEFUVVM7XG4gIEBJbnB1dCgpIG1vbmV5RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZnVlbFR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZFR5cGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc1JlcGFpckZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBzaG93UGFydDE6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd1BhcnQyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIHNob3dQYXJ0MzogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBtb25leUZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBzaW5nbGVGb3JtRXJyb3IhOiBzdHJpbmcgfCBib29sZWFuO1xuICBwdWJsaWMgbXVsdGlGb3JtRmlyc3RFcnJvciE6IHN0cmluZyB8IGJvb2xlYW47XG4gIHB1YmxpYyBtdWx0aUZvcm1TZWNvbmRFcnJvciE6IHN0cmluZyB8IGJvb2xlYW47XG4gIHB1YmxpYyBtdWx0aUZvcm1UaGlyZEVycm9yITogc3RyaW5nIHwgYm9vbGVhbjtcbiAgcHVibGljIG1vbmV5RmlsdGVyU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0J1dHRvbkF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzaW5nbGVGcm9tQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgc2luZ2xlVG9BY3RpdmU6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gIHB1YmxpYyBtdWx0aUZyb21GaXJzdEZyb21BY3RpdmU6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gIHB1YmxpYyBtdWx0aUZyb21GaXJzdFRvQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgbXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgcHVibGljIG11bHRpRm9ybVNlY29uZFRvQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgbXVsdGlGb3JtVGhpcmRGcm9tQWN0aXZlOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBwdWJsaWMgbXVsdGlGb3JtVGhpcmRUb0FjdGl2ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcblxuICBwdWJsaWMgbWluVmFsdWVSYW5nZTogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZy5NSU5fVkFMVUU7XG4gIHB1YmxpYyBtYXhWYWx1ZVJhbmdlOiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1BWF9WQUxVRTtcblxuICBwdWJsaWMgYWN0aXZlRm9ybU51bTogbnVtYmVyID0gMDtcbiAgcHVibGljIG1pblZhbHVlU2V0OiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1JTl9WQUxVRTtcbiAgcHVibGljIG1heFZhbHVlU2V0OiBzdHJpbmcgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1BWF9WQUxVRTtcblxuICBwdWJsaWMgZmlsdGVyQWN0aXZlQXJyYXk6IEFycmF5U3RhdHVzW10gPSBbXTtcbiAgcHVibGljIHN3aXBlQWN0aXZlUmFuZ2U6IG51bWJlciA9IDA7XG4gIHB1YmxpYyB0b3RhbEZpbHRlcnNOdW06IG51bWJlciA9IDA7XG4gIHB1YmxpYyBpc1NpbmdsZUZvcm1BY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG5cbiAgICAvLyBwaXBlc1xuICAgIHByaXZhdGUgdGhvdXNhbmRTZXBhcmF0b3I6IFRob3VzYW5kU2VwYXJhdG9yXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICB0aGlzLndhdGNoTW9uZXlGb3JtVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgc2luZ2xlRm9ybUZyb20oKTogSUNhSW5wdXQge1xuICAgIHJldHVybiBDYU1vbmV5RmlsdGVyQ29uZmlnLmdldFNpbmdsZUZvcm1Gcm9tKCk7XG4gIH1cblxuICBnZXQgc2luZ2xlRm9ybVRvKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRTaW5nbGVGb3JtVG8oKTtcbiAgfVxuXG4gIGdldCBtdWx0aUZvcm1GaXJzdEZyb20oKTogSUNhSW5wdXQge1xuICAgIHJldHVybiBDYU1vbmV5RmlsdGVyQ29uZmlnLmdldE11bHRpRm9ybUZpcnN0RnJvbSgpO1xuICB9XG5cbiAgZ2V0IG11bHRpRm9ybUZpcnN0VG8oKTogSUNhSW5wdXQge1xuICAgIHJldHVybiBDYU1vbmV5RmlsdGVyQ29uZmlnLmdldE11bHRpRm9ybUZpcnN0VG8oKTtcbiAgfVxuXG4gIGdldCBtdWx0aUZvcm1TZWNvbmRGcm9tKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1TZWNvbmRGcm9tKCk7XG4gIH1cblxuICBnZXQgbXVsdGlGb3JtU2Vjb25kVG8oKTogSUNhSW5wdXQge1xuICAgIHJldHVybiBDYU1vbmV5RmlsdGVyQ29uZmlnLmdldE11bHRpRm9ybVNlY29uZFRvKCk7XG4gIH1cblxuICBnZXQgbXVsdGlGb3JtVGhpcmRGcm9tKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1UaGlyZEZyb20oKTtcbiAgfVxuXG4gIGdldCBtdWx0aUZvcm1UaGlyZFRvKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlckNvbmZpZy5nZXRNdWx0aUZvcm1UaGlyZFRvKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5tb25leUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNpbmdsZUZyb206IG51bGwsXG4gICAgICBzaW5nbGVUbzogbnVsbCxcbiAgICAgIG11bHRpRnJvbUZpcnN0RnJvbTogbnVsbCxcbiAgICAgIG11bHRpRnJvbUZpcnN0VG86IG51bGwsXG4gICAgICBtdWx0aUZvcm1TZWNvbmRGcm9tOiBudWxsLFxuICAgICAgbXVsdGlGb3JtU2Vjb25kVG86IG51bGwsXG4gICAgICBtdWx0aUZvcm1UaGlyZEZyb206IG51bGwsXG4gICAgICBtdWx0aUZvcm1UaGlyZFRvOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaE1vbmV5Rm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGUgPSBUb29sYmFyRmlsdGVyU3RyaW5nLk1PTkVZX0ZJTFRFUjtcbiAgICB0aGlzLm1vbmV5Rm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZXMpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZXMuc2luZ2xlRnJvbSB8fCBjaGFuZ2VzLnNpbmdsZVRvKSB7XG4gICAgICAgICAgaWYgKGNoYW5nZXMuc2luZ2xlVG8pIHtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gcGFyc2VJbnQoY2hhbmdlcy5zaW5nbGVUbyk7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcGFyc2VJbnQoY2hhbmdlcy5zaW5nbGVGcm9tKTtcbiAgICAgICAgICAgIGlmIChmcm9tID4gdG8gfHwgZnJvbSA9PT0gdG8pIHtcbiAgICAgICAgICAgICAgdGhpcy5zaW5nbGVGb3JtRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zaW5nbGVGb3JtRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVGb3JtRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaW5nbGVGb3JtRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLm11bHRpRnJvbUZpcnN0RnJvbSB8fCBjaGFuZ2VzLm11bHRpRnJvbUZpcnN0VG8pIHtcbiAgICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aUZyb21GaXJzdFRvKSB7XG4gICAgICAgICAgICBjb25zdCB0byA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGcm9tRmlyc3RUbyk7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZyb21GaXJzdEZyb20pO1xuXG4gICAgICAgICAgICBpZiAoZnJvbSA+IHRvIHx8IGZyb20gPT09IHRvKSB7XG4gICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlGb3JtU2Vjb25kRnJvbSB8fCBjaGFuZ2VzLm11bHRpRm9ybVNlY29uZFRvKSB7XG4gICAgICAgICAgaWYgKGNoYW5nZXMubXVsdGlGb3JtU2Vjb25kVG8pIHtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZvcm1TZWNvbmRUbyk7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZvcm1TZWNvbmRGcm9tKTtcblxuICAgICAgICAgICAgaWYgKGZyb20gPiB0byB8fCBmcm9tID09PSB0bykge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLm11bHRpRm9ybVRoaXJkRnJvbSB8fCBjaGFuZ2VzLm11bHRpRm9ybVRoaXJkVG8pIHtcbiAgICAgICAgICBpZiAoY2hhbmdlcy5tdWx0aUZvcm1UaGlyZFRvKSB7XG4gICAgICAgICAgICBjb25zdCB0byA9IHBhcnNlSW50KGNoYW5nZXMubXVsdGlGb3JtVGhpcmRUbyk7XG4gICAgICAgICAgICBjb25zdCBmcm9tID0gcGFyc2VJbnQoY2hhbmdlcy5tdWx0aUZvcm1UaGlyZEZyb20pO1xuICAgICAgICAgICAgaWYgKGZyb20gPiB0byB8fCBmcm9tID09PSB0bykge1xuICAgICAgICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvciA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN1YlR5cGUgIT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuQUxMKSB7XG4gICAgICAgICAgbGV0IHRvVmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgZnJvbVZhbHVlQ2hhbmdlZCA9IHRydWU7XG5cbiAgICAgICAgICBjb25zdCBmcm9tQWN0aXZlID1cbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRnJvbUFjdGl2ZSAmJiB0aGlzLnNpbmdsZUZyb21BY3RpdmUgIT0gJ251bGwnXG4gICAgICAgICAgICAgID8gdGhpcy5zaW5nbGVGcm9tQWN0aXZlXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICBjb25zdCB0b0FjdGl2ZSA9XG4gICAgICAgICAgICB0aGlzLnNpbmdsZVRvQWN0aXZlICYmIHRoaXMuc2luZ2xlVG9BY3RpdmUgIT0gJ251bGwnXG4gICAgICAgICAgICAgID8gdGhpcy5zaW5nbGVUb0FjdGl2ZVxuICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICBsZXQgdG8gPSAwO1xuICAgICAgICAgIGlmIChjaGFuZ2VzLnNpbmdsZVRvKSB7XG4gICAgICAgICAgICB0byA9IHBhcnNlSW50KGNoYW5nZXMuc2luZ2xlVG8pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBmcm9tID0gMDtcbiAgICAgICAgICBpZiAoY2hhbmdlcy5zaW5nbGVGcm9tKSB7XG4gICAgICAgICAgICBmcm9tID0gcGFyc2VJbnQoY2hhbmdlcy5zaW5nbGVGcm9tKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodG9BY3RpdmUgPT09IHRvKSB7XG4gICAgICAgICAgICB0b1ZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmcm9tQWN0aXZlID09PSBmcm9tKSB7XG4gICAgICAgICAgICBmcm9tVmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRvVmFsdWVDaGFuZ2VkIHx8IGZyb21WYWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tb25leUZpbHRlclN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghdG8gJiYgIWZyb20pIHtcbiAgICAgICAgICAgICAgdGhpcy5tb25leUZpbHRlclN0YXR1cyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yICYmXG4gICAgICAgICAgICAhdGhpcy5tdWx0aUZvcm1TZWNvbmRFcnJvciAmJlxuICAgICAgICAgICAgIXRoaXMubXVsdGlGb3JtVGhpcmRFcnJvclxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5tb25leUZpbHRlclN0YXR1cyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNoZWNrTW9uZXlNdWx0aUZvcm0oY2hhbmdlcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgfHxcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRXJyb3IgfHxcbiAgICAgICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvclxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZUZvcm1FcnJvcikge1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfVE8pXG4gICAgICAgICAgICA/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfVE8pPy5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aUZvcm1GaXJzdEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAgIC5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZST01fRklSU1RfVE8pXG4gICAgICAgICAgICA/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAgIC5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZST01fRklSU1RfVE8pXG4gICAgICAgICAgICA/LnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAgIC5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZPUk1fU0VDT05EX1RPKVxuICAgICAgICAgICAgPy5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1NFQ09ORF9UTylcbiAgICAgICAgICAgID8uc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvcikge1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1RISVJEX1RPKVxuICAgICAgICAgICAgPy5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1RISVJEX1RPKVxuICAgICAgICAgICAgPy5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKGV2ZW50PzogRXZlbnQpOiBmaWx0ZXJPdXRwdXQgfCBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVI6XG4gICAgICAgIGlmICghdGhpcy5pc1JlcGFpckZpbHRlcikge1xuICAgICAgICAgIGlmICh0aGlzLnN1YlR5cGUgIT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuQUxMKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRm9ybShNb25leUZpbHRlclN0cmluZ0VudW0uU0lOR0xFX0ZPUk0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRm9ybShNb25leUZpbHRlclN0cmluZ0VudW0uQ0xFQVJfQUxMKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWF4TnVtID0gdGhpcy50aG91c2FuZFNlcGFyYXRvci50cmFuc2Zvcm0odGhpcy5tYXhWYWx1ZVJhbmdlKTtcblxuICAgICAgICAgIHRoaXMubWF4VmFsdWVTZXQgPSBtYXhOdW07XG4gICAgICAgICAgdGhpcy5taW5WYWx1ZVNldCA9IHRoaXMubWluVmFsdWVSYW5nZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1OdW0gPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZy5NSUxFU19GSUxURVI6XG4gICAgICBjYXNlIFRvb2xiYXJGaWx0ZXJTdHJpbmcuUEFZX0ZJTFRFUjpcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZy5NT05FWV9GSUxURVI6XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuTU9ORVlfRklMVEVSICYmXG4gICAgICAgICAgIXRoaXMuaXNSZXBhaXJGaWx0ZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4TnVtID0gdGhpcy50aG91c2FuZFNlcGFyYXRvci50cmFuc2Zvcm0odGhpcy5tYXhWYWx1ZVJhbmdlKTtcblxuICAgICAgICB0aGlzLm1heFZhbHVlU2V0ID0gbWF4TnVtO1xuICAgICAgICB0aGlzLm1pblZhbHVlU2V0ID0gdGhpcy5taW5WYWx1ZVJhbmdlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSBmYWxzZTtcbiAgICB0aGlzLmZpbHRlckFjdGl2ZUFycmF5ID0gW107XG4gICAgdGhpcy5zd2lwZUFjdGl2ZVJhbmdlID0gMDtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc051bSA9IDA7XG4gICAgdGhpcy5pc1NpbmdsZUZvcm1BY3RpdmUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGFjdGlvbiA9ICdDbGVhcic7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHVibGljIGhpZGVGb3JtUGFydChtb2Q6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChtb2QgPT09ICdwYXJ0MScpIHtcbiAgICAgIHRoaXMuc2hvd1BhcnQxID0gIXRoaXMuc2hvd1BhcnQxO1xuICAgIH0gZWxzZSBpZiAobW9kID09PSAncGFydDInKSB7XG4gICAgICB0aGlzLnNob3dQYXJ0MiA9ICF0aGlzLnNob3dQYXJ0MjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93UGFydDMgPSAhdGhpcy5zaG93UGFydDM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyRm9ybShtb2Q6IHN0cmluZywgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHN3aXRjaCAobW9kKSB7XG4gICAgICBjYXNlIE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfRk9STTpcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfRlJPTSlcbiAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfVE8pXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMuc2luZ2xlRm9ybUVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaW5nbGVUb0FjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMuc2luZ2xlRnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GUk9NX0ZJUlNUOlxuICAgICAgICB0aGlzLm1vbmV5Rm9ybVxuICAgICAgICAgIC5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZST01fRklSU1RfRlJPTSlcbiAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GUk9NX0ZJUlNUX1RPKVxuICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICB0aGlzLm11bHRpRm9ybUZpcnN0RXJyb3IgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1NFQ09ORDpcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1NFQ09ORF9GUk9NKVxuICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICB0aGlzLm1vbmV5Rm9ybVxuICAgICAgICAgIC5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZPUk1fU0VDT05EX1RPKVxuICAgICAgICAgID8uc2V0VmFsdWUoVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIpO1xuICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9USElSRDpcbiAgICAgICAgdGhpcy5tb25leUZvcm1cbiAgICAgICAgICAuZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1RISVJEX0ZST00pXG4gICAgICAgICAgPy5zZXRWYWx1ZShUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUik7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtXG4gICAgICAgICAgLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9USElSRF9UTylcbiAgICAgICAgICA/LnNldFZhbHVlKFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEVycm9yID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBNb25leUZpbHRlclN0cmluZ0VudW0uQ0xFQVJfQUxMOlxuICAgICAgICB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RUb0FjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kVG9BY3RpdmUgPSAwO1xuICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRUb0FjdGl2ZSA9IDA7XG4gICAgICAgIHRoaXMubW9uZXlGb3JtLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtRmlyc3RFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLm11bHRpRm9ybVNlY29uZEVycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRFcnJvciA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGaWx0ZXJWYWx1ZShcbiAgICBldmVudDogRXZlbnQgfCB1bmRlZmluZWRcbiAgKTogZmlsdGVyT3V0cHV0IHwgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgbGV0IHN1YlR5cGUgPSBUb29sYmFyRmlsdGVyU3RyaW5nLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUi50b1N0cmluZygpO1xuXG4gICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZy5USU1FX0ZJTFRFUikge1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmcuTU9ORVlfRklMVEVSICYmXG4gICAgICAhdGhpcy5pc1JlcGFpckZpbHRlclxuICAgICkge1xuICAgICAgaWYgKHRoaXMuc3ViVHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZy5BTEwpIHtcbiAgICAgICAgdGhpcy5tdWx0aUZyb21GaXJzdEZyb21BY3RpdmUgPSAoXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZST01fRklSU1RfRlJPTSk/LnZhbHVlXG4gICAgICAgICkuc2xpY2UoMSk7XG4gICAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RUb0FjdGl2ZSA9IChcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRlJPTV9GSVJTVF9UTyk/LnZhbHVlXG4gICAgICAgICkuc2xpY2UoMSk7XG4gICAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZSA9IChcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9TRUNPTkRfRlJPTSlcbiAgICAgICAgICAgID8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZSA9IChcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9TRUNPTkRfVE8pPy52YWx1ZVxuICAgICAgICApLnNsaWNlKDEpO1xuICAgICAgICB0aGlzLm11bHRpRm9ybVRoaXJkRnJvbUFjdGl2ZSA9IChcbiAgICAgICAgICAnICcgK1xuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9USElSRF9GUk9NKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcbiAgICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZFRvQWN0aXZlID0gKFxuICAgICAgICAgICcgJyArXG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1RISVJEX1RPKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcblxuICAgICAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgICAgICBmaXJzdEZvcm1Gcm9tOiB0aGlzLm1vbmV5Rm9ybS5nZXQoXG4gICAgICAgICAgICBNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRlJPTV9GSVJTVF9GUk9NXG4gICAgICAgICAgKT8udmFsdWUsXG4gICAgICAgICAgZmlyc3RGb3JtVG86IHRoaXMubW9uZXlGb3JtLmdldChcbiAgICAgICAgICAgIE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GUk9NX0ZJUlNUX1RPXG4gICAgICAgICAgKT8udmFsdWUsXG4gICAgICAgICAgc2Vjb25kRm9ybUZyb206IHRoaXMubW9uZXlGb3JtLmdldChcbiAgICAgICAgICAgIE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1NFQ09ORF9GUk9NXG4gICAgICAgICAgKT8udmFsdWUsXG4gICAgICAgICAgc2Vjb25kRm9ybVRvOiB0aGlzLm1vbmV5Rm9ybS5nZXQoXG4gICAgICAgICAgICBNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9TRUNPTkRfVE9cbiAgICAgICAgICApPy52YWx1ZSxcbiAgICAgICAgICB0aGlyZEZvcm1Gcm9tOiB0aGlzLm1vbmV5Rm9ybS5nZXQoXG4gICAgICAgICAgICBNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9USElSRF9GUk9NXG4gICAgICAgICAgKT8udmFsdWUsXG4gICAgICAgICAgdGhpcmRGb3JtVG86IHRoaXMubW9uZXlGb3JtLmdldChcbiAgICAgICAgICAgIE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1RISVJEX1RPXG4gICAgICAgICAgKT8udmFsdWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGZvcm1zQWN0aXZlID0gMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GUk9NX0ZJUlNUX0ZST00pXG4gICAgICAgICAgICA/LnZhbHVlIHx8XG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GUk9NX0ZJUlNUX1RPKT8udmFsdWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgZm9ybXNBY3RpdmUgPSBmb3Jtc0FjdGl2ZSArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5NVUxUSV9GT1JNX1NFQ09ORF9GUk9NKVxuICAgICAgICAgICAgPy52YWx1ZSB8fFxuICAgICAgICAgIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uTVVMVElfRk9STV9TRUNPTkRfVE8pPy52YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICBmb3Jtc0FjdGl2ZSA9IGZvcm1zQWN0aXZlICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZPUk1fVEhJUkRfRlJPTSlcbiAgICAgICAgICAgID8udmFsdWUgfHxcbiAgICAgICAgICB0aGlzLm1vbmV5Rm9ybS5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLk1VTFRJX0ZPUk1fVEhJUkRfVE8pPy52YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICBmb3Jtc0FjdGl2ZSA9IGZvcm1zQWN0aXZlICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybU51bSA9IGZvcm1zQWN0aXZlO1xuICAgICAgICB0aGlzLnRvdGFsRmlsdGVyc051bSA9IGZvcm1zQWN0aXZlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaW5nbGVGcm9tQWN0aXZlID0gKFxuICAgICAgICAgICcgJyArIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uU0lOR0xFX0ZST00pPy52YWx1ZVxuICAgICAgICApLnNsaWNlKDEpO1xuICAgICAgICB0aGlzLnNpbmdsZVRvQWN0aXZlID0gKFxuICAgICAgICAgICcgJyArIHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uU0lOR0xFX1RPKT8udmFsdWVcbiAgICAgICAgKS5zbGljZSgxKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uU0lOR0xFX0ZST00pPy52YWx1ZSAmJlxuICAgICAgICAgICF0aGlzLm1vbmV5Rm9ybS5nZXQoTW9uZXlGaWx0ZXJTdHJpbmdFbnVtLlNJTkdMRV9UTyk/LnZhbHVlXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY2xlYXJBbGwoZXZlbnQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNTaW5nbGVGb3JtQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgc2luZ2xlRnJvbTogdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfRlJPTSlcbiAgICAgICAgICAgID8udmFsdWVcbiAgICAgICAgICAgID8gcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfRlJPTSk/LnZhbHVlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogVG9vbGJhckZpbHRlclN0cmluZy5FTVBUWV9TVFJJTkdfUExBQ0VIT0xERVIsXG4gICAgICAgICAgc2luZ2xlVG86IHRoaXMubW9uZXlGb3JtLmdldChNb25leUZpbHRlclN0cmluZ0VudW0uU0lOR0xFX1RPKT8udmFsdWVcbiAgICAgICAgICAgID8gcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgdGhpcy5tb25leUZvcm0uZ2V0KE1vbmV5RmlsdGVyU3RyaW5nRW51bS5TSU5HTEVfVE8pPy52YWx1ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFRvb2xiYXJGaWx0ZXJTdHJpbmcuRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9ICdTZXQnO1xuICAgIGNvbnN0IGRhdGE6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgICBhY3Rpb24sXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHN1YlR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja01vbmV5TXVsdGlGb3JtKGRhdGE6IHtcbiAgICBzaW5nbGVGb3JtOiBzdHJpbmc7XG4gICAgc2luZ2xlVG86IHN0cmluZztcbiAgICBtdWx0aUZyb21GaXJzdEZyb206IHN0cmluZztcbiAgICBtdWx0aUZyb21GaXJzdFRvOiBzdHJpbmc7XG4gICAgbXVsdGlGb3JtU2Vjb25kRnJvbTogc3RyaW5nO1xuICAgIG11bHRpRm9ybVNlY29uZFRvOiBzdHJpbmc7XG4gICAgbXVsdGlGb3JtVGhpcmRGcm9tOiBzdHJpbmc7XG4gICAgbXVsdGlGb3JtVGhpcmRUbzogc3RyaW5nO1xuICB9KTogdm9pZCB7XG4gICAgbGV0IGZpcnN0Rm9ybUNoYW5nZWQgPSAnbm9uZSc7XG4gICAgbGV0IHNlY29uZEZvcm1DaGFuZ2VkID0gJ25vbmUnO1xuICAgIGxldCB0aGlyZEZvcm1DaGFuZ2VkID0gJ25vbmUnO1xuXG4gICAgY29uc3QgZmlyc3RGcm9tQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlICYmIHRoaXMubXVsdGlGcm9tRmlyc3RGcm9tQWN0aXZlICE9PSAnbnVsbCdcbiAgICAgICAgPyB0aGlzLm11bHRpRnJvbUZpcnN0RnJvbUFjdGl2ZVxuICAgICAgICA6IDA7XG4gICAgY29uc3QgZmlyc3RUb0FjdGl2ZSA9XG4gICAgICB0aGlzLm11bHRpRnJvbUZpcnN0VG9BY3RpdmUgJiYgdGhpcy5tdWx0aUZyb21GaXJzdFRvQWN0aXZlICE9ICdudWxsJ1xuICAgICAgICA/IHRoaXMubXVsdGlGcm9tRmlyc3RUb0FjdGl2ZVxuICAgICAgICA6IDA7XG5cbiAgICBjb25zdCBzZWNGcm9tQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kRnJvbUFjdGl2ZSAmJlxuICAgICAgdGhpcy5tdWx0aUZvcm1TZWNvbmRGcm9tQWN0aXZlICE9PSAnbnVsbCdcbiAgICAgICAgPyB0aGlzLm11bHRpRm9ybVNlY29uZEZyb21BY3RpdmVcbiAgICAgICAgOiAwO1xuICAgIGNvbnN0IHNlY1RvQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGb3JtU2Vjb25kVG9BY3RpdmUgJiYgdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZSAhPT0gJ251bGwnXG4gICAgICAgID8gdGhpcy5tdWx0aUZvcm1TZWNvbmRUb0FjdGl2ZVxuICAgICAgICA6IDA7XG5cbiAgICBjb25zdCB0aGlyZEZyb21BY3RpdmUgPVxuICAgICAgdGhpcy5tdWx0aUZvcm1UaGlyZEZyb21BY3RpdmUgJiYgdGhpcy5tdWx0aUZvcm1UaGlyZEZyb21BY3RpdmUgIT09ICdudWxsJ1xuICAgICAgICA/IHRoaXMubXVsdGlGb3JtVGhpcmRGcm9tQWN0aXZlXG4gICAgICAgIDogMDtcbiAgICBjb25zdCB0aGlyZFRvQWN0aXZlID1cbiAgICAgIHRoaXMubXVsdGlGb3JtVGhpcmRUb0FjdGl2ZSAmJiB0aGlzLm11bHRpRm9ybVRoaXJkVG9BY3RpdmUgIT09ICdudWxsJ1xuICAgICAgICA/IHRoaXMubXVsdGlGb3JtVGhpcmRUb0FjdGl2ZVxuICAgICAgICA6IDA7XG5cbiAgICBjb25zdCBmaXJzdEZyb20gPVxuICAgICAgZGF0YS5tdWx0aUZyb21GaXJzdEZyb20gJiYgZGF0YS5tdWx0aUZyb21GaXJzdEZyb20gIT09ICdudWxsJ1xuICAgICAgICA/IHBhcnNlSW50KGRhdGEubXVsdGlGcm9tRmlyc3RGcm9tKVxuICAgICAgICA6IDA7XG4gICAgY29uc3QgZmlyc3RUbyA9XG4gICAgICBkYXRhLm11bHRpRnJvbUZpcnN0VG8gJiYgZGF0YS5tdWx0aUZyb21GaXJzdFRvICE9PSAnbnVsbCdcbiAgICAgICAgPyBwYXJzZUludChkYXRhLm11bHRpRnJvbUZpcnN0VG8pXG4gICAgICAgIDogMDtcblxuICAgIGNvbnN0IHNlY0Zyb20gPVxuICAgICAgZGF0YS5tdWx0aUZvcm1TZWNvbmRGcm9tICYmIGRhdGEubXVsdGlGb3JtU2Vjb25kRnJvbSAhPT0gJ251bGwnXG4gICAgICAgID8gcGFyc2VJbnQoZGF0YS5tdWx0aUZvcm1TZWNvbmRGcm9tKVxuICAgICAgICA6IDA7XG4gICAgY29uc3Qgc2VjVG8gPVxuICAgICAgZGF0YS5tdWx0aUZvcm1TZWNvbmRUbyAmJiBkYXRhLm11bHRpRm9ybVNlY29uZFRvICE9PSAnbnVsbCdcbiAgICAgICAgPyBwYXJzZUludChkYXRhLm11bHRpRm9ybVNlY29uZFRvKVxuICAgICAgICA6IDA7XG5cbiAgICBjb25zdCB0aGlyZEZyb20gPVxuICAgICAgZGF0YS5tdWx0aUZvcm1UaGlyZEZyb20gJiYgZGF0YS5tdWx0aUZvcm1UaGlyZEZyb20gIT09ICdudWxsJ1xuICAgICAgICA/IHBhcnNlSW50KGRhdGEubXVsdGlGb3JtVGhpcmRGcm9tKVxuICAgICAgICA6IDA7XG4gICAgY29uc3QgdGhpcmRUbyA9XG4gICAgICBkYXRhLm11bHRpRm9ybVRoaXJkVG8gJiYgZGF0YS5tdWx0aUZvcm1UaGlyZFRvICE9PSAnbnVsbCdcbiAgICAgICAgPyBwYXJzZUludChkYXRhLm11bHRpRm9ybVRoaXJkVG8pXG4gICAgICAgIDogMDtcblxuICAgIGlmIChmaXJzdEZyb20gIT09IGZpcnN0RnJvbUFjdGl2ZSB8fCBmaXJzdFRvICE9PSBmaXJzdFRvQWN0aXZlKSB7XG4gICAgICBmaXJzdEZvcm1DaGFuZ2VkID0gJ2NoYW5nZWQnO1xuICAgIH1cblxuICAgIGlmIChzZWNGcm9tICE9PSBzZWNGcm9tQWN0aXZlIHx8IHNlY1RvICE9PSBzZWNUb0FjdGl2ZSkge1xuICAgICAgc2Vjb25kRm9ybUNoYW5nZWQgPSAnY2hhbmdlZCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXJkRnJvbSAhPT0gdGhpcmRGcm9tQWN0aXZlIHx8IHRoaXJkVG8gIT09IHRoaXJkVG9BY3RpdmUpIHtcbiAgICAgIHRoaXJkRm9ybUNoYW5nZWQgPSAnY2hhbmdlZCc7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmlyc3RGb3JtQ2hhbmdlZCA9PT0gJ2NoYW5nZWQnIHx8XG4gICAgICBzZWNvbmRGb3JtQ2hhbmdlZCA9PT0gJ2NoYW5nZWQnIHx8XG4gICAgICB0aGlyZEZvcm1DaGFuZ2VkID09PSAnY2hhbmdlZCdcbiAgICApIHtcbiAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoZmlyc3RGcm9tIHx8IGZpcnN0VG8gfHwgc2VjRnJvbSB8fCBzZWNUbyB8fCB0aGlyZEZyb20gfHwgdGhpcmRUbykge1xuICAgICAgICB0aGlzLm1vbmV5RmlsdGVyU3RhdHVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9uZXlGaWx0ZXJTdGF0dXMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBDYU1vbmV5RmlsdGVyU3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ2FNb25leUZpbHRlclN2Z1JvdXRlc1twcm9wZXJ0eU5hbWVdIGFzIHN0cmluZztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbmV5RmlsdGVyICYmICFpc1JlcGFpckZpbHRlclwiPlxuICA8ZGl2IFtjbGFzcy5tdWx0aU1vbmV5Rm9ybV09XCJzdWJUeXBlID09PSAnYWxsJ1wiIFtmb3JtR3JvdXBdPVwibW9uZXlGb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1maWx0ZXIgbW9uZXktdG9wLWJvcmRlci1tYWdpblwiPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJUeXBlICE9PSAnYWxsJzsgZWxzZSBzaG93QWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZvcm0taG9sZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vbmV5LW1haW4taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgc2luZ2xlLW1vbmV5LW1haW5cIlxuICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cInNpbmdsZUZvcm1FcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaW5nbGVGcm9tXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cInNpbmdsZUZvcm1Gcm9tXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmVycm9yRm9ybV09XCJzaW5nbGVGb3JtRXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2luZ2xlVG9cIlxuICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwic2luZ2xlRm9ybVRvXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3Nob3dBbGw+XG4gICAgICA8ZGl2IGNsYXNzPVwibXVsdGktZm9ybS1ob2xkZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1oZWFkZXJcIlxuICAgICAgICAgIFtjbGFzcy5oaWRkZW5Gb3JtVGl0bGVdPVwiIXNob3dQYXJ0MVwiXG4gICAgICAgICAgKGNsaWNrKT1cImhpZGVGb3JtUGFydCgncGFydDEnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZ1ZWxUeXBlICYmICFsb2FkVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgSW52b2ljZSBBZ2VpbmdcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZ1ZWxUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1uYW1lIGZ3LWJvbGRcIiBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICBMYXN0IFByaWNlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkVHlwZVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tbmFtZS1ncmF5IHRleHQtdXBwZXJjYXNlIGZ3LWJvbGRcIlxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJhdGVcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgbW9uZXlGb3JtLnZhbHVlLm11bHRpRnJvbUZpcnN0RnJvbSAmJlxuICAgICAgICAgICAgICBtb25leUZvcm0udmFsdWUubXVsdGlGcm9tRmlyc3RUb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItbW9uZXktZm9ybSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZnctYm9sZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZvcm0oJ211bHRpRnJvbUZpcnN0JywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENMRUFSXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS1tb25leS1mb3JtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc3ZnX3JvdGF0ZTogIXNob3dQYXJ0MSxcbiAgICAgICAgICAgICAgcm90YXRlX2JhY2s6IHNob3dQYXJ0MSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2Fycm93TGVmdFN2Z1JvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibW9uZXktbWFpbi1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBzaW5nbGUtbW9uZXktbWFpblwiXG4gICAgICAgICAgW0BjbG9zZUZvcm1dPVwic2hvd1BhcnQxXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm11bHRpRnJvbUZpcnN0RnJvbVwiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1GaXJzdEZyb21cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cIm11bHRpRm9ybUZpcnN0RXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZyb21GaXJzdFRvXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybUZpcnN0VG9cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWZpbHRlciBtb25leS1ib3R0b20tYm9yZGVyLW1hZ2luIGZvcm0tYm9yZGVyXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuRm9ybUJvcmRlcl09XCIhc2hvd1BhcnQxXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWhlYWRlclwiXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbkZvcm1UaXRsZV09XCIhc2hvd1BhcnQyXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGlkZUZvcm1QYXJ0KCdwYXJ0MicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZnVlbFR5cGUgJiYgIWxvYWRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1uYW1lIGZ3LWJvbGRcIiBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICBBdmFpbGFibGUgQ3JlZGl0XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmdWVsVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgUHJpY2UgUGVyIEdhbGxvblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLW5hbWUtZ3JheSB0ZXh0LXVwcGVyY2FzZSBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBQYWlkXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vbmV5Rm9ybS52YWx1ZS5tdWx0aUZvcm1TZWNvbmRGcm9tICYmXG4gICAgICAgICAgICAgIG1vbmV5Rm9ybS52YWx1ZS5tdWx0aUZvcm1TZWNvbmRUb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItbW9uZXktZm9ybSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZnctYm9sZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZvcm0oJ211bHRpRm9ybVNlY29uZCcsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDTEVBUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImhpZGUtbW9uZXktZm9ybVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgIHN2Z19yb3RhdGU6ICFzaG93UGFydDIsXG4gICAgICAgICAgICAgIHJvdGF0ZV9iYWNrOiBzaG93UGFydDIsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdhcnJvd0xlZnRTdmdSb3V0ZScpXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vbmV5LW1haW4taG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgc2luZ2xlLW1vbmV5LW1haW5cIlxuICAgICAgICAgIFtAY2xvc2VGb3JtXT1cInNob3dQYXJ0MlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1vbmV5LXZhbHVlLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZvcm1TZWNvbmRGcm9tXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybVNlY29uZEZyb21cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cIm11bHRpRm9ybVNlY29uZEVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibXVsdGlGb3JtU2Vjb25kVG9cIlxuICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwibXVsdGlGb3JtU2Vjb25kVG9cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWZpbHRlciBtb25leS1ib3R0b20tYm9yZGVyLW1hZ2luIGZvcm0tYm9yZGVyXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuRm9ybUJvcmRlcl09XCIhc2hvd1BhcnQyXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWhlYWRlclwiXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbkZvcm1UaXRsZV09XCIhc2hvd1BhcnQzXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGlkZUZvcm1QYXJ0KCdwYXJ0MycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZnVlbFR5cGUgJiYgIWxvYWRUeXBlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1uYW1lIGZ3LWJvbGRcIiBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICBSZXZlbnVlXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmdWVsVHlwZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbmFtZSBmdy1ib2xkXCIgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgVG90YWwgQ29zdFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZFR5cGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLW5hbWUtZ3JheSB0ZXh0LXVwcGVyY2FzZSBmdy1ib2xkXCJcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBEdWVcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgbW9uZXlGb3JtLnZhbHVlLm11bHRpRm9ybVRoaXJkRnJvbSAmJlxuICAgICAgICAgICAgICBtb25leUZvcm0udmFsdWUubXVsdGlGb3JtVGhpcmRUb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItbW9uZXktZm9ybSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZnctYm9sZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZvcm0oJ211bHRpRm9ybVRoaXJkJywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENMRUFSXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS1tb25leS1mb3JtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc3ZnX3JvdGF0ZTogIXNob3dQYXJ0MyxcbiAgICAgICAgICAgICAgcm90YXRlX2JhY2s6IHNob3dQYXJ0MyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2Fycm93TGVmdFN2Z1JvdXRlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibW9uZXktbWFpbi1ob2xkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBzaW5nbGUtbW9uZXktbWFpblwiXG4gICAgICAgICAgW0BjbG9zZUZvcm1dPVwic2hvd1BhcnQzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm11bHRpRm9ybVRoaXJkRnJvbVwiXG4gICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJtdWx0aUZvcm1UaGlyZEZyb21cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9uZXktdmFsdWUtaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JGb3JtXT1cIm11bHRpRm9ybVRoaXJkRXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtdWx0aUZvcm1UaGlyZFRvXCJcbiAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cIm11bHRpRm9ybVRoaXJkVG9cIlxuICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJvcmRlci1maWx0ZXIgbW9uZXktYm90dG9tLWJvcmRlci1tYWdpbiBmb3JtLWJvcmRlclwiXG4gICAgICBbY2xhc3MuaGlkZGVuRm9ybUJvcmRlcl09XCIhc2hvd1BhcnQzXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -72,4 +72,4 @@ export class CaMoneyFilterConfig {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtbW9uZXktZmlsdGVyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS1tb25leS1maWx0ZXIvY29uZmlnL2NhLW1vbmV5LWZpbHRlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsaUJBQWlCO1FBQ3RCLE9BQU87WUFDTCxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsZUFBZSxFQUFFLFFBQVE7WUFDekIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZTtRQUNwQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFVBQVU7WUFDaEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsSUFBSTtZQUNYLGVBQWUsRUFBRSxRQUFRO1lBQ3pCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQjtRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLG9CQUFvQjtZQUMxQixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsZUFBZSxFQUFFLFFBQVE7WUFDekIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CO1FBQ3hCLE9BQU87WUFDTCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxlQUFlLEVBQUUsUUFBUTtZQUN6QixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0I7UUFDM0IsT0FBTztZQUNMLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLGVBQWUsRUFBRSxRQUFRO1lBQ3pCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQjtRQUN6QixPQUFPO1lBQ0wsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxJQUFJO1lBQ1gsZUFBZSxFQUFFLFFBQVE7WUFDekIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCO1FBQzFCLE9BQU87WUFDTCxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixlQUFlLEVBQUUsUUFBUTtZQUN6QixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUI7UUFDeEIsT0FBTztZQUNMLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsSUFBSTtZQUNYLGVBQWUsRUFBRSxRQUFRO1lBQ3pCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uLy4uLy4uLy4uL2NhLWlucHV0L2NvbmZpZy9jYS1pbnB1dC5jb25maWcnO1xuXG5leHBvcnQgY2xhc3MgQ2FNb25leUZpbHRlckNvbmZpZyB7XG4gIHN0YXRpYyBnZXRTaW5nbGVGb3JtRnJvbSgpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdzaW5nbGVGcm9tJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgbGFiZWw6ICdGcm9tJyxcbiAgICAgIHBsYWNlaG9sZGVySWNvbjogJ2RvbGxhcicsXG4gICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldFNpbmdsZUZvcm1UbygpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdzaW5nbGVUbycsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGxhYmVsOiAnVG8nLFxuICAgICAgcGxhY2Vob2xkZXJJY29uOiAnZG9sbGFyJyxcbiAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0TXVsdGlGb3JtRmlyc3RGcm9tKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ211bHRpRnJvbUZpcnN0RnJvbScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGxhYmVsOiAnRnJvbScsXG4gICAgICBwbGFjZWhvbGRlckljb246ICdkb2xsYXInLFxuICAgICAgaXNEaXNhYmxlZDogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRNdWx0aUZvcm1GaXJzdFRvKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ211bHRpRnJvbUZpcnN0VG8nLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBsYWJlbDogJ1RvJyxcbiAgICAgIHBsYWNlaG9sZGVySWNvbjogJ2RvbGxhcicsXG4gICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGdldE11bHRpRm9ybVNlY29uZEZyb20oKTogSUNhSW5wdXQge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnbXVsdGlGb3JtU2Vjb25kRnJvbScsXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIGxhYmVsOiAnRnJvbScsXG4gICAgICBwbGFjZWhvbGRlckljb246ICdkb2xsYXInLFxuICAgICAgaXNEaXNhYmxlZDogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRNdWx0aUZvcm1TZWNvbmRUbygpOiBJQ2FJbnB1dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdtdWx0aUZvcm1TZWNvbmRUbycsXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIGxhYmVsOiAnVG8nLFxuICAgICAgcGxhY2Vob2xkZXJJY29uOiAnZG9sbGFyJyxcbiAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZ2V0TXVsdGlGb3JtVGhpcmRGcm9tKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ211bHRpRm9ybVRoaXJkRnJvbScsXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIGxhYmVsOiAnRnJvbScsXG4gICAgICBwbGFjZWhvbGRlckljb246ICdkb2xsYXInLFxuICAgICAgaXNEaXNhYmxlZDogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRNdWx0aUZvcm1UaGlyZFRvKCk6IElDYUlucHV0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ211bHRpRm9ybVRoaXJkVG8nLFxuICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICBsYWJlbDogJ1RvJyxcbiAgICAgIHBsYWNlaG9sZGVySWNvbjogJ2RvbGxhcicsXG4gICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|