verben-ng-ui 1.2.18 → 1.2.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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25DaGFuZ2VFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL0Ryb3Bkb3duQ2hhbmdlRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25DaGFuZ2VFdmVudCB7XG4gIG9yaWdpbmFsRXZlbnQ/OiBFdmVudDtcbiAgdmFsdWU6IGFueTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25DaGFuZ2VFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL0Ryb3Bkb3duQ2hhbmdlRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25DaGFuZ2VFdmVudCB7XG4gIG9yaWdpbmFsRXZlbnQ/OiBFdmVudDtcbiAgdmFsdWU6IGFueTtcbiAgZGF0YVNldD86IGFueVtdO1xufVxuIl19
@@ -452,7 +452,11 @@ export class DropDownComponent {
452
452
  this.selectedOptionLabels = [];
453
453
  this.onItemChange([]);
454
454
  this.onTouched();
455
- this.onChange.emit({ originalEvent: event, value: [] });
455
+ this.onChange.emit({
456
+ originalEvent: event,
457
+ value: [],
458
+ dataSet: this.options,
459
+ });
456
460
  if (this.required) {
457
461
  this.isInvalid = true;
458
462
  }
@@ -484,7 +488,11 @@ export class DropDownComponent {
484
488
  }
485
489
  this.onItemChange(this.selectedOptions);
486
490
  this.onTouched();
487
- this.onChange.emit({ originalEvent: event, value: this.selectedOptions });
491
+ this.onChange.emit({
492
+ originalEvent: event,
493
+ value: this.selectedOptions,
494
+ dataSet: this.options,
495
+ });
488
496
  }
489
497
  clearSelection(event) {
490
498
  if (!this.multiselect) {
@@ -492,14 +500,22 @@ export class DropDownComponent {
492
500
  this.selectedOptionLabel = null;
493
501
  this.onItemChange(null);
494
502
  this.onTouched();
495
- this.onChange.emit({ originalEvent: event, value: null });
503
+ this.onChange.emit({
504
+ originalEvent: event,
505
+ value: null,
506
+ dataSet: this.options,
507
+ });
496
508
  }
497
509
  else {
498
510
  this.selectedOptions = [];
499
511
  this.selectedOptionLabels = [];
500
512
  this.onItemChange([]);
501
513
  this.onTouched();
502
- this.onChange.emit({ originalEvent: event, value: [] });
514
+ this.onChange.emit({
515
+ originalEvent: event,
516
+ value: [],
517
+ dataSet: this.options,
518
+ });
503
519
  }
504
520
  if (this.required) {
505
521
  this.isInvalid = true;
@@ -513,7 +529,11 @@ export class DropDownComponent {
513
529
  this.selectedOptionLabel = this.getOptionLabel(value);
514
530
  this.onItemChange(this.getValue(value));
515
531
  this.onTouched();
516
- this.onChange.emit({ originalEvent: event, value: this.getValue(value) });
532
+ this.onChange.emit({
533
+ originalEvent: event,
534
+ value: this.getValue(value),
535
+ dataSet: this.options,
536
+ });
517
537
  this.toggleDropdown();
518
538
  }
519
539
  else {
@@ -534,6 +554,7 @@ export class DropDownComponent {
534
554
  this.onChange.emit({
535
555
  originalEvent: event,
536
556
  value: this.selectedOptions,
557
+ dataSet: this.options,
537
558
  });
538
559
  }
539
560
  else {
@@ -549,6 +570,7 @@ export class DropDownComponent {
549
570
  this.onChange.emit({
550
571
  originalEvent: event,
551
572
  value: this.selectedOptions,
573
+ dataSet: this.options,
552
574
  });
553
575
  }
554
576
  }
@@ -562,7 +584,11 @@ export class DropDownComponent {
562
584
  this.selectedOptionLabels = newSelectedOptionLabels;
563
585
  this.onItemChange(this.selectedOptions);
564
586
  this.onTouched();
565
- this.onChange.emit({ originalEvent: event, value: this.selectedOptions });
587
+ this.onChange.emit({
588
+ originalEvent: event,
589
+ value: this.selectedOptions,
590
+ dataSet: this.options,
591
+ });
566
592
  }
567
593
  checkMultiselectValue(value) {
568
594
  for (let i = 0; i < this.selectedOptions.length; i++) {
@@ -595,7 +621,10 @@ export class DropDownComponent {
595
621
  }
596
622
  }
597
623
  this.onTouched();
598
- this.onChange.emit({ value: this.selectedOption });
624
+ this.onChange.emit({
625
+ value: this.selectedOption,
626
+ dataSet: this.options,
627
+ });
599
628
  return;
600
629
  }
601
630
  this.selectedOption = obj;
@@ -617,7 +646,7 @@ export class DropDownComponent {
617
646
  // ? await this.asyncLabel(obj)
618
647
  // : this.getOptionLabel(obj);
619
648
  this.onTouched();
620
- this.onChange.emit({ value: this.selectedOption });
649
+ this.onChange.emit({ value: this.selectedOption, dataSet: this.options });
621
650
  }
622
651
  else {
623
652
  if (!Array.isArray(obj)) {
@@ -643,7 +672,10 @@ export class DropDownComponent {
643
672
  }
644
673
  }
645
674
  this.onTouched();
646
- this.onChange.emit({ value: this.selectedOptions });
675
+ this.onChange.emit({
676
+ value: this.selectedOptions,
677
+ dataSet: this.options,
678
+ });
647
679
  return;
648
680
  }
649
681
  this.selectedOptions = obj;
@@ -653,7 +685,10 @@ export class DropDownComponent {
653
685
  : this.getOptionLabel(object));
654
686
  }
655
687
  this.onTouched();
656
- this.onChange.emit({ value: this.selectedOptions });
688
+ this.onChange.emit({
689
+ value: this.selectedOptions,
690
+ dataSet: this.options,
691
+ });
657
692
  }
658
693
  }
659
694
  getOptionFromValue(value) {
@@ -814,4 +849,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
814
849
  type: HostListener,
815
850
  args: ['document:click', ['$event']]
816
851
  }] } });
