@piserve-tech/form-submission 1.3.141 → 1.3.142

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.
@@ -180,11 +180,11 @@ export class SubmitFormComponent {
180
180
  this.nextPage = this.pageDetails[1];
181
181
  }
182
182
  this.rowSetCount[0] = response.result.totalNumberRow;
183
- for (let i = 0; i < this.pageDetails.length; i++) {
184
- if (!this.pages[i]) {
185
- this.pages[i] = [];
186
- }
187
- }
183
+ // for (let i = 0; i < this.pageDetails.length; i++) {
184
+ // if (!this.pages[i]) {
185
+ // this.pages[i] = [];
186
+ // }
187
+ // }
188
188
  });
189
189
  }
190
190
  getSubmittedFormData() {
@@ -200,11 +200,11 @@ export class SubmitFormComponent {
200
200
  this.nextPage = this.pageDetails[1];
201
201
  }
202
202
  this.rowSetCount[0] = response.result.totalNumberRow;
203
- for (let i = 0; i < this.pageDetails.length; i++) {
204
- if (!this.pages[i]) {
205
- this.pages[i] = [];
206
- }
207
- }
203
+ // for (let i = 0; i < this.pageDetails.length; i++) {
204
+ // if (!this.pages[i]) {
205
+ // this.pages[i] = [];
206
+ // }
207
+ // }
208
208
  this.setUpFontFamily(response);
209
209
  if (this.enableGoogleRecaptcha) {
210
210
  this.getToken();
@@ -979,4 +979,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
979
979
  type: ViewChild,
980
980
  args: [NavigationTabsComponent]
981
981
  }] } });
