imm-element-ui 1.8.5 → 1.8.7

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.
@@ -541,7 +541,13 @@ export class GridComponent {
541
541
  }
542
542
  clear() {
543
543
  this.grid?.api.setGridOption('rowData', []);
544
- this.upsert().subsert = [];
544
+ this.upsert().subsert[this.subIndex] = {
545
+ subModelName: this.toOptions().modelName,
546
+ fk: this.toOptions().fk,
547
+ subData: [],
548
+ maptmp: new Map(),
549
+ logtmp: new Map(),
550
+ };
545
551
  }
546
552
  addRow() {
547
553
  if (this.addType() == 'handle') {
@@ -753,4 +759,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
753
759
  type: HostListener,
754
760
  args: ['window:resize', ['$event']]
755
761
  }] } });
756
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBc0IxRCxNQUFNLGFBQWEsR0FBZ0I7SUFDbEMsOEJBQThCO0lBQzlCLGFBQWEsRUFBRTtRQUNkLElBQUksRUFBRSxD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QyxDQUFBO1lBQ0YsT0FBTyxJQUFJLENBQUE7UUFDWixDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUE7SUFDcEIsQ0FBQzsrR0E5dUJXLGFBQWE7bUdBQWIsYUFBYSwwNURBQ2QsYUFBYSwwRUFDYixhQUFhLDJCQUFVLFVBQVUsNkhDeEY3QywydkRBZ0RBLG8wQkRrQ1csYUFBYSw4NFJBQUUsWUFBWTs7NEZBSXpCLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0MsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUM7a0ZBS1osSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhO2dCQUN3QixPQUFPO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ2xCLFlBQVk7c0JBQXZDLFNBQVM7dUJBQUMsZUFBZTtnQkFnRDFCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0RWxlbWVudFJlZixcclxuXHRpbnB1dCxcclxuXHRlZmZlY3QsXHJcblx0aW5qZWN0LFxyXG5cdGNvbXB1dGVkLFxyXG5cdHVudHJhY2tlZCxcclxuXHRvdXRwdXQsXHJcblx0Tmdab25lLFxyXG5cdFJlbmRlcmVyMixcclxuXHRDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRIb3N0TGlzdGVuZXIsXHJcblx0c2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDZWxsVmFsdWVDaGFuZ2VkRXZlbnQsIENvbERlZiwgR3JpZE9wdGlvbnMgYXMgUmF3R3JpZE9wdGlvbnMsIFJvd0RyYWdFbmRFdmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7IFRoZW1lQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvdGhlbWVDb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IFNlYXJjaCxDb2x1bW5GaWx0ZXIgfSBmcm9tICcuLi8uLi9hbS9hbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBncmlkVXRpbHMgfSBmcm9tICcuLi9ncmlkLXV0aWxzJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjb21wb25lbnRzLCBDTElFTlRMSU1JVCB9IGZyb20gJy4uL21vY2stZGF0YSc7XHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JpZE9wdGlvbnMgZXh0ZW5kcyBSYXdHcmlkT3B0aW9ucyB7XHJcblx0c2VydmVyRnVuYz86IChzZWFyY2g6IFNlYXJjaCkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG5cdGNsaWVudEZ1bmM/OiAoc2VhcmNoOiBTZWFyY2gpID0+IE9ic2VydmFibGU8YW55PjtcclxuXHRzaG93U2VhcmNoPzogYm9vbGVhbjtcclxuXHRwcmVTZWFyY2g/OiBTZWFyY2g7XHJcblx0dHJlZURhdGFGaWVsZD86IHN0cmluZztcclxuXHR0cmVlTGV2ZWw/OiBudW1iZXI7XHJcblx0aGVhZGVySGVpZ2h0PzogbnVtYmVyO1xyXG5cdHNjcm9sbEhlaWdodD86IHN0cmluZztcclxuXHRzaG93SW5kZXg/OiBib29sZWFuO1xyXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmc/OiBib29sZWFuO1xyXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdD86IG51bWJlcjtcclxuXHRtYWluRmllbGQ/OiBzdHJpbmc7XHJcblx0bW9kZWxOYW1lPzogc3RyaW5nO1xyXG5cdGZrPzogc3RyaW5nO1xyXG5cdGRyYWdTb3J0Pzogc3RyaW5nO1xyXG5cdHNlbGVjdGlvbk1vZGU/OiAnbm9uZScgfCAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XHJcblx0ZGF0YUtleT86IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgZGVmYXVsdE9wdGlvbjogR3JpZE9wdGlvbnMgPSB7XHJcblx0Ly8gcG9wdXBQYXJlbnQ6IGRvY3VtZW50LmJvZHksXHJcblx0ZGVmYXVsdENvbERlZjoge1xyXG5cdFx0ZmxleDogMSxcclxuXHRcdG1pbldpZHRoOiAxMDAsXHJcblx0XHRzb3J0YWJsZTogZmFsc2UsXHJcblx0XHRmaWx0ZXI6IGZhbHNlLFxyXG5cdH0sXHJcblx0cm93U2VsZWN0aW9uOiB7IG1vZGU6ICdtdWx0aVJvdycgfSxcclxuXHRyb3dNb2RlbFR5cGU6ICdzZXJ2ZXJTaWRlJyxcclxuXHRjZWxsU2VsZWN0aW9uOiB7XHJcblx0XHRoYW5kbGU6IHtcclxuXHRcdFx0bW9kZTogJ3JhbmdlJyxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRlbmFibGVDaGFydHM6IHRydWUsXHJcblx0dW5kb1JlZG9DZWxsRWRpdGluZzogdHJ1ZSxcclxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nTGltaXQ6IDIwLFxyXG59O1xyXG5cclxuY29uc3QgZGVmYXVsdFNvcnRzID0gW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBpc0FzYzogZmFsc2UgfV07XHJcbmZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYXJyYXk6IGFueVtdLCBwcmVkaWNhdGU6IGFueSwgdGhpc0FyZzogYW55KSB7XHJcblx0Zm9yIChsZXQgaSA9IGFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcblx0XHRpZiAocHJlZGljYXRlLmNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkge1xyXG5cdFx0XHRyZXR1cm4gaTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIC0xO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2N1c3RvbS1ncmlkJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtBZ0dyaWRBbmd1bGFyLCBCdXR0b25Nb2R1bGVdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vZ3JpZC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkQ29tcG9uZW50IHtcclxuXHRAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIpIGdyaWQhOiBBZ0dyaWRBbmd1bGFyO1xyXG5cdEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhciwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGdyaWRSZWYhOiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoJ2dyaWRDb250YWluZXInKSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xyXG5cdGdyaWRPcHRpb25zID0gaW5wdXQ8R3JpZE9wdGlvbnM+KHt9KTtcclxuXHRzZWxlY3Rpb25LZXlzID0gaW5wdXQ8YW55W10+KFtdKTtcclxuXHR0b09wdGlvbnMgPSBjb21wdXRlZCgoKSA9PlxyXG5cdFx0Z3JpZFV0aWxzLm1lcmdlT3B0aW9ucyh7IC4uLmRlZmF1bHRPcHRpb24sIC4uLnRoaXMuZ3JpZE9wdGlvbnMoKSB9LCB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hQcm0oKSkubGltaXQsIHRoaXMuYWN0aW9uKSxcclxuXHQpO1xyXG5cdHRoZW1lQ29uZmlnID0gaW5qZWN0KFRoZW1lQ29uZmlnU2VydmljZSk7XHJcblx0bG9jYWxlVGV4dDogYW55O1xyXG5cdGkxOG5TZXJ2aWNlID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcclxuXHRteVRoZW1lID0gY29tcHV0ZWQoKCkgPT4gZ3JpZFV0aWxzLmdldFRoZW1lKHRoaXMudGhlbWVDb25maWcpKTtcclxuXHRjb21wb25lbnRzID0gY29tcG9uZW50cztcclxuXHRjb2x1bW5EZWZzOiBDb2xEZWZbXSA9IFtdO1xyXG5cdGluaXRHcmlkID0gdHJ1ZTtcclxuXHRjb250ZW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XHJcblx0bWFpbkZpZWxkITogc3RyaW5nO1xyXG5cdG1vZGVsTmFtZSE6IHN0cmluZztcclxuXHR1cHNlcnQgPSBpbnB1dDxhbnk+KCk7XHJcblx0c3ViSW5kZXghOiBudW1iZXI7XHJcblx0cm93RGF0YSA9IGlucHV0PGFueT4odW5kZWZpbmVkKTtcclxuXHRzZWFyY2hQcm0gPSBpbnB1dDxTZWFyY2g+KHt9KTtcclxuXHRyYXdQcm0/OiBTZWFyY2g7XHJcblx0ZGVsZXRlRW1pdCA9IG91dHB1dDxudW1iZXJbXT4oKTtcclxuXHRhZGRFbWl0ID0gb3V0cHV0KCk7XHJcblx0YWRkVHlwZSA9IGlucHV0PCdoYW5kbGUnIHwgJ3NlbGVjdCcgfCAnbm9uZSc+KCk7XHJcblx0c2VsZWN0RGF0YSA9IGlucHV0PGFueVtdPigpO1xyXG5cdHNob3dBY3QgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRhY3RQb3MgPSBpbnB1dDwndG9wJyB8ICdib3R0b20nPignYm90dG9tJyk7XHJcblx0YXV0aExldmVsID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcblx0aHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHRyZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG5cdG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG5cdGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0c2hvd0RlbGV0ZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdGdyaWREaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGFkZFNvcnQgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblxyXG5cdHJpY2hNdWx0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcblx0aG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyOiBhbnk7XHJcblx0aG9yaXpvbnRhbFNjcm9sbEJhckhlaWdodCA9IDA7XHJcblx0dmVydGljYWxTY3JvbGxCYXJPYnNlcnZlcjogYW55O1xyXG5cdHZlcnRpY2FsU2Nyb2xsQmFyV2lkdGggPSAwO1xyXG5cdGdyaWRIZWlnaHQgPSAwO1xyXG5cdHNlbGVjdGVkUm93cyA9IHNpZ25hbDxhbnlbXT4oW10pO1xyXG5cdG5vUm93cyA9IHRydWU7XHJcblx0c2hvd0hvcml6b250YWwgPSBmYWxzZTtcclxuXHRkcmFnQmVmb3JlSW5kZXggPSAtMTtcclxuXHJcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcblx0b25SZXNpemUoKSB7XHJcblx0XHR0aGlzLnNldFNjcm9sbEhlaWdodCgpO1xyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb246IEFjdGlvblNlcnZpY2UpIHtcclxuXHRcdGNvbnN0IHNlYXJjaFBybSQgPSB0b09ic2VydmFibGUodGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgoc2VhcmNoUHJtKSA9PiB7XHJcblx0XHRcdGlmIChzZWFyY2hQcm0ubW9kZWxOYW1lICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHR0aGlzLnJhd1BybSA9IHNlYXJjaFBybTtcclxuXHRcdFx0XHRzZWFyY2hQcm0kLnVuc3Vic2NyaWJlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHRhc3luYyAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gYXdhaXQgdGhpcy5zZXRSaWNoVmFsdWUoKTtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbkRlZnMgPSBncmlkVXRpbHMuaGFuZGxlSTE4bktleSh0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnMhIHx8IFtdLCB0aGlzLmkxOG5TZXJ2aWNlKTtcclxuXHRcdFx0XHR0aGlzLm1haW5GaWVsZCA9IHRoaXMudG9PcHRpb25zKCkubWFpbkZpZWxkITtcclxuXHRcdFx0XHR0aGlzLm1vZGVsTmFtZSA9IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lITtcclxuXHRcdFx0XHRpZiAoIXRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LmZpbmQoKHY6IGFueSkgPT4gdi5zdWJNb2RlbE5hbWUgPT09IHRoaXMubW9kZWxOYW1lKSkge1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydD8ucHVzaCh7XHJcblx0XHRcdFx0XHRcdHN1Yk1vZGVsTmFtZTogdGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUsXHJcblx0XHRcdFx0XHRcdGZrOiB0aGlzLnRvT3B0aW9ucygpLmZrLFxyXG5cdFx0XHRcdFx0XHRzdWJEYXRhOiBbXSxcclxuXHRcdFx0XHRcdFx0bWFwdG1wOiBuZXcgTWFwKCksXHJcblx0XHRcdFx0XHRcdGxvZ3RtcDogbmV3IE1hcCgpLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuc3ViSW5kZXggPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5maW5kSW5kZXgoKHY6IGFueSkgPT4gdi5zdWJNb2RlbE5hbWUgPT09IHRoaXMubW9kZWxOYW1lKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGlmICghdGhpcy5hY3Rpb24uc2VhcmNoTW9uaXRvcih0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSkpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5yb3dEYXRhKCkgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKCkuY2xpZW50RnVuYyA9ICgpID0+IG9mKHsgZGF0YTogdGhpcy5yb3dEYXRhKCksIHRvdGFsTnVtOiB0aGlzLnJvd0RhdGEoKT8ubGVuZ3RoIH0pO1xyXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5nZXRDbGllbnREYXRhKHVuZGVmaW5lZCk7XHJcblx0XHRcdFx0fSwgMTAwKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdERhdGEoKSAmJiB0aGlzLnNlbGVjdERhdGEoKSEubGVuZ3RoID4gMCAmJiB0aGlzLmdyaWQpIHtcclxuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWRkZWRSb3dzKHRoaXMuc2VsZWN0RGF0YSgpISk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcblx0XHQpO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKS5wcmVTZWFyY2ggJiZcclxuXHRcdFx0XHRcdHRoaXMuYWN0aW9uLnNldFNlYXJjaCh7IGNvbHVtbkZpbHRlcnM6IHRoaXMudG9PcHRpb25zKCkucHJlU2VhcmNoIS5jb2x1bW5GaWx0ZXJzIH0sIHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uLmdldEFjdGlvbigpO1xyXG5cdFx0XHRcdGlmIChhY3Rpb24/LnR5cGUgPT09ICdleHBvcnQnKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdyaWQuYXBpLmV4cG9ydERhdGFBc0V4Y2VsKHsgZmlsZU5hbWU6IHRoaXMubW9kZWxOYW1lIH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZWRpdGluZ0ZpeCgpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmkxOG5TZXJ2aWNlLmNoYW5nZS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHR0aGlzLmdyaWQgJiYgdGhpcy5ncmlkLmFwaS5kZXN0cm95KCk7XHJcblx0XHRcdHRoaXMuaW5pdEdyaWQgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5sb2NhbGVUZXh0ID0gZ3JpZFV0aWxzLmdldExvY2FsVGV4dChyZXMpO1xyXG5cdFx0XHR0aGlzLmNvbHVtbkRlZnMgPSBncmlkVXRpbHMuaGFuZGxlSTE4bktleSh0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnMhLCB0aGlzLmkxOG5TZXJ2aWNlKTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pbml0R3JpZCA9IHRydWU7XHJcblx0XHRcdH0sIDEwMCk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMubG9jYWxlVGV4dCA9IGdyaWRVdGlscy5nZXRMb2NhbFRleHQodGhpcy5pMThuU2VydmljZS5jdXJyZW50TGFuZyk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdGlmICh0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlcikge1xyXG5cdFx0XHR0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyKSB7XHJcblx0XHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXRHcmlkKCk6IEFnR3JpZEFuZ3VsYXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuZ3JpZDtcclxuXHR9XHJcblxyXG5cdG9uR3JpZFJlYWR5KGU6IGFueSkge1xyXG5cdFx0dGhpcy5pbml0R3JpZEhlaWdodCgpO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xyXG5cdFx0fSwgMTAwKTtcclxuXHR9XHJcblxyXG5cdG9uU2VsZWN0aW9uQ2hhbmdlZChldmVudDogYW55KTogYW55IHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRSb3dzLnNldChncmlkVXRpbHMuY2FsY1Jvd0lkcyhldmVudC5hcGksIHRoaXMudG9PcHRpb25zKCk/LnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpKTtcclxuXHR9XHJcblxyXG5cdG9uUm93R3JvdXBPcGVuZWQoKSB7XHJcblx0XHR0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcblx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldFJpY2hWYWx1ZSgpIHtcclxuXHRcdGxldCBjb2wgPSB0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnMhIHx8IFtdO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgcHJvY2Vzc2VkQ29scyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG5cdFx0XHRcdGNvbC5tYXAoYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoJ2ZpZWxkSWQnKSAmJiAoaXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBpdGVtLmNlbGxFZGl0b3IgPT0gJ2FnU2VsZWN0Q2VsbEVkaXRvcicpKSB7XHJcblx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoIWl0ZW0uY2VsbEVkaXRvclBhcmFtcyB8fCAhaXRlbS5jZWxsRWRpdG9yUGFyYW1zLmhhc093blByb3BlcnR5KCd2YWx1ZXMnKSkge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCdzZWxlY3REYXRhJykpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IGF3YWl0IGl0ZW0uc2VsZWN0RGF0YSgpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHQuLi5pdGVtLmNlbGxFZGl0b3JQYXJhbXMsXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RNYXhIZWlnaHQ6IDIwMCxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGl0ZW0uY2VsbEVkaXRvclBhcmFtcyAmJiBpdGVtLmNlbGxFZGl0b3JQYXJhbXMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlcycpKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFsdWVzID0gaXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcztcclxuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVMaXN0TWF4SGVpZ2h0ID0gMjAwO1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcy5zdXBwcmVzc011bHRpU2VsZWN0UGlsbFJlbmRlcmVyID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRsZXQgaXNTdHJpbmcgPSB2YWx1ZXMuZXZlcnkoKGl0ZW06IGFueSkgPT4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKTtcclxuXHRcdFx0XHRcdFx0aWYgKCFpc1N0cmluZykge1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcy5yYXdPcHRpb25zID0gdmFsdWVzO1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXMgPSB2YWx1ZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0udmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0udmFsdWVGb3JtYXR0ZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1zLnZhbHVlID09PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25zID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLnJhd09wdGlvbnMgYXMgYW55W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT0gcGFyYW1zLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IHBhcmFtcy52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtcy52YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocGFyYW1zLnZhbHVlLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IHBhcmFtcy52YWx1ZS5zcGxpdCgnLCcpLm1hcCgodjogYW55KSA9PiAoIWlzTmFOKHYpID8gTnVtYmVyKHYpIDogdikpIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBwYXJhbXMudmFsdWUgfHwgW107XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maWx0ZXIoKG9wdCkgPT4gdmFsdWVzLmluY2x1ZGVzKG9wdC52YWx1ZSkpIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uLmxlbmd0aCA+IDAgPyBvcHRpb24ubWFwKCh2KSA9PiB2LmxhYmVsKSA6IHBhcmFtcy52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0udmFsdWVHZXR0ZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdwYW1yYW1zLS0tLScscGFyYW1zLGl0ZW0uZmllbGQpXHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyAmJiBwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtLmZpZWxkKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdID09ICdzdHJpbmcnID8gcGFyYW1zLmRhdGFbaXRlbS5maWVsZF0uc3BsaXQoJywnKSA6IHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdO1xyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0aXRlbS52YWx1ZVBhcnNlciA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3BhcmFtcy0tLS0nLHBhcmFtcylcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQubGFiZWwgPT09IHBhcmFtcy5uZXdWYWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uID8gb3B0aW9uLnZhbHVlIDogcGFyYW1zLm5ld1ZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcyA9IHZhbHVlcztcclxuXHRcdFx0XHRcdFx0XHRpdGVtLnZhbHVlR2V0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyAmJiBwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtLmZpZWxkKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHlwZW9mIHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdID09ICdzdHJpbmcnID8gcGFyYW1zLmRhdGFbaXRlbS5maWVsZF0uc3BsaXQoJywnKSA6IHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdO1xyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJldHVybiBpdGVtO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRyZXR1cm4gcHJvY2Vzc2VkQ29scztcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgY29sdW1uczonLCBlcnJvcik7XHJcblx0XHRcdHRocm93IGVycm9yO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0RW51bXMoaWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3QoJ2dldCcsIHsgaWQ6IE51bWJlcihpZCksIG1vZGVsTmFtZTogJ01vZGVsRmllbGQnLCBwcmVsb2FkczogWydFbnVtJ10gfSkpO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlU2VsZWN0aW9ucyhzdGFydFJvdzogbnVtYmVyKSB7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0aW9uS2V5cygpPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRncmlkVXRpbHMuc2VsZWN0aW9uSGFuZGxlcih0aGlzLmdyaWQuYXBpLCB0aGlzLnNlbGVjdGlvbktleXMoKSwgc3RhcnRSb3csIHRoaXMudG9PcHRpb25zKCk/LmRhdGFLZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldERhdGEoKSB7XHJcblx0XHR1bnRyYWNrZWQoKCkgPT4ge1xyXG5cdFx0XHRjb25zb2xlLmxvZygndGhpcy50b09wdGlvbnMoKScsdGhpcy50b09wdGlvbnMoKSlcclxuXHRcdFx0aWYgKCF0aGlzLnNlYXJjaFBybSgpLm1vZGVsTmFtZSAmJiAhdGhpcy5yb3dEYXRhKCkpIHJldHVybjtcclxuXHRcdFx0dGhpcy5jYW5jZWxTZWxlY3QoKTtcclxuXHRcdFx0Y29uc3Qgc2VhcmNoID0gdGhpcy5hY3Rpb24uZ2V0U2VhcmNoKHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lKTtcclxuXHRcdFx0dGhpcy50b09wdGlvbnMoKT8ucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJyA/IHRoaXMuZ2V0U2VydmVyRGF0YShzZWFyY2gpIDogdGhpcy5nZXRDbGllbnREYXRhKHNlYXJjaCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldFNlcnZlckRhdGEoc2VhcmNoPzogU2VhcmNoKSB7XHJcblx0XHR0aGlzLmdyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdzZXJ2ZXJTaWRlRGF0YXNvdXJjZScsIHtcclxuXHRcdFx0Z2V0Um93czogKHBhcmFtcykgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHNlYXJjaFBybTogU2VhcmNoID0ge1xyXG5cdFx0XHRcdFx0Li4udGhpcy5zZWFyY2hQcm0oKSxcclxuXHRcdFx0XHRcdG9mZnNldDogcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3csXHJcblx0XHRcdFx0XHRjb2x1bW5GaWx0ZXJzOiBbLi4uKHRoaXMucmF3UHJtPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgLi4uKHNlYXJjaD8uY29sdW1uRmlsdGVycyB8fCBbXSldLFxyXG5cdFx0XHRcdFx0c29ydHM6IHNlYXJjaD8uc29ydHM/Lmxlbmd0aCA/IHNlYXJjaC5zb3J0cyA6IHRoaXMucmF3UHJtPy5zb3J0cz8ubGVuZ3RoID8gdGhpcy5yYXdQcm0uc29ydHMgOiBkZWZhdWx0U29ydHMsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHRoaXMuaXNSYW5nZShzZWFyY2hQcm0uY29sdW1uRmlsdGVycyEpIGFzIENvbHVtbkZpbHRlcltdO1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlU2VydmVyVHJlZShwYXJhbXMsIHNlYXJjaFBybSk7XHJcblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKVxyXG5cdFx0XHRcdFx0LnNlcnZlckZ1bmM/LihzZWFyY2hQcm0pXHJcblx0XHRcdFx0XHQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmFjdGlvbi5zZXRQYWdlKHtcclxuXHRcdFx0XHRcdFx0XHRzdGFydFJvdzogcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3csXHJcblx0XHRcdFx0XHRcdFx0ZW5kUm93OiBwYXJhbXMucmVxdWVzdC5lbmRSb3chIDwgcmVzLnRvdGFsTnVtID8gcGFyYW1zLnJlcXVlc3QuZW5kUm93IDogcmVzLnRvdGFsTnVtLFxyXG5cdFx0XHRcdFx0XHRcdHRvdGFsOiByZXMudG90YWxOdW0sXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRwYXJhbXMuc3VjY2Vzcyh7IHJvd0RhdGE6IHJlcy5kYXRhIHx8IFtdIH0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmhhbmRsZVNlbGVjdGlvbnMocGFyYW1zLnJlcXVlc3Quc3RhcnRSb3cgfHwgMCk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlU2VydmVyVHJlZShwYXJhbXM6IGFueSwgc2VhcmNoUHJtOiBTZWFyY2gpIHtcclxuXHRcdGlmICghdGhpcy50b09wdGlvbnMoKS50cmVlRGF0YSkgcmV0dXJuO1xyXG5cdFx0aWYgKHBhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnM/LmZpbHRlcigoY29sdW1uRmlsdGVyKSA9PiBjb2x1bW5GaWx0ZXIuY29sdW1uRmllbGQgIT09ICdwaWQnKTtcclxuXHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSBbXHJcblx0XHRcdFx0Ly8gLi4uKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzIHx8IFtdKSxcclxuXHRcdFx0XHR7IGNvbHVtbkZpZWxkOiAncGlkJywgdHlwZTogJ2VxJywgZml0ZXI6IHBhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5c1twYXJhbXMucmVxdWVzdC5ncm91cEtleXMubGVuZ3RoIC0gMV0gfSxcclxuXHRcdFx0XTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICghc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnM/LmZpbmQoKGNvbHVtbkZpbHRlcikgPT4gY29sdW1uRmlsdGVyLmNvbHVtbkZpZWxkID09PSAncGlkJykpIHtcclxuXHRcdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IFsuLi4oc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgfHwgW10pLCB7IGNvbHVtbkZpZWxkOiAncGlkJywgdHlwZTogJ2VxJywgZml0ZXI6IDAgfV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHNlYXJjaFBybS5wcmVsb2FkcyA9IFsnY2hpbGRyZW4nXTtcclxuXHR9XHJcblxyXG5cdGdldENsaWVudERhdGEoc2VhcmNoPzogU2VhcmNoKSB7XHJcblx0XHRjb25zdCBzZWFyY2hQcm06IFNlYXJjaCA9IHtcclxuXHRcdFx0Li4udGhpcy5zZWFyY2hQcm0oKSxcclxuXHRcdFx0bGltaXQ6IENMSUVOVExJTUlULFxyXG5cdFx0XHRjb2x1bW5GaWx0ZXJzOiBbLi4uKHRoaXMucmF3UHJtPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgLi4uKHNlYXJjaD8uY29sdW1uRmlsdGVycyB8fCBbXSldLFxyXG5cdFx0XHRzb3J0czogc2VhcmNoPy5zb3J0cz8ubGVuZ3RoID8gc2VhcmNoLnNvcnRzIDogZGVmYXVsdFNvcnRzLFxyXG5cdFx0fTtcclxuXHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gdGhpcy5pc1JhbmdlKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzISkgYXMgQ29sdW1uRmlsdGVyW107XHJcblx0XHR0aGlzLmhhbmRsZUNsaWVudFRyZWUoc2VhcmNoUHJtKTtcclxuXHRcdHRoaXMudG9PcHRpb25zKClcclxuXHRcdFx0LmNsaWVudEZ1bmM/LihzZWFyY2hQcm0pXHJcblx0XHRcdC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5hY3Rpb24uc2V0UGFnZSh7XHJcblx0XHRcdFx0XHR0b3RhbDogcmVzLnRvdGFsTnVtLFxyXG5cdFx0XHRcdFx0bW9kZTogJ2NsaWVudCcsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy5ncmlkPy5hcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIHJlcy5kYXRhIHx8IFtdKTtcclxuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlU2VsZWN0aW9ucygwKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVDbGllbnRUcmVlKHNlYXJjaFBybTogU2VhcmNoKSB7XHJcblx0XHRpZiAoIXRoaXMudG9PcHRpb25zKCkudHJlZURhdGEpIHJldHVybjtcclxuXHRcdGNvbnN0IHByZWxvYWRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnRvT3B0aW9ucygpLnRyZWVMZXZlbCE7IGkrKykge1xyXG5cdFx0XHRwcmVsb2Fkcy5wdXNoKEFycmF5KGkpLmZpbGwoJ2NoaWxkcmVuJykuam9pbignLicpKTtcclxuXHRcdH1cclxuXHRcdHNlYXJjaFBybS5wcmVsb2FkcyA9IHByZWxvYWRzO1xyXG5cdH1cclxuXHJcblx0Y2VsbFZhbHVlQ2hhbmdlZChlOiBDZWxsVmFsdWVDaGFuZ2VkRXZlbnQpIHtcclxuXHRcdGxldCB7XHJcblx0XHRcdGNvbERlZjogeyBmaWVsZCwgaGVhZGVyTmFtZSwgY2VsbEVkaXRvciwgY2VsbEVkaXRvclBhcmFtcyB9LFxyXG5cdFx0XHRuZXdWYWx1ZSxcclxuXHRcdFx0b2xkVmFsdWUsXHJcblx0XHRcdHJvd0luZGV4LFxyXG5cdFx0XHRkYXRhOiB7IGlkIH0sXHJcblx0XHR9ID0gZTtcclxuXHRcdGNvbnNvbGUubG9nKCdlLS0tLS0tJywgZSk7XHJcblx0XHRpZiAoY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgJiYgY2VsbEVkaXRvclBhcmFtcyAmJiBjZWxsRWRpdG9yUGFyYW1zLm11bHRpU2VsZWN0KSB7XHJcblx0XHRcdG5ld1ZhbHVlID0gbmV3VmFsdWUgJiYgbmV3VmFsdWUubGVuZ3RoID4gMCA/IG5ld1ZhbHVlLmpvaW4oJywnKSA6ICcnO1xyXG5cdFx0XHR0aGlzLnJpY2hNdWx0TWFwW2ZpZWxkIV0gPSBuZXdWYWx1ZTtcclxuXHRcdH1cclxuXHRcdGlmICghaWQpIHtcclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgT2JqZWN0LmFzc2lnbih7IC4uLmUuZGF0YSB9LCB0aGlzLnJpY2hNdWx0TWFwKSk7XHJcblx0XHRcdGlmIChmaWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHsgbmV3VmFsdWU6IG5ld1ZhbHVlLCBpZDogMCwgbGFiZWw6IGhlYWRlck5hbWUgfSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoaWQpIHtcclxuXHRcdFx0Y29uc3QgZmllbGRzdHIgPSBgJHtmaWVsZH1gO1xyXG5cdFx0XHRsZXQgbzogYW55O1xyXG5cdFx0XHRpZiAodGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uaGFzKHJvd0luZGV4ISkpIHtcclxuXHRcdFx0XHRvID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZ2V0KHJvd0luZGV4ISk7XHJcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihvLCB7IFtmaWVsZHN0cl06IG5ld1ZhbHVlIH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdG8gPSB7IGlkOiBpZCwgW2ZpZWxkc3RyXTogbmV3VmFsdWUgfTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBvKTtcclxuXHRcdFx0bGV0IG9sZCA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmdldChyb3dJbmRleCEgKyBmaWVsZCEpO1xyXG5cdFx0XHRpZiAob2xkKSB7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIGZpZWxkISwge1xyXG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5ld1ZhbHVlLFxyXG5cdFx0XHRcdFx0b2xkVmFsdWU6IG9sZC5vbGRWYWx1ZSxcclxuXHRcdFx0XHRcdGlkOiBpZCxcclxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHtcclxuXHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdWYWx1ZSxcclxuXHRcdFx0XHRcdG9sZFZhbHVlOiBvbGRWYWx1ZSxcclxuXHRcdFx0XHRcdGlkOiBpZCxcclxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XHJcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcclxuXHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlQWRkZWRSb3dzKGFkZGVkUm93czogYW55W10pIHtcclxuXHRcdGxldCBoZWFkZXJOYW1lID0gJyc7XHJcblx0XHR0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbS5maWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xyXG5cdFx0XHRcdGhlYWRlck5hbWUgPSBpdGVtLmhlYWRlck5hbWU7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0aWYgKHRoaXMuYWRkU29ydCgpKSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdhZGQtLS0tLScsdGhpcy5hZGRTb3J0KCkpXHJcblx0XHRcdC8vIGxldCBsb2cgPSBuZXcgTWFwKClcclxuXHRcdFx0dGhpcy5zZWxlY3REYXRhKCkhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmdyaWQuYXBpLmdldFJlbmRlcmVkTm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSk7XHJcblx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXgocm93RGF0YSwgKHY6IGFueSkgPT4gdlt0aGlzLmFkZFNvcnQoKSFdID09IGl0ZW1bdGhpcy5hZGRTb3J0KCkhXSwgdGhpcyk7XHJcblx0XHRcdFx0bGFzdEluZGV4ID0gbGFzdEluZGV4ID09IC0xID8gcm93RGF0YS5sZW5ndGggLSAxIDogbGFzdEluZGV4O1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZEluZGV4OiBsYXN0SW5kZXggKyAxLCBhZGQ6IFtpdGVtXSB9KTtcclxuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGluZGV4ID0ga2V5Lm1hdGNoKC9eXFxkKy8pWzBdO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2luZGV4LS0tLScsIGluZGV4KTtcclxuXHRcdFx0XHRcdGNvbnN0IGluc2VydEluZGV4ID0gbGFzdEluZGV4ICsgMTtcclxuXHRcdFx0XHRcdGlmIChpbmRleCA9PSBpbnNlcnRJbmRleCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXBsYWNlSW5kZXggPSBpbnNlcnRJbmRleCArIDE7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdLZXkgPSBrZXkucmVwbGFjZSgvXlxcZCsvLCByZXBsYWNlSW5kZXgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQobmV3S2V5LCB2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGxldCBtYXBEYXRhID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZ2V0KGxhc3RJbmRleCArIDEpO1xyXG5cdFx0XHRcdGlmIChtYXBEYXRhKSB7XHJcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUobGFzdEluZGV4ICsgMSk7XHJcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQobGFzdEluZGV4ICsgMiwgbWFwRGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlc3VsdCEuYWRkLmZvckVhY2goKG5vZGU6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0tJyxub2RlKVxyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KG5vZGUucm93SW5kZXgsIG5vZGUuZGF0YSk7XHJcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQobm9kZS5yb3dJbmRleCEgKyB0aGlzLm1haW5GaWVsZCEsIHtcclxuXHRcdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXHJcblx0XHRcdFx0XHRcdGlkOiAwLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdsYXN0SW5kZXgnLGxhc3RJbmRleClcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMuZ3JpZC5hcGkucmVmcmVzaENlbGxzKHtcclxuXHRcdFx0XHRmb3JjZTogdHJ1ZSwgLy8g5by65Yi25Yi35pawXHJcblx0XHRcdFx0c3VwcHJlc3NGbGFzaDogdHJ1ZSwgLy8g6YG/5YWN6Zeq54OBXHJcblx0XHRcdH0pO1xyXG5cdFx0XHQvLyB0aGlzLnVwc2VydCgpIS5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXSA9IGxvZ1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBhZGRlZFJvd3MgfSk7XHJcblx0XHRcdHJlc3VsdCEuYWRkLmZvckVhY2goKG5vZGU6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHJvd0luZGV4ID0gdGhpcy5ncmlkLmFwaS5nZXRSb3dOb2RlKG5vZGUuaWQpPy5yb3dJbmRleDtcclxuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBub2RlLmRhdGEpO1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyB0aGlzLm1haW5GaWVsZCEsIHtcclxuXHRcdFx0XHRcdG5ld1ZhbHVlOiBub2RlLmRhdGFbdGhpcy5tYWluRmllbGRdLFxyXG5cdFx0XHRcdFx0aWQ6IDAsXHJcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XHJcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcclxuXHRcdH0pO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ3Vwc2VydC0tLS0tJyx0aGlzLnVwc2VydCgpKVxyXG5cdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcclxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVEZWxldGVkUm93cyhkZWxldGVkUm93czogYW55W10pIHtcclxuXHRcdGNvbnN0IHJlbW92ZUluZGV4ZXMgPSB0aGlzLmdyaWQuYXBpLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUucm93SW5kZXgpO1xyXG5cdFx0cmVtb3ZlSW5kZXhlcy5mb3JFYWNoKChyb3dJbmRleDogYW55KSA9PiB7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShyb3dJbmRleCEpO1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhKTtcclxuXHRcdH0pO1xyXG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xyXG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XHJcblx0XHR0aGlzLmdyaWQuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IGRlbGV0ZWRSb3dzIH0pO1xyXG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFJvd3NEZWxldGVkKGRlbGV0ZWRSb3dzOiBhbnlbXSkge1xyXG5cdFx0bGV0IGhlYWRlck5hbWUgPSAnJztcclxuXHRcdHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcblx0XHRcdGlmIChpdGVtLmZpZWxkID09IHRoaXMubWFpbkZpZWxkKSB7XHJcblx0XHRcdFx0aGVhZGVyTmFtZSA9IGl0ZW0uaGVhZGVyTmFtZTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdyaWQuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IGRlbGV0ZWRSb3dzIH0pO1xyXG5cdFx0cmVzdWx0Py5yZW1vdmUuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnbm9kZS0tLScsbm9kZS5zb3VyY2VSb3dJbmRleCk7XHJcblx0XHRcdGxldCBrZXkgPSBub2RlLnNvdXJjZVJvd0luZGV4ICsgdGhpcy5tYWluRmllbGQhO1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKG5vZGUuc291cmNlUm93SW5kZXgpO1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmICghdmFsdWUuaWQgJiYga2V5ID4gbm9kZS5zb3VyY2VSb3dJbmRleCkge1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSBrZXkubWF0Y2goL15cXGQrLylbMF07XHJcblx0XHRcdFx0aWYgKCF2YWx1ZS5pZCAmJiBpbmRleCA+IG5vZGUuc291cmNlUm93SW5kZXgpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMuZ3JpZC5hcGkuZm9yRWFjaE5vZGUoKG5vZGU6IGFueSkgPT4ge1xyXG5cdFx0XHRjb25zdCByb3dJbmRleCA9IG5vZGUucm93SW5kZXg7XHJcblx0XHRcdGlmICghbm9kZS5kYXRhLmlkKSB7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbm9kZS5kYXRhKTtcclxuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XHJcblx0XHRcdFx0XHRuZXdWYWx1ZTogbm9kZS5kYXRhW3RoaXMubWFpbkZpZWxkXSxcclxuXHRcdFx0XHRcdGlkOiAwLFxyXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmICh2YWx1ZS5pZCA9PT0gbm9kZS5kYXRhLmlkICYmIGtleSAhPSByb3dJbmRleCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUoa2V5KTtcclxuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4LCB2YWx1ZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmICh2YWx1ZS5pZCA9PSBub2RlLmRhdGEuaWQpIHtcclxuXHRcdFx0XHRcdFx0bGV0IGluZGV4ID0ga2V5Lm1hdGNoKC9eXFxkKy8pWzBdO1xyXG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggIT0gcm93SW5kZXgpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgbmV3S2V5ID0ga2V5LnJlcGxhY2UoL15cXGQrLywgcm93SW5kZXgpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChuZXdLZXksIHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGxldCBkdDogYW55W10gPSBbXTtcclxuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XHJcblx0XHRcdGR0LnB1c2godmFsdWUpO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xyXG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdyZXN1bHQtLS0tLScsIHRoaXMudXBzZXJ0KCkpXHJcblx0fVxyXG5cclxuXHRjbGVhcigpIHtcclxuXHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBbXSk7XHJcblx0XHR0aGlzLnVwc2VydCgpIS5zdWJzZXJ0ID0gW107XHJcblx0fVxyXG5cclxuXHRhZGRSb3coKSB7XHJcblx0XHRpZiAodGhpcy5hZGRUeXBlKCkgPT0gJ2hhbmRsZScpIHtcclxuXHRcdFx0bGV0IGl0ZW0gPSB0eXBlb2YgdGhpcy50b09wdGlvbnMoKS5hZGREYXRhQ2IgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMudG9PcHRpb25zKCkuYWRkRGF0YUNiKCkgOiB7fTtcclxuXHRcdFx0aWYgKHRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCkge1xyXG5cdFx0XHRcdGxldCB0b3RhbENvdW50ID0gdGhpcy5ncmlkLmFwaS5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xyXG5cdFx0XHRcdGl0ZW1bdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV0gPSB0b3RhbENvdW50ICsgMTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmFjdGlvbi51cGRhdGVHcmlkQWN0aW9uKHt0eXBlOidhZGQnLGRhdGE6IFtpdGVtXX0pXHJcblx0XHRcdHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW2l0ZW1dIH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5hZGRFbWl0LmVtaXQoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0fVxyXG5cclxuXHRkZWxSb3dzKCkge1xyXG5cdFx0Y29uc3Qgc2VsZWN0ZWROb2RlcyA9IHRoaXMuZ3JpZC5hcGkuZ2V0U2VsZWN0ZWROb2RlcygpO1xyXG5cdFx0Y29uc3Qgc2VsZWN0ZWREYXRhID0gc2VsZWN0ZWROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSkgfHwgW107XHJcblx0XHRsZXQgaWRzID0gc2VsZWN0ZWREYXRhLm1hcCgoZGF0YSkgPT4gZGF0YS5pZCkuZmlsdGVyKCh2KSA9PiB2KSB8fCBbXTtcclxuXHRcdGlmIChpZHMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLmRlbGV0ZUVtaXQuZW1pdChpZHMpO1xyXG5cdFx0fSBlbHNlIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoID4gMCAmJiBpZHMubGVuZ3RoID09IDApIHtcclxuXHRcdFx0dGhpcy5oYW5kbGVEZWxldGVkUm93cyhzZWxlY3RlZERhdGEpO1xyXG5cdFx0XHR0aGlzLmFjdGlvbi51cGRhdGVHcmlkQWN0aW9uKHt0eXBlOidkZWxldGUnLGRhdGE6IHNlbGVjdGVkRGF0YX0pXHJcblx0XHR9XHJcblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xyXG5cdH1cclxuXHJcblx0c2V0U2Nyb2xsSGVpZ2h0KGhlaWdodD86IHN0cmluZykge1xyXG5cdFx0aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCAmJiB0aGlzLnRvT3B0aW9ucygpLm1haW5GaWVsZCkge1xyXG5cdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtaGVpZ2h0Jyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGhlaWdodCA9IGhlaWdodCB8fCB0aGlzLnRvT3B0aW9ucygpLnNjcm9sbEhlaWdodDtcclxuXHRcdGlmIChoZWlnaHQpIHtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcsIGhlaWdodCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpbml0R3JpZEhlaWdodCgpIHtcclxuXHRcdHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcblx0XHRcdGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmhvcml6b250YWxTY3JvbGxCYXJIZWlnaHQgPSBlbnRyeS50YXJnZXQuY2xpZW50SGVpZ2h0O1xyXG5cdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlci5vYnNlcnZlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1ib2R5LWhvcml6b250YWwtc2Nyb2xsJykpO1xyXG5cdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcblx0XHRcdGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyV2lkdGggPSBlbnRyeS50YXJnZXQuY2xpZW50V2lkdGg7XHJcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlci5vYnNlcnZlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1ib2R5LXZlcnRpY2FsLXNjcm9sbCcpKTtcclxuXHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsICcxMDAlJyk7XHJcblx0XHR0aGlzLnNldFNjcm9sbEhlaWdodCgpO1xyXG5cdH1cclxuXHJcblx0Y2FsY0dyaWRNYXJnaW4oKSB7XHJcblx0XHRjb25zdCBtYXJnaW4gPSB0aGlzLnNob3dBY3QoKSAmJiB0aGlzLmF1dGhMZXZlbCgpID49IDMgJiYgKHRoaXMuYWRkVHlwZSgpICE9ICdub25lJyB8fCB0aGlzLnNob3dEZWxldGUoKSkgPyAyIDogMTtcclxuXHRcdGNvbnN0IGJvcmRlckJvdHRvbSA9IHBhcnNlRmxvYXQoXHJcblx0XHRcdHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1yb290LXdyYXBwZXInKSkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpLFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBNYXRoLm1pbigyLCBtYXJnaW4gKyBib3JkZXJCb3R0b20pO1xyXG5cdH1cclxuXHJcblx0Z2V0Q29udGFpbmVySGVpZ2h0KCkge1xyXG5cdFx0bGV0IGNvbnRhaW5lciA9IHBhcnNlRmxvYXQoXHJcblx0XHRcdHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInKSkuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0JyksXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIGNvbnRhaW5lcjtcclxuXHR9XHJcblxyXG5cdGFqdXN0R3JpZEhlaWdodCgpIHtcclxuXHRcdGxldCBjb250YWluZXIgPSB0aGlzLmdldENvbnRhaW5lckhlaWdodCgpO1xyXG5cdFx0bGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3JpZE9wdGlvbnMoKS5oZWFkZXJIZWlnaHQgPz8gNDk7XHJcblx0XHRsZXQgbWFyZ2luID0gdGhpcy5jYWxjR3JpZE1hcmdpbigpO1xyXG5cdFx0bGV0IHRvdGFsID0gY29udGFpbmVyICsgbWFyZ2luICsgaGVhZGVySGVpZ2h0O1xyXG5cdFx0Y29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgodG90YWwsIGhlYWRlckhlaWdodCArIDQyICsgbWFyZ2luKTtcclxuXHRcdHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCBgJHtoZWlnaHQgKyB0aGlzLmhvcml6b250YWxTY3JvbGxCYXJIZWlnaHR9cHhgKTtcclxuXHRcdFx0dGhpcy5hanVzdEdyaWRTdGF0ZSgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhanVzdEdyaWRTdGF0ZSgpIHtcclxuXHRcdHRoaXMubm9Sb3dzID0gdGhpcy5ncmlkLmFwaS5nZXREaXNwbGF5ZWRSb3dDb3VudCgpID09PSAwO1xyXG5cdFx0dGhpcy5ub1Jvd3MgPyB0aGlzLmdyaWQuYXBpLnNob3dOb1Jvd3NPdmVybGF5KCkgOiB0aGlzLmdyaWQuYXBpLmhpZGVPdmVybGF5KCk7XHJcblx0XHR0aGlzLnNob3dIb3Jpem9udGFsID0gdGhpcy5hY3RQb3MoKSA9PSAnYm90dG9tJyAmJiAodGhpcy5ub1Jvd3MgfHwgISF0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyV2lkdGgpO1xyXG5cdH1cclxuXHJcblx0Y2FuY2VsU2VsZWN0KCkge1xyXG5cdFx0dGhpcy5nZXRHcmlkKCkuYXBpLmRlc2VsZWN0QWxsKCk7XHJcblx0XHR0aGlzLnNlbGVjdGVkUm93cy5zZXQoW10pO1xyXG5cdH1cclxuXHJcblx0ZWRpdGluZ0ZpeCgpIHtcclxuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKCF0aGlzLmdyaWQ/LmFwaT8uZ2V0RWRpdGluZ0NlbGxzKCk/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25zdCBncmlkRWxlbWVudDogYW55ID0gdGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLXJvb3Qtd3JhcHBlcicpO1xyXG5cdFx0XHRpZiAoIWdyaWRFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuXHRcdFx0XHR0aGlzLmdyaWQuYXBpLnN0b3BFZGl0aW5nKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRyb3dEcmFnRW50ZXIoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc29sZS5sb2coJ2V2ZW50LS0tJywgZXZlbnQpO1xyXG5cdFx0dGhpcy5kcmFnQmVmb3JlSW5kZXggPSBldmVudC5vdmVySW5kZXg7XHJcblx0fVxyXG5cclxuXHRvblJvd0RyYWdFbmQoZXZlbnQ6IFJvd0RyYWdFbmRFdmVudCkge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ2V2ZW50LS0tLScsIGV2ZW50Lm5vZGUsZXZlbnQub3Zlck5vZGUpXHJcblx0XHQvLyBjb25zb2xlLmxvZygn5Y6f5aeL57Si5byVLS0tLScsIHRoaXMuZHJhZ0JlZm9yZUluZGV4KVxyXG5cdFx0Ly8gY29uc29sZS5sb2coJ+aLluaLveS5i+WQjue0ouW8lS0tLS0nLGV2ZW50Lm92ZXJJbmRleClcclxuXHRcdGlmICghdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0KSByZXR1cm47XHJcblx0XHRpZiAodGhpcy5kcmFnQmVmb3JlSW5kZXggPT0gZXZlbnQub3ZlckluZGV4KSByZXR1cm47XHJcblx0XHRsZXQgY29sID0gZXZlbnQuYXBpLmdldENvbHVtbkRlZnMoKTtcclxuXHRcdGxldCBjb2xJdGVtOiBhbnkgPSBjb2w/LmZpbmQoKHY6IGFueSkgPT4gdi5maWVsZCA9PT0gdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0ISkgfHwge307XHJcblx0XHQvLyBjb25zb2xlLmxvZyhcInJvd0RhdGEtLS1cIix0aGlzLnJvd0RhdGEoKSlcclxuXHRcdGxldCBtYXAgPSBuZXcgTWFwKCk7XHJcblx0XHRsZXQgbG9nTWFwID0gbmV3IE1hcCgpO1xyXG5cdFx0dGhpcy5ncmlkPy5hcGkuZm9yRWFjaE5vZGUoKG5vZGUsIGluZGV4KSA9PiB7XHJcblx0XHRcdGxldCBpZCA9IG5vZGUuZGF0YS5pZDtcclxuXHRcdFx0bGV0IGlzTW92aW5nRG93biA9IGV2ZW50Lm92ZXJJbmRleCA+IHRoaXMuZHJhZ0JlZm9yZUluZGV4O1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0KGlzTW92aW5nRG93biAmJiBpbmRleCA+PSB0aGlzLmRyYWdCZWZvcmVJbmRleCAmJiBpbmRleCA8PSBldmVudC5vdmVySW5kZXgpIHx8XHJcblx0XHRcdFx0KCFpc01vdmluZ0Rvd24gJiYgaW5kZXggPD0gdGhpcy5kcmFnQmVmb3JlSW5kZXggJiYgaW5kZXggPj0gZXZlbnQub3ZlckluZGV4KVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbm9kZS0tLS0nLG5vZGUuZGF0YSxldmVudC5vdmVySW5kZXgpXHJcblx0XHRcdFx0bGV0IG9sZFZhbHVlO1xyXG5cdFx0XHRcdGlmIChpbmRleCA9PSBldmVudC5vdmVySW5kZXgpIHtcclxuXHRcdFx0XHRcdG9sZFZhbHVlID0gdGhpcy5kcmFnQmVmb3JlSW5kZXg7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdG9sZFZhbHVlID0gaXNNb3ZpbmdEb3duID8gaW5kZXggKyAxIDogaW5kZXggLSAxO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnb2xkSW5kZXgtLS0tJyxvbGRWYWx1ZSlcclxuXHRcdFx0XHRpZiAoIWlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQoXHJcblx0XHRcdFx0XHRcdGluZGV4ISxcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihub2RlLmRhdGEsIHtcclxuXHRcdFx0XHRcdFx0XHRbdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV06IGluZGV4ICsgMSxcclxuXHRcdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRsZXQgbzogYW55O1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmhhcyhvbGRWYWx1ZSEpKSB7XHJcblx0XHRcdFx0XHRcdG8gPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5nZXQob2xkVmFsdWUhKTtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihvLCB7IFt0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhXTogaW5kZXggKyAxIH0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUob2xkVmFsdWUhKTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ28tLS0tJywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSkpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0byA9IHsgaWQ6IGlkLCBbdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV06IGluZGV4ICsgMSB9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bWFwLnNldChpbmRleCEsIG8pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsZXQgb2xkID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZ2V0KG9sZFZhbHVlISArIHRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCEpO1xyXG5cdFx0XHRcdGlmIChvbGQpIHtcclxuXHRcdFx0XHRcdGxvZ01hcC5zZXQoaW5kZXghICsgdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0ISwge1xyXG5cdFx0XHRcdFx0XHRuZXdWYWx1ZTogaW5kZXggKyAxLFxyXG5cdFx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkLm9sZFZhbHVlLFxyXG5cdFx0XHRcdFx0XHRpZDogaWQsXHJcblx0XHRcdFx0XHRcdGxhYmVsOiBjb2xJdGVtWydoZWFkZXJOYW1lJ10gfHwgJ+aOkuW6jycsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShvbGRWYWx1ZSEgKyB0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0bG9nTWFwLnNldChpbmRleCEgKyB0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhISwge1xyXG5cdFx0XHRcdFx0XHRuZXdWYWx1ZTogaW5kZXggKyAxLFxyXG5cdFx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkVmFsdWUgKyAxLFxyXG5cdFx0XHRcdFx0XHRpZDogaWQsXHJcblx0XHRcdFx0XHRcdGxhYmVsOiBjb2xJdGVtWydoZWFkZXJOYW1lJ10gfHwgJ+aOkuW6jycsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0bGV0IGR0OiBhbnkgPSBbXTtcclxuXHRcdGlmICh0aGlzLnVwc2VydCgpKSB7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddID0gbmV3IE1hcChbLi4udGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJyFdLCAuLi5tYXBdKTtcclxuXHRcdFx0dGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPSBuZXcgTWFwKFsuLi50aGlzLnVwc2VydCgpIS5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXSwgLi4ubG9nTWFwXSk7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XHJcblx0XHRcdFx0ZHQucHVzaCh2YWx1ZSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnNvbGUubG9nKCdkcmFnVXBzZXJ0LS0tLScsIHRoaXMudXBzZXJ0KCkpO1xyXG5cdH1cclxuLy8g5pe26Ze06IyD5Zu05re75Yqg5pe25YiG56eSXHJcblx0aXNSYW5nZShjb2x1bW5GaWx0ZXI6Q29sdW1uRmlsdGVyW10pe1xyXG5cdFx0Y29uc3QgaXNFaXhzdCA9IGNvbHVtbkZpbHRlci5zb21lKCh2OmFueSkgPT4gdi50eXBlID09ICdpblJhbmdlJylcclxuXHRcdGlmKGlzRWl4c3Qpe1xyXG5cdFx0XHRsZXQgY29scyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29sdW1uRmlsdGVyKSlcclxuXHRcdFx0Y29scy5mb3JFYWNoKChpdGVtOkNvbHVtbkZpbHRlcikgPT4ge1xyXG5cdFx0XHRcdGlmKGl0ZW0udHlwZSA9PSAnaW5SYW5nZScpe1xyXG5cdFx0XHRcdFx0aXRlbS5mcm9tID0gYCR7aXRlbS5mcm9tfSAwMDowMDowMGBcclxuXHRcdFx0XHRcdGl0ZW0udG8gPSBgJHtpdGVtLnRvfSAyMzo1OTo1OWBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHRcdHJldHVybiBjb2xzXHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29sdW1uRmlsdGVyXHJcblx0fVxyXG59XHJcbiIsIkBpZiAoaW5pdEdyaWQpIHtcclxuXHQ8ZGl2XHJcblx0XHQjZ3JpZENvbnRhaW5lclxyXG5cdFx0W2NsYXNzXT1cIlxyXG5cdFx0XHQodG9PcHRpb25zKCkudHJlZURhdGFGaWVsZCA/ICd0cmVlLWdyaWQgJyA6ICcnKSArXHJcblx0XHRcdCdncmlkLWNvbnRhaW5lciB3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gJyArXHJcblx0XHRcdChhY3RQb3MoKSA9PSAnYm90dG9tJyA/ICdmbGV4LWNvbCcgOiAnZmxleC1jb2wtcmV2ZXJzZScpXHJcblx0XHRcIj5cclxuXHRcdDxhZy1ncmlkLWFuZ3VsYXJcclxuXHRcdFx0W3RoZW1lXT1cIm15VGhlbWUoKVwiXHJcblx0XHRcdFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG5cdFx0XHRbZ3JpZE9wdGlvbnNdPVwidG9PcHRpb25zKClcIlxyXG5cdFx0XHRbbG9jYWxlVGV4dF09XCJsb2NhbGVUZXh0XCJcclxuXHRcdFx0W2NvbXBvbmVudHNdPVwiY29tcG9uZW50c1wiXHJcblx0XHRcdFtzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc109XCJ0cnVlXCJcclxuXHRcdFx0W3VuZG9SZWRvQ2VsbEVkaXRpbmddPVwidG9PcHRpb25zKCkudW5kb1JlZG9DZWxsRWRpdGluZ1wiXHJcblx0XHRcdFt1bmRvUmVkb0NlbGxFZGl0aW5nTGltaXRdPVwidG9PcHRpb25zKCkudW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0XCJcclxuXHRcdFx0KGNlbGxWYWx1ZUNoYW5nZWQpPVwiY2VsbFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0KHNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHQocm93R3JvdXBPcGVuZWQpPVwib25Sb3dHcm91cE9wZW5lZCgpXCJcclxuXHRcdFx0KGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCJcclxuXHRcdFx0KHJvd0RyYWdFbmQpPVwib25Sb3dEcmFnRW5kKCRldmVudClcIlxyXG5cdFx0XHQocm93RHJhZ0VudGVyKT1cInJvd0RyYWdFbnRlcigkZXZlbnQpXCIgLz5cclxuXHRcdEBpZiAoc2hvd0FjdCgpICYmIGF1dGhMZXZlbCgpID49IDMgJiYgKGFkZFR5cGUoKSAhPSAnbm9uZScgfHwgc2hvd0RlbGV0ZSgpKSkge1xyXG5cdFx0XHRAaWYgKHNob3dIb3Jpem9udGFsKSB7XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInctZnVsbCBib3JkZXItdCBib3JkZXItZ3JheS0zMDBcIj48L2Rpdj5cclxuXHRcdFx0fVxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBweS1bNXB4XSBwci1bOHB4XVwiPlxyXG5cdFx0XHRcdEBpZiAoYWRkVHlwZSgpICE9ICdub25lJykge1xyXG5cdFx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRcdGljb249XCJwaSBwaS1wbHVzXCJcclxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdHNldmVyaXR5PVwic3VjY2Vzc1wiXHJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJncmlkRGlzYWJsZSgpXCJcclxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiYWRkUm93KClcIiAvPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRAaWYgKHNob3dEZWxldGUoKSkge1xyXG5cdFx0XHRcdFx0PHAtYnV0dG9uXHJcblx0XHRcdFx0XHRcdGljb249XCJwaSBwaS10cmFzaFwiXHJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cImRhbmdlclwiXHJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJncmlkRGlzYWJsZSgpXCJcclxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiZGVsUm93cygpXCIgLz5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fVxyXG5cdDwvZGl2PlxyXG59XHJcbiJdfQ==
762
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBc0IxRCxNQUFNLGFBQWEsR0FBZ0I7SUFDbEMsOEJBQThCO0lBQzlCLGFBQWEsRUFBRTtRQUNkLElBQUksRUFBRSxD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aUIsRUFBRSxFQUFFO2dCQUNsQyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUE7b0JBQ25DLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUE7Z0JBQ2hDLENBQUM7WUFDRixDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFBO1FBQ1osQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFBO0lBQ3BCLENBQUM7K0dBcHZCVyxhQUFhO21HQUFiLGFBQWEsMDVEQUNkLGFBQWEsMEVBQ2IsYUFBYSwyQkFBVSxVQUFVLDZIQ3hGN0MsMnZEQWdEQSxvMEJEa0NXLGFBQWEsODRSQUFFLFlBQVk7OzRGQUl6QixhQUFhO2tCQVB6QixTQUFTOytCQUNDLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO2tGQUtaLElBQUk7c0JBQTdCLFNBQVM7dUJBQUMsYUFBYTtnQkFDd0IsT0FBTztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNsQixZQUFZO3NCQUF2QyxTQUFTO3VCQUFDLGVBQWU7Z0JBZ0QxQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0Vmlld0NoaWxkLFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0aW5wdXQsXHJcblx0ZWZmZWN0LFxyXG5cdGluamVjdCxcclxuXHRjb21wdXRlZCxcclxuXHR1bnRyYWNrZWQsXHJcblx0b3V0cHV0LFxyXG5cdE5nWm9uZSxcclxuXHRSZW5kZXJlcjIsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0SG9zdExpc3RlbmVyLFxyXG5cdHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2VsbFZhbHVlQ2hhbmdlZEV2ZW50LCBDb2xEZWYsIEdyaWRPcHRpb25zIGFzIFJhd0dyaWRPcHRpb25zLCBSb3dEcmFnRW5kRXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBUaGVtZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RoZW1lQ29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZWFyY2gsQ29sdW1uRmlsdGVyIH0gZnJvbSAnLi4vLi4vYW0vYW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgZ3JpZFV0aWxzIH0gZnJvbSAnLi4vZ3JpZC11dGlscyc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY29tcG9uZW50cywgQ0xJRU5UTElNSVQgfSBmcm9tICcuLi9tb2NrLWRhdGEnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRPcHRpb25zIGV4dGVuZHMgUmF3R3JpZE9wdGlvbnMge1xyXG5cdHNlcnZlckZ1bmM/OiAoc2VhcmNoOiBTZWFyY2gpID0+IE9ic2VydmFibGU8YW55PjtcclxuXHRjbGllbnRGdW5jPzogKHNlYXJjaDogU2VhcmNoKSA9PiBPYnNlcnZhYmxlPGFueT47XHJcblx0c2hvd1NlYXJjaD86IGJvb2xlYW47XHJcblx0cHJlU2VhcmNoPzogU2VhcmNoO1xyXG5cdHRyZWVEYXRhRmllbGQ/OiBzdHJpbmc7XHJcblx0dHJlZUxldmVsPzogbnVtYmVyO1xyXG5cdGhlYWRlckhlaWdodD86IG51bWJlcjtcclxuXHRzY3JvbGxIZWlnaHQ/OiBzdHJpbmc7XHJcblx0c2hvd0luZGV4PzogYm9vbGVhbjtcclxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nPzogYm9vbGVhbjtcclxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nTGltaXQ/OiBudW1iZXI7XHJcblx0bWFpbkZpZWxkPzogc3RyaW5nO1xyXG5cdG1vZGVsTmFtZT86IHN0cmluZztcclxuXHRmaz86IHN0cmluZztcclxuXHRkcmFnU29ydD86IHN0cmluZztcclxuXHRzZWxlY3Rpb25Nb2RlPzogJ25vbmUnIHwgJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xyXG5cdGRhdGFLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IGRlZmF1bHRPcHRpb246IEdyaWRPcHRpb25zID0ge1xyXG5cdC8vIHBvcHVwUGFyZW50OiBkb2N1bWVudC5ib2R5LFxyXG5cdGRlZmF1bHRDb2xEZWY6IHtcclxuXHRcdGZsZXg6IDEsXHJcblx0XHRtaW5XaWR0aDogMTAwLFxyXG5cdFx0c29ydGFibGU6IGZhbHNlLFxyXG5cdFx0ZmlsdGVyOiBmYWxzZSxcclxuXHR9LFxyXG5cdHJvd1NlbGVjdGlvbjogeyBtb2RlOiAnbXVsdGlSb3cnIH0sXHJcblx0cm93TW9kZWxUeXBlOiAnc2VydmVyU2lkZScsXHJcblx0Y2VsbFNlbGVjdGlvbjoge1xyXG5cdFx0aGFuZGxlOiB7XHJcblx0XHRcdG1vZGU6ICdyYW5nZScsXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0ZW5hYmxlQ2hhcnRzOiB0cnVlLFxyXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmc6IHRydWUsXHJcblx0dW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0OiAyMCxcclxufTtcclxuXHJcbmNvbnN0IGRlZmF1bHRTb3J0cyA9IFt7IGZpZWxkOiAnY3JlYXRlZEF0JywgaXNBc2M6IGZhbHNlIH1dO1xyXG5mdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5OiBhbnlbXSwgcHJlZGljYXRlOiBhbnksIHRoaXNBcmc6IGFueSkge1xyXG5cdGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG5cdFx0aWYgKHByZWRpY2F0ZS5jYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpIHtcclxuXHRcdFx0cmV0dXJuIGk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiAtMTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjdXN0b20tZ3JpZCcsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQWdHcmlkQW5ndWxhciwgQnV0dG9uTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL2dyaWQuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCB7XHJcblx0QFZpZXdDaGlsZChBZ0dyaWRBbmd1bGFyKSBncmlkITogQWdHcmlkQW5ndWxhcjtcclxuXHRAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBncmlkUmVmITogRWxlbWVudFJlZjtcclxuXHRAVmlld0NoaWxkKCdncmlkQ29udGFpbmVyJykgY29udGFpbmVyUmVmITogRWxlbWVudFJlZjtcclxuXHRncmlkT3B0aW9ucyA9IGlucHV0PEdyaWRPcHRpb25zPih7fSk7XHJcblx0c2VsZWN0aW9uS2V5cyA9IGlucHV0PGFueVtdPihbXSk7XHJcblx0dG9PcHRpb25zID0gY29tcHV0ZWQoKCkgPT5cclxuXHRcdGdyaWRVdGlscy5tZXJnZU9wdGlvbnMoeyAuLi5kZWZhdWx0T3B0aW9uLCAuLi50aGlzLmdyaWRPcHRpb25zKCkgfSwgdW50cmFja2VkKCgpID0+IHRoaXMuc2VhcmNoUHJtKCkpLmxpbWl0LCB0aGlzLmFjdGlvbiksXHJcblx0KTtcclxuXHR0aGVtZUNvbmZpZyA9IGluamVjdChUaGVtZUNvbmZpZ1NlcnZpY2UpO1xyXG5cdGxvY2FsZVRleHQ6IGFueTtcclxuXHRpMThuU2VydmljZSA9IGluamVjdChJMThuU2VydmljZSk7XHJcblx0bXlUaGVtZSA9IGNvbXB1dGVkKCgpID0+IGdyaWRVdGlscy5nZXRUaGVtZSh0aGlzLnRoZW1lQ29uZmlnKSk7XHJcblx0Y29tcG9uZW50cyA9IGNvbXBvbmVudHM7XHJcblx0Y29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcclxuXHRpbml0R3JpZCA9IHRydWU7XHJcblx0Y29udGVudE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG5cdG1haW5GaWVsZCE6IHN0cmluZztcclxuXHRtb2RlbE5hbWUhOiBzdHJpbmc7XHJcblx0dXBzZXJ0ID0gaW5wdXQ8YW55PigpO1xyXG5cdHN1YkluZGV4ITogbnVtYmVyO1xyXG5cdHJvd0RhdGEgPSBpbnB1dDxhbnk+KHVuZGVmaW5lZCk7XHJcblx0c2VhcmNoUHJtID0gaW5wdXQ8U2VhcmNoPih7fSk7XHJcblx0cmF3UHJtPzogU2VhcmNoO1xyXG5cdGRlbGV0ZUVtaXQgPSBvdXRwdXQ8bnVtYmVyW10+KCk7XHJcblx0YWRkRW1pdCA9IG91dHB1dCgpO1xyXG5cdGFkZFR5cGUgPSBpbnB1dDwnaGFuZGxlJyB8ICdzZWxlY3QnIHwgJ25vbmUnPigpO1xyXG5cdHNlbGVjdERhdGEgPSBpbnB1dDxhbnlbXT4oKTtcclxuXHRzaG93QWN0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0YWN0UG9zID0gaW5wdXQ8J3RvcCcgfCAnYm90dG9tJz4oJ2JvdHRvbScpO1xyXG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xyXG5cdGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcblx0cmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuXHRuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcclxuXHRjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdHNob3dEZWxldGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRncmlkRGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRhZGRTb3J0ID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cclxuXHRyaWNoTXVsdE1hcDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG5cdGhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlcjogYW55O1xyXG5cdGhvcml6b250YWxTY3JvbGxCYXJIZWlnaHQgPSAwO1xyXG5cdHZlcnRpY2FsU2Nyb2xsQmFyT2JzZXJ2ZXI6IGFueTtcclxuXHR2ZXJ0aWNhbFNjcm9sbEJhcldpZHRoID0gMDtcclxuXHRncmlkSGVpZ2h0ID0gMDtcclxuXHRzZWxlY3RlZFJvd3MgPSBzaWduYWw8YW55W10+KFtdKTtcclxuXHRub1Jvd3MgPSB0cnVlO1xyXG5cdHNob3dIb3Jpem9udGFsID0gZmFsc2U7XHJcblx0ZHJhZ0JlZm9yZUluZGV4ID0gLTE7XHJcblxyXG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG5cdG9uUmVzaXplKCkge1xyXG5cdFx0dGhpcy5zZXRTY3JvbGxIZWlnaHQoKTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7XHJcblx0XHRjb25zdCBzZWFyY2hQcm0kID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VhcmNoUHJtKS5zdWJzY3JpYmUoKHNlYXJjaFBybSkgPT4ge1xyXG5cdFx0XHRpZiAoc2VhcmNoUHJtLm1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0dGhpcy5yYXdQcm0gPSBzZWFyY2hQcm07XHJcblx0XHRcdFx0c2VhcmNoUHJtJC51bnN1YnNjcmliZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0YXN5bmMgKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1uRGVmcyA9IGF3YWl0IHRoaXMuc2V0UmljaFZhbHVlKCk7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gZ3JpZFV0aWxzLmhhbmRsZUkxOG5LZXkodGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzISB8fCBbXSwgdGhpcy5pMThuU2VydmljZSk7XHJcblx0XHRcdFx0dGhpcy5tYWluRmllbGQgPSB0aGlzLnRvT3B0aW9ucygpLm1haW5GaWVsZCE7XHJcblx0XHRcdFx0dGhpcy5tb2RlbE5hbWUgPSB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSE7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5maW5kKCh2OiBhbnkpID0+IHYuc3ViTW9kZWxOYW1lID09PSB0aGlzLm1vZGVsTmFtZSkpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRzdWJNb2RlbE5hbWU6IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lLFxyXG5cdFx0XHRcdFx0XHRmazogdGhpcy50b09wdGlvbnMoKS5mayxcclxuXHRcdFx0XHRcdFx0c3ViRGF0YTogW10sXHJcblx0XHRcdFx0XHRcdG1hcHRtcDogbmV3IE1hcCgpLFxyXG5cdFx0XHRcdFx0XHRsb2d0bXA6IG5ldyBNYXAoKSxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnN1YkluZGV4ID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydD8uZmluZEluZGV4KCh2OiBhbnkpID0+IHYuc3ViTW9kZWxOYW1lID09PSB0aGlzLm1vZGVsTmFtZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRpZiAoIXRoaXMuYWN0aW9uLnNlYXJjaE1vbml0b3IodGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUpKSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXHJcblx0XHQpO1xyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMucm93RGF0YSgpID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnRvT3B0aW9ucygpLmNsaWVudEZ1bmMgPSAoKSA9PiBvZih7IGRhdGE6IHRoaXMucm93RGF0YSgpLCB0b3RhbE51bTogdGhpcy5yb3dEYXRhKCk/Lmxlbmd0aCB9KTtcclxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuZ2V0Q2xpZW50RGF0YSh1bmRlZmluZWQpO1xyXG5cdFx0XHRcdH0sIDEwMCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3REYXRhKCkgJiYgdGhpcy5zZWxlY3REYXRhKCkhLmxlbmd0aCA+IDAgJiYgdGhpcy5ncmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUFkZGVkUm93cyh0aGlzLnNlbGVjdERhdGEoKSEpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG5cdFx0KTtcclxuXHRcdGVmZmVjdChcclxuXHRcdFx0KCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKCkucHJlU2VhcmNoICYmXHJcblx0XHRcdFx0XHR0aGlzLmFjdGlvbi5zZXRTZWFyY2goeyBjb2x1bW5GaWx0ZXJzOiB0aGlzLnRvT3B0aW9ucygpLnByZVNlYXJjaCEuY29sdW1uRmlsdGVycyB9LCB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbi5nZXRBY3Rpb24oKTtcclxuXHRcdFx0XHRpZiAoYWN0aW9uPy50eXBlID09PSAnZXhwb3J0Jykge1xyXG5cdFx0XHRcdFx0dGhpcy5ncmlkLmFwaS5leHBvcnREYXRhQXNFeGNlbCh7IGZpbGVOYW1lOiB0aGlzLm1vZGVsTmFtZSB9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcclxuXHRcdCk7XHJcblx0XHR0aGlzLmVkaXRpbmdGaXgoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5pMThuU2VydmljZS5jaGFuZ2Uuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0dGhpcy5ncmlkICYmIHRoaXMuZ3JpZC5hcGkuZGVzdHJveSgpO1xyXG5cdFx0XHR0aGlzLmluaXRHcmlkID0gZmFsc2U7XHJcblx0XHRcdHRoaXMubG9jYWxlVGV4dCA9IGdyaWRVdGlscy5nZXRMb2NhbFRleHQocmVzKTtcclxuXHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gZ3JpZFV0aWxzLmhhbmRsZUkxOG5LZXkodGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzISwgdGhpcy5pMThuU2VydmljZSk7XHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuaW5pdEdyaWQgPSB0cnVlO1xyXG5cdFx0XHR9LCAxMDApO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmxvY2FsZVRleHQgPSBncmlkVXRpbHMuZ2V0TG9jYWxUZXh0KHRoaXMuaTE4blNlcnZpY2UuY3VycmVudExhbmcpO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCkge31cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRpZiAodGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIpIHtcclxuXHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlcikge1xyXG5cdFx0XHR0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0R3JpZCgpOiBBZ0dyaWRBbmd1bGFyIHtcclxuXHRcdHJldHVybiB0aGlzLmdyaWQ7XHJcblx0fVxyXG5cclxuXHRvbkdyaWRSZWFkeShlOiBhbnkpIHtcclxuXHRcdHRoaXMuaW5pdEdyaWRIZWlnaHQoKTtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH0sIDEwMCk7XHJcblx0fVxyXG5cclxuXHRvblNlbGVjdGlvbkNoYW5nZWQoZXZlbnQ6IGFueSk6IGFueSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkUm93cy5zZXQoZ3JpZFV0aWxzLmNhbGNSb3dJZHMoZXZlbnQuYXBpLCB0aGlzLnRvT3B0aW9ucygpPy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnKSk7XHJcblx0fVxyXG5cclxuXHRvblJvd0dyb3VwT3BlbmVkKCkge1xyXG5cdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG5cdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzZXRSaWNoVmFsdWUoKSB7XHJcblx0XHRsZXQgY29sID0gdGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzISB8fCBbXTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHByb2Nlc3NlZENvbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcclxuXHRcdFx0XHRjb2wubWFwKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCdmaWVsZElkJykgJiYgKGl0ZW0uY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgfHwgaXRlbS5jZWxsRWRpdG9yID09ICdhZ1NlbGVjdENlbGxFZGl0b3InKSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzOiBhbnkgPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKCFpdGVtLmNlbGxFZGl0b3JQYXJhbXMgfHwgIWl0ZW0uY2VsbEVkaXRvclBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWVzJykpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0RGF0YScpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBhd2FpdCBpdGVtLnNlbGVjdERhdGEoKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Li4uaXRlbS5jZWxsRWRpdG9yUGFyYW1zLFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0TWF4SGVpZ2h0OiAyMDAsXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLmNlbGxFZGl0b3JQYXJhbXMgJiYgaXRlbS5jZWxsRWRpdG9yUGFyYW1zLmhhc093blByb3BlcnR5KCd2YWx1ZXMnKSkge1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlcyA9IGl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXM7XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlTGlzdE1heEhlaWdodCA9IDIwMDtcclxuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMuc3VwcHJlc3NNdWx0aVNlbGVjdFBpbGxSZW5kZXJlciA9IHRydWU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0bGV0IGlzU3RyaW5nID0gdmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XHJcblx0XHRcdFx0XHRcdGlmICghaXNTdHJpbmcpIHtcclxuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyA9IHZhbHVlcztcclxuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVzID0gdmFsdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRpdGVtLnZhbHVlRm9ybWF0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25zID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLnJhd09wdGlvbnMgYXMgYW55W107XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtcy52YWx1ZSA9PT0gJ251bWJlcicpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5yYXdPcHRpb25zIGFzIGFueVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LnZhbHVlID09IHBhcmFtcy52YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvcHRpb24gPyBvcHRpb24ubGFiZWwgOiBwYXJhbXMudmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdmFsdWVzOiBhbnkgPSBbXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtcy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBwYXJhbXMudmFsdWUuc3BsaXQoJywnKS5tYXAoKHY6IGFueSkgPT4gKCFpc05hTih2KSA/IE51bWJlcih2KSA6IHYpKSB8fCBbXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWVzID0gcGFyYW1zLnZhbHVlIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmlsdGVyKChvcHQpID0+IHZhbHVlcy5pbmNsdWRlcyhvcHQudmFsdWUpKSB8fCBbXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9wdGlvbi5sZW5ndGggPiAwID8gb3B0aW9uLm1hcCgodikgPT4gdi5sYWJlbCkgOiBwYXJhbXMudmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0XHRpdGVtLnZhbHVlR2V0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygncGFtcmFtcy0tLS0nLHBhcmFtcyxpdGVtLmZpZWxkKVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZW0uY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgJiYgcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoaXRlbS5maWVsZCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXSA9PSAnc3RyaW5nJyA/IHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdLnNwbGl0KCcsJykgOiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0udmFsdWVQYXJzZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdwYXJhbXMtLS0tJyxwYXJhbXMpXHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25zID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLnJhd09wdGlvbnMgYXMgYW55W107XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmxhYmVsID09PSBwYXJhbXMubmV3VmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9wdGlvbiA/IG9wdGlvbi52YWx1ZSA6IHBhcmFtcy5uZXdWYWx1ZTtcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXMgPSB2YWx1ZXM7XHJcblx0XHRcdFx0XHRcdFx0aXRlbS52YWx1ZUdldHRlciA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZW0uY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgJiYgcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoaXRlbS5maWVsZCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXSA9PSAnc3RyaW5nJyA/IHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdLnNwbGl0KCcsJykgOiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gaXRlbTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0KTtcclxuXHRcdFx0cmV0dXJuIHByb2Nlc3NlZENvbHM7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGNvbHVtbnM6JywgZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGdldEVudW1zKGlkOiBudW1iZXIpIHtcclxuXHRcdHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0KCdnZXQnLCB7IGlkOiBOdW1iZXIoaWQpLCBtb2RlbE5hbWU6ICdNb2RlbEZpZWxkJywgcHJlbG9hZHM6IFsnRW51bSddIH0pKTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZVNlbGVjdGlvbnMoc3RhcnRSb3c6IG51bWJlcikge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGlvbktleXMoKT8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0Z3JpZFV0aWxzLnNlbGVjdGlvbkhhbmRsZXIodGhpcy5ncmlkLmFwaSwgdGhpcy5zZWxlY3Rpb25LZXlzKCksIHN0YXJ0Um93LCB0aGlzLnRvT3B0aW9ucygpPy5kYXRhS2V5KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXREYXRhKCkge1xyXG5cdFx0dW50cmFja2VkKCgpID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ3RoaXMudG9PcHRpb25zKCknLHRoaXMudG9PcHRpb25zKCkpXHJcblx0XHRcdGlmICghdGhpcy5zZWFyY2hQcm0oKS5tb2RlbE5hbWUgJiYgIXRoaXMucm93RGF0YSgpKSByZXR1cm47XHJcblx0XHRcdHRoaXMuY2FuY2VsU2VsZWN0KCk7XHJcblx0XHRcdGNvbnN0IHNlYXJjaCA9IHRoaXMuYWN0aW9uLmdldFNlYXJjaCh0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSk7XHJcblx0XHRcdHRoaXMudG9PcHRpb25zKCk/LnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScgPyB0aGlzLmdldFNlcnZlckRhdGEoc2VhcmNoKSA6IHRoaXMuZ2V0Q2xpZW50RGF0YShzZWFyY2gpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXRTZXJ2ZXJEYXRhKHNlYXJjaD86IFNlYXJjaCkge1xyXG5cdFx0dGhpcy5ncmlkPy5hcGkuc2V0R3JpZE9wdGlvbignc2VydmVyU2lkZURhdGFzb3VyY2UnLCB7XHJcblx0XHRcdGdldFJvd3M6IChwYXJhbXMpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZWFyY2hQcm06IFNlYXJjaCA9IHtcclxuXHRcdFx0XHRcdC4uLnRoaXMuc2VhcmNoUHJtKCksXHJcblx0XHRcdFx0XHRvZmZzZXQ6IHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93LFxyXG5cdFx0XHRcdFx0Y29sdW1uRmlsdGVyczogWy4uLih0aGlzLnJhd1BybT8uY29sdW1uRmlsdGVycyB8fCBbXSksIC4uLihzZWFyY2g/LmNvbHVtbkZpbHRlcnMgfHwgW10pXSxcclxuXHRcdFx0XHRcdHNvcnRzOiBzZWFyY2g/LnNvcnRzPy5sZW5ndGggPyBzZWFyY2guc29ydHMgOiB0aGlzLnJhd1BybT8uc29ydHM/Lmxlbmd0aCA/IHRoaXMucmF3UHJtLnNvcnRzIDogZGVmYXVsdFNvcnRzLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSB0aGlzLmlzUmFuZ2Uoc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMhKSBhcyBDb2x1bW5GaWx0ZXJbXTtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZVNlcnZlclRyZWUocGFyYW1zLCBzZWFyY2hQcm0pO1xyXG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKClcclxuXHRcdFx0XHRcdC5zZXJ2ZXJGdW5jPy4oc2VhcmNoUHJtKVxyXG5cdFx0XHRcdFx0LnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5hY3Rpb24uc2V0UGFnZSh7XHJcblx0XHRcdFx0XHRcdFx0c3RhcnRSb3c6IHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93LFxyXG5cdFx0XHRcdFx0XHRcdGVuZFJvdzogcGFyYW1zLnJlcXVlc3QuZW5kUm93ISA8IHJlcy50b3RhbE51bSA/IHBhcmFtcy5yZXF1ZXN0LmVuZFJvdyA6IHJlcy50b3RhbE51bSxcclxuXHRcdFx0XHRcdFx0XHR0b3RhbDogcmVzLnRvdGFsTnVtLFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0cGFyYW1zLnN1Y2Nlc3MoeyByb3dEYXRhOiByZXMuZGF0YSB8fCBbXSB9KTtcclxuXHRcdFx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVTZWxlY3Rpb25zKHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93IHx8IDApO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZVNlcnZlclRyZWUocGFyYW1zOiBhbnksIHNlYXJjaFBybTogU2VhcmNoKSB7XHJcblx0XHRpZiAoIXRoaXMudG9PcHRpb25zKCkudHJlZURhdGEpIHJldHVybjtcclxuXHRcdGlmIChwYXJhbXMucmVxdWVzdC5ncm91cEtleXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzPy5maWx0ZXIoKGNvbHVtbkZpbHRlcikgPT4gY29sdW1uRmlsdGVyLmNvbHVtbkZpZWxkICE9PSAncGlkJyk7XHJcblx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gW1xyXG5cdFx0XHRcdC8vIC4uLihzZWFyY2hQcm0uY29sdW1uRmlsdGVycyB8fCBbXSksXHJcblx0XHRcdFx0eyBjb2x1bW5GaWVsZDogJ3BpZCcsIHR5cGU6ICdlcScsIGZpdGVyOiBwYXJhbXMucmVxdWVzdC5ncm91cEtleXNbcGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzLmxlbmd0aCAtIDFdIH0sXHJcblx0XHRcdF07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpZiAoIXNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzPy5maW5kKChjb2x1bW5GaWx0ZXIpID0+IGNvbHVtbkZpbHRlci5jb2x1bW5GaWVsZCA9PT0gJ3BpZCcpKSB7XHJcblx0XHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSBbLi4uKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgeyBjb2x1bW5GaWVsZDogJ3BpZCcsIHR5cGU6ICdlcScsIGZpdGVyOiAwIH1dO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRzZWFyY2hQcm0ucHJlbG9hZHMgPSBbJ2NoaWxkcmVuJ107XHJcblx0fVxyXG5cclxuXHRnZXRDbGllbnREYXRhKHNlYXJjaD86IFNlYXJjaCkge1xyXG5cdFx0Y29uc3Qgc2VhcmNoUHJtOiBTZWFyY2ggPSB7XHJcblx0XHRcdC4uLnRoaXMuc2VhcmNoUHJtKCksXHJcblx0XHRcdGxpbWl0OiBDTElFTlRMSU1JVCxcclxuXHRcdFx0Y29sdW1uRmlsdGVyczogWy4uLih0aGlzLnJhd1BybT8uY29sdW1uRmlsdGVycyB8fCBbXSksIC4uLihzZWFyY2g/LmNvbHVtbkZpbHRlcnMgfHwgW10pXSxcclxuXHRcdFx0c29ydHM6IHNlYXJjaD8uc29ydHM/Lmxlbmd0aCA/IHNlYXJjaC5zb3J0cyA6IGRlZmF1bHRTb3J0cyxcclxuXHRcdH07XHJcblx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHRoaXMuaXNSYW5nZShzZWFyY2hQcm0uY29sdW1uRmlsdGVycyEpIGFzIENvbHVtbkZpbHRlcltdO1xyXG5cdFx0dGhpcy5oYW5kbGVDbGllbnRUcmVlKHNlYXJjaFBybSk7XHJcblx0XHR0aGlzLnRvT3B0aW9ucygpXHJcblx0XHRcdC5jbGllbnRGdW5jPy4oc2VhcmNoUHJtKVxyXG5cdFx0XHQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuYWN0aW9uLnNldFBhZ2Uoe1xyXG5cdFx0XHRcdFx0dG90YWw6IHJlcy50b3RhbE51bSxcclxuXHRcdFx0XHRcdG1vZGU6ICdjbGllbnQnLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCByZXMuZGF0YSB8fCBbXSk7XHJcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZVNlbGVjdGlvbnMoMCk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlQ2xpZW50VHJlZShzZWFyY2hQcm06IFNlYXJjaCkge1xyXG5cdFx0aWYgKCF0aGlzLnRvT3B0aW9ucygpLnRyZWVEYXRhKSByZXR1cm47XHJcblx0XHRjb25zdCBwcmVsb2FkczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy50b09wdGlvbnMoKS50cmVlTGV2ZWwhOyBpKyspIHtcclxuXHRcdFx0cHJlbG9hZHMucHVzaChBcnJheShpKS5maWxsKCdjaGlsZHJlbicpLmpvaW4oJy4nKSk7XHJcblx0XHR9XHJcblx0XHRzZWFyY2hQcm0ucHJlbG9hZHMgPSBwcmVsb2FkcztcclxuXHR9XHJcblxyXG5cdGNlbGxWYWx1ZUNoYW5nZWQoZTogQ2VsbFZhbHVlQ2hhbmdlZEV2ZW50KSB7XHJcblx0XHRsZXQge1xyXG5cdFx0XHRjb2xEZWY6IHsgZmllbGQsIGhlYWRlck5hbWUsIGNlbGxFZGl0b3IsIGNlbGxFZGl0b3JQYXJhbXMgfSxcclxuXHRcdFx0bmV3VmFsdWUsXHJcblx0XHRcdG9sZFZhbHVlLFxyXG5cdFx0XHRyb3dJbmRleCxcclxuXHRcdFx0ZGF0YTogeyBpZCB9LFxyXG5cdFx0fSA9IGU7XHJcblx0XHRjb25zb2xlLmxvZygnZS0tLS0tLScsIGUpO1xyXG5cdFx0aWYgKGNlbGxFZGl0b3IgPT0gJ2FnUmljaFNlbGVjdENlbGxFZGl0b3InICYmIGNlbGxFZGl0b3JQYXJhbXMgJiYgY2VsbEVkaXRvclBhcmFtcy5tdWx0aVNlbGVjdCkge1xyXG5cdFx0XHRuZXdWYWx1ZSA9IG5ld1ZhbHVlICYmIG5ld1ZhbHVlLmxlbmd0aCA+IDAgPyBuZXdWYWx1ZS5qb2luKCcsJykgOiAnJztcclxuXHRcdFx0dGhpcy5yaWNoTXVsdE1hcFtmaWVsZCFdID0gbmV3VmFsdWU7XHJcblx0XHR9XHJcblx0XHRpZiAoIWlkKSB7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCEsIE9iamVjdC5hc3NpZ24oeyAuLi5lLmRhdGEgfSwgdGhpcy5yaWNoTXVsdE1hcCkpO1xyXG5cdFx0XHRpZiAoZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcclxuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgZmllbGQhLCB7IG5ld1ZhbHVlOiBuZXdWYWx1ZSwgaWQ6IDAsIGxhYmVsOiBoZWFkZXJOYW1lIH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGlkKSB7XHJcblx0XHRcdGNvbnN0IGZpZWxkc3RyID0gYCR7ZmllbGR9YDtcclxuXHRcdFx0bGV0IG86IGFueTtcclxuXHRcdFx0aWYgKHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmhhcyhyb3dJbmRleCEpKSB7XHJcblx0XHRcdFx0byA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmdldChyb3dJbmRleCEpO1xyXG5cdFx0XHRcdE9iamVjdC5hc3NpZ24obywgeyBbZmllbGRzdHJdOiBuZXdWYWx1ZSB9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRvID0geyBpZDogaWQsIFtmaWVsZHN0cl06IG5ld1ZhbHVlIH07XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbyk7XHJcblx0XHRcdGxldCBvbGQgPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5nZXQocm93SW5kZXghICsgZmllbGQhKTtcclxuXHRcdFx0aWYgKG9sZCkge1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHtcclxuXHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdWYWx1ZSxcclxuXHRcdFx0XHRcdG9sZFZhbHVlOiBvbGQub2xkVmFsdWUsXHJcblx0XHRcdFx0XHRpZDogaWQsXHJcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgZmllbGQhLCB7XHJcblx0XHRcdFx0XHRuZXdWYWx1ZTogbmV3VmFsdWUsXHJcblx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkVmFsdWUsXHJcblx0XHRcdFx0XHRpZDogaWQsXHJcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xyXG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XHJcblx0XHR0aGlzLmFjdGlvbi5zYXZlU2lnbmFsLnNldCh0cnVlKTtcclxuXHR9XHJcblxyXG5cdGhhbmRsZUFkZGVkUm93cyhhZGRlZFJvd3M6IGFueVtdKSB7XHJcblx0XHRsZXQgaGVhZGVyTmFtZSA9ICcnO1xyXG5cdFx0dGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGl0ZW0uZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcclxuXHRcdFx0XHRoZWFkZXJOYW1lID0gaXRlbS5oZWFkZXJOYW1lO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGlmICh0aGlzLmFkZFNvcnQoKSkge1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnYWRkLS0tLS0nLHRoaXMuYWRkU29ydCgpKVxyXG5cdFx0XHQvLyBsZXQgbG9nID0gbmV3IE1hcCgpXHJcblx0XHRcdHRoaXMuc2VsZWN0RGF0YSgpIS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCByb3dEYXRhID0gdGhpcy5ncmlkLmFwaS5nZXRSZW5kZXJlZE5vZGVzKCkubWFwKChub2RlKSA9PiBub2RlLmRhdGEpO1xyXG5cdFx0XHRcdGxldCBsYXN0SW5kZXggPSBmaW5kTGFzdEluZGV4KHJvd0RhdGEsICh2OiBhbnkpID0+IHZbdGhpcy5hZGRTb3J0KCkhXSA9PSBpdGVtW3RoaXMuYWRkU29ydCgpIV0sIHRoaXMpO1xyXG5cdFx0XHRcdGxhc3RJbmRleCA9IGxhc3RJbmRleCA9PSAtMSA/IHJvd0RhdGEubGVuZ3RoIC0gMSA6IGxhc3RJbmRleDtcclxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdyaWQuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyBhZGRJbmRleDogbGFzdEluZGV4ICsgMSwgYWRkOiBbaXRlbV0gfSk7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdpbmRleC0tLS0nLCBpbmRleCk7XHJcblx0XHRcdFx0XHRjb25zdCBpbnNlcnRJbmRleCA9IGxhc3RJbmRleCArIDE7XHJcblx0XHRcdFx0XHRpZiAoaW5kZXggPT0gaW5zZXJ0SW5kZXgpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmVwbGFjZUluZGV4ID0gaW5zZXJ0SW5kZXggKyAxO1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3S2V5ID0ga2V5LnJlcGxhY2UoL15cXGQrLywgcmVwbGFjZUluZGV4KTtcclxuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5ld0tleSwgdmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRsZXQgbWFwRGF0YSA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmdldChsYXN0SW5kZXggKyAxKTtcclxuXHRcdFx0XHRpZiAobWFwRGF0YSkge1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGxhc3RJbmRleCArIDEpO1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KGxhc3RJbmRleCArIDIsIG1hcERhdGEpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQhLmFkZC5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdub2RlLS0tLScsbm9kZSlcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChub2RlLnJvd0luZGV4LCBub2RlLmRhdGEpO1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5vZGUucm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XHJcblx0XHRcdFx0XHRcdG5ld1ZhbHVlOiBub2RlLmRhdGFbdGhpcy5tYWluRmllbGRdLFxyXG5cdFx0XHRcdFx0XHRpZDogMCxcclxuXHRcdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbGFzdEluZGV4JyxsYXN0SW5kZXgpXHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0aGlzLmdyaWQuYXBpLnJlZnJlc2hDZWxscyh7XHJcblx0XHRcdFx0Zm9yY2U6IHRydWUsIC8vIOW8uuWItuWIt+aWsFxyXG5cdFx0XHRcdHN1cHByZXNzRmxhc2g6IHRydWUsIC8vIOmBv+WFjemXqueDgVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0Ly8gdGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPSBsb2dcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogYWRkZWRSb3dzIH0pO1xyXG5cdFx0XHRyZXN1bHQhLmFkZC5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRjb25zdCByb3dJbmRleCA9IHRoaXMuZ3JpZC5hcGkuZ2V0Um93Tm9kZShub2RlLmlkKT8ucm93SW5kZXg7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbm9kZS5kYXRhKTtcclxuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XHJcblx0XHRcdFx0XHRuZXdWYWx1ZTogbm9kZS5kYXRhW3RoaXMubWFpbkZpZWxkXSxcclxuXHRcdFx0XHRcdGlkOiAwLFxyXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xyXG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XHJcblx0XHR9KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCd1cHNlcnQtLS0tLScsdGhpcy51cHNlcnQoKSlcclxuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XHJcblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlRGVsZXRlZFJvd3MoZGVsZXRlZFJvd3M6IGFueVtdKSB7XHJcblx0XHRjb25zdCByZW1vdmVJbmRleGVzID0gdGhpcy5ncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkubWFwKChub2RlKSA9PiBub2RlLnJvd0luZGV4KTtcclxuXHRcdHJlbW92ZUluZGV4ZXMuZm9yRWFjaCgocm93SW5kZXg6IGFueSkgPT4ge1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUocm93SW5kZXghKTtcclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISk7XHJcblx0XHR9KTtcclxuXHRcdGxldCBkdDogYW55W10gPSBbXTtcclxuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XHJcblx0XHRcdGR0LnB1c2godmFsdWUpO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xyXG5cdFx0dGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgcmVtb3ZlOiBkZWxldGVkUm93cyB9KTtcclxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RSb3dzRGVsZXRlZChkZWxldGVkUm93czogYW55W10pIHtcclxuXHRcdGxldCBoZWFkZXJOYW1lID0gJyc7XHJcblx0XHR0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbS5maWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xyXG5cdFx0XHRcdGhlYWRlck5hbWUgPSBpdGVtLmhlYWRlck5hbWU7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgcmVtb3ZlOiBkZWxldGVkUm93cyB9KTtcclxuXHRcdHJlc3VsdD8ucmVtb3ZlLmZvckVhY2goKG5vZGUpID0+IHtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0nLG5vZGUuc291cmNlUm93SW5kZXgpO1xyXG5cdFx0XHRsZXQga2V5ID0gbm9kZS5zb3VyY2VSb3dJbmRleCArIHRoaXMubWFpbkZpZWxkITtcclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShub2RlLnNvdXJjZVJvd0luZGV4KTtcclxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAoIXZhbHVlLmlkICYmIGtleSA+IG5vZGUuc291cmNlUm93SW5kZXgpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShrZXkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XHJcblx0XHRcdFx0bGV0IGluZGV4ID0ga2V5Lm1hdGNoKC9eXFxkKy8pWzBdO1xyXG5cdFx0XHRcdGlmICghdmFsdWUuaWQgJiYgaW5kZXggPiBub2RlLnNvdXJjZVJvd0luZGV4KSB7XHJcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmdyaWQuYXBpLmZvckVhY2hOb2RlKChub2RlOiBhbnkpID0+IHtcclxuXHRcdFx0Y29uc3Qgcm93SW5kZXggPSBub2RlLnJvd0luZGV4O1xyXG5cdFx0XHRpZiAoIW5vZGUuZGF0YS5pZCkge1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCEsIG5vZGUuZGF0YSk7XHJcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISwge1xyXG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXHJcblx0XHRcdFx0XHRpZDogMCxcclxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT09IG5vZGUuZGF0YS5pZCAmJiBrZXkgIT0gcm93SW5kZXgpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCwgdmFsdWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodmFsdWUuaWQgPT0gbm9kZS5kYXRhLmlkKSB7XHJcblx0XHRcdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ICE9IHJvd0luZGV4KSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IG5ld0tleSA9IGtleS5yZXBsYWNlKC9eXFxkKy8sIHJvd0luZGV4KTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQobmV3S2V5LCB2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XHJcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcclxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0XHQvLyBjb25zb2xlLmxvZygncmVzdWx0LS0tLS0nLCB0aGlzLnVwc2VydCgpKVxyXG5cdH1cclxuXHJcblx0Y2xlYXIoKSB7XHJcblx0XHR0aGlzLmdyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgW10pO1xyXG5cdFx0dGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XSA9IHtcclxuXHRcdFx0c3ViTW9kZWxOYW1lOiB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSxcclxuXHRcdFx0Zms6IHRoaXMudG9PcHRpb25zKCkuZmssXHJcblx0XHRcdHN1YkRhdGE6IFtdLFxyXG5cdFx0XHRtYXB0bXA6IG5ldyBNYXAoKSxcclxuXHRcdFx0bG9ndG1wOiBuZXcgTWFwKCksXHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0YWRkUm93KCkge1xyXG5cdFx0aWYgKHRoaXMuYWRkVHlwZSgpID09ICdoYW5kbGUnKSB7XHJcblx0XHRcdGxldCBpdGVtID0gdHlwZW9mIHRoaXMudG9PcHRpb25zKCkuYWRkRGF0YUNiID09ICdmdW5jdGlvbicgPyB0aGlzLnRvT3B0aW9ucygpLmFkZERhdGFDYigpIDoge307XHJcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQpIHtcclxuXHRcdFx0XHRsZXQgdG90YWxDb3VudCA9IHRoaXMuZ3JpZC5hcGkuZ2V0RGlzcGxheWVkUm93Q291bnQoKTtcclxuXHRcdFx0XHRpdGVtW3RoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCFdID0gdG90YWxDb3VudCArIDE7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5hY3Rpb24udXBkYXRlR3JpZEFjdGlvbih7dHlwZTonYWRkJyxkYXRhOiBbaXRlbV19KVxyXG5cdFx0XHR0aGlzLmdyaWQuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyBhZGQ6IFtpdGVtXSB9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuYWRkRW1pdC5lbWl0KCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xyXG5cdH1cclxuXHJcblx0ZGVsUm93cygpIHtcclxuXHRcdGNvbnN0IHNlbGVjdGVkTm9kZXMgPSB0aGlzLmdyaWQuYXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcclxuXHRcdGNvbnN0IHNlbGVjdGVkRGF0YSA9IHNlbGVjdGVkTm9kZXMubWFwKChub2RlKSA9PiBub2RlLmRhdGEpIHx8IFtdO1xyXG5cdFx0bGV0IGlkcyA9IHNlbGVjdGVkRGF0YS5tYXAoKGRhdGEpID0+IGRhdGEuaWQpLmZpbHRlcigodikgPT4gdikgfHwgW107XHJcblx0XHRpZiAoaWRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5kZWxldGVFbWl0LmVtaXQoaWRzKTtcclxuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCA+IDAgJiYgaWRzLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHRoaXMuaGFuZGxlRGVsZXRlZFJvd3Moc2VsZWN0ZWREYXRhKTtcclxuXHRcdFx0dGhpcy5hY3Rpb24udXBkYXRlR3JpZEFjdGlvbih7dHlwZTonZGVsZXRlJyxkYXRhOiBzZWxlY3RlZERhdGF9KVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcclxuXHR9XHJcblxyXG5cdHNldFNjcm9sbEhlaWdodChoZWlnaHQ/OiBzdHJpbmcpIHtcclxuXHRcdGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMjQgJiYgdGhpcy50b09wdGlvbnMoKS5tYWluRmllbGQpIHtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRoZWlnaHQgPSBoZWlnaHQgfHwgdGhpcy50b09wdGlvbnMoKS5zY3JvbGxIZWlnaHQ7XHJcblx0XHRpZiAoaGVpZ2h0KSB7XHJcblx0XHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudCwgJ21heC1oZWlnaHQnLCBoZWlnaHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aW5pdEdyaWRIZWlnaHQoKSB7XHJcblx0XHR0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xyXG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0ID0gZW50cnkudGFyZ2V0LmNsaWVudEhlaWdodDtcclxuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbCcpKTtcclxuXHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xyXG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcblx0XHRcdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhcldpZHRoID0gZW50cnkudGFyZ2V0LmNsaWVudFdpZHRoO1xyXG5cdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctYm9keS12ZXJ0aWNhbC1zY3JvbGwnKSk7XHJcblx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xyXG5cdFx0dGhpcy5zZXRTY3JvbGxIZWlnaHQoKTtcclxuXHR9XHJcblxyXG5cdGNhbGNHcmlkTWFyZ2luKCkge1xyXG5cdFx0Y29uc3QgbWFyZ2luID0gdGhpcy5zaG93QWN0KCkgJiYgdGhpcy5hdXRoTGV2ZWwoKSA+PSAzICYmICh0aGlzLmFkZFR5cGUoKSAhPSAnbm9uZScgfHwgdGhpcy5zaG93RGVsZXRlKCkpID8gMiA6IDE7XHJcblx0XHRjb25zdCBib3JkZXJCb3R0b20gPSBwYXJzZUZsb2F0KFxyXG5cdFx0XHR3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJykpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSxcclxuXHRcdCk7XHJcblx0XHRyZXR1cm4gTWF0aC5taW4oMiwgbWFyZ2luICsgYm9yZGVyQm90dG9tKTtcclxuXHR9XHJcblxyXG5cdGdldENvbnRhaW5lckhlaWdodCgpIHtcclxuXHRcdGxldCBjb250YWluZXIgPSBwYXJzZUZsb2F0KFxyXG5cdFx0XHR3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctY2VudGVyLWNvbHMtY29udGFpbmVyJykpLmdldFByb3BlcnR5VmFsdWUoJ2hlaWdodCcpLFxyXG5cdFx0KTtcclxuXHRcdHJldHVybiBjb250YWluZXI7XHJcblx0fVxyXG5cclxuXHRhanVzdEdyaWRIZWlnaHQoKSB7XHJcblx0XHRsZXQgY29udGFpbmVyID0gdGhpcy5nZXRDb250YWluZXJIZWlnaHQoKTtcclxuXHRcdGxldCBoZWFkZXJIZWlnaHQgPSB0aGlzLmdyaWRPcHRpb25zKCkuaGVhZGVySGVpZ2h0ID8/IDQ5O1xyXG5cdFx0bGV0IG1hcmdpbiA9IHRoaXMuY2FsY0dyaWRNYXJnaW4oKTtcclxuXHRcdGxldCB0b3RhbCA9IGNvbnRhaW5lciArIG1hcmdpbiArIGhlYWRlckhlaWdodDtcclxuXHRcdGNvbnN0IGhlaWdodCA9IE1hdGgubWF4KHRvdGFsLCBoZWFkZXJIZWlnaHQgKyA0MiArIG1hcmdpbik7XHJcblx0XHR0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7aGVpZ2h0ICsgdGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0fXB4YCk7XHJcblx0XHRcdHRoaXMuYWp1c3RHcmlkU3RhdGUoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0YWp1c3RHcmlkU3RhdGUoKSB7XHJcblx0XHR0aGlzLm5vUm93cyA9IHRoaXMuZ3JpZC5hcGkuZ2V0RGlzcGxheWVkUm93Q291bnQoKSA9PT0gMDtcclxuXHRcdHRoaXMubm9Sb3dzID8gdGhpcy5ncmlkLmFwaS5zaG93Tm9Sb3dzT3ZlcmxheSgpIDogdGhpcy5ncmlkLmFwaS5oaWRlT3ZlcmxheSgpO1xyXG5cdFx0dGhpcy5zaG93SG9yaXpvbnRhbCA9IHRoaXMuYWN0UG9zKCkgPT0gJ2JvdHRvbScgJiYgKHRoaXMubm9Sb3dzIHx8ICEhdGhpcy52ZXJ0aWNhbFNjcm9sbEJhcldpZHRoKTtcclxuXHR9XHJcblxyXG5cdGNhbmNlbFNlbGVjdCgpIHtcclxuXHRcdHRoaXMuZ2V0R3JpZCgpLmFwaS5kZXNlbGVjdEFsbCgpO1xyXG5cdFx0dGhpcy5zZWxlY3RlZFJvd3Muc2V0KFtdKTtcclxuXHR9XHJcblxyXG5cdGVkaXRpbmdGaXgoKSB7XHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogYW55KSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5ncmlkPy5hcGk/LmdldEVkaXRpbmdDZWxscygpPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgZ3JpZEVsZW1lbnQ6IGFueSA9IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1yb290LXdyYXBwZXInKTtcclxuXHRcdFx0aWYgKCFncmlkRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcblx0XHRcdFx0dGhpcy5ncmlkLmFwaS5zdG9wRWRpdGluZygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblx0cm93RHJhZ0VudGVyKGV2ZW50OiBhbnkpIHtcclxuXHRcdGNvbnNvbGUubG9nKCdldmVudC0tLScsIGV2ZW50KTtcclxuXHRcdHRoaXMuZHJhZ0JlZm9yZUluZGV4ID0gZXZlbnQub3ZlckluZGV4O1xyXG5cdH1cclxuXHJcblx0b25Sb3dEcmFnRW5kKGV2ZW50OiBSb3dEcmFnRW5kRXZlbnQpIHtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdldmVudC0tLS0nLCBldmVudC5ub2RlLGV2ZW50Lm92ZXJOb2RlKVxyXG5cdFx0Ly8gY29uc29sZS5sb2coJ+WOn+Wni+e0ouW8lS0tLS0nLCB0aGlzLmRyYWdCZWZvcmVJbmRleClcclxuXHRcdC8vIGNvbnNvbGUubG9nKCfmi5bmi73kuYvlkI7ntKLlvJUtLS0tJyxldmVudC5vdmVySW5kZXgpXHJcblx0XHRpZiAoIXRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCkgcmV0dXJuO1xyXG5cdFx0aWYgKHRoaXMuZHJhZ0JlZm9yZUluZGV4ID09IGV2ZW50Lm92ZXJJbmRleCkgcmV0dXJuO1xyXG5cdFx0bGV0IGNvbCA9IGV2ZW50LmFwaS5nZXRDb2x1bW5EZWZzKCk7XHJcblx0XHRsZXQgY29sSXRlbTogYW55ID0gY29sPy5maW5kKCh2OiBhbnkpID0+IHYuZmllbGQgPT09IHRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCEpIHx8IHt9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coXCJyb3dEYXRhLS0tXCIsdGhpcy5yb3dEYXRhKCkpXHJcblx0XHRsZXQgbWFwID0gbmV3IE1hcCgpO1xyXG5cdFx0bGV0IGxvZ01hcCA9IG5ldyBNYXAoKTtcclxuXHRcdHRoaXMuZ3JpZD8uYXBpLmZvckVhY2hOb2RlKChub2RlLCBpbmRleCkgPT4ge1xyXG5cdFx0XHRsZXQgaWQgPSBub2RlLmRhdGEuaWQ7XHJcblx0XHRcdGxldCBpc01vdmluZ0Rvd24gPSBldmVudC5vdmVySW5kZXggPiB0aGlzLmRyYWdCZWZvcmVJbmRleDtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdChpc01vdmluZ0Rvd24gJiYgaW5kZXggPj0gdGhpcy5kcmFnQmVmb3JlSW5kZXggJiYgaW5kZXggPD0gZXZlbnQub3ZlckluZGV4KSB8fFxyXG5cdFx0XHRcdCghaXNNb3ZpbmdEb3duICYmIGluZGV4IDw9IHRoaXMuZHJhZ0JlZm9yZUluZGV4ICYmIGluZGV4ID49IGV2ZW50Lm92ZXJJbmRleClcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0tJyxub2RlLmRhdGEsZXZlbnQub3ZlckluZGV4KVxyXG5cdFx0XHRcdGxldCBvbGRWYWx1ZTtcclxuXHRcdFx0XHRpZiAoaW5kZXggPT0gZXZlbnQub3ZlckluZGV4KSB7XHJcblx0XHRcdFx0XHRvbGRWYWx1ZSA9IHRoaXMuZHJhZ0JlZm9yZUluZGV4O1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRvbGRWYWx1ZSA9IGlzTW92aW5nRG93biA/IGluZGV4ICsgMSA6IGluZGV4IC0gMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ29sZEluZGV4LS0tLScsb2xkVmFsdWUpXHJcblx0XHRcdFx0aWYgKCFpZCkge1xyXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KFxyXG5cdFx0XHRcdFx0XHRpbmRleCEsXHJcblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24obm9kZS5kYXRhLCB7XHJcblx0XHRcdFx0XHRcdFx0W3RoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCFdOiBpbmRleCArIDEsXHJcblx0XHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0bGV0IG86IGFueTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5oYXMob2xkVmFsdWUhKSkge1xyXG5cdFx0XHRcdFx0XHRvID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZ2V0KG9sZFZhbHVlISk7XHJcblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24obywgeyBbdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV06IGluZGV4ICsgMSB9KTtcclxuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKG9sZFZhbHVlISk7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdvLS0tLScsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdG8gPSB7IGlkOiBpZCwgW3RoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCFdOiBpbmRleCArIDEgfTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdG1hcC5zZXQoaW5kZXghLCBvKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IG9sZCA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmdldChvbGRWYWx1ZSEgKyB0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhKTtcclxuXHRcdFx0XHRpZiAob2xkKSB7XHJcblx0XHRcdFx0XHRsb2dNYXAuc2V0KGluZGV4ISArIHRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCEsIHtcclxuXHRcdFx0XHRcdFx0bmV3VmFsdWU6IGluZGV4ICsgMSxcclxuXHRcdFx0XHRcdFx0b2xkVmFsdWU6IG9sZC5vbGRWYWx1ZSxcclxuXHRcdFx0XHRcdFx0aWQ6IGlkLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogY29sSXRlbVsnaGVhZGVyTmFtZSddIHx8ICfmjpLluo8nLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUob2xkVmFsdWUhICsgdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0ISk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGxvZ01hcC5zZXQoaW5kZXghICsgdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0ISEsIHtcclxuXHRcdFx0XHRcdFx0bmV3VmFsdWU6IGluZGV4ICsgMSxcclxuXHRcdFx0XHRcdFx0b2xkVmFsdWU6IG9sZFZhbHVlICsgMSxcclxuXHRcdFx0XHRcdFx0aWQ6IGlkLFxyXG5cdFx0XHRcdFx0XHRsYWJlbDogY29sSXRlbVsnaGVhZGVyTmFtZSddIHx8ICfmjpLluo8nLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGxldCBkdDogYW55ID0gW107XHJcblx0XHRpZiAodGhpcy51cHNlcnQoKSkge1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpIS5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXSA9IG5ldyBNYXAoWy4uLnRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCchXSwgLi4ubWFwXSk7XHJcblx0XHRcdHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddID0gbmV3IE1hcChbLi4udGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10sIC4uLmxvZ01hcF0pO1xyXG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGR0LnB1c2godmFsdWUpO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zb2xlLmxvZygnZHJhZ1Vwc2VydC0tLS0nLCB0aGlzLnVwc2VydCgpKTtcclxuXHR9XHJcbi8vIOaXtumXtOiMg+WbtOa3u+WKoOaXtuWIhuenklxyXG5cdGlzUmFuZ2UoY29sdW1uRmlsdGVyOkNvbHVtbkZpbHRlcltdKXtcclxuXHRcdGNvbnN0IGlzRWl4c3QgPSBjb2x1bW5GaWx0ZXIuc29tZSgodjphbnkpID0+IHYudHlwZSA9PSAnaW5SYW5nZScpXHJcblx0XHRpZihpc0VpeHN0KXtcclxuXHRcdFx0bGV0IGNvbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbHVtbkZpbHRlcikpXHJcblx0XHRcdGNvbHMuZm9yRWFjaCgoaXRlbTpDb2x1bW5GaWx0ZXIpID0+IHtcclxuXHRcdFx0XHRpZihpdGVtLnR5cGUgPT0gJ2luUmFuZ2UnKXtcclxuXHRcdFx0XHRcdGl0ZW0uZnJvbSA9IGAke2l0ZW0uZnJvbX0gMDA6MDA6MDBgXHJcblx0XHRcdFx0XHRpdGVtLnRvID0gYCR7aXRlbS50b30gMjM6NTk6NTlgXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0XHRyZXR1cm4gY29sc1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbHVtbkZpbHRlclxyXG5cdH1cclxufVxyXG4iLCJAaWYgKGluaXRHcmlkKSB7XHJcblx0PGRpdlxyXG5cdFx0I2dyaWRDb250YWluZXJcclxuXHRcdFtjbGFzc109XCJcclxuXHRcdFx0KHRvT3B0aW9ucygpLnRyZWVEYXRhRmllbGQgPyAndHJlZS1ncmlkICcgOiAnJykgK1xyXG5cdFx0XHQnZ3JpZC1jb250YWluZXIgdy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuICcgK1xyXG5cdFx0XHQoYWN0UG9zKCkgPT0gJ2JvdHRvbScgPyAnZmxleC1jb2wnIDogJ2ZsZXgtY29sLXJldmVyc2UnKVxyXG5cdFx0XCI+XHJcblx0XHQ8YWctZ3JpZC1hbmd1bGFyXHJcblx0XHRcdFt0aGVtZV09XCJteVRoZW1lKClcIlxyXG5cdFx0XHRbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuXHRcdFx0W2dyaWRPcHRpb25zXT1cInRvT3B0aW9ucygpXCJcclxuXHRcdFx0W2xvY2FsZVRleHRdPVwibG9jYWxlVGV4dFwiXHJcblx0XHRcdFtjb21wb25lbnRzXT1cImNvbXBvbmVudHNcIlxyXG5cdFx0XHRbc3VwcHJlc3NEcmFnTGVhdmVIaWRlc0NvbHVtbnNdPVwidHJ1ZVwiXHJcblx0XHRcdFt1bmRvUmVkb0NlbGxFZGl0aW5nXT1cInRvT3B0aW9ucygpLnVuZG9SZWRvQ2VsbEVkaXRpbmdcIlxyXG5cdFx0XHRbdW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0XT1cInRvT3B0aW9ucygpLnVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdFwiXHJcblx0XHRcdChjZWxsVmFsdWVDaGFuZ2VkKT1cImNlbGxWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0KHJvd0dyb3VwT3BlbmVkKT1cIm9uUm93R3JvdXBPcGVuZWQoKVwiXHJcblx0XHRcdChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcblx0XHRcdChyb3dEcmFnRW5kKT1cIm9uUm93RHJhZ0VuZCgkZXZlbnQpXCJcclxuXHRcdFx0KHJvd0RyYWdFbnRlcik9XCJyb3dEcmFnRW50ZXIoJGV2ZW50KVwiIC8+XHJcblx0XHRAaWYgKHNob3dBY3QoKSAmJiBhdXRoTGV2ZWwoKSA+PSAzICYmIChhZGRUeXBlKCkgIT0gJ25vbmUnIHx8IHNob3dEZWxldGUoKSkpIHtcclxuXHRcdFx0QGlmIChzaG93SG9yaXpvbnRhbCkge1xyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLXQgYm9yZGVyLWdyYXktMzAwXCI+PC9kaXY+XHJcblx0XHRcdH1cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgcHktWzVweF0gcHItWzhweF1cIj5cclxuXHRcdFx0XHRAaWYgKGFkZFR5cGUoKSAhPSAnbm9uZScpIHtcclxuXHRcdFx0XHRcdDxwLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRpY29uPVwicGkgcGktcGx1c1wiXHJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxyXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cInN1Y2Nlc3NcIlxyXG5cdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZ3JpZERpc2FibGUoKVwiXHJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cImFkZFJvdygpXCIgLz5cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0QGlmIChzaG93RGVsZXRlKCkpIHtcclxuXHRcdFx0XHRcdDxwLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRpY29uPVwicGkgcGktdHJhc2hcIlxyXG5cdFx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk9XCJkYW5nZXJcIlxyXG5cdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZ3JpZERpc2FibGUoKVwiXHJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cImRlbFJvd3MoKVwiIC8+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHQ8L2Rpdj5cclxufVxyXG4iXX0=