817
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJ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Q0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBU1AsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHaEQsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFYixTQUFTO3NCQUE1QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFFSixTQUFTO3NCQUF0QyxXQUFXO3VCQUFDLGVBQWU7Z0JBNkdMLE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTztnQkFJQyxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBb2pCcEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERyb3Bkb3duTWVudUl0ZW0gfSBmcm9tICcuL0Ryb3Bkb3duTWVudUl0ZW0nO1xuaW1wb3J0IHsgRHJvcGRvd25Mb2FkRXZlbnQgfSBmcm9tICcuL0Ryb3Bkb3duTG9hZEV2ZW50JztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vVGVtcGxhdGVEaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyb3Bkb3duQ2hhbmdlRXZlbnQgfSBmcm9tICcuL0Ryb3Bkb3duQ2hhbmdlRXZlbnQnO1xuaW1wb3J0IHsgRHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wLWRvd24taXRlbS9kcm9wLWRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNFcXVhbCwgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBTdmdNb2R1bGUgfSBmcm9tICcuLi9zdmcvc3ZnLm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25NZW51SXRlbVdyYXBwZXIgZXh0ZW5kcyBEcm9wZG93bk1lbnVJdGVtIHtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIGl0ZW1zPzogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBjb3B5OiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdO1xuICBsb2FkVGltZXM/OiBEcm9wZG93bkxvYWRFdmVudDtcbiAgbG9hZFRpbWVzQ29weT86IERyb3Bkb3duTG9hZEV2ZW50O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tZHJvcC1kb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wRG93bkl0ZW1Db21wb25lbnQsXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcERvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0XG57XG4gIC8vIElOVEVSTkFMXG4gIHByaXZhdGUgX29wdGlvbnM6IGFueVtdID0gW107IC8vIEludGVybmFsIHZhcmlhYmxlIGZvciBvcHRpb25zXG5cbiAgcHJpdmF0ZSBpZ25vcmVTZXQgPSBmYWxzZTtcbiAgLy8gSU5QVVRTXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duTWVudUl0ZW1XcmFwcGVyQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUodmFsdWUpOyAvLyBTZXQgdGhlIGludGVybmFsIG9wdGlvbnMgdmFyaWFibGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaWdub3JlU2V0KSB7XG4gICAgICB0aGlzLmZpcnN0U2VhcmNoID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWdub3JlU2V0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zOyAvLyBSZXR1cm4gdGhlIGludGVybmFsIG9wdGlvbnMgdmFyaWFibGVcbiAgfVxuXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTJyZW0nO1xuICBASW5wdXQoKSBzaG93SG9yaXpvbnRhbExpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBob3Jpem9udGFsTGluZUNvbG9yOiBzdHJpbmcgPSAncmdiYSgyNTUsIDIzMCwgMTI5LCAxKSc7XG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25TdWJMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbnZhbGlkTWVzc2FnZT86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JQb3NpdGlvbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxvYWRNb3JlQ2FwdGlvbjogc3RyaW5nID0gJ1NlZSBtb3JlJztcbiAgQElucHV0KCkgZGlzcGxheTogJ2RlZmF1bHQnIHwgJ2NoaXAnID0gJ2NoaXAnO1xuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGF6eUxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGdyb3VwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdm9pZER1cGxpY2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlckJ5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBkZWJvdW5jZVRpbWU6IG51bWJlciA9IDUwMDtcbiAgQElucHV0KCkgbWluQ2hhcjogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZD86IChjb250ZXh0OiBEcm9wZG93bkxvYWRFdmVudCkgPT4gUHJvbWlzZTxhbnlbXT47XG4gIEBJbnB1dCgpIGFzeW5jTGFiZWw/OiAoY29udGV4dDogYW55KSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBASW5wdXQoKSBzZWFyY2g/OiAoZGF0YTogYW55LCBjb250ZXh0OiBEcm9wZG93bkxvYWRFdmVudCkgPT4gUHJvbWlzZTxhbnlbXT47XG5cbiAgLy8gT1VUUFVUU1xuICBAT3V0cHV0KCkgb3B0aW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RHJvcGRvd25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DbGVhcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvbkl0ZW1DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBpc0ludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlyc3RTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL1RFTVBMQVRJTkdcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Db250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkcm9wZG93bkNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duRXhwYW5zaW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGRyb3Bkb3duRXhwYW5zaW9uITogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKSBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcblxuICBzZWxlY3RlZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDsgLy8gQWxsb3cgbnVsbCBmb3IgY3VzdG9tIGl0ZW0gdGVtcGxhdGVcbiAgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIC8vVkFSSUFCTEVTXG4gIGlzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZFRpbWVzOiBEcm9wZG93bkxvYWRFdmVudCA9IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpO1xuICBpbml0aWFsSW5jcmVtZW50OiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkT3B0aW9uOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRPcHRpb25MYWJlbDogYW55O1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsczogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIG9wdGlvbnNDb3B5OiBhbnlbXSA9IFtdO1xuICBsb2FkVGltZXNDb3B5OiBEcm9wZG93bkxvYWRFdmVudCA9IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpO1xuICBzZWxlY3RlZENvbnRleHRzOiBhbnlbXSA9IFtdO1xuICBzZWFyY2hIaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuICBzZWFyY2hUZXJtJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgc2VhcmNoQ29udGV4dDogc3RyaW5nID0gJyc7XG4gIGFsbG93U2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkQWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpczsgLy8gQXNzaWduIHRoaXMgY29tcG9uZW50IGFzIHRoZSB2YWx1ZSBhY2Nlc3NvclxuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmICghdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHtcbiAgICAgICAgICB0aGlzLmFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgaXNBbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgaXNBbGxvd2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFsbG93U2VsZWN0QWxsID0gaXNBbGxvd2VkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLl9vcHRpb25zKTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSkgLy8gQWRqdXN0IGRlYm91bmNlIHRpbWUgaGVyZSAoaW4gbXMpXG4gICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHNlYXJjaFRlcm0pID0+IHtcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPCB0aGlzLm1pbkNoYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RlZENvbnRleHRzW1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgXSBhcyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcjtcbiAgICAgICAgICAgIGlmIChpdGVtLnNlYXJjaCAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZW0uc2VhcmNoKHNlYXJjaFRlcm0sIGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICAgICAgICAgIGl0ZW0uaXRlbXMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoICYmIHRoaXMubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZWFyY2goc2VhcmNoVGVybSwgdGhpcy5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pZ25vcmVTZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zQ29weSgpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RlZENvbnRleHRzW1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcjtcbiAgICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKS5sZW5ndGggPT0gMCkge1xuICAgICAgICBpdGVtLml0ZW1zID0gY2xvbmVEZWVwKGl0ZW0uY29weSk7XG4gICAgICAgIGl0ZW0ubG9hZFRpbWVzID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzQ29weSk7XG4gICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoc2VhcmNoVGVybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXRlbS5maWx0ZXJCeSkge1xuICAgICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gaXRlbS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHgudmFsdWVbaXRlbS5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWVbaXRlbS5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gaXRlbS5jb3B5LmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZSA9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdpJykudGVzdCh4LnZhbHVlKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZpcnN0U2VhcmNoID09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBjbG9uZURlZXAodGhpcy5fb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZmlyc3RTZWFyY2ggPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5vcHRpb25zQ29weSk7XG4gICAgICAgIHRoaXMubG9hZFRpbWVzID0gY2xvbmVEZWVwKHRoaXMubG9hZFRpbWVzQ29weSk7XG4gICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmZpcnN0U2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4W3RoaXMuZmlsdGVyQnkhXSA9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdpJykudGVzdCh4W3RoaXMuZmlsdGVyQnkhXSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT4gdHlwZW9mIHggPT0gJ3N0cmluZycgJiYgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRHJvcGRvd25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIGhhc1NpYmxpbmcoc2libGluZ3M6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10pOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpYmxpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5pbmRleE9mKHNpYmxpbmdzW2ldKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBleHBhbmRNZW51KFxuICAgIGl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyLFxuICAgIHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdXG4gICkge1xuICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaXQgb2Ygc2libGluZ3MuZmlsdGVyKCh4KSA9PiB4ICE9PSBpdGVtKSkge1xuICAgICAgICAgIGlmIChpdC5leHBhbmRlZCkge1xuICAgICAgICAgICAgaXQuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0LmxvYWRUaW1lcyAmJiBpdC5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGl0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcbiAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IHNpYmxpbmdDaGVjayA9IHRoaXMuaGFzU2libGluZyhzaWJsaW5ncyk7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwICYmIHNpYmxpbmdDaGVjayAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHNMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnNwbGljZShcbiAgICAgICAgICAgICAgc2libGluZ0NoZWNrLFxuICAgICAgICAgICAgICBjb250ZXh0c0xlbmd0aCAtIHNpYmxpbmdDaGVja1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnB1c2goaXRlbSk7XG4gICAgICAgICAgaWYgKHNpYmxpbmdDaGVjayA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3RvcnkucHVzaCh0aGlzLnNlYXJjaENvbnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlYXJjaENvbnRleHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCAmJiBpdGVtLmxvYWRNb3JlICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBpdGVtLmxvYWRNb3JlKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICBpdGVtLmNvcHkgPSBjbG9uZURlZXAoaXRlbS5pdGVtcyk7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgY29uc3QgY29udGV4dHNMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMuc3BsaWNlKGluZGV4LCBjb250ZXh0c0xlbmd0aCAtIGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgaXRlbS5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID1cbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5W3RoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSGlzdG9yeS5zcGxpY2UodGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCAtIDEsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlTWVudUl0ZW1zKGl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyKSB7XG4gICAgaWYgKGl0ZW0ubG9hZE1vcmUgJiYgaXRlbS5sb2FkVGltZXMgJiYgaXRlbS5pdGVtcykge1xuICAgICAgY29uc3Qgc2VhcmNoQ29udGV4dCA9IHRoaXMuc2VhcmNoQ29udGV4dC50cmltKCk7XG4gICAgICBpdGVtLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB2YXIgcmVzdWx0ID1cbiAgICAgICAgc2VhcmNoQ29udGV4dC5sZW5ndGggPiAwICYmIGl0ZW0uc2VhcmNoXG4gICAgICAgICAgPyBhd2FpdCBpdGVtLnNlYXJjaChzZWFyY2hDb250ZXh0LCBpdGVtLmxvYWRUaW1lcylcbiAgICAgICAgICA6IGF3YWl0IGl0ZW0ubG9hZE1vcmUoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3VsdCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIXRoaXMuc2VhcmNoKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgIHRoaXMubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcCh0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvRXhwYW5kYWJsZShpdGVtczogRHJvcGRvd25NZW51SXRlbVtdKTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSB7XG4gICAgY29uc3Qgd3JhcHBlcjogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyID0ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIGxvYWRUaW1lczogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBsb2FkVGltZXNDb3B5OiBpdGVtLml0ZW1zID8gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBpdGVtLml0ZW1zID8gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKGl0ZW0uaXRlbXMpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb3B5OiBpdGVtLml0ZW1zID8gY2xvbmVEZWVwKHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSkgOiBbXSxcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLnB1c2goY29udmVydGVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xuICB9XG5cbiAgb25TZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZShbXSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBbXSB9KTtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKG9wdGlvbik7XG4gICAgICAgIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygb3B0aW9uLml0ZW1zKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShpdGVtKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKGl0ZW0pKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBudWxsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlbGVjdCh2YWx1ZTogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmdldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5nZXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgfSk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChleGlzdHMgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMsXG4gICAgICAgICAgdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoZXhpc3RzLCAxKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICB9XG5cbiAgY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaXNFcXVhbCh0aGlzLnNlbGVjdGVkT3B0aW9uc1tpXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBvYmogPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IG9iajtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLmdyb3VwICYmICF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIChvYmogJiYgb2JqW3RoaXMuc2VsZWN0S2V5XSkgfHwgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmopO1xuICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5nZXRWYWx1ZShvcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9wdGlvbilcbiAgICAgICAgICAgICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb24gfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICBpZiAodGhpcy5hc3luY0xhYmVsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmopO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIChvYmogJiYgb2JqW3RoaXMuc2VsZWN0S2V5XSkgfHwgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmopXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5nZXRPcHRpb25MYWJlbChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBvYmo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgLy8gICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmopXG4gICAgICAvLyAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmopO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBpZiAoIXRoaXMuZ3JvdXAgJiYgIXRoaXMubGF6eUxvYWQpIHtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0W3RoaXMuc2VsZWN0S2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICAgICAgICAgICAgPyBhd2FpdCB0aGlzLmFzeW5jTGFiZWwob2JqZWN0KVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbilcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBvYmo7XG4gICAgICBmb3IgKGxldCBvYmplY3Qgb2Ygb2JqKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaChcbiAgICAgICAgICB0aGlzLmFzeW5jTGFiZWxcbiAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iamVjdClcbiAgICAgICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmplY3QpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwXG4gICAgICA/IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApXG4gICAgICA6IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+IHhbdGhpcy5vcHRpb25WYWx1ZSFdICYmIHhbdGhpcy5vcHRpb25WYWx1ZSFdID09IHZhbHVlXG4gICAgICAgICk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB2YWx1ZS52YWx1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25JdGVtQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgZ2V0VmFsdWUoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZSA6IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW1bdGhpcy5vcHRpb25WYWx1ZV07XG4gIH1cbiAgZ2V0T3B0aW9uTGFiZWwoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25MYWJlbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLm9wdGlvbkxhYmVsXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtKSlcbiAgICApO1xuICB9XG5cbiAgLy8gVHlwZSBndWFyZCBmdW5jdGlvbiB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBEcm9wZG93bk1lbnVJdGVtXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ2V4cGFuZGVkJyBpbiBpdGVtO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCAmJlxuICAgICAgdGhpcy5kcm9wZG93bkV4cGFuc2lvbiAmJlxuICAgICAgIXRoaXMuZHJvcGRvd25FeHBhbnNpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI2Ryb3Bkb3duQ29udGFpbmVyIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiBjbGFzcz1cImRyb3AtZG93blwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwieydyaWdodC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3JpZ2h0JywgJ2xlZnQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdsZWZ0JywgJ3RvcC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3RvcCd9XCJcbiAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGRpdiAoY2xpY2spPVwib25Ecm9wZG93bkNsaWNrKCRldmVudClcIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiIFtjbGFzcy5mb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7J25nLWludmFsaWQnOiBpc0ludmFsaWQsICdkaXNhYmxlZCc6IGRpc2FibGVkfVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIHRhYmluZGV4PVwiMFwiXG4gICAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dCB2ZXJiZW4taW5wdXQgZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1tYWluLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9uKSB8fCAoc2VsZWN0ZWRJdGVtVGVtcGxhdGUgJiYgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApOyBlbHNlIGRlZmF1bHRJdGVtXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwiIXRoaXMuc2VsZWN0ZWRPcHRpb25cIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9uXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7dGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09IDBcIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDx2ZXJiZW4tdG9vbHRpcCBjdXN0b21DbGFzcz1cImN1c3RvbS10b29sdGlwLXdpZHRoXCIgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzQxNTVcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwQ29udGVudF09XCJtdWx0aXNlbGVjdFRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cIml0ZW0tbGFiZWwgZHJvcGRvd24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3byBub3JtYWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92ZXJiZW4tdG9vbHRpcD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlzZWxlY3RUb29sdGlwPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWZ1bGwtdmlld1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28tdG9vbHRpcCBjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4wMDA2NSA5LjMzMzMzQzcuMzAxODQgOS4zMzMzMyA5LjE2NzMyIDcuNDY3ODUgOS4xNjczMiA1LjE2NjY3QzkuMTY3MzIgMi44NjU0OCA3LjMwMTg0IDEgNS4wMDA2NSAxQzIuNjk5NDYgMSAwLjgzMzk4NCAyLjg2NTQ4IDAuODMzOTg0IDUuMTY2NjdDMC44MzM5ODQgNy40Njc4NSAyLjY5OTQ2IDkuMzMzMzMgNS4wMDA2NSA5LjMzMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAtbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tpICE9PSBzZWxlY3RlZE9wdGlvbkxhYmVscy5sZW5ndGggLSAxPyBpdGVtICsgJywgJzppdGVtfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgIW11bHRpc2VsZWN0KSB8fCAoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDAgJiYgbXVsdGlzZWxlY3QpXCJcbiAgICAgICAgKGNsaWNrKT1cInRoaXMuY2xlYXJTZWxlY3Rpb24oJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wLWRvd24taWNvbi1pdGVtIGRyb3AtZG93bi1jbGVhci1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNsb3NlLW5vLWNpcmNsZVwiIHN0cm9rZT1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTNcIiBbaGVpZ2h0XT1cIjEzXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDAuODQzNzVMOC4xNTYyNSA4LjE1NjI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDguMTU2MjVMOC4xNTYyNSAwLjg0Mzc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tZXhwYW5kLWJ1dHRvblwiPlxuICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiY2hldnJvbi1kb3duXCIgZmlsbD1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjhcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwhLS0gPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiN1wiIHZpZXdCb3g9XCIwIDAgMTIgN1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTYuMDA1MDcgNC44ODAyN0M2LjIwMjA1IDQuNjI3NzUgNi4zMDY4MyA0LjQ2MjIgNi40NDA5NSA0LjMyNzA0QzcuNzQzMzQgMy4wMTczMSA5LjA1MjAyIDEuNzEzODcgMTAuMzU3NiAwLjQwNjI0MkMxMC41NzEzIDAuMTkyNDk1IDEwLjc4ODIgMC4wMDkxMzM2NyAxMS4xMTkzIDAuMDEwMTgxNEMxMS40NjkyIDAuMDExMjI5MiAxMS43MjI4IDAuMTU3OTIgMTEuODg4NCAwLjQ1NjUzN0MxMi4wNTcgMC43NjAzOTQgMTIuMDMwOSAxLjA2MTExIDExLjgzNDkgMS4zNDI5NkMxMS43NjU4IDEuNDQyNSAxMS42NzY3IDEuNTI3MzcgMTEuNTkwOCAxLjYxNDMzQzkuOTg4NzMgMy4yMTYzOSA4LjM3MzA1IDQuODA0ODMgNi43OTMgNi40Mjc4NEM2LjI5MTExIDYuOTQzMzUgNS42ODc1OSA2LjkyMzQ0IDUuMjEzOTkgNi40MzgzMkMzLjYzMTg0IDQuODE3NCAyLjAxODI2IDMuMjI2ODcgMC40MTQxMDkgMS42MjY5MUMwLjExNjUzOSAxLjMyOTM0IC0wLjExNjA2NyAxLjAxOTIgMC4wNjIwNTYxIDAuNTY1NTA3QzAuMjcxNjEyIDAuMDMxMTM5IDAuODgzNTE5IC0wLjE2Nzk0MSAxLjM1NTAyIDAuMTU3OTE5QzEuNDk2NDcgMC4yNTUzNjMgMS42MTU5MiAwLjM4NzM4NSAxLjczOTU1IDAuNTA5OTc1QzMuMDIyMDQgMS43OTAzNiA0LjMwNDUyIDMuMDcwNzUgNS41ODM4NiA0LjM1NTMzQzUuNzA2NDUgNC40Nzc5MiA1LjgwMjg0IDQuNjI2NzEgNi4wMDYxMSA0Ljg4MTMyTDYuMDA1MDcgNC44ODAyN1pcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5pc0ludmFsaWQgJiYgdGhpcy5pbnZhbGlkTWVzc2FnZVwiIGNsYXNzPVwidmVyYmVuLWVycm9yLW1lc3NhZ2UgZXJyb3ItbWVzc2FnZVwiPnt7aW52YWxpZE1lc3NhZ2V9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJkcm9wZG93bkNvbnRhaW5lci5vZmZzZXRXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25dPVwiZmFsc2VcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiW1xuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgfSxcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgIH1cbiAgXVwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0V4cGFuZGVkXCIgKGRldGFjaCk9XCJpc0V4cGFuZGVkID0gZmFsc2VcIj5cbiAgICA8ZGl2ICNkcm9wZG93bkV4cGFuc2lvbiBjbGFzcz1cImRyb3AtZG93bi1tZW51LWl0ZW0td3JhcHBlclwiPlxuICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgY2hpcCBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBmbGV4XCI+XG4gICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpXCIgaWNvbj1cImNsb3NlLWNpcmNsZS1mdWxsXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4yNSAzLjkxNzk3TDMuNzUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgbm9ybWFsXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImFsbG93U2VsZWN0QWxsIHx8IGZpbHRlclwiIGNsYXNzPVwiYWN0aW9ucy1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgPGlucHV0ICpuZ0lmPVwiYWxsb3dTZWxlY3RBbGxcIiAoY2xpY2spPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRBbGxcIlxuICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtYWxsLWNhcHRpb25cIiAqbmdJZj1cImFsbG93U2VsZWN0QWxsICYmICFmaWx0ZXJcIj5TZWxlY3QgQWxsPC9zcGFuPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyXCIgW25nQ2xhc3NdPVwieydmb2N1c2VkJzogaXNJbnB1dEZvY3VzZWR9XCIgdGFiaW5kZXg9XCIwXCIgKGZvY3VzKT1cIm9uU2VhcmNoRm9jdXMoKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25TZWFyY2hCbHVyKClcIiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uIGZsZXhcIj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJzZWFyY2hcIiBzdHJva2U9XCIjNjQ3NDhiXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI5XCIgcj1cIjhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHkxPVwiMTRcIiB4Mj1cIjE5XCIgeTI9XCIxOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48L2xpbmU+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXVwiIGNsYXNzPVwic2VhcmNoLWNvbnRleHRcIj5cbiAgICAgICAgICAgIHt7dGhpcy5nZXRPcHRpb25MYWJlbCh0aGlzLnNlbGVjdGVkQ29udGV4dHNbdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCAtIDFdKX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaENvbnRleHRcIiAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigpXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hvcml6b250YWxMaW5lXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZS1zZWN0aW9uXCI+XG4gICAgICAgIDxociBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJob3Jpem9udGFsTGluZUNvbG9yXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtXCI+XG4gICAgICAgIDxkcm9wLWRvd24taXRlbSBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtncm91cFRlbXBsYXRlXT1cImdyb3VwVGVtcGxhdGVcIiBbYWN0aXZlSXRlbV09XCJzZWxlY3RlZE9wdGlvblwiXG4gICAgICAgICAgW2FjdGl2ZUl0ZW1zXT1cInNlbGVjdGVkT3B0aW9uc1wiIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiIFtvcHRpb25WYWx1ZV09XCJvcHRpb25WYWx1ZVwiXG4gICAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCIgW29wdGlvblN1YkxhYmVsXT1cIm9wdGlvblN1YkxhYmVsXCIgW3NlbGVjdEtleV09XCJzZWxlY3RLZXlcIlxuICAgICAgICAgIFtsb2FkTW9yZUNhcHRpb25dPVwibG9hZE1vcmVDYXB0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtncm91cF09XCJncm91cFwiIFtvbkV4cGFuZF09XCJleHBhbmRNZW51LmJpbmQodGhpcylcIlxuICAgICAgICAgIFtvbkxvYWRNb3JlXT1cImxvYWRNb3JlTWVudUl0ZW1zLmJpbmQodGhpcylcIiBbb25TZWxlY3RdPVwib25TZWxlY3QuYmluZCh0aGlzKVwiPjwvZHJvcC1kb3duLWl0ZW0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsYXp5TG9hZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWUtbW9yZS1jb250YWluZXIgZmxleCBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWUtbW9yZS1jYXB0aW9uXCIgKGNsaWNrKT1cImxvYWRNb3JlKClcIj57e2xvYWRNb3JlQ2FwdGlvbn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
852
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJ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LFlBQVk7dUJBQUMsT0FBTztnQkFJQyxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBdWxCcEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERyb3Bkb3duTWVudUl0ZW0gfSBmcm9tICcuL0Ryb3Bkb3duTWVudUl0ZW0nO1xuaW1wb3J0IHsgRHJvcGRvd25Mb2FkRXZlbnQgfSBmcm9tICcuL0Ryb3Bkb3duTG9hZEV2ZW50JztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vVGVtcGxhdGVEaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyb3Bkb3duQ2hhbmdlRXZlbnQgfSBmcm9tICcuL0Ryb3Bkb3duQ2hhbmdlRXZlbnQnO1xuaW1wb3J0IHsgRHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kcm9wLWRvd24taXRlbS9kcm9wLWRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNFcXVhbCwgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBTdmdNb2R1bGUgfSBmcm9tICcuLi9zdmcvc3ZnLm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25NZW51SXRlbVdyYXBwZXIgZXh0ZW5kcyBEcm9wZG93bk1lbnVJdGVtIHtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIGl0ZW1zPzogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBjb3B5OiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdO1xuICBsb2FkVGltZXM/OiBEcm9wZG93bkxvYWRFdmVudDtcbiAgbG9hZFRpbWVzQ29weT86IERyb3Bkb3duTG9hZEV2ZW50O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJiZW4tZHJvcC1kb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wRG93bkl0ZW1Db21wb25lbnQsXG4gICAgU2hhcmVkTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcC1kb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcERvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0XG57XG4gIC8vIElOVEVSTkFMXG4gIHByaXZhdGUgX29wdGlvbnM6IGFueVtdID0gW107IC8vIEludGVybmFsIHZhcmlhYmxlIGZvciBvcHRpb25zXG5cbiAgcHJpdmF0ZSBpZ25vcmVTZXQgPSBmYWxzZTtcbiAgLy8gSU5QVVRTXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duTWVudUl0ZW1XcmFwcGVyQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUodmFsdWUpOyAvLyBTZXQgdGhlIGludGVybmFsIG9wdGlvbnMgdmFyaWFibGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaWdub3JlU2V0KSB7XG4gICAgICB0aGlzLmZpcnN0U2VhcmNoID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWdub3JlU2V0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zOyAvLyBSZXR1cm4gdGhlIGludGVybmFsIG9wdGlvbnMgdmFyaWFibGVcbiAgfVxuXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnMTJyZW0nO1xuICBASW5wdXQoKSBzaG93SG9yaXpvbnRhbExpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBob3Jpem9udGFsTGluZUNvbG9yOiBzdHJpbmcgPSAncmdiYSgyNTUsIDIzMCwgMTI5LCAxKSc7XG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25TdWJMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9uVmFsdWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSBpbnZhbGlkTWVzc2FnZT86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JQb3NpdGlvbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxvYWRNb3JlQ2FwdGlvbjogc3RyaW5nID0gJ1NlZSBtb3JlJztcbiAgQElucHV0KCkgZGlzcGxheTogJ2RlZmF1bHQnIHwgJ2NoaXAnID0gJ2NoaXAnO1xuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGF6eUxvYWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGdyb3VwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdm9pZER1cGxpY2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlckJ5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBkZWJvdW5jZVRpbWU6IG51bWJlciA9IDUwMDtcbiAgQElucHV0KCkgbWluQ2hhcjogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZD86IChjb250ZXh0OiBEcm9wZG93bkxvYWRFdmVudCkgPT4gUHJvbWlzZTxhbnlbXT47XG4gIEBJbnB1dCgpIGFzeW5jTGFiZWw/OiAoY29udGV4dDogYW55KSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBASW5wdXQoKSBzZWFyY2g/OiAoZGF0YTogYW55LCBjb250ZXh0OiBEcm9wZG93bkxvYWRFdmVudCkgPT4gUHJvbWlzZTxhbnlbXT47XG5cbiAgLy8gT1VUUFVUU1xuICBAT3V0cHV0KCkgb3B0aW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RHJvcGRvd25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DbGVhcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBvbkl0ZW1DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBpc0ludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlyc3RTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL1RFTVBMQVRJTkdcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Db250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkcm9wZG93bkNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duRXhwYW5zaW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGRyb3Bkb3duRXhwYW5zaW9uITogRWxlbWVudFJlZjtcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKSBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcblxuICBzZWxlY3RlZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDsgLy8gQWxsb3cgbnVsbCBmb3IgY3VzdG9tIGl0ZW0gdGVtcGxhdGVcbiAgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIC8vVkFSSUFCTEVTXG4gIGlzRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZFRpbWVzOiBEcm9wZG93bkxvYWRFdmVudCA9IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpO1xuICBpbml0aWFsSW5jcmVtZW50OiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkT3B0aW9uOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRPcHRpb25MYWJlbDogYW55O1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsczogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIG9wdGlvbnNDb3B5OiBhbnlbXSA9IFtdO1xuICBsb2FkVGltZXNDb3B5OiBEcm9wZG93bkxvYWRFdmVudCA9IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpO1xuICBzZWxlY3RlZENvbnRleHRzOiBhbnlbXSA9IFtdO1xuICBzZWFyY2hIaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuICBzZWFyY2hUZXJtJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgc2VhcmNoQ29udGV4dDogc3RyaW5nID0gJyc7XG4gIGFsbG93U2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkQWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpczsgLy8gQXNzaWduIHRoaXMgY29tcG9uZW50IGFzIHRoZSB2YWx1ZSBhY2Nlc3NvclxuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmICghdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHtcbiAgICAgICAgICB0aGlzLmFsbG93U2VsZWN0QWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgaXNBbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQpIHtcbiAgICAgICAgICAgICAgaXNBbGxvd2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFsbG93U2VsZWN0QWxsID0gaXNBbGxvd2VkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLl9vcHRpb25zKTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSkgLy8gQWRqdXN0IGRlYm91bmNlIHRpbWUgaGVyZSAoaW4gbXMpXG4gICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHNlYXJjaFRlcm0pID0+IHtcbiAgICAgICAgICBpZiAoc2VhcmNoVGVybS5sZW5ndGggPCB0aGlzLm1pbkNoYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RlZENvbnRleHRzW1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgXSBhcyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcjtcbiAgICAgICAgICAgIGlmIChpdGVtLnNlYXJjaCAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGl0ZW0uc2VhcmNoKHNlYXJjaFRlcm0sIGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICAgICAgICAgIGl0ZW0uaXRlbXMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoICYmIHRoaXMubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZWFyY2goc2VhcmNoVGVybSwgdGhpcy5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pZ25vcmVTZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zQ29weSgpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5zZWxlY3RlZENvbnRleHRzW1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcjtcbiAgICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKS5sZW5ndGggPT0gMCkge1xuICAgICAgICBpdGVtLml0ZW1zID0gY2xvbmVEZWVwKGl0ZW0uY29weSk7XG4gICAgICAgIGl0ZW0ubG9hZFRpbWVzID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzQ29weSk7XG4gICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoc2VhcmNoVGVybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXRlbS5maWx0ZXJCeSkge1xuICAgICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gaXRlbS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHgudmFsdWVbaXRlbS5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWVbaXRlbS5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gaXRlbS5jb3B5LmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZSA9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdpJykudGVzdCh4LnZhbHVlKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZpcnN0U2VhcmNoID09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBjbG9uZURlZXAodGhpcy5fb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZmlyc3RTZWFyY2ggPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBjbG9uZURlZXAodGhpcy5vcHRpb25zQ29weSk7XG4gICAgICAgIHRoaXMubG9hZFRpbWVzID0gY2xvbmVEZWVwKHRoaXMubG9hZFRpbWVzQ29weSk7XG4gICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmZpcnN0U2VhcmNoID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4W3RoaXMuZmlsdGVyQnkhXSA9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgICBuZXcgUmVnRXhwKHNlYXJjaFRlcm0sICdpJykudGVzdCh4W3RoaXMuZmlsdGVyQnkhXSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT4gdHlwZW9mIHggPT0gJ3N0cmluZycgJiYgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRHJvcGRvd25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIGhhc1NpYmxpbmcoc2libGluZ3M6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10pOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpYmxpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5pbmRleE9mKHNpYmxpbmdzW2ldKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBleHBhbmRNZW51KFxuICAgIGl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyLFxuICAgIHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdXG4gICkge1xuICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaXQgb2Ygc2libGluZ3MuZmlsdGVyKCh4KSA9PiB4ICE9PSBpdGVtKSkge1xuICAgICAgICAgIGlmIChpdC5leHBhbmRlZCkge1xuICAgICAgICAgICAgaXQuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGl0LmxvYWRUaW1lcyAmJiBpdC5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGl0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcbiAgICAgIGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IHNpYmxpbmdDaGVjayA9IHRoaXMuaGFzU2libGluZyhzaWJsaW5ncyk7XG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwICYmIHNpYmxpbmdDaGVjayAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHNMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnNwbGljZShcbiAgICAgICAgICAgICAgc2libGluZ0NoZWNrLFxuICAgICAgICAgICAgICBjb250ZXh0c0xlbmd0aCAtIHNpYmxpbmdDaGVja1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnB1c2goaXRlbSk7XG4gICAgICAgICAgaWYgKHNpYmxpbmdDaGVjayA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3RvcnkucHVzaCh0aGlzLnNlYXJjaENvbnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlYXJjaENvbnRleHQgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCAmJiBpdGVtLmxvYWRNb3JlICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBpdGVtLmxvYWRNb3JlKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLml0ZW1zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHJlc3VsdCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICBpdGVtLmNvcHkgPSBjbG9uZURlZXAoaXRlbS5pdGVtcyk7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgY29uc3QgY29udGV4dHNMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29udGV4dHMuc3BsaWNlKGluZGV4LCBjb250ZXh0c0xlbmd0aCAtIGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgaXRlbS5sb2FkVGltZXMucmVzZXQoKTtcbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID1cbiAgICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5W3RoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSGlzdG9yeS5zcGxpY2UodGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCAtIDEsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlTWVudUl0ZW1zKGl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyKSB7XG4gICAgaWYgKGl0ZW0ubG9hZE1vcmUgJiYgaXRlbS5sb2FkVGltZXMgJiYgaXRlbS5pdGVtcykge1xuICAgICAgY29uc3Qgc2VhcmNoQ29udGV4dCA9IHRoaXMuc2VhcmNoQ29udGV4dC50cmltKCk7XG4gICAgICBpdGVtLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB2YXIgcmVzdWx0ID1cbiAgICAgICAgc2VhcmNoQ29udGV4dC5sZW5ndGggPiAwICYmIGl0ZW0uc2VhcmNoXG4gICAgICAgICAgPyBhd2FpdCBpdGVtLnNlYXJjaChzZWFyY2hDb250ZXh0LCBpdGVtLmxvYWRUaW1lcylcbiAgICAgICAgICA6IGF3YWl0IGl0ZW0ubG9hZE1vcmUoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3VsdCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIXRoaXMuc2VhcmNoKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgIHRoaXMubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcCh0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvRXhwYW5kYWJsZShpdGVtczogRHJvcGRvd25NZW51SXRlbVtdKTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSB7XG4gICAgY29uc3Qgd3JhcHBlcjogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyID0ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIGxvYWRUaW1lczogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBsb2FkVGltZXNDb3B5OiBpdGVtLml0ZW1zID8gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBpdGVtLml0ZW1zID8gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKGl0ZW0uaXRlbXMpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb3B5OiBpdGVtLml0ZW1zID8gY2xvbmVEZWVwKHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSkgOiBbXSxcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLnB1c2goY29udmVydGVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xuICB9XG5cbiAgb25TZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZShbXSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgZGF0YVNldDogdGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShvcHRpb24pO1xuICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG9wdGlvbi5pdGVtcykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja011bHRpc2VsZWN0VmFsdWUoaXRlbSk7XG4gICAgICAgICAgaWYgKGluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShpdGVtKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChpdGVtKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgIGRhdGFTZXQ6IHRoaXMub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICBkYXRhU2V0OiB0aGlzLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKFtdKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBkYXRhU2V0OiB0aGlzLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgIHRoaXMub25DbGVhci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uU2VsZWN0KHZhbHVlOiBhbnksIGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0VmFsdWUodmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSk7XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLmdldFZhbHVlKHZhbHVlKSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlKHZhbHVlKSxcbiAgICAgICAgZGF0YVNldDogdGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChleGlzdHMgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMsXG4gICAgICAgICAgdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgZGF0YVNldDogdGhpcy5vcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICAgICAgbmV3U2VsZWN0ZWRPcHRpb25zLnNwbGljZShleGlzdHMsIDEpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICAgICAgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgZGF0YVNldDogdGhpcy5vcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuICAgIG5ld1NlbGVjdGVkT3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHNdO1xuICAgIG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzO1xuICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgIGRhdGFTZXQ6IHRoaXMub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrTXVsdGlzZWxlY3RWYWx1ZSh2YWx1ZTogYW55KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGlzRXF1YWwodGhpcy5zZWxlY3RlZE9wdGlvbnNbaV0sIHRoaXMuZ2V0VmFsdWUodmFsdWUpKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyB3cml0ZVZhbHVlKG9iajogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb2JqO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBvYmo7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5ncm91cCAmJiAhdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZXF1YWxpdHlDaGVjayA9IHRoaXMuc2VsZWN0S2V5XG4gICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZShvcHRpb24pW3RoaXMuc2VsZWN0S2V5XSxcbiAgICAgICAgICAgICAgICAob2JqICYmIG9ialt0aGlzLnNlbGVjdEtleV0pIHx8IG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqKTtcbiAgICAgICAgICBpZiAoZXF1YWxpdHlDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0VmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICAgICAgICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvcHRpb24pXG4gICAgICAgICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb24sXG4gICAgICAgICAgZGF0YVNldDogdGhpcy5vcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9iajtcbiAgICAgIGlmICh0aGlzLmFzeW5jTGFiZWwpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iaik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgPyBpc0VxdWFsKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VmFsdWUob3B0aW9uKVt0aGlzLnNlbGVjdEtleV0sXG4gICAgICAgICAgICAgICAgKG9iaiAmJiBvYmpbdGhpcy5zZWxlY3RLZXldKSB8fCBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogaXNFcXVhbCh0aGlzLmdldFZhbHVlKG9wdGlvbiksIG9iailcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSB0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IG9iajtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5hc3luY0xhYmVsXG4gICAgICAvLyAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iailcbiAgICAgIC8vICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9iaik7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb24sIGRhdGFTZXQ6IHRoaXMub3B0aW9ucyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgaWYgKCF0aGlzLmdyb3VwICYmICF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICBmb3IgKGxldCBvYmplY3Qgb2Ygb2JqKSB7XG4gICAgICAgICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgICAgPyBpc0VxdWFsKFxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZShvcHRpb24pW3RoaXMuc2VsZWN0S2V5XSxcbiAgICAgICAgICAgICAgICAgIG9iamVjdFt0aGlzLnNlbGVjdEtleV1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogaXNFcXVhbCh0aGlzLmdldFZhbHVlKG9wdGlvbiksIG9iamVjdCk7XG4gICAgICAgICAgICBpZiAoZXF1YWxpdHlDaGVjaykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmFzeW5jTGFiZWxcbiAgICAgICAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iamVjdClcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgICBkYXRhU2V0OiB0aGlzLm9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG9iajtcbiAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKFxuICAgICAgICAgIHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICAgICAgPyBhd2FpdCB0aGlzLmFzeW5jTGFiZWwob2JqZWN0KVxuICAgICAgICAgICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9iamVjdClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIGRhdGFTZXQ6IHRoaXMub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwXG4gICAgICA/IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApXG4gICAgICA6IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+IHhbdGhpcy5vcHRpb25WYWx1ZSFdICYmIHhbdGhpcy5vcHRpb25WYWx1ZSFdID09IHZhbHVlXG4gICAgICAgICk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB2YWx1ZS52YWx1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25JdGVtQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgZ2V0VmFsdWUoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZSA6IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW1bdGhpcy5vcHRpb25WYWx1ZV07XG4gIH1cbiAgZ2V0T3B0aW9uTGFiZWwoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25MYWJlbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLm9wdGlvbkxhYmVsXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtKSlcbiAgICApO1xuICB9XG5cbiAgLy8gVHlwZSBndWFyZCBmdW5jdGlvbiB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBEcm9wZG93bk1lbnVJdGVtXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ2V4cGFuZGVkJyBpbiBpdGVtO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCAmJlxuICAgICAgdGhpcy5kcm9wZG93bkV4cGFuc2lvbiAmJlxuICAgICAgIXRoaXMuZHJvcGRvd25FeHBhbnNpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI2Ryb3Bkb3duQ29udGFpbmVyIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiBjbGFzcz1cImRyb3AtZG93blwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwieydyaWdodC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3JpZ2h0JywgJ2xlZnQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdsZWZ0JywgJ3RvcC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3RvcCd9XCJcbiAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGRpdiAoY2xpY2spPVwib25Ecm9wZG93bkNsaWNrKCRldmVudClcIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiIFtjbGFzcy5mb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7J25nLWludmFsaWQnOiBpc0ludmFsaWQsICdkaXNhYmxlZCc6IGRpc2FibGVkfVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIHRhYmluZGV4PVwiMFwiXG4gICAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dCB2ZXJiZW4taW5wdXQgZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1tYWluLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9uKSB8fCAoc2VsZWN0ZWRJdGVtVGVtcGxhdGUgJiYgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApOyBlbHNlIGRlZmF1bHRJdGVtXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwiIXRoaXMuc2VsZWN0ZWRPcHRpb25cIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9uXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7dGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09IDBcIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDx2ZXJiZW4tdG9vbHRpcCBjdXN0b21DbGFzcz1cImN1c3RvbS10b29sdGlwLXdpZHRoXCIgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzQxNTVcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwQ29udGVudF09XCJtdWx0aXNlbGVjdFRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cIml0ZW0tbGFiZWwgZHJvcGRvd24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3byBub3JtYWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92ZXJiZW4tdG9vbHRpcD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlzZWxlY3RUb29sdGlwPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWZ1bGwtdmlld1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28tdG9vbHRpcCBjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4wMDA2NSA5LjMzMzMzQzcuMzAxODQgOS4zMzMzMyA5LjE2NzMyIDcuNDY3ODUgOS4xNjczMiA1LjE2NjY3QzkuMTY3MzIgMi44NjU0OCA3LjMwMTg0IDEgNS4wMDA2NSAxQzIuNjk5NDYgMSAwLjgzMzk4NCAyLjg2NTQ4IDAuODMzOTg0IDUuMTY2NjdDMC44MzM5ODQgNy40Njc4NSAyLjY5OTQ2IDkuMzMzMzMgNS4wMDA2NSA5LjMzMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAtbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tpICE9PSBzZWxlY3RlZE9wdGlvbkxhYmVscy5sZW5ndGggLSAxPyBpdGVtICsgJywgJzppdGVtfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgIW11bHRpc2VsZWN0KSB8fCAoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDAgJiYgbXVsdGlzZWxlY3QpXCJcbiAgICAgICAgKGNsaWNrKT1cInRoaXMuY2xlYXJTZWxlY3Rpb24oJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wLWRvd24taWNvbi1pdGVtIGRyb3AtZG93bi1jbGVhci1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNsb3NlLW5vLWNpcmNsZVwiIHN0cm9rZT1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTNcIiBbaGVpZ2h0XT1cIjEzXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDAuODQzNzVMOC4xNTYyNSA4LjE1NjI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDguMTU2MjVMOC4xNTYyNSAwLjg0Mzc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tZXhwYW5kLWJ1dHRvblwiPlxuICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiY2hldnJvbi1kb3duXCIgZmlsbD1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjhcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwhLS0gPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiN1wiIHZpZXdCb3g9XCIwIDAgMTIgN1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTYuMDA1MDcgNC44ODAyN0M2LjIwMjA1IDQuNjI3NzUgNi4zMDY4MyA0LjQ2MjIgNi40NDA5NSA0LjMyNzA0QzcuNzQzMzQgMy4wMTczMSA5LjA1MjAyIDEuNzEzODcgMTAuMzU3NiAwLjQwNjI0MkMxMC41NzEzIDAuMTkyNDk1IDEwLjc4ODIgMC4wMDkxMzM2NyAxMS4xMTkzIDAuMDEwMTgxNEMxMS40NjkyIDAuMDExMjI5MiAxMS43MjI4IDAuMTU3OTIgMTEuODg4NCAwLjQ1NjUzN0MxMi4wNTcgMC43NjAzOTQgMTIuMDMwOSAxLjA2MTExIDExLjgzNDkgMS4zNDI5NkMxMS43NjU4IDEuNDQyNSAxMS42NzY3IDEuNTI3MzcgMTEuNTkwOCAxLjYxNDMzQzkuOTg4NzMgMy4yMTYzOSA4LjM3MzA1IDQuODA0ODMgNi43OTMgNi40Mjc4NEM2LjI5MTExIDYuOTQzMzUgNS42ODc1OSA2LjkyMzQ0IDUuMjEzOTkgNi40MzgzMkMzLjYzMTg0IDQuODE3NCAyLjAxODI2IDMuMjI2ODcgMC40MTQxMDkgMS42MjY5MUMwLjExNjUzOSAxLjMyOTM0IC0wLjExNjA2NyAxLjAxOTIgMC4wNjIwNTYxIDAuNTY1NTA3QzAuMjcxNjEyIDAuMDMxMTM5IDAuODgzNTE5IC0wLjE2Nzk0MSAxLjM1NTAyIDAuMTU3OTE5QzEuNDk2NDcgMC4yNTUzNjMgMS42MTU5MiAwLjM4NzM4NSAxLjczOTU1IDAuNTA5OTc1QzMuMDIyMDQgMS43OTAzNiA0LjMwNDUyIDMuMDcwNzUgNS41ODM4NiA0LjM1NTMzQzUuNzA2NDUgNC40Nzc5MiA1LjgwMjg0IDQuNjI2NzEgNi4wMDYxMSA0Ljg4MTMyTDYuMDA1MDcgNC44ODAyN1pcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5pc0ludmFsaWQgJiYgdGhpcy5pbnZhbGlkTWVzc2FnZVwiIGNsYXNzPVwidmVyYmVuLWVycm9yLW1lc3NhZ2UgZXJyb3ItbWVzc2FnZVwiPnt7aW52YWxpZE1lc3NhZ2V9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJkcm9wZG93bkNvbnRhaW5lci5vZmZzZXRXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25dPVwiZmFsc2VcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiW1xuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgfSxcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgIH1cbiAgXVwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0V4cGFuZGVkXCIgKGRldGFjaCk9XCJpc0V4cGFuZGVkID0gZmFsc2VcIj5cbiAgICA8ZGl2ICNkcm9wZG93bkV4cGFuc2lvbiBjbGFzcz1cImRyb3AtZG93bi1tZW51LWl0ZW0td3JhcHBlclwiPlxuICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgY2hpcCBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBmbGV4XCI+XG4gICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpXCIgaWNvbj1cImNsb3NlLWNpcmNsZS1mdWxsXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4yNSAzLjkxNzk3TDMuNzUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgbm9ybWFsXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImFsbG93U2VsZWN0QWxsIHx8IGZpbHRlclwiIGNsYXNzPVwiYWN0aW9ucy1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgPGlucHV0ICpuZ0lmPVwiYWxsb3dTZWxlY3RBbGxcIiAoY2xpY2spPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRBbGxcIlxuICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtYWxsLWNhcHRpb25cIiAqbmdJZj1cImFsbG93U2VsZWN0QWxsICYmICFmaWx0ZXJcIj5TZWxlY3QgQWxsPC9zcGFuPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyXCIgW25nQ2xhc3NdPVwieydmb2N1c2VkJzogaXNJbnB1dEZvY3VzZWR9XCIgdGFiaW5kZXg9XCIwXCIgKGZvY3VzKT1cIm9uU2VhcmNoRm9jdXMoKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25TZWFyY2hCbHVyKClcIiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uIGZsZXhcIj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJzZWFyY2hcIiBzdHJva2U9XCIjNjQ3NDhiXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI5XCIgcj1cIjhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHkxPVwiMTRcIiB4Mj1cIjE5XCIgeTI9XCIxOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48L2xpbmU+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXVwiIGNsYXNzPVwic2VhcmNoLWNvbnRleHRcIj5cbiAgICAgICAgICAgIHt7dGhpcy5nZXRPcHRpb25MYWJlbCh0aGlzLnNlbGVjdGVkQ29udGV4dHNbdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCAtIDFdKX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaENvbnRleHRcIiAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigpXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hvcml6b250YWxMaW5lXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZS1zZWN0aW9uXCI+XG4gICAgICAgIDxociBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJob3Jpem9udGFsTGluZUNvbG9yXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtXCI+XG4gICAgICAgIDxkcm9wLWRvd24taXRlbSBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtncm91cFRlbXBsYXRlXT1cImdyb3VwVGVtcGxhdGVcIiBbYWN0aXZlSXRlbV09XCJzZWxlY3RlZE9wdGlvblwiXG4gICAgICAgICAgW2FjdGl2ZUl0ZW1zXT1cInNlbGVjdGVkT3B0aW9uc1wiIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiIFtvcHRpb25WYWx1ZV09XCJvcHRpb25WYWx1ZVwiXG4gICAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCIgW29wdGlvblN1YkxhYmVsXT1cIm9wdGlvblN1YkxhYmVsXCIgW3NlbGVjdEtleV09XCJzZWxlY3RLZXlcIlxuICAgICAgICAgIFtsb2FkTW9yZUNhcHRpb25dPVwibG9hZE1vcmVDYXB0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtncm91cF09XCJncm91cFwiIFtvbkV4cGFuZF09XCJleHBhbmRNZW51LmJpbmQodGhpcylcIlxuICAgICAgICAgIFtvbkxvYWRNb3JlXT1cImxvYWRNb3JlTWVudUl0ZW1zLmJpbmQodGhpcylcIiBbb25TZWxlY3RdPVwib25TZWxlY3QuYmluZCh0aGlzKVwiPjwvZHJvcC1kb3duLWl0ZW0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsYXp5TG9hZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWUtbW9yZS1jb250YWluZXIgZmxleCBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWUtbW9yZS1jYXB0aW9uXCIgKGNsaWNrKT1cImxvYWRNb3JlKClcIj57e2xvYWRNb3JlQ2FwdGlvbn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=