tnx-shared 5.0.36 → 5.0.38

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.component.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["components/dropdown/dropdown.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.component.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["components/dropdown/dropdown.component.ts"],"names":[],"mappings":"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"}
@@ -620,8 +620,9 @@ export class DropdownComponent extends ComponentBase {
620
620
  if (!this.control.isServerLoad) {
621
621
  return;
622
622
  }
623
+ console.log(`default Input ${evt}`);
623
624
  const defaultInput = this.multiSelect.filterInputChild.nativeElement;
624
- console.log(defaultInput);
625
+ console.log(`default Input ${defaultInput}`);
625
626
  this._insertTextboxAndFocus(defaultInput);
626
627
  this.onShowSmartEvent.emit(evt);
627
628
  }
@@ -707,4 +708,4 @@ DropdownComponent.propDecorators = {
707
708
  valueChange: [{ type: Output }],
708
709
  adjustValue: [{ type: Output }]
709
710
  };
710
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFP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QUFNOytCQUNOLE1BQU07c0JBQ04sTUFBTTtxQkFDTixNQUFNO3NCQUNOLE1BQU07aUNBQ04sTUFBTTswQkFDTixNQUFNOzBCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZWxlY3RJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHJvcGRvd24gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7IE11bHRpU2VsZWN0IH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvbXVsdGlzZWxlY3QnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIERyb3Bkb3duT3B0aW9ucywgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZHJvcGRvd24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZHJvcGRvd24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZWwnKSBlbDogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0TWFzaycpIGlucHV0OiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZChEcm9wZG93bikgZHJvcGRvd246IERyb3Bkb3duO1xyXG4gICAgQFZpZXdDaGlsZChNdWx0aVNlbGVjdCkgbXVsdGlTZWxlY3Q6IE11bHRpU2VsZWN0O1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCBzaG93Q2xlYXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29udHJvbC5zaG93Q2xlYXIpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnNob3dDbGVhciA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IGZpbHRlcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLmZpbHRlcikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZmlsdGVyID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQElucHV0KCkgY29udHJvbDogRHJvcGRvd25Db250cm9sU2NoZW1hID0gbmV3IERyb3Bkb3duQ29udHJvbFNjaGVtYSgpO1xyXG4gICAgQElucHV0KCkgZGVmYXVsdExhYmVsID0gJyc7XHJcbiAgICBASW5wdXQoKSBhcHBlbmRUbzogYW55ID0gJ2JvZHknO1xyXG4gICAgQElucHV0KCkgc2V0IGRhdGFTb3VyY2UodmFsdWU6IGFueVtdKSB7XHJcbiAgICAgICAgdGhpcy5iaW5kaW5nRGF0YVNvdXJjZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5fcmV0dXJuVmFsdWUgIT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAvLyBmaXJlIGV2ZW50IMSRaeG7gXUgY2jhu4luaCB2YWx1ZSB04burIFt2YWx1ZTogZ3VpZF0gPT4ge1tmaWVsZFZhbHVlXTogW3ZhbHVlOiBndWlkXSwgLi4uWzEgc+G7kSB0csaw4budbmcga2jDoWMgbuG7r2EgdHJvbmcgZGF0YXNvdXJjZV19XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGRlZmF1bHRTZWxlY3RlZFN0eWxlQ2xhc3MgPSAnY3VzdG9tLXNlbGVjdC1pdGVtJztcclxuICAgIF9pdGVtU2VsZWN0ZWRTdHlsZUNsYXNzID0gdGhpcy5kZWZhdWx0U2VsZWN0ZWRTdHlsZUNsYXNzO1xyXG4gICAgQElucHV0KCkgc2V0IGl0ZW1TZWxlY3RlZFN0eWxlQ2xhc3ModmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9pdGVtU2VsZWN0ZWRTdHlsZUNsYXNzID0gYCR7dGhpcy5kZWZhdWx0U2VsZWN0ZWRTdHlsZUNsYXNzfSAke3ZhbHVlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9pdGVtU2VsZWN0ZWRTdHlsZUNsYXNzID0gYCR7dGhpcy5kZWZhdWx0U2VsZWN0ZWRTdHlsZUNsYXNzfSAke3ZhbHVlfWA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Ecm9wZG93bkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25TaG93ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25TaG93U21hcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uSGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uSGlkZVNtYXJ0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25SZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGF0YVNvdXJjZUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgYWRqdXN0VmFsdWUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBkYXRhU291cmNlSW50ZXJuYWwgPSBbXTtcclxuICAgIHNlbGVjdGVkVmFsdWVCZWZvcmU6IGFueTtcclxuICAgIF92YWx1ZTogYW55O1xyXG4gICAgX3JldHVyblZhbHVlOiBhbnk7XHJcbiAgICBmdW5jUmV0dXJuVmFsdWU6ICh2YWx1ZSkgPT4ge30gPSB2YWx1ZSA9PiB2YWx1ZTtcclxuICAgIHRvb2x0aXA6IHN0cmluZztcclxuICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucyA9ICcxOTVtcyBlYXNlLWluJztcclxuICAgIHNob3dUcmFuc2l0aW9uT3B0aW9ucyA9ICcyMjVtcyBlYXNlLW91dCc7XHJcblxyXG4gICAgaW5wdXRFbG06IGFueTtcclxuICAgIGdldEZpbHRlck9uU2VydmVyU2VhcmNoOiBGdW5jdGlvbjtcclxuICAgIHZhbHVlU2VhcmNoU2VydmVyID0gJyc7XHJcbiAgICBrZXlVcCA9IG5ldyBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+KCk7XHJcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIF9oYXNMb2FkZWREYXRhc291cmNlID0gZmFsc2U7XHJcblxyXG4gICAgc2hvd1F1aWNrQWRkRm9ybSA9IGZhbHNlO1xyXG4gICAgZm9ybU1vZGVsOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmbGFzaENhY2hlUGFyZW50OiBhbnlbXSA9IFtdO1xyXG4gICAgZHJvcGRvd25PcHRpb25zID0gW107XHJcbiAgICBkZWxheUZpbHRlcjogbnVtYmVyID0gMTAwO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2Ryb3BEb3duU2VydmljZTogRHJvcGRvd25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2RldmljZURldGVjdG9yU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLl9jb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wucGxhY2Vob2xkZXIgPT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnBsYWNlaG9sZGVyID0gJ0NoxrBhIGNo4buNbiBi4bqjbiBnaGknO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldERlZmF1bHRTZXR0aW5nKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLmlzU2VydmVyTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWx0ZXJGdW5jdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmtleVVwLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKGV2ZW50ID0+IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2dldERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRyb2wubG9hZE9uSW5pdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVUcmFuc2l0aW9uT3B0aW9ucyA9IHRoaXMuc2hvd1RyYW5zaXRpb25PcHRpb25zID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldERlZmF1bHRTZXR0aW5nKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaXNUcmVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsYXlGaWx0ZXIgPSAyMDA7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLl9wcmVmaXggKyBpdGVtW3RoaXMuY29udHJvbC5kaXNwbGF5RmllbGRdO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsID0gaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy5jb250cm9sLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY29udHJvbC5nZW5lcmF0ZVRvb2x0aXAgJiYgIXRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuZ2VuZXJhdGVUb29sdGlwID0gdGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wucmV0dXJuVHlwZSA9PSAndmFsdWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChpdGVtID0+IGl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSA9IHZhbHVlID0+IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRBbGxQYXJlbnQocmVzdWx0LCBwYXJlbnRJZCkge1xyXG4gICAgICAgIGlmICh0aGlzLmZsYXNoQ2FjaGVQYXJlbnQuc29tZShxID0+IHEudmFsdWUuaWQgPT0gcGFyZW50SWQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbVBhcmVudCA9IHRoaXMuZHJvcGRvd25PcHRpb25zLmZpbmQocSA9PiBxLnZhbHVlLmlkID09IHBhcmVudElkKTtcclxuICAgICAgICBpZiAoaXRlbVBhcmVudCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1BZGQgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pdGVtUGFyZW50LFxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuY29udHJvbC5kaXNhYmxlZFBhcmVudEl0ZW1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbUFkZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4RXhpc3QgPSB0aGlzLmZsYXNoQ2FjaGVQYXJlbnQuZmluZEluZGV4KHEgPT4gcS52YWx1ZS5fbGV2ZWwgPT0gaXRlbUFkZC52YWx1ZS5fbGV2ZWwpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhFeGlzdCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXNoQ2FjaGVQYXJlbnRbaW5kZXhFeGlzdF0gPSBpdGVtQWRkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mbGFzaENhY2hlUGFyZW50LnB1c2goaXRlbUFkZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEzhuqV5IHRow6ptIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNoYVxyXG4gICAgICAgICAgICBwYXJlbnRJZCA9IHRoaXMuZ2V0UGFyZW50SWRGcm9tSXRlbShpdGVtUGFyZW50KTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudElkICE9IHRoaXMuZ3VpZEVtcHR5ICYmIHBhcmVudElkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsUGFyZW50KHJlc3VsdCwgcGFyZW50SWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFscmVhZHlIYXNQYXJlbnQob3B0aW9uczogYW55W10sIGluZGV4U3RhcnQ6IG51bWJlciwgcGFyZW50SWQ6IHN0cmluZywgbGV2ZWw6IG51bWJlcikge1xyXG4gICAgICAgIHdoaWxlIChpbmRleFN0YXJ0ID4gLTEpIHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnNbaW5kZXhTdGFydF0udmFsdWUuaWQgPT0gcGFyZW50SWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnNbaW5kZXhTdGFydF0udmFsdWUubGV2ZWwgPT0gbGV2ZWwgJiYgdGhpcy5nZXRQYXJlbnRJZEZyb21JdGVtKG9wdGlvbnNbaW5kZXhTdGFydF0pICE9IHBhcmVudElkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbGFzaENhY2hlUGFyZW50LnNvbWUocSA9PiBxLnZhbHVlLmlkID09IHBhcmVudElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbmRleFN0YXJ0LS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBhcmVudElkRnJvbUl0ZW0oaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlW3RoaXMuY29udHJvbC5maWVsZFRyZWVdO1xyXG4gICAgfVxyXG5cclxuICAgIG1vZGlmeU9wdGlvbldoZW5GaWx0ZXIgPSAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25PcHRpb25zID0gdGhpcy5kcm9wZG93bi5fb3B0aW9ucztcclxuICAgICAgICB0aGlzLl9tb2RpZnlPcHRpb25XaGVuRmlsdGVyKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vZGlmeU9wdGlvbldoZW5GaWx0ZXJNdWx0aXBsZSA9IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kcm9wZG93bk9wdGlvbnMgPSB0aGlzLm11bHRpU2VsZWN0Ll9vcHRpb25zO1xyXG4gICAgICAgIHRoaXMuX21vZGlmeU9wdGlvbldoZW5GaWx0ZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgX21vZGlmeU9wdGlvbldoZW5GaWx0ZXIob3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuZmxhc2hDYWNoZVBhcmVudCA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IHRoaXMuZ2V0UGFyZW50SWRGcm9tSXRlbShvcHRpb25zW2ldKTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudElkICE9IHRoaXMuZ3VpZEVtcHR5ICYmIHBhcmVudElkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIC8vIEtp4buDbSB0cmEgY8OhYyBi4bqjbiBnaGkgcGjDrWEgdHLGsOG7m2MgeGVtIMSRw6MgY8OzIGLhuqNuIGdoaSBjaGEgY2jGsGEgKENobyDEkeG6v24gZ2hpIGfhurdwIGLhuqNuIGdoaSBjw7luZyBsZXZlbCBuaMawbmcga2jDoWMgcGFyZW50SWQpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNQYXJlbnQgPSB0aGlzLmFscmVhZHlIYXNQYXJlbnQob3B0aW9ucywgaSAtIDEsIHBhcmVudElkLCBvcHRpb25zW2ldLmxldmVsKTtcclxuICAgICAgICAgICAgICAgIGlmICghaGFzUGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxQYXJlbnQocGFyZW50cywgcGFyZW50SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zcGxpY2UoaSwgMCwgLi4ucGFyZW50cy5yZXZlcnNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IHBhcmVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVGaWx0ZXJGdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLnNlYXJjaEZpZWxkID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sLnNlYXJjaEZpZWxkID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLmRpc2FibGVEaXNwbGF5RmllbGRTZXJ2ZXJTZWFyY2gpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuc2VhcmNoRmllbGQuc29tZShpdGVtID0+IGl0ZW0gPT0gdGhpcy5jb250cm9sLmRpc3BsYXlGaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZWFyY2hGaWVsZC5wdXNoKHRoaXMuY29udHJvbC5kaXNwbGF5RmllbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuc2VhcmNoRmllbGQubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJPblNlcnZlclNlYXJjaCA9IHZhbHVlID0+ICh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogdGhpcy5jb250cm9sLnNlYXJjaEZpZWxkWzBdLCBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbiwgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyT25TZXJ2ZXJTZWFyY2ggPSB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ29yJyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGRTZWFyY2ggb2YgdGhpcy5jb250cm9sLnNlYXJjaEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbHRlcnMucHVzaCh7IGZpZWxkOiBmaWVsZFNlYXJjaCwgb3BlcmF0b3I6IE9wZXJhdG9yLmNvbnRhaW4sIHZhbHVlOiB0bXBWYWx1ZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGEoZmlsdGVyUGFyZW50cz86IEZpbHRlcltdKSB7XHJcbiAgICAgICAgdGhpcy5fZ2V0RGF0YShmaWx0ZXJQYXJlbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICBiaW5kaW5nRGF0YVNvdXJjZShuZXdTb3VyY2U6IGFueVtdLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICBsZXQgbmV3TGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgbGV0IGhhdmVTZWxlY3RlZFZhbHVlcyA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgb2xkTGVuZ3RoID0gdGhpcy5fdmFsdWUubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaGF2ZVNlbGVjdGVkVmFsdWVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChuZXdTb3VyY2UgIT0gbnVsbCAmJiBuZXdTb3VyY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbmV3U291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMucmVTdHJ1Y3R1cmVJdGVtT2JqZWN0KGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXZlU2VsZWN0ZWRWYWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEl0ZW0gb2YgdGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZnVuY0NvbXBhcmUoaXRlbS52YWx1ZSwgc2VsZWN0ZWRJdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBzZWxlY3RlZEl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCA9IGFycjtcclxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuY29udHJvbC5ub3RJbkNydWRGb3JtXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5jb250cm9sLmF1dG9EaXNwbGF5Rmlyc3RcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gW2FyclswXS52YWx1ZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgIG5ld0xlbmd0aCA9IG5ld1ZhbHVlLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gW107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2xkTGVuZ3RoICE9IG5ld0xlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fdmFsdWUgIT0gb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAobmV3U291cmNlICE9IG51bGwgJiYgbmV3U291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXJyID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG5ld1NvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLnJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2xkVmFsdWUgIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBvbGRWYWx1ZSAhPT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBvbGRWYWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBvbGRWYWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCA9IGFycjtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuY29udHJvbC5ub3RJbkNydWRGb3JtXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5jb250cm9sLmF1dG9EaXNwbGF5Rmlyc3RcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gYXJyWzBdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIC8vIEzGsHUgw70gaWYg4bufIGTGsOG7m2kga2jDtG5nIMSRxrDhu6NjIMSR4buVaSB0aMOgbmggb2xkVmFsdWUgIT0gdGhpcy5fdmFsdWVcclxuICAgICAgICAgICAgICAgIC8vIFbDrCBnacOhIHRy4buLIGPhu6dhIHRoaXMuX3ZhbHVlIHPhur0gxJHGsOG7o2MgY29ycmVjdGluZyDhu58gdHLDqm4gKGlkID0+IG9iamVjdCkgbsOqbiBzbyBzw6FuaCBz4bq9IGtow6FjIG5oYXVcclxuICAgICAgICAgICAgICAgIGlmICgob2xkVmFsdWUgIT0gbnVsbCAmJiB0aGlzLl92YWx1ZSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IChvbGRWYWx1ZSA9PSBudWxsICYmIHRoaXMuX3ZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcmVDaGFuZ2VkRXZlbnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3ZhbHVlICE9IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZTJXYXlCaW5kaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmb3JjZSB8fCB0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25SZWFkeS5lbWl0KHRoaXMuY29udHJvbC5maWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hlY2tSZWFkeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNlbGVjdGVkVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9sZExlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3TGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2xkTGVuZ3RoID0gdGhpcy5fdmFsdWUubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCAhPSBudWxsICYmIHRoaXMuZGF0YVNvdXJjZUludGVybmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZUludGVybmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkSXRlbSBvZiB0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZnVuY0NvbXBhcmUoaXRlbS52YWx1ZSwgc2VsZWN0ZWRJdGVtKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmNvbnRyb2wuZnVuY0NvbXBhcmUoaXRlbS52YWx1ZSwgc2VsZWN0ZWRJdGVtW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdMZW5ndGggPSBuZXdWYWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChvbGRMZW5ndGggIT0gbmV3TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJlQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlSW50ZXJuYWwgIT0gbnVsbCAmJiB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YVNvdXJjZUludGVybmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBvbGRWYWx1ZSAhPT0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICh0aGlzLmNvbnRyb2wuZnVuY0NvbXBhcmUoaXRlbS52YWx1ZSwgb2xkVmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jb250cm9sLmZ1bmNDb21wYXJlKGl0ZW0udmFsdWUsIG9sZFZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIEzGsHUgw70gaWYg4bufIGTGsOG7m2kga2jDtG5nIMSRxrDhu6NjIMSR4buVaSB0aMOgbmggb2xkVmFsdWUgIT0gdGhpcy5fdmFsdWVcclxuICAgICAgICAgICAgICAgIC8vIFbDrCBnacOhIHRy4buLIGPhu6dhIHRoaXMuX3ZhbHVlIHPhur0gxJHGsOG7o2MgY29ycmVjdGluZyDhu58gdHLDqm4gKGlkID0+IG9iamVjdCkgbsOqbiBzbyBzw6FuaCBz4bq9IGtow6FjIG5oYXVcclxuICAgICAgICAgICAgICAgIGlmICgob2xkVmFsdWUgIT0gbnVsbCAmJiB0aGlzLl92YWx1ZSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHx8IChvbGRWYWx1ZSA9PSBudWxsICYmIHRoaXMuX3ZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcmVDaGFuZ2VkRXZlbnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0VmFsdWUyV2F5QmluZGluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hlY2tSZWFkeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrUmVhZHkoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5vbkFkanVzdGVkVmFsdWVcclxuICAgICAgICAgICAgJiYgdGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZVxyXG4gICAgICAgICAgICAmJiAoKCF0aGlzLmNvbnRyb2wubXVsdGlwbGUgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHx8ICh0aGlzLmNvbnRyb2wubXVsdGlwbGUgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbCAmJiB0aGlzLl92YWx1ZS5sZW5ndGggPiAwKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5maXJlQWRqdXN0VmFsdWVFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk6IFNlbGVjdEl0ZW0ge1xyXG4gICAgICAgIGNvbnN0IHRlbXA6IFNlbGVjdEl0ZW0gPSB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gaXRlbVt0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkXSB8fCBpdGVtWydsYWJlbCddO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZW1wLnZhbHVlLl9kcm9wZG93bnZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlRmllbGQ7XHJcbiAgICAgICAgcmV0dXJuIHRlbXA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRDb250cm9sKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5maXJlQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyRGF0YXNvdXJjZSgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9nZXREYXRhKGZpbHRlclBhcmVudHM/OiBGaWx0ZXJbXSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgaWYgKCFmaWx0ZXJQYXJlbnRzKSBmaWx0ZXJQYXJlbnRzID0gW107XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2dldERhdGFTb3VyY2UoZmlsdGVyUGFyZW50cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2dldERhdGFTb3VyY2UoZmlsdGVyRnJvbVBhcmVudHM6IEZpbHRlcltdKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IGF3YWl0IHRoaXMuZmlsdGVyUHJvY2VzcyhmaWx0ZXJGcm9tUGFyZW50cyk7XHJcbiAgICAgICAgaWYgKGZpbHRlcnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmJpbmRpbmdEYXRhU291cmNlKFtdLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGFTb3VyY2U6IGFueVtdO1xyXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duT3B0aW9ucyA9IHRoaXMuY3JlYXRlRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuZ3JvdXBDb2RlLCBudWxsLCBmaWx0ZXJzLCBkcm9wZG93bk9wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaXNUcmVlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldFRyZWVEYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmllbGRUcmVlLCB0aGlzLmNvbnRyb2wudmFsdWVQYXJlbnRSb290XHJcbiAgICAgICAgICAgICAgICAgICAgLCBkcm9wZG93bk9wdGlvbnNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsIGRyb3Bkb3duT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLl9jcnVkU2VydmljZS5nZXRSZWZEYXRhKGRhdGFTb3VyY2UsIGRyb3Bkb3duT3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5iaW5kaW5nRGF0YVNvdXJjZShkYXRhU291cmNlLCB0cnVlKTtcclxuICAgICAgICAvLyBO4bq/dSBkcm9wZG93biBrIG7hurFtIHRyb25nIGNydWQgZm9ybSB0aMOsIGPhuqV1IGjDrG5oIGZpcmVDYWxsQmFja0luc2lkZSA9IHRydWUgKG3hurdjIMSR4buLbmgpIMSR4buDIGZpcmUgdHLhu7FjIHRp4bq/cCB04burIHRyb25nIGNvbXBvbmVudFxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZmlyZUNhbGxCYWNrSW5zaWRlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuY2FsbGJhY2tEYXRhRmluaXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY2FsbGJhY2tEYXRhRmluaXNoKDxhbnk+e1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGFTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZWxtOiB0aGlzXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbkRhdGFTb3VyY2VMb2FkZWQuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgZWxtOiB0aGlzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGZpbHRlclByb2Nlc3MoZmlsdGVyRnJvbVBhcmVudHM6IEZpbHRlcltdKSB7XHJcbiAgICAgICAgbGV0IGZpbHRlcnMgPSBmaWx0ZXJGcm9tUGFyZW50cztcclxuICAgICAgICBhd2FpdCBhcHBlbmREZWZhdWx0RmlsdGVyKGZpbHRlcnMsIHRoaXMuY29udHJvbC5kZWZhdWx0RmlsdGVycyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaXNTZXJ2ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlU2VhcmNoU2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2godGhpcy5nZXRGaWx0ZXJPblNlcnZlclNlYXJjaCh0aGlzLnZhbHVlU2VhcmNoU2VydmVyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubW9kaWZ5RmlsdGVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFsbG93ID0gYXdhaXQgdGhpcy5jb250cm9sLm1vZGlmeUZpbHRlcihmaWx0ZXJzLCB0aGlzKTtcclxuICAgICAgICAgICAgaWYgKGFsbG93ID09PSBmYWxzZSkgZmlsdGVycyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZURyb3Bkb3duT3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERyb3Bkb3duT3B0aW9ucyh7XHJcbiAgICAgICAgICAgIGZpZWxkUGFyZW50VHJlZUl0ZW06IHRoaXMuY29udHJvbC5maWVsZFBhcmVudFRyZWVJdGVtLFxyXG4gICAgICAgICAgICBkaXNwbGF5RmllbGQ6IHRoaXMuY29udHJvbC5kaXNwbGF5RmllbGQsXHJcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkLFxyXG4gICAgICAgICAgICBmaWVsZFBsdXM6IHRoaXMuY29udHJvbC5maWVsZFBsdXMsXHJcbiAgICAgICAgICAgIGZpZWxkVHJlZTogdGhpcy5jb250cm9sLmZpZWxkVHJlZSxcclxuICAgICAgICAgICAgZnVuY0dldExhYmVsOiB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsLFxyXG4gICAgICAgICAgICBzb3J0czogdGhpcy5jb250cm9sLnNvcnRzLFxyXG4gICAgICAgICAgICBzb3J0RmllbGQ6IHRoaXMuY29udHJvbC5zb3J0RmllbGQsXHJcbiAgICAgICAgICAgIHNvcnREaXI6IHRoaXMuY29udHJvbC5zb3J0RGlyLFxyXG4gICAgICAgICAgICBwbHVzVXJsOiB0aGlzLmNvbnRyb2wucGx1c1VybCxcclxuICAgICAgICAgICAgY2FsbGJhY2tEYXRhRmluaXNoOiB0aGlzLmNvbnRyb2wuY2FsbGJhY2tEYXRhRmluaXNoLFxyXG4gICAgICAgICAgICBpc1NlcnZlckxvYWQ6IHRoaXMuY29udHJvbC5pc1NlcnZlckxvYWQsXHJcbiAgICAgICAgICAgIHJlZkZpZWxkczogdGhpcy5jb250cm9sLnJlZkZpZWxkc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBhbmVsQ2xhc3MoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5hcHBlbmRUbyA9PSAnYm9keScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuY29udHJvbC5wYW5lbENsYXNzfSBwLWZpeGVkYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5wYW5lbENsYXNzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZhbHVlUmV0dXJuKCkge1xyXG4gICAgICAgIHRoaXMuX3JldHVyblZhbHVlID0gdGhpcy5mdW5jUmV0dXJuVmFsdWUodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZ2VuZXJhdGVUb29sdGlwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLmNvbnRyb2wuZ2VuZXJhdGVUb29sdGlwKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXR1cm5WYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja0luaXRlZENvbnRyb2woKSB7XHJcbiAgICAgICAgLy8gTuG6v3UgY2jGsGEgY2jhuqF5IHF1YSBpbml0IHRow6wgayBmaXJlIGV2ZW50IGfDrCBj4bqjXHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jb250cm9sLl9jb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgYWRqdXN0VmFsdWUyV2F5QmluZGluZygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tJbml0ZWRDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2YWx1ZVJldHVybiA9IHRoaXMuZ2V0VmFsdWVSZXR1cm4oKTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWVSZXR1cm4pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpcmVDaGFuZ2VkRXZlbnQoKSB7XHJcbiAgICAgICAgLy8gTuG6v3UgY2jGsGEgY2jhuqF5IHF1YSBpbml0IHRow6wgayBmaXJlIGV2ZW50IGfDrCBj4bqjXHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrSW5pdGVkQ29udHJvbCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlUmV0dXJuKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHZhbHVlUmV0dXJuKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlQWRqdXN0VmFsdWVFdmVudCgpIHtcclxuICAgICAgICAvLyBO4bq/dSBjaMawYSBjaOG6oXkgcXVhIGluaXQgdGjDrCBrIGZpcmUgZXZlbnQgZ8OsIGPhuqNcclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tJbml0ZWRDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2YWx1ZVJldHVybiA9IHRoaXMuZ2V0VmFsdWVSZXR1cm4oKTtcclxuICAgICAgICB0aGlzLmFkanVzdFZhbHVlLm5leHQodmFsdWVSZXR1cm4pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlU2VsZWN0ZWQoZXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuc2VsZWN0Q2hpbGRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJZHMgPSBbZXZlbnQuaXRlbVZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXV07XHJcbiAgICAgICAgICAgICAgICAvLyBO4bq/dSBpdGVtIMSRxrDhu6NjIGNo4buNbiA9PiBDaOG7jW4gY+G6oyBuaOG7r25nIGLhuqNuIGdoaSBjb25cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZS5pbmRleE9mKGV2ZW50Lml0ZW1WYWx1ZSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsLmZvckVhY2goc291cmNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50SWQgPSBzb3VyY2UudmFsdWVbdGhpcy5jb250cm9sLmZpZWxkVHJlZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRJZHMuaW5kZXhPZihwYXJlbnRJZCkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlLmluZGV4T2Yoc291cmNlLnZhbHVlKSA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlLnB1c2goc291cmNlLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkcy5wdXNoKHBhcmVudElkLCBzb3VyY2UudmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7IC8vIGl0ZW0gxJFhbmcgYuG7iyBi4buPIGNo4buNbiA9PiBo4buneSBjaOG7jW4gY+G6oyBuaOG7r25nIGLhuqNuIGdoaSBjb25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbC5mb3JFYWNoKHNvdXJjZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gc291cmNlLnZhbHVlW3RoaXMuY29udHJvbC5maWVsZFRyZWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50SWRzLmluZGV4T2YocGFyZW50SWQpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fdmFsdWUuaW5kZXhPZihzb3VyY2UudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWRzLnB1c2gocGFyZW50SWQsIHNvdXJjZS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlSXRlbShldnQsIHNlbGVjdGVkSXRlbSkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX3ZhbHVlLmZpbHRlcihpdGVtID0+IGl0ZW0gIT0gc2VsZWN0ZWRJdGVtKTtcclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VkRXZlbnQoKTtcclxuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUJlZm9yZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgIHRoaXMub25IaWRlU21hcnRFdmVudC5lbWl0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ecm9wZG93bkNsaWNrSGFuZGxlcihldnQpIHtcclxuICAgICAgICB0aGlzLm9uRHJvcGRvd25DbGljay5uZXh0KGV2dCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGljaygkZXZlbnQpIHtcclxuICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpJyAmJiAkZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndWktZHJvcGRvd24tY2xlYXItaWNvbicpKSB7XHJcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgJGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvd0hhbmRsZXIoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vblNob3cuZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgZXZlbnQ6IGV2dFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLmlzU2VydmVyTG9hZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRJbnB1dCA9IHRoaXMuZHJvcGRvd24uZmlsdGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5faW5zZXJ0VGV4dGJveEFuZEZvY3VzKGRlZmF1bHRJbnB1dCk7XHJcbiAgICAgICAgdGhpcy5vblNob3dTbWFydEV2ZW50LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBvblBhbmVsU2hvd0hhbmRsZXIoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vblNob3cuZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICAgICAgZXZlbnQ6IGV2dFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUJlZm9yZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLmlzU2VydmVyTG9hZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRJbnB1dCA9IHRoaXMubXVsdGlTZWxlY3QuZmlsdGVySW5wdXRDaGlsZC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRlZmF1bHRJbnB1dCk7XHJcbiAgICAgICAgdGhpcy5faW5zZXJ0VGV4dGJveEFuZEZvY3VzKGRlZmF1bHRJbnB1dCk7XHJcbiAgICAgICAgdGhpcy5vblNob3dTbWFydEV2ZW50LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9pbnNlcnRUZXh0Ym94QW5kRm9jdXMoZGVmYXVsdElucHV0KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUnKTtcclxuICAgICAgICAvLyBkZWZhdWx0SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGRlZmF1bHRJbnB1dC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRJbnB1dCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25IaWRlSGFuZGxlcihldnQpIHtcclxuICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICBldmVudDogZXZ0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlQmVmb3JlICE9IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlQmVmb3JlID09IG51bGwgJiYgdGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVCZWZvcmUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVCZWZvcmUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlU21hcnRFdmVudC5lbWl0KGV2dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRm9jdXMoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVCbHVyKGV2dCkge1xyXG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93Rm9ybVF1aWNrQWRkKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLmRhdGEgPSB7IC4uLnRoaXMuY29udHJvbC5pbml0RGF0YSB9O1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLmZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5BREQ7XHJcbiAgICAgICAgdGhpcy5zaG93UXVpY2tBZGRGb3JtID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDYW5jZWwoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UXVpY2tBZGRGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU2F2ZWQoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UXVpY2tBZGRGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
711
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFP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QUs7cUNBWUwsS0FBSzt3QkFTTCxNQUFNOzhCQUNOLE1BQU07cUJBQ04sTUFBTTsrQkFDTixNQUFNO3FCQUNOLE1BQU07K0JBQ04sTUFBTTtzQkFDTixNQUFNO3FCQUNOLE1BQU07c0JBQ04sTUFBTTtpQ0FDTixNQUFNOzBCQUNOLE1BQU07MEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEcm9wZG93biB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgTXVsdGlTZWxlY3QgfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9tdWx0aXNlbGVjdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRHJvcGRvd25PcHRpb25zLCBPcGVyYXRvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZm9ybS1zY2hlbWEnO1xyXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhcHBlbmREZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29tbW9uJztcclxuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kcm9wZG93bi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdkcm9wZG93bicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdlbCcpIGVsOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRNYXNrJykgaW5wdXQ6IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKERyb3Bkb3duKSBkcm9wZG93bjogRHJvcGRvd247XHJcbiAgICBAVmlld0NoaWxkKE11bHRpU2VsZWN0KSBtdWx0aVNlbGVjdDogTXVsdGlTZWxlY3Q7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IHNob3dDbGVhcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLnNob3dDbGVhcikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2hvd0NsZWFyID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpIGRpc2FibGVEaXNwbGF5RmllbGRTZXJ2ZXJTZWFyY2ggPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBzZXQgZmlsdGVyKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuZmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5maWx0ZXIgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBjb250cm9sOiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgPSBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKCk7XHJcbiAgICBASW5wdXQoKSBkZWZhdWx0TGFiZWwgPSAnJztcclxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnkgPSAnYm9keSc7XHJcbiAgICBASW5wdXQoKSBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogYW55W10pIHtcclxuICAgICAgICB0aGlzLmJpbmRpbmdEYXRhU291cmNlKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXR1cm5WYWx1ZSAhPSB2YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIC8vIGZpcmUgZXZlbnQgxJFp4buBdSBjaOG7iW5oIHZhbHVlIHThu6sgW3ZhbHVlOiBndWlkXSA9PiB7W2ZpZWxkVmFsdWVdOiBbdmFsdWU6IGd1aWRdLCAuLi5bMSBz4buRIHRyxrDhu51uZyBraMOhYyBu4buvYSB0cm9uZyBkYXRhc291cmNlXX1cclxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGVmYXVsdFNlbGVjdGVkU3R5bGVDbGFzcyA9ICdjdXN0b20tc2VsZWN0LWl0ZW0nO1xyXG4gICAgX2l0ZW1TZWxlY3RlZFN0eWxlQ2xhc3MgPSB0aGlzLmRlZmF1bHRTZWxlY3RlZFN0eWxlQ2xhc3M7XHJcbiAgICBASW5wdXQoKSBzZXQgaXRlbVNlbGVjdGVkU3R5bGVDbGFzcyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZWxlY3RlZFN0eWxlQ2xhc3MgPSBgJHt0aGlzLmRlZmF1bHRTZWxlY3RlZFN0eWxlQ2xhc3N9ICR7dmFsdWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1TZWxlY3RlZFN0eWxlQ2xhc3MgPSBgJHt0aGlzLmRlZmF1bHRTZWxlY3RlZFN0eWxlQ2xhc3N9ICR7dmFsdWV9YDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRyb3Bkb3duQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNob3dTbWFydEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25IaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25IaWRlU21hcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25EYXRhU291cmNlTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBhZGp1c3RWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGRhdGFTb3VyY2VJbnRlcm5hbCA9IFtdO1xyXG4gICAgc2VsZWN0ZWRWYWx1ZUJlZm9yZTogYW55O1xyXG4gICAgX3ZhbHVlOiBhbnk7XHJcbiAgICBfcmV0dXJuVmFsdWU6IGFueTtcclxuICAgIGZ1bmNSZXR1cm5WYWx1ZTogKHZhbHVlKSA9PiB7fSA9IHZhbHVlID0+IHZhbHVlO1xyXG4gICAgdG9vbHRpcDogc3RyaW5nO1xyXG4gICAgaGlkZVRyYW5zaXRpb25PcHRpb25zID0gJzE5NW1zIGVhc2UtaW4nO1xyXG4gICAgc2hvd1RyYW5zaXRpb25PcHRpb25zID0gJzIyNW1zIGVhc2Utb3V0JztcclxuXHJcbiAgICBpbnB1dEVsbTogYW55O1xyXG4gICAgZ2V0RmlsdGVyT25TZXJ2ZXJTZWFyY2g6IEZ1bmN0aW9uO1xyXG4gICAgdmFsdWVTZWFyY2hTZXJ2ZXIgPSAnJztcclxuICAgIGtleVVwID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRFdmVudD4oKTtcclxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgX2hhc0xvYWRlZERhdGFzb3VyY2UgPSBmYWxzZTtcclxuXHJcbiAgICBzaG93UXVpY2tBZGRGb3JtID0gZmFsc2U7XHJcbiAgICBmb3JtTW9kZWw6IGFueSA9IHt9O1xyXG5cclxuICAgIGZsYXNoQ2FjaGVQYXJlbnQ6IGFueVtdID0gW107XHJcbiAgICBkcm9wZG93bk9wdGlvbnMgPSBbXTtcclxuICAgIGRlbGF5RmlsdGVyOiBudW1iZXIgPSAxMDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfZHJvcERvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5wbGFjZWhvbGRlciA9PSBudWxsICYmIHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wucGxhY2Vob2xkZXIgPSAnQ2jGsGEgY2jhu41uIGLhuqNuIGdoaSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFNldHRpbmcoKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaXNTZXJ2ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlckZ1bmN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMua2V5VXAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoZXZlbnQgPT4gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldERhdGEoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZ2V0RGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY29udHJvbC5sb2FkT25Jbml0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9nZXREYXRhKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZVRyYW5zaXRpb25PcHRpb25zID0gdGhpcy5zaG93VHJhbnNpdGlvbk9wdGlvbnMgPSAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFNldHRpbmcoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5pc1RyZWUpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWxheUZpbHRlciA9IDIwMDtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsID0gaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uX3ByZWZpeCArIGl0ZW1bdGhpcy5jb250cm9sLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwgPSBpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jb250cm9sLmdlbmVyYXRlVG9vbHRpcCAmJiAhdGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5nZW5lcmF0ZVRvb2x0aXAgPSB0aGlzLmNvbnRyb2wuZnVuY0dldExhYmVsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5yZXR1cm5UeXBlID09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY1JldHVyblZhbHVlID0gdmFsdWUgPT4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbFBhcmVudChyZXN1bHQsIHBhcmVudElkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmxhc2hDYWNoZVBhcmVudC5zb21lKHEgPT4gcS52YWx1ZS5pZCA9PSBwYXJlbnRJZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpdGVtUGFyZW50ID0gdGhpcy5kcm9wZG93bk9wdGlvbnMuZmluZChxID0+IHEudmFsdWUuaWQgPT0gcGFyZW50SWQpO1xyXG4gICAgICAgIGlmIChpdGVtUGFyZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbUFkZCA9IHtcclxuICAgICAgICAgICAgICAgIC4uLml0ZW1QYXJlbnQsXHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5jb250cm9sLmRpc2FibGVkUGFyZW50SXRlbVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChpdGVtQWRkKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhFeGlzdCA9IHRoaXMuZmxhc2hDYWNoZVBhcmVudC5maW5kSW5kZXgocSA9PiBxLnZhbHVlLl9sZXZlbCA9PSBpdGVtQWRkLnZhbHVlLl9sZXZlbCk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEV4aXN0ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmxhc2hDYWNoZVBhcmVudFtpbmRleEV4aXN0XSA9IGl0ZW1BZGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXNoQ2FjaGVQYXJlbnQucHVzaChpdGVtQWRkKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gTOG6pXkgdGjDqm0gYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY2hhXHJcbiAgICAgICAgICAgIHBhcmVudElkID0gdGhpcy5nZXRQYXJlbnRJZEZyb21JdGVtKGl0ZW1QYXJlbnQpO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50SWQgIT0gdGhpcy5ndWlkRW1wdHkgJiYgcGFyZW50SWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxQYXJlbnQocmVzdWx0LCBwYXJlbnRJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWxyZWFkeUhhc1BhcmVudChvcHRpb25zOiBhbnlbXSwgaW5kZXhTdGFydDogbnVtYmVyLCBwYXJlbnRJZDogc3RyaW5nLCBsZXZlbDogbnVtYmVyKSB7XHJcbiAgICAgICAgd2hpbGUgKGluZGV4U3RhcnQgPiAtMSkge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9uc1tpbmRleFN0YXJ0XS52YWx1ZS5pZCA9PSBwYXJlbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9uc1tpbmRleFN0YXJ0XS52YWx1ZS5sZXZlbCA9PSBsZXZlbCAmJiB0aGlzLmdldFBhcmVudElkRnJvbUl0ZW0ob3B0aW9uc1tpbmRleFN0YXJ0XSkgIT0gcGFyZW50SWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYXNoQ2FjaGVQYXJlbnQuc29tZShxID0+IHEudmFsdWUuaWQgPT0gcGFyZW50SWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGluZGV4U3RhcnQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0UGFyZW50SWRGcm9tSXRlbShpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWVbdGhpcy5jb250cm9sLmZpZWxkVHJlZV07XHJcbiAgICB9XHJcblxyXG4gICAgbW9kaWZ5T3B0aW9uV2hlbkZpbHRlciA9IChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kcm9wZG93bk9wdGlvbnMgPSB0aGlzLmRyb3Bkb3duLl9vcHRpb25zO1xyXG4gICAgICAgIHRoaXMuX21vZGlmeU9wdGlvbldoZW5GaWx0ZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgbW9kaWZ5T3B0aW9uV2hlbkZpbHRlck11bHRpcGxlID0gKG9wdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duT3B0aW9ucyA9IHRoaXMubXVsdGlTZWxlY3QuX29wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5fbW9kaWZ5T3B0aW9uV2hlbkZpbHRlcihvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBfbW9kaWZ5T3B0aW9uV2hlbkZpbHRlcihvcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5mbGFzaENhY2hlUGFyZW50ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy5nZXRQYXJlbnRJZEZyb21JdGVtKG9wdGlvbnNbaV0pO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50SWQgIT0gdGhpcy5ndWlkRW1wdHkgJiYgcGFyZW50SWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50cyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSBjw6FjIGLhuqNuIGdoaSBwaMOtYSB0csaw4bubYyB4ZW0gxJHDoyBjw7MgYuG6o24gZ2hpIGNoYSBjaMawYSAoQ2hvIMSR4bq/biBnaGkgZ+G6t3AgYuG6o24gZ2hpIGPDuW5nIGxldmVsIG5oxrBuZyBraMOhYyBwYXJlbnRJZClcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BhcmVudCA9IHRoaXMuYWxyZWFkeUhhc1BhcmVudChvcHRpb25zLCBpIC0gMSwgcGFyZW50SWQsIG9wdGlvbnNbaV0ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNQYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbFBhcmVudChwYXJlbnRzLCBwYXJlbnRJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNwbGljZShpLCAwLCAuLi5wYXJlbnRzLnJldmVyc2UoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gcGFyZW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbHRlckZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuc2VhcmNoRmllbGQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2VhcmNoRmllbGQgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuZGlzYWJsZURpc3BsYXlGaWVsZFNlcnZlclNlYXJjaCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbC5zZWFyY2hGaWVsZC5zb21lKGl0ZW0gPT4gaXRlbSA9PSB0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnNlYXJjaEZpZWxkLnB1c2godGhpcy5jb250cm9sLmRpc3BsYXlGaWVsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5zZWFyY2hGaWVsZC5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlck9uU2VydmVyU2VhcmNoID0gdmFsdWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiB0aGlzLmNvbnRyb2wuc2VhcmNoRmllbGRbMF0sIG9wZXJhdG9yOiBPcGVyYXRvci5jb250YWluLCB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodmFsdWUpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJPblNlcnZlclNlYXJjaCA9IHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnb3InLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRtcFZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZFNlYXJjaCBvZiB0aGlzLmNvbnRyb2wuc2VhcmNoRmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsdGVycy5wdXNoKHsgZmllbGQ6IGZpZWxkU2VhcmNoLCBvcGVyYXRvcjogT3BlcmF0b3IuY29udGFpbiwgdmFsdWU6IHRtcFZhbHVlIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YShmaWx0ZXJQYXJlbnRzPzogRmlsdGVyW10pIHtcclxuICAgICAgICB0aGlzLl9nZXREYXRhKGZpbHRlclBhcmVudHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGJpbmRpbmdEYXRhU291cmNlKG5ld1NvdXJjZTogYW55W10sIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgbGV0IG9sZExlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIGxldCBuZXdMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICBsZXQgaGF2ZVNlbGVjdGVkVmFsdWVzID0gdHJ1ZTtcclxuICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gW107XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiB0aGlzLl92YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBvbGRMZW5ndGggPSB0aGlzLl92YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBoYXZlU2VsZWN0ZWRWYWx1ZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG5ld1NvdXJjZSAhPSBudWxsICYmIG5ld1NvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBuZXdTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5yZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVTZWxlY3RlZFZhbHVlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkSXRlbSBvZiB0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBzZWxlY3RlZEl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jb250cm9sLmZ1bmNDb21wYXJlKGl0ZW0udmFsdWUsIHNlbGVjdGVkSXRlbVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gYXJyO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlLmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5jb250cm9sLm5vdEluQ3J1ZEZvcm1cclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLmNvbnRyb2wuYXV0b0Rpc3BsYXlGaXJzdFxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBbYXJyWzBdLnZhbHVlXTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgbmV3TGVuZ3RoID0gbmV3VmFsdWUubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvbGRMZW5ndGggIT0gbmV3TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJlQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl92YWx1ZSAhPSBvbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0VmFsdWUyV2F5QmluZGluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChuZXdTb3VyY2UgIT0gbnVsbCAmJiBuZXdTb3VyY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbmV3U291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMucmVTdHJ1Y3R1cmVJdGVtT2JqZWN0KGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG9sZFZhbHVlICE9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAodGhpcy5jb250cm9sLmZ1bmNDb21wYXJlKGl0ZW0udmFsdWUsIG9sZFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jb250cm9sLmZ1bmNDb21wYXJlKGl0ZW0udmFsdWUsIG9sZFZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gYXJyO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5jb250cm9sLm5vdEluQ3J1ZEZvcm1cclxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLmNvbnRyb2wuYXV0b0Rpc3BsYXlGaXJzdFxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcnJbMF0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gTMawdSDDvSBpZiDhu58gZMaw4bubaSBraMO0bmcgxJHGsOG7o2MgxJHhu5VpIHRow6BuaCBvbGRWYWx1ZSAhPSB0aGlzLl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgLy8gVsOsIGdpw6EgdHLhu4sgY+G7p2EgdGhpcy5fdmFsdWUgc+G6vSDEkcaw4bujYyBjb3JyZWN0aW5nIOG7nyB0csOqbiAoaWQgPT4gb2JqZWN0KSBuw6puIHNvIHPDoW5oIHPhur0ga2jDoWMgbmhhdVxyXG4gICAgICAgICAgICAgICAgaWYgKChvbGRWYWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgKG9sZFZhbHVlID09IG51bGwgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fdmFsdWUgIT0gb2xkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZvcmNlIHx8IHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5vblJlYWR5LmVtaXQodGhpcy5jb250cm9sLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja1JlYWR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRWYWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2xkTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdMZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBvbGRMZW5ndGggPSB0aGlzLl92YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZUludGVybmFsICE9IG51bGwgJiYgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRJdGVtIG9mIHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBzZWxlY3RlZEl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBzZWxlY3RlZEl0ZW1bdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xlbmd0aCA9IG5ld1ZhbHVlLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG9sZExlbmd0aCAhPSBuZXdMZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcmVDaGFuZ2VkRXZlbnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0VmFsdWUyV2F5QmluZGluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCAhPSBudWxsICYmIHRoaXMuZGF0YVNvdXJjZUludGVybmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlICE9IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG9sZFZhbHVlICE9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHRoaXMuY29udHJvbC5mdW5jQ29tcGFyZShpdGVtLnZhbHVlLCBvbGRWYWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmNvbnRyb2wuZnVuY0NvbXBhcmUoaXRlbS52YWx1ZSwgb2xkVmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gaXRlbS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gTMawdSDDvSBpZiDhu58gZMaw4bubaSBraMO0bmcgxJHGsOG7o2MgxJHhu5VpIHRow6BuaCBvbGRWYWx1ZSAhPSB0aGlzLl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgLy8gVsOsIGdpw6EgdHLhu4sgY+G7p2EgdGhpcy5fdmFsdWUgc+G6vSDEkcaw4bujYyBjb3JyZWN0aW5nIOG7nyB0csOqbiAoaWQgPT4gb2JqZWN0KSBuw6puIHNvIHPDoW5oIHPhur0ga2jDoWMgbmhhdVxyXG4gICAgICAgICAgICAgICAgaWYgKChvbGRWYWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgKG9sZFZhbHVlID09IG51bGwgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZTJXYXlCaW5kaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja1JlYWR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSZWFkeSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm9uQWRqdXN0ZWRWYWx1ZVxyXG4gICAgICAgICAgICAmJiB0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlXHJcbiAgICAgICAgICAgICYmICgoIXRoaXMuY29udHJvbC5tdWx0aXBsZSAmJiB0aGlzLl92YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgfHwgKHRoaXMuY29udHJvbC5tdWx0aXBsZSAmJiB0aGlzLl92YWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlLmxlbmd0aCA+IDApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmZpcmVBZGp1c3RWYWx1ZUV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlU3RydWN0dXJlSXRlbU9iamVjdChpdGVtKTogU2VsZWN0SXRlbSB7XHJcbiAgICAgICAgY29uc3QgdGVtcDogU2VsZWN0SXRlbSA9IHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0sXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbCkge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gdGhpcy5jb250cm9sLmZ1bmNHZXRMYWJlbChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRlbXAubGFiZWwgPSBpdGVtW3RoaXMuY29udHJvbC5kaXNwbGF5RmllbGRdIHx8IGl0ZW1bJ2xhYmVsJ107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRlbXAudmFsdWUuX2Ryb3Bkb3dudmFsdWUgPSB0aGlzLmNvbnRyb2wudmFsdWVGaWVsZDtcclxuICAgICAgICByZXR1cm4gdGVtcDtcclxuICAgIH1cclxuXHJcbiAgICByZXNldENvbnRyb2woKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZpcmVDaGFuZ2VkRXZlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJEYXRhc291cmNlKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gW107XHJcbiAgICAgICAgdGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2dldERhdGEoZmlsdGVyUGFyZW50cz86IEZpbHRlcltdKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICBpZiAoIWZpbHRlclBhcmVudHMpIGZpbHRlclBhcmVudHMgPSBbXTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0RGF0YVNvdXJjZShmaWx0ZXJQYXJlbnRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0RGF0YVNvdXJjZShmaWx0ZXJGcm9tUGFyZW50czogRmlsdGVyW10pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gYXdhaXQgdGhpcy5maWx0ZXJQcm9jZXNzKGZpbHRlckZyb21QYXJlbnRzKTtcclxuICAgICAgICBpZiAoZmlsdGVycyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmluZGluZ0RhdGFTb3VyY2UoW10sIGZhbHNlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YVNvdXJjZTogYW55W107XHJcbiAgICAgICAgY29uc3QgZHJvcGRvd25PcHRpb25zID0gdGhpcy5jcmVhdGVEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlIGluc3RhbmNlb2YgTWFzdGVyRGF0YVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZSA9IGF3YWl0IHRoaXMuY29udHJvbC5iYXNlU2VydmljZS5nZXREYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5ncm91cENvZGUsIG51bGwsIGZpbHRlcnMsIGRyb3Bkb3duT3B0aW9uc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5pc1RyZWUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UuZ2V0VHJlZURhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsIHRoaXMuY29udHJvbC5maWVsZFRyZWUsIHRoaXMuY29udHJvbC52YWx1ZVBhcmVudFJvb3RcclxuICAgICAgICAgICAgICAgICAgICAsIGRyb3Bkb3duT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycywgZHJvcGRvd25PcHRpb25zXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuX2NydWRTZXJ2aWNlLmdldFJlZkRhdGEoZGF0YVNvdXJjZSwgZHJvcGRvd25PcHRpb25zKTtcclxuICAgICAgICB0aGlzLmJpbmRpbmdEYXRhU291cmNlKGRhdGFTb3VyY2UsIHRydWUpO1xyXG4gICAgICAgIC8vIE7hur91IGRyb3Bkb3duIGsgbuG6sW0gdHJvbmcgY3J1ZCBmb3JtIHRow6wgY+G6pXUgaMOsbmggZmlyZUNhbGxCYWNrSW5zaWRlID0gdHJ1ZSAobeG6t2MgxJHhu4tuaCkgxJHhu4MgZmlyZSB0cuG7sWMgdGnhur9wIHThu6sgdHJvbmcgY29tcG9uZW50XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5maXJlQ2FsbEJhY2tJbnNpZGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2goPGFueT57XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICBlbG06IHRoaXNcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uRGF0YVNvdXJjZUxvYWRlZC5lbWl0KHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBlbG06IHRoaXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZmlsdGVyUHJvY2VzcyhmaWx0ZXJGcm9tUGFyZW50czogRmlsdGVyW10pIHtcclxuICAgICAgICBsZXQgZmlsdGVycyA9IGZpbHRlckZyb21QYXJlbnRzO1xyXG4gICAgICAgIGF3YWl0IGFwcGVuZERlZmF1bHRGaWx0ZXIoZmlsdGVycywgdGhpcy5jb250cm9sLmRlZmF1bHRGaWx0ZXJzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5pc1NlcnZlckxvYWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWVTZWFyY2hTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaCh0aGlzLmdldEZpbHRlck9uU2VydmVyU2VhcmNoKHRoaXMudmFsdWVTZWFyY2hTZXJ2ZXIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tb2RpZnlGaWx0ZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgYWxsb3cgPSBhd2FpdCB0aGlzLmNvbnRyb2wubW9kaWZ5RmlsdGVyKGZpbHRlcnMsIHRoaXMpO1xyXG4gICAgICAgICAgICBpZiAoYWxsb3cgPT09IGZhbHNlKSBmaWx0ZXJzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlRHJvcGRvd25PcHRpb25zKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRHJvcGRvd25PcHRpb25zKHtcclxuICAgICAgICAgICAgZmllbGRQYXJlbnRUcmVlSXRlbTogdGhpcy5jb250cm9sLmZpZWxkUGFyZW50VHJlZUl0ZW0sXHJcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5jb250cm9sLmRpc3BsYXlGaWVsZCxcclxuICAgICAgICAgICAgdmFsdWVGaWVsZDogdGhpcy5jb250cm9sLnZhbHVlRmllbGQsXHJcbiAgICAgICAgICAgIGZpZWxkUGx1czogdGhpcy5jb250cm9sLmZpZWxkUGx1cyxcclxuICAgICAgICAgICAgZmllbGRUcmVlOiB0aGlzLmNvbnRyb2wuZmllbGRUcmVlLFxyXG4gICAgICAgICAgICBmdW5jR2V0TGFiZWw6IHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwsXHJcbiAgICAgICAgICAgIHNvcnRzOiB0aGlzLmNvbnRyb2wuc29ydHMsXHJcbiAgICAgICAgICAgIHNvcnRGaWVsZDogdGhpcy5jb250cm9sLnNvcnRGaWVsZCxcclxuICAgICAgICAgICAgc29ydERpcjogdGhpcy5jb250cm9sLnNvcnREaXIsXHJcbiAgICAgICAgICAgIHBsdXNVcmw6IHRoaXMuY29udHJvbC5wbHVzVXJsLFxyXG4gICAgICAgICAgICBjYWxsYmFja0RhdGFGaW5pc2g6IHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2gsXHJcbiAgICAgICAgICAgIGlzU2VydmVyTG9hZDogdGhpcy5jb250cm9sLmlzU2VydmVyTG9hZCxcclxuICAgICAgICAgICAgcmVmRmllbGRzOiB0aGlzLmNvbnRyb2wucmVmRmllbGRzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGFuZWxDbGFzcygpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLmFwcGVuZFRvID09ICdib2R5Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5jb250cm9sLnBhbmVsQ2xhc3N9IHAtZml4ZWRgO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sLnBhbmVsQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFsdWVSZXR1cm4oKSB7XHJcbiAgICAgICAgdGhpcy5fcmV0dXJuVmFsdWUgPSB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5nZW5lcmF0ZVRvb2x0aXApIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMuY29udHJvbC5nZW5lcmF0ZVRvb2x0aXAodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLnRvb2x0aXAgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JldHVyblZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSW5pdGVkQ29udHJvbCgpIHtcclxuICAgICAgICAvLyBO4bq/dSBjaMawYSBjaOG6oXkgcXVhIGluaXQgdGjDrCBrIGZpcmUgZXZlbnQgZ8OsIGPhuqNcclxuICAgICAgICByZXR1cm4gISF0aGlzLmNvbnRyb2wuX2NvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICBhZGp1c3RWYWx1ZTJXYXlCaW5kaW5nKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja0luaXRlZENvbnRyb2woKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyZUNoYW5nZWRFdmVudCgpIHtcclxuICAgICAgICAvLyBO4bq/dSBjaMawYSBjaOG6oXkgcXVhIGluaXQgdGjDrCBrIGZpcmUgZXZlbnQgZ8OsIGPhuqNcclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tJbml0ZWRDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2YWx1ZVJldHVybiA9IHRoaXMuZ2V0VmFsdWVSZXR1cm4oKTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWVSZXR1cm4pO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VkLm5leHQodmFsdWVSZXR1cm4pO1xyXG4gICAgfVxyXG5cclxuICAgIGZpcmVBZGp1c3RWYWx1ZUV2ZW50KCkge1xyXG4gICAgICAgIC8vIE7hur91IGNoxrBhIGNo4bqheSBxdWEgaW5pdCB0aMOsIGsgZmlyZSBldmVudCBnw6wgY+G6o1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja0luaXRlZENvbnRyb2woKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMuYWRqdXN0VmFsdWUubmV4dCh2YWx1ZVJldHVybik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2VTZWxlY3RlZChldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5zZWxlY3RDaGlsZEl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudElkcyA9IFtldmVudC5pdGVtVmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdXTtcclxuICAgICAgICAgICAgICAgIC8vIE7hur91IGl0ZW0gxJHGsOG7o2MgY2jhu41uID0+IENo4buNbiBj4bqjIG5o4buvbmcgYuG6o24gZ2hpIGNvblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlLmluZGV4T2YoZXZlbnQuaXRlbVZhbHVlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlSW50ZXJuYWwuZm9yRWFjaChzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IHNvdXJjZS52YWx1ZVt0aGlzLmNvbnRyb2wuZmllbGRUcmVlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudElkcy5pbmRleE9mKHBhcmVudElkKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUuaW5kZXhPZihzb3VyY2UudmFsdWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUucHVzaChzb3VyY2UudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWRzLnB1c2gocGFyZW50SWQsIHNvdXJjZS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHsgLy8gaXRlbSDEkWFuZyBi4buLIGLhu48gY2jhu41uID0+IGjhu6d5IGNo4buNbiBj4bqjIG5o4buvbmcgYuG6o24gZ2hpIGNvblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsLmZvckVhY2goc291cmNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50SWQgPSBzb3VyY2UudmFsdWVbdGhpcy5jb250cm9sLmZpZWxkVHJlZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRJZHMuaW5kZXhPZihwYXJlbnRJZCkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl92YWx1ZS5pbmRleE9mKHNvdXJjZS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZHMucHVzaChwYXJlbnRJZCwgc291cmNlLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2VkRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVJdGVtKGV2dCwgc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fdmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPSBzZWxlY3RlZEl0ZW0pO1xyXG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQmVmb3JlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbkhpZGVTbWFydEV2ZW50LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyb3Bkb3duQ2xpY2tIYW5kbGVyKGV2dCkge1xyXG4gICAgICAgIHRoaXMub25Ecm9wZG93bkNsaWNrLm5leHQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCRldmVudCkge1xyXG4gICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2knICYmICRldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCd1aS1kcm9wZG93bi1jbGVhci1pY29uJykpIHtcclxuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAkZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TaG93SGFuZGxlcihldnQpIHtcclxuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICBldmVudDogZXZ0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuaXNTZXJ2ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdElucHV0ID0gdGhpcy5kcm9wZG93bi5maWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB0aGlzLl9pbnNlcnRUZXh0Ym94QW5kRm9jdXMoZGVmYXVsdElucHV0KTtcclxuICAgICAgICB0aGlzLm9uU2hvd1NtYXJ0RXZlbnQuZW1pdChldnQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUGFuZWxTaG93SGFuZGxlcihldnQpIHtcclxuICAgICAgICB0aGlzLm9uU2hvdy5lbWl0KHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICBldmVudDogZXZ0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlQmVmb3JlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wuaXNTZXJ2ZXJMb2FkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coYGRlZmF1bHQgSW5wdXQgJHtldnR9YCk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdElucHV0ID0gdGhpcy5tdWx0aVNlbGVjdC5maWx0ZXJJbnB1dENoaWxkLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc29sZS5sb2coYGRlZmF1bHQgSW5wdXQgJHtkZWZhdWx0SW5wdXR9YCk7XHJcbiAgICAgICAgdGhpcy5faW5zZXJ0VGV4dGJveEFuZEZvY3VzKGRlZmF1bHRJbnB1dCk7XHJcbiAgICAgICAgdGhpcy5vblNob3dTbWFydEV2ZW50LmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9pbnNlcnRUZXh0Ym94QW5kRm9jdXMoZGVmYXVsdElucHV0KSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGUnKTtcclxuICAgICAgICAvLyBkZWZhdWx0SW5wdXQuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGRlZmF1bHRJbnB1dC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRJbnB1dCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25IaWRlSGFuZGxlcihldnQpIHtcclxuICAgICAgICB0aGlzLm9uSGlkZS5lbWl0KHtcclxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgICAgICBldmVudDogZXZ0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlQmVmb3JlICE9IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlQmVmb3JlID09IG51bGwgJiYgdGhpcy5fdmFsdWUgJiYgdGhpcy5fdmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVCZWZvcmUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVCZWZvcmUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25IaWRlU21hcnRFdmVudC5lbWl0KGV2dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRm9jdXMoZXZ0KSB7XHJcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVCbHVyKGV2dCkge1xyXG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZ0KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93Rm9ybVF1aWNrQWRkKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLmRhdGEgPSB7IC4uLnRoaXMuY29udHJvbC5pbml0RGF0YSB9O1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLmZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5BREQ7XHJcbiAgICAgICAgdGhpcy5zaG93UXVpY2tBZGRGb3JtID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDYW5jZWwoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UXVpY2tBZGRGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU2F2ZWQoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UXVpY2tBZGRGb3JtID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,12 +1,11 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Injectable } from '@angular/core';
3
- import signalR_ from '@aspnet/signalr';
3
+ import * as signalR from '@aspnet/signalr';
4
4
  import { ModuleConfigService } from './module-config.service';
