@rangertechnologies/ngnxt 2.1.119 → 2.1.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/esm2022/environments/version.mjs +5 -5
  2. package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +3 -2
  3. package/esm2022/lib/components/custom-table/custom-table.component.mjs +3 -2
  4. package/esm2022/lib/components/datatable/datatable.component.mjs +167 -22
  5. package/esm2022/lib/components/file-upload/file-upload.component.mjs +3 -2
  6. package/esm2022/lib/components/table-appendix/table-appendix.component.mjs +3 -2
  7. package/esm2022/lib/pages/booklet/booklet.component.mjs +38 -4
  8. package/esm2022/lib/pages/builder/element/element.component.mjs +39 -26
  9. package/esm2022/lib/pages/builder/properties/properties.component.mjs +680 -209
  10. package/esm2022/lib/pages/questionbook/questionbook.component.mjs +31 -4
  11. package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +39 -12
  12. package/esm2022/lib/services/change.service.mjs +1 -3
  13. package/esm2022/lib/services/form-builder.service.mjs +23 -4
  14. package/fesm2022/rangertechnologies-ngnxt.mjs +1022 -284
  15. package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
  16. package/lib/components/datatable/datatable.component.d.ts +14 -3
  17. package/lib/pages/booklet/booklet.component.d.ts +1 -0
  18. package/lib/pages/builder/element/element.component.d.ts +2 -0
  19. package/lib/pages/builder/properties/properties.component.d.ts +602 -41
  20. package/lib/pages/questionbook/questionbook.component.d.ts +3 -2
  21. package/lib/pages/questionnaire/questionnaire.component.d.ts +3 -2
  22. package/lib/services/form-builder.service.d.ts +14 -1
  23. package/package.json +1 -1
  24. package/rangertechnologies-ngnxt-2.1.121.tgz +0 -0
  25. package/rangertechnologies-ngnxt-2.1.119.tgz +0 -0
@@ -21,12 +21,10 @@ export class ChangeService {
21
21
  // Service message commands
22
22
  announceChange(changeValue) {
23
23
  // console.log('inside announceChange');
24
- console.log(changeValue);
25
24
  this.changeAnnouncedSource.next(changeValue);
26
25
  }
27
26
  confirmChange(childQuestion) {
28
27
  // console.log('inside confirmChange');
29
- console.log(childQuestion);
30
28
  this.changeConfirmedSource.next(childQuestion);
31
29
  }
32
30
  // VD 13Sep24 - databind changes
@@ -50,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
50
48
  providedIn: 'root'
51
49
  }]
52
50
  }], ctorParameters: () => [] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvY2hhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU8vQixNQUFNLE9BQU8sYUFBYTtJQUN4QixrREFBa0Q7SUFDbEQsZ0JBQWdCLENBQUM7SUFFakIsb0NBQW9DO0lBQzVCLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO0lBQ3JELHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUN6QyxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUN6QyxnQ0FBZ0M7SUFDeEIsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFFM0Msb0NBQW9DO0lBQ3BDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0QsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2RCxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxnQ0FBZ0M7SUFDaEMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFbEQsMkJBQTJCO0lBQzNCLGNBQWMsQ0FBQyxXQUEwQjtRQUN2Qyx3Q0FBd0M7UUFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhLENBQUMsYUFBcUI7UUFDakMsdUNBQXVDO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ2hDLFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVM7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzt3R0E1Q1UsYUFBYTs0R0FBYixhQUFhLGNBSFosTUFBTTs7NEZBR1AsYUFBYTtrQkFKekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VXcmFwcGVyIH0gZnJvbSAnLi4vbW9kZWwvY2hhbmdlV3JhcHBlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5leHBvcnQgY2xhc3MgQ2hhbmdlU2VydmljZSB7XG4gIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL29ic2VydmFibGVzXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLy8gT2JzZXJ2YWJsZSBwYXJlbnRRdWVzdGlvbiBzb3VyY2VzXG4gIHByaXZhdGUgY2hhbmdlQW5ub3VuY2VkU291cmNlID0gbmV3IFN1YmplY3Q8Q2hhbmdlV3JhcHBlcj4oKTtcbiAgcHJpdmF0ZSBjaGFuZ2VDb25maXJtZWRTb3VyY2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgdmFsaWRhdGlvblNvdXJjZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBmaWVsZFNvdXJjZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgLy8gVkQgMTNTZXAyNCAtIGRhdGFiaW5kIGNoYW5nZXNcbiAgcHJpdmF0ZSBjdXN0b21DaGFuZ2VzID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIC8vIE9ic2VydmFibGUgcGFyZW50UXVlc3Rpb24gc3RyZWFtc1xuICBjaGFuZ2VBbm5vdW5jZWQkID0gdGhpcy5jaGFuZ2VBbm5vdW5jZWRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gIGNoYW5nZUNvbmZpcm1lZCQgPSB0aGlzLmNoYW5nZUNvbmZpcm1lZFNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgc3VibWl0VmFsaWRhdGUkID0gdGhpcy52YWxpZGF0aW9uU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICBjaGFuZ2VGaWVsZCQgPSB0aGlzLmZpZWxkU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAvLyBWRCAxM1NlcDI0IC0gZGF0YWJpbmQgY2hhbmdlc1xuICBjdXN0b21DaGFuZ2UkID0gdGhpcy5jdXN0b21DaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIFNlcnZpY2UgbWVzc2FnZSBjb21tYW5kc1xuICBhbm5vdW5jZUNoYW5nZShjaGFuZ2VWYWx1ZTogQ2hhbmdlV3JhcHBlcikge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgYW5ub3VuY2VDaGFuZ2UnKTtcbiAgICBjb25zb2xlLmxvZyhjaGFuZ2VWYWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VBbm5vdW5jZWRTb3VyY2UubmV4dChjaGFuZ2VWYWx1ZSk7XG4gIH1cblxuICBjb25maXJtQ2hhbmdlKGNoaWxkUXVlc3Rpb246IHN0cmluZykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgY29uZmlybUNoYW5nZScpO1xuICAgIGNvbnNvbGUubG9nKGNoaWxkUXVlc3Rpb24pO1xuICAgIHRoaXMuY2hhbmdlQ29uZmlybWVkU291cmNlLm5leHQoY2hpbGRRdWVzdGlvbik7XG4gIH1cbiAgLy8gVkQgMTNTZXAyNCAtIGRhdGFiaW5kIGNoYW5nZXNcbiAgZGF0YUNoYW5nZXMoZGF0YTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBkYXRhIGJpbmQgY2hhbmdlIHNlcnZpY2UnKTtcbiAgICB0aGlzLmN1c3RvbUNoYW5nZXMubmV4dChkYXRhKTtcbiAgfVxuXG4gIHN1Ym1pdENoYW5nZSh2YWx1ZTpzdHJpbmcpe1xuICAgIHRoaXMudmFsaWRhdGlvblNvdXJjZS5uZXh0KHZhbHVlKTtcbiAgfVxuICBmaWVsZENoYW5nZSh2YWx1ZTphbnkpe1xuICAgY29uc29sZS5sb2coJ2dldFZhbHVlJyx2YWx1ZSk7XG4gICB0aGlzLmZpZWxkU291cmNlLm5leHQodmFsdWUpO1xuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvY2hhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU8vQixNQUFNLE9BQU8sYUFBYTtJQUN4QixrREFBa0Q7SUFDbEQsZ0JBQWdCLENBQUM7SUFFakIsb0NBQW9DO0lBQzVCLHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO0lBQ3JELHFCQUFxQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUN6QyxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUN6QyxnQ0FBZ0M7SUFDeEIsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFFM0Msb0NBQW9DO0lBQ3BDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0QsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2RCxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxnQ0FBZ0M7SUFDaEMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFbEQsMkJBQTJCO0lBQzNCLGNBQWMsQ0FBQyxXQUEwQjtRQUN2Qyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLGFBQXFCO1FBQ2pDLHVDQUF1QztRQUN2QyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxnQ0FBZ0M7SUFDaEMsV0FBVyxDQUFDLElBQVk7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBUztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO3dHQTFDVSxhQUFhOzRHQUFiLGFBQWEsY0FIWixNQUFNOzs0RkFHUCxhQUFhO2tCQUp6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5nZVdyYXBwZXIgfSBmcm9tICcuLi9tb2RlbC9jaGFuZ2VXcmFwcGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VTZXJ2aWNlIHtcbiAgLy8gUmVmZXJlbmNlOiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvb2JzZXJ2YWJsZXNcbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvLyBPYnNlcnZhYmxlIHBhcmVudFF1ZXN0aW9uIHNvdXJjZXNcbiAgcHJpdmF0ZSBjaGFuZ2VBbm5vdW5jZWRTb3VyY2UgPSBuZXcgU3ViamVjdDxDaGFuZ2VXcmFwcGVyPigpO1xuICBwcml2YXRlIGNoYW5nZUNvbmZpcm1lZFNvdXJjZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uU291cmNlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIGZpZWxkU291cmNlID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAvLyBWRCAxM1NlcDI0IC0gZGF0YWJpbmQgY2hhbmdlc1xuICBwcml2YXRlIGN1c3RvbUNoYW5nZXMgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgLy8gT2JzZXJ2YWJsZSBwYXJlbnRRdWVzdGlvbiBzdHJlYW1zXG4gIGNoYW5nZUFubm91bmNlZCQgPSB0aGlzLmNoYW5nZUFubm91bmNlZFNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgY2hhbmdlQ29uZmlybWVkJCA9IHRoaXMuY2hhbmdlQ29uZmlybWVkU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICBzdWJtaXRWYWxpZGF0ZSQgPSB0aGlzLnZhbGlkYXRpb25Tb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gIGNoYW5nZUZpZWxkJCA9IHRoaXMuZmllbGRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gIC8vIFZEIDEzU2VwMjQgLSBkYXRhYmluZCBjaGFuZ2VzXG4gIGN1c3RvbUNoYW5nZSQgPSB0aGlzLmN1c3RvbUNoYW5nZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8gU2VydmljZSBtZXNzYWdlIGNvbW1hbmRzXG4gIGFubm91bmNlQ2hhbmdlKGNoYW5nZVZhbHVlOiBDaGFuZ2VXcmFwcGVyKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBhbm5vdW5jZUNoYW5nZScpO1xuICAgIHRoaXMuY2hhbmdlQW5ub3VuY2VkU291cmNlLm5leHQoY2hhbmdlVmFsdWUpO1xuICB9XG5cbiAgY29uZmlybUNoYW5nZShjaGlsZFF1ZXN0aW9uOiBzdHJpbmcpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIGNvbmZpcm1DaGFuZ2UnKTtcbiAgICB0aGlzLmNoYW5nZUNvbmZpcm1lZFNvdXJjZS5uZXh0KGNoaWxkUXVlc3Rpb24pO1xuICB9XG4gIC8vIFZEIDEzU2VwMjQgLSBkYXRhYmluZCBjaGFuZ2VzXG4gIGRhdGFDaGFuZ2VzKGRhdGE6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgZGF0YSBiaW5kIGNoYW5nZSBzZXJ2aWNlJyk7XG4gICAgdGhpcy5jdXN0b21DaGFuZ2VzLm5leHQoZGF0YSk7XG4gIH1cblxuICBzdWJtaXRDaGFuZ2UodmFsdWU6c3RyaW5nKXtcbiAgICB0aGlzLnZhbGlkYXRpb25Tb3VyY2UubmV4dCh2YWx1ZSk7XG4gIH1cbiAgZmllbGRDaGFuZ2UodmFsdWU6YW55KXtcbiAgIGNvbnNvbGUubG9nKCdnZXRWYWx1ZScsdmFsdWUpO1xuICAgdGhpcy5maWVsZFNvdXJjZS5uZXh0KHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -98,7 +98,7 @@ export class FormBuilderService {
98
98
  "readOnly": false,
99
99
  "uniqueIdentifier": element.id
100
100
  };
