tango-app-ui-manage-tickets 3.7.0-beta.79 → 3.7.0-beta.80

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.
@@ -97,10 +97,10 @@ export class AuditRetagComponent {
97
97
  const jsonString = JSON.stringify(this.auditmappingdata);
98
98
  const compressedData = LZString.compress(jsonString);
99
99
  sessionStorage.setItem('audit', compressedData);
100
- this.toastr.getSuccessToast(`${matched?.type} Added Succesfully!`);
100
+ this.toastr.getSuccessToast(`${matched?.name} Added Succesfully!`);
101
101
  }
102
102
  else {
103
- this.toastr.getErrorToast(`Please Select file then add to ${matched?.type} `);
103
+ this.toastr.getErrorToast(`Please Select file then add to ${matched?.name} `);
104
104
  }
105
105
  }
106
106
  }
@@ -461,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
461
461
  type: HostListener,
462
462
  args: ['window:keydown', ['$event']]
463
463
  }] } });
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV0YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXRpY2tldHMvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXJldGFnL2F1ZGl0LXJldGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1yZXRhZy9hdWRpdC1yZXRhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFLdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQU8vRSxNQUFNLE9BQU8sbUJBQW1CO0lBeUZYO0lBQWdDO0lBQXdCO0lBQ2pFO0lBQThCO0lBQStCO0lBQW9DO0lBeEYzRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsU0FBUyxHQUFRLEVBQUUsQ0FBQTtJQUNuQixVQUFVLEdBQVEsRUFBRSxDQUFBO0lBQ3BCLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsZ0JBQWdCLEdBQVEsRUFBRSxDQUFDO0lBQzNCLGFBQWEsR0FBUSxDQUFDLENBQUM7SUFDdkIsU0FB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QTtTQUNIO1FBSUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFTO1lBQ25DLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxVQUFVLEdBQVEsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUM3QyxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksaUJBQWlCLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxpQkFBaUIsQ0FBQzthQUMxQjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7d0dBN2RVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDRIQ2pCaEMsc3dVQWdJTTs7NEZEL0dPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7Z1BBNkIzQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIExaU3RyaW5nIGZyb20gJ2x6LXN0cmluZyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBBdWRpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZW1vdmVBdWRpdENvbXBvbmVudCB9IGZyb20gJy4uL3JlbW92ZS1hdWRpdC9yZW1vdmUtYXVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXVkaXRSZXBvcnRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2F1ZGl0LXJlcG9ydC1wb3B1cC9hdWRpdC1yZXBvcnQtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVGltZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGltZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXdjYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXdjYXRlZ29yeS92aWV3Y2F0ZWdvcnkuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LXJldGFnJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtcmV0YWcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC1yZXRhZy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0UmV0YWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHRvdGFsZmlsZSA9IDA7XHJcbiAgY3VzdG9tZXIgPSAwO1xyXG4gIGp1bmsgPSAwO1xyXG4gIGVtcGxveWVlID0gMDtcclxuICBqdW5raW1hZ2U6IGFueSA9IFtdXHJcbiAgcmV0YWdpbWFnZTogYW55ID0gW11cclxuICBzdWJtaXR2YWx1ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYXVkaXRtYXBwaW5nZGF0YTogYW55ID0gW107XHJcbiAgY3VzdG9tZXJjb3VudDogYW55ID0gMDtcclxuICBqdW5rY291bnQ6IGFueSA9IDA7XHJcbiAgZW1wbG95ZWVjb3VudDogYW55ID0gMDtcclxuICBlbXBsb3llaW1hZ2U6IGFueSA9IFtdO1xyXG4gIGZpbGVkZXRhaWxzOiBhbnkgPSB7fTtcclxuICBhdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICBzZWxlY3RlZFR5cGU6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICB0aW1lUGFzc2VkOiBudW1iZXIgPSAwO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgZm9ybWF0dGVkVGltZTogc3RyaW5nID0gJzAwOjAwOjAwJztcclxuXHJcbiAgb3Blbm1vZGVsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnk6IGFueSA9IFtdXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5vcGVubW9kZWwpIHJldHVybjtcclxuICAgIC8vIGlmIChldmVudC5rZXkgPT09ICdnJyB8fCBldmVudC5jb2RlID09PSAnS2V5RycpIHtcclxuICAgIC8vICAgdmFyIGdyb3VwID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnNlbGVjdGVkID09PSB0cnVlKVxyXG4gICAgLy8gICBpZiAoZ3JvdXAubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgIGlmIChncm91cC5sZW5ndGggPT0gMSkge1xyXG4gICAgLy8gICAgICAgdGhpcy50b2FzdHIuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIFNlbGVjdCBtdWx0aXBsZSBmaWxlIHRoZW4gYWRkIHRvIEdyb3VwJylcclxuICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgbGV0IGR1bW15YXJyYXkgPSBncm91cC5zaGlmdCgpXHJcbiAgICAvLyAgICAgICB2YXIgZ3JvdXBpbWFnZXM6IGFueSA9IFtdXHJcbiAgICAvLyAgICAgICBncm91cC5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLnNwbGljZSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmluZEluZGV4KCh7IGltZ19uYW1lIH06IHsgaW1nX25hbWU6IHN0cmluZyB9KSA9PiBpbWdfbmFtZSA9PSBkYXRhLmltZ19uYW1lKSwgMSk7XHJcbiAgICAvLyAgICAgICAgIGdyb3VwaW1hZ2VzLnB1c2goZGF0YS5tYXBwZWRpZFswXSlcclxuICAgIC8vICAgICAgIH0pXHJcbiAgICAvLyAgICAgICBkdW1teWFycmF5LmNvdW50ID0gZHVtbXlhcnJheS5jb3VudCArIGdyb3VwaW1hZ2VzLmxlbmd0aFxyXG4gICAgLy8gICAgICAgZHVtbXlhcnJheS5zZWxlY3RlZCA9IGZhbHNlXHJcblxyXG4gICAgLy8gICAgICAgZHVtbXlhcnJheS5tYXBwZWRpZCA9IFsuLi5kdW1teWFycmF5Lm1hcHBlZGlkLCAuLi5ncm91cGltYWdlc11cclxuICAgIC8vICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgLy8gICAgICAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5jb21wcmVzcyhqc29uU3RyaW5nKTtcclxuICAgIC8vICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICAvLyB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICB0aGlzLnRvYXN0ci5nZXRFcnJvclRvYXN0KCdQbGVhc2UgU2VsZWN0IGZpbGUgdGhlbiBhZGQgdG8gR3JvdXAnKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCBwcmVzc2VkID0gKGV2ZW50LmtleSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG1hdGNoZWQgPSB0aGlzLmNhdGVnb3J5LmZpbmQoKG06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIW0ua2V5KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNvbnN0IG1hcEtleSA9IG0ua2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIC8vIG1hdGNoIGJ5IGV2ZW50LmtleSAocHJlZmVycmVkKSBPUiBieSBldmVudC5jb2RlIGxpa2UgJ0tleUonXHJcbiAgICAgIHJldHVybiBwcmVzc2VkID09PSBtYXBLZXkgfHwgZXZlbnQuY29kZSA9PT0gYEtleSR7bWFwS2V5LnRvVXBwZXJDYXNlKCl9YDtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBpZiAoIW1hdGNoZWQpIHJldHVyblxyXG4gICAgaWYgKG1hdGNoZWQpIHtcclxuICAgICAgdmFyIG5ld0RhdGEgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc2VsZWN0ZWQgPT09IHRydWUpXHJcbiAgICAgIGlmIChuZXdEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgb2xkRGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShtYXRjaGVkPy50eXBlKSB8fCAne30nKVxyXG4gICAgICAgIGlmIChOdW1iZXIob2xkRGF0YS5sZW5ndGgpID4gMCkge1xyXG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5vbGREYXRhLCAuLi5uZXdEYXRhXVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdEYXRhID0gbmV3RGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSBtYXRjaGVkPy50eXBlKSB7XHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgPSBuZXdEYXRhLmxlbmd0aFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShtYXRjaGVkPy50eXBlLCBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSlcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc2VsZWN0ZWQgPT09IGZhbHNlKVxyXG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgICB0aGlzLnRvYXN0ci5nZXRTdWNjZXNzVG9hc3QoYCR7bWF0Y2hlZD8udHlwZX0gQWRkZWQgU3VjY2VzZnVsbHkhYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZ2V0RXJyb3JUb2FzdChgUGxlYXNlIFNlbGVjdCBmaWxlIHRoZW4gYWRkIHRvICR7bWF0Y2hlZD8udHlwZX0gYClcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlICRhcGk6IEF1ZGl0U2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHRpbWVyU2VydmljZTogVGltZXJTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgndHlwZScpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5nZXRBdWRpdENvbmZpZygpXHJcbiAgICBpZiAodGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0dmFsdWUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2VcclxuICAgIHRoaXMuc2V0VGltZXIoKTtcclxuICB9XHJcbiAgZ2V0QXVkaXRDb25maWcoKSB7XHJcblxyXG4gICAgbGV0IGZpbGVkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9JylcclxuICAgIHRoaXMuJGFwaS5nZXRBdWRpdGNvbmZpZyhmaWxlZGF0YT8uZmlsZWRldGFpbHM/LmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSByZXMuZGF0YS5mb290ZmFsbERpcmVjdG9yeUNvbmZpZ3MudGFnZ2luZ0xpbWl0YXRpb25cclxuICAgICAgICAgIHRoaXMuaW5pdGlhbF9kYXRhX2xvYWRpbmcoKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNldFRpbWVyKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVyU2VydmljZS5nZXRUaW1lUGFzc2VkKCkuc3Vic2NyaWJlKHRpbWUgPT4ge1xyXG4gICAgICB0aGlzLnRpbWVQYXNzZWQgPSB0aW1lO1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZFRpbWUgPSB0aGlzLnRpbWVyU2VydmljZS5mb3JtYXRUaW1lKHRpbWUpO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RhcnRUaW1lcigpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUdsb2JhbE1vdXNlRXZlbnQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLnRpbWVyU2VydmljZS5zdGFydFRpbWVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICB0aGlzLnRpbWVyU2VydmljZS5jbGVhclRpbWVyKClcclxuXHJcbiAgfVxyXG5cclxuICBpbml0aWFsX2RhdGFfbG9hZGluZygpIHtcclxuICAgIFxyXG4gICAgaWYgKCdhdWRpdCcgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgbGV0IHN0cmluZ2lmeWRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhdWRpdCcpIHx8ICd7fSdcclxuICAgICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICAgIHZhciBhdWRpdGRhdGEgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgICAgXHJcbiAgICAgIGlmIChhdWRpdGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IGF1ZGl0ZGF0YTtcclxuICAgICAgICB0aGlzLmN1c3RvbWVyY291bnQgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEubGVuZ3RoXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhID0gW11cclxuICAgICAgICB0aGlzLmN1c3RvbWVyY291bnQgPSAwXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHZhciBjb3VudCA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShkYXRhLnR5cGUpIHx8ICd7fScpXHJcbiAgICAgIFxyXG4gICAgICBkYXRhLmNvdW50ID0gY291bnQ/Lmxlbmd0aFxyXG4gICAgfSlcclxuICAgIGlmICgncmV0YWcnIGluIHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgICAgIHZhciByZXRhZ2RhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgaWYgKHJldGFnZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gcmV0YWdkYXRhO1xyXG4gICAgICAgIHRoaXMuc3VibWl0dmFsdWUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICBcclxuICAgIGlmICgndG90YWxmaWxlcycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgdmFyIGZpbGVzID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9JylcclxuICAgICAgdGhpcy50b3RhbGZpbGUgPSBmaWxlcz8udG90YWxmaWxlc1xyXG4gICAgICB0aGlzLmZpbGVkZXRhaWxzID0gZmlsZXM/LmZpbGVkZXRhaWxzXHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRtYXBwaW5nZGF0YSgpIHtcclxuICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2VcclxuICAgIHZhciB0b3RhbGZpbGU6IGFueSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpO1xyXG4gICAgdGhpcy5maWxlZGV0YWlscyA9IHRvdGFsZmlsZT8uZmlsZWRldGFpbHNcclxuXHJcbiAgICB2YXIgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBzdG9yZUlkOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5zdG9yZUlkLFxyXG4gICAgICBmaWxlRGF0ZTogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uRGF0ZSxcclxuICAgICAgYXVkaXRJZDogdG90YWxmaWxlPy5hdWRpdElkLFxyXG4gICAgICBjb3VudDogdG90YWxmaWxlPy50b3RhbGZpbGVzXHJcbiAgICB9XHJcbiAgICB0aGlzLiRhcGkuZ2V0QXVkaXRtYXBwaW5nbGlzdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXRhZycpXHJcbiAgICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSBbXVxyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5kcmFmdGVkRGF0YT8uZmlsdGVyKCh4OiBhbnkpID0+IHgudHlwZSA9PT0gZGF0YS50eXBlKVxyXG4gICAgICAgICAgICBkYXRhLnZhbHVlID0gZmlsdGVyRGF0YVswXT8udmFsdWUgJiYgZmlsdGVyRGF0YVswXT8udmFsdWUubGVuZ3RoID4gMCA/IGZpbHRlckRhdGFbMF0/LnZhbHVlIDogW11cclxuICAgICAgICAgICAgZGF0YS5jb3VudCA9IGRhdGE/LnZhbHVlPy5sZW5ndGhcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShkYXRhPy50eXBlLCBKU09OLnN0cmluZ2lmeShkYXRhPy52YWx1ZSAmJiBkYXRhPy52YWx1ZS5sZW5ndGggPiAwID8gZGF0YT8udmFsdWUgOiBbXSkpXHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBjdXN0b21lckRhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZHJhZnRlZERhdGE/LmZpbHRlcigoeDogYW55KSA9PiB4LnR5cGUgPT09ICdjdXN0b21lcicpXHJcbiAgICAgICAgICBcclxuXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBjdXN0b21lckRhdGFbMF0/LnZhbHVlXHJcbiAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXJEYXRhWzBdPy52YWx1ZSk7XHJcbiAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgICAgIHRoaXMuaW5pdGlhbF9kYXRhX2xvYWRpbmcoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG5cclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZXZpZXdkYXRhKCkge1xyXG4gICAgdGhpcy5zdWJtaXR2YWx1ZSA9IGZhbHNlO1xyXG4gICAgdmFyIHRvdGFsZmlsZTogYW55ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9Jyk7XHJcbiAgICBpZiAoJ2F1ZGl0JyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgICBjb25zdCBkZWNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuZGVjb21wcmVzcyhzdHJpbmdpZnlkYXRhKTtcclxuICAgICAgdmFyIGF1ZGl0ZGF0YSA9IEpTT04ucGFyc2UoZGVjb21wcmVzc2VkRGF0YSB8fCAne30nKVxyXG4gICAgICBpZiAoYXVkaXRkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBhdWRpdGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCdyZXRhZycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgdmFyIHJldGFnZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAne30nKVxyXG4gICAgICB0aGlzLnJldGFnaW1hZ2UgPSByZXRhZ2RhdGE7XHJcbiAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IFsuLi50aGlzLmF1ZGl0bWFwcGluZ2RhdGEsIC4uLnRoaXMucmV0YWdpbWFnZV1cclxuICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYXVkaXRtYXBwaW5nZGF0YSk7XHJcbiAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3JldGFnJylcclxuICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gW107XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICB2YXIgY3VzdG9tZXIgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgIGxldCBzdG9yZWREYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjdXN0b21lclwiLFxyXG4gICAgICAgIHZhbHVlOiBjdXN0b21lciA/IGN1c3RvbWVyIDogW10sXHJcbiAgICAgIH1cclxuICAgIF1cclxuXHJcbiAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGxldCBzZXNzaW9udmFsdWUgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oZGF0YS50eXBlKSB8fCAne30nKTtcclxuICAgICAgc3RvcmVkRGF0YS5wdXNoKHtcclxuICAgICAgICB0eXBlOiBkYXRhLnR5cGUsXHJcbiAgICAgICAgdmFsdWU6IHNlc3Npb252YWx1ZSAmJiBzZXNzaW9udmFsdWUubGVuZ3RoID4gMCA/IHNlc3Npb252YWx1ZSA6IFtdXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgXHJcbiAgICB2YXIgaW5zZXJvYmo6IGFueSA9IHtcclxuXHJcbiAgICAgIHN0b3JlSWQ6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LnN0b3JlSWQsXHJcbiAgICAgIGF1ZGl0SWQ6IHRvdGFsZmlsZT8uYXVkaXRJZCA/IHRvdGFsZmlsZT8uYXVkaXRJZCA6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHMuYXVkaXRJZCxcclxuICAgICAgZmlsZURhdGU6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LkRhdGUsXHJcbiAgICAgIHRvdGFsQ291bnQ6IHRvdGFsZmlsZT8udG90YWxmaWxlcyA/IHRvdGFsZmlsZS50b3RhbGZpbGVzIDogMCxcclxuICAgICAgcmV0YWdDb3VudDogMCxcclxuICAgICAgdGltZVNwZW50OiB0aGlzLnRpbWVQYXNzZWQsXHJcbiAgICAgIHJldGFnSW1hZ2U6IFtdLFxyXG4gICAgICBkcmFmdGVkRGF0YTogc3RvcmVkRGF0YVxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLnNhdmVEcmFmdChpbnNlcm9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldG1hcHBpbmdkYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RpY2tldHMvbWFwcGluZy1saXN0XCIsXSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3IpXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmV0YWdhbGxvd0Ryb3AoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgZHJhZ1N0YXJ0KGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBldmVudC50YXJnZXQuaWQpO1xyXG4gIH1cclxuXHJcbiAgZHJvcHJldGFnKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBkcm9wcmV0YWdpbWFnZSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XHJcbiAgICBldmVudC50YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZHJvcHJldGFnaW1hZ2UpKTtcclxuICAgIGNvbnN0IGRyb3B6b25lOiBhbnkgPSBkcm9wcmV0YWdpbWFnZTtcclxuICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGRhdGEuaW1nX2lkID09IGRyb3B6b25lLmlkKSB7XHJcbiAgICAgICAgaWYgKGRhdGEubWFwcGVkaWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdmFyIGZpbmRvbmUgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuaW1nX25hbWUgPT0gZHJvcHJldGFnaW1hZ2UpXHJcbiAgICAgICAgICBpZiAoZmluZG9uZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgPSBkYXRhLmNvdW50ICsgZmluZG9uZVswXS5jb3VudFxyXG4gICAgICAgICAgICBkYXRhLm1hcHBlZGlkID0gWy4uLmRhdGEubWFwcGVkaWQsIC4uLmZpbmRvbmVbMF0ubWFwcGVkaWRdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoJ2R1cGxpY2F0ZScgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgbGV0IGZpbGVkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdkdXBsaWNhdGUnKSB8fCAne30nKVxyXG4gICAgICAgICAgICBmaWxlZGF0YSA9IFsuLi5maWxlZGF0YSwgLi4uZmluZG9uZV1cclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZHVwbGljYXRlJywgSlNPTi5zdHJpbmdpZnkoZmlsZWRhdGEpKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZHVwbGljYXRlJywgSlNPTi5zdHJpbmdpZnkoZmluZG9uZSkpXHJcbiAgICAgICAgICAgIGxldCBmaWxlZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZHVwbGljYXRlJykgfHwgJ3t9JylcclxuICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgY291bnQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oZGF0YS50eXBlKSB8fCAne30nKVxyXG4gICAgICAgICAgICBkYXRhLmNvdW50ID0gY291bnQ/Lmxlbmd0aFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhLmNvdW50ID0gZGF0YS5jb3VudCArIDEsXHJcbiAgICAgICAgICAgIGRhdGEubWFwcGVkaWQucHVzaChkcm9wcmV0YWdpbWFnZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZWxlY3RyZXRhZ2ltYWdlKHJlczogYW55KSB7XHJcbiAgICB0aGlzLnJldGFnaW1hZ2UubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEuaW1nX2lkID09IHJlcykge1xyXG4gICAgICAgIGlmIChkYXRhLm1hcHBlZGlkLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBkYXRhLnNlbGVjdGVkID0gIWRhdGEuc2VsZWN0ZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZWxlY3Rncm91cGltYWdlKHJlczogYW55KSB7XHJcbiAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEuaW1nX2lkID09IHJlcykge1xyXG4gICAgICAgIGlmIChkYXRhLm1hcHBlZGlkLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBkYXRhLnNlbGVjdGVkID0gIWRhdGEuc2VsZWN0ZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZW1vdmVhdWRpdChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSZW1vdmVBdWRpdENvbXBvbmVudCwge1xyXG4gICAgICBzaXplOiAnbGcnLFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG4gICAgICBrZXlib2FyZDogZmFsc2VcclxuICAgIH0pXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gZGF0YTtcclxuICAgIG1vZGFsUmVmLmNsb3NlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzPy5yZWxvYWQpIHtcclxuICAgICAgICB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIHN1Ym1pdGF1ZGl0KCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEF1ZGl0UmVwb3J0UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgc2l6ZTogJ2xnJyxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcclxuICAgICAga2V5Ym9hcmQ6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2VsZWN0ZWRUeXBlID0gdGhpcy5zZWxlY3RlZFR5cGU7XHJcbiAgICBtb2RhbFJlZi5jbG9zZWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmlld2NhdGVnb3J5KGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFZpZXdjYXRlZ29yeUNvbXBvbmVudCwge1xyXG4gICAgICBzaXplOiAnbGcnLFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG4gICAgICBrZXlib2FyZDogZmFsc2VcclxuICAgIH0pXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gZGF0YVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW1hZ2VMaXN0ID0gZGF0YSxcclxuICAgICAgbW9kYWxSZWYuY2xvc2VkLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ucmVsb2FkKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBkcm9wSW1hZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaHRtbHRhZyA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L2h0bWwnKTtcclxuICAgIHZhciBOYW1lID0gZ2V0VGFnTmFtZUZyb21IVE1MKGh0bWx0YWcpO1xyXG4gICAgY29uc3QgZHJvcFpvbmUgPSBldmVudC50YXJnZXQ7XHJcbiAgICBcclxuICAgIC8vIGRlYnVnZ2VyXHJcbiAgICBpZiAoTmFtZSA9PSAnY3VzdG9tZXInIHx8IE5hbWUgPT0gJ3JldGFnJykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBjb25zdCBkcmFnZ2VkSW1hZ2VJZCA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XHJcbiAgICAgIGNvbnN0IGRyYWdnZWRJbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgZXZlbnQudGFyZ2V0LmFwcGVuZENoaWxkKGRyYWdnZWRJbWFnZSk7XHJcbiAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5tYXAoKGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG5cclxuICAgICAgICBpZiAoZGF0YS5pbWdfaWQgPT09IGRyb3Bab25lLmlkKSB7XHJcbiAgICAgICAgICBsZXQgZmluZG9uZSA9IFtdO1xyXG4gICAgICAgICAgY29uc3QgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICdbXScpO1xyXG4gICAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gcmV0YWdkYXRhO1xyXG4gICAgICAgICAgZmluZG9uZSA9IHRoaXMucmV0YWdpbWFnZS5maWx0ZXIoKGltZ0RhdGE6IGFueSkgPT4gaW1nRGF0YS5pbWdfaWQgPT09IGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgICAgIGlmIChmaW5kb25lLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBmaW5kb25lID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbHRlcigoaW1nRGF0YTogYW55KSA9PiBpbWdEYXRhLmltZ19pZCA9PT0gZHJhZ2dlZEltYWdlSWQpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHRoaXMucmV0YWdpbWFnZS5maWx0ZXIoKGltZ0RhdGE6IGFueSkgPT4gaW1nRGF0YS5pbWdfaWQgIT09IGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3JldGFnJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZXRhZ2ltYWdlKSk7XHJcblxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZmluZG9uZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBkYXRhLm1hcHBlZGlkID0gWy4uLmRhdGEubWFwcGVkaWQsIC4uLmZpbmRvbmVbMF0ubWFwcGVkaWRdO1xyXG4gICAgICAgICAgICBkYXRhLmNvdW50ID0gZGF0YS5tYXBwZWRpZC5sZW5ndGg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJ2R1cGxpY2F0ZScgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICBsZXQgZmlsZWRhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2R1cGxpY2F0ZScpIHx8ICd7fScpXHJcbiAgICAgICAgICAgICAgZmlsZWRhdGEgPSBbLi4uZmlsZWRhdGEsIC4uLmZpbmRvbmVdXHJcbiAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZHVwbGljYXRlJywgSlNPTi5zdHJpbmdpZnkoZmlsZWRhdGEpKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2R1cGxpY2F0ZScsIEpTT04uc3RyaW5naWZ5KGZpbmRvbmUpKVxyXG4gICAgICAgICAgICAgIGxldCBmaWxlZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZHVwbGljYXRlJykgfHwgJ3t9JylcclxuICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgKz0gMTtcclxuICAgICAgICAgICAgZGF0YS5tYXBwZWRpZC5wdXNoKGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChOYW1lID09ICdjdXN0b21lcicpIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuc3BsaWNlKHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5maW5kSW5kZXgoKHsgaW1nX2lkIH06IHsgaW1nX2lkOiBzdHJpbmcgfSkgPT4gaW1nX2lkID09IGRyYWdnZWRJbWFnZUlkKSwgMSk7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnNlbGVjdGVkID0gZmFsc2UpXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBcclxuICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGg7XHJcbiAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdWRpdCcsIGNvbXByZXNzZWREYXRhKVxyXG4gICAgICB2YXIgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHJldGFnZGF0YTtcclxuICAgICAgaWYgKHRoaXMucmV0YWdpbWFnZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc3VibWl0dmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdmFyIGNvdW50ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGRhdGEudHlwZSkgfHwgJ3t9JylcclxuICAgICAgICBkYXRhLmNvdW50ID0gY291bnQ/Lmxlbmd0aFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0VGFnTmFtZUZyb21IVE1MKGh0bWw6IGFueSkge1xyXG4gICAgICB2YXIgdGVtcEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdGVtcEVsZW1lbnQuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgdmFyIGZpcnN0Q2hpbGQ6IGFueSA9IHRlbXBFbGVtZW50LmZpcnN0Q2hpbGQ7XHJcbiAgICAgIGlmIChmaXJzdENoaWxkLmhhc0F0dHJpYnV0ZSgnbmFtZScpKSB7XHJcbiAgICAgICAgdmFyIG5hbWVQcm9wZXJ0eVZhbHVlID0gZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcclxuICAgICAgICByZXR1cm4gbmFtZVByb3BlcnR5VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tmaWxlZGV0YWlscz8uc3RvcmVJZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMyBhcnJvdy1jb2RlXCI+IC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZmlsZWRldGFpbHM/LkRhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC0zIG1zLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy10aW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zIHRleHQtdGltZXIgZnctc2VtaWJvbGRcIj57eyBmb3JtYXR0ZWRUaW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMTY2NjcgMi44NzA3MUM5LjE2NjY3IDIuNjIwMjMgOS4yNjYxNyAyLjM4MDAxIDkuNDQzMjkgMi4yMDI4OUM5LjYyMDQxIDIuMDI1NzcgOS44NjA2MyAxLjkyNjI3IDEwLjExMTEgMS45MjYyN0gxMy44ODg5QzE0LjEzOTQgMS45MjYyNyAxNC4zNzk2IDIuMDI1NzcgMTQuNTU2NyAyLjIwMjg5QzE0LjczMzggMi4zODAwMSAxNC44MzMzIDIuNjIwMjMgMTQuODMzMyAyLjg3MDcxQzE0LjgzMzMgMy4xMjEyIDE0LjczMzggMy4zNjE0MiAxNC41NTY3IDMuNTM4NTRDMTQuMzc5NiAzLjcxNTY1IDE0LjEzOTQgMy44MTUxNiAxMy44ODg5IDMuODE1MTZIMTIuOTQ0NFY1LjA3NDQyTDEyLjk0MzIgNS4xMjYwNUMxNC41Mzk2IDUuMzAwOTcgMTYuMDUyOCA1LjkyNzg3IDE3LjMwNTMgNi45MzMwOEwxNy4zMTQxIDYuOTI1NTNMMTguMjU4NSA1Ljk4MTA4QzE4LjM3NCA1Ljg1Njc2IDE4LjUyMDggNS43NjU4OCAxOC42ODM1IDUuNzE4MDFDMTguODQ2MyA1LjY3MDE0IDE5LjAxOSA1LjY2NzA2IDE5LjE4MzMgNS43MDkwOEMxOS4zNDc3IDUuNzUxMTEgMTkuNDk3NyA1LjgzNjY5IDE5LjYxNzUgNS45NTY4QzE5LjczNzMgNi4wNzY5MiAxOS44MjI1IDYuMjI3MTMgMTkuODY0MSA2LjM5MTZDMTkuOTA2IDYuNTU1NzggMTkuOTAzIDYuNzI4MjMgMTkuODU1NCA2Ljg5MDg1QzE5LjgwNzcgNy4wNTM0OCAxOS43MTcyIDcuMjAwMjkgMTkuNTkzMyA3LjMxNTlMMTguNjQ4OSA4LjI2MDM0TDE4LjY0MTMgOC4yNjkxNUMxOS42NDAzIDkuNTE5NzQgMjAuMjY1OCAxMS4wMjcgMjAuNDQ2IDEyLjYxNzRDMjAuNjI2MSAxNC4yMDc4IDIwLjM1MzYgMTUuODE2NyAxOS42NTk3IDE3LjI1OTFDMTguOTY1OCAxOC43MDE0IDE3Ljg3ODggMTkuOTE4NSAxNi41MjM3IDIwLjc3MDRDMTUuMTY4NiAyMS42MjIyIDEzLjYwMDYgMjIuMDc0MSAxMiAyMi4wNzQxQzEwLjM5OTQgMjIuMDc0MSA4LjgzMTM3IDIxLjYyMjIgNy40NzYyOSAyMC43NzA0QzYuMTIxMjIgMTkuOTE4NSA1LjAzNDE5IDE4LjcwMTQgNC4zNDAzIDE3LjI1OTFDMy42NDY0MSAxNS44MTY3IDMuMzczODYgMTQuMjA3OCAzLjU1NDAyIDEyLjYxNzRDMy43MzQxOCAxMS4wMjcgNC4zNTk3MyA5LjUxOTc0IDUuMzU4NjcgOC4yNjkxNUw1LjM1MTExIDguMjYwMzRMNC40MDY2NyA3LjMxNTlDNC4yMzk2NCA3LjEzNjkgNC4xNDg2NSA2LjkwMDAzIDQuMTUyODcgNi42NTUyNEM0LjE1NzEgNi40MTA0NSA0LjI1NjIyIDYuMTc2ODcgNC40MjkzNCA2LjAwMzc1QzQuNjAyNDYgNS44MzA2MyA0LjgzNjA0IDUuNzMxNTEgNS4wODA4MyA1LjcyNzI4QzUuMzI1NjIgNS43MjMwNiA1LjU2MjQ5IDUuODE0MDUgNS43NDE0OSA1Ljk4MTA4TDYuNjg1OTMgNi45MjU1M0w2LjY5NDc0IDYuOTMzMDhDNy45NDY4MSA1LjkyODA5IDkuNDU5NjMgNS4zMDEyIDExLjA1NTYgNS4xMjYwNVYzLjgxNTE2SDEwLjExMTFDOS44NjA2MyAzLjgxNTE2IDkuNjIwNDEgMy43MTU2NSA5LjQ0MzI5IDMuNTM4NTRDOS4yNjYxNyAzLjM2MTQyIDkuMTY2NjcgMy4xMjEyIDkuMTY2NjcgMi44NzA3MVpNMTIgMjAuMTg1NUMxMy43NTM1IDIwLjE4NTQgMTUuNDM1MiAxOS40ODg2IDE2LjY3NSAxOC4yNDg1QzE3LjkxNDggMTcuMDA4NSAxOC42MTEzIDE1LjMyNjcgMTguNjExMSAxMy41NzMyQzE4LjYxMDkgMTEuODE5NiAxNy45MTQyIDEwLjEzOCAxNi42NzQxIDguODk4MTNDMTUuNDM0MSA3LjY1ODMxIDEzLjc1MjMgNi45NjE4OCAxMS45OTg3IDYuOTYyMDRDMTAuMjQ1MiA2Ljk2MjIxIDguNTYzNTQgNy42NTg5NiA3LjMyMzcyIDguODk5MDJDNi4wODM5IDEwLjEzOTEgNS4zODc0NyAxMS44MjA5IDUuMzg3NjMgMTMuNTc0NEM1LjM4NzggMTUuMzI4IDYuMDg0NTUgMTcuMDA5NiA3LjMyNDYxIDE4LjI0OTRDOC41NjQ2NyAxOS40ODkzIDEwLjI0NjUgMjAuMTg1NyAxMiAyMC4xODU1Wk0xMi40ODk5IDExLjc0ODVMMTQuMTY0NyAxMC4wNzM3QzE0LjI1MTcgOS45ODM0MyAxNC4zNTU5IDkuOTExNDMgMTQuNDcxMSA5Ljg2MTg4QzE0LjU4NjMgOS44MTIzMyAxNC43MTAyIDkuNzg2MjIgMTQuODM1NiA5Ljc4NTA3QzE0Ljk2MTEgOS43ODM5MiAxNS4wODU0IDkuODA3NzYgMTUuMjAxNSA5Ljg1NTE5QzE1LjMxNzYgOS45MDI2MiAxNS40MjMxIDkuOTcyNyAxNS41MTE4IDEwLjA2MTNDMTUuNjAwNSAxMC4xNSAxNS42NzA3IDEwLjI1NTQgMTUuNzE4MiAxMC4zNzE0QzE1Ljc2NTggMTAuNDg3NSAxNS43ODk3IDEwLjYxMTggMTUuNzg4NyAxMC43MzcyQzE1Ljc4NzcgMTAuODYyNiAxNS43NjE3IDEwLjk4NjYgMTUuNzEyMiAxMS4xMDE4QzE1LjY2MjggMTEuMjE3MSAxNS41OTA5IDExLjMyMTMgMTUuNTAwNyAxMS40MDg1TDEzLjgyNTkgMTMuMDg0NkMxMy45MDAzIDEzLjM2NDUgMTMuOTA5NSAxMy42NTc5IDEzLjg1MjYgMTMuOTQyQzEzLjc5NTggMTQuMjI2IDEzLjY3NDUgMTQuNDkzMyAxMy40OTgxIDE0LjcyMzFDMTMuMzIxNyAxNC45NTI5IDEzLjA5NDkgMTUuMTM5MSAxMi44MzUyIDE1LjI2NzVDMTIuNTc1NCAxNS4zOTU4IDEyLjI4OTcgMTUuNDYyOCAxMiAxNS40NjMzQzExLjczMjcgMTUuNDYxIDExLjQ2ODggMTUuNDAxOSAxMS4yMjYgMTUuMjlDMTAuOTgzMiAxNS4xNzgxIDEwLjc2NyAxNS4wMTU5IDEwLjU5MTYgMTQuODE0MUMxMC40MTYyIDE0LjYxMjMgMTAuMjg1NyAxNC4zNzU1IDEwLjIwODcgMTQuMTE5NUMxMC4xMzE2IDEzLjg2MzUgMTAuMTA5OSAxMy41OTQgMTAuMTQ0OCAxMy4zMjlDMTAuMTc5OCAxMy4wNjM5IDEwLjI3MDYgMTIuODA5MyAxMC40MTE0IDEyLjU4MkMxMC41NTIyIDEyLjM1NDcgMTAuNzM5NiAxMi4xNTk5IDEwLjk2MTMgMTIuMDEwNEMxMS4xODMgMTEuODYxIDExLjQzMzkgMTEuNzYwNCAxMS42OTc0IDExLjcxNTJDMTEuOTYwOSAxMS42NzAxIDEyLjIzMSAxMS42ODE0IDEyLjQ4OTkgMTEuNzQ4NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGVmYXVsdCBidG4tb3V0bGluZSBweS0yIG14LTJcIiAoY2xpY2spPVwicmV2aWV3ZGF0YSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBzdmctaWNvbi0yeFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS44MzM3IDEwLjAwMDFINC4xNjY5OU00LjE2Njk5IDEwLjAwMDFMMTAuMDAwMyAxNS44MzM0TTQuMTY2OTkgMTAuMDAwMUwxMC4wMDAzIDQuMTY2NzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJtcy0zXCI+QmFjayB0byBSZXZpZXc8L3NwYW4+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IHB5LTIgbXgtMlwiIFtkaXNhYmxlZF09XCJzdWJtaXR2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRhdWRpdCgpXCI+U3VibWl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBzdmctaWNvbi0yeFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Njk5IDEwLjAwMDFIMTUuODMzN00xNS44MzM3IDEwLjAwMDFMMTAuMDAwMyA0LjE2Njc1TTE1LjgzMzcgMTAuMDAwMUwxMC4wMDAzIDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIHRleHQtZGFya1wiPlRvdGFsIEZpbGVzIC0gPHNwYW4+e3t0b3RhbGZpbGV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgIFxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMyB0ZXh0IGZ3LXNlbWlib2xkXCI+VW5pcXVlIEN1c3RvbWVycyA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7YXVkaXRtYXBwaW5nZGF0YT8ubGVuZ3RoID8gYXVkaXRtYXBwaW5nZGF0YT8ubGVuZ3RoIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHRleHQgdy1zZW1pYm9sZCBidG4tc20gcHktMiBidXRuLWZsYWcgbXgtMlwiIChjbGljayk9XCJ2aWV3Y2F0ZWdvcnkoaXRlbSlcIiBbZGlzYWJsZWRdPVwiIWl0ZW0/LmNvdW50XCI+Vmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/Lm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3tpdGVtPy5jb3VudH19PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cImF1ZGl0TG9hZGluZ1wiIGNsYXNzPVwiY2FyZCBtdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLTUwMHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxoNSBjbGFzcz1cInRleHQtZGFyay02MDAgZnctYm9sZCB0ZXh0LWNlbnRlciBtdC01XCI+TG9hZGluZyBBdWRpdCBmaWxlLi4uLi4uPC9oNT4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYXVkaXRMb2FkaW5nXCIgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLTEwMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZFwiPkltYWdlcyBmb3IgUmV0YWdnaW5nPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWIgbXQtMiBmdy1zZW1pYm9sZFwiPkRyYWcgYW5kIERyb3Agb24gY29ycmVjdCBjdXN0b21lcnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IG9iajEgb2YgcmV0YWdpbWFnZVwiIChkcmFnb3Zlcik9XCJyZXRhZ2FsbG93RHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBkcmFnZ2FibGU9XCJ0cnVlXCIgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiIGlkPVwie3tvYmoxLmltZ19pZH19XCIgW3NyY109XCJvYmoxLmltZ19wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0zIG14LTQgaW1nLXJldFwiIChjbGljayk9XCJzZWxlY3RyZXRhZ2ltYWdlKG9iajEuaW1nX2lkKVwiIG5hbWU9XCJyZXRhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTAgZnMtNyBmdy1ib2xkXCI+e3tvYmoxLmltZ19uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iajEuc2VsZWN0ZWRcIiBjbGFzcz1cIm5vdGlmeS1iYWRnZTEgbndiZ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgY29sb3J2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZ5LWJhZGdlIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZWF1ZGl0KG9iajEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmoxLmNvdW50PjFcIj57e29iajEuY291bnR9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYXVkaXRMb2FkaW5nXCIgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLTEwMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZFwiPlVuaXF1ZSBDdXN0b21lcnMgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsXCI+e3thdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGggP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGggOiAwfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiICpuZ0Zvcj1cImxldCBvYmogb2YgYXVkaXRtYXBwaW5nZGF0YTtsZXQgaT1pbmRleFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm14LTMgbWItNSBpbWdcIiBbc3JjXT1cIm9iai5pbWdfcGF0aFwiIGlkPVwie3tvYmouaW1nX2lkfX1cIiBhbHQ9XCJJbWFnZVwiIG5hbWU9XCJjdXN0b21lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJyZXRhZ2FsbG93RHJvcCgkZXZlbnQpXCIgKGRyb3ApPVwiZHJvcEltYWdlKCRldmVudClcIiBkcmFnZ2FibGU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiIChjbGljayk9XCJzZWxlY3Rncm91cGltYWdlKG9iai5pbWdfaWQgKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTAgZnMtNyBmdy1ib2xkXCI+e3tvYmouaW1nX25hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqLnNlbGVjdGVkXCIgY2xhc3M9XCJub3RpZnktYmFkZ2UxXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGlmeS1iYWRnZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVhdWRpdChvYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmouY291bnQ+MVwiPnt7b2JqLmNvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtcmV0YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXRpY2tldHMvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXJldGFnL2F1ZGl0LXJldGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1yZXRhZy9hdWRpdC1yZXRhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFLdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQU8vRSxNQUFNLE9BQU8sbUJBQW1CO0lBeUZYO0lBQWdDO0lBQXdCO0lBQ2pFO0lBQThCO0lBQStCO0lBQW9DO0lBeEYzRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsU0FBUyxHQUFRLEVBQUUsQ0FBQTtJQUNuQixVQUFVLEdBQVEsRUFBRSxDQUFBO0lBQ3BCLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsZ0JBQWdCLEdBQVEsRUFBRSxDQUFDO0lBQzNCLGFBQWEsR0FBUSxDQUFDLENBQUM7SUFDdkIsU0FB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QTtTQUNIO1FBSUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFTO1lBQ25DLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxVQUFVLEdBQVEsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUM3QyxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksaUJBQWlCLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxpQkFBaUIsQ0FBQzthQUMxQjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7d0dBN2RVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDRIQ2pCaEMsc3dVQWdJTTs7NEZEL0dPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7Z1BBNkIzQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIExaU3RyaW5nIGZyb20gJ2x6LXN0cmluZyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBBdWRpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdWRpdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBSZW1vdmVBdWRpdENvbXBvbmVudCB9IGZyb20gJy4uL3JlbW92ZS1hdWRpdC9yZW1vdmUtYXVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXVkaXRSZXBvcnRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2F1ZGl0LXJlcG9ydC1wb3B1cC9hdWRpdC1yZXBvcnQtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVGltZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGltZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXdjYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXdjYXRlZ29yeS92aWV3Y2F0ZWdvcnkuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LXJldGFnJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtcmV0YWcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC1yZXRhZy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0UmV0YWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHRvdGFsZmlsZSA9IDA7XHJcbiAgY3VzdG9tZXIgPSAwO1xyXG4gIGp1bmsgPSAwO1xyXG4gIGVtcGxveWVlID0gMDtcclxuICBqdW5raW1hZ2U6IGFueSA9IFtdXHJcbiAgcmV0YWdpbWFnZTogYW55ID0gW11cclxuICBzdWJtaXR2YWx1ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgYXVkaXRtYXBwaW5nZGF0YTogYW55ID0gW107XHJcbiAgY3VzdG9tZXJjb3VudDogYW55ID0gMDtcclxuICBqdW5rY291bnQ6IGFueSA9IDA7XHJcbiAgZW1wbG95ZWVjb3VudDogYW55ID0gMDtcclxuICBlbXBsb3llaW1hZ2U6IGFueSA9IFtdO1xyXG4gIGZpbGVkZXRhaWxzOiBhbnkgPSB7fTtcclxuICBhdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICBzZWxlY3RlZFR5cGU6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICB0aW1lUGFzc2VkOiBudW1iZXIgPSAwO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgZm9ybWF0dGVkVGltZTogc3RyaW5nID0gJzAwOjAwOjAwJztcclxuXHJcbiAgb3Blbm1vZGVsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnk6IGFueSA9IFtdXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5vcGVubW9kZWwpIHJldHVybjtcclxuICAgIC8vIGlmIChldmVudC5rZXkgPT09ICdnJyB8fCBldmVudC5jb2RlID09PSAnS2V5RycpIHtcclxuICAgIC8vICAgdmFyIGdyb3VwID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnNlbGVjdGVkID09PSB0cnVlKVxyXG4gICAgLy8gICBpZiAoZ3JvdXAubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgIGlmIChncm91cC5sZW5ndGggPT0gMSkge1xyXG4gICAgLy8gICAgICAgdGhpcy50b2FzdHIuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIFNlbGVjdCBtdWx0aXBsZSBmaWxlIHRoZW4gYWRkIHRvIEdyb3VwJylcclxuICAgIC8vICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgbGV0IGR1bW15YXJyYXkgPSBncm91cC5zaGlmdCgpXHJcbiAgICAvLyAgICAgICB2YXIgZ3JvdXBpbWFnZXM6IGFueSA9IFtdXHJcbiAgICAvLyAgICAgICBncm91cC5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLnNwbGljZSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmluZEluZGV4KCh7IGltZ19uYW1lIH06IHsgaW1nX25hbWU6IHN0cmluZyB9KSA9PiBpbWdfbmFtZSA9PSBkYXRhLmltZ19uYW1lKSwgMSk7XHJcbiAgICAvLyAgICAgICAgIGdyb3VwaW1hZ2VzLnB1c2goZGF0YS5tYXBwZWRpZFswXSlcclxuICAgIC8vICAgICAgIH0pXHJcbiAgICAvLyAgICAgICBkdW1teWFycmF5LmNvdW50ID0gZHVtbXlhcnJheS5jb3VudCArIGdyb3VwaW1hZ2VzLmxlbmd0aFxyXG4gICAgLy8gICAgICAgZHVtbXlhcnJheS5zZWxlY3RlZCA9IGZhbHNlXHJcblxyXG4gICAgLy8gICAgICAgZHVtbXlhcnJheS5tYXBwZWRpZCA9IFsuLi5kdW1teWFycmF5Lm1hcHBlZGlkLCAuLi5ncm91cGltYWdlc11cclxuICAgIC8vICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgLy8gICAgICAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5jb21wcmVzcyhqc29uU3RyaW5nKTtcclxuICAgIC8vICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICAvLyB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgIC8vICAgfSBlbHNlIHtcclxuICAgIC8vICAgICB0aGlzLnRvYXN0ci5nZXRFcnJvclRvYXN0KCdQbGVhc2UgU2VsZWN0IGZpbGUgdGhlbiBhZGQgdG8gR3JvdXAnKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCBwcmVzc2VkID0gKGV2ZW50LmtleSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IG1hdGNoZWQgPSB0aGlzLmNhdGVnb3J5LmZpbmQoKG06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIW0ua2V5KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNvbnN0IG1hcEtleSA9IG0ua2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIC8vIG1hdGNoIGJ5IGV2ZW50LmtleSAocHJlZmVycmVkKSBPUiBieSBldmVudC5jb2RlIGxpa2UgJ0tleUonXHJcbiAgICAgIHJldHVybiBwcmVzc2VkID09PSBtYXBLZXkgfHwgZXZlbnQuY29kZSA9PT0gYEtleSR7bWFwS2V5LnRvVXBwZXJDYXNlKCl9YDtcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBpZiAoIW1hdGNoZWQpIHJldHVyblxyXG4gICAgaWYgKG1hdGNoZWQpIHtcclxuICAgICAgdmFyIG5ld0RhdGEgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc2VsZWN0ZWQgPT09IHRydWUpXHJcbiAgICAgIGlmIChuZXdEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgb2xkRGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShtYXRjaGVkPy50eXBlKSB8fCAne30nKVxyXG4gICAgICAgIGlmIChOdW1iZXIob2xkRGF0YS5sZW5ndGgpID4gMCkge1xyXG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5vbGREYXRhLCAuLi5uZXdEYXRhXVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdEYXRhID0gbmV3RGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSBtYXRjaGVkPy50eXBlKSB7XHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgPSBuZXdEYXRhLmxlbmd0aFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShtYXRjaGVkPy50eXBlLCBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSlcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuc2VsZWN0ZWQgPT09IGZhbHNlKVxyXG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgICB0aGlzLnRvYXN0ci5nZXRTdWNjZXNzVG9hc3QoYCR7bWF0Y2hlZD8ubmFtZX0gQWRkZWQgU3VjY2VzZnVsbHkhYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZ2V0RXJyb3JUb2FzdChgUGxlYXNlIFNlbGVjdCBmaWxlIHRoZW4gYWRkIHRvICR7bWF0Y2hlZD8ubmFtZX0gYClcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlICRhcGk6IEF1ZGl0U2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHRpbWVyU2VydmljZTogVGltZXJTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5zZWxlY3RlZFR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgndHlwZScpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5nZXRBdWRpdENvbmZpZygpXHJcbiAgICBpZiAodGhpcy5yZXRhZ2ltYWdlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0dmFsdWUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2VcclxuICAgIHRoaXMuc2V0VGltZXIoKTtcclxuICB9XHJcbiAgZ2V0QXVkaXRDb25maWcoKSB7XHJcblxyXG4gICAgbGV0IGZpbGVkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9JylcclxuICAgIHRoaXMuJGFwaS5nZXRBdWRpdGNvbmZpZyhmaWxlZGF0YT8uZmlsZWRldGFpbHM/LmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnkgPSByZXMuZGF0YS5mb290ZmFsbERpcmVjdG9yeUNvbmZpZ3MudGFnZ2luZ0xpbWl0YXRpb25cclxuICAgICAgICAgIHRoaXMuaW5pdGlhbF9kYXRhX2xvYWRpbmcoKVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNldFRpbWVyKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRpbWVyU2VydmljZS5nZXRUaW1lUGFzc2VkKCkuc3Vic2NyaWJlKHRpbWUgPT4ge1xyXG4gICAgICB0aGlzLnRpbWVQYXNzZWQgPSB0aW1lO1xyXG4gICAgICB0aGlzLmZvcm1hdHRlZFRpbWUgPSB0aGlzLnRpbWVyU2VydmljZS5mb3JtYXRUaW1lKHRpbWUpO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy50aW1lclNlcnZpY2Uuc3RhcnRUaW1lcigpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZUdsb2JhbE1vdXNlRXZlbnQpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUdsb2JhbE1vdXNlRXZlbnQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLnRpbWVyU2VydmljZS5zdGFydFRpbWVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5oYW5kbGVHbG9iYWxNb3VzZUV2ZW50KTtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlR2xvYmFsTW91c2VFdmVudCk7XHJcbiAgICB0aGlzLnRpbWVyU2VydmljZS5jbGVhclRpbWVyKClcclxuXHJcbiAgfVxyXG5cclxuICBpbml0aWFsX2RhdGFfbG9hZGluZygpIHtcclxuICAgIFxyXG4gICAgaWYgKCdhdWRpdCcgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgbGV0IHN0cmluZ2lmeWRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhdWRpdCcpIHx8ICd7fSdcclxuICAgICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICAgIHZhciBhdWRpdGRhdGEgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgICAgXHJcbiAgICAgIGlmIChhdWRpdGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IGF1ZGl0ZGF0YTtcclxuICAgICAgICB0aGlzLmN1c3RvbWVyY291bnQgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEubGVuZ3RoXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhID0gW11cclxuICAgICAgICB0aGlzLmN1c3RvbWVyY291bnQgPSAwXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHZhciBjb3VudCA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShkYXRhLnR5cGUpIHx8ICd7fScpXHJcbiAgICAgIFxyXG4gICAgICBkYXRhLmNvdW50ID0gY291bnQ/Lmxlbmd0aFxyXG4gICAgfSlcclxuICAgIGlmICgncmV0YWcnIGluIHNlc3Npb25TdG9yYWdlKSB7XHJcbiAgICAgIHZhciByZXRhZ2RhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgaWYgKHJldGFnZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gcmV0YWdkYXRhO1xyXG4gICAgICAgIHRoaXMuc3VibWl0dmFsdWUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gICBcclxuICAgIGlmICgndG90YWxmaWxlcycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgdmFyIGZpbGVzID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9JylcclxuICAgICAgdGhpcy50b3RhbGZpbGUgPSBmaWxlcz8udG90YWxmaWxlc1xyXG4gICAgICB0aGlzLmZpbGVkZXRhaWxzID0gZmlsZXM/LmZpbGVkZXRhaWxzXHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRtYXBwaW5nZGF0YSgpIHtcclxuICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2VcclxuICAgIHZhciB0b3RhbGZpbGU6IGFueSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndG90YWxmaWxlcycpIHx8ICd7fScpO1xyXG4gICAgdGhpcy5maWxlZGV0YWlscyA9IHRvdGFsZmlsZT8uZmlsZWRldGFpbHNcclxuXHJcbiAgICB2YXIgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBzdG9yZUlkOiB0b3RhbGZpbGU/LmZpbGVkZXRhaWxzPy5zdG9yZUlkLFxyXG4gICAgICBmaWxlRGF0ZTogdG90YWxmaWxlPy5maWxlZGV0YWlscz8uRGF0ZSxcclxuICAgICAgYXVkaXRJZDogdG90YWxmaWxlPy5hdWRpdElkLFxyXG4gICAgICBjb3VudDogdG90YWxmaWxlPy50b3RhbGZpbGVzXHJcbiAgICB9XHJcbiAgICB0aGlzLiRhcGkuZ2V0QXVkaXRtYXBwaW5nbGlzdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXRhZycpXHJcbiAgICAgICAgICB0aGlzLnJldGFnaW1hZ2UgPSBbXVxyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0Py5kcmFmdGVkRGF0YT8uZmlsdGVyKCh4OiBhbnkpID0+IHgudHlwZSA9PT0gZGF0YS50eXBlKVxyXG4gICAgICAgICAgICBkYXRhLnZhbHVlID0gZmlsdGVyRGF0YVswXT8udmFsdWUgJiYgZmlsdGVyRGF0YVswXT8udmFsdWUubGVuZ3RoID4gMCA/IGZpbHRlckRhdGFbMF0/LnZhbHVlIDogW11cclxuICAgICAgICAgICAgZGF0YS5jb3VudCA9IGRhdGE/LnZhbHVlPy5sZW5ndGhcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShkYXRhPy50eXBlLCBKU09OLnN0cmluZ2lmeShkYXRhPy52YWx1ZSAmJiBkYXRhPy52YWx1ZS5sZW5ndGggPiAwID8gZGF0YT8udmFsdWUgOiBbXSkpXHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBjdXN0b21lckRhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZHJhZnRlZERhdGE/LmZpbHRlcigoeDogYW55KSA9PiB4LnR5cGUgPT09ICdjdXN0b21lcicpXHJcbiAgICAgICAgICBcclxuXHJcbiAgICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBjdXN0b21lckRhdGFbMF0/LnZhbHVlXHJcbiAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXJEYXRhWzBdPy52YWx1ZSk7XHJcbiAgICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgICAgICAgIHRoaXMuaW5pdGlhbF9kYXRhX2xvYWRpbmcoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG5cclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZXZpZXdkYXRhKCkge1xyXG4gICAgdGhpcy5zdWJtaXR2YWx1ZSA9IGZhbHNlO1xyXG4gICAgdmFyIHRvdGFsZmlsZTogYW55ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd0b3RhbGZpbGVzJykgfHwgJ3t9Jyk7XHJcbiAgICBpZiAoJ2F1ZGl0JyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgICBjb25zdCBkZWNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuZGVjb21wcmVzcyhzdHJpbmdpZnlkYXRhKTtcclxuICAgICAgdmFyIGF1ZGl0ZGF0YSA9IEpTT04ucGFyc2UoZGVjb21wcmVzc2VkRGF0YSB8fCAne30nKVxyXG4gICAgICBpZiAoYXVkaXRkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEgPSBhdWRpdGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCdyZXRhZycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgdmFyIHJldGFnZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgncmV0YWcnKSB8fCAne30nKVxyXG4gICAgICB0aGlzLnJldGFnaW1hZ2UgPSByZXRhZ2RhdGE7XHJcbiAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YSA9IFsuLi50aGlzLmF1ZGl0bWFwcGluZ2RhdGEsIC4uLnRoaXMucmV0YWdpbWFnZV1cclxuICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYXVkaXRtYXBwaW5nZGF0YSk7XHJcbiAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhID0gTFpTdHJpbmcuY29tcHJlc3MoanNvblN0cmluZyk7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2F1ZGl0JywgY29tcHJlc3NlZERhdGEpXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3JldGFnJylcclxuICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gW107XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyaW5naWZ5ZGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2F1ZGl0JykgfHwgJ3t9J1xyXG4gICAgY29uc3QgZGVjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmRlY29tcHJlc3Moc3RyaW5naWZ5ZGF0YSk7XHJcbiAgICB2YXIgY3VzdG9tZXIgPSBKU09OLnBhcnNlKGRlY29tcHJlc3NlZERhdGEgfHwgJ3t9JylcclxuICAgIGxldCBzdG9yZWREYXRhID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjdXN0b21lclwiLFxyXG4gICAgICAgIHZhbHVlOiBjdXN0b21lciA/IGN1c3RvbWVyIDogW10sXHJcbiAgICAgIH1cclxuICAgIF1cclxuXHJcbiAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGxldCBzZXNzaW9udmFsdWUgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oZGF0YS50eXBlKSB8fCAne30nKTtcclxuICAgICAgc3RvcmVkRGF0YS5wdXNoKHtcclxuICAgICAgICB0eXBlOiBkYXRhLnR5cGUsXHJcbiAgICAgICAgdmFsdWU6IHNlc3Npb252YWx1ZSAmJiBzZXNzaW9udmFsdWUubGVuZ3RoID4gMCA/IHNlc3Npb252YWx1ZSA6IFtdXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgXHJcbiAgICB2YXIgaW5zZXJvYmo6IGFueSA9IHtcclxuXHJcbiAgICAgIHN0b3JlSWQ6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LnN0b3JlSWQsXHJcbiAgICAgIGF1ZGl0SWQ6IHRvdGFsZmlsZT8uYXVkaXRJZCA/IHRvdGFsZmlsZT8uYXVkaXRJZCA6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHMuYXVkaXRJZCxcclxuICAgICAgZmlsZURhdGU6IHRvdGFsZmlsZT8uZmlsZWRldGFpbHM/LkRhdGUsXHJcbiAgICAgIHRvdGFsQ291bnQ6IHRvdGFsZmlsZT8udG90YWxmaWxlcyA/IHRvdGFsZmlsZS50b3RhbGZpbGVzIDogMCxcclxuICAgICAgcmV0YWdDb3VudDogMCxcclxuICAgICAgdGltZVNwZW50OiB0aGlzLnRpbWVQYXNzZWQsXHJcbiAgICAgIHJldGFnSW1hZ2U6IFtdLFxyXG4gICAgICBkcmFmdGVkRGF0YTogc3RvcmVkRGF0YVxyXG4gICAgfVxyXG4gICAgdGhpcy4kYXBpLnNhdmVEcmFmdChpbnNlcm9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmdldG1hcHBpbmdkYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RpY2tldHMvbWFwcGluZy1saXN0XCIsXSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5nZXRFcnJvclRvYXN0KGVycj8uZXJyb3IpXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmV0YWdhbGxvd0Ryb3AoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgZHJhZ1N0YXJ0KGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBldmVudC50YXJnZXQuaWQpO1xyXG4gIH1cclxuXHJcbiAgZHJvcHJldGFnKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBkcm9wcmV0YWdpbWFnZSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XHJcbiAgICBldmVudC50YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZHJvcHJldGFnaW1hZ2UpKTtcclxuICAgIGNvbnN0IGRyb3B6b25lOiBhbnkgPSBkcm9wcmV0YWdpbWFnZTtcclxuICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGRhdGEuaW1nX2lkID09IGRyb3B6b25lLmlkKSB7XHJcbiAgICAgICAgaWYgKGRhdGEubWFwcGVkaWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdmFyIGZpbmRvbmUgPSB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGEuaW1nX25hbWUgPT0gZHJvcHJldGFnaW1hZ2UpXHJcbiAgICAgICAgICBpZiAoZmluZG9uZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgPSBkYXRhLmNvdW50ICsgZmluZG9uZVswXS5jb3VudFxyXG4gICAgICAgICAgICBkYXRhLm1hcHBlZGlkID0gWy4uLmRhdGEubWFwcGVkaWQsIC4uLmZpbmRvbmVbMF0ubWFwcGVkaWRdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoJ2R1cGxpY2F0ZScgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgbGV0IGZpbGVkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdkdXBsaWNhdGUnKSB8fCAne30nKVxyXG4gICAgICAgICAgICBmaWxlZGF0YSA9IFsuLi5maWxlZGF0YSwgLi4uZmluZG9uZV1cclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZHVwbGljYXRlJywgSlNPTi5zdHJpbmdpZnkoZmlsZWRhdGEpKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZHVwbGljYXRlJywgSlNPTi5zdHJpbmdpZnkoZmluZG9uZSkpXHJcbiAgICAgICAgICAgIGxldCBmaWxlZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZHVwbGljYXRlJykgfHwgJ3t9JylcclxuICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeS5tYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgY291bnQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oZGF0YS50eXBlKSB8fCAne30nKVxyXG4gICAgICAgICAgICBkYXRhLmNvdW50ID0gY291bnQ/Lmxlbmd0aFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhLmNvdW50ID0gZGF0YS5jb3VudCArIDEsXHJcbiAgICAgICAgICAgIGRhdGEubWFwcGVkaWQucHVzaChkcm9wcmV0YWdpbWFnZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZWxlY3RyZXRhZ2ltYWdlKHJlczogYW55KSB7XHJcbiAgICB0aGlzLnJldGFnaW1hZ2UubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEuaW1nX2lkID09IHJlcykge1xyXG4gICAgICAgIGlmIChkYXRhLm1hcHBlZGlkLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBkYXRhLnNlbGVjdGVkID0gIWRhdGEuc2VsZWN0ZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzZWxlY3Rncm91cGltYWdlKHJlczogYW55KSB7XHJcbiAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEubWFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEuaW1nX2lkID09IHJlcykge1xyXG4gICAgICAgIGlmIChkYXRhLm1hcHBlZGlkLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBkYXRhLnNlbGVjdGVkID0gIWRhdGEuc2VsZWN0ZWRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZW1vdmVhdWRpdChkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSZW1vdmVBdWRpdENvbXBvbmVudCwge1xyXG4gICAgICBzaXplOiAnbGcnLFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG4gICAgICBrZXlib2FyZDogZmFsc2VcclxuICAgIH0pXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gZGF0YTtcclxuICAgIG1vZGFsUmVmLmNsb3NlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzPy5yZWxvYWQpIHtcclxuICAgICAgICB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIHN1Ym1pdGF1ZGl0KCkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEF1ZGl0UmVwb3J0UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgc2l6ZTogJ2xnJyxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcclxuICAgICAga2V5Ym9hcmQ6IGZhbHNlXHJcbiAgICB9KVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2VsZWN0ZWRUeXBlID0gdGhpcy5zZWxlY3RlZFR5cGU7XHJcbiAgICBtb2RhbFJlZi5jbG9zZWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmlld2NhdGVnb3J5KGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFZpZXdjYXRlZ29yeUNvbXBvbmVudCwge1xyXG4gICAgICBzaXplOiAnbGcnLFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxyXG4gICAgICBrZXlib2FyZDogZmFsc2VcclxuICAgIH0pXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gZGF0YVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW1hZ2VMaXN0ID0gZGF0YSxcclxuICAgICAgbW9kYWxSZWYuY2xvc2VkLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8ucmVsb2FkKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxfZGF0YV9sb2FkaW5nKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBkcm9wSW1hZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaHRtbHRhZyA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L2h0bWwnKTtcclxuICAgIHZhciBOYW1lID0gZ2V0VGFnTmFtZUZyb21IVE1MKGh0bWx0YWcpO1xyXG4gICAgY29uc3QgZHJvcFpvbmUgPSBldmVudC50YXJnZXQ7XHJcbiAgICBcclxuICAgIC8vIGRlYnVnZ2VyXHJcbiAgICBpZiAoTmFtZSA9PSAnY3VzdG9tZXInIHx8IE5hbWUgPT0gJ3JldGFnJykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBjb25zdCBkcmFnZ2VkSW1hZ2VJZCA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XHJcbiAgICAgIGNvbnN0IGRyYWdnZWRJbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgZXZlbnQudGFyZ2V0LmFwcGVuZENoaWxkKGRyYWdnZWRJbWFnZSk7XHJcbiAgICAgIHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5tYXAoKGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG5cclxuICAgICAgICBpZiAoZGF0YS5pbWdfaWQgPT09IGRyb3Bab25lLmlkKSB7XHJcbiAgICAgICAgICBsZXQgZmluZG9uZSA9IFtdO1xyXG4gICAgICAgICAgY29uc3QgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICdbXScpO1xyXG4gICAgICAgICAgdGhpcy5yZXRhZ2ltYWdlID0gcmV0YWdkYXRhO1xyXG4gICAgICAgICAgZmluZG9uZSA9IHRoaXMucmV0YWdpbWFnZS5maWx0ZXIoKGltZ0RhdGE6IGFueSkgPT4gaW1nRGF0YS5pbWdfaWQgPT09IGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgICAgIGlmIChmaW5kb25lLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBmaW5kb25lID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhLmZpbHRlcigoaW1nRGF0YTogYW55KSA9PiBpbWdEYXRhLmltZ19pZCA9PT0gZHJhZ2dlZEltYWdlSWQpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHRoaXMucmV0YWdpbWFnZS5maWx0ZXIoKGltZ0RhdGE6IGFueSkgPT4gaW1nRGF0YS5pbWdfaWQgIT09IGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3JldGFnJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZXRhZ2ltYWdlKSk7XHJcblxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAoZmluZG9uZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBkYXRhLm1hcHBlZGlkID0gWy4uLmRhdGEubWFwcGVkaWQsIC4uLmZpbmRvbmVbMF0ubWFwcGVkaWRdO1xyXG4gICAgICAgICAgICBkYXRhLmNvdW50ID0gZGF0YS5tYXBwZWRpZC5sZW5ndGg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAoJ2R1cGxpY2F0ZScgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICBsZXQgZmlsZWRhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2R1cGxpY2F0ZScpIHx8ICd7fScpXHJcbiAgICAgICAgICAgICAgZmlsZWRhdGEgPSBbLi4uZmlsZWRhdGEsIC4uLmZpbmRvbmVdXHJcbiAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZHVwbGljYXRlJywgSlNPTi5zdHJpbmdpZnkoZmlsZWRhdGEpKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2R1cGxpY2F0ZScsIEpTT04uc3RyaW5naWZ5KGZpbmRvbmUpKVxyXG4gICAgICAgICAgICAgIGxldCBmaWxlZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZHVwbGljYXRlJykgfHwgJ3t9JylcclxuICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGEuY291bnQgKz0gMTtcclxuICAgICAgICAgICAgZGF0YS5tYXBwZWRpZC5wdXNoKGRyYWdnZWRJbWFnZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChOYW1lID09ICdjdXN0b21lcicpIHtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmF1ZGl0bWFwcGluZ2RhdGEuc3BsaWNlKHRoaXMuYXVkaXRtYXBwaW5nZGF0YS5maW5kSW5kZXgoKHsgaW1nX2lkIH06IHsgaW1nX2lkOiBzdHJpbmcgfSkgPT4gaW1nX2lkID09IGRyYWdnZWRJbWFnZUlkKSwgMSk7XHJcbiAgICAgICAgdGhpcy5hdWRpdG1hcHBpbmdkYXRhLm1hcCgoZGF0YTogYW55KSA9PiBkYXRhLnNlbGVjdGVkID0gZmFsc2UpXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBcclxuICAgICAgdGhpcy5jdXN0b21lcmNvdW50ID0gdGhpcy5hdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGg7XHJcbiAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmF1ZGl0bWFwcGluZ2RhdGEpO1xyXG4gICAgICBjb25zdCBjb21wcmVzc2VkRGF0YSA9IExaU3RyaW5nLmNvbXByZXNzKGpzb25TdHJpbmcpO1xyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhdWRpdCcsIGNvbXByZXNzZWREYXRhKVxyXG4gICAgICB2YXIgcmV0YWdkYXRhID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdyZXRhZycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMucmV0YWdpbWFnZSA9IHJldGFnZGF0YTtcclxuICAgICAgaWYgKHRoaXMucmV0YWdpbWFnZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc3VibWl0dmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhdGVnb3J5Lm1hcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdmFyIGNvdW50ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGRhdGEudHlwZSkgfHwgJ3t9JylcclxuICAgICAgICBkYXRhLmNvdW50ID0gY291bnQ/Lmxlbmd0aFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0VGFnTmFtZUZyb21IVE1MKGh0bWw6IGFueSkge1xyXG4gICAgICB2YXIgdGVtcEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdGVtcEVsZW1lbnQuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgdmFyIGZpcnN0Q2hpbGQ6IGFueSA9IHRlbXBFbGVtZW50LmZpcnN0Q2hpbGQ7XHJcbiAgICAgIGlmIChmaXJzdENoaWxkLmhhc0F0dHJpYnV0ZSgnbmFtZScpKSB7XHJcbiAgICAgICAgdmFyIG5hbWVQcm9wZXJ0eVZhbHVlID0gZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoJ25hbWUnKTtcclxuICAgICAgICByZXR1cm4gbmFtZVByb3BlcnR5VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tmaWxlZGV0YWlscz8uc3RvcmVJZH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMyBhcnJvdy1jb2RlXCI+IC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZmlsZWRldGFpbHM/LkRhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC0zIG1zLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy10aW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zIHRleHQtdGltZXIgZnctc2VtaWJvbGRcIj57eyBmb3JtYXR0ZWRUaW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMTY2NjcgMi44NzA3MUM5LjE2NjY3IDIuNjIwMjMgOS4yNjYxNyAyLjM4MDAxIDkuNDQzMjkgMi4yMDI4OUM5LjYyMDQxIDIuMDI1NzcgOS44NjA2MyAxLjkyNjI3IDEwLjExMTEgMS45MjYyN0gxMy44ODg5QzE0LjEzOTQgMS45MjYyNyAxNC4zNzk2IDIuMDI1NzcgMTQuNTU2NyAyLjIwMjg5QzE0LjczMzggMi4zODAwMSAxNC44MzMzIDIuNjIwMjMgMTQuODMzMyAyLjg3MDcxQzE0LjgzMzMgMy4xMjEyIDE0LjczMzggMy4zNjE0MiAxNC41NTY3IDMuNTM4NTRDMTQuMzc5NiAzLjcxNTY1IDE0LjEzOTQgMy44MTUxNiAxMy44ODg5IDMuODE1MTZIMTIuOTQ0NFY1LjA3NDQyTDEyLjk0MzIgNS4xMjYwNUMxNC41Mzk2IDUuMzAwOTcgMTYuMDUyOCA1LjkyNzg3IDE3LjMwNTMgNi45MzMwOEwxNy4zMTQxIDYuOTI1NTNMMTguMjU4NSA1Ljk4MTA4QzE4LjM3NCA1Ljg1Njc2IDE4LjUyMDggNS43NjU4OCAxOC42ODM1IDUuNzE4MDFDMTguODQ2MyA1LjY3MDE0IDE5LjAxOSA1LjY2NzA2IDE5LjE4MzMgNS43MDkwOEMxOS4zNDc3IDUuNzUxMTEgMTkuNDk3NyA1LjgzNjY5IDE5LjYxNzUgNS45NTY4QzE5LjczNzMgNi4wNzY5MiAxOS44MjI1IDYuMjI3MTMgMTkuODY0MSA2LjM5MTZDMTkuOTA2IDYuNTU1NzggMTkuOTAzIDYuNzI4MjMgMTkuODU1NCA2Ljg5MDg1QzE5LjgwNzcgNy4wNTM0OCAxOS43MTcyIDcuMjAwMjkgMTkuNTkzMyA3LjMxNTlMMTguNjQ4OSA4LjI2MDM0TDE4LjY0MTMgOC4yNjkxNUMxOS42NDAzIDkuNTE5NzQgMjAuMjY1OCAxMS4wMjcgMjAuNDQ2IDEyLjYxNzRDMjAuNjI2MSAxNC4yMDc4IDIwLjM1MzYgMTUuODE2NyAxOS42NTk3IDE3LjI1OTFDMTguOTY1OCAxOC43MDE0IDE3Ljg3ODggMTkuOTE4NSAxNi41MjM3IDIwLjc3MDRDMTUuMTY4NiAyMS42MjIyIDEzLjYwMDYgMjIuMDc0MSAxMiAyMi4wNzQxQzEwLjM5OTQgMjIuMDc0MSA4LjgzMTM3IDIxLjYyMjIgNy40NzYyOSAyMC43NzA0QzYuMTIxMjIgMTkuOTE4NSA1LjAzNDE5IDE4LjcwMTQgNC4zNDAzIDE3LjI1OTFDMy42NDY0MSAxNS44MTY3IDMuMzczODYgMTQuMjA3OCAzLjU1NDAyIDEyLjYxNzRDMy43MzQxOCAxMS4wMjcgNC4zNTk3MyA5LjUxOTc0IDUuMzU4NjcgOC4yNjkxNUw1LjM1MTExIDguMjYwMzRMNC40MDY2NyA3LjMxNTlDNC4yMzk2NCA3LjEzNjkgNC4xNDg2NSA2LjkwMDAzIDQuMTUyODcgNi42NTUyNEM0LjE1NzEgNi40MTA0NSA0LjI1NjIyIDYuMTc2ODcgNC40MjkzNCA2LjAwMzc1QzQuNjAyNDYgNS44MzA2MyA0LjgzNjA0IDUuNzMxNTEgNS4wODA4MyA1LjcyNzI4QzUuMzI1NjIgNS43MjMwNiA1LjU2MjQ5IDUuODE0MDUgNS43NDE0OSA1Ljk4MTA4TDYuNjg1OTMgNi45MjU1M0w2LjY5NDc0IDYuOTMzMDhDNy45NDY4MSA1LjkyODA5IDkuNDU5NjMgNS4zMDEyIDExLjA1NTYgNS4xMjYwNVYzLjgxNTE2SDEwLjExMTFDOS44NjA2MyAzLjgxNTE2IDkuNjIwNDEgMy43MTU2NSA5LjQ0MzI5IDMuNTM4NTRDOS4yNjYxNyAzLjM2MTQyIDkuMTY2NjcgMy4xMjEyIDkuMTY2NjcgMi44NzA3MVpNMTIgMjAuMTg1NUMxMy43NTM1IDIwLjE4NTQgMTUuNDM1MiAxOS40ODg2IDE2LjY3NSAxOC4yNDg1QzE3LjkxNDggMTcuMDA4NSAxOC42MTEzIDE1LjMyNjcgMTguNjExMSAxMy41NzMyQzE4LjYxMDkgMTEuODE5NiAxNy45MTQyIDEwLjEzOCAxNi42NzQxIDguODk4MTNDMTUuNDM0MSA3LjY1ODMxIDEzLjc1MjMgNi45NjE4OCAxMS45OTg3IDYuOTYyMDRDMTAuMjQ1MiA2Ljk2MjIxIDguNTYzNTQgNy42NTg5NiA3LjMyMzcyIDguODk5MDJDNi4wODM5IDEwLjEzOTEgNS4zODc0NyAxMS44MjA5IDUuMzg3NjMgMTMuNTc0NEM1LjM4NzggMTUuMzI4IDYuMDg0NTUgMTcuMDA5NiA3LjMyNDYxIDE4LjI0OTRDOC41NjQ2NyAxOS40ODkzIDEwLjI0NjUgMjAuMTg1NyAxMiAyMC4xODU1Wk0xMi40ODk5IDExLjc0ODVMMTQuMTY0NyAxMC4wNzM3QzE0LjI1MTcgOS45ODM0MyAxNC4zNTU5IDkuOTExNDMgMTQuNDcxMSA5Ljg2MTg4QzE0LjU4NjMgOS44MTIzMyAxNC43MTAyIDkuNzg2MjIgMTQuODM1NiA5Ljc4NTA3QzE0Ljk2MTEgOS43ODM5MiAxNS4wODU0IDkuODA3NzYgMTUuMjAxNSA5Ljg1NTE5QzE1LjMxNzYgOS45MDI2MiAxNS40MjMxIDkuOTcyNyAxNS41MTE4IDEwLjA2MTNDMTUuNjAwNSAxMC4xNSAxNS42NzA3IDEwLjI1NTQgMTUuNzE4MiAxMC4zNzE0QzE1Ljc2NTggMTAuNDg3NSAxNS43ODk3IDEwLjYxMTggMTUuNzg4NyAxMC43MzcyQzE1Ljc4NzcgMTAuODYyNiAxNS43NjE3IDEwLjk4NjYgMTUuNzEyMiAxMS4xMDE4QzE1LjY2MjggMTEuMjE3MSAxNS41OTA5IDExLjMyMTMgMTUuNTAwNyAxMS40MDg1TDEzLjgyNTkgMTMuMDg0NkMxMy45MDAzIDEzLjM2NDUgMTMuOTA5NSAxMy42NTc5IDEzLjg1MjYgMTMuOTQyQzEzLjc5NTggMTQuMjI2IDEzLjY3NDUgMTQuNDkzMyAxMy40OTgxIDE0LjcyMzFDMTMuMzIxNyAxNC45NTI5IDEzLjA5NDkgMTUuMTM5MSAxMi44MzUyIDE1LjI2NzVDMTIuNTc1NCAxNS4zOTU4IDEyLjI4OTcgMTUuNDYyOCAxMiAxNS40NjMzQzExLjczMjcgMTUuNDYxIDExLjQ2ODggMTUuNDAxOSAxMS4yMjYgMTUuMjlDMTAuOTgzMiAxNS4xNzgxIDEwLjc2NyAxNS4wMTU5IDEwLjU5MTYgMTQuODE0MUMxMC40MTYyIDE0LjYxMjMgMTAuMjg1NyAxNC4zNzU1IDEwLjIwODcgMTQuMTE5NUMxMC4xMzE2IDEzLjg2MzUgMTAuMTA5OSAxMy41OTQgMTAuMTQ0OCAxMy4zMjlDMTAuMTc5OCAxMy4wNjM5IDEwLjI3MDYgMTIuODA5MyAxMC40MTE0IDEyLjU4MkMxMC41NTIyIDEyLjM1NDcgMTAuNzM5NiAxMi4xNTk5IDEwLjk2MTMgMTIuMDEwNEMxMS4xODMgMTEuODYxIDExLjQzMzkgMTEuNzYwNCAxMS42OTc0IDExLjcxNTJDMTEuOTYwOSAxMS42NzAxIDEyLjIzMSAxMS42ODE0IDEyLjQ4OTkgMTEuNzQ4NVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGVmYXVsdCBidG4tb3V0bGluZSBweS0yIG14LTJcIiAoY2xpY2spPVwicmV2aWV3ZGF0YSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBzdmctaWNvbi0yeFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNS44MzM3IDEwLjAwMDFINC4xNjY5OU00LjE2Njk5IDEwLjAwMDFMMTAuMDAwMyAxNS44MzM0TTQuMTY2OTkgMTAuMDAwMUwxMC4wMDAzIDQuMTY2NzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJtcy0zXCI+QmFjayB0byBSZXZpZXc8L3NwYW4+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IHB5LTIgbXgtMlwiIFtkaXNhYmxlZF09XCJzdWJtaXR2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRhdWRpdCgpXCI+U3VibWl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tcHJpbWFyeSBzdmctaWNvbi0yeFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Njk5IDEwLjAwMDFIMTUuODMzN00xNS44MzM3IDEwLjAwMDFMMTAuMDAwMyA0LjE2Njc1TTE1LjgzMzcgMTAuMDAwMUwxMC4wMDAzIDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIHRleHQtZGFya1wiPlRvdGFsIEZpbGVzIC0gPHNwYW4+e3t0b3RhbGZpbGV9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgIFxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMyB0ZXh0IGZ3LXNlbWlib2xkXCI+VW5pcXVlIEN1c3RvbWVycyA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7YXVkaXRtYXBwaW5nZGF0YT8ubGVuZ3RoID8gYXVkaXRtYXBwaW5nZGF0YT8ubGVuZ3RoIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHRleHQgdy1zZW1pYm9sZCBidG4tc20gcHktMiBidXRuLWZsYWcgbXgtMlwiIChjbGljayk9XCJ2aWV3Y2F0ZWdvcnkoaXRlbSlcIiBbZGlzYWJsZWRdPVwiIWl0ZW0/LmNvdW50XCI+Vmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/Lm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3tpdGVtPy5jb3VudH19PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cImF1ZGl0TG9hZGluZ1wiIGNsYXNzPVwiY2FyZCBtdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLTUwMHB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxoNSBjbGFzcz1cInRleHQtZGFyay02MDAgZnctYm9sZCB0ZXh0LWNlbnRlciBtdC01XCI+TG9hZGluZyBBdWRpdCBmaWxlLi4uLi4uPC9oNT4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYXVkaXRMb2FkaW5nXCIgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLTEwMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZFwiPkltYWdlcyBmb3IgUmV0YWdnaW5nPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdWIgbXQtMiBmdy1zZW1pYm9sZFwiPkRyYWcgYW5kIERyb3Agb24gY29ycmVjdCBjdXN0b21lcnM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgKm5nRm9yPVwibGV0IG9iajEgb2YgcmV0YWdpbWFnZVwiIChkcmFnb3Zlcik9XCJyZXRhZ2FsbG93RHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBkcmFnZ2FibGU9XCJ0cnVlXCIgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiIGlkPVwie3tvYmoxLmltZ19pZH19XCIgW3NyY109XCJvYmoxLmltZ19wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteS0zIG14LTQgaW1nLXJldFwiIChjbGljayk9XCJzZWxlY3RyZXRhZ2ltYWdlKG9iajEuaW1nX2lkKVwiIG5hbWU9XCJyZXRhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTAgZnMtNyBmdy1ib2xkXCI+e3tvYmoxLmltZ19uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iajEuc2VsZWN0ZWRcIiBjbGFzcz1cIm5vdGlmeS1iYWRnZTEgbndiZ1wiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgY29sb3J2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZ5LWJhZGdlIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZWF1ZGl0KG9iajEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmoxLmNvdW50PjFcIj57e29iajEuY291bnR9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhYXVkaXRMb2FkaW5nXCIgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLTEwMDBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZFwiPlVuaXF1ZSBDdXN0b21lcnMgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsXCI+e3thdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGggP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpdG1hcHBpbmdkYXRhPy5sZW5ndGggOiAwfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiICpuZ0Zvcj1cImxldCBvYmogb2YgYXVkaXRtYXBwaW5nZGF0YTtsZXQgaT1pbmRleFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm14LTMgbWItNSBpbWdcIiBbc3JjXT1cIm9iai5pbWdfcGF0aFwiIGlkPVwie3tvYmouaW1nX2lkfX1cIiBhbHQ9XCJJbWFnZVwiIG5hbWU9XCJjdXN0b21lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkcmFnb3Zlcik9XCJyZXRhZ2FsbG93RHJvcCgkZXZlbnQpXCIgKGRyb3ApPVwiZHJvcEltYWdlKCRldmVudClcIiBkcmFnZ2FibGU9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoJGV2ZW50KVwiIChjbGljayk9XCJzZWxlY3Rncm91cGltYWdlKG9iai5pbWdfaWQgKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLTAgZnMtNyBmdy1ib2xkXCI+e3tvYmouaW1nX25hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqLnNlbGVjdGVkXCIgY2xhc3M9XCJub3RpZnktYmFkZ2UxXCI+PGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGlmeS1iYWRnZSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZW1vdmVhdWRpdChvYmopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvYmouY291bnQ+MVwiPnt7b2JqLmNvdW50fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=