5
5
  import { AuthenService } from './authen.service';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./module-config.service";
8
8
  import * as i2 from "./authen.service";
9
- const signalR = signalR_;
10
9
  export class SignalRService {
11
10
  constructor(_moduleConfigService, _authenService) {
12
11
  this._moduleConfigService = _moduleConfigService;
@@ -148,4 +147,4 @@ SignalRService.ctorParameters = () => [
148
147
  { type: ModuleConfigService },
149
148
  { type: AuthenService }
150
149
  ];
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3NpZ25hbHIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFDakQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBSXpCLE1BQU0sT0FBTyxjQUFjO0lBaUJ2QixZQUNZLG9CQUF5QyxFQUN6QyxjQUE2QjtRQUQ3Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBZnpDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBbUhYLFNBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBdkdyRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDekUsQ0FBQztJQUVLLElBQUk7O1lBQ04sSUFBSSxJQUFJLENBQUMsV0FBVyxJ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QUFFLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RixhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9CO0lBQ0wsQ0FBQzs7OztZQXZLSixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQUxRLG1CQUFtQjtZQUNuQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uIH0gZnJvbSAnQGFzcG5ldC9zaWduYWxyJztcclxuaW1wb3J0IHNpZ25hbFJfIGZyb20gJ0Bhc3BuZXQvc2lnbmFscic7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZ3MvbW9kdWxlLWNvbmZpZyc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlblNlcnZpY2UgfSBmcm9tICcuL2F1dGhlbi5zZXJ2aWNlJztcclxuY29uc3Qgc2lnbmFsUiA9IHNpZ25hbFJfO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ25hbFJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnO1xyXG4gICAgcHJpdmF0ZSBfaHViQ29ubmVjdGlvbjogSHViQ29ubmVjdGlvbjtcclxuXHJcbiAgICBjb25uZWN0aW9ucyA9IFtdO1xyXG4gICAgaHVicyA9IHt9O1xyXG4gICAgZGVsYXlTdGFydGVycyA9IFtdO1xyXG4gICAgY29ubmVjdGVkID0gZmFsc2U7XHJcblxyXG4gICAgbWF4UmV0cnlUaW1lcyA9IDEwO1xyXG4gICAgdmlld0NvZGVTdWJzOiB7XHJcbiAgICAgICAgdmlld0NvZGU6IHN0cmluZyxcclxuICAgICAgICBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZFxyXG4gICAgfVtdO1xyXG5cclxuICAgIGh1YnNTZXR0aW5nOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9hdXRoZW5TZXJ2aWNlOiBBdXRoZW5TZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLl9tb2R1bGVDb25maWcgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xyXG4gICAgICAgIHRoaXMuaHVic1NldHRpbmcgPSB0aGlzLl9tb2R1bGVDb25maWcuZW52aXJvbm1lbnQuc2lnbmFsckNvbmZpZy5odWJzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaHVic1NldHRpbmcgJiYgdGhpcy5odWJzU2V0dGluZy5lbmFibGVDb21tb25IdWIpIHtcclxuICAgICAgICAgICAgdGhpcy5odWJzWydDb21tb25IdWInXSA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbignQ29tbW9uSHViJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRDb25uZWN0aW9uKHRoaXMuaHVic1snQ29tbW9uSHViJ10pO1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9SZWNvbm5lY3QodGhpcy5odWJzWydDb21tb25IdWInXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5odWJzU2V0dGluZyAmJiB0aGlzLmh1YnNTZXR0aW5nLmVuYWJsZUNvbnNpc3RlbmN5SHViKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaHVic1snQ29uc2lzdGVuY3lIdWInXSA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbignQ29uc2lzdGVuY3lIdWInKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydENvbm5lY3Rpb24odGhpcy5odWJzWydDb25zaXN0ZW5jeUh1YiddKTtcclxuICAgICAgICAgICAgdGhpcy5hdXRvUmVjb25uZWN0KHRoaXMuaHVic1snQ29uc2lzdGVuY3lIdWInXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5odWJzU2V0dGluZyAmJiB0aGlzLmh1YnNTZXR0aW5nLmVuYWJsZU5vdGlmaWNhdGlvbkh1Yikge1xyXG4gICAgICAgICAgICB0aGlzLmh1YnNbJ05vdGlmaWNhdGlvbkh1YiddID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKCdOb3RpZmljYXRpb25IdWInKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydENvbm5lY3Rpb24odGhpcy5odWJzWydOb3RpZmljYXRpb25IdWInXSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlY29ubmVjdCh0aGlzLmh1YnNbJ05vdGlmaWNhdGlvbkh1YiddKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmh1YnNTZXR0aW5nICYmIHRoaXMuaHVic1NldHRpbmcuZW5hYmxlUHVibGljSHViKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaHVic1snUHVibGljSHViJ10gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oJ1B1YmxpY0h1YicpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0Q29ubmVjdGlvbih0aGlzLmh1YnNbJ1B1YmxpY0h1YiddKTtcclxuICAgICAgICAgICAgdGhpcy5hdXRvUmVjb25uZWN0KHRoaXMuaHVic1snUHVibGljSHViJ10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgd2hpbGUgKHRoaXMuZGVsYXlTdGFydGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsYXlTdGFydGVycy5wb3AoKSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWQgPSB0cnVlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzdGFydCh0b3BpYzogc3RyaW5nLCB2aWV3Q29kZTogc3RyaW5nLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmICghdG9waWMpIHtcclxuICAgICAgICAgICAgdG9waWMgPSAnQ29tbW9uSHViJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0h1YkVuYWJsZWQodG9waWMpKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGF5U3RhcnRlcnMucHVzaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmliZVZpZXdDb2RlKHRoaXMuaHVic1t0b3BpY10sIHZpZXdDb2RlLCBjYWxsYmFjayk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVWaWV3Q29kZSh0aGlzLmh1YnNbdG9waWNdLCB2aWV3Q29kZSwgY2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpc0h1YkVuYWJsZWQodG9waWMpIHtcclxuICAgICAgICByZXR1cm4gKHRvcGljID09PSAnQ29tbW9uSHViJyAmJiB0aGlzLmh1YnNTZXR0aW5nICYmIHRoaXMuaHVic1NldHRpbmcuZW5hYmxlQ29tbW9uSHViKVxyXG4gICAgICAgICAgICB8fCAodG9waWMgPT09ICdDb25zaXN0ZW5jeUh1YicgJiYgdGhpcy5odWJzU2V0dGluZyAmJiB0aGlzLmh1YnNTZXR0aW5nLmVuYWJsZUNvbnNpc3RlbmN5SHViKVxyXG4gICAgICAgICAgICB8fCAodG9waWMgPT09ICdOb3RpZmljYXRpb25IdWInICYmIHRoaXMuaHVic1NldHRpbmcgJiYgdGhpcy5odWJzU2V0dGluZy5lbmFibGVOb3RpZmljYXRpb25IdWIpXHJcbiAgICAgICAgICAgIHx8ICh0b3BpYyA9PT0gJ1B1YmxpY0h1YicpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzdG9wKCkge1xyXG4gICAgICAgIHRoaXMuX2h1YkNvbm5lY3Rpb24uc3RvcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZVZpZXdDb2RlKGh1YkNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24sIHZpZXdDb2RlOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy52aWV3Q29kZVN1YnMpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29kZVN1YnMgPSBbeyB2aWV3Q29kZSwgY2FsbGJhY2sgfV07XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlKGh1YkNvbm5lY3Rpb24sIHZpZXdDb2RlLCBjYWxsYmFjayk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy52aWV3Q29kZVN1YnMuZmluZEluZGV4KHggPT4geC52aWV3Q29kZSA9PT0gdmlld0NvZGUpID09PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdDb2RlU3Vicy5wdXNoKHsgdmlld0NvZGUsIGNhbGxiYWNrIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZShodWJDb25uZWN0aW9uLCB2aWV3Q29kZSwgY2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1blN1YnNjcmliZVZpZXdDb2RlKHRvcGljOiBzdHJpbmcsIHZpZXdDb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXRvcGljKSB7XHJcbiAgICAgICAgICAgIHRvcGljID0gJ0NvbW1vbkh1Yic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGh1YkNvbm5lY3Rpb24gPSB0aGlzLmh1YnNbdG9waWNdO1xyXG4gICAgICAgIGlmICh0aGlzLnZpZXdDb2RlU3Vicykge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdDb2RlU3VicyA9IHRoaXMudmlld0NvZGVTdWJzLmZpbHRlcih4ID0+IHgudmlld0NvZGUgIT09IHZpZXdDb2RlKTtcclxuICAgICAgICAgICAgdGhpcy51blN1YnNjcmliZShodWJDb25uZWN0aW9uLCB2aWV3Q29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlQ29ubmVjdGlvbih0b3BpYzogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSB0aGlzLl9hdXRoZW5TZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBzaWduYWxSLkh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgICAgICAgLndpdGhVcmwoYCR7dGhpcy5fbW9kdWxlQ29uZmlnLmVudmlyb25tZW50LmFwaURvbWFpbi5ub3RpZmljYXRpb25FbmRwb2ludH0vJHt0b3BpY31gLFxyXG4gICAgICAgICAgICAgICAgeyBhY2Nlc3NUb2tlbkZhY3Rvcnk6ICgpID0+IGFjY2Vzc1Rva2VuIH0pXHJcbiAgICAgICAgICAgIC5idWlsZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXV0b1JlY29ubmVjdChodWJDb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XHJcbiAgICAgICAgaHViQ29ubmVjdGlvbi5vbmNsb3NlKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydENvbm5lY3Rpb24oaHViQ29ubmVjdGlvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB3YWl0ID0gbXMgPT4gbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIG1zKSk7XHJcblxyXG4gICAgcHJpdmF0ZSBzdGFydENvbm5lY3Rpb24oaHViQ29ubmVjdGlvbjogSHViQ29ubmVjdGlvbiwgcmV0cnlDb3VudCA9IDEpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBub3Qgc3VyZSBhYm91dCBpdCA6KSkpXHJcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3BuZXQvU2lnbmFsUi9pc3N1ZXMvMjM4OVxyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViU29ja2V0LCAnT1BFTicsIHsgdmFsdWU6IDEsIH0pO1xyXG5cclxuICAgICAgICAgICAgaHViQ29ubmVjdGlvblxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heFJldHJ5VGltZXMgLSByZXRyeUNvdW50ID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdChyZXRyeUNvdW50ICogcmV0cnlDb3VudCAqIDEwMDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbih0aGlzLnN0YXJ0Q29ubmVjdGlvbi5iaW5kKHRoaXMsIGh1YkNvbm5lY3Rpb24sICsrcmV0cnlDb3VudCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihyZXNvbHZlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3Vic2NyaWJlKGh1YkNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24sIHZpZXdDb2RlOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgaWYgKHZpZXdDb2RlICYmIGh1YkNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgaHViQ29ubmVjdGlvbi5pbnZva2UoJ0pvaW5Sb29tJywgdmlld0NvZGUpLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGVyci50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICAgIGh1YkNvbm5lY3Rpb24ub24odmlld0NvZGUsIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1blN1YnNjcmliZShodWJDb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uLCB2aWV3Q29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZpZXdDb2RlICYmIGh1YkNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgaHViQ29ubmVjdGlvbi5pbnZva2UoJ2xlYXZlUm9vbScsIHZpZXdDb2RlKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgICBodWJDb25uZWN0aW9uLm9mZih2aWV3Q29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3NpZ25hbHIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUtqRCxNQUFNLE9BQU8sY0FBYztJQWlCdkIsWUFDWSxvQkFBeUMsRUFDekMsY0FBNkI7UUFEN0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQWZ6QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1Ysa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQW1IWCxTQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQXZHckQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ3pFLENBQUM7SUFFSyxJQUFJOztZQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVB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QUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEYsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQjtJQUNMLENBQUM7Ozs7WUF2S0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFMUSxtQkFBbUI7WUFDbkIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvbiB9IGZyb20gJ0Bhc3BuZXQvc2lnbmFscic7XHJcbmltcG9ydCAqIGFzIHNpZ25hbFIgZnJvbSAnQGFzcG5ldC9zaWduYWxyJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9tb2R1bGUtY29uZmlnJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVuU2VydmljZSB9IGZyb20gJy4vYXV0aGVuLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWduYWxSU2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9tb2R1bGVDb25maWc6IE1vZHVsZUNvbmZpZztcclxuICAgIHByaXZhdGUgX2h1YkNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb247XHJcblxyXG4gICAgY29ubmVjdGlvbnMgPSBbXTtcclxuICAgIGh1YnMgPSB7fTtcclxuICAgIGRlbGF5U3RhcnRlcnMgPSBbXTtcclxuICAgIGNvbm5lY3RlZCA9IGZhbHNlO1xyXG5cclxuICAgIG1heFJldHJ5VGltZXMgPSAxMDtcclxuICAgIHZpZXdDb2RlU3Viczoge1xyXG4gICAgICAgIHZpZXdDb2RlOiBzdHJpbmcsXHJcbiAgICAgICAgY2FsbGJhY2s6IChkYXRhOiBhbnkpID0+IHZvaWRcclxuICAgIH1bXTtcclxuXHJcbiAgICBodWJzU2V0dGluZzogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfYXV0aGVuU2VydmljZTogQXV0aGVuU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5fbW9kdWxlQ29uZmlnID0gdGhpcy5fbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcclxuICAgICAgICB0aGlzLmh1YnNTZXR0aW5nID0gdGhpcy5fbW9kdWxlQ29uZmlnLmVudmlyb25tZW50LnNpZ25hbHJDb25maWcuaHVicztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmh1YnNTZXR0aW5nICYmIHRoaXMuaHVic1NldHRpbmcuZW5hYmxlQ29tbW9uSHViKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaHVic1snQ29tbW9uSHViJ10gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oJ0NvbW1vbkh1YicpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0Q29ubmVjdGlvbih0aGlzLmh1YnNbJ0NvbW1vbkh1YiddKTtcclxuICAgICAgICAgICAgdGhpcy5hdXRvUmVjb25uZWN0KHRoaXMuaHVic1snQ29tbW9uSHViJ10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaHVic1NldHRpbmcgJiYgdGhpcy5odWJzU2V0dGluZy5lbmFibGVDb25zaXN0ZW5jeUh1Yikge1xyXG4gICAgICAgICAgICB0aGlzLmh1YnNbJ0NvbnNpc3RlbmN5SHViJ10gPSB0aGlzLmNyZWF0ZUNvbm5lY3Rpb24oJ0NvbnNpc3RlbmN5SHViJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRDb25uZWN0aW9uKHRoaXMuaHVic1snQ29uc2lzdGVuY3lIdWInXSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlY29ubmVjdCh0aGlzLmh1YnNbJ0NvbnNpc3RlbmN5SHViJ10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaHVic1NldHRpbmcgJiYgdGhpcy5odWJzU2V0dGluZy5lbmFibGVOb3RpZmljYXRpb25IdWIpIHtcclxuICAgICAgICAgICAgdGhpcy5odWJzWydOb3RpZmljYXRpb25IdWInXSA9IHRoaXMuY3JlYXRlQ29ubmVjdGlvbignTm90aWZpY2F0aW9uSHViJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRDb25uZWN0aW9uKHRoaXMuaHVic1snTm90aWZpY2F0aW9uSHViJ10pO1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9SZWNvbm5lY3QodGhpcy5odWJzWydOb3RpZmljYXRpb25IdWInXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5odWJzU2V0dGluZyAmJiB0aGlzLmh1YnNTZXR0aW5nLmVuYWJsZVB1YmxpY0h1Yikge1xyXG4gICAgICAgICAgICB0aGlzLmh1YnNbJ1B1YmxpY0h1YiddID0gdGhpcy5jcmVhdGVDb25uZWN0aW9uKCdQdWJsaWNIdWInKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydENvbm5lY3Rpb24odGhpcy5odWJzWydQdWJsaWNIdWInXSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlY29ubmVjdCh0aGlzLmh1YnNbJ1B1YmxpY0h1YiddKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdoaWxlICh0aGlzLmRlbGF5U3RhcnRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGF5U3RhcnRlcnMucG9wKCkoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQodG9waWM6IHN0cmluZywgdmlld0NvZGU6IHN0cmluZywgY2FsbGJhY2s6IChkYXRhOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICBpZiAoIXRvcGljKSB7XHJcbiAgICAgICAgICAgIHRvcGljID0gJ0NvbW1vbkh1Yic7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNIdWJFbmFibGVkKHRvcGljKSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWxheVN0YXJ0ZXJzLnB1c2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVWaWV3Q29kZSh0aGlzLmh1YnNbdG9waWNdLCB2aWV3Q29kZSwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVmlld0NvZGUodGhpcy5odWJzW3RvcGljXSwgdmlld0NvZGUsIGNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNIdWJFbmFibGVkKHRvcGljKSB7XHJcbiAgICAgICAgcmV0dXJuICh0b3BpYyA9PT0gJ0NvbW1vbkh1YicgJiYgdGhpcy5odWJzU2V0dGluZyAmJiB0aGlzLmh1YnNTZXR0aW5nLmVuYWJsZUNvbW1vbkh1YilcclxuICAgICAgICAgICAgfHwgKHRvcGljID09PSAnQ29uc2lzdGVuY3lIdWInICYmIHRoaXMuaHVic1NldHRpbmcgJiYgdGhpcy5odWJzU2V0dGluZy5lbmFibGVDb25zaXN0ZW5jeUh1YilcclxuICAgICAgICAgICAgfHwgKHRvcGljID09PSAnTm90aWZpY2F0aW9uSHViJyAmJiB0aGlzLmh1YnNTZXR0aW5nICYmIHRoaXMuaHVic1NldHRpbmcuZW5hYmxlTm90aWZpY2F0aW9uSHViKVxyXG4gICAgICAgICAgICB8fCAodG9waWMgPT09ICdQdWJsaWNIdWInKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RvcCgpIHtcclxuICAgICAgICB0aGlzLl9odWJDb25uZWN0aW9uLnN0b3AoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdWJzY3JpYmVWaWV3Q29kZShodWJDb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uLCB2aWV3Q29kZTogc3RyaW5nLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMudmlld0NvZGVTdWJzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvZGVTdWJzID0gW3sgdmlld0NvZGUsIGNhbGxiYWNrIH1dO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZShodWJDb25uZWN0aW9uLCB2aWV3Q29kZSwgY2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudmlld0NvZGVTdWJzLmZpbmRJbmRleCh4ID0+IHgudmlld0NvZGUgPT09IHZpZXdDb2RlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29kZVN1YnMucHVzaCh7IHZpZXdDb2RlLCBjYWxsYmFjayB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmUoaHViQ29ubmVjdGlvbiwgdmlld0NvZGUsIGNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW5TdWJzY3JpYmVWaWV3Q29kZSh0b3BpYzogc3RyaW5nLCB2aWV3Q29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF0b3BpYykge1xyXG4gICAgICAgICAgICB0b3BpYyA9ICdDb21tb25IdWInO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBodWJDb25uZWN0aW9uID0gdGhpcy5odWJzW3RvcGljXTtcclxuICAgICAgICBpZiAodGhpcy52aWV3Q29kZVN1YnMpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29kZVN1YnMgPSB0aGlzLnZpZXdDb2RlU3Vicy5maWx0ZXIoeCA9PiB4LnZpZXdDb2RlICE9PSB2aWV3Q29kZSk7XHJcbiAgICAgICAgICAgIHRoaXMudW5TdWJzY3JpYmUoaHViQ29ubmVjdGlvbiwgdmlld0NvZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUNvbm5lY3Rpb24odG9waWM6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5fYXV0aGVuU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpO1xyXG4gICAgICAgIHJldHVybiBuZXcgc2lnbmFsUi5IdWJDb25uZWN0aW9uQnVpbGRlcigpXHJcbiAgICAgICAgICAgIC53aXRoVXJsKGAke3RoaXMuX21vZHVsZUNvbmZpZy5lbnZpcm9ubWVudC5hcGlEb21haW4ubm90aWZpY2F0aW9uRW5kcG9pbnR9LyR7dG9waWN9YCxcclxuICAgICAgICAgICAgICAgIHsgYWNjZXNzVG9rZW5GYWN0b3J5OiAoKSA9PiBhY2Nlc3NUb2tlbiB9KVxyXG4gICAgICAgICAgICAuYnVpbGQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGF1dG9SZWNvbm5lY3QoaHViQ29ubmVjdGlvbjogSHViQ29ubmVjdGlvbikge1xyXG4gICAgICAgIGh1YkNvbm5lY3Rpb24ub25jbG9zZShhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRDb25uZWN0aW9uKGh1YkNvbm5lY3Rpb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgd2FpdCA9IG1zID0+IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCBtcykpO1xyXG5cclxuICAgIHByaXZhdGUgc3RhcnRDb25uZWN0aW9uKGh1YkNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24sIHJldHJ5Q291bnQgPSAxKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gbm90IHN1cmUgYWJvdXQgaXQgOikpKVxyXG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXNwbmV0L1NpZ25hbFIvaXNzdWVzLzIzODlcclxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlNvY2tldCwgJ09QRU4nLCB7IHZhbHVlOiAxLCB9KTtcclxuXHJcbiAgICAgICAgICAgIGh1YkNvbm5lY3Rpb25cclxuICAgICAgICAgICAgICAgIC5zdGFydCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXhSZXRyeVRpbWVzIC0gcmV0cnlDb3VudCA+IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndhaXQocmV0cnlDb3VudCAqIHJldHJ5Q291bnQgKiAxMDAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4odGhpcy5zdGFydENvbm5lY3Rpb24uYmluZCh0aGlzLCBodWJDb25uZWN0aW9uLCArK3JldHJ5Q291bnQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN1YnNjcmliZShodWJDb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uLCB2aWV3Q29kZTogc3RyaW5nLCBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmICh2aWV3Q29kZSAmJiBodWJDb25uZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGh1YkNvbm5lY3Rpb24uaW52b2tlKCdKb2luUm9vbScsIHZpZXdDb2RlKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgICBodWJDb25uZWN0aW9uLm9uKHZpZXdDb2RlLCAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdW5TdWJzY3JpYmUoaHViQ29ubmVjdGlvbjogSHViQ29ubmVjdGlvbiwgdmlld0NvZGU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2aWV3Q29kZSAmJiBodWJDb25uZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGh1YkNvbm5lY3Rpb24uaW52b2tlKCdsZWF2ZVJvb20nLCB2aWV3Q29kZSkuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyLnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgICAgaHViQ29ubmVjdGlvbi5vZmYodmlld0NvZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -61,7 +61,7 @@ import _ from 'underscore';
61
61
  import { OAuthService, OAuthModule } from 'angular-oauth2-oidc';
62
62
  import { MessageService, ConfirmationService, PrimeNGConfig } from 'tn-custom-primeng/api';
63
63
  import { HttpClient, HttpHeaders, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
64
- import signalR_ from '@aspnet/signalr';
64
+ import { HubConnectionBuilder } from '@aspnet/signalr';
65
65
  import FileSaver from 'file-saver';
66
66
  import printJS_ from 'print-js';
67
67
  import * as JWT_ from 'jwt-decode';
@@ -3913,7 +3913,6 @@ const DataSourceWorkflowCoreStatus = [
3913
3913
  class MasterDataItem {
3914
3914
  }
3915
3915
 
3916
- const signalR = signalR_;
3917
3916
  class SignalRService {
3918
3917
  constructor(_moduleConfigService, _authenService) {
3919
3918
  this._moduleConfigService = _moduleConfigService;
@@ -4001,7 +4000,7 @@ class SignalRService {
4001
4000
  }
4002
4001
  createConnection(topic) {
4003
4002
  const accessToken = this._authenService.getAccessToken();
4004
- return new signalR.HubConnectionBuilder()
4003
+ return new HubConnectionBuilder()
4005
4004
  .withUrl(`${this._moduleConfig.environment.apiDomain.notificationEndpoint}/${topic}`, { accessTokenFactory: () => accessToken })
4006
4005
  .build();
4007
4006
  }
@@ -26073,8 +26072,9 @@ class DropdownComponent extends ComponentBase {
26073
26072
  if (!this.control.isServerLoad) {
26074
26073
  return;
26075
26074
  }
26075
+ console.log(`default Input ${evt}`);
26076
26076
  const defaultInput = this.multiSelect.filterInputChild.nativeElement;
26077
- console.log(defaultInput);
26077
+ console.log(`default Input ${defaultInput}`);
26078
26078
  this._insertTextboxAndFocus(defaultInput);
26079
26079
  this.onShowSmartEvent.emit(evt);
26080
26080
  }