982
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0sTUFBTSwrQkFBK0IsQ0FBQztBQVF4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBaUN2RixNQUFNLE9BQU8sbUJBQW1CO0lBNkQ5QixZQUNVLFdBQXdCLEVBQ3hCLE1BQXFCLEVBQ3JCLE1BQWMsRUFDZCxXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3BDLGlCQUFvQyxFQUNwQyxjQUFxQyxFQUNyQyxxQkFBNEM7UUFSNUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFyRXRELGFBQVEsR0FBc0IsSUFBSSxD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ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1hcHBlciBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWNhcHRjaGEuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50VHJhY2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbGVtZW50LXRyYWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tdGFicy9uYXZpZ2F0aW9uLXRhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIEFuc3dlciB7XG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgYW5zd2VyOiBhbnk7XG4gIGFuc3dlcklkPzogc3RyaW5nO1xuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xuICBmaWVsZHM/OiBhbnk7XG59XG5cbmludGVyZmFjZSBTdWJtaXNzaW9uIHtcbiAgc3VibWlzc2lvbklkPzogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbn1cblxuaW50ZXJmYWNlIEZvcm0ge1xuICBmb3JtSWQ6IHN0cmluZztcbiAgZGVsZXRlZFN1Ym1pc3Npb25zOiBhbnlbXTtcbiAgc3VibWlzc2lvbnM6IFN1Ym1pc3Npb25bXTtcbn1cblxuaW50ZXJmYWNlIFF1ZXN0aW9uQW5zd2Vyc1dyYXBwZXIge1xuICBwYXJlbnRJZDogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbiAgZm9ybXM6IEZvcm1bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN1Ym1pdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VibWl0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3VibWl0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcXVlc3Rpb246IFB1YmxpY0Zvcm0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbW9kdWxlTmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VibWlzc2lvbklkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYWNjZXB0ZWRMYW5ndWFnZTogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBhcGlDYWxsZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGN1cnJlbnRQYWdlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZChOYXZpZ2F0aW9uVGFic0NvbXBvbmVudCkgY2hpbGQhOiBOYXZpZ2F0aW9uVGFic0NvbXBvbmVudDtcblxuICBuYW1lOiBzdHJpbmcgPSAnJztcbiAgc2F2ZUF1dG9tYXRpY2FsbHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2F2ZUludGVydmFsOiBudW1iZXIgPSAwO1xuICBjdXN0b21pemVGb250OiBib29sZWFuID0gZmFsc2U7XG4gIGZvbnRGYW1pbHk6IHN0cmluZyA9ICcnO1xuICBmb250U2l6ZTogbnVtYmVyID0gMDtcbiAgZW5hYmxlRGF0YUV4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWxlRm9ybWF0czogc3RyaW5nW10gPSBbXTtcbiAgZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlc3Rpb25OdW1iZXJpbmc6IHN0cmluZyA9ICcnO1xuICBlbmFibGVHb29nbGVSZWNhcHRjaGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZ29vZ2xlUmVjYXB0Y2hhS2V5OiBzdHJpbmcgPSAnJztcbiAgZ29vZ2xlUmVjYXB0Y2hhU2VjcmV0OiBzdHJpbmcgPSAnJztcbiAgbmF2aWdhdGlvbjogc3RyaW5nID0gJyc7XG4gIG1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHBhZ2VzOiBhbnkgPSBbXTtcbiAgY3VycmVudFBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcHJldmlvdXNQYWdlOiBhbnkgPSB7fTtcbiAgY3VycmVudFBhZ2U6IGFueSA9IHt9O1xuICBuZXh0UGFnZTogYW55ID0ge307XG4gIGxhc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlc3Rpb25BbnN3ZXJzOiBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyID0ge1xuICAgIHBhcmVudElkOiAnJyxcbiAgICBhbnN3ZXJzOiBbXSxcbiAgICBmb3JtczogW10sXG4gIH07XG4gIGZpbGVzOiB7IHF1ZXN0aW9uSWQ6IHN0cmluZzsgZmlsZTogYW55IH1bXSA9IFtdO1xuICBwYXJlbnRRdWVzdGlvbnM6IGFueTtcbiAgc3VibWlzc2lvbjogYW55ID0ge307XG4gIHBhcmVudFF1ZXN0aW9uQW5zd2VyczogYW55O1xuICBwYXJlbnRTdWJtaXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xuICBzdWJtaXNzaW9uSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuICByZWNhcHRjaGFUb2tlbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgaXNSZWZyZXNoaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW50ZXJ2YWxJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG4gIHBhZ2VEZXRhaWxzOiBhbnkgPSBbXTtcbiAgcGFnZU51bWJlcjogbnVtYmVyID0gMTtcbiAgcm93U2V0OiBudW1iZXIgPSAwO1xuICByb3dTZXRDb3VudDogW251bWJlcl0gPSBbMF07XG4gIHJldHJ5Q291bnQ6IG51bWJlciA9IDA7XG4gICBtYXhSZXRyaWVzOm51bWJlciA9IDU7XG4gIGVsaWdpYmxlRm9yU3VibWlzc2lvbjogeyBzdGF0dXM6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZyB9ID0ge1xuICAgIHN0YXR1czogdHJ1ZSxcbiAgICBtZXNzYWdlOiAnJyxcbiAgfTtcbiAgaW5WYWxpZFF1ZXN0aW9uczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGFsbEVsZW1lbnRJZHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVib3VuY2VUaW1lcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNhcHRjaGFTZXJ2aWNlOiBSZWNhcHRjaGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFRyYWNrZXI6IEVsZW1lbnRUcmFja2VyU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0aW9uU2VydmljZTogRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxuICApIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICB0aGlzLnN1Ym1pc3Npb24gPSBuYXZpZ2F0aW9uPy5leHRyYXMuc3RhdGU/Llsnc3VibWlzc2lvbiddO1xuICAgIHRoaXMucGFyZW50U3VibWlzc2lvbklkID0gdGhpcy5zdWJtaXNzaW9uPy5pZDtcbiAgICB0aGlzLnBhcmVudFF1ZXN0aW9uQW5zd2VycyA9IHRoaXMuc3VibWlzc2lvbj8ucXVlc3Rpb25BbnN3ZXJzO1xuICAgIHRoaXMucGFyZW50UXVlc3Rpb25zID0gbmF2aWdhdGlvbj8uZXh0cmFzLnN0YXRlPy5bJ3BhcmVudFF1ZXN0aW9ucyddO1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0UGFyZW50UXVlc3Rpb25zKHRoaXMucGFyZW50UXVlc3Rpb25zKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2FwdGNoYVNlcnZpY2UucmVtb3ZlUmVjYXB0Y2hhU2NyaXB0KCk7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xuICAgICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbDtcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydhY2NlcHRlZExhbmd1YWdlJ10pIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLmFjY2VwdGVkTGFuZ3VhZ2UgPSBjaGFuZ2VzWydhY2NlcHRlZExhbmd1YWdlJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYgKCF0aGlzLmVkaXQpIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEpIHtcbiAgICAgIHRoaXMuZ2V0VG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRUb2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnJlY2FwdGNoYVNlcnZpY2UuZ2V0UmVjYXB0Y2hhVG9rZW4oKTtcbiAgICAgIHRoaXMucmVjYXB0Y2hhVG9rZW4gPSB0b2tlbjtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnRXJyb3Igd2hpbGUgZ2V0dGluZyByZUNBUFRDSEEgdG9rZW46JyxcbiAgICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsb2FkRm9udChmb250TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZm9udFBhdGggPSBgYXNzZXRzL2ZvbnRzLyR7Zm9udE5hbWV9LndvZmYyYDsgLy8gQWRqdXN0IGV4dGVuc2lvbiBhcyBwZXIgeW91ciBmb250IGZpbGVcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuaW5uZXJIVE1MID0gYFxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnJHtmb250TmFtZX0nO1xuICAgICAgICBzcmM6IHVybCgnJHtmb250UGF0aH0nKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBmb250LWZhbWlseTogJyR7Zm9udE5hbWV9Jywgc2Fucy1zZXJpZjtcbiAgICAgIH1cbiAgICBgO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgZ2V0Rm9ybURhdGEoKSB7XG4gICAgdGhpcy5mb3JtU2VydmljZVxuICAgICAgLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID1cbiAgICAgICAgICByZXNwb25zZS5yZXN1bHQubW9kdWxlQ29uZmlndXJhdGlvbj8uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uID0gbWFwcGVyLm1hcFB1YmxpY0Zvcm1Ub01vZGVsKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgICAgIHRoaXMuc2V0VXBGb250RmFtaWx5KHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB0aGlzLmdldFRva2VuKCk7XG4gICAgICAgIGlmIChyZXNwb25zZT8ucmVzdWx0Py5wYWdlRGV0YWlscykge1xuICAgICAgICAgIHRoaXMucGFnZURldGFpbHMgPSByZXNwb25zZS5yZXN1bHQucGFnZURldGFpbHM7XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTZXRDb3VudFswXSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhZ2VEZXRhaWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBhZ2VzW2ldKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzW2ldID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldFN1Ym1pdHRlZEZvcm1EYXRhKCkge1xuICAgIHRoaXMuZm9ybVNlcnZpY2VcbiAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKHRoaXMubW9kdWxlTmFtZSwgdGhpcy5zdWJtaXNzaW9uSWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSA9XG4gICAgICAgICAgcmVzcG9uc2UucmVzdWx0Lm1vZHVsZUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uID0gbWFwcGVyLm1hcFB1YmxpY0Zvcm1Ub01vZGVsKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgICAgIGlmIChyZXNwb25zZT8ucmVzdWx0Py5wYWdlRGV0YWlscykge1xuICAgICAgICAgIHRoaXMucGFnZURldGFpbHMgPSByZXNwb25zZS5yZXN1bHQucGFnZURldGFpbHM7XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTZXRDb3VudFswXSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhZ2VEZXRhaWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBhZ2VzW2ldKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzW2ldID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VXBGb250RmFtaWx5KHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB7XG4gICAgICAgICAgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldFVwRm9udEZhbWlseShyZXNwb25zZTogYW55KSB7XG4gICAgLy9zZXQgZm9udCBmYW1pbHkgYW5kIGZvbnQgc2l6ZVxuICAgIGlmIChyZXNwb25zZS5yZXN1bHQ/Lm1vZHVsZUNvbmZpZ3VyYXRpb24/LmN1c3RvbWl6ZUZvbnQpIHtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uPy5mb250RmFtaWx5O1xuICAgICAgdGhpcy5mb250U2l6ZSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uPy5mb250U2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb250RmFtaWx5ID0gJ1BvcHBpbnMnO1xuICAgICAgdGhpcy5mb250U2l6ZSA9IDE4O1xuICAgIH1cbiAgICB0aGlzLmxvYWRGb250KHRoaXMuZm9udEZhbWlseSk7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJy0tbGlicmFyeS1mb250LWZhbWlseScsXG4gICAgICB0aGlzLmZvbnRGYW1pbHlcbiAgICApO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLWxpYnJhcnktZm9udC1zaXplJyxcbiAgICAgIHRoaXMuZm9udFNpemUgKyAncHgnXG4gICAgKTtcbiAgfVxuXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkge1xuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy5wYWdlcyA9IHF1ZXN0aW9uLnBhZ2VzO1xuICAgIGlmICh0aGlzLnBhcmVudFF1ZXN0aW9ucykge1xuICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbkFuc3dlcnMgPSBxdWVzdGlvbj8ucXVlc3Rpb25BbnN3ZXJzO1xuICAgICAgdGhpcy5wYXJlbnRTdWJtaXNzaW9uSWQgPSBxdWVzdGlvbj8ucGFyZW50SWQ7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xuICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzWzFdO1xuICAgIHRoaXMuc2F2ZUF1dG9tYXRpY2FsbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5zYXZlQXV0b21hdGljYWxseTtcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcbiAgICB0aGlzLmN1c3RvbWl6ZUZvbnQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5jdXN0b21pemVGb250O1xuICAgIHRoaXMuZm9udEZhbWlseSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRGYW1pbHk7XG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xuICAgIHRoaXMuZW5hYmxlRGF0YUV4cG9ydCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZURhdGFFeHBvcnQ7XG4gICAgdGhpcy5maWxlRm9ybWF0cyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZpbGVGb3JtYXRzO1xuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPVxuICAgICAgcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc7XG4gICAgdGhpcy5xdWVzdGlvbk51bWJlcmluZyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnF1ZXN0aW9uTnVtYmVyaW5nO1xuICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID1cbiAgICAgIHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZUdvb2dsZVJlY2FwdGNoYTtcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYUtleSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYUtleTtcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYVNlY3JldCA9XG4gICAgICBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFTZWNyZXQ7XG4gICAgdGhpcy5uYXZpZ2F0aW9uID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubmF2aWdhdGlvbjtcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID1cbiAgICAgIHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkO1xuICAgIHRoaXMuYXBpQ2FsbGVkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7ICAgIFxuICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuY3VycmVudFBhZ2VJbmRleCArIDE7ICAgIFxuICAgIGlmIChuZXh0SW5kZXggPCB0aGlzLnBhZ2VEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHsgICAgICAgIFxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZURhdGEgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMuZm9ybVZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VEZXRhaWxzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgaWYodGhpcy5wYWdlc1tuZXh0SW5kZXhdLmxlbmd0aCAhPSAwKXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW25leHRJbmRleF07XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXg9bmV4dEluZGV4O1xuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50UGFnZShuZXh0SW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1tuZXh0SW5kZXggKyAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VEZXRhaWxzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07ICAgICAgICBcbiAgICAgICAgaWYodGhpcy5wYWdlc1tuZXh0SW5kZXhdLmxlbmd0aCAhPSAwKXtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlc1tuZXh0SW5kZXhdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleD1uZXh0SW5kZXg7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMuc2V0Q3VycmVudFBhZ2UobmV4dEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1tuZXh0SW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvUHJldmlvdXNQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSW5kZXggPiAwKSB7XG4gICAgICBpZiAodGhpcy5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCkge1xuICAgICAgICBjb25zdCBjdXJyZW50UGFnZURhdGEgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMuZm9ybVZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXgtLTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xuICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LS07XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja1N1Ym1pc3Npb25FbGlnaWJpbGl0eSgpOiB2b2lkIHtcbiAgICB0aGlzLmVsaWdpYmxlRm9yU3VibWlzc2lvbiA9IHRoaXMudmFsaWRhdGVBbGxFbGVtZW50TG9hZGVkKCk7XG4gIH1cblxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgdGhpcy5wYWdlcy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5wYWdlc1tpbmRleF0gfHwgdGhpcy5wYWdlc1tpbmRleF0ubGVuZ3RoICE9IDApIHsgICAgICAgIFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGFnZU51bWJlciA9IGluZGV4ICsgMTtcbiAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKFxuICAgICAgICAgIHRoaXMubW9kdWxlTmFtZSxcbiAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25JZCxcbiAgICAgICAgICB0aGlzLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgdGhpcy5yb3dTZXRcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5yZXN1bHQ/LnBhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzW2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC5wYWdlc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbaW5kZXhdO1xuICAgICAgICAgIHRoaXMucm93U2V0Q291bnRbaW5kZXhdID0gcmVzcG9uc2UucmVzdWx0LnRvdGFsTnVtYmVyUm93O1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtU2VydmljZVxuICAgICAgICAuZ2V0UXVlc3Rpb25zKHRoaXMubW9kdWxlTmFtZSwgdGhpcy5wYWdlTnVtYmVyLCB0aGlzLnJvd1NldClcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZT8ucmVzdWx0Py5wYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlc1tpbmRleF0gPSByZXNwb25zZS5yZXN1bHQucGFnZXNbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW2luZGV4XTtcbiAgICAgICAgICB0aGlzLnJvd1NldENvdW50W2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMuZm9ybVZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSBpbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGxvYWRNb3JlRGF0YShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHJvd0NvdW50TGltaXQgPSB0aGlzLnJvd1NldENvdW50W2luZGV4XTtcbiAgICBsZXQgcm93Q291bnQgPSB0aGlzLnBhZ2VzW2luZGV4XT8ucm93cz8ubGVuZ3RoIC8gMjA7XG4gICAgcm93Q291bnQgPSBNYXRoLmNlaWwocm93Q291bnQpO1xuXG4gICAgaWYgKHJvd0NvdW50ICsgMSA+IHJvd0NvdW50TGltaXQpIHtcbiAgICAgIHRoaXMuY2hlY2tTdWJtaXNzaW9uRWxpZ2liaWxpdHkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKFxuICAgICAgICAgIHRoaXMubW9kdWxlTmFtZSxcbiAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25JZCxcbiAgICAgICAgICBpbmRleCArIDEsXG4gICAgICAgICAgcm93Q291bnRcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IHJlc3BvbnNlPy5yZXN1bHQ/LnBhZ2VzWzBdPy5yb3dzID8/IFtdO1xuICAgICAgICAgIHRoaXMucGFnZXNbaW5kZXhdLnJvd3MgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5wYWdlc1tpbmRleF0/LnJvd3MgPz8gW10pLFxuICAgICAgICAgICAgLi4ubmV3Um93cyxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW2luZGV4XTtcbiAgICAgICAgICB0aGlzLnJvd1NldENvdW50W2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgICB0aGlzLmNoZWNrU3VibWlzc2lvbkVsaWdpYmlsaXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRRdWVzdGlvbnModGhpcy5tb2R1bGVOYW1lLCBpbmRleCArIDEsIHJvd0NvdW50KVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IHJlc3BvbnNlPy5yZXN1bHQ/LnBhZ2VzWzBdPy5yb3dzID8/IFtdO1xuICAgICAgICAgIHRoaXMucGFnZXNbaW5kZXhdLnJvd3MgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5wYWdlc1tpbmRleF0/LnJvd3MgPz8gW10pLFxuICAgICAgICAgICAgLi4ubmV3Um93cyxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW2luZGV4XTtcbiAgICAgICAgICB0aGlzLnJvd1NldENvdW50W2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgICB0aGlzLmNoZWNrU3VibWlzc2lvbkVsaWdpYmlsaXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xuICAgIGNvbnN0IGV4dHJhY3RRdWVzdGlvbnMgPSAoXG4gICAgICBmb3JtRWxlbWVudHM6IGFueVtdLFxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICAgIGlzSW5TdWJGb3JtOiBib29sZWFuID0gZmFsc2UsXG4gICAgICBzdWJGb3JtSW5kZXg6IG51bWJlciA9IDBcbiAgICApOiB7IGFuc3dlcnM6IEFuc3dlcltdOyBmb3JtczogRm9ybVtdIH0gPT4ge1xuICAgICAgY29uc3QgcXVlc3Rpb25zOiBBbnN3ZXJbXSA9IFtdO1xuICAgICAgY29uc3QgZm9ybXM6IEZvcm1bXSA9IFtdO1xuXG4gICAgICBmb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgbGV0IGJhc2VRdWVzdGlvbjogYW55O1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcbiAgICAgICAgICAgIGJhc2VRdWVzdGlvbiA9IHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZWxlbWVudC5lbGVtZW50LmlkLFxuICAgICAgICAgICAgICBhbnN3ZXI6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBpc0luU3ViRm9ybVxuICAgICAgICAgICAgICAgID8gYCR7cGFyZW50Rm9ybUlkfV8ke3N1YkZvcm1JbmRleH1fJHtlbGVtZW50LmVsZW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgIDogZWxlbWVudC5lbGVtZW50LmlkO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHF1ZXN0aW9uSWQsXG4gICAgICAgICAgICAgICAgZmlsZTogZWxlbWVudC5lbGVtZW50LmFuc3dlcixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VRdWVzdGlvbiA9IHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZWxlbWVudC5lbGVtZW50LmlkLFxuICAgICAgICAgICAgICBhbnN3ZXI6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmJhc2VRdWVzdGlvbixcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcbiAgICAgICAgICAgICAgZGVsZXRlRmlsZXM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVGaWxlcyB8fCBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaChiYXNlUXVlc3Rpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIGxvZ2ljLnJvd3MpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgIHJvdy5ncmlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRGb3JtSWQsXG4gICAgICAgICAgICAgICAgICAgIGlzSW5TdWJGb3JtLFxuICAgICAgICAgICAgICAgICAgICBzdWJGb3JtSW5kZXhcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XG4gICAgICAgICAgY29uc3Qgc3ViZm9ybUlkID0gZWxlbWVudC5lbGVtZW50LmlkO1xuICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb25JZCA9IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9uSWQ7XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICBsZXQgYWxsQW5zd2VyczogQW5zd2VyW10gPSBbXTtcblxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXh0cmFjdGVkID0gZXh0cmFjdFF1ZXN0aW9ucyhcbiAgICAgICAgICAgICAgICByb3cuZ3JpZCxcbiAgICAgICAgICAgICAgICBzdWJmb3JtSWQsXG4gICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICBmb3Jtcy5sZW5ndGhcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZXh0cmFjdGVkLmFuc3dlcnMuZm9yRWFjaCgoYW5zd2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgYWxsQW5zd2Vycy5wdXNoKHsgLi4uYW5zd2VyIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBzdWJmb3JtOiBGb3JtID0ge1xuICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcbiAgICAgICAgICAgICAgZGVsZXRlZFN1Ym1pc3Npb25zOiBbXSxcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uSWQ6IHN1Ym1pc3Npb25JZCxcbiAgICAgICAgICAgICAgICAgIGFuc3dlcnM6IGFsbEFuc3dlcnMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVsZW1lbnQucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybUFuc3dlcnM6IEFuc3dlcltdID0gW107XG4gICAgICAgICAgICBsZXQgc3ViZm9ybVF1ZXN0aW9uczogYW55ID0geyBhbnN3ZXJzOiBbXSB9O1xuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgc3ViZm9ybVF1ZXN0aW9ucyA9IGV4dHJhY3RRdWVzdGlvbnMoXG4gICAgICAgICAgICAgICAgcm93LmdyaWQsXG4gICAgICAgICAgICAgICAgc3ViZm9ybUlkLFxuICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgZm9ybXMubGVuZ3RoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nU3ViZm9ybSA9IGZvcm1zLmZpbmQoXG4gICAgICAgICAgICAgIChmb3JtKSA9PiBmb3JtLmZvcm1JZCA9PT0gc3ViZm9ybUlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5wcm9wZXJ0eS5lbmFibGVJbmxpbmVFZGl0aW5nICYmIGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9ucykge1xuICAgICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuc3VibWlzc2lvbnMgPSB0aGlzLmNsZWFyRW1wdHlTdWJtaXNzaW9ucyhcbiAgICAgICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuc3VibWlzc2lvbnNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudD8uc3VibWlzc2lvbnM/LmZvckVhY2goXG4gICAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLmFuc3dlcnMuZm9yRWFjaCgoYW5zd2VyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbnN3ZXIuaHRtbENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIuZmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBgJHtzdWJmb3JtSWR9XyR7aW5kZXh9XyR7YW5zd2VyLnF1ZXN0aW9uSWR9YDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IGFuc3dlci5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbnN3ZXIuZmlsZXM7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkZWxldGUgYW5zd2VyLmF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybTogRm9ybSA9IHtcbiAgICAgICAgICAgICAgZm9ybUlkOiBzdWJmb3JtSWQsXG4gICAgICAgICAgICAgIGRlbGV0ZWRTdWJtaXNzaW9uczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZWRTdWJtaXNzaW9ucyxcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9ucyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3Jtcy5wdXNoKHN1YmZvcm0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTl9HUk9VUCcpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgUXVlc3Rpb24gR3JvdXAgYnkgaXRlcmF0aW5nIHRocm91Z2ggcm93c1xuICAgICAgICAgIGVsZW1lbnQuZWxlbWVudC5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChncmlkSXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChncmlkSXRlbS5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZ3JpZEl0ZW0uZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgICAgIGFuc3dlcjogZ3JpZEl0ZW0uZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ01VTFRJRklFTEQnKSB7XG4gICAgICAgICAgY29uc3QgbXVsdGlmaWVsZHM6IGFueSA9IFtdO1xuXG4gICAgICAgICAgZWxlbWVudC5lbGVtZW50LnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGdyaWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGdyaWRJdGVtLmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcbiAgICAgICAgICAgICAgICBtdWx0aWZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGdyaWRJdGVtLmVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgICBhbnN3ZXI6IGdyaWRJdGVtLmVsZW1lbnQuYW5zd2VyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgIGFuc3dlcjogbnVsbCxcbiAgICAgICAgICAgIGZpZWxkczogbXVsdGlmaWVsZHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgYW5zd2VyczogcXVlc3Rpb25zLCBmb3JtczogZm9ybXMgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgcHJvY2Vzc1BhZ2VzID0gKFxuICAgICAgcGFnZXM6IGFueVtdXG4gICAgKTogeyBhbnN3ZXJzOiBBbnN3ZXJbXTsgZm9ybXM6IEZvcm1bXSB9ID0+IHtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uczogQW5zd2VyW10gPSBbXTtcbiAgICAgIGNvbnN0IGZvcm1zOiBGb3JtW10gPSBbXTtcblxuICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xuICAgICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgZm9ybXMucHVzaCguLi5yZXN1bHQuZm9ybXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyBhbnN3ZXJzOiBxdWVzdGlvbnMsIGZvcm1zOiBmb3JtcyB9O1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzUGFnZXModGhpcy5wYWdlcyk7XG4gICAgdGhpcy5xdWVzdGlvbkFuc3dlcnMgPSB7XG4gICAgICBwYXJlbnRJZDogJycsXG4gICAgICBhbnN3ZXJzOiByZXN1bHQuYW5zd2VycyxcbiAgICAgIGZvcm1zOiByZXN1bHQuZm9ybXMsXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyRW1wdHlTdWJtaXNzaW9ucyhzdWJtaXNzaW9uczogYW55KSB7XG4gICAgY29uc3Qgbm9uRW1wdHlTdWJtaXNzaW9uczogU3VibWlzc2lvbltdID0gW107XG4gICAgY29uc3QgZW1wdHlTdWJtaXNzaW9uSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgc3VibWlzc2lvbnMuZm9yRWFjaCgoc3VibWlzc2lvbjogYW55KSA9PiB7XG4gICAgICBjb25zdCBoYXNWYWx1ZSA9IHN1Ym1pc3Npb24uYW5zd2Vycy5zb21lKFxuICAgICAgICAoYW5zd2VyOiBhbnkpID0+XG4gICAgICAgICAgYW5zd2VyLmFuc3dlciAhPT0gJycgJiZcbiAgICAgICAgICBhbnN3ZXIuYW5zd2VyICE9PSBudWxsICYmXG4gICAgICAgICAgYW5zd2VyLmFuc3dlciAhPT0gdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIG5vbkVtcHR5U3VibWlzc2lvbnMucHVzaChzdWJtaXNzaW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpIHtcbiAgICAgICAgZW1wdHlTdWJtaXNzaW9uSWRzLnB1c2goc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3VibWlzc2lvbnMgPSBub25FbXB0eVN1Ym1pc3Npb25zO1xuICAgIHJldHVybiBzdWJtaXNzaW9ucztcbiAgfVxuXG4gIHZhbGlkYXRlQWxsRWxlbWVudExvYWRlZCgpOiB7IHN0YXR1czogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0ge1xuICAgIGlmICh0aGlzLnBhZ2VzLmxlbmd0aCA8IHRoaXMucGFnZURldGFpbHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdQbGVhc2UgZW5zdXJlIGFsbCBwYWdlcyBhcmUgZnVsbHkgdmlzaWJsZSBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS4nLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNvbXBsZXRlUGFnZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICB0aGlzLnBhZ2VzLmZvckVhY2goKHA6IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFwIHx8XG4gICAgICAgICFBcnJheS5pc0FycmF5KHAucm93cykgfHxcbiAgICAgICAgTWF0aC5jZWlsKHAucm93cy5sZW5ndGggLyAyMCkgPCB0aGlzLnJvd1NldENvdW50W2ldXG4gICAgICApIHtcbiAgICAgICAgaW5jb21wbGV0ZVBhZ2VzLnB1c2godGhpcy5wYWdlRGV0YWlsc1tpXS5uYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpbmNvbXBsZXRlUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogYFNvbWUgc2VjdGlvbnMgYXJlIHN0aWxsIGxvYWRpbmcuIFBsZWFzZSBzY3JvbGwgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHBhZ2VzIHRvIGVuc3VyZSBhbGwgcXVlc3Rpb25zIGFyZSBsb2FkZWQ6ICR7aW5jb21wbGV0ZVBhZ2VzLmpvaW4oXG4gICAgICAgICAgJywgJ1xuICAgICAgICApfS5gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0dyZWF0ISBBbGwgc2VjdGlvbnMgYXJlIGNvbXBsZXRlLiBZb3UgY2FuIG5vdyBzdWJtaXQgdGhlIGZvcm0uJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVBbGxFbGVtZW50TG9hZGVkKCkuc3RhdHVzKSB7XG4gICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdQbGVhc2Ugd2FpdCBmb3IgYWxsIGVsZW1lbnRzIHRvIGxvYWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pblZhbGlkUXVlc3Rpb25zLmNsZWFyKCk7XG4gICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckFsbCgpO1xuICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdFcnJvciB3aGlsZSBnZXR0aW5nIHJlQ0FQVENIQSB0b2tlbjonLFxuICAgICAgICAgIGVycm9yLmVycm9yPy5tZXNzYWdlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgdG8gdmVyaWZ5IHJlQ0FQVENIQS4nKTtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIGxldCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlRm9ybSh0aGlzLnBhZ2VzKTtcbiAgICB0aGlzLmdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCk7XG4gICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgdGhpcy5xdWVzdGlvbkFuc3dlcnMucGFyZW50SWQgPSB0aGlzLnBhcmVudFN1Ym1pc3Npb25JZDtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbicsIEpTT04uc3RyaW5naWZ5KHRoaXMucXVlc3Rpb25BbnN3ZXJzKSk7XG4gICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHNlZW5RdWVzdGlvbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGNvbnN0IHVuaXF1ZUZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGZpbGVJdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKHNlZW5RdWVzdGlvbklkcy5oYXMoZmlsZUl0ZW0ucXVlc3Rpb25JZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VlblF1ZXN0aW9uSWRzLmFkZChmaWxlSXRlbS5xdWVzdGlvbklkKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdW5pcXVlRmlsZXMuZm9yRWFjaCgoZmlsZUl0ZW0pID0+IHtcbiAgICAgICAgICBmaWxlSXRlbS5maWxlLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpbGVJdGVtLnF1ZXN0aW9uSWQsIGZpbGUuX2ZpbGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcm1TZXJ2aWNlQ2FsbCA9XG4gICAgICAgIHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZFxuICAgICAgICAgID8gdGhpcy5mb3JtU2VydmljZS51cGRhdGVGb3JtKFxuICAgICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbklkLFxuICAgICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgdGhpcy5yZWNhcHRjaGFUb2tlblxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogdGhpcy5mb3JtU2VydmljZS5zdWJtaXRGb3JtKFxuICAgICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgICB0aGlzLnJlY2FwdGNoYVRva2VuXG4gICAgICAgICAgICApO1xuXG4gICAgICBmb3JtU2VydmljZUNhbGwuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcbiAgICAgICAgICAgIHRoaXMuZWRpdFxuICAgICAgICAgICAgICA/ICdGb3JtIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5J1xuICAgICAgICAgICAgICA6ICdGb3JtIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHknXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KCdzdWNjZXNzJyk7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckFsbCgpO1xuICAgICAgICAgIHRoaXMuZmluZFF1ZXN0aW9uUGFnZUluZGV4KHRoaXMucGFyc2VFcnJvcnNUb01hcChlcnJvci5lcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IHRoaXMucGFnZXMubGVuZ3RoLTE7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9GaXJzdEVycm9yKCk7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSkge1xuICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLnRvYXN0ci5lcnJvcih2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiBwYXJzZUVycm9yc1RvTWFwKGVycm9yU3RyaW5nOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBlcnJvck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgLy8gQ29udmVydCB0aGUgaW5jb3JyZWN0IGZvcm1hdCB0byBhIHZhbGlkIG9iamVjdCBzdHJ1Y3R1cmVcbiAgICBlcnJvclN0cmluZ1xuICAgICAgICAucmVwbGFjZSgvW3t9XS9nLCAnJykgLy8gUmVtb3ZlIGN1cmx5IGJyYWNlc1xuICAgICAgICAuc3BsaXQoJywgJykgLy8gU3BsaXQga2V5LXZhbHVlIHBhaXJzXG4gICAgICAgIC5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFpci5zcGxpdCgnPScpO1xuICAgICAgICAgICAgaWYgKGtleSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWFwLnNldChrZXkudHJpbSgpLCB2YWx1ZS50cmltKCkpOyAvLyBTdG9yZSBpbiBNYXBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gZXJyb3JNYXA7XG59XG4gIGFzeW5jIG5hdmlnYXRlVG9GaXJzdEVycm9yKCkge1xuICAgIGNvbnN0IGZpcnN0RXJyb3IgPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEZpcnN0SW52YWxpZCgpO1xuICAgIGlmICghZmlyc3RFcnJvcikgcmV0dXJuO1xuXG4gICAgY29uc3QgZWxlbWVudElkID0gYHF1ZXN0aW9uLSR7Zmlyc3RFcnJvci5pZH1gO1xuXG4gICAgdGhpcy5yZXRyeUNvdW50ID0gMDtcblxuICAgIC8vIENoYW5nZSBwYWdlIGlmIG5lZWRlZFxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSW5kZXggIT09IGZpcnN0RXJyb3IucGFnZUluZGV4KSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSBmaXJzdEVycm9yLnBhZ2VJbmRleDtcbiAgICAgIHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCksIDEwMCk7XG4gICAgICBpZih0aGlzLm5hdmlnYXRpb24gPT09ICdUQUInKVxuICAgICAgdGhpcy5jaGlsZC50cmlnZ2VyRnVuY3Rpb24oZmlyc3RFcnJvci5wYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2Nyb2xsVG9FbGVtZW50V2l0aFJldHJ5KGVsZW1lbnRJZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNjcm9sbFRvRWxlbWVudFdpdGhSZXRyeShlbGVtZW50SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmV0cnlDb3VudCsrO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnNjcm9sbEFuZEZvY3VzKGVsZW1lbnQpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXRyeUNvdW50IDwgdGhpcy5tYXhSZXRyaWVzKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XG4gICAgICByZXR1cm4gdGhpcy5zY3JvbGxUb0VsZW1lbnRXaXRoUmV0cnkoZWxlbWVudElkKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGBFbGVtZW50ICR7ZWxlbWVudElkfSBub3QgZm91bmQgYWZ0ZXIgJHt0aGlzLm1heFJldHJpZXN9IGF0dGVtcHRzYCk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuZmFsbGJhY2tTY3JvbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEFuZEZvY3VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBibG9jazogJ2NlbnRlcicsXG4gICAgICBpbmxpbmU6ICduZWFyZXN0J1xuICAgIH0pO1xuXG4gICAgY29uc3QgZm9jdXNhYmxlID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBidXR0b24sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgIGZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmFsbGJhY2tTY3JvbGwoKSB7XG4gICAgY29uc3QgcGFnZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAucGFnZS0ke3RoaXMuY3VycmVudFBhZ2VJbmRleH1gKTtcbiAgICBwYWdlRWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ2F1dG8nIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZShmdW5jOiAoKSA9PiB2b2lkLCBkZWxheTogbnVtYmVyKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lcik7XG4gICAgdGhpcy5kZWJvdW5jZVRpbWVyID0gc2V0VGltZW91dChmdW5jLCBkZWxheSk7XG4gIH1cbi8vICAgZXh0cmFjdElkKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuLy8gICAgIGNvbnN0IG1hdGNoID0gbWVzc2FnZS5tYXRjaCgvWzAtOWEtZkEtRi1dezM2fS8pO1xuLy8gICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzBdIDogbnVsbDtcbi8vIH1cblxuLy8gIHJlbW92ZUlkKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4vLyAgIHJldHVybiBtZXNzYWdlLnJlcGxhY2UoL1swLTlhLWZBLUYtXXszNn0kLywgXCJcIikudHJpbSgpO1xuLy8gfVxuXG5cbmZpbmRRdWVzdGlvblBhZ2VJbmRleChxdWVzdGlvbkVycm9yczogTWFwPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICBmb3IgKGxldCBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCB0aGlzLnBhZ2VzLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5wYWdlc1twYWdlSW5kZXhdO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgdGhpcy5jaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhlbGVtZW50LCBxdWVzdGlvbkVycm9ycywgcGFnZUluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxucHJpdmF0ZSBjaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhlbGVtZW50OiBhbnksIHF1ZXN0aW9uRXJyb3JzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBwYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICBpZiAoZWxlbWVudC5lbGVtZW50LmlkICYmIHF1ZXN0aW9uRXJyb3JzLmhhcyhlbGVtZW50LmVsZW1lbnQuaWQpKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5zZXRJbnZhbGlkKGVsZW1lbnQuZWxlbWVudC5pZCwgcXVlc3Rpb25FcnJvcnMuZ2V0KGVsZW1lbnQuZWxlbWVudC5pZCkhLCBwYWdlSW5kZXgpO1xuICB9XG4gIFxuICAvLyBIYW5kbGUgc3ViZm9ybXMgcmVjdXJzaXZlbHlcbiAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmIGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XG4gICAgZm9yIChjb25zdCByb3cgb2YgZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgIGZvciAoY29uc3QgZ3JpZEl0ZW0gb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgdGhpcy5jaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhncmlkSXRlbSwgcXVlc3Rpb25FcnJvcnMsIHBhZ2VJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9ICBcbiAgaWYgKChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTl9HUk9VUCcgfHwgZWxlbWVudC5lbnRpdHlUeXBlPT09J01VTFRJRklFTEQnKSAmJiBlbGVtZW50LmVsZW1lbnQucm93cykge1xuICAgIGZvciAoY29uc3Qgcm93IG9mIGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XG4gICAgICBmb3IgKGNvbnN0IGdyaWRJdGVtIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgIHRoaXMuY2hlY2tBbmRTdG9yZUludmFsaWRRdWVzdGlvbnMoZ3JpZEl0ZW0sIHF1ZXN0aW9uRXJyb3JzLCBwYWdlSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBsb2dpYy1iYXNlZCBjb25kaXRpb25zIHJlY3Vyc2l2ZWx5XG4gIGlmICgoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSAmJiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICBmb3IgKGNvbnN0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBncmlkSXRlbSBvZiByb3cuZ3JpZCkge1xuICAgICAgICAgICAgdGhpcy5jaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhncmlkSXRlbSwgcXVlc3Rpb25FcnJvcnMsIHBhZ2VJbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZvY3VzUXVlc3Rpb25FbGVtZW50KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgLy8gRmluZCBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCB3aXRoaW4gdGhlIHF1ZXN0aW9uXG4gIGNvbnN0IGZvY3VzYWJsZSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XScpO1xuICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgKGZvY3VzYWJsZSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXIuZm9jdXMoKTtcbiAgfVxufVxuICB2YWxpZGF0ZUZvcm0oanNvbkRhdGE6IGFueSk6IHtcbiAgICBpc1ZhbGlkOiBib29sZWFuO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBwYWdlSW5kZXg6IG51bWJlciB8IDA7XG4gIH0ge1xuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKFxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXVxuICAgICk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nOyBwYWdlSW5kZXg6IG51bWJlciB8IDAgfSA9PiB7XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gZWxlbWVudC5lbGVtZW50LmFuc3dlcjtcbiAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gZWxlbWVudC5lbGVtZW50LnZhbGlkYXRpb247XG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xuICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGVsZW1lbnQuZWxlbWVudC5hdHRhY2htZW50cztcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoKCFhbnN3ZXIgfHwgYW5zd2VyPy5sZW5ndGggPT09IDApICYmICghYXR0YWNobWVudCB8fGF0dGFjaG1lbnQ/Lmxlbmd0aCA9PSAwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5WYWxpZFF1ZXN0aW9ucy5zZXQoZWxlbWVudC5lbGVtZW50LmlkLFwiUmVxdWlyZWQgZmlsZSBxdWVzdGlvbiBoYXMgbm8gZmlsZXMgdXBsb2FkZWQuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBSZXF1aXJlZCBmaWxlIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBoYXMgbm8gZmlsZXMgdXBsb2FkZWQuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5WYWxpZFF1ZXN0aW9ucy5zZXQoZWxlbWVudC5lbGVtZW50LmlkLFwiUXVlc3Rpb24gaXMgcmVxdWlyZWQgYnV0IG5vIGFuc3dlciBwcm92aWRlZC5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyByZXF1aXJlZCBidXQgbm8gYW5zd2VyIHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0aW9uPT09ZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIlF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCB2YWxpZGF0aW9uIGlzIGZhbHNlLlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIHJlcXVpcmVkIGJ1dCB2YWxpZGF0aW9uIGlzIGZhbHNlLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghcmVxdWlyZWQgJiYgYW5zd2VyICYmIE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIlF1ZXN0aW9uIGlzIG5vdCByZXF1aXJlZCBidXQgYW5zd2VyIHByb3ZpZGVkIHdpdGggdmFsaWRhdGlvbiBmYWxzZS5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgcmVxdWlyZWQgYnV0IGFuc3dlciBwcm92aWRlZCB3aXRoIHZhbGlkYXRpb24gZmFsc2UuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMobG9naWMucm93cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyApIHtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlbGVtZW50LmVsZW1lbnQucm93cztcbiAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVkUXVlc3Rpb25JZHMgPSBkYXRhXG4gICAgICAgICAgICAgIC5mbGF0TWFwKChyb3c6IGFueSkgPT4gcm93LmdyaWQpIC8vIEV4dHJhY3RpbmcgZ3JpZCBpdGVtcyBmcm9tIGVhY2ggb2JqZWN0XG4gICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmVsZW1lbnQucmVxdWlyZWQ7IC8vIEVuc3VyaW5nIHRoZSBmaWx0ZXIgcHJvcGVybHkgY2hlY2tzICdyZXF1aXJlZCdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmVsZW1lbnQuaWQpO1xuXG4gICAgICAgICAgICBpZiAocmVxdWlyZWRRdWVzdGlvbklkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmIChlbGVtZW50Py5lbGVtZW50Py5zdWJtaXNzaW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZVJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQgPSByZXF1aXJlZFF1ZXN0aW9uSWRzLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgKHJlcXVpcmVkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0Fuc3dlciA9IGVsZW1lbnQ/LmVsZW1lbnQ/LnN1Ym1pc3Npb25zXG4gICAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHN1YjogYW55KSA9PiBzdWIuYW5zd2VycylcbiAgICAgICAgICAgICAgICAgICAgICAuZmluZCgoYW5zd2VyOiBhbnkpID0+IGFuc3dlci5xdWVzdGlvbklkID09PSByZXF1aXJlZElkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0Fuc3dlciAmJiBtYXRjaGluZ0Fuc3dlci5hbnN3ZXIudHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFhcmVSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIlF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuXCIpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgJ0Zvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuJyxcbiAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJycsIHBhZ2VJbmRleDogMCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIk5vIHN1Ym1pc3Npb25zIHByb3ZpZGVkIGZvciByZXF1aXJlZCBxdWVzdGlvbnMuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICdGb3JtIGlzIGludmFsaWQgLSBObyBzdWJtaXNzaW9ucyBwcm92aWRlZCBmb3IgcmVxdWlyZWQgcXVlc3Rpb25zLicsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJycsIHBhZ2VJbmRleDogMCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGVsZW1lbnQuZWxlbWVudC5yb3dzLm1hcCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHJlc3VsdHMuZXZlcnkoKHJlczogYW55KSA9PiByZXMuaXNWYWxpZCk7XG4gICAgICAgICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIGNvbnN0IHJlc3VsdCA9ICBlbGVtZW50LmVsZW1lbnQucm93cy5mbGF0TWFwKChyb3c6IGFueSkgPT5cbiAgICAgICAgICAgICAgLy8gICB7XG4gICAgICAgICAgICAgIC8vICAgICB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgICAgICAgIC8vICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAvLyB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlICBpZiAoKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OX0dST1VQJyB8fCBlbGVtZW50LmVudGl0eVR5cGU9PT0nTVVMVElGSUVMRCcpJiYgZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgICAgICBcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBlbGVtZW50LmVsZW1lbnQucm93cykge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQgJiYgZWxlbWVudC5lbnRpdHlUeXBlIT0nTVVMVElGSUVMRCcpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnJywgcGFnZUluZGV4OiAwIH07XG4gICAgfTtcblxuICAgIGZvciAobGV0IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IGpzb25EYXRhLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBqc29uRGF0YVtwYWdlSW5kZXhdO1xuICAgICAgZm9yIChsZXQgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgIHRoaXMuaW5WYWxpZFF1ZXN0aW9ucy5mb3JFYWNoKChtZXNzYWdlOiBzdHJpbmcsIGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnNldEludmFsaWQoaWQsbWVzc2FnZSwgcGFnZUluZGV4KTtcbn0pO1xuICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnM9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICAgIC8vIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgICAvLyAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIC8vICAgICBtZXNzYWdlOiBgUGFnZSAke3BhZ2VJbmRleCArIDF9OiAke3Jlc3VsdC5tZXNzYWdlfWAsXG4gICAgICAgIC8vICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleCxcbiAgICAgICAgLy8gICB9O1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGpzb25EYXRhLmxlbmd0aC0xO1xuICAgIGlmICh0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEZpcnN0SW52YWxpZCgpKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaXJzdEVycm9yKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogYFBhZ2VgLFxuICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdGb3JtIGlzIHZhbGlkLicsXG4gICAgICBwYWdlSW5kZXg6IDAsXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXBkYXRlU3ViRm9ybSh0aGlzLnBhZ2VzLCBldmVudCk7XG4gIH1cblxuICB1cGRhdGVTdWJGb3JtID0gKHBhZ2VzOiBhbnlbXSwgdXBkYXRlZFN1YkZvcm06IGFueSkgPT4ge1xuICAgIHBhZ2VzLmZvckVhY2goKHBhZ2UpID0+IHtcbiAgICAgIHBhZ2Uucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xuICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LmlkID09PSB1cGRhdGVkU3ViRm9ybS5mb3JtSWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXhpc3Rpbmcgc3ViZm9ybSB3aXRoIHRoZSBuZXcgZGF0YVxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50ID0gdXBkYXRlZFN1YkZvcm07XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuaWQgIT09IHVwZGF0ZWRTdWJGb3JtLmZvcm1JZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHN1YmZvcm1zIGxvZ2ljIGhlcmUgaWYgbmVlZGVkXG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJlxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSB1cGRhdGUgY2hpbGQgbG9naWNzXG4gICAgICAgICAgICAvLyBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy51cGRhdGVTdWJGb3JtKGxvZ2ljLnJvd3MsIHVwZGF0ZWRTdWJGb3JtKTtcbiAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxuICBcbiAgXG4gIDxkaXYgY2xhc3M9XCJoZWFkIGNvbnRhaW5lclwiPlxuICAgIDxsaWItaGVhZGVyIFtuYW1lXT1cIm5hbWVcIj48L2xpYi1oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYm9keSBjb250YWluZXJcIj5cbiAgICBcbiAgICA8bGliLXN1Ym1pc3Npb24tY29udGFpbmVyIFtwYXJlbnRRdWVzdGlvbkFuc3dlcnNdPVwicGFyZW50UXVlc3Rpb25BbnN3ZXJzXCJcbiAgICAqbmdJZj1cInBhcmVudFF1ZXN0aW9uQW5zd2Vyc1wiPjwvbGliLXN1Ym1pc3Npb24tY29udGFpbmVyPlxuICAgIFxuICAgIDxsaWItbmF2aWdhdGlvbi10YWJzXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ1RBQidcIlxuICAgICAgW3BhZ2VzXT1cInBhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxuICAgICAgKHBhZ2VDaGFuZ2VkKT1cInNldEN1cnJlbnRQYWdlKCRldmVudClcIlxuICAgICAgKHN1Ym1pdEVtaXQpPVwic3VibWl0Rm9ybSgpXCJcbiAgICAgIFtwYWdlRGV0YWlsc109XCJwYWdlRGV0YWlsc1wiXG4gICAgICBbZWxpZ2libGVGb3JTdWJtaXNzaW9uXT1cImVsaWdpYmxlRm9yU3VibWlzc2lvblwiXG4gICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICAgIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICBbbWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWRdPVwibWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWRcIlxuICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgIChyb3dTZXRJbmRleCk9XCJsb2FkTW9yZURhdGEoJGV2ZW50KVwiXG4gICAgPjwvbGliLW5hdmlnYXRpb24tdGFicz5cbiAgICA8bGliLW5leHQtcHJldi1uYXZpZ2F0aW9uXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ05FWFRfQU5EX1BSRVZJT1VTX0JVVFRPTidcIlxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXG4gICAgICBbcGFnZURldGFpbHNdPVwicGFnZURldGFpbHNcIlxuICAgICAgKHJvd1NldEluZGV4KT1cImxvYWRNb3JlRGF0YSgkZXZlbnQpXCJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXG4gICAgICBbcHJldmlvdXNQYWdlXT1cInByZXZpb3VzUGFnZVwiXG4gICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgW25leHRQYWdlXT1cIm5leHRQYWdlXCJcbiAgICAgIChuYXZpZ2F0ZU5leHQpPVwibmF2aWdhdGVUb05leHRQYWdlKClcIlxuICAgICAgKG5hdmlnYXRlUHJldmlvdXMpPVwibmF2aWdhdGVUb1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAoc3VibWl0RW1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxuICAgID48L2xpYi1uZXh0LXByZXYtbmF2aWdhdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
982
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0sTUFBTSwrQkFBK0IsQ0FBQztBQVF4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBaUN2RixNQUFNLE9BQU8sbUJBQW1CO0lBNkQ5QixZQUNVLFdBQXdCLEVBQ3hCLE1BQXFCLEVBQ3JCLE1BQWMsRUFDZCxXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3BDLGlCQUFvQyxFQUNwQyxjQUFxQyxFQUNyQyxxQkFBNEM7UUFSNUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFyRXRELGFBQVEsR0FBc0IsSUFBSSxD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O2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSxNQUFNO2dCQUNmLFNBQVMsRUFBRSxDQUFDO2FBQ2IsQ0FBQztTQUNIO1FBQ0QsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixTQUFTLEVBQUUsQ0FBQztTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBVTtRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0E3Z0NVLG1CQUFtQjttR0FBbkIsbUJBQW1CLCtUQVVuQix1QkFBdUIscUVDL0RwQyw0akRBMkNBOzs0RkRVYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO29WQU1sQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRTZCLEtBQUs7c0JBQXhDLFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1hcHBlciBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWNhcHRjaGEuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50VHJhY2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbGVtZW50LXRyYWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tdGFicy9uYXZpZ2F0aW9uLXRhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1WYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tdmFsaWRhdGlvbi5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIEFuc3dlciB7XG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgYW5zd2VyOiBhbnk7XG4gIGFuc3dlcklkPzogc3RyaW5nO1xuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xuICBmaWVsZHM/OiBhbnk7XG59XG5cbmludGVyZmFjZSBTdWJtaXNzaW9uIHtcbiAgc3VibWlzc2lvbklkPzogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbn1cblxuaW50ZXJmYWNlIEZvcm0ge1xuICBmb3JtSWQ6IHN0cmluZztcbiAgZGVsZXRlZFN1Ym1pc3Npb25zOiBhbnlbXTtcbiAgc3VibWlzc2lvbnM6IFN1Ym1pc3Npb25bXTtcbn1cblxuaW50ZXJmYWNlIFF1ZXN0aW9uQW5zd2Vyc1dyYXBwZXIge1xuICBwYXJlbnRJZDogc3RyaW5nO1xuICBhbnN3ZXJzOiBBbnN3ZXJbXTtcbiAgZm9ybXM6IEZvcm1bXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN1Ym1pdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VibWl0LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3VibWl0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcXVlc3Rpb246IFB1YmxpY0Zvcm0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbW9kdWxlTmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VibWlzc2lvbklkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgYWNjZXB0ZWRMYW5ndWFnZTogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBhcGlDYWxsZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGN1cnJlbnRQYWdlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZChOYXZpZ2F0aW9uVGFic0NvbXBvbmVudCkgY2hpbGQhOiBOYXZpZ2F0aW9uVGFic0NvbXBvbmVudDtcblxuICBuYW1lOiBzdHJpbmcgPSAnJztcbiAgc2F2ZUF1dG9tYXRpY2FsbHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2F2ZUludGVydmFsOiBudW1iZXIgPSAwO1xuICBjdXN0b21pemVGb250OiBib29sZWFuID0gZmFsc2U7XG4gIGZvbnRGYW1pbHk6IHN0cmluZyA9ICcnO1xuICBmb250U2l6ZTogbnVtYmVyID0gMDtcbiAgZW5hYmxlRGF0YUV4cG9ydDogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWxlRm9ybWF0czogc3RyaW5nW10gPSBbXTtcbiAgZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlc3Rpb25OdW1iZXJpbmc6IHN0cmluZyA9ICcnO1xuICBlbmFibGVHb29nbGVSZWNhcHRjaGE6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZ29vZ2xlUmVjYXB0Y2hhS2V5OiBzdHJpbmcgPSAnJztcbiAgZ29vZ2xlUmVjYXB0Y2hhU2VjcmV0OiBzdHJpbmcgPSAnJztcbiAgbmF2aWdhdGlvbjogc3RyaW5nID0gJyc7XG4gIG1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHBhZ2VzOiBhbnkgPSBbXTtcbiAgY3VycmVudFBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgcHJldmlvdXNQYWdlOiBhbnkgPSB7fTtcbiAgY3VycmVudFBhZ2U6IGFueSA9IHt9O1xuICBuZXh0UGFnZTogYW55ID0ge307XG4gIGxhc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlc3Rpb25BbnN3ZXJzOiBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyID0ge1xuICAgIHBhcmVudElkOiAnJyxcbiAgICBhbnN3ZXJzOiBbXSxcbiAgICBmb3JtczogW10sXG4gIH07XG4gIGZpbGVzOiB7IHF1ZXN0aW9uSWQ6IHN0cmluZzsgZmlsZTogYW55IH1bXSA9IFtdO1xuICBwYXJlbnRRdWVzdGlvbnM6IGFueTtcbiAgc3VibWlzc2lvbjogYW55ID0ge307XG4gIHBhcmVudFF1ZXN0aW9uQW5zd2VyczogYW55O1xuICBwYXJlbnRTdWJtaXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xuICBzdWJtaXNzaW9uSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuICByZWNhcHRjaGFUb2tlbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgaXNSZWZyZXNoaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW50ZXJ2YWxJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG4gIHBhZ2VEZXRhaWxzOiBhbnkgPSBbXTtcbiAgcGFnZU51bWJlcjogbnVtYmVyID0gMTtcbiAgcm93U2V0OiBudW1iZXIgPSAwO1xuICByb3dTZXRDb3VudDogW251bWJlcl0gPSBbMF07XG4gIHJldHJ5Q291bnQ6IG51bWJlciA9IDA7XG4gICBtYXhSZXRyaWVzOm51bWJlciA9IDU7XG4gIGVsaWdpYmxlRm9yU3VibWlzc2lvbjogeyBzdGF0dXM6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZyB9ID0ge1xuICAgIHN0YXR1czogdHJ1ZSxcbiAgICBtZXNzYWdlOiAnJyxcbiAgfTtcbiAgaW5WYWxpZFF1ZXN0aW9uczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGFsbEVsZW1lbnRJZHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVib3VuY2VUaW1lcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNhcHRjaGFTZXJ2aWNlOiBSZWNhcHRjaGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFRyYWNrZXI6IEVsZW1lbnRUcmFja2VyU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0aW9uU2VydmljZTogRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxuICApIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICB0aGlzLnN1Ym1pc3Npb24gPSBuYXZpZ2F0aW9uPy5leHRyYXMuc3RhdGU/Llsnc3VibWlzc2lvbiddO1xuICAgIHRoaXMucGFyZW50U3VibWlzc2lvbklkID0gdGhpcy5zdWJtaXNzaW9uPy5pZDtcbiAgICB0aGlzLnBhcmVudFF1ZXN0aW9uQW5zd2VycyA9IHRoaXMuc3VibWlzc2lvbj8ucXVlc3Rpb25BbnN3ZXJzO1xuICAgIHRoaXMucGFyZW50UXVlc3Rpb25zID0gbmF2aWdhdGlvbj8uZXh0cmFzLnN0YXRlPy5bJ3BhcmVudFF1ZXN0aW9ucyddO1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0UGFyZW50UXVlc3Rpb25zKHRoaXMucGFyZW50UXVlc3Rpb25zKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2FwdGNoYVNlcnZpY2UucmVtb3ZlUmVjYXB0Y2hhU2NyaXB0KCk7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xuICAgICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbDtcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydhY2NlcHRlZExhbmd1YWdlJ10pIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IDA7XG4gICAgICB0aGlzLmFjY2VwdGVkTGFuZ3VhZ2UgPSBjaGFuZ2VzWydhY2NlcHRlZExhbmd1YWdlJ10uY3VycmVudFZhbHVlO1xuICAgICAgaWYgKCF0aGlzLmVkaXQpIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkKSB7XG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMuZ2V0Rm9ybURhdGEoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEpIHtcbiAgICAgIHRoaXMuZ2V0VG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRUb2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnJlY2FwdGNoYVNlcnZpY2UuZ2V0UmVjYXB0Y2hhVG9rZW4oKTtcbiAgICAgIHRoaXMucmVjYXB0Y2hhVG9rZW4gPSB0b2tlbjtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnRXJyb3Igd2hpbGUgZ2V0dGluZyByZUNBUFRDSEEgdG9rZW46JyxcbiAgICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsb2FkRm9udChmb250TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZm9udFBhdGggPSBgYXNzZXRzL2ZvbnRzLyR7Zm9udE5hbWV9LndvZmYyYDsgLy8gQWRqdXN0IGV4dGVuc2lvbiBhcyBwZXIgeW91ciBmb250IGZpbGVcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuaW5uZXJIVE1MID0gYFxuICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnJHtmb250TmFtZX0nO1xuICAgICAgICBzcmM6IHVybCgnJHtmb250UGF0aH0nKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBmb250LWZhbWlseTogJyR7Zm9udE5hbWV9Jywgc2Fucy1zZXJpZjtcbiAgICAgIH1cbiAgICBgO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgZ2V0Rm9ybURhdGEoKSB7XG4gICAgdGhpcy5mb3JtU2VydmljZVxuICAgICAgLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID1cbiAgICAgICAgICByZXNwb25zZS5yZXN1bHQubW9kdWxlQ29uZmlndXJhdGlvbj8uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uID0gbWFwcGVyLm1hcFB1YmxpY0Zvcm1Ub01vZGVsKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgICAgIHRoaXMuc2V0VXBGb250RmFtaWx5KHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB0aGlzLmdldFRva2VuKCk7XG4gICAgICAgIGlmIChyZXNwb25zZT8ucmVzdWx0Py5wYWdlRGV0YWlscykge1xuICAgICAgICAgIHRoaXMucGFnZURldGFpbHMgPSByZXNwb25zZS5yZXN1bHQucGFnZURldGFpbHM7XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTZXRDb3VudFswXSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhZ2VEZXRhaWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vICAgaWYgKCF0aGlzLnBhZ2VzW2ldKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnBhZ2VzW2ldID0gW107XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldFN1Ym1pdHRlZEZvcm1EYXRhKCkge1xuICAgIHRoaXMuZm9ybVNlcnZpY2VcbiAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKHRoaXMubW9kdWxlTmFtZSwgdGhpcy5zdWJtaXNzaW9uSWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSA9XG4gICAgICAgICAgcmVzcG9uc2UucmVzdWx0Lm1vZHVsZUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xuICAgICAgICB0aGlzLnF1ZXN0aW9uID0gbWFwcGVyLm1hcFB1YmxpY0Zvcm1Ub01vZGVsKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XG4gICAgICAgIGlmIChyZXNwb25zZT8ucmVzdWx0Py5wYWdlRGV0YWlscykge1xuICAgICAgICAgIHRoaXMucGFnZURldGFpbHMgPSByZXNwb25zZS5yZXN1bHQucGFnZURldGFpbHM7XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dTZXRDb3VudFswXSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBhZ2VEZXRhaWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vICAgaWYgKCF0aGlzLnBhZ2VzW2ldKSB7XG4gICAgICAgIC8vICAgICB0aGlzLnBhZ2VzW2ldID0gW107XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgIHRoaXMuc2V0VXBGb250RmFtaWx5KHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB7XG4gICAgICAgICAgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldFVwRm9udEZhbWlseShyZXNwb25zZTogYW55KSB7XG4gICAgLy9zZXQgZm9udCBmYW1pbHkgYW5kIGZvbnQgc2l6ZVxuICAgIGlmIChyZXNwb25zZS5yZXN1bHQ/Lm1vZHVsZUNvbmZpZ3VyYXRpb24/LmN1c3RvbWl6ZUZvbnQpIHtcbiAgICAgIHRoaXMuZm9udEZhbWlseSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uPy5mb250RmFtaWx5O1xuICAgICAgdGhpcy5mb250U2l6ZSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uPy5mb250U2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb250RmFtaWx5ID0gJ1BvcHBpbnMnO1xuICAgICAgdGhpcy5mb250U2l6ZSA9IDE4O1xuICAgIH1cbiAgICB0aGlzLmxvYWRGb250KHRoaXMuZm9udEZhbWlseSk7XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgJy0tbGlicmFyeS1mb250LWZhbWlseScsXG4gICAgICB0aGlzLmZvbnRGYW1pbHlcbiAgICApO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLWxpYnJhcnktZm9udC1zaXplJyxcbiAgICAgIHRoaXMuZm9udFNpemUgKyAncHgnXG4gICAgKTtcbiAgfVxuXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkge1xuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XG4gICAgdGhpcy5wYWdlcyA9IHF1ZXN0aW9uLnBhZ2VzO1xuICAgIGlmICh0aGlzLnBhcmVudFF1ZXN0aW9ucykge1xuICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbkFuc3dlcnMgPSBxdWVzdGlvbj8ucXVlc3Rpb25BbnN3ZXJzO1xuICAgICAgdGhpcy5wYXJlbnRTdWJtaXNzaW9uSWQgPSBxdWVzdGlvbj8ucGFyZW50SWQ7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xuICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzWzFdO1xuICAgIHRoaXMuc2F2ZUF1dG9tYXRpY2FsbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5zYXZlQXV0b21hdGljYWxseTtcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcbiAgICB0aGlzLmN1c3RvbWl6ZUZvbnQgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5jdXN0b21pemVGb250O1xuICAgIHRoaXMuZm9udEZhbWlseSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRGYW1pbHk7XG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xuICAgIHRoaXMuZW5hYmxlRGF0YUV4cG9ydCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZURhdGFFeHBvcnQ7XG4gICAgdGhpcy5maWxlRm9ybWF0cyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZpbGVGb3JtYXRzO1xuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPVxuICAgICAgcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc7XG4gICAgdGhpcy5xdWVzdGlvbk51bWJlcmluZyA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnF1ZXN0aW9uTnVtYmVyaW5nO1xuICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID1cbiAgICAgIHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmVuYWJsZUdvb2dsZVJlY2FwdGNoYTtcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYUtleSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYUtleTtcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYVNlY3JldCA9XG4gICAgICBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFTZWNyZXQ7XG4gICAgdGhpcy5uYXZpZ2F0aW9uID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubmF2aWdhdGlvbjtcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID1cbiAgICAgIHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkO1xuICAgIHRoaXMuYXBpQ2FsbGVkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7ICAgIFxuICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuY3VycmVudFBhZ2VJbmRleCArIDE7ICAgIFxuICAgIGlmIChuZXh0SW5kZXggPCB0aGlzLnBhZ2VEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHsgICAgICAgIFxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZURhdGEgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMuZm9ybVZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VEZXRhaWxzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgICAgaWYodGhpcy5wYWdlc1tuZXh0SW5kZXhdLmxlbmd0aCAhPSAwKXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW25leHRJbmRleF07XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXg9bmV4dEluZGV4O1xuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50UGFnZShuZXh0SW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1tuZXh0SW5kZXggKyAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VEZXRhaWxzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07ICAgICAgICBcbiAgICAgICAgaWYodGhpcy5wYWdlc1tuZXh0SW5kZXhdLmxlbmd0aCAhPSAwKXtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlc1tuZXh0SW5kZXhdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleD1uZXh0SW5kZXg7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMuc2V0Q3VycmVudFBhZ2UobmV4dEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1tuZXh0SW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvUHJldmlvdXNQYWdlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSW5kZXggPiAwKSB7XG4gICAgICBpZiAodGhpcy5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCkge1xuICAgICAgICBjb25zdCBjdXJyZW50UGFnZURhdGEgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMuZm9ybVZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXgtLTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xuICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZURldGFpbHNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LS07XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XG4gICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlRGV0YWlsc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja1N1Ym1pc3Npb25FbGlnaWJpbGl0eSgpOiB2b2lkIHtcbiAgICB0aGlzLmVsaWdpYmxlRm9yU3VibWlzc2lvbiA9IHRoaXMudmFsaWRhdGVBbGxFbGVtZW50TG9hZGVkKCk7XG4gIH1cblxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgdGhpcy5wYWdlcy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5wYWdlc1tpbmRleF0gfHwgdGhpcy5wYWdlc1tpbmRleF0ubGVuZ3RoICE9IDApIHsgICAgICAgIFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGFnZU51bWJlciA9IGluZGV4ICsgMTtcbiAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKFxuICAgICAgICAgIHRoaXMubW9kdWxlTmFtZSxcbiAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25JZCxcbiAgICAgICAgICB0aGlzLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgdGhpcy5yb3dTZXRcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5yZXN1bHQ/LnBhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzW2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC5wYWdlc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZUluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbaW5kZXhdO1xuICAgICAgICAgIHRoaXMucm93U2V0Q291bnRbaW5kZXhdID0gcmVzcG9uc2UucmVzdWx0LnRvdGFsTnVtYmVyUm93O1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtU2VydmljZVxuICAgICAgICAuZ2V0UXVlc3Rpb25zKHRoaXMubW9kdWxlTmFtZSwgdGhpcy5wYWdlTnVtYmVyLCB0aGlzLnJvd1NldClcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZT8ucmVzdWx0Py5wYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlc1tpbmRleF0gPSByZXNwb25zZS5yZXN1bHQucGFnZXNbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW2luZGV4XTtcbiAgICAgICAgICB0aGlzLnJvd1NldENvdW50W2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMuZm9ybVZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSBpbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGxvYWRNb3JlRGF0YShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHJvd0NvdW50TGltaXQgPSB0aGlzLnJvd1NldENvdW50W2luZGV4XTtcbiAgICBsZXQgcm93Q291bnQgPSB0aGlzLnBhZ2VzW2luZGV4XT8ucm93cz8ubGVuZ3RoIC8gMjA7XG4gICAgcm93Q291bnQgPSBNYXRoLmNlaWwocm93Q291bnQpO1xuXG4gICAgaWYgKHJvd0NvdW50ICsgMSA+IHJvd0NvdW50TGltaXQpIHtcbiAgICAgIHRoaXMuY2hlY2tTdWJtaXNzaW9uRWxpZ2liaWxpdHkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKFxuICAgICAgICAgIHRoaXMubW9kdWxlTmFtZSxcbiAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25JZCxcbiAgICAgICAgICBpbmRleCArIDEsXG4gICAgICAgICAgcm93Q291bnRcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IHJlc3BvbnNlPy5yZXN1bHQ/LnBhZ2VzWzBdPy5yb3dzID8/IFtdO1xuICAgICAgICAgIHRoaXMucGFnZXNbaW5kZXhdLnJvd3MgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5wYWdlc1tpbmRleF0/LnJvd3MgPz8gW10pLFxuICAgICAgICAgICAgLi4ubmV3Um93cyxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW2luZGV4XTtcbiAgICAgICAgICB0aGlzLnJvd1NldENvdW50W2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgICB0aGlzLmNoZWNrU3VibWlzc2lvbkVsaWdpYmlsaXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAgIC5nZXRRdWVzdGlvbnModGhpcy5tb2R1bGVOYW1lLCBpbmRleCArIDEsIHJvd0NvdW50KVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3Um93cyA9IHJlc3BvbnNlPy5yZXN1bHQ/LnBhZ2VzWzBdPy5yb3dzID8/IFtdO1xuICAgICAgICAgIHRoaXMucGFnZXNbaW5kZXhdLnJvd3MgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5wYWdlc1tpbmRleF0/LnJvd3MgPz8gW10pLFxuICAgICAgICAgICAgLi4ubmV3Um93cyxcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW2luZGV4XTtcbiAgICAgICAgICB0aGlzLnJvd1NldENvdW50W2luZGV4XSA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbE51bWJlclJvdztcbiAgICAgICAgICB0aGlzLmNoZWNrU3VibWlzc2lvbkVsaWdpYmlsaXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xuICAgIGNvbnN0IGV4dHJhY3RRdWVzdGlvbnMgPSAoXG4gICAgICBmb3JtRWxlbWVudHM6IGFueVtdLFxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICAgIGlzSW5TdWJGb3JtOiBib29sZWFuID0gZmFsc2UsXG4gICAgICBzdWJGb3JtSW5kZXg6IG51bWJlciA9IDBcbiAgICApOiB7IGFuc3dlcnM6IEFuc3dlcltdOyBmb3JtczogRm9ybVtdIH0gPT4ge1xuICAgICAgY29uc3QgcXVlc3Rpb25zOiBBbnN3ZXJbXSA9IFtdO1xuICAgICAgY29uc3QgZm9ybXM6IEZvcm1bXSA9IFtdO1xuXG4gICAgICBmb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgbGV0IGJhc2VRdWVzdGlvbjogYW55O1xuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcbiAgICAgICAgICAgIGJhc2VRdWVzdGlvbiA9IHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZWxlbWVudC5lbGVtZW50LmlkLFxuICAgICAgICAgICAgICBhbnN3ZXI6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBpc0luU3ViRm9ybVxuICAgICAgICAgICAgICAgID8gYCR7cGFyZW50Rm9ybUlkfV8ke3N1YkZvcm1JbmRleH1fJHtlbGVtZW50LmVsZW1lbnQuaWR9YFxuICAgICAgICAgICAgICAgIDogZWxlbWVudC5lbGVtZW50LmlkO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHF1ZXN0aW9uSWQsXG4gICAgICAgICAgICAgICAgZmlsZTogZWxlbWVudC5lbGVtZW50LmFuc3dlcixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2VRdWVzdGlvbiA9IHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZWxlbWVudC5lbGVtZW50LmlkLFxuICAgICAgICAgICAgICBhbnN3ZXI6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmJhc2VRdWVzdGlvbixcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcbiAgICAgICAgICAgICAgZGVsZXRlRmlsZXM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVGaWxlcyB8fCBbXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxdWVzdGlvbnMucHVzaChiYXNlUXVlc3Rpb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIGxvZ2ljLnJvd3MpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgIHJvdy5ncmlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRGb3JtSWQsXG4gICAgICAgICAgICAgICAgICAgIGlzSW5TdWJGb3JtLFxuICAgICAgICAgICAgICAgICAgICBzdWJGb3JtSW5kZXhcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XG4gICAgICAgICAgY29uc3Qgc3ViZm9ybUlkID0gZWxlbWVudC5lbGVtZW50LmlkO1xuICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb25JZCA9IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9uSWQ7XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICBsZXQgYWxsQW5zd2VyczogQW5zd2VyW10gPSBbXTtcblxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZXh0cmFjdGVkID0gZXh0cmFjdFF1ZXN0aW9ucyhcbiAgICAgICAgICAgICAgICByb3cuZ3JpZCxcbiAgICAgICAgICAgICAgICBzdWJmb3JtSWQsXG4gICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICBmb3Jtcy5sZW5ndGhcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZXh0cmFjdGVkLmFuc3dlcnMuZm9yRWFjaCgoYW5zd2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgYWxsQW5zd2Vycy5wdXNoKHsgLi4uYW5zd2VyIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBzdWJmb3JtOiBGb3JtID0ge1xuICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcbiAgICAgICAgICAgICAgZGVsZXRlZFN1Ym1pc3Npb25zOiBbXSxcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uSWQ6IHN1Ym1pc3Npb25JZCxcbiAgICAgICAgICAgICAgICAgIGFuc3dlcnM6IGFsbEFuc3dlcnMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVsZW1lbnQucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybUFuc3dlcnM6IEFuc3dlcltdID0gW107XG4gICAgICAgICAgICBsZXQgc3ViZm9ybVF1ZXN0aW9uczogYW55ID0geyBhbnN3ZXJzOiBbXSB9O1xuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgc3ViZm9ybVF1ZXN0aW9ucyA9IGV4dHJhY3RRdWVzdGlvbnMoXG4gICAgICAgICAgICAgICAgcm93LmdyaWQsXG4gICAgICAgICAgICAgICAgc3ViZm9ybUlkLFxuICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgZm9ybXMubGVuZ3RoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nU3ViZm9ybSA9IGZvcm1zLmZpbmQoXG4gICAgICAgICAgICAgIChmb3JtKSA9PiBmb3JtLmZvcm1JZCA9PT0gc3ViZm9ybUlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5wcm9wZXJ0eS5lbmFibGVJbmxpbmVFZGl0aW5nICYmIGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9ucykge1xuICAgICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuc3VibWlzc2lvbnMgPSB0aGlzLmNsZWFyRW1wdHlTdWJtaXNzaW9ucyhcbiAgICAgICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuc3VibWlzc2lvbnNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudD8uc3VibWlzc2lvbnM/LmZvckVhY2goXG4gICAgICAgICAgICAgIChzdWJtaXNzaW9uOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLmFuc3dlcnMuZm9yRWFjaCgoYW5zd2VyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbnN3ZXIuaHRtbENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIuZmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBgJHtzdWJmb3JtSWR9XyR7aW5kZXh9XyR7YW5zd2VyLnF1ZXN0aW9uSWR9YDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IGFuc3dlci5maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbnN3ZXIuZmlsZXM7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkZWxldGUgYW5zd2VyLmF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybTogRm9ybSA9IHtcbiAgICAgICAgICAgICAgZm9ybUlkOiBzdWJmb3JtSWQsXG4gICAgICAgICAgICAgIGRlbGV0ZWRTdWJtaXNzaW9uczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZWRTdWJtaXNzaW9ucyxcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9ucyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3Jtcy5wdXNoKHN1YmZvcm0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTl9HUk9VUCcpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgUXVlc3Rpb24gR3JvdXAgYnkgaXRlcmF0aW5nIHRocm91Z2ggcm93c1xuICAgICAgICAgIGVsZW1lbnQuZWxlbWVudC5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChncmlkSXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChncmlkSXRlbS5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZ3JpZEl0ZW0uZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgICAgIGFuc3dlcjogZ3JpZEl0ZW0uZWxlbWVudC5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ01VTFRJRklFTEQnKSB7XG4gICAgICAgICAgY29uc3QgbXVsdGlmaWVsZHM6IGFueSA9IFtdO1xuXG4gICAgICAgICAgZWxlbWVudC5lbGVtZW50LnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGdyaWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGdyaWRJdGVtLmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcbiAgICAgICAgICAgICAgICBtdWx0aWZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGdyaWRJdGVtLmVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgICBhbnN3ZXI6IGdyaWRJdGVtLmVsZW1lbnQuYW5zd2VyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcbiAgICAgICAgICAgIGFuc3dlcjogbnVsbCxcbiAgICAgICAgICAgIGZpZWxkczogbXVsdGlmaWVsZHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgYW5zd2VyczogcXVlc3Rpb25zLCBmb3JtczogZm9ybXMgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgcHJvY2Vzc1BhZ2VzID0gKFxuICAgICAgcGFnZXM6IGFueVtdXG4gICAgKTogeyBhbnN3ZXJzOiBBbnN3ZXJbXTsgZm9ybXM6IEZvcm1bXSB9ID0+IHtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uczogQW5zd2VyW10gPSBbXTtcbiAgICAgIGNvbnN0IGZvcm1zOiBGb3JtW10gPSBbXTtcblxuICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xuICAgICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgICAgZm9ybXMucHVzaCguLi5yZXN1bHQuZm9ybXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyBhbnN3ZXJzOiBxdWVzdGlvbnMsIGZvcm1zOiBmb3JtcyB9O1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzUGFnZXModGhpcy5wYWdlcyk7XG4gICAgdGhpcy5xdWVzdGlvbkFuc3dlcnMgPSB7XG4gICAgICBwYXJlbnRJZDogJycsXG4gICAgICBhbnN3ZXJzOiByZXN1bHQuYW5zd2VycyxcbiAgICAgIGZvcm1zOiByZXN1bHQuZm9ybXMsXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyRW1wdHlTdWJtaXNzaW9ucyhzdWJtaXNzaW9uczogYW55KSB7XG4gICAgY29uc3Qgbm9uRW1wdHlTdWJtaXNzaW9uczogU3VibWlzc2lvbltdID0gW107XG4gICAgY29uc3QgZW1wdHlTdWJtaXNzaW9uSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgc3VibWlzc2lvbnMuZm9yRWFjaCgoc3VibWlzc2lvbjogYW55KSA9PiB7XG4gICAgICBjb25zdCBoYXNWYWx1ZSA9IHN1Ym1pc3Npb24uYW5zd2Vycy5zb21lKFxuICAgICAgICAoYW5zd2VyOiBhbnkpID0+XG4gICAgICAgICAgYW5zd2VyLmFuc3dlciAhPT0gJycgJiZcbiAgICAgICAgICBhbnN3ZXIuYW5zd2VyICE9PSBudWxsICYmXG4gICAgICAgICAgYW5zd2VyLmFuc3dlciAhPT0gdW5kZWZpbmVkXG4gICAgICApO1xuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIG5vbkVtcHR5U3VibWlzc2lvbnMucHVzaChzdWJtaXNzaW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpIHtcbiAgICAgICAgZW1wdHlTdWJtaXNzaW9uSWRzLnB1c2goc3VibWlzc2lvbi5zdWJtaXNzaW9uSWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3VibWlzc2lvbnMgPSBub25FbXB0eVN1Ym1pc3Npb25zO1xuICAgIHJldHVybiBzdWJtaXNzaW9ucztcbiAgfVxuXG4gIHZhbGlkYXRlQWxsRWxlbWVudExvYWRlZCgpOiB7IHN0YXR1czogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0ge1xuICAgIGlmICh0aGlzLnBhZ2VzLmxlbmd0aCA8IHRoaXMucGFnZURldGFpbHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdQbGVhc2UgZW5zdXJlIGFsbCBwYWdlcyBhcmUgZnVsbHkgdmlzaWJsZSBiZWZvcmUgc3VibWl0dGluZyB0aGUgZm9ybS4nLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNvbXBsZXRlUGFnZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICB0aGlzLnBhZ2VzLmZvckVhY2goKHA6IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFwIHx8XG4gICAgICAgICFBcnJheS5pc0FycmF5KHAucm93cykgfHxcbiAgICAgICAgTWF0aC5jZWlsKHAucm93cy5sZW5ndGggLyAyMCkgPCB0aGlzLnJvd1NldENvdW50W2ldXG4gICAgICApIHtcbiAgICAgICAgaW5jb21wbGV0ZVBhZ2VzLnB1c2godGhpcy5wYWdlRGV0YWlsc1tpXS5uYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpbmNvbXBsZXRlUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogYFNvbWUgc2VjdGlvbnMgYXJlIHN0aWxsIGxvYWRpbmcuIFBsZWFzZSBzY3JvbGwgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHBhZ2VzIHRvIGVuc3VyZSBhbGwgcXVlc3Rpb25zIGFyZSBsb2FkZWQ6ICR7aW5jb21wbGV0ZVBhZ2VzLmpvaW4oXG4gICAgICAgICAgJywgJ1xuICAgICAgICApfS5gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiB0cnVlLFxuICAgICAgbWVzc2FnZTogJ0dyZWF0ISBBbGwgc2VjdGlvbnMgYXJlIGNvbXBsZXRlLiBZb3UgY2FuIG5vdyBzdWJtaXQgdGhlIGZvcm0uJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVBbGxFbGVtZW50TG9hZGVkKCkuc3RhdHVzKSB7XG4gICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdQbGVhc2Ugd2FpdCBmb3IgYWxsIGVsZW1lbnRzIHRvIGxvYWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pblZhbGlkUXVlc3Rpb25zLmNsZWFyKCk7XG4gICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckFsbCgpO1xuICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdFcnJvciB3aGlsZSBnZXR0aW5nIHJlQ0FQVENIQSB0b2tlbjonLFxuICAgICAgICAgIGVycm9yLmVycm9yPy5tZXNzYWdlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgdG8gdmVyaWZ5IHJlQ0FQVENIQS4nKTtcbiAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIGxldCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlRm9ybSh0aGlzLnBhZ2VzKTtcbiAgICB0aGlzLmdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCk7XG4gICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgdGhpcy5xdWVzdGlvbkFuc3dlcnMucGFyZW50SWQgPSB0aGlzLnBhcmVudFN1Ym1pc3Npb25JZDtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbicsIEpTT04uc3RyaW5naWZ5KHRoaXMucXVlc3Rpb25BbnN3ZXJzKSk7XG4gICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHNlZW5RdWVzdGlvbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGNvbnN0IHVuaXF1ZUZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGZpbGVJdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKHNlZW5RdWVzdGlvbklkcy5oYXMoZmlsZUl0ZW0ucXVlc3Rpb25JZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VlblF1ZXN0aW9uSWRzLmFkZChmaWxlSXRlbS5xdWVzdGlvbklkKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdW5pcXVlRmlsZXMuZm9yRWFjaCgoZmlsZUl0ZW0pID0+IHtcbiAgICAgICAgICBmaWxlSXRlbS5maWxlLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpbGVJdGVtLnF1ZXN0aW9uSWQsIGZpbGUuX2ZpbGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcm1TZXJ2aWNlQ2FsbCA9XG4gICAgICAgIHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZFxuICAgICAgICAgID8gdGhpcy5mb3JtU2VydmljZS51cGRhdGVGb3JtKFxuICAgICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgIHRoaXMuc3VibWlzc2lvbklkLFxuICAgICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgdGhpcy5yZWNhcHRjaGFUb2tlblxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogdGhpcy5mb3JtU2VydmljZS5zdWJtaXRGb3JtKFxuICAgICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICAgICAgICB0aGlzLnJlY2FwdGNoYVRva2VuXG4gICAgICAgICAgICApO1xuXG4gICAgICBmb3JtU2VydmljZUNhbGwuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcbiAgICAgICAgICAgIHRoaXMuZWRpdFxuICAgICAgICAgICAgICA/ICdGb3JtIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5J1xuICAgICAgICAgICAgICA6ICdGb3JtIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHknXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KCdzdWNjZXNzJyk7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckFsbCgpO1xuICAgICAgICAgIHRoaXMuZmluZFF1ZXN0aW9uUGFnZUluZGV4KHRoaXMucGFyc2VFcnJvcnNUb01hcChlcnJvci5lcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IHRoaXMucGFnZXMubGVuZ3RoLTE7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9GaXJzdEVycm9yKCk7XG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSkge1xuICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLnRvYXN0ci5lcnJvcih2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiBwYXJzZUVycm9yc1RvTWFwKGVycm9yU3RyaW5nOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBlcnJvck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgLy8gQ29udmVydCB0aGUgaW5jb3JyZWN0IGZvcm1hdCB0byBhIHZhbGlkIG9iamVjdCBzdHJ1Y3R1cmVcbiAgICBlcnJvclN0cmluZ1xuICAgICAgICAucmVwbGFjZSgvW3t9XS9nLCAnJykgLy8gUmVtb3ZlIGN1cmx5IGJyYWNlc1xuICAgICAgICAuc3BsaXQoJywgJykgLy8gU3BsaXQga2V5LXZhbHVlIHBhaXJzXG4gICAgICAgIC5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFpci5zcGxpdCgnPScpO1xuICAgICAgICAgICAgaWYgKGtleSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWFwLnNldChrZXkudHJpbSgpLCB2YWx1ZS50cmltKCkpOyAvLyBTdG9yZSBpbiBNYXBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gZXJyb3JNYXA7XG59XG4gIGFzeW5jIG5hdmlnYXRlVG9GaXJzdEVycm9yKCkge1xuICAgIGNvbnN0IGZpcnN0RXJyb3IgPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEZpcnN0SW52YWxpZCgpO1xuICAgIGlmICghZmlyc3RFcnJvcikgcmV0dXJuO1xuXG4gICAgY29uc3QgZWxlbWVudElkID0gYHF1ZXN0aW9uLSR7Zmlyc3RFcnJvci5pZH1gO1xuXG4gICAgdGhpcy5yZXRyeUNvdW50ID0gMDtcblxuICAgIC8vIENoYW5nZSBwYWdlIGlmIG5lZWRlZFxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSW5kZXggIT09IGZpcnN0RXJyb3IucGFnZUluZGV4KSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSBmaXJzdEVycm9yLnBhZ2VJbmRleDtcbiAgICAgIHRoaXMuZGVib3VuY2UoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCksIDEwMCk7XG4gICAgICBpZih0aGlzLm5hdmlnYXRpb24gPT09ICdUQUInKVxuICAgICAgdGhpcy5jaGlsZC50cmlnZ2VyRnVuY3Rpb24oZmlyc3RFcnJvci5wYWdlSW5kZXgpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2Nyb2xsVG9FbGVtZW50V2l0aFJldHJ5KGVsZW1lbnRJZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNjcm9sbFRvRWxlbWVudFdpdGhSZXRyeShlbGVtZW50SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmV0cnlDb3VudCsrO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpO1xuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnNjcm9sbEFuZEZvY3VzKGVsZW1lbnQpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXRyeUNvdW50IDwgdGhpcy5tYXhSZXRyaWVzKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XG4gICAgICByZXR1cm4gdGhpcy5zY3JvbGxUb0VsZW1lbnRXaXRoUmV0cnkoZWxlbWVudElkKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGBFbGVtZW50ICR7ZWxlbWVudElkfSBub3QgZm91bmQgYWZ0ZXIgJHt0aGlzLm1heFJldHJpZXN9IGF0dGVtcHRzYCk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuZmFsbGJhY2tTY3JvbGwoKSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEFuZEZvY3VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBibG9jazogJ2NlbnRlcicsXG4gICAgICBpbmxpbmU6ICduZWFyZXN0J1xuICAgIH0pO1xuXG4gICAgY29uc3QgZm9jdXNhYmxlID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBidXR0b24sIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgIGZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmFsbGJhY2tTY3JvbGwoKSB7XG4gICAgY29uc3QgcGFnZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAucGFnZS0ke3RoaXMuY3VycmVudFBhZ2VJbmRleH1gKTtcbiAgICBwYWdlRWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ2F1dG8nIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZShmdW5jOiAoKSA9PiB2b2lkLCBkZWxheTogbnVtYmVyKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lcik7XG4gICAgdGhpcy5kZWJvdW5jZVRpbWVyID0gc2V0VGltZW91dChmdW5jLCBkZWxheSk7XG4gIH1cbi8vICAgZXh0cmFjdElkKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuLy8gICAgIGNvbnN0IG1hdGNoID0gbWVzc2FnZS5tYXRjaCgvWzAtOWEtZkEtRi1dezM2fS8pO1xuLy8gICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzBdIDogbnVsbDtcbi8vIH1cblxuLy8gIHJlbW92ZUlkKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4vLyAgIHJldHVybiBtZXNzYWdlLnJlcGxhY2UoL1swLTlhLWZBLUYtXXszNn0kLywgXCJcIikudHJpbSgpO1xuLy8gfVxuXG5cbmZpbmRRdWVzdGlvblBhZ2VJbmRleChxdWVzdGlvbkVycm9yczogTWFwPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICBmb3IgKGxldCBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCB0aGlzLnBhZ2VzLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcbiAgICBjb25zdCBwYWdlID0gdGhpcy5wYWdlc1twYWdlSW5kZXhdO1xuXG4gICAgZm9yIChjb25zdCByb3cgb2YgcGFnZS5yb3dzKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgdGhpcy5jaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhlbGVtZW50LCBxdWVzdGlvbkVycm9ycywgcGFnZUluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxucHJpdmF0ZSBjaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhlbGVtZW50OiBhbnksIHF1ZXN0aW9uRXJyb3JzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBwYWdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICBpZiAoZWxlbWVudC5lbGVtZW50LmlkICYmIHF1ZXN0aW9uRXJyb3JzLmhhcyhlbGVtZW50LmVsZW1lbnQuaWQpKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5zZXRJbnZhbGlkKGVsZW1lbnQuZWxlbWVudC5pZCwgcXVlc3Rpb25FcnJvcnMuZ2V0KGVsZW1lbnQuZWxlbWVudC5pZCkhLCBwYWdlSW5kZXgpO1xuICB9XG4gIFxuICAvLyBIYW5kbGUgc3ViZm9ybXMgcmVjdXJzaXZlbHlcbiAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmIGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XG4gICAgZm9yIChjb25zdCByb3cgb2YgZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgIGZvciAoY29uc3QgZ3JpZEl0ZW0gb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgdGhpcy5jaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhncmlkSXRlbSwgcXVlc3Rpb25FcnJvcnMsIHBhZ2VJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9ICBcbiAgaWYgKChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTl9HUk9VUCcgfHwgZWxlbWVudC5lbnRpdHlUeXBlPT09J01VTFRJRklFTEQnKSAmJiBlbGVtZW50LmVsZW1lbnQucm93cykge1xuICAgIGZvciAoY29uc3Qgcm93IG9mIGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XG4gICAgICBmb3IgKGNvbnN0IGdyaWRJdGVtIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgIHRoaXMuY2hlY2tBbmRTdG9yZUludmFsaWRRdWVzdGlvbnMoZ3JpZEl0ZW0sIHF1ZXN0aW9uRXJyb3JzLCBwYWdlSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBsb2dpYy1iYXNlZCBjb25kaXRpb25zIHJlY3Vyc2l2ZWx5XG4gIGlmICgoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSAmJiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICBmb3IgKGNvbnN0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBncmlkSXRlbSBvZiByb3cuZ3JpZCkge1xuICAgICAgICAgICAgdGhpcy5jaGVja0FuZFN0b3JlSW52YWxpZFF1ZXN0aW9ucyhncmlkSXRlbSwgcXVlc3Rpb25FcnJvcnMsIHBhZ2VJbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZvY3VzUXVlc3Rpb25FbGVtZW50KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpIHtcbiAgLy8gRmluZCBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCB3aXRoaW4gdGhlIHF1ZXN0aW9uXG4gIGNvbnN0IGZvY3VzYWJsZSA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XScpO1xuICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgKGZvY3VzYWJsZSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXIuZm9jdXMoKTtcbiAgfVxufVxuICB2YWxpZGF0ZUZvcm0oanNvbkRhdGE6IGFueSk6IHtcbiAgICBpc1ZhbGlkOiBib29sZWFuO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBwYWdlSW5kZXg6IG51bWJlciB8IDA7XG4gIH0ge1xuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKFxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXVxuICAgICk6IHsgaXNWYWxpZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nOyBwYWdlSW5kZXg6IG51bWJlciB8IDAgfSA9PiB7XG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xuICAgICAgICBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gZWxlbWVudC5lbGVtZW50LmFuc3dlcjtcbiAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gZWxlbWVudC5lbGVtZW50LnZhbGlkYXRpb247XG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xuICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGVsZW1lbnQuZWxlbWVudC5hdHRhY2htZW50cztcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoKCFhbnN3ZXIgfHwgYW5zd2VyPy5sZW5ndGggPT09IDApICYmICghYXR0YWNobWVudCB8fGF0dGFjaG1lbnQ/Lmxlbmd0aCA9PSAwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5WYWxpZFF1ZXN0aW9ucy5zZXQoZWxlbWVudC5lbGVtZW50LmlkLFwiUmVxdWlyZWQgZmlsZSBxdWVzdGlvbiBoYXMgbm8gZmlsZXMgdXBsb2FkZWQuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBSZXF1aXJlZCBmaWxlIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBoYXMgbm8gZmlsZXMgdXBsb2FkZWQuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5WYWxpZFF1ZXN0aW9ucy5zZXQoZWxlbWVudC5lbGVtZW50LmlkLFwiUXVlc3Rpb24gaXMgcmVxdWlyZWQgYnV0IG5vIGFuc3dlciBwcm92aWRlZC5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyByZXF1aXJlZCBidXQgbm8gYW5zd2VyIHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0aW9uPT09ZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIlF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCB2YWxpZGF0aW9uIGlzIGZhbHNlLlwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIHJlcXVpcmVkIGJ1dCB2YWxpZGF0aW9uIGlzIGZhbHNlLmAsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghcmVxdWlyZWQgJiYgYW5zd2VyICYmIE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIlF1ZXN0aW9uIGlzIG5vdCByZXF1aXJlZCBidXQgYW5zd2VyIHByb3ZpZGVkIHdpdGggdmFsaWRhdGlvbiBmYWxzZS5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgcmVxdWlyZWQgYnV0IGFuc3dlciBwcm92aWRlZCB3aXRoIHZhbGlkYXRpb24gZmFsc2UuYCxcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMobG9naWMucm93cyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyApIHtcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnByb3BlcnR5LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlbGVtZW50LmVsZW1lbnQucm93cztcbiAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVkUXVlc3Rpb25JZHMgPSBkYXRhXG4gICAgICAgICAgICAgIC5mbGF0TWFwKChyb3c6IGFueSkgPT4gcm93LmdyaWQpIC8vIEV4dHJhY3RpbmcgZ3JpZCBpdGVtcyBmcm9tIGVhY2ggb2JqZWN0XG4gICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmVsZW1lbnQucmVxdWlyZWQ7IC8vIEVuc3VyaW5nIHRoZSBmaWx0ZXIgcHJvcGVybHkgY2hlY2tzICdyZXF1aXJlZCdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmVsZW1lbnQuaWQpO1xuXG4gICAgICAgICAgICBpZiAocmVxdWlyZWRRdWVzdGlvbklkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGlmIChlbGVtZW50Py5lbGVtZW50Py5zdWJtaXNzaW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZVJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQgPSByZXF1aXJlZFF1ZXN0aW9uSWRzLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgKHJlcXVpcmVkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0Fuc3dlciA9IGVsZW1lbnQ/LmVsZW1lbnQ/LnN1Ym1pc3Npb25zXG4gICAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHN1YjogYW55KSA9PiBzdWIuYW5zd2VycylcbiAgICAgICAgICAgICAgICAgICAgICAuZmluZCgoYW5zd2VyOiBhbnkpID0+IGFuc3dlci5xdWVzdGlvbklkID09PSByZXF1aXJlZElkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0Fuc3dlciAmJiBtYXRjaGluZ0Fuc3dlci5hbnN3ZXIudHJpbSgpICE9PSAnJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFhcmVSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIlF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuXCIpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgJ0Zvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuJyxcbiAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJycsIHBhZ2VJbmRleDogMCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnMuc2V0KGVsZW1lbnQuZWxlbWVudC5pZCxcIk5vIHN1Ym1pc3Npb25zIHByb3ZpZGVkIGZvciByZXF1aXJlZCBxdWVzdGlvbnMuXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICdGb3JtIGlzIGludmFsaWQgLSBObyBzdWJtaXNzaW9ucyBwcm92aWRlZCBmb3IgcmVxdWlyZWQgcXVlc3Rpb25zLicsXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJycsIHBhZ2VJbmRleDogMCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGVsZW1lbnQuZWxlbWVudC5yb3dzLm1hcCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHJlc3VsdHMuZXZlcnkoKHJlczogYW55KSA9PiByZXMuaXNWYWxpZCk7XG4gICAgICAgICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIGNvbnN0IHJlc3VsdCA9ICBlbGVtZW50LmVsZW1lbnQucm93cy5mbGF0TWFwKChyb3c6IGFueSkgPT5cbiAgICAgICAgICAgICAgLy8gICB7XG4gICAgICAgICAgICAgIC8vICAgICB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgICAgICAgIC8vICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAvLyB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlICBpZiAoKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OX0dST1VQJyB8fCBlbGVtZW50LmVudGl0eVR5cGU9PT0nTVVMVElGSUVMRCcpJiYgZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcbiAgICAgICAgICBcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBlbGVtZW50LmVsZW1lbnQucm93cykge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQgJiYgZWxlbWVudC5lbnRpdHlUeXBlIT0nTVVMVElGSUVMRCcpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnJywgcGFnZUluZGV4OiAwIH07XG4gICAgfTtcblxuICAgIGZvciAobGV0IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IGpzb25EYXRhLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBqc29uRGF0YVtwYWdlSW5kZXhdO1xuICAgICAgZm9yIChsZXQgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XG4gICAgICAgIHRoaXMuaW5WYWxpZFF1ZXN0aW9ucy5mb3JFYWNoKChtZXNzYWdlOiBzdHJpbmcsIGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnNldEludmFsaWQoaWQsbWVzc2FnZSwgcGFnZUluZGV4KTtcbn0pO1xuICAgICAgICB0aGlzLmluVmFsaWRRdWVzdGlvbnM9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICAgIC8vIGlmICghcmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgICAvLyAgICAgaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIC8vICAgICBtZXNzYWdlOiBgUGFnZSAke3BhZ2VJbmRleCArIDF9OiAke3Jlc3VsdC5tZXNzYWdlfWAsXG4gICAgICAgIC8vICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleCxcbiAgICAgICAgLy8gICB9O1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGpzb25EYXRhLmxlbmd0aC0xO1xuICAgIGlmICh0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEZpcnN0SW52YWxpZCgpKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9GaXJzdEVycm9yKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTogYFBhZ2VgLFxuICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICdGb3JtIGlzIHZhbGlkLicsXG4gICAgICBwYWdlSW5kZXg6IDAsXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXBkYXRlU3ViRm9ybSh0aGlzLnBhZ2VzLCBldmVudCk7XG4gIH1cblxuICB1cGRhdGVTdWJGb3JtID0gKHBhZ2VzOiBhbnlbXSwgdXBkYXRlZFN1YkZvcm06IGFueSkgPT4ge1xuICAgIHBhZ2VzLmZvckVhY2goKHBhZ2UpID0+IHtcbiAgICAgIHBhZ2Uucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xuICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LmlkID09PSB1cGRhdGVkU3ViRm9ybS5mb3JtSWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXhpc3Rpbmcgc3ViZm9ybSB3aXRoIHRoZSBuZXcgZGF0YVxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50ID0gdXBkYXRlZFN1YkZvcm07XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuaWQgIT09IHVwZGF0ZWRTdWJGb3JtLmZvcm1JZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHN1YmZvcm1zIGxvZ2ljIGhlcmUgaWYgbmVlZGVkXG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJyAmJlxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSB1cGRhdGUgY2hpbGQgbG9naWNzXG4gICAgICAgICAgICAvLyBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy51cGRhdGVTdWJGb3JtKGxvZ2ljLnJvd3MsIHVwZGF0ZWRTdWJGb3JtKTtcbiAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgLy8gfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxuICBcbiAgXG4gIDxkaXYgY2xhc3M9XCJoZWFkIGNvbnRhaW5lclwiPlxuICAgIDxsaWItaGVhZGVyIFtuYW1lXT1cIm5hbWVcIj48L2xpYi1oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYm9keSBjb250YWluZXJcIj5cbiAgICBcbiAgICA8bGliLXN1Ym1pc3Npb24tY29udGFpbmVyIFtwYXJlbnRRdWVzdGlvbkFuc3dlcnNdPVwicGFyZW50UXVlc3Rpb25BbnN3ZXJzXCJcbiAgICAqbmdJZj1cInBhcmVudFF1ZXN0aW9uQW5zd2Vyc1wiPjwvbGliLXN1Ym1pc3Npb24tY29udGFpbmVyPlxuICAgIFxuICAgIDxsaWItbmF2aWdhdGlvbi10YWJzXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ1RBQidcIlxuICAgICAgW3BhZ2VzXT1cInBhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxuICAgICAgKHBhZ2VDaGFuZ2VkKT1cInNldEN1cnJlbnRQYWdlKCRldmVudClcIlxuICAgICAgKHN1Ym1pdEVtaXQpPVwic3VibWl0Rm9ybSgpXCJcbiAgICAgIFtwYWdlRGV0YWlsc109XCJwYWdlRGV0YWlsc1wiXG4gICAgICBbZWxpZ2libGVGb3JTdWJtaXNzaW9uXT1cImVsaWdpYmxlRm9yU3VibWlzc2lvblwiXG4gICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICAgIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICBbbWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWRdPVwibWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWRcIlxuICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgIChyb3dTZXRJbmRleCk9XCJsb2FkTW9yZURhdGEoJGV2ZW50KVwiXG4gICAgPjwvbGliLW5hdmlnYXRpb24tdGFicz5cbiAgICA8bGliLW5leHQtcHJldi1uYXZpZ2F0aW9uXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ05FWFRfQU5EX1BSRVZJT1VTX0JVVFRPTidcIlxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXG4gICAgICBbcGFnZURldGFpbHNdPVwicGFnZURldGFpbHNcIlxuICAgICAgKHJvd1NldEluZGV4KT1cImxvYWRNb3JlRGF0YSgkZXZlbnQpXCJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXG4gICAgICBbcHJldmlvdXNQYWdlXT1cInByZXZpb3VzUGFnZVwiXG4gICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgW25leHRQYWdlXT1cIm5leHRQYWdlXCJcbiAgICAgIChuYXZpZ2F0ZU5leHQpPVwibmF2aWdhdGVUb05leHRQYWdlKClcIlxuICAgICAgKG5hdmlnYXRlUHJldmlvdXMpPVwibmF2aWdhdGVUb1ByZXZpb3VzUGFnZSgpXCJcbiAgICAgIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAoc3VibWl0RW1pdCk9XCJzdWJtaXRGb3JtKClcIlxuICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxuICAgID48L2xpYi1uZXh0LXByZXYtbmF2aWdhdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -5330,11 +5330,11 @@ class SubmitFormComponent {
5330
5330
  this.nextPage = this.pageDetails[1];
5331
5331
  }
