@eui/ecl 15.2.2-snapshot-1677676754363 → 15.2.2

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.
@@ -529,6 +529,9 @@ export class EclMultiselectComponent extends ECLBaseDirective {
529
529
  this.multiSelectInput.value = null;
530
530
  }
531
531
  this.selectedValues = [];
532
+ if (this.selectionCount) {
533
+ this.updateMultiselectCounter(0);
534
+ }
532
535
  }
533
536
  writeValues(values) {
534
537
  if (values) {
@@ -831,4 +834,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImpor
831
834
  type: HostListener,
832
835
  args: ['document:click', ['$event']]
833
836
  }] } });
834
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBRUosaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFFbkYsSUFBSyxRQVFKO0FBUkQsV0FBSyxRQUFRO0lBQ1gsZ0NBQW9CLENBQUE7SUFDcEIsb0NBQXdCLENBQUE7SUFDeEIsb0NBQXdCLENBQUE7SUFDeEIsc0NBQTBCLENBQUE7SUFDMUIsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtJQUNmLHVCQUFXLENBQUE7QUFDYixDQUFDLEVBUkksUUFBUSxLQUFSLFFBQVEsUUFRWjtBQU9ELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUErRHpELFlBQ2tDLFNBQW9CLEVBQzFDLEVBQWMsRUFDZCxnQkFBa0MsRUFDbEMsT0FBd0IsRUFDeEIsU0FBMkI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFMc0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUMxQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWhFZixjQUFTLEdBQW1CLEtBQUssQ0FBQztRQVFoRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU9yQyxZQUFPLEdBQVcsR0FBRyxDQUFDO1FBV3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFZbEIsdUJBQWtCLEdBQWtCLEVBQUUsQ0FBQztRQU12QyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUs5QixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFJcEQsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsMkJBQXNCLEdBQUcsaUNBQWlDLENBQUM7UUFDM0QsdUJBQWtCLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFDcEIsaUJBQVksR0FBRyxXQUFXLENBQUM7UUF5STNCLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUNyQyxDQUFDLENBQUM7UUFFTSxxQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsQ0FBQyxDQUFDO1FBcElFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUN2QztRQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBdEVELElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztTQUNwQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsSUFBYSxjQUFjLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0wsQ0FBQztJQUdELElBQ0ksUUFBUTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztTQUMxQzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztTQUNqQztJQUNMLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFvQixJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBZ0RyRixRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXhELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QztRQUVELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTO1FBRUwsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN6QztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRCxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBVztRQUN6QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBTztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBTztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFa0QsV0FBVyxDQUFDLEtBQW9CO1FBQy9FLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFHRCxPQUFPLENBQUMsRUFBYztRQUNsQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBVSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUgsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRTtZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUM3QyxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTywyQkFBMkI7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBUU8sd0JBQXdCLENBQUMsV0FBb0I7UUFFakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFcEQsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sY0FBYztRQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxNQUF5QjtRQUNsRCxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDaEMsQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3hELGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztJQUVPLHdCQUF3QjtRQUM1QixNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzVELE9BQU8scUJBQXFCLENBQUM7SUFDakMsQ0FBQztJQUVPLGdDQUFnQztRQUNwQyxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0Qsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzVELG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUN6RTtRQUNELG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1NBQ3RHO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFakYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDekM7UUFFRCxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RSxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFTyw0QkFBNEI7UUFDaEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzNELFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDbkQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNuQyxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQscUNBQXFDO0lBQzdCLDBCQUEwQjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUV4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRU8sd0JBQXdCLENBQUMsRUFBaUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsTUFBTSxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEQsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO1lBQ2YsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQ2IsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUNwRCxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUNqQzthQUFNO1lBQ0gsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNyRTtRQUNELElBQUksRUFBRSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdELGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNwRDtRQUVELGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdEUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQVksRUFBRSxFQUFVO1FBQ2hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN2RixhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWxELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFMUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDaEQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEVBQVUsRUFBRSxLQUFhO1FBQ2pELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsYUFBYSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDaEMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNuRCxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUN0QixhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM1QixPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUU5QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFFTyxvQkFBb0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDbkQsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDbkQsQ0FBQztJQUVPLGtCQUFrQjtRQUV0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQy9FLE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO2dCQUNqQixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN6QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsR0FBa0I7UUFDM0MsUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2IsS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMzQixNQUFNO2FBQ1Q7WUFDRCxLQUFLLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLE1BQU07YUFDVDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNMLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBZ0MsQ0FBQztRQUMvRixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxHQUFrQjtRQUMzQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzNCLE1BQU07YUFDVDtZQUNELEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsTUFBTTthQUNUO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ0wsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELDBDQUEwQztJQUNsQyxrQkFBa0I7UUFDdEIsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDakMsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNqQyxNQUFNLEtBQUssR0FBcUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsMkJBQTJCLENBQUMsSUFBSSxDQUFvQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3RSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM1RDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRywyQkFBMkIsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsd0JBQXdCLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQWE7UUFDMUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDbkUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELHNDQUFzQztJQUM5QixvQkFBb0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUU5RSxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xKLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxxQkFBcUI7UUFDekIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztJQUM1RSxDQUFDO0lBRU8sb0JBQW9CO1FBRXhCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTyxXQUFXO1FBQ2YsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDakMsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7UUFDdkMsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDL0UsTUFBTSxLQUFLLEdBQXFCLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ3JCLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM1RDthQUNKO2lCQUFNO2dCQUNILEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3pCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNyQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNuRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLHdCQUF3QixDQUFDO1FBQzNELE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUNuRCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQWtCO1FBQ3RDLE1BQU0sT0FBTyxHQUFJLEdBQUcsQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUN2RCxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFO1lBQ2hCLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7aUJBQy9CO3FCQUFNO29CQUNILFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztpQkFDL0I7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsTUFBTSxvQkFBb0IsR0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQXlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMzSCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU0sSUFBSSxZQUFZLElBQUksb0JBQW9CLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVPLDRCQUE0QjtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDZixLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN6QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDMUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxXQUFXLENBQUMsTUFBcUI7UUFDckMsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQW9CLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFFLENBQUMsS0FBSyxDQUFDO29CQUNoRyxDQUFvQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLFFBQVEsQ0FBQztxQkFDaEQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNWLE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDckIscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNqRTthQUNSO2lCQUFNO2dCQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQzthQUNOO1lBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hEO1NBQ0o7SUFDTCxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQ3hILENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixNQUFNLGNBQWMsR0FBRyw0QkFBNEIsQ0FBQztRQUNwRCxNQUFNLG9CQUFvQixHQUFHLGtDQUFrQyxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDO1FBQ3JDLE1BQU0sYUFBYSxHQUFHLDJCQUEyQixDQUFDO1FBQ2xELE1BQU0sVUFBVSxHQUFHLG1CQUFtQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTO2FBQ1QsTUFBTSxDQUFDLENBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDcEYsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBaUIsRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM5QixJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2FBQ25DO1lBQ0QsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUQ7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFTyxtQ0FBbUMsQ0FBQyxFQUFVO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBa0I7UUFDN0MsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdEcsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEdBQWtCO1FBQy9DLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNiLEtBQUssUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFDVDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNMLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEdBQWtCO1FBQzNDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8scUJBQXFCLENBQUMsR0FBa0I7UUFDNUMsUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2IsS0FBSyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixNQUFNO2FBQ1Q7WUFDRCxLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsTUFBTTthQUNUO1lBQ0QsS0FBSyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNoQyxNQUFNO2FBQ1Q7WUFDRCxPQUFPLENBQUMsQ0FBQztnQkFDTCxNQUFNO2FBQ1Q7U0FDSjtJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDL0MsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNILE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBZ0MsQ0FBQztZQUN2RSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdkI7UUFBQSxDQUFDO0lBQ04sQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFrQjtRQUN0QyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxHQUFrQjtRQUMvQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixNQUFNO2FBQ1Q7WUFDRCxLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLE1BQU07YUFDVDtZQUNELEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQy9CLE1BQU07YUFDVDtZQUNELEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDaEMsTUFBTTthQUNUO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ0wsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsR0FBa0I7UUFDM0MsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWdDLENBQUM7WUFDL0UsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQWtCO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8scUJBQXFCLENBQUMsR0FBa0I7UUFDNUMsUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2IsS0FBSyxRQUFRLENBQUMsVUFBVTtnQkFBRTtvQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM1QixNQUFNO2lCQUNUO2dCQUFBLENBQUM7WUFDRixLQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsTUFBTTthQUNUO1lBQ0QsS0FBSyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNoQyxNQUFNO2FBQ1Q7WUFDRCxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsR0FBRyxDQUFDLE1BQTJCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU07YUFDVDtZQUNELEtBQUssUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU07YUFDVDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNMLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQWtCO1FBQ3hDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUNBQW1DLENBQUUsR0FBRyxDQUFDLE1BQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDL0MsSUFBSSxLQUFLLEtBQUssY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFnQyxDQUFDO1lBQ3ZGLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFrQjtRQUN0QyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFFLEdBQUcsQ0FBQyxNQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNiLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFnQyxDQUFDO1lBQ2hHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDekI7YUFBTTtZQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsR0FBa0I7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFFLEdBQUcsQ0FBQyxNQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU07WUFDdkUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxpQkFBcUMsQ0FBQztZQUMzRCxTQUFTLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JFLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O3VJQXg0QlEsdUJBQXVCOzJIQUF2Qix1QkFBdUIsOGFBR2YsNkJBQTZCLG9EQ2pEbEQsMkJBQXlCO0FEa0ROO0lBQWQsYUFBYTswREFBNEM7MkZBSmpELHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSx3QkFBd0IsaUJBRW5CLGlCQUFpQixDQUFDLElBQUk7OzBCQWtFaEMsUUFBUTs7MEJBQUksSUFBSTtpS0E3RDJCLGNBQWM7c0JBQTdELGVBQWU7dUJBQUMsNkJBQTZCO2dCQUN0QixTQUFTO3NCQUFqQixLQUFLO2dCQUVqQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFPVixTQUFTO3NCQUFsQixNQUFNO2dCQUNNLGNBQWM7c0JBQTFCLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUdGLFFBQVE7c0JBRFgsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxlQUFlO2dCQTJIYyxXQUFXO3NCQUE3RCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtqRCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgSXRlcmFibGVEaWZmZXIsXG4gICAgSXRlcmFibGVEaWZmZXJzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQ2hlY2tib3hMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2VjbC1jaGVja2JveC9lY2wtY2hlY2tib3gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVjbEljb25Db21wb25lbnQgfSBmcm9tICcuLi9lY2wtaWNvbi9lY2wtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcblxuZW51bSBLRVlfQ09ERSB7XG4gIEFSUk9XX1VQID0gJ0Fycm93VXAnLFxuICBBUlJPV19ET1dOID0gJ0Fycm93RG93bicsXG4gIEFSUk9XX0xFRlQgPSAnQXJyb3dMZWZ0JyxcbiAgQVJST1dfUklHSFQgPSAnQXJyb3dSaWdodCcsXG4gIEVTQ0FQRSA9ICdFc2NhcGUnLFxuICBFTlRFUiA9ICdFbnRlcicsXG4gIFRBQiA9ICdUYWInXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2VsZWN0W2VjbE11bHRpc2VsZWN0XScsXG4gICAgdGVtcGxhdGVVcmw6ICdlY2wtbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEVjbE11bHRpc2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmUpIGVjbE9wdGlvbkl0ZW1zOiBRdWVyeUxpc3Q8RWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmU+O1xuICAgIEBjb2VyY2VCb29sZWFuIEBJbnB1dCgpIGlzSW52YWxpZDogYm9vbGVhbiB8IGFueSAgPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNlbGVjdCcpLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGVjbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBJbnB1dCgpIHNldCBlY2xQbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2VjbFBsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0SW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5fZWNsUGxhY2Vob2xkZXIgfHwgJycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpIGVjbFNpemU6IHN0cmluZyA9ICdtJztcblxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCB8fCBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgYW55KSB7IHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9lY2xQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZT47XG4gICAgcHJpdmF0ZSBob3N0RWw6IEhUTUxTZWxlY3RFbGVtZW50O1xuICAgIHByaXZhdGUgaG9zdFBhcmVudEVsOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGhvc3RXcmFwcGVyRWw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0SWNvbkNvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpc2VsZWN0V3JhcHBlcjogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBtdWx0aXNlbGVjdENvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBtdWx0aURyb3Bkb3duOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG9wdGlvbnNXcmFwcGVyOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpU2VsZWN0T3B0aW9uczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICAgIHByaXZhdGUgbXVsdGlTZWxlY3RJbnB1dDogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpU2VhcmNoOiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgbm9SZXN1bHRzRm91bmQ6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgY2hlY2tib3hTZWxlY3RBbGw6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxFbGw6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBzZWFyY2hFbDogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIHNlbGVjdEFsbExhYmVsOiBIVE1MTGFiZWxFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0aW9uQ291bnQ6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlzZWxlY3RUb29sYmFyOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGNsZWFyQnRuOiBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBwcml2YXRlIGNsb3NlQnRuOiBIVE1MQnV0dG9uRWxlbWVudDtcblxuICAgIHByaXZhdGUgbm9SZXN1bHRzRm91bmRUZXh0ID0gJ05vIHJlc3VsdHMgZm91bmQnO1xuICAgIHByaXZhdGUgQ0xBU1NfTk9fUkVTVUxUU19GT1VORCA9ICdlY2wtc2VsZWN0X19tdWx0aXBsZS1uby1yZXN1bHRzJztcbiAgICBwcml2YXRlIHNlbGVjdEFsbExhYmVsVGV4dCA9ICdTZWxlY3QgYWxsJztcbiAgICBwcml2YXRlIGNsb3NlVGV4dCA9ICdDbG9zZSc7XG4gICAgcHJpdmF0ZSBjbGVhckFsbFRleHQgPSAnQ2xlYXIgYWxsJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByb3RlY3RlZCBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaW5kQ2FsbGJhY2tzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG9zdEVsID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpO1xuICAgICAgICB0aGlzLmhvc3RQYXJlbnRFbCA9IHRoaXMuZ2V0SG9zdFBhcmVudEVsZW1lbnQodGhpcy5ob3N0RWwpO1xuICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwgPSB0aGlzLmNyZWF0ZUhvc3RXcmFwcGVyQ29udGFpbmVyKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0SWNvbkNvbnRhaW5lckVsID0gdGhpcy5jcmVhdGVJY29uQ29udGFpbmVyKCk7XG5cbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIgPSB0aGlzLmNyZWF0ZVdyYXBwZXJNdWx0aXNlbGVjdCgpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyID0gdGhpcy5jcmVhdGVTZWxlY3RDb250YWluZXJNdWx0aXNlbGVjdCgpO1xuICAgICAgICB0aGlzLm5vUmVzdWx0c0ZvdW5kID0gdGhpcy5jcmVhdGVOb1Jlc3VsdHNGb3VuZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmhvc3RQYXJlbnRFbCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVPcmlnaW5hbFNlbGVjdENvbXBvbmVudCgpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVIdG1sRWxlbWVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRNdWx0aXNlbGVjdERyb3Bkb3duKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlVHJhbnNsYXRpb25zKCk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZSgnZWNsLXNlbGVjdF9fY29udGFpbmVyLS1kaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0taW52YWxpZCcsIHRoaXMuaXNJbnZhbGlkKTtcbiAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RBbGxEaXNhYmxlU3RhdHVzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLmVjbE9wdGlvbkl0ZW1zKTtcblxuICAgICAgICBpZiAoZGlmZikge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVBbGxPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgZGlmZi5mb3JFYWNoSXRlbShpdGVtID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNXcmFwcGVyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlT3B0aW9uV2l0aENoZWNrYm94KGl0ZW0uaXRlbSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50VmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0QWxsTGFiZWxUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25PcHRpb25zQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldENvbXBvbmVudCgpO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWVzKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uRXNjYXBlS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uS2V5VXAoZXY6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNDbGlja0luc2lkZSA9IHRoaXMubXVsdGlEcm9wZG93bi5jb250YWlucyg8RWxlbWVudD5ldi50YXJnZXQpIHx8IHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jb250YWlucyg8RWxlbWVudD5ldi50YXJnZXQpO1xuICAgICAgICBpZiAoIWlzQ2xpY2tJbnNpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUFsbE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHdoaWxlICh0aGlzLm9wdGlvbnNXcmFwcGVyLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc1dyYXBwZXIuZmlyc3RDaGlsZC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25zQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjbE9wdGlvbkl0ZW1zLmZvckVhY2goaSA9PiBpLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICApLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyLnJlbW92ZUNoaWxkKHRoaXMubXVsdGlEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkTXVsdGlzZWxlY3REcm9wZG93bih0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVOb1Jlc3VsdHNGb3VuZCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IG5vUmVzdWx0c0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBub1Jlc3VsdHNEaXYuY2xhc3NMaXN0LmFkZCh0aGlzLkNMQVNTX05PX1JFU1VMVFNfRk9VTkQpO1xuICAgICAgICBjb25zdCB0ZXh0U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgdGV4dFNwYW4uaW5uZXJIVE1MID0gdGhpcy5ub1Jlc3VsdHNGb3VuZFRleHQ7XG4gICAgICAgIG5vUmVzdWx0c0Rpdi5hcHBlbmRDaGlsZCh0ZXh0U3Bhbik7XG4gICAgICAgIHJldHVybiBub1Jlc3VsdHNEaXY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlT3JpZ2luYWxTZWxlY3RDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG9zdFBhcmVudEVsLnJlcGxhY2VDaGlsZCh0aGlzLmhvc3RXcmFwcGVyRWwsIHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsLmFwcGVuZENoaWxkKHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0taGlkZGVuJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIdG1sRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG9zdFBhcmVudEVsLmFwcGVuZENoaWxkKHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lcik7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3RJY29uQ29udGFpbmVyRWwpO1xuICAgICAgICB0aGlzLnNlbGVjdEljb25Db250YWluZXJFbC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUljb25Db21wb25lbnQoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gICAgfTtcblxuICAgIHByaXZhdGUgcHJvcGFnYXRlVG91Y2hlZCA9ICgpID0+IHtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBidWlsZE11bHRpc2VsZWN0RHJvcGRvd24od2l0aE9wdGlvbnM6IGJvb2xlYW4pOiB2b2lkIHtcblxuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24gPSB0aGlzLmNyZWF0ZURyb3Bkb3duRm9yTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFdyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aURyb3Bkb3duKTtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU2VhcmNoRm9yTXVsdGlzZWxlY3QoKSk7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZU11bHRpU2VsZWN0QWxsKCkpO1xuICAgICAgICB0aGlzLm9wdGlvbnNXcmFwcGVyID0gdGhpcy5jcmVhdGVPcHRpb25zV3JhcHBlcigpO1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uYXBwZW5kQ2hpbGQodGhpcy5vcHRpb25zV3JhcHBlcik7XG5cbiAgICAgICAgaWYgKHdpdGhPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmVjbE9wdGlvbkl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNXcmFwcGVyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlT3B0aW9uV2l0aENoZWNrYm94KGl0ZW0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlTXVsdGlzZWxlY3RUb29sYmFyKCkpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0QWxsTGFiZWxUZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIb3N0RWxlbWVudCgpOiBIVE1MU2VsZWN0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIb3N0UGFyZW50RWxlbWVudChob3N0RWw6IEhUTUxTZWxlY3RFbGVtZW50KTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gaG9zdEVsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgd3JhcHBlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXInKTtcbiAgICAgICAgd3JhcHBlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGBlY2wtc2VsZWN0X19jb250YWluZXItLSR7dGhpcy5lY2xTaXplfWApO1xuICAgICAgICByZXR1cm4gd3JhcHBlckNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVdyYXBwZXJNdWx0aXNlbGVjdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJDb250YWluZXJNdWx0aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB3cmFwcGVyQ29udGFpbmVyTXVsdGkuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fbXVsdGlwbGUnKTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXJDb250YWluZXJNdWx0aTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNlbGVjdENvbnRhaW5lck11bHRpc2VsZWN0KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0Q29udGFpbmVyTXVsdGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyTXVsdGkuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyJyk7XG4gICAgICAgIHNlbGVjdENvbnRhaW5lck11bHRpLmNsYXNzTGlzdC5hZGQoYGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tJHt0aGlzLmVjbFNpemV9YCk7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXItLWRpc2FibGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0Q29udGFpbmVyTXVsdGkuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVNdWx0aXNlbGVjdENvdW50ZXIoKSk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5fZWNsUGxhY2Vob2xkZXIgfHwgJycpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcbiAgICAgICAgaWYgKHRoaXMuaG9zdEVsLmhhc0F0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJykpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5zZXRBdHRyaWJ1dGUoJ2Zvcm1Db250cm9sTmFtZScsIHRoaXMuaG9zdEVsLmdldEF0dHJpYnV0ZSgnZm9ybUNvbnRyb2xOYW1lJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS10b2dnbGUnKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5hcHBlbmRDaGlsZCh0aGlzLm11bHRpU2VsZWN0SW5wdXQpO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RDb250YWluZXJNdWx0aTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU11bHRpc2VsZWN0Q291bnRlcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ291bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db3VudC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlcicpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25Db3VudFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ291bnQuYXBwZW5kQ2hpbGQoc2VsZWN0aW9uQ291bnRUZXh0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uQ291bnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93TXVsdGlzZWxlY3RDb3VudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvdW50LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3QtbXVsdGlwbGUtc2VsZWN0aW9ucy1jb3VudGVyLS12aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTXVsdGlzZWxlY3RDb3VudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvdW50LmNsYXNzTGlzdC5yZW1vdmUoJ2VjbC1zZWxlY3QtbXVsdGlwbGUtc2VsZWN0aW9ucy1jb3VudGVyLS12aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEcm9wZG93bkZvck11bHRpc2VsZWN0KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZHJvcGRvd25EaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZHJvcGRvd25EaXYuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fbXVsdGlwbGUtZHJvcGRvd24nKTtcbiAgICAgICAgZHJvcGRvd25EaXYuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyJyk7XG4gICAgICAgIGRyb3Bkb3duRGl2LmNsYXNzTGlzdC5hZGQoYGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tJHt0aGlzLmVjbFNpemV9YCk7XG4gICAgICAgIGRyb3Bkb3duRGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIHJldHVybiBkcm9wZG93bkRpdjtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2ggYm94IHRvIHNlYXJjaCBhbW9uZyBvcHRpb25zXG4gICAgcHJpdmF0ZSBjcmVhdGVTZWFyY2hGb3JNdWx0aXNlbGVjdCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgdGhpcy5tdWx0aVNlYXJjaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWFyY2gudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgdGhpcy5tdWx0aVNlYXJjaC5jbGFzc0xpc3QuYWRkKCdlY2wtdGV4dC1pbnB1dCcpO1xuICAgICAgICB0aGlzLm11bHRpU2VhcmNoLnBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG5cbiAgICAgICAgdGhpcy5tdWx0aVNlYXJjaC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25TZWFyY2gpO1xuICAgICAgICB0aGlzLm11bHRpU2VhcmNoLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5vblNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB0aGlzLnNlYXJjaEVsID0gdGhpcy5tdWx0aVNlYXJjaDtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlTZWFyY2g7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPcHRpb25XaXRoQ2hlY2tib3goZWw6IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBpZFN0ciA9IChuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpO1xuICAgICAgICBjb25zdCBpZCA9ICdpZC0nICsgZWwudmFsdWUgKyBpZFN0ci5zdWJzdHJpbmcoaWRTdHIubGFzdEluZGV4T2YoJy4nKSArIDEpO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICAgICAgaWYgKGVsLmNzc0NsYXNzZXMpIHtcbiAgICAgICAgICAgIGVsLmNzc0NsYXNzZXMuc3BsaXQoJyAnKS5mb3JFYWNoKGNsID0+IHtcbiAgICAgICAgICAgICAgICBjaGVja2JveERpdi5jbGFzc0xpc3QuYWRkKGNsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hlY2tib3hJbnB1dCA9IHRoaXMuY3JlYXRlQ2hlY2tib3hJbnB1dChpZCwgZWwudmFsdWUpO1xuICAgICAgICBpZiAoZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNoZWNrYm94RGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1jaGVja2JveC0tZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIGNoZWNrYm94SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hlY2tib3hJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsLnNlbGVjdGVkIHx8ICh0aGlzLnNlbGVjdGVkVmFsdWVzLmluZGV4T2YoZWwudmFsdWUpID4gLTEpKSB7XG4gICAgICAgICAgICBjaGVja2JveElucHV0LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID09PSAnJyA/IGVsLmxhYmVsIDpcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgKyAnLCcgKyBlbC5sYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoZWNrYm94SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uT3B0aW9uKTtcbiAgICAgICAgY2hlY2tib3hEaXYuYXBwZW5kQ2hpbGQoY2hlY2tib3hJbnB1dCk7XG5cbiAgICAgICAgY29uc3QgY2hlY2tib3hMYWJlbCA9IHRoaXMuY3JlYXRlQ2hlY2tib3hMYWJlbChlbC5sYWJlbCwgaWQpO1xuICAgICAgICBjaGVja2JveERpdi5hcHBlbmRDaGlsZChjaGVja2JveExhYmVsKTtcblxuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5wdXNoKGNoZWNrYm94RGl2KTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94RGl2O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ2hlY2tib3hMYWJlbCh0ZXh0OiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBIVE1MTGFiZWxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hMYWJlbCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoRWNsQ2hlY2tib3hMYWJlbENvbXBvbmVudCk7XG4gICAgICAgIGNoZWNrYm94TGFiZWwubG9jYXRpb24ubmF0aXZlRWxlbWVudC5odG1sRm9yID0gaWQ7XG5cbiAgICAgICAgY29uc3QgdGV4dFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRleHRTcGFuLmlubmVySFRNTCA9IHRleHQ7XG5cbiAgICAgICAgY2hlY2tib3hMYWJlbC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRleHRTcGFuKTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94TGFiZWwubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrYm94SW5wdXQoaWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICBjb25zdCBjaGVja2JveElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgY2hlY2tib3hJbnB1dC50eXBlID0gJ2NoZWNrYm94JztcbiAgICAgICAgY2hlY2tib3hJbnB1dC5jbGFzc0xpc3QuYWRkKCdlY2wtY2hlY2tib3hfX2lucHV0Jyk7XG4gICAgICAgIGNoZWNrYm94SW5wdXQuaWQgPSBpZDtcbiAgICAgICAgY2hlY2tib3hJbnB1dC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gY2hlY2tib3hJbnB1dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU11bHRpc2VsZWN0VG9vbGJhcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RUb29sYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RUb29sYmFyLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3QtbXVsdGlwbGUtdG9vbGJhcicpO1xuICAgICAgICB0aGlzLmNsZWFyQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICAgIHRoaXMuY2xlYXJCdG4uY2xhc3NMaXN0LmFkZCgnZWNsLWJ1dHRvbicpO1xuICAgICAgICB0aGlzLmNsZWFyQnRuLmNsYXNzTGlzdC5hZGQoJ2VjbC1idXR0b24tLWdob3N0Jyk7XG4gICAgICAgIHRoaXMuY2xlYXJCdG4udHlwZSA9ICdidXR0b24nO1xuICAgICAgICB0aGlzLmNsZWFyQnRuLnRleHRDb250ZW50ID0gdGhpcy5jbGVhckFsbFRleHQ7XG5cbiAgICAgICAgdGhpcy5jbG9zZUJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICB0aGlzLmNsb3NlQnRuLmNsYXNzTGlzdC5hZGQoJ2VjbC1idXR0b24nKTtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5jbGFzc0xpc3QuYWRkKCdlY2wtYnV0dG9uLS1wcmltYXJ5Jyk7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4udGV4dENvbnRlbnQgPSB0aGlzLmNsb3NlVGV4dDtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi50eXBlID0gJ2J1dHRvbic7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RUb29sYmFyLmFwcGVuZENoaWxkKHRoaXMuY2xlYXJCdG4pO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0VG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmNsb3NlQnRuKTtcblxuICAgICAgICB0aGlzLmNsZWFyQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25PbkNsZWFyKTtcbiAgICAgICAgdGhpcy5jbGVhckJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbkNsZWFyKTtcblxuICAgICAgICB0aGlzLmNsb3NlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25PbkNsb3NlKTtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbkNsb3NlKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVRvb2xiYXJEaXNwbGF5KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlzZWxlY3RUb29sYmFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVG9vbGJhckRpc3BsYXkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd011bHRpc2VsZWN0VG9vbGJhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3RUb29sYmFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dNdWx0aXNlbGVjdFRvb2xiYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RUb29sYmFyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTXVsdGlzZWxlY3RUb29sYmFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0VG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2tPbkNsZWFyKCk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5maWx0ZXIoZWxlbSA9PiBlbGVtLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJykuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICBpZiAoIWlucHV0LmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy51cGRhdGVNdWx0aXNlbGVjdENvdW50ZXIoMCk7XG4gICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0VG9vbGJhcigpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KFt0aGlzLnNlbGVjdGVkVmFsdWVzXSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2tPbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlS2V5ZG93bk9uQ2xvc2UoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZUNsZWFyQXJyb3dVcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19MRUZUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlQXJyb3dMZWZ0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2xvc2VDbGVhckFycm93VXAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gY3VycmVudE9wdGlvbnNbY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGZpcnN0T3B0aW9uLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNsb3NlQXJyb3dMZWZ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyQnRuLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duT25DbGVhcihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlQ2xlYXJBcnJvd1VwKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsZWFyQXJyb3dSaWdodCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNsZWFyQXJyb3dSaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIEFkZC9yZW1vdmUgdmFsdWVzIGZyb20gdGhlIHNlbGVjdCBpbnB1dFxuICAgIHByaXZhdGUgdXBkYXRlQ3VycmVudFZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzQXJyYXkgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c1ZhbHVlc0FycmF5ID0gW107XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWwuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50c1ZhbHVlc0FycmF5LnB1c2goKDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF0pLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzQXJyYXkucHVzaChlbC5jaGlsZE5vZGVzWzFdLnRleHRDb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IHNlbGVjdGVkRWxlbWVudHNBcnJheS5qb2luKCcsJyk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9vbGJhckRpc3BsYXkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVNdWx0aXNlbGVjdENvdW50ZXIoc2VsZWN0ZWRFbGVtZW50c0FycmF5Lmxlbmd0aCk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTXVsdGlzZWxlY3RDb3VudGVyKGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Db3VudC5xdWVyeVNlbGVjdG9yKCdzcGFuJykudGV4dENvbnRlbnQgPSAnJyArIGNvdW50O1xuICAgICAgICAgICAgdGhpcy5zaG93TXVsdGlzZWxlY3RDb3VudGVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdENvdW50ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrYm94IHRvIHNlbGVjdCBhbGwgdGhlIGVsZW1lbnRzXG4gICAgcHJpdmF0ZSBjcmVhdGVNdWx0aVNlbGVjdEFsbCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGlkU3RyID0gKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGNoZWNrYm94RGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1jaGVja2JveCcpO1xuICAgICAgICBjaGVja2JveERpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS1hbGwnKTtcblxuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsID0gdGhpcy5jcmVhdGVDaGVja2JveElucHV0KCdzZWxlY3QtbXVsdGlwbGUtYWxsJyArIGlkU3RyLnN1YnN0cmluZyhpZFN0ci5sYXN0SW5kZXhPZignLicpICsgMSksICdhbGwnKTtcblxuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25PblNlbGVjdEFsbCk7XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwpO1xuXG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKHRoaXMuY2hlY2tib3hTZWxlY3RBbGwpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTGFiZWwgPSB0aGlzLmNyZWF0ZUNoZWNrYm94TGFiZWwodGhpcy5nZXRTZWxlY3RBbGxMYWJlbFRleHQoKSwgJ3NlbGVjdC1tdWx0aXBsZS1hbGwnICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKSk7XG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0QWxsTGFiZWwpO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbEVsbCA9IGNoZWNrYm94RGl2O1xuICAgICAgICByZXR1cm4gY2hlY2tib3hEaXY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RBbGxMYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VsZWN0QWxsTGFiZWxUZXh0fSAoJHt0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGh9KWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVPcHRpb25zV3JhcHBlcigpOiBIVE1MRWxlbWVudCB7XG5cbiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19tdWx0aXBsZS1vcHRpb25zJyk7XG4gICAgICAgIHJldHVybiBkaXY7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c0FycmF5ID0gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheSA9IFtdO1xuICAgICAgICAvLyBTZWxlY3QgYWxsIHRoZSBlbGVtZW50cywgdGhhdCBhcmUgbm90IGRpc2FibGVkXG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZpbHRlcihlbGVtID0+IGVsZW0uc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnKS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWwuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXkucHVzaChpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmNoaWxkTm9kZXNbMV0udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gc2VsZWN0ZWRFbGVtZW50c0FycmF5LmpvaW4oJywnKTtcbiAgICAgICAgdGhpcy51cGRhdGVNdWx0aXNlbGVjdENvdW50ZXIoc2VsZWN0ZWRFbGVtZW50c0FycmF5Lmxlbmd0aCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9vbGJhckRpc3BsYXkoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVJY29uQ29tcG9uZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZWNsSWNvbkNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoRWNsSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2Uuc2l6ZSA9ICdzJztcbiAgICAgICAgZWNsSWNvbkNvbXBvbmVudC5pbnN0YW5jZS5pY29uID0gJ2Nvcm5lci1hcnJvdyc7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2UudHJhbnNmb3JtID0gJ3JvdGF0ZS0xODAnO1xuICAgICAgICBlY2xJY29uQ29tcG9uZW50Lmluc3RhbmNlLmNsYXNzID0gJ2VjbC1zZWxlY3RfX2ljb24tc2hhcGUnO1xuICAgICAgICByZXR1cm4gZWNsSWNvbkNvbXBvbmVudC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSWNvbkNvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEljb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgc2VsZWN0SWNvbkNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19pY29uJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RJY29uQ29udGFpbmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hPcHRpb25zKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIGxldCBpc01hdGNoRm91bmQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGtleXdvcmQgPT09ICcnKSB7XG4gICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9SZXN1bHRzRm91bmRFeGlzdHMgPSAodGhpcy5tdWx0aURyb3Bkb3duLmxhc3RDaGlsZCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ0xBU1NfTk9fUkVTVUxUU19GT1VORCk7XG4gICAgICAgIGlmICghaXNNYXRjaEZvdW5kICYmICFub1Jlc3VsdHNGb3VuZEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMubm9SZXN1bHRzRm91bmQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTWF0Y2hGb3VuZCAmJiBub1Jlc3VsdHNGb3VuZEV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLnJlbW92ZUNoaWxkKHRoaXMubm9SZXN1bHRzRm91bmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5kaXNhYmxlZCA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmxlbmd0aCA8IDI7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsRWxsLmNsYXNzTGlzdC50b2dnbGUoJ2VjbC1jaGVja2JveC0tZGlzYWJsZWQnLCB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZWwuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tib3hTZWxlY3RBbGwpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0SW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgd3JpdGVWYWx1ZXModmFsdWVzOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlTZWxlY3RPcHRpb25zICYmIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5maWx0ZXIoZWxlbSA9PiB2YWx1ZXMuaW5jbHVkZXMoKDxIVE1MSW5wdXRFbGVtZW50PmVsZW0uY2hpbGROb2Rlc1swXSkudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICEoPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbS5jaGlsZE5vZGVzWzBdKS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzQXJyYXkucHVzaChlbC5jaGlsZE5vZGVzWzFdLnRleHRDb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMucHVzaChpbnB1dC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgPSBzZWxlY3RlZEVsZW1lbnRzQXJyYXkuam9pbignLCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMucHVzaCh2YWwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0Q291bnRlcih2YWx1ZXMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VsZWN0QWxsTGFiZWxUZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbExhYmVsLmxhc3RFbGVtZW50Q2hpbGQudGV4dENvbnRlbnQgPSBgJHt0aGlzLnNlbGVjdEFsbExhYmVsVGV4dH0gKCR7dGhpcy5nZXRBY3RpdmVPcHRpb25zKCkubGVuZ3RofSlgO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQnV0dG9uc0xhYmVsVGV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi50ZXh0Q29udGVudCA9IGAke3RoaXMuY2xvc2VUZXh0fWA7XG4gICAgICAgIHRoaXMuY2xlYXJCdG4udGV4dENvbnRlbnQgPSBgJHt0aGlzLmNsZWFyQWxsVGV4dH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVHJhbnNsYXRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBTRUxFQ1RfQUxMX0tFWSA9ICdlY2wubXVsdGlzZWxlY3QuU0VMRUNULUFMTCc7XG4gICAgICAgIGNvbnN0IE5PX1JFU1VMVFNfRk9VTkRfS0VZID0gJ2VjbC5tdWx0aXNlbGVjdC5OTy1SRVNVTFRTLUZPVU5EJztcbiAgICAgICAgY29uc3QgQ0xPU0VfS0VZID0gJ2VjbC5jb21tb24uQ0xPU0UnO1xuICAgICAgICBjb25zdCBDTEVBUl9BTExfS0VZID0gJ2VjbC5tdWx0aXNlbGVjdC5DTEVBUi1BTEwnO1xuICAgICAgICBjb25zdCBTRUFSQ0hfS0VZID0gJ2VjbC5jb21tb24uU0VBUkNIJztcbiAgICAgICAgdGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgIC5zdHJlYW0oW1NFTEVDVF9BTExfS0VZLCBOT19SRVNVTFRTX0ZPVU5EX0tFWSwgQ0xPU0VfS0VZLCBDTEVBUl9BTExfS0VZLCBTRUFSQ0hfS0VZXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uOiBKU09OKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub1Jlc3VsdHNGb3VuZFRleHQgPSB0cmFuc2xhdGlvbltOT19SRVNVTFRTX0ZPVU5EX0tFWV07XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVRleHQgPSB0cmFuc2xhdGlvbltDTE9TRV9LRVldO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxUZXh0ID0gdHJhbnNsYXRpb25bQ0xFQVJfQUxMX0tFWV07XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCdXR0b25zTGFiZWxUZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3RBbGxMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbExhYmVsVGV4dCA9IHRyYW5zbGF0aW9uW1NFTEVDVF9BTExfS0VZXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RBbGxMYWJlbFRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYodGhpcy5tdWx0aVNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VhcmNoLnBsYWNlaG9sZGVyID0gdHJhbnNsYXRpb25bU0VBUkNIX0tFWV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3Blbk11bHRpc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhpZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLmZpcnN0RWxlbWVudENoaWxkLmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGlja09uTWFpbklucHV0KGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5zdHlsZS5kaXNwbGF5ID0gdGhpcy5tdWx0aURyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPT09ICdub25lJyA/ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlkb3duT25NYWluSW5wdXQoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19ET1dOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1haW5JbnB1dEFycm93RG93bihldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk1haW5JbnB1dEFycm93RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMub3Blbk11bHRpc2VsZWN0KCk7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25PblNlYXJjaChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VhcmNoQXJyb3dEb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlYXJjaEFycm93VXAoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hBcnJvd0Rvd24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdE9wdGlvbiA9IGN1cnJlbnRPcHRpb25zWzBdLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgZmlyc3RPcHRpb24uZm9jdXMoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VhcmNoQXJyb3dVcChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2xpY2tPblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25TZWxlY3RBbGwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25PblNlbGVjdEFsbChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0QWxsQXJyb3dEb3duKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFsbEFycm93VXAoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VsZWN0QWxsQXJyb3dEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRTaWJsaW5nQ2hlY2tib3ggPSBjdXJyZW50T3B0aW9uc1swXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIG5leHRTaWJsaW5nQ2hlY2tib3guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWxlY3RBbGxBcnJvd1VwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaEVsLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGlja09uT3B0aW9uKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25Pbk9wdGlvbihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dEb3duKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd1VwKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVTQ0FQRToge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuVEFCOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblRhYihldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbkFycm93RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucygoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5pZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNpYmxpbmdDaGVja2JveCA9IGN1cnJlbnRPcHRpb25zW2luZGV4ICsgMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBuZXh0U2libGluZ0NoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQnRuLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uQXJyb3dVcChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucygoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5pZCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldlNpYmxpbmdDaGVja2JveCA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpW2luZGV4IC0gMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBwcmV2U2libGluZ0NoZWNrYm94LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveFNlbGVjdEFsbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hFbC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvblRhYihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmlkKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZm9jdXMoKTsgLy8gVHJhcCB0YWJcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY3RpdmVPcHRpb25zKCk6IEhUTUxFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiZcbiAgICAgICAgICAgICFpdGVtLmNsYXNzTGlzdC5jb250YWlucygnZWNsLWNoZWNrYm94LS1kaXNhYmxlZCcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUFsbExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCk7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25TZWFyY2hPcHRpb25zKTtcbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25TZWxlY3RBbGwpO1xuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uU2VsZWN0QWxsKTtcbiAgICAgICAgdGhpcy5jbGVhckJ0bi5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25DbGVhcik7XG4gICAgICAgIHRoaXMuY2xlYXJCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25DbGVhcik7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uQ2xvc2UpO1xuICAgICAgICB0aGlzLmNsb3NlQnRuLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uQ2xvc2UpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoZWNib3hFbCA9IGVsLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBjaGVjYm94RWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uT3B0aW9uKTtcbiAgICAgICAgICAgIGNoZWNib3hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbk9wdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZENhbGxiYWNrcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25NYWluSW5wdXQgPSB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25PblNlYXJjaCA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMub25TZWFyY2hPcHRpb25zID0gdGhpcy5vblNlYXJjaE9wdGlvbnMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25TZWxlY3RBbGwgPSB0aGlzLmhhbmRsZUtleWRvd25PblNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbiA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uT3B0aW9uLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dCA9IHRoaXMuaGFuZGxlQ2xpY2tPbk1haW5JbnB1dC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwgPSB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja09uT3B0aW9uID0gdGhpcy5oYW5kbGVDbGlja09uT3B0aW9uLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPbkNsZWFyID0gdGhpcy5oYW5kbGVDbGlja09uQ2xlYXIuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25DbGVhciA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uQ2xlYXIuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duT25DbG9zZSA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uQ2xvc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja09uQ2xvc2UgPSB0aGlzLmhhbmRsZUNsaWNrT25DbG9zZS5iaW5kKHRoaXMpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD4iXX0=
837
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsUUFBUSxFQUNSLE1BQU0sRUFFTixJQUFJLEVBRUosaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFFbkYsSUFBSyxRQVFKO0FBUkQsV0FBSyxRQUFRO0lBQ1gsZ0NBQW9CLENBQUE7SUFDcEIsb0NBQXdCLENBQUE7SUFDeEIsb0NBQXdCLENBQUE7SUFDeEIsc0NBQTBCLENBQUE7SUFDMUIsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtJQUNmLHVCQUFXLENBQUE7QUFDYixDQUFDLEVBUkksUUFBUSxLQUFSLFFB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O3NCQUFJLFdBQVc7dUJBQUMsZUFBZTtnQkEySGMsV0FBVztzQkFBN0QsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlRGlmZmVyLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2VsZixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW4gfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbENoZWNrYm94TGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9lY2wtY2hlY2tib3gvZWNsLWNoZWNrYm94LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWljb24vZWNsLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG5cbmVudW0gS0VZX0NPREUge1xuICBBUlJPV19VUCA9ICdBcnJvd1VwJyxcbiAgQVJST1dfRE9XTiA9ICdBcnJvd0Rvd24nLFxuICBBUlJPV19MRUZUID0gJ0Fycm93TGVmdCcsXG4gIEFSUk9XX1JJR0hUID0gJ0Fycm93UmlnaHQnLFxuICBFU0NBUEUgPSAnRXNjYXBlJyxcbiAgRU5URVIgPSAnRW50ZXInLFxuICBUQUIgPSAnVGFiJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NlbGVjdFtlY2xNdWx0aXNlbGVjdF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZWNsLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNdWx0aXNlbGVjdENvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2ssIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlKSBlY2xPcHRpb25JdGVtczogUXVlcnlMaXN0PEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlPjtcbiAgICBAY29lcmNlQm9vbGVhbiBASW5wdXQoKSBpc0ludmFsaWQ6IGJvb2xlYW4gfCBhbnkgID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1zZWxlY3QnKSxcbiAgICAgICAgXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBlY2xDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBASW5wdXQoKSBzZXQgZWNsUGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9lY2xQbGFjZWhvbGRlciA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHRoaXMuX2VjbFBsYWNlaG9sZGVyIHx8ICcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKSBlY2xTaXplOiBzdHJpbmcgPSAnbSc7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgfHwgbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCB8fCBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IGFueSkgeyB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZWNsUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBwcml2YXRlIGRpZmZlcjogSXRlcmFibGVEaWZmZXI8RWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmU+O1xuICAgIHByaXZhdGUgaG9zdEVsOiBIVE1MU2VsZWN0RWxlbWVudDtcbiAgICBwcml2YXRlIGhvc3RQYXJlbnRFbDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBob3N0V3JhcHBlckVsOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIHNlbGVjdEljb25Db250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBtdWx0aXNlbGVjdFdyYXBwZXI6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlzZWxlY3RDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgbXVsdGlEcm9wZG93bjogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBvcHRpb25zV3JhcHBlcjogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBtdWx0aVNlbGVjdE9wdGlvbnM6IEhUTUxFbGVtZW50W10gPSBbXTtcbiAgICBwcml2YXRlIG11bHRpU2VsZWN0SW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBtdWx0aVNlYXJjaDogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIG5vUmVzdWx0c0ZvdW5kOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIGNoZWNrYm94U2VsZWN0QWxsOiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0QWxsRWxsOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIHNlbGVjdGVkVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgc2VhcmNoRWw6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxMYWJlbDogSFRNTExhYmVsRWxlbWVudDtcbiAgICBwcml2YXRlIHNlbGVjdGlvbkNvdW50OiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIG11bHRpc2VsZWN0VG9vbGJhcjogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBjbGVhckJ0bjogSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBjbG9zZUJ0bjogSFRNTEJ1dHRvbkVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIG5vUmVzdWx0c0ZvdW5kVGV4dCA9ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBwcml2YXRlIENMQVNTX05PX1JFU1VMVFNfRk9VTkQgPSAnZWNsLXNlbGVjdF9fbXVsdGlwbGUtbm8tcmVzdWx0cyc7XG4gICAgcHJpdmF0ZSBzZWxlY3RBbGxMYWJlbFRleHQgPSAnU2VsZWN0IGFsbCc7XG4gICAgcHJpdmF0ZSBjbG9zZVRleHQgPSAnQ2xvc2UnO1xuICAgIHByaXZhdGUgY2xlYXJBbGxUZXh0ID0gJ0NsZWFyIGFsbCc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmluZENhbGxiYWNrcygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvc3RFbCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5ob3N0UGFyZW50RWwgPSB0aGlzLmdldEhvc3RQYXJlbnRFbGVtZW50KHRoaXMuaG9zdEVsKTtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsID0gdGhpcy5jcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLnNlbGVjdEljb25Db250YWluZXJFbCA9IHRoaXMuY3JlYXRlSWNvbkNvbnRhaW5lcigpO1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyID0gdGhpcy5jcmVhdGVXcmFwcGVyTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lciA9IHRoaXMuY3JlYXRlU2VsZWN0Q29udGFpbmVyTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5ub1Jlc3VsdHNGb3VuZCA9IHRoaXMuY3JlYXRlTm9SZXN1bHRzRm91bmQoKTtcblxuICAgICAgICBpZiAodGhpcy5ob3N0UGFyZW50RWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlT3JpZ2luYWxTZWxlY3RDb21wb25lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlSHRtbEVsZW1lbnRzKCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkTXVsdGlzZWxlY3REcm9wZG93bihmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0aW9ucygpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lci0tZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdENvbnRhaW5lci5jbGFzc0xpc3QudG9nZ2xlKCdlY2wtc2VsZWN0X19jb250YWluZXItLWludmFsaWQnLCB0aGlzLmlzSW52YWxpZCk7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0QWxsRGlzYWJsZVN0YXR1cygpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlmZiA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5lY2xPcHRpb25JdGVtcyk7XG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWxsT3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGRpZmYuZm9yRWFjaEl0ZW0oaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZU9wdGlvbldpdGhDaGVja2JveChpdGVtLml0ZW0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdEFsbExhYmVsVGV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRDb21wb25lbnQoKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlcyh2YWx1ZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cC5lc2NhcGUnLCBbJyRldmVudCddKSBvbkVzY2FwZUtleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbktleVVwKGV2OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzQ2xpY2tJbnNpZGUgPSB0aGlzLm11bHRpRHJvcGRvd24uY29udGFpbnMoPEVsZW1lbnQ+ZXYudGFyZ2V0KSB8fCB0aGlzLm11bHRpU2VsZWN0SW5wdXQuY29udGFpbnMoPEVsZW1lbnQ+ZXYudGFyZ2V0KTtcbiAgICAgICAgaWYgKCFpc0NsaWNrSW5zaWRlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVBbGxPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB3aGlsZSAodGhpcy5vcHRpb25zV3JhcHBlci5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNXcmFwcGVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uc0NoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xPcHRpb25JdGVtcy5mb3JFYWNoKGkgPT4gaS5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKS5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0V3JhcHBlci5yZW1vdmVDaGlsZCh0aGlzLm11bHRpRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZE11bHRpc2VsZWN0RHJvcGRvd24odHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTm9SZXN1bHRzRm91bmQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBub1Jlc3VsdHNEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbm9SZXN1bHRzRGl2LmNsYXNzTGlzdC5hZGQodGhpcy5DTEFTU19OT19SRVNVTFRTX0ZPVU5EKTtcbiAgICAgICAgY29uc3QgdGV4dFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRleHRTcGFuLmlubmVySFRNTCA9IHRoaXMubm9SZXN1bHRzRm91bmRUZXh0O1xuICAgICAgICBub1Jlc3VsdHNEaXYuYXBwZW5kQ2hpbGQodGV4dFNwYW4pO1xuICAgICAgICByZXR1cm4gbm9SZXN1bHRzRGl2O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU9yaWdpbmFsU2VsZWN0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvc3RQYXJlbnRFbC5yZXBsYWNlQ2hpbGQodGhpcy5ob3N0V3JhcHBlckVsLCB0aGlzLmhvc3RFbCk7XG4gICAgICAgIHRoaXMuaG9zdFdyYXBwZXJFbC5hcHBlbmRDaGlsZCh0aGlzLmhvc3RFbCk7XG4gICAgICAgIHRoaXMuaG9zdFdyYXBwZXJFbC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0X19jb250YWluZXItLWhpZGRlbicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSHRtbEVsZW1lbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvc3RQYXJlbnRFbC5hcHBlbmRDaGlsZCh0aGlzLm11bHRpc2VsZWN0V3JhcHBlcik7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyLmFwcGVuZENoaWxkKHRoaXMubXVsdGlzZWxlY3RDb250YWluZXIpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0SWNvbkNvbnRhaW5lckVsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RJY29uQ29udGFpbmVyRWwuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVJY29uQ29tcG9uZW50KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICAgIH07XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKSA9PiB7XG4gICAgfTtcblxuICAgIHByaXZhdGUgYnVpbGRNdWx0aXNlbGVjdERyb3Bkb3duKHdpdGhPcHRpb25zOiBib29sZWFuKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duID0gdGhpcy5jcmVhdGVEcm9wZG93bkZvck11bHRpc2VsZWN0KCk7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RXcmFwcGVyLmFwcGVuZENoaWxkKHRoaXMubXVsdGlEcm9wZG93bik7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNlYXJjaEZvck11bHRpc2VsZWN0KCkpO1xuICAgICAgICB0aGlzLm11bHRpRHJvcGRvd24uYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVNdWx0aVNlbGVjdEFsbCgpKTtcbiAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlciA9IHRoaXMuY3JlYXRlT3B0aW9uc1dyYXBwZXIoKTtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLmFwcGVuZENoaWxkKHRoaXMub3B0aW9uc1dyYXBwZXIpO1xuXG4gICAgICAgIGlmICh3aXRoT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5lY2xPcHRpb25JdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zV3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZU9wdGlvbldpdGhDaGVja2JveChpdGVtKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZU11bHRpc2VsZWN0VG9vbGJhcigpKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdEFsbExhYmVsVGV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SG9zdEVsZW1lbnQoKTogSFRNTFNlbGVjdEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SG9zdFBhcmVudEVsZW1lbnQoaG9zdEVsOiBIVE1MU2VsZWN0RWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGhvc3RFbC5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSG9zdFdyYXBwZXJDb250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCB3cmFwcGVyQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHdyYXBwZXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyJyk7XG4gICAgICAgIHdyYXBwZXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChgZWNsLXNlbGVjdF9fY29udGFpbmVyLS0ke3RoaXMuZWNsU2l6ZX1gKTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXJDb250YWluZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVXcmFwcGVyTXVsdGlzZWxlY3QoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCB3cmFwcGVyQ29udGFpbmVyTXVsdGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgd3JhcHBlckNvbnRhaW5lck11bHRpLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX211bHRpcGxlJyk7XG4gICAgICAgIHJldHVybiB3cmFwcGVyQ29udGFpbmVyTXVsdGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVTZWxlY3RDb250YWluZXJNdWx0aXNlbGVjdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbnRhaW5lck11bHRpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHNlbGVjdENvbnRhaW5lck11bHRpLmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lcicpO1xuICAgICAgICBzZWxlY3RDb250YWluZXJNdWx0aS5jbGFzc0xpc3QuYWRkKGBlY2wtc2VsZWN0X19jb250YWluZXItLSR7dGhpcy5lY2xTaXplfWApO1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgc2VsZWN0Q29udGFpbmVyTXVsdGkuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fY29udGFpbmVyLS1kaXNhYmxlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdENvbnRhaW5lck11bHRpLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlTXVsdGlzZWxlY3RDb3VudGVyKCkpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHRoaXMuX2VjbFBsYWNlaG9sZGVyIHx8ICcnKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XG4gICAgICAgIGlmICh0aGlzLmhvc3RFbC5oYXNBdHRyaWJ1dGUoJ2Zvcm1Db250cm9sTmFtZScpKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuc2V0QXR0cmlidXRlKCdmb3JtQ29udHJvbE5hbWUnLCB0aGlzLmhvc3RFbC5nZXRBdHRyaWJ1dGUoJ2Zvcm1Db250cm9sTmFtZScpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25NYWluSW5wdXQpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdCcpO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fbXVsdGlwbGUtdG9nZ2xlJyk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25NYWluSW5wdXQpO1xuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0Q29udGFpbmVyTXVsdGkuYXBwZW5kQ2hpbGQodGhpcy5tdWx0aVNlbGVjdElucHV0KTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0Q29udGFpbmVyTXVsdGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNdWx0aXNlbGVjdENvdW50ZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvdW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ291bnQuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdC1tdWx0aXBsZS1zZWxlY3Rpb25zLWNvdW50ZXInKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ291bnRUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvdW50LmFwcGVuZENoaWxkKHNlbGVjdGlvbkNvdW50VGV4dCk7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNvdW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd011bHRpc2VsZWN0Q291bnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db3VudC5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlci0tdmlzaWJsZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU11bHRpc2VsZWN0Q291bnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db3VudC5jbGFzc0xpc3QucmVtb3ZlKCdlY2wtc2VsZWN0LW11bHRpcGxlLXNlbGVjdGlvbnMtY291bnRlci0tdmlzaWJsZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRHJvcGRvd25Gb3JNdWx0aXNlbGVjdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGRyb3Bkb3duRGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX211bHRpcGxlLWRyb3Bkb3duJyk7XG4gICAgICAgIGRyb3Bkb3duRGl2LmNsYXNzTGlzdC5hZGQoJ2VjbC1zZWxlY3RfX2NvbnRhaW5lcicpO1xuICAgICAgICBkcm9wZG93bkRpdi5jbGFzc0xpc3QuYWRkKGBlY2wtc2VsZWN0X19jb250YWluZXItLSR7dGhpcy5lY2xTaXplfWApO1xuICAgICAgICBkcm9wZG93bkRpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICByZXR1cm4gZHJvcGRvd25EaXY7XG4gICAgfVxuXG4gICAgLy8gc2VhcmNoIGJveCB0byBzZWFyY2ggYW1vbmcgb3B0aW9uc1xuICAgIHByaXZhdGUgY3JlYXRlU2VhcmNoRm9yTXVsdGlzZWxlY3QoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHRoaXMubXVsdGlTZWFyY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICB0aGlzLm11bHRpU2VhcmNoLnR5cGUgPSAndGV4dCc7XG4gICAgICAgIHRoaXMubXVsdGlTZWFyY2guY2xhc3NMaXN0LmFkZCgnZWNsLXRleHQtaW5wdXQnKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlYXJjaC5wbGFjZWhvbGRlciA9ICdTZWFyY2gnO1xuXG4gICAgICAgIHRoaXMubXVsdGlTZWFyY2guYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlYXJjaC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25TZWFyY2hPcHRpb25zKTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbCA9IHRoaXMubXVsdGlTZWFyY2g7XG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpU2VhcmNoO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3B0aW9uV2l0aENoZWNrYm94KGVsOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgaWRTdHIgPSAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgaWQgPSAnaWQtJyArIGVsLnZhbHVlICsgaWRTdHIuc3Vic3RyaW5nKGlkU3RyLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcblxuICAgICAgICBjb25zdCBjaGVja2JveERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgIGlmIChlbC5jc3NDbGFzc2VzKSB7XG4gICAgICAgICAgICBlbC5jc3NDbGFzc2VzLnNwbGl0KCcgJykuZm9yRWFjaChjbCA9PiB7XG4gICAgICAgICAgICAgICAgY2hlY2tib3hEaXYuY2xhc3NMaXN0LmFkZChjbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94SW5wdXQgPSB0aGlzLmNyZWF0ZUNoZWNrYm94SW5wdXQoaWQsIGVsLnZhbHVlKTtcbiAgICAgICAgaWYgKGVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjaGVja2JveERpdi5jbGFzc0xpc3QuYWRkKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJyk7XG4gICAgICAgICAgICBjaGVja2JveElucHV0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoZWNrYm94SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25PcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbC5zZWxlY3RlZCB8fCAodGhpcy5zZWxlY3RlZFZhbHVlcy5pbmRleE9mKGVsLnZhbHVlKSA+IC0xKSkge1xuICAgICAgICAgICAgY2hlY2tib3hJbnB1dC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9PT0gJycgPyBlbC5sYWJlbCA6XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlICsgJywnICsgZWwubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICBjaGVja2JveElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25Pbk9wdGlvbik7XG4gICAgICAgIGNoZWNrYm94RGl2LmFwcGVuZENoaWxkKGNoZWNrYm94SW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrYm94TGFiZWwgPSB0aGlzLmNyZWF0ZUNoZWNrYm94TGFiZWwoZWwubGFiZWwsIGlkKTtcbiAgICAgICAgY2hlY2tib3hEaXYuYXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7XG5cbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMucHVzaChjaGVja2JveERpdik7XG4gICAgICAgIHJldHVybiBjaGVja2JveERpdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoZWNrYm94TGFiZWwodGV4dDogc3RyaW5nLCBpZDogc3RyaW5nKTogSFRNTExhYmVsRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94TGFiZWwgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEVjbENoZWNrYm94TGFiZWxDb21wb25lbnQpO1xuICAgICAgICBjaGVja2JveExhYmVsLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuaHRtbEZvciA9IGlkO1xuXG4gICAgICAgIGNvbnN0IHRleHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0ZXh0U3Bhbi5pbm5lckhUTUwgPSB0ZXh0O1xuXG4gICAgICAgIGNoZWNrYm94TGFiZWwubG9jYXRpb24ubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U3Bhbik7XG4gICAgICAgIHJldHVybiBjaGVja2JveExhYmVsLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDaGVja2JveElucHV0KGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGNoZWNrYm94SW5wdXQudHlwZSA9ICdjaGVja2JveCc7XG4gICAgICAgIGNoZWNrYm94SW5wdXQuY2xhc3NMaXN0LmFkZCgnZWNsLWNoZWNrYm94X19pbnB1dCcpO1xuICAgICAgICBjaGVja2JveElucHV0LmlkID0gaWQ7XG4gICAgICAgIGNoZWNrYm94SW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94SW5wdXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNdWx0aXNlbGVjdFRvb2xiYXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0VG9vbGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0VG9vbGJhci5jbGFzc0xpc3QuYWRkKCdlY2wtc2VsZWN0LW11bHRpcGxlLXRvb2xiYXInKTtcbiAgICAgICAgdGhpcy5jbGVhckJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICB0aGlzLmNsZWFyQnRuLmNsYXNzTGlzdC5hZGQoJ2VjbC1idXR0b24nKTtcbiAgICAgICAgdGhpcy5jbGVhckJ0bi5jbGFzc0xpc3QuYWRkKCdlY2wtYnV0dG9uLS1naG9zdCcpO1xuICAgICAgICB0aGlzLmNsZWFyQnRuLnR5cGUgPSAnYnV0dG9uJztcbiAgICAgICAgdGhpcy5jbGVhckJ0bi50ZXh0Q29udGVudCA9IHRoaXMuY2xlYXJBbGxUZXh0O1xuXG4gICAgICAgIHRoaXMuY2xvc2VCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5jbGFzc0xpc3QuYWRkKCdlY2wtYnV0dG9uJyk7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4uY2xhc3NMaXN0LmFkZCgnZWNsLWJ1dHRvbi0tcHJpbWFyeScpO1xuICAgICAgICB0aGlzLmNsb3NlQnRuLnRleHRDb250ZW50ID0gdGhpcy5jbG9zZVRleHQ7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4udHlwZSA9ICdidXR0b24nO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0VG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmNsZWFyQnRuKTtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFRvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5jbG9zZUJ0bik7XG5cbiAgICAgICAgdGhpcy5jbGVhckJ0bi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25DbGVhcik7XG4gICAgICAgIHRoaXMuY2xlYXJCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25DbGVhcik7XG5cbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25DbG9zZSk7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25DbG9zZSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVUb29sYmFyRGlzcGxheSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpc2VsZWN0VG9vbGJhcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRvb2xiYXJEaXNwbGF5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dNdWx0aXNlbGVjdFRvb2xiYXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0VG9vbGJhcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93TXVsdGlzZWxlY3RUb29sYmFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0VG9vbGJhci5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU11bHRpc2VsZWN0VG9vbGJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdFRvb2xiYXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNsaWNrT25DbGVhcigpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZmlsdGVyKGVsZW0gPT4gZWxlbS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgaWYgKCFpbnB1dC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RDb3VudGVyKDApO1xuICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdFRvb2xiYXIoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdChbdGhpcy5zZWxlY3RlZFZhbHVlc10pO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNsaWNrT25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25PbkNsb3NlKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2VDbGVhckFycm93VXAoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfTEVGVDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZUFycm93TGVmdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNsb3NlQ2xlYXJBcnJvd1VwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBjb25zdCBmaXJzdE9wdGlvbiA9IGN1cnJlbnRPcHRpb25zW2N1cnJlbnRPcHRpb25zLmxlbmd0aCAtIDFdLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBmaXJzdE9wdGlvbi5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DbG9zZUFycm93TGVmdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhckJ0bi5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlS2V5ZG93bk9uQ2xlYXIoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZUNsZWFyQXJyb3dVcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5BUlJPV19SSUdIVDoge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbGVhckFycm93UmlnaHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25DbGVhckFycm93UmlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvLyBBZGQvcmVtb3ZlIHZhbHVlcyBmcm9tIHRoZSBzZWxlY3QgaW5wdXRcbiAgICBwcml2YXRlIHVwZGF0ZUN1cnJlbnRWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c0FycmF5ID0gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheSA9IFtdO1xuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNWYWx1ZXNBcnJheS5wdXNoKCg8SFRNTElucHV0RWxlbWVudD5lbC5jaGlsZE5vZGVzWzBdKS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50c0FycmF5LnB1c2goZWwuY2hpbGROb2Rlc1sxXS50ZXh0Q29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gc2VsZWN0ZWRFbGVtZW50c1ZhbHVlc0FycmF5O1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgPSBzZWxlY3RlZEVsZW1lbnRzQXJyYXkuam9pbignLCcpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRvb2xiYXJEaXNwbGF5KCk7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RDb3VudGVyKHNlbGVjdGVkRWxlbWVudHNBcnJheS5sZW5ndGgpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU11bHRpc2VsZWN0Q291bnRlcihjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ291bnQucXVlcnlTZWxlY3Rvcignc3BhbicpLnRleHRDb250ZW50ID0gJycgKyBjb3VudDtcbiAgICAgICAgICAgIHRoaXMuc2hvd011bHRpc2VsZWN0Q291bnRlcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3RDb3VudGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVja2JveCB0byBzZWxlY3QgYWxsIHRoZSBlbGVtZW50c1xuICAgIHByaXZhdGUgY3JlYXRlTXVsdGlTZWxlY3RBbGwoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBpZFN0ciA9IChuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpO1xuICAgICAgICBjb25zdCBjaGVja2JveERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjaGVja2JveERpdi5jbGFzc0xpc3QuYWRkKCdlY2wtY2hlY2tib3gnKTtcbiAgICAgICAgY2hlY2tib3hEaXYuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fbXVsdGlwbGUtYWxsJyk7XG5cbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbCA9IHRoaXMuY3JlYXRlQ2hlY2tib3hJbnB1dCgnc2VsZWN0LW11bHRpcGxlLWFsbCcgKyBpZFN0ci5zdWJzdHJpbmcoaWRTdHIubGFzdEluZGV4T2YoJy4nKSArIDEpLCAnYWxsJyk7XG5cbiAgICAgICAgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25TZWxlY3RBbGwpO1xuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uU2VsZWN0QWxsKTtcblxuICAgICAgICBjaGVja2JveERpdi5hcHBlbmRDaGlsZCh0aGlzLmNoZWNrYm94U2VsZWN0QWxsKTtcblxuICAgICAgICB0aGlzLnNlbGVjdEFsbExhYmVsID0gdGhpcy5jcmVhdGVDaGVja2JveExhYmVsKHRoaXMuZ2V0U2VsZWN0QWxsTGFiZWxUZXh0KCksICdzZWxlY3QtbXVsdGlwbGUtYWxsJyArIGlkU3RyLnN1YnN0cmluZyhpZFN0ci5sYXN0SW5kZXhPZignLicpICsgMSkpO1xuICAgICAgICBjaGVja2JveERpdi5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdEFsbExhYmVsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxFbGwgPSBjaGVja2JveERpdjtcbiAgICAgICAgcmV0dXJuIGNoZWNrYm94RGl2O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0QWxsTGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdEFsbExhYmVsVGV4dH0gKCR7dGhpcy5nZXRBY3RpdmVPcHRpb25zKCkubGVuZ3RofSlgO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlT3B0aW9uc1dyYXBwZXIoKTogSFRNTEVsZW1lbnQge1xuXG4gICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBkaXYuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9fbXVsdGlwbGUtb3B0aW9ucycpO1xuICAgICAgICByZXR1cm4gZGl2O1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXkgPSBbXTtcbiAgICAgICAgLy8gU2VsZWN0IGFsbCB0aGUgZWxlbWVudHMsIHRoYXQgYXJlIG5vdCBkaXNhYmxlZFxuICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5maWx0ZXIoZWxlbSA9PiBlbGVtLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJykuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja2JveFNlbGVjdEFsbC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50c1ZhbHVlc0FycmF5LnB1c2goaW5wdXQudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzQXJyYXkucHVzaChlbC5jaGlsZE5vZGVzWzFdLnRleHRDb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZEVsZW1lbnRzVmFsdWVzQXJyYXk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IHNlbGVjdGVkRWxlbWVudHNBcnJheS5qb2luKCcsJyk7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RDb3VudGVyKHNlbGVjdGVkRWxlbWVudHNBcnJheS5sZW5ndGgpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRvb2xiYXJEaXNwbGF5KCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSWNvbkNvbXBvbmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGVjbEljb25Db21wb25lbnQgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEVjbEljb25Db21wb25lbnQpO1xuICAgICAgICBlY2xJY29uQ29tcG9uZW50Lmluc3RhbmNlLnNpemUgPSAncyc7XG4gICAgICAgIGVjbEljb25Db21wb25lbnQuaW5zdGFuY2UuaWNvbiA9ICdjb3JuZXItYXJyb3cnO1xuICAgICAgICBlY2xJY29uQ29tcG9uZW50Lmluc3RhbmNlLnRyYW5zZm9ybSA9ICdyb3RhdGUtMTgwJztcbiAgICAgICAgZWNsSWNvbkNvbXBvbmVudC5pbnN0YW5jZS5jbGFzcyA9ICdlY2wtc2VsZWN0X19pY29uLXNoYXBlJztcbiAgICAgICAgcmV0dXJuIGVjbEljb25Db21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUljb25Db250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBzZWxlY3RJY29uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHNlbGVjdEljb25Db250YWluZXIuY2xhc3NMaXN0LmFkZCgnZWNsLXNlbGVjdF9faWNvbicpO1xuICAgICAgICByZXR1cm4gc2VsZWN0SWNvbkNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uU2VhcmNoT3B0aW9ucyhldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qga2V5d29yZCA9IChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBsZXQgaXNNYXRjaEZvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmIChrZXl3b3JkID09PSAnJykge1xuICAgICAgICAgICAgaXNNYXRjaEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXNNYXRjaEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vUmVzdWx0c0ZvdW5kRXhpc3RzID0gKHRoaXMubXVsdGlEcm9wZG93bi5sYXN0Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNMQVNTX05PX1JFU1VMVFNfRk9VTkQpO1xuICAgICAgICBpZiAoIWlzTWF0Y2hGb3VuZCAmJiAhbm9SZXN1bHRzRm91bmRFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5hcHBlbmRDaGlsZCh0aGlzLm5vUmVzdWx0c0ZvdW5kKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc01hdGNoRm91bmQgJiYgbm9SZXN1bHRzRm91bmRFeGlzdHMpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5yZW1vdmVDaGlsZCh0aGlzLm5vUmVzdWx0c0ZvdW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbERpc2FibGVTdGF0dXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVNlbGVjdEFsbERpc2FibGVTdGF0dXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuZGlzYWJsZWQgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGggPCAyO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbEVsbC5jbGFzc0xpc3QudG9nZ2xlKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJywgdGhpcy5jaGVja2JveFNlbGVjdEFsbC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrYm94U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RDb3VudGVyKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3cml0ZVZhbHVlcyh2YWx1ZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c0FycmF5ID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMgJiYgdGhpcy5tdWx0aVNlbGVjdE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZpbHRlcihlbGVtID0+IHZhbHVlcy5pbmNsdWRlcygoPEhUTUxJbnB1dEVsZW1lbnQ+ZWxlbS5jaGlsZE5vZGVzWzBdKS52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgISg8SFRNTElucHV0RWxlbWVudD5lbGVtLmNoaWxkTm9kZXNbMF0pLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHNBcnJheS5wdXNoKGVsLmNoaWxkTm9kZXNbMV0udGV4dENvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0SW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC52YWx1ZSA9IHNlbGVjdGVkRWxlbWVudHNBcnJheS5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Db3VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RDb3VudGVyKHZhbHVlcy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RBbGxMYWJlbFRleHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTGFiZWwubGFzdEVsZW1lbnRDaGlsZC50ZXh0Q29udGVudCA9IGAke3RoaXMuc2VsZWN0QWxsTGFiZWxUZXh0fSAoJHt0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGh9KWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCdXR0b25zTGFiZWxUZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlQnRuLnRleHRDb250ZW50ID0gYCR7dGhpcy5jbG9zZVRleHR9YDtcbiAgICAgICAgdGhpcy5jbGVhckJ0bi50ZXh0Q29udGVudCA9IGAke3RoaXMuY2xlYXJBbGxUZXh0fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVUcmFuc2xhdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IFNFTEVDVF9BTExfS0VZID0gJ2VjbC5tdWx0aXNlbGVjdC5TRUxFQ1QtQUxMJztcbiAgICAgICAgY29uc3QgTk9fUkVTVUxUU19GT1VORF9LRVkgPSAnZWNsLm11bHRpc2VsZWN0Lk5PLVJFU1VMVFMtRk9VTkQnO1xuICAgICAgICBjb25zdCBDTE9TRV9LRVkgPSAnZWNsLmNvbW1vbi5DTE9TRSc7XG4gICAgICAgIGNvbnN0IENMRUFSX0FMTF9LRVkgPSAnZWNsLm11bHRpc2VsZWN0LkNMRUFSLUFMTCc7XG4gICAgICAgIGNvbnN0IFNFQVJDSF9LRVkgPSAnZWNsLmNvbW1vbi5TRUFSQ0gnO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLnN0cmVhbShbU0VMRUNUX0FMTF9LRVksIE5PX1JFU1VMVFNfRk9VTkRfS0VZLCBDTE9TRV9LRVksIENMRUFSX0FMTF9LRVksIFNFQVJDSF9LRVldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgodHJhbnNsYXRpb246IEpTT04pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vUmVzdWx0c0ZvdW5kVGV4dCA9IHRyYW5zbGF0aW9uW05PX1JFU1VMVFNfRk9VTkRfS0VZXTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlVGV4dCA9IHRyYW5zbGF0aW9uW0NMT1NFX0tFWV07XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckFsbFRleHQgPSB0cmFuc2xhdGlvbltDTEVBUl9BTExfS0VZXTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbnNMYWJlbFRleHQoKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnNlbGVjdEFsbExhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsTGFiZWxUZXh0ID0gdHJhbnNsYXRpb25bU0VMRUNUX0FMTF9LRVldO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdEFsbExhYmVsVGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0aGlzLm11bHRpU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTZWFyY2gucGxhY2Vob2xkZXIgPSB0cmFuc2xhdGlvbltTRUFSQ0hfS0VZXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuTXVsdGlzZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlEcm9wZG93bi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKGlkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCkuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24uZmlyc3RFbGVtZW50Q2hpbGQuaWQgPT09IGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNsaWNrT25NYWluSW5wdXQoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tdWx0aURyb3Bkb3duLnN0eWxlLmRpc3BsYXkgPSB0aGlzLm11bHRpRHJvcGRvd24uc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUtleWRvd25Pbk1haW5JbnB1dChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTWFpbklucHV0QXJyb3dEb3duKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWFpbklucHV0QXJyb3dEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vcGVuTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlS2V5ZG93bk9uU2VhcmNoKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWFyY2hBcnJvd0Rvd24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VhcmNoQXJyb3dVcChldnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5FU0NBUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlYXJjaEFycm93RG93bigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gY3VycmVudE9wdGlvbnNbMF0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBmaXJzdE9wdGlvbi5mb2N1cygpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWFyY2hBcnJvd1VwKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGlja09uU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdEFsbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlS2V5ZG93bk9uU2VsZWN0QWxsKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RBbGxBcnJvd0Rvd24oZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0QWxsQXJyb3dVcCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5FTlRFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwuY2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25TZWxlY3RBbGxBcnJvd0Rvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNpYmxpbmdDaGVja2JveCA9IGN1cnJlbnRPcHRpb25zWzBdLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgbmV4dFNpYmxpbmdDaGVja2JveC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlbGVjdEFsbEFycm93VXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoRWwuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNsaWNrT25PcHRpb24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlS2V5ZG93bk9uT3B0aW9uKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd0Rvd24oZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlIEtFWV9DT0RFLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93VXAoZXZ0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS0VZX0NPREUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICAoZXZ0LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLRVlfQ09ERS5UQUI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uVGFiKGV2dCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uQXJyb3dEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmlkKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBjdXJyZW50T3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0U2libGluZ0NoZWNrYm94ID0gY3VycmVudE9wdGlvbnNbaW5kZXggKyAxXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIG5leHRTaWJsaW5nQ2hlY2tib3guZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJCdG4uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25BcnJvd1VwKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKChldnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmlkKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2U2libGluZ0NoZWNrYm94ID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKClbaW5kZXggLSAxXS5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIHByZXZTaWJsaW5nQ2hlY2tib3guZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEVsLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uVGFiKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMoKGV2dC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuaWQpO1xuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RJbnB1dC5mb2N1cygpOyAvLyBUcmFwIHRhYlxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFjdGl2ZU9wdGlvbnMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpU2VsZWN0T3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJlxuICAgICAgICAgICAgIWl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKCdlY2wtY2hlY2tib3gtLWRpc2FibGVkJykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQWxsTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0SW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5ZG93bk9uTWFpbklucHV0KTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdElucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uTWFpbklucHV0KTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25TZWFyY2gpO1xuICAgICAgICB0aGlzLnNlYXJjaEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5vblNlYXJjaE9wdGlvbnMpO1xuICAgICAgICB0aGlzLmNoZWNrYm94U2VsZWN0QWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25PblNlbGVjdEFsbCk7XG4gICAgICAgIHRoaXMuY2hlY2tib3hTZWxlY3RBbGwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25TZWxlY3RBbGwpO1xuICAgICAgICB0aGlzLmNsZWFyQnRuLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleWRvd25PbkNsZWFyKTtcbiAgICAgICAgdGhpcy5jbGVhckJ0bi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2tPbkNsZWFyKTtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25DbG9zZSk7XG4gICAgICAgIHRoaXMuY2xvc2VCdG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUNsaWNrT25DbG9zZSk7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RPcHRpb25zLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hlY2JveEVsID0gZWwuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGNoZWNib3hFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlkb3duT25PcHRpb24pO1xuICAgICAgICAgICAgY2hlY2JveEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVDbGlja09uT3B0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kQ2FsbGJhY2tzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25Pbk1haW5JbnB1dCA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uTWFpbklucHV0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VhcmNoID0gdGhpcy5oYW5kbGVLZXlkb3duT25TZWFyY2guYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vblNlYXJjaE9wdGlvbnMgPSB0aGlzLm9uU2VhcmNoT3B0aW9ucy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25PblNlbGVjdEFsbCA9IHRoaXMuaGFuZGxlS2V5ZG93bk9uU2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bk9uT3B0aW9uID0gdGhpcy5oYW5kbGVLZXlkb3duT25PcHRpb24uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja09uTWFpbklucHV0ID0gdGhpcy5oYW5kbGVDbGlja09uTWFpbklucHV0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tPblNlbGVjdEFsbCA9IHRoaXMuaGFuZGxlQ2xpY2tPblNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrT25PcHRpb24gPSB0aGlzLmhhbmRsZUNsaWNrT25PcHRpb24uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja09uQ2xlYXIgPSB0aGlzLmhhbmRsZUNsaWNrT25DbGVhci5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25PbkNsZWFyID0gdGhpcy5oYW5kbGVLZXlkb3duT25DbGVhci5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd25PbkNsb3NlID0gdGhpcy5oYW5kbGVLZXlkb3duT25DbG9zZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsaWNrT25DbG9zZSA9IHRoaXMuaGFuZGxlQ2xpY2tPbkNsb3NlLmJpbmQodGhpcyk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
@@ -9159,6 +9159,9 @@ class EclMultiselectComponent extends ECLBaseDirective {
9159
9159
  this.multiSelectInput.value = null;
9160
9160
  }
9161
9161
  this.selectedValues = [];
9162
+ if (this.selectionCount) {
9163
+ this.updateMultiselectCounter(0);
9164
+ }
9162
9165
  }
9163
9166
  writeValues(values) {
9164
9167
  if (values) {