101
- let fieldsMeta = [...(JSON.parse(this.formElements[index].fieldsMeta || "[{}]")), tempFieldsMeta];
101
+ let fieldsMeta = [...(typeof this.formElements[index].fieldsMeta === 'object' ? this.formElements[index].fieldsMeta || [{}] : JSON.parse(this.formElements[index].fieldsMeta)), tempFieldsMeta];
102
102
  fieldsMeta = JSON.stringify(fieldsMeta);
103
103
  if (index !== -1) {
104
104
  elements[index] = { ...elements[index], columns: updatedColumns, fieldsMeta: fieldsMeta };
@@ -108,7 +108,7 @@ export class FormBuilderService {
108
108
  this.formElements = elements;
109
109
  this.formElementsSubject.next([...this.formElements]);
110
110
  // Log for debugging
111
- console.log("Updated form elements:", this.formElements);
111
+ // console.log("Updated form elements:", this.formElements);
112
112
  }
113
113
  updateElement(index, updates) {
114
114
  const elements = [...this.getElements()];
@@ -160,9 +160,28 @@ export class FormBuilderService {
160
160
  // SKS19MAR25 set the selected table column
161
161
  setSelectedTableElement(index, event) {
162
162
  this.currentElement = this.formElements[index];
163
- this.selectTableColumn = event?.column;
163
+ if (this.currentElement?.type === 'Table') {
164
+ this.currentElement['fieldsMeta'] = typeof this.currentElement?.fieldsMeta === 'object' ? this.currentElement?.fieldsMeta : JSON.parse(this.currentElement.fieldsMeta || [{}]);
165
+ }
166
+ const foundItem = this.currentElement?.type === 'Table' ? this.currentElement['fieldsMeta'].find(item => item['apiName'] === event?.column) : undefined;
167
+ this.selectTableColumn = foundItem?.uniqueIdentifier;
164
168
  this.selectedElementSubject.next(index);
165
169
  }
170
+ removeSelectedTableElement(index, event) {
171
+ // console.log("ddd",index, event)
172
+ this.currentElement = this.formElements[index];
173
+ if (this.currentElement?.type === 'Table') {
174
+ this.currentElement['fieldsMeta'] = typeof this.currentElement?.fieldsMeta === 'object' ? this.currentElement?.fieldsMeta : JSON.parse(this.currentElement.fieldsMeta || '[{}]');
175
+ // Find the index of the item
176
+ const itemIndex = this.currentElement['fieldsMeta'].findIndex(item => item['apiName'] === event?.column);
177
+ // Remove the item if found
178
+ if (itemIndex !== -1) {
179
+ this.currentElement['fieldsMeta'].splice(itemIndex, 1);
180
+ }
181
+ }
182
+ this.selectTableColumn = null;
183
+ this.elementUpdate(index, this.currentElement);
184
+ }
166
185
  // SKS19MAR25 get the selected table column
167
186
  getSelectTableColumn() {
168
187
  return this.selectTableColumn;
@@ -245,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
245
264
  providedIn: 'root',
246
265
  }]
247
266
  }], ctorParameters: () => [] });
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUEwRHBDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdELHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDckQsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUs7SUFDVCxTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFFaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9ELGNBQWMsQ0FBTTtJQUNwQixpQkFBaUIsQ0FBTTtJQUN2Qix5RUFBeUU7SUFFekU7UUFDRSx3Q0FBd0M7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGNB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LElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7d0dBeFBVLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBUCAyMkpBTjI1XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlcy9idWlsZGVyL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbnRlcmZhY2UgRm9ybUVsZW1lbnQge1xuICBvcmRlcjogbnVtYmVyO1xuICBpZDogYW55O1xuICBuYW1lOiBhbnk7XG4gIHZhbHVlPzogYW55O1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU6IHN0cmluZztcbiAgcXVlc3Rpb25UZXh0Pzogc3RyaW5nO1xuICBxdWVzdGlvbj86IHN0cmluZztcbiAgaGVscFRleHQ/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgaXNSZWFkT25seT86IGJvb2xlYW47XG4gIGlzSGlkZGVuPzogYm9vbGVhbjtcbiAgaXNEYXRlQmFja3dhcmQ/OiBib29sZWFuO1xuICBpc0RhdGVGb3J3YXJkPzogYm9vbGVhbjtcbiAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gIGlzVGl0bGU/OiBib29sZWFuO1xuICBuZXh0UXVlc3Rpb24/OiBhbnk7XG4gIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucz86IGFueTtcbiAgcXVlc3Rpb25OdW1iZXI/OiBudW1iZXI7XG4gIHF1ZXN0aW9uQm9va0lkPzogYW55O1xuICBzaXplPzogbnVtYmVyO1xuICBwYXJlbnRRdWVzdGlvbj86IGFueTtcbiAgc3ViVGV4dD86IGFueTtcbiAgZmllbGRzTWV0YT86IGFueTtcbiAgcmVjb3JkVHlwZU5hbWU/OiBhbnk7XG4gIHJlY29yZFR5cGVJZD86IGFueTtcbiAgdHJhY2tpbmdJZD86IGFueTtcbiAgZGF0ZVRleHQ/OiBhbnk7XG4gIHRpbWVUZXh0PzogYW55O1xuICByZWNvcmRJZD86IGFueTtcbiAgcWJSZWZlcmVuY2U/OiBhbnk7XG4gIHFiUmVmZXJlbmNlUXVlc3Rpb25zPzogYW55O1xuICBxdWVzdGlvbkJvb2tTdWJUaXRsZT86IGFueTtcbiAgc3R5bGU/OiBhbnk7XG4gIHRpdGxlPzogYW55O1xuICBzdWJUaXRsZT86IGFueTtcbiAgcmVmZXJlbmNlRmllbGQ/OiBhbnk7XG4gIGFkZGl0aW9uYWxSaWNoQ29udGVudD86IGFueTtcbiAgZ3JvdXBOYW1lPzogYW55O1xuICB4MjRIb3Vycz86IGJvb2xlYW47XG4gIGNvbHVtbnM/OiBhbnk7XG4gIGRhdGE/OiBhbnk7XG4vLyBBUCAyNUZFQjI1IC0gb3B0aW9ucyBhcnJheVxuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogYW55O1xuICAgIHF1ZXN0aW9uSWQ6IGFueTtcbiAgICBuZXh0UXVlc3Rpb246IGFueTtcbiAgICBuYW1lOiBhbnk7XG4gICAgaWQ6IGFueTtcbn0+O1xuXG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHM6IEZvcm1FbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRWxlbWVudFtdPihbXSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRFbGVtZW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG4gIHByaXZhdGUgc2VsZWN0SGVhZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBlbGVtZW50Q29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gIGJvb2s6YW55O1xuICB1bmlxdWVfaWQ6IGFueTtcbiAgdGVtcEVsZW06IGFueVtdO1xuXG4gIGZvcm1FbGVtZW50cyQgPSB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdGVkRWxlbWVudCQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdEhlYWRlclN1YmplY3QkID0gdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBjdXJyZW50RWxlbWVudDogYW55O1xuICBzZWxlY3RUYWJsZUNvbHVtbjogYW55O1xuICAvLyBib29rOiB7IGJvb2tRdWVzdGlvbnNNYXA6IHsgdW5pcXVlX2lkOiB7IHN1YlF1ZXN0aW9uczogYW55W107IH07IH07IH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gTG9hZCBzYXZlZCBlbGVtZW50cyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBzYXZlZEZvcm1FbGVtZW50cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtRWxlbWVudHMnKTtcbiAgICBpZiAoc2F2ZWRGb3JtRWxlbWVudHMgKSB7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IEpTT04ucGFyc2Uoc2F2ZWRGb3JtRWxlbWVudHMpO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyB0aGlzLmJvb2sgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdib29rJykgfHwgJ3t9Jyk7XG4gICAgfVxuICB9XG4gIGludGlhbGl6ZUJvb2soYm9vayA6IGFueSl7XG4gICAgdGhpcy5ib29rID0gYm9vaztcbiAgICAvLyBBUCAxM01BUjI1IC0gR2V0IHRoZSB1bmlxdWUgaWQgaW4gdGhlIGJvb2tRdWVzdGlvbnNNYXAgXG4gICAgdGhpcy51bmlxdWVfaWQgPSBPYmplY3Qua2V5cyhib29rLmJvb2tRdWVzdGlvbnNNYXApWzBdO1xuXG4gIH1cbm5ld0Jvb2soKXtcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IHV1aWR2NCgpO1xuICAgIHRoaXMuYm9vayA9IHtcbiAgICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xuICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbXSxcbiAgICAgICAgJ3R5cGUnOidCb29rJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ3F1ZXN0aW9uYm9vayc6IHtcbiAgICAgICAgXCJhY3Rpb25cIjogXCJbe1xcXCJuYW1lXFxcIjogXFxcIkNhbmNlbFxcXCIsIFxcXCJldmVudHRvZW1pdFxcXCI6IFxcXCJjbG9zZVxcXCIsIFxcXCJhbHRcXFwiOlxcXCJcXFwifSx7XFxcIm5hbWVcXFwiOiBcXFwiU2F2ZVxcXCIsIFxcXCJldmVudHRvZW1pdFxcXCI6IFxcXCJzdWJtaXRcXFwiLCBcXFwiYWx0XFxcIjpcXFwiXFxcIixcXFwiZW5kcG9pbnRcXFwiOlxcXCJcXFwiLFxcXCJtZXRob2RcXFwiOlxcXCJQT1NUXFxcIn1dXCJcbiAgICAgICAgfSxcbiAgICAgICdyZWNvcmRzJzogW3tcbiAgICAgICAgJ2lkJzogdGhpcy51bmlxdWVfaWQsXG4gICAgICAgICd0aXRsZSc6ICdVbnRpdGxlZCcsXG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbe31dXG4gICAgICAgIH1dXG4gICAgfVxufVxuLy8gQVAgMjZGRUIyNSAtIGNsZWFyIHRoZSBmb3JtIGVsZW1lbnRzIFxuICBjbGVhckVsZW1lbnRzKCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gR2V0IHRoZSBlbGVtZW50IGNvbXBvbmVudCByZWZlcmVuY2VcbiAgZ2V0RWxlbWVudENvbXBvbmVudCgpOiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudENvbXBvbmVudDtcbiAgfVxuXG4gIHNldEVsZW1lbnRDb21wb25lbnQoY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgdGhpcy5lbGVtZW50Q29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgLy8gQWRkIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGZvcm1cbiAgYWRkRWxlbWVudChlbGVtZW50OiBGb3JtRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghZWxlbWVudC5vcHRpb25zKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSBbXTsgLy8gb3B0aW9ucyBpcyBpbml0aWFsaXplZFxuICAgIH1cbiAgICBlbGVtZW50WydxdWVzdGlvbkJvb2tJZCddID0gdGhpcy51bmlxdWVfaWQ7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvLyBTS1MxM01BUjI1IGFkZCB0YWJsZSBlbGVtZW50XG4gIGFkZFRhYmxlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcbiAgICAgLy9TS1MxM01BUjI1IEVuc3VyZSBjdXJyZW50RWxlbWVudCBleGlzdHNcbiAgICAgaWYgKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XG4gICAgLy8gQ2xvbmUgZWxlbWVudHMgYXJyYXlcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICBcbiAgICAvLyBTS1MxM01BUjI1IEZpbmQgdGhlIGVsZW1lbnQgYW5kIHVwZGF0ZSBpdHMgY29sdW1uc1xuICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudHMuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB0aGlzLmN1cnJlbnRFbGVtZW50LmlkKTtcbiAgXG4gICAgLy8gQ2xvbmUgY29sdW1ucyBhcnJheSB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICBjb25zdCB1cGRhdGVkQ29sdW1ucyA9IFsuLi4odGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmNvbHVtbnMgfHwgW10pLCBlbGVtZW50XTtcbiAgICBsZXQgdGVtcEZpZWxkc01ldGEgPSB7IFxuICAgICAgJ2xhYmVsJyA6IGVsZW1lbnQubGFiZWwsXG4gICAgICAnYXBpTmFtZScgOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgIFwiaXNkZWxldGVkXCIgOiBmYWxzZSxcbiAgICAgIFwib3JkZXJieWZsYWdcIiA6IGZhbHNlLFxuICAgICAgXCJmaWx0ZXJmbGFnXCIgOiBmYWxzZSxcbiAgICAgIFwib3V0cHV0RmxhZ1wiIDogdHJ1ZSxcbiAgICAgIFwiaXNjaGlsZFwiIDogZmFsc2UsXG4gICAgICBcInJlc3VsdGFudGZsYWdcIiA6IGZhbHNlLFxuICAgICAgXCJzZWFyY2hmbGFnXCIgOiBmYWxzZSxcbiAgICAgIFwiZmxkVHlwZVwiIDogZWxlbWVudC50eXBlLFxuICAgICAgXCJyZWFkT25seVwiIDogZmFsc2UsXG4gICAgICBcInVuaXF1ZUlkZW50aWZpZXJcIiA6IGVsZW1lbnQuaWRcbiAgICAgIH1cbiAgICBsZXQgZmllbGRzTWV0YSA9IFsuLi4oSlNPTi5wYXJzZSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSB8fCBcIlt7fV1cIikpLCB0ZW1wRmllbGRzTWV0YV0gYXMgYW55O1xuICAgIGZpZWxkc01ldGEgPSBKU09OLnN0cmluZ2lmeShmaWVsZHNNZXRhKTtcbiAgICBcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgY29sdW1uczogdXBkYXRlZENvbHVtbnMgLCBmaWVsZHNNZXRhIDogZmllbGRzTWV0YX07XG4gICAgfVxuICBcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZvcm0gZWxlbWVudHNcbiAgICAvLyB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgXG4gICAgLy8gTG9nIGZvciBkZWJ1Z2dpbmdcbiAgICBjb25zb2xlLmxvZyhcIlVwZGF0ZWQgZm9ybSBlbGVtZW50czpcIiwgIHRoaXMuZm9ybUVsZW1lbnRzKTtcbiAgfVxuICBcbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7XG4gICAgICAgICAgLi4uZWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgICAgb3B0aW9uczogdXBkYXRlcy5vcHRpb25zIHx8IGVsZW1lbnRzW2luZGV4XS5vcHRpb25zIHx8IFtdLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlc1xuICAgICAgfTtcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCkge1xuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XG4gICAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlcy5yZXF1aXJlZCA/IGAke3F1ZXN0aW9uVGV4dH0gKmAgOiBxdWVzdGlvblRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHsgLi4uZWxlbWVudHNbaW5kZXhdLCAuLi51cGRhdGVzIH07XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSBmYWxzZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcbiAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gIH1cbnVwZGF0ZVRpdGxlKGV2ZW50OiBhbnkpe1xuICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgb2YgdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgYm9vayAgXG4gIHRoaXMuYm9vay5yZWNvcmRzWzBdLnRpdGxlID0gZXZlbnQ7XG59XG4gIHNldFNlbGVjdGVkRWxlbWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICB9XG4gIC8vIFNLUzE5TUFSMjUgc2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXggOiBhbnksIGV2ZW50OiBhbnkpe1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gZXZlbnQ/LmNvbHVtbjtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QubmV4dChpbmRleCk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSBnZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGNvbHVtblxuICBnZXRTZWxlY3RUYWJsZUNvbHVtbigpe1xuICAgIHJldHVybiB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uO1xuICB9XG4gIHNlbGVjdEhlYWRpbmcoZXZlbnQ6IGFueSkge1xuICAgIC8vQVAtMTBNQVIyNSBFbWl0cyB0aGUgc2VsZWN0ZWQgaGVhZGluZyBldmVudCAgXG4gICAgdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0Lm5leHQoZXZlbnQpO1xuICB9XG5cblxuICBnZXRFbGVtZW50cygpOiBGb3JtRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gKHtcbiAgICAgIC4uLmVsZW1lbnQsXG4gICAgICBvcHRpb25zOiBlbGVtZW50Lm9wdGlvbnMgfHwgW10sICAgICBcbiAgICB9KSk7XG4gIH1cbiAgc29ydEVsZW1lbnRzQnlPcmRlcigpOiB2b2lkIHtcbiAgICAvL0FQLTEwTUFSMjUgU29ydCBlbGVtZW50cyBieSBjdXJyZW50IG9yZGVyXG4gICAgdGhpcy5mb3JtRWxlbWVudHMuc29ydCgoYSwgYikgPT4gYS5xdWVzdGlvbk51bWJlciAtIGIucXVlc3Rpb25OdW1iZXIpO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBlbGVtZW50LnF1ZXN0aW9uTnVtYmVyID0gaW5kZXggKyAxO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xuICB9XG4gIC8vQVAtMTBNQVIyNSBSZXR1cm5zIHRoZSBjdXJyZW50IGJvb2sgZGF0YSAgXG4gZ2V0Qm9vaygpe1xuICAgIHJldHVybiB0aGlzLmJvb2s7XG4gfVxuIC8vIEluIEZvcm1CdWlsZGVyU2VydmljZVxuIGRvd25sb2FkRWxlbWVudCgpIHtcbiAgdGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdLnN1YlF1ZXN0aW9ucyA9IHRoaXMuZm9ybUVsZW1lbnRzO1xuICBjb25zb2xlLmxvZygnYm9vaycsIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMpO1xuICBsZXQgdGVtcEVsZW1lbnQ6IGFueSA9IHt9O1xuXG4gIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoZWxlbWVudC50eXBlID09PSAnRHJvcGRvd24nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ1JhZGlvJyB8fCBlbGVtZW50LnR5cGUgPT09ICdDaGVja2JveCcpIHtcbiAgICAgIC8vQVAgMjVGRUIyNSAtIFN0b3JlIHRoZSBlbnRpcmUgcXVlc3Rpb24gd2l0aCBpdHMgb3B0aW9ucyB1bmRlciBpdHMgSURcbiAgICAgIHRlbXBFbGVtZW50W2VsZW1lbnQuaWRdID0ge1xuICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICBvcHRpb25zOiBlbGVtZW50Lm9wdGlvbnMgfHwgW11cbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICB0aGlzLmJvb2suc3FPcHRpb25zID0gdGVtcEVsZW1lbnQ7XG4gICAgcmV0dXJuIHRoaXMuYm9vaztcbiAgfVxuICAvLyBBUC0wNk1BUjI1IC0gRWxlbWVudCBuZXcgb3JkZXIgdXBkYXRlXG4gIHVwZGF0ZUVsZW1lbnRzT3JkZXIodXBkYXRlZEVsZW1lbnRzOiBGb3JtRWxlbWVudFtdKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbLi4udXBkYXRlZEVsZW1lbnRzXTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dCh0aGlzLmZvcm1FbGVtZW50cyk7XG4gIH1cbiAgLy8gUmVtb3ZlIGFuIGVsZW1lbnQgYnkgSURcbiAgLy8gU2F2ZSBlbGVtZW50cyB0byBsb2NhbFN0b3JhZ2UgYW5kIHVwZGF0ZSB0aGUgc3ViamVjdFxuICByZW1vdmVFbGVtZW50Q29tcG9uZW50KGlkOiBhbnkpIHtcbiAgICB0aGlzLnRlbXBFbGVtID0gW107XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHt9XG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5pZCAhPT0gaWQpIHtcbiAgICAgICAgdGhpcy50ZW1wRWxlbS5wdXNoKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gdGhpcy50ZW1wRWxlbTtcbiAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvLyBTS1MxOU1BUjI1IHVwZGF0ZSB0aGUgZWxlbWVudFxuICBlbGVtZW50VXBkYXRlKGluZGV4OiBhbnksZWxlbWVudDogYW55KXtcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcbiAgICAgICAgZWxlbWVudHNbaW5kZXhdID0gZWxlbWVudFxuICAgICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4uZWxlbWVudHNdKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgICAgfVxuICB9XG59XG4iXX0=
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFzRXBDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdELHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDckQsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUs7SUFDVCxTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFFaEIsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9ELGNBQWMsQ0FBTTtJQUNwQixpQkFBaUIsQ0FBTTtJQUN2Qix5RUFBeUU7SUFFekU7UUFDRSx3Q0FBd0M7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9ELElBQUksaUJBQWlCLEVBQUcsQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0RCxnRUFBZ0U7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFDRCxhQUFhLENBQUMsSUFBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQiwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpELENBQUM7SUFDSCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1Ysa0JBQWtCLEVBQUU7Z0JBQ2xCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNsQixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsTUFBTSxFQUFDLE1BQU07aUJBQ1o7YUFDRjtZQUNELGNBQWMsRUFBRTtnQkFDZCxRQUFRLEVBQUUsMEtBQTBLO2FBQ25MO1lBQ0gsU0FBUyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUNwQixPQUFPLEVBQUUsVUFBVTtvQkFDbkIsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUNuQixDQUFDO1NBQ0wsQ0FBQTtJQUNMLENBQUM7SUFDRCx3Q0FBd0M7SUFDdEMsYUFBYTtRQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxzQ0FBc0M7SUFDdEMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUEyQjtRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsVUFBVSxDQUFDLE9BQW9CO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7UUFDakQsQ0FBQztRQUNELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELCtCQUErQjtJQUMvQixlQUFlLENBQUMsT0FBWTtRQUN6Qix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUNsQyx1QkFBdUI7UUFDdkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLHFEQUFxRDtRQUNyRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLGtEQUFrRDtRQUNsRCxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RSxJQUFJLGNBQWMsR0FBRztZQUNuQixPQUFPLEVBQUcsT0FBTyxDQUFDLEtBQUs7WUFDdkIsU0FBUyxFQUFHLE9BQU8sQ0FBQyxTQUFTO1lBQzdCLFdBQVcsRUFBRyxLQUFLO1lBQ25CLGFBQWEsRUFBRyxLQUFLO1lBQ3JCLFlBQVksRUFBRyxLQUFLO1lBQ3BCLFlBQVksRUFBRyxJQUFJO1lBQ25CLFNBQVMsRUFBRyxLQUFLO1lBQ2pCLGVBQWUsRUFBRyxLQUFLO1lBQ3ZCLFlBQVksRUFBRyxLQUFLO1lBQ3BCLFNBQVMsRUFBRyxPQUFPLENBQUMsSUFBSTtZQUN4QixVQUFVLEVBQUcsS0FBSztZQUNsQixrQkFBa0IsRUFBRyxPQUFPLENBQUMsRUFBRTtTQUM5QixDQUFBO1FBQ0gsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBUSxDQUFDO1FBQ3hNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakIsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRyxVQUFVLEVBQUcsVUFBVSxFQUFDLENBQUM7UUFDN0YsQ0FBQztRQUVELGlDQUFpQztRQUNqQywyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEQsb0JBQW9CO1FBQ3BCLDZEQUE2RDtJQUMvRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWEsRUFBRSxPQUE2QjtRQUN4RCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUc7Z0JBQ2hCLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDbEIsR0FBRyxPQUFPO2dCQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRTthQUMxRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUgsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELE1BQU0sY0FBYyxHQUFHO2dCQUNyQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUMzQixHQUFHLE9BQU87YUFDWCxDQUFDO1lBQ0YsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN4RSxjQUFjLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDdEYsQ0FBQztnQkFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNwQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO29CQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELENBQUM7WUFDSCxDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZCLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksY0FBYyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNHLGNBQWMsQ0FBQyxZQUFZLEdBQUcsR0FBRyxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUM7WUFDbkUsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLGNBQWMsQ0FBQyxZQUFZLElBQUksY0FBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEgsY0FBYyxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1lBRUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDdEQsMkVBQTJFO1FBQzdFLENBQUM7SUFDSCxDQUFDO0lBQ0gsV0FBVyxDQUFDLEtBQVU7UUFDcEIsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNDLGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtJQUMvQixDQUFDO0lBQ0QsMkNBQTJDO0lBQzNDLHVCQUF1QixDQUFDLEtBQVcsRUFBRSxLQUFVO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5QyxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsTCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN4SixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxFQUFFLGdCQUFnQixDQUFBO1FBQ3BELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELDBCQUEwQixDQUFDLEtBQWEsRUFBRSxLQUFVO1FBQ2xELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsQ0FBQztZQUNqTCw2QkFBNkI7WUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pHLDJCQUEyQjtZQUMzQixJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNMLENBQUM7UUFDQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsMkNBQTJDO0lBQzNDLG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQVU7UUFDdEIsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QyxHQUFHLE9BQU87WUFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFO1NBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELG1CQUFtQjtRQUNqQiwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMzQyxPQUFPLENBQUMsY0FBYyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsNENBQTRDO0lBQzdDLE9BQU87UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixlQUFlO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0UsSUFBSSxXQUFXLEdBQVEsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMzRixzRUFBc0U7Z0JBQ3RFLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUc7b0JBQ3hCLEdBQUcsT0FBTztvQkFDVixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFO2lCQUMvQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0Qsd0NBQXdDO0lBQ3hDLG1CQUFtQixDQUFDLGVBQThCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCwwQkFBMEI7SUFDMUIsdURBQXVEO0lBQ3ZELHNCQUFzQixDQUFDLEVBQU87UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ3pDLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xDLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ2hDLGFBQWEsQ0FBQyxLQUFVLEVBQUMsT0FBWTtRQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFBO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQzt3R0E1UVUsa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFQIDIySkFOMjVcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2VzL2J1aWxkZXIvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmludGVyZmFjZSBGb3JtRWxlbWVudCB7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGlkOiBhbnk7XG4gIG5hbWU6IGFueTtcbiAgdmFsdWU/OiBhbnk7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdHlwZTogc3RyaW5nO1xuICBxdWVzdGlvblRleHQ/OiBzdHJpbmc7XG4gIHF1ZXN0aW9uPzogc3RyaW5nO1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xuICBpc0RhdGVCYWNrd2FyZD86IGJvb2xlYW47XG4gIGlzRGF0ZUZvcndhcmQ/OiBib29sZWFuO1xuICBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgaXNUaXRsZT86IGJvb2xlYW47XG4gIG5leHRRdWVzdGlvbj86IGFueTtcbiAgYWxsb3dlZEZpbGVFeHRlbnNpb25zPzogYW55O1xuICBxdWVzdGlvbk51bWJlcj86IG51bWJlcjtcbiAgcXVlc3Rpb25Cb29rSWQ/OiBhbnk7XG4gIHNpemU/OiBudW1iZXI7XG4gIHBhcmVudFF1ZXN0aW9uPzogYW55O1xuICBzdWJUZXh0PzogYW55O1xuICBmaWVsZHNNZXRhPzogYW55O1xuICBzdW1tYXJ5Um93cz86IGFueTtcbiAgc3VtbWFyeUNvbHVtbnM/OmFueTtcbiAgcmVjb3JkVHlwZU5hbWU/OiBhbnk7XG4gIHJlY29yZFR5cGVJZD86IGFueTtcbiAgdHJhY2tpbmdJZD86IGFueTtcbiAgZGF0ZVRleHQ/OiBhbnk7XG4gIHRpbWVUZXh0PzogYW55O1xuICByZWNvcmRJZD86IGFueTtcbiAgcWJSZWZlcmVuY2U/OiBhbnk7XG4gIHFiUmVmZXJlbmNlUXVlc3Rpb25zPzogYW55O1xuICBxdWVzdGlvbkJvb2tTdWJUaXRsZT86IGFueTtcbiAgc3R5bGU6IHtcbiAgICBsYWJlbENsYXNzIDogYW55LFxuICAgIGxhYmVsU3R5bGUgOiBhbnksXG4gICAgbGFiZWxWYWx1ZVN0eWxlIDogYW55LFxuICAgIGlucHV0Q2xhc3MgOiBhbnksXG4gICAgaW5wdXRTdHlsZSA6IGFueSxcbiAgICBzaG93TGFiZWwgOiBib29sZWFuLFxuICAgIGJvb2tTdHlsZSA6IGFueSxcbiAgICBkaXJlY3Rpb246IGFueSxcbiAgICBxdWVzdGlvblN0eWxlOiBhbnksXG4gIH0sXG4gIHRpdGxlPzogYW55O1xuICBzdWJUaXRsZT86IGFueTtcbiAgcmVmZXJlbmNlRmllbGQ/OiBhbnk7XG4gIGFkZGl0aW9uYWxSaWNoQ29udGVudD86IGFueTtcbiAgZ3JvdXBOYW1lPzogYW55O1xuICB4MjRIb3Vycz86IGJvb2xlYW47XG4gIGNvbHVtbnM/OiBhbnk7XG4gIGRhdGE/OiBhbnk7XG4vLyBBUCAyNUZFQjI1IC0gb3B0aW9ucyBhcnJheVxuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogYW55O1xuICAgIHF1ZXN0aW9uSWQ6IGFueTtcbiAgICBuZXh0UXVlc3Rpb246IGFueTtcbiAgICBuYW1lOiBhbnk7XG4gICAgaWQ6IGFueTtcbn0+O1xuXG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHM6IEZvcm1FbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRWxlbWVudFtdPihbXSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRFbGVtZW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG4gIHByaXZhdGUgc2VsZWN0SGVhZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgcHJpdmF0ZSBlbGVtZW50Q29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG4gIGJvb2s6YW55O1xuICB1bmlxdWVfaWQ6IGFueTtcbiAgdGVtcEVsZW06IGFueVtdO1xuXG4gIGZvcm1FbGVtZW50cyQgPSB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdGVkRWxlbWVudCQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHNlbGVjdEhlYWRlclN1YmplY3QkID0gdGhpcy5zZWxlY3RIZWFkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBjdXJyZW50RWxlbWVudDogYW55O1xuICBzZWxlY3RUYWJsZUNvbHVtbjogYW55O1xuICAvLyBib29rOiB7IGJvb2tRdWVzdGlvbnNNYXA6IHsgdW5pcXVlX2lkOiB7IHN1YlF1ZXN0aW9uczogYW55W107IH07IH07IH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gTG9hZCBzYXZlZCBlbGVtZW50cyBmcm9tIGxvY2FsU3RvcmFnZVxuICAgdGhpcy5mb3JtRWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBzYXZlZEZvcm1FbGVtZW50cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtRWxlbWVudHMnKTtcbiAgICBpZiAoc2F2ZWRGb3JtRWxlbWVudHMgKSB7XG4gICAgICB0aGlzLmZvcm1FbGVtZW50cyA9IEpTT04ucGFyc2Uoc2F2ZWRGb3JtRWxlbWVudHMpO1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyB0aGlzLmJvb2sgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdib29rJykgfHwgJ3t9Jyk7XG4gICAgfVxuICB9XG4gIGludGlhbGl6ZUJvb2soYm9vayA6IGFueSl7XG4gICAgdGhpcy5ib29rID0gYm9vaztcbiAgICAvLyBBUCAxM01BUjI1IC0gR2V0IHRoZSB1bmlxdWUgaWQgaW4gdGhlIGJvb2tRdWVzdGlvbnNNYXAgXG4gICAgdGhpcy51bmlxdWVfaWQgPSBPYmplY3Qua2V5cyhib29rLmJvb2tRdWVzdGlvbnNNYXApWzBdO1xuXG4gIH1cbm5ld0Jvb2soKXtcbiAgICB0aGlzLnVuaXF1ZV9pZCA9IHV1aWR2NCgpO1xuICAgIHRoaXMuYm9vayA9IHtcbiAgICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xuICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbXSxcbiAgICAgICAgJ3R5cGUnOidCb29rJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ3F1ZXN0aW9uYm9vayc6IHtcbiAgICAgICAgXCJhY3Rpb25cIjogXCJbe1xcXCJuYW1lXFxcIjogXFxcIkNhbmNlbFxcXCIsIFxcXCJldmVudHRvZW1pdFxcXCI6IFxcXCJjbG9zZVxcXCIsIFxcXCJhbHRcXFwiOlxcXCJcXFwifSx7XFxcIm5hbWVcXFwiOiBcXFwiU2F2ZVxcXCIsIFxcXCJldmVudHRvZW1pdFxcXCI6IFxcXCJzdWJtaXRcXFwiLCBcXFwiYWx0XFxcIjpcXFwiXFxcIixcXFwiZW5kcG9pbnRcXFwiOlxcXCJcXFwiLFxcXCJtZXRob2RcXFwiOlxcXCJQT1NUXFxcIn1dXCJcbiAgICAgICAgfSxcbiAgICAgICdyZWNvcmRzJzogW3tcbiAgICAgICAgJ2lkJzogdGhpcy51bmlxdWVfaWQsXG4gICAgICAgICd0aXRsZSc6ICdVbnRpdGxlZCcsXG4gICAgICAgICdzdWJRdWVzdGlvbnMnOiBbe31dXG4gICAgICAgIH1dXG4gICAgfVxufVxuLy8gQVAgMjZGRUIyNSAtIGNsZWFyIHRoZSBmb3JtIGVsZW1lbnRzIFxuICBjbGVhckVsZW1lbnRzKCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gR2V0IHRoZSBlbGVtZW50IGNvbXBvbmVudCByZWZlcmVuY2VcbiAgZ2V0RWxlbWVudENvbXBvbmVudCgpOiBFbGVtZW50Q29tcG9uZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudENvbXBvbmVudDtcbiAgfVxuXG4gIHNldEVsZW1lbnRDb21wb25lbnQoY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50KSB7XG4gICAgdGhpcy5lbGVtZW50Q29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgLy8gQWRkIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGZvcm1cbiAgYWRkRWxlbWVudChlbGVtZW50OiBGb3JtRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghZWxlbWVudC5vcHRpb25zKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSBbXTsgLy8gb3B0aW9ucyBpcyBpbml0aWFsaXplZFxuICAgIH1cbiAgICBlbGVtZW50WydxdWVzdGlvbkJvb2tJZCddID0gdGhpcy51bmlxdWVfaWQ7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvLyBTS1MxM01BUjI1IGFkZCB0YWJsZSBlbGVtZW50XG4gIGFkZFRhYmxlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcbiAgICAgLy9TS1MxM01BUjI1IEVuc3VyZSBjdXJyZW50RWxlbWVudCBleGlzdHNcbiAgICAgaWYgKCF0aGlzLmN1cnJlbnRFbGVtZW50KSByZXR1cm47XG4gICAgLy8gQ2xvbmUgZWxlbWVudHMgYXJyYXlcbiAgICBjb25zdCBlbGVtZW50cyA9IFsuLi50aGlzLmdldEVsZW1lbnRzKCldO1xuICBcbiAgICAvLyBTS1MxM01BUjI1IEZpbmQgdGhlIGVsZW1lbnQgYW5kIHVwZGF0ZSBpdHMgY29sdW1uc1xuICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudHMuZmluZEluZGV4KGVsID0+IGVsLmlkID09PSB0aGlzLmN1cnJlbnRFbGVtZW50LmlkKTtcbiAgXG4gICAgLy8gQ2xvbmUgY29sdW1ucyBhcnJheSB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICBjb25zdCB1cGRhdGVkQ29sdW1ucyA9IFsuLi4odGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLmNvbHVtbnMgfHwgW10pLCBlbGVtZW50XTtcbiAgICBsZXQgdGVtcEZpZWxkc01ldGEgPSB7IFxuICAgICAgJ2xhYmVsJyA6IGVsZW1lbnQubGFiZWwsXG4gICAgICAnYXBpTmFtZScgOiBlbGVtZW50LmZpZWxkTmFtZSxcbiAgICAgIFwiaXNkZWxldGVkXCIgOiBmYWxzZSxcbiAgICAgIFwib3JkZXJieWZsYWdcIiA6IGZhbHNlLFxuICAgICAgXCJmaWx0ZXJmbGFnXCIgOiBmYWxzZSxcbiAgICAgIFwib3V0cHV0RmxhZ1wiIDogdHJ1ZSxcbiAgICAgIFwiaXNjaGlsZFwiIDogZmFsc2UsXG4gICAgICBcInJlc3VsdGFudGZsYWdcIiA6IGZhbHNlLFxuICAgICAgXCJzZWFyY2hmbGFnXCIgOiBmYWxzZSxcbiAgICAgIFwiZmxkVHlwZVwiIDogZWxlbWVudC50eXBlLFxuICAgICAgXCJyZWFkT25seVwiIDogZmFsc2UsXG4gICAgICBcInVuaXF1ZUlkZW50aWZpZXJcIiA6IGVsZW1lbnQuaWRcbiAgICAgIH1cbiAgICBsZXQgZmllbGRzTWV0YSA9IFsuLi4odHlwZW9mIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XS5maWVsZHNNZXRhID09PSAnb2JqZWN0JyAgPyB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSB8fCBbe31dIDogSlNPTi5wYXJzZSh0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0uZmllbGRzTWV0YSkpLCB0ZW1wRmllbGRzTWV0YV0gYXMgYW55O1xuICAgIGZpZWxkc01ldGEgPSBKU09OLnN0cmluZ2lmeShmaWVsZHNNZXRhKTtcbiAgICBcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBlbGVtZW50c1tpbmRleF0gPSB7IC4uLmVsZW1lbnRzW2luZGV4XSwgY29sdW1uczogdXBkYXRlZENvbHVtbnMgLCBmaWVsZHNNZXRhIDogZmllbGRzTWV0YX07XG4gICAgfVxuICBcbiAgICAvLyBFbWl0IHRoZSB1cGRhdGVkIGZvcm0gZWxlbWVudHNcbiAgICAvLyB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgXG4gICAgLy8gTG9nIGZvciBkZWJ1Z2dpbmdcbiAgICAvLyBjb25zb2xlLmxvZyhcIlVwZGF0ZWQgZm9ybSBlbGVtZW50czpcIiwgIHRoaXMuZm9ybUVsZW1lbnRzKTtcbiAgfVxuICBcbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7XG4gICAgICAgICAgLi4uZWxlbWVudHNbaW5kZXhdLFxuICAgICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgICAgb3B0aW9uczogdXBkYXRlcy5vcHRpb25zIHx8IGVsZW1lbnRzW2luZGV4XS5vcHRpb25zIHx8IFtdLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XG4gICAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSxcbiAgICAgICAgLi4udXBkYXRlc1xuICAgICAgfTtcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCkge1xuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XG4gICAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlcy5yZXF1aXJlZCA/IGAke3F1ZXN0aW9uVGV4dH0gKmAgOiBxdWVzdGlvblRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRzW2luZGV4XSkge1xuICAgICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IHsgLi4uZWxlbWVudHNbaW5kZXhdLCAuLi51cGRhdGVzIH07XG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgc3BlY2lhbCBjYXNlc1xuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSBmYWxzZSAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcbiAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcbiAgICB9XG4gIH1cbnVwZGF0ZVRpdGxlKGV2ZW50OiBhbnkpe1xuICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgb2YgdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgYm9vayAgXG4gIHRoaXMuYm9vay5yZWNvcmRzWzBdLnRpdGxlID0gZXZlbnQ7XG59XG4gIHNldFNlbGVjdGVkRWxlbWVudChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICB0aGlzLnNlbGVjdFRhYmxlQ29sdW1uID0gbnVsbFxuICB9XG4gIC8vIFNLUzE5TUFSMjUgc2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQoaW5kZXggOiBhbnksIGV2ZW50OiBhbnkpe1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF1cbiAgICBpZih0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKXtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyAgPyB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLmN1cnJlbnRFbGVtZW50LmZpZWxkc01ldGEgfHwgW3t9XSk7XG4gICAgfVxuICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuY3VycmVudEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgPyB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZChpdGVtID0+IGl0ZW1bJ2FwaU5hbWUnXSA9PT0gZXZlbnQ/LmNvbHVtbikgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RUYWJsZUNvbHVtbiA9IGZvdW5kSXRlbT8udW5pcXVlSWRlbnRpZmllclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgfVxuICByZW1vdmVTZWxlY3RlZFRhYmxlRWxlbWVudChpbmRleDogbnVtYmVyLCBldmVudDogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coXCJkZGRcIixpbmRleCwgZXZlbnQpXG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLmN1cnJlbnRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuY3VycmVudEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuY3VycmVudEVsZW1lbnQuZmllbGRzTWV0YSB8fCAnW3t9XScpO1xuICAgICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgaXRlbVxuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZEluZGV4KGl0ZW0gPT4gaXRlbVsnYXBpTmFtZSddID09PSBldmVudD8uY29sdW1uKTtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGlmIGZvdW5kXG4gICAgICAgIGlmIChpdGVtSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRFbGVtZW50WydmaWVsZHNNZXRhJ10uc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgIHRoaXMuc2VsZWN0VGFibGVDb2x1bW4gPSBudWxsXG4gICAgIHRoaXMuZWxlbWVudFVwZGF0ZShpbmRleCx0aGlzLmN1cnJlbnRFbGVtZW50KVxuICB9XG4gIC8vIFNLUzE5TUFSMjUgZ2V0IHRoZSBzZWxlY3RlZCB0YWJsZSBjb2x1bW5cbiAgZ2V0U2VsZWN0VGFibGVDb2x1bW4oKXtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RUYWJsZUNvbHVtbjtcbiAgfVxuICBzZWxlY3RIZWFkaW5nKGV2ZW50OiBhbnkpIHtcbiAgICAvL0FQLTEwTUFSMjUgRW1pdHMgdGhlIHNlbGVjdGVkIGhlYWRpbmcgZXZlbnQgIFxuICAgIHRoaXMuc2VsZWN0SGVhZGVyU3ViamVjdC5uZXh0KGV2ZW50KTtcbiAgfVxuXG5cbiAgZ2V0RWxlbWVudHMoKTogRm9ybUVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVsZW1lbnRzLm1hcChlbGVtZW50ID0+ICh7XG4gICAgICAuLi5lbGVtZW50LFxuICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdLCAgICAgXG4gICAgfSkpO1xuICB9XG4gIHNvcnRFbGVtZW50c0J5T3JkZXIoKTogdm9pZCB7XG4gICAgLy9BUC0xME1BUjI1IFNvcnQgZWxlbWVudHMgYnkgY3VycmVudCBvcmRlclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnNvcnQoKGEsIGIpID0+IGEucXVlc3Rpb25OdW1iZXIgLSBiLnF1ZXN0aW9uTnVtYmVyKTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgZWxlbWVudC5xdWVzdGlvbk51bWJlciA9IGluZGV4ICsgMTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcbiAgfVxuICAvL0FQLTEwTUFSMjUgUmV0dXJucyB0aGUgY3VycmVudCBib29rIGRhdGEgIFxuIGdldEJvb2soKXtcbiAgICByZXR1cm4gdGhpcy5ib29rO1xuIH1cbiAvLyBJbiBGb3JtQnVpbGRlclNlcnZpY2VcbiBkb3dubG9hZEVsZW1lbnQoKSB7XG4gIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0aGlzLmZvcm1FbGVtZW50cztcbiAgY29uc29sZS5sb2coJ2Jvb2snLCB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zKTtcbiAgbGV0IHRlbXBFbGVtZW50OiBhbnkgPSB7fTtcblxuICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ0Ryb3Bkb3duJyB8fCBlbGVtZW50LnR5cGUgPT09ICdSYWRpbycgfHwgZWxlbWVudC50eXBlID09PSAnQ2hlY2tib3gnKSB7XG4gICAgICAvL0FQIDI1RkVCMjUgLSBTdG9yZSB0aGUgZW50aXJlIHF1ZXN0aW9uIHdpdGggaXRzIG9wdGlvbnMgdW5kZXIgaXRzIElEXG4gICAgICB0ZW1wRWxlbWVudFtlbGVtZW50LmlkXSA9IHtcbiAgICAgICAgLi4uZWxlbWVudCxcbiAgICAgICAgb3B0aW9uczogZWxlbWVudC5vcHRpb25zIHx8IFtdXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgdGhpcy5ib29rLnNxT3B0aW9ucyA9IHRlbXBFbGVtZW50O1xuICAgIHJldHVybiB0aGlzLmJvb2s7XG4gIH1cbiAgLy8gQVAtMDZNQVIyNSAtIEVsZW1lbnQgbmV3IG9yZGVyIHVwZGF0ZVxuICB1cGRhdGVFbGVtZW50c09yZGVyKHVwZGF0ZWRFbGVtZW50czogRm9ybUVsZW1lbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gWy4uLnVwZGF0ZWRFbGVtZW50c107XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQodGhpcy5mb3JtRWxlbWVudHMpO1xuICB9XG4gIC8vIFJlbW92ZSBhbiBlbGVtZW50IGJ5IElEXG4gIC8vIFNhdmUgZWxlbWVudHMgdG8gbG9jYWxTdG9yYWdlIGFuZCB1cGRhdGUgdGhlIHN1YmplY3RcbiAgcmVtb3ZlRWxlbWVudENvbXBvbmVudChpZDogYW55KSB7XG4gICAgdGhpcy50ZW1wRWxlbSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KG51bGwpO1xuICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSB7fVxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaWQgIT09IGlkKSB7XG4gICAgICAgIHRoaXMudGVtcEVsZW0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1FbGVtZW50cyA9IHRoaXMudGVtcEVsZW07XG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XG4gIH1cbiAgLy8gU0tTMTlNQVIyNSB1cGRhdGUgdGhlIGVsZW1lbnRcbiAgZWxlbWVudFVwZGF0ZShpbmRleDogYW55LGVsZW1lbnQ6IGFueSl7XG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XG4gICAgICAgIGVsZW1lbnRzW2luZGV4XSA9IGVsZW1lbnRcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBlbGVtZW50cztcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLmVsZW1lbnRzXSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcbiAgICAgIH1cbiAgfVxufVxuIl19