5332
5332
  this.rowSetCount[0] = response.result.totalNumberRow;
5333
- for (let i = 0; i < this.pageDetails.length; i++) {
5334
- if (!this.pages[i]) {
5335
- this.pages[i] = [];
5336
- }
5337
- }
5333
+ // for (let i = 0; i < this.pageDetails.length; i++) {
5334
+ // if (!this.pages[i]) {
5335
+ // this.pages[i] = [];
5336
+ // }
5337
+ // }
5338
5338
  });
5339
5339
  }
5340
5340
  getSubmittedFormData() {
@@ -5350,11 +5350,11 @@ class SubmitFormComponent {
5350
5350
  this.nextPage = this.pageDetails[1];
5351
5351
  }
5352
5352
  this.rowSetCount[0] = response.result.totalNumberRow;
5353
- for (let i = 0; i < this.pageDetails.length; i++) {
5354
- if (!this.pages[i]) {
5355
- this.pages[i] = [];
5356
- }
5357
- }
5353
+ // for (let i = 0; i < this.pageDetails.length; i++) {
5354
+ // if (!this.pages[i]) {
5355
+ // this.pages[i] = [];
5356
+ // }
5357
+ // }
5358
5358
  this.setUpFontFamily(response);
5359
5359
  if (this.enableGoogleRecaptcha) {
5360
5360
  this